var DemoApp = angular.module('DemoApp', ['dx']);
var BASE_PATH = "https://js.devexpress.com/Demos/NetCore/";
DemoApp.controller('DemoController', function DemoController($scope) {
var store1 = createStore(),
store2 = createStore();
$scope.scheduler1Options = createOptions(store1);
$scope.scheduler2Options = createOptions(store2);
var connection = new signalR.HubConnectionBuilder()
.withUrl(BASE_PATH + "schedulerSignalRHub", {
skipNegotiation: true,
transport: signalR.HttpTransportType.WebSockets
})
.configureLogging(signalR.LogLevel.Information)
.build();
connection.start()
.then(function () {
connection.on("update", function (key, data) {
store1.push([{ type: "update", key: key, data: data }]);
store2.push([{ type: "update", key: key, data: data }]);
});
connection.on("insert", function (data) {
store1.push([{ type: "insert", data: data }]);
store2.push([{ type: "insert", data: data }]);
});
connection.on("remove", function (key) {
store1.push([{ type: "remove", key: key }]);
store2.push([{ type: "remove", key: key }]);
});
});
});
var createStore = function() {
var url = BASE_PATH + "api/SchedulerSignalR";
return DevExpress.data.AspNet.createStore({
key: "AppointmentId",
loadUrl: url,
insertUrl: url,
updateUrl: url,
deleteUrl: url,
onBeforeSend: function(method, ajaxOptions) {
ajaxOptions.xhrFields = { withCredentials: true };
}
})
};
var createOptions = function(store) {
return {
dataSource: store,
remoteFiltering: true,
views: ["day", "workWeek"],
currentView: "day",
currentDate: new Date(2017, 4, 23),
startDayHour: 9,
endDayHour: 19,
height: 600,
textExpr: "Text",
descriptionExpr: "Description",
startDateExpr: "StartDate",
endDateExpr: "EndDate",
allDayExpr: "AllDay"
};
};
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>DevExtreme Demo</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>window.jQuery || document.write(decodeURIComponent('%3Cscript src="js/jquery.min.js"%3E%3C/script%3E'))</script>
<link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/19.2.4/css/dx.common.css" />
<link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/19.2.4/css/dx.light.css" />
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.16/angular.min.js"></script>
<script>window.angular || document.write(decodeURIComponent('%3Cscript src="js/angular.min.js"%3E%3C\/script%3E'))</script>
<script src="https://cdn3.devexpress.com/jslib/19.2.4/js/dx.all.js"></script>
<script src="https://unpkg.com/devextreme-aspnet-data@2.5.1/js/dx.aspnet.data.js"></script>
<script src="js/signalr/signalr-client.js"></script>
<script src="js/signalr/signalr-session-id.js"></script>
<script src="index.js"></script>
<link rel="stylesheet" type="text/css" href="styles.css" />
</head>
<body class="dx-viewport">
<div class="demo-container" ng-app="DemoApp" ng-controller="DemoController">
<div class="schedulers">
<div class="column-1">
<div dx-scheduler="scheduler1Options" id="scheduler1"></div>
</div>
<div class="column-2">
<div dx-scheduler="scheduler2Options" id="scheduler2"></div>
</div>
</div>
</div>
</body>
</html>
.schedulers {
display: flex;
}
.column-1 {
padding-right: 5px;
}
.column-2 {
padding-left: 5px;
}
.dx-scheduler-small .dx-scheduler-view-switcher.dx-tabs {
display: table;
}