Free cookie consent management tool by TermsFeed Policy Generator

source: branches/WebJobManager/HeuristicLab.Clients.Hive.WebJobManager/Scripts/Hubs/CalendarHubber.js @ 13754

Last change on this file since 13754 was 13754, checked in by jlodewyc, 8 years ago

#2582 User management done, start resource calendar

File size: 7.9 KB
Line 
1
2angular.module('wjm', ['ui.bootstrap', 'ui.calendar', 'angularTreeview']).
3
4           controller('resourceCtrl', function ($scope, uiCalendarConfig, $compile, $timeout) {
5               var vm = $scope;
6
7               var date = new Date();
8
9               var d = date.getDate();
10               var m = date.getMonth();
11               var y = date.getFullYear();
12               var hubber = $.connection.calendarHub;
13               vm.alertMessage = "No alerts";
14               vm.currentcal = [];
15               vm.selectedEventId = -1;
16
17               vm.init = function () {
18
19                   //  $.connection.hub.logging = true;
20
21
22                   var v = document.getElementById("userId").innerHTML;
23                   $.connection.hub.qs = { 'userid': v };
24                   $.connection.hub.start().done(function () {
25                       hubber.server.requestInfo();
26                   });
27                   hubber.client.processData = function (data) {
28                       vm.data = JSON.parse(data);
29                       $scope.buildTree();
30
31                       $scope.$apply();
32                   };
33                   hubber.client.processDowntime = function (id, down) {
34                       var json = JSON.parse(down);
35                       var downtype = ["Unavailable", "Shutdown command"];
36                       var arrdown = [];
37                       console.log(json);
38                       for (var i = 0; i < json.length; i++) {
39                           arrdown.push({
40                               id: json[i].Id,
41                               title: 'offline',
42                               start: json[i].StartDate,
43                               end: json[i].EndDate,
44                               allDay: json[i].AllDayEvent
45                           });
46                       }
47                       var dat = { 'id': id, 'down': [arrdown] };
48                       $scope.treeview.currentNode.calendar = dat;
49                       $scope.currentcal = $scope.treeview.currentNode.calendar;
50                       $scope.$apply();
51                   }
52
53                   $scope.$watch("treeview.currentNode", function (newValue, oldValue) {
54                       $scope.currentcal = [];
55                       $scope.selectedEventId = -1;
56                       if ($scope.treeview.currentNode != null) {
57                           if ($scope.treeview.currentNode.calendar.length === 0) {
58                               hubber.server.requestDownTime(vm.treeview.currentNode.Id);
59                           }
60                           else {
61                               $timeout(function () {
62                                   $scope.currentcal = $scope.treeview.currentNode.calendar;
63                                   $scope.$apply();
64                               }, 0);
65                               
66                           }
67                       }
68
69                   });
70               }
71               $scope.buildTree = function () {
72                   vm.tree = [];
73                   vm.temptree = [];
74                   vm.top = false;
75                   for (; vm.data.length > 0;) {
76
77                       if (vm.data[0].ParentResourceId == null) {
78                           var curr = $scope.seekChildren(vm.data.splice(0, 1)[0]);
79                           vm.tree.push(curr);
80                       }
81                       else {
82                           var curr = $scope.seekChildren(vm.data.splice(0, 1)[0]);
83                           vm.temptree.push(curr);
84                       }
85                   }
86               };
87
88               $scope.seekChildren = function (current) {
89                   current.calendar = [];
90                   current.children = [];
91                   current.collapsed = true;
92                   for (var t = 0; t < vm.temptree.length;) {
93                       if (current.Id == vm.temptree[t].ParentResourceId) {
94                           current.children.push(vm.temptree.splice(t, 1)[0]);
95                       }
96                       else {
97                           t++;
98                       }
99                   }
100                   var childc = current.children.length;//Remembers count of children received from temp tree;
101                   for (var t = 0; t < vm.data.length;) {
102                       if (current.Id == vm.data[t].ParentResourceId) {
103                           current.children.push(vm.data.splice(t, 1)[0]);
104                       }
105                       else {
106                           t++;
107                       }
108                   }
109                   for (var t = childc; t < current.children.length; t++) {
110                       current.children[t] = $scope.seekChildren(current.children[t]);
111                   }
112                   return current;
113               }
114
115               /* alert on eventClick */
116               $scope.alertOnEventClick = function (date, jsEvent, view) {
117                   vm.selectedEventId = date._id;
118               };
119               /* alert on Drop */
120               $scope.alertOnDrop = function (event, delta, revertFunc, jsEvent, ui, view) {
121                   vm.treeview.currentNode.calendar.down[0][event._id - 1].start = event.start;
122                   if (vm.treeview.currentNode.calendar.down[0][event._id - 1].end != null)
123                       vm.treeview.currentNode.calendar.down[0][event._id - 1].end = event.end;
124               };
125               /* alert on Resize */
126               $scope.alertOnResize = function (event, delta, revertFunc, jsEvent, ui, view) {
127                   vm.treeview.currentNode.calendar.down[0][event._id - 1].start = event.start;
128                   vm.treeview.currentNode.calendar.down[0][event._id - 1].end = event.end;
129               };
130
131               /* add custom event*/
132               $scope.addEvent = function () {
133                   
134               };
135               $scope.calendarClick = function(date, jsEvent, view) {
136                   console.log(date);
137                   vm.treeview.currentNode.calendar.down[0].push({
138                       id: '00000000-0000-0000-0000-000000000000',
139                       title: 'offline',
140                       start: date.toDate(),
141                       end: null,
142                       allDay: date._ambigTime,
143                       color: '#378006',
144                       _id: (vm.treeview.currentNode.calendar.down[0].length +1)
145                   });
146                   
147
148               }
149               /* remove event */
150               $scope.remove = function (index) {
151                   $scope.events.splice(index, 1);
152               };
153               /* Render Tooltip */
154               $scope.eventRender = function (event, element, view) {
155                   element.attr({
156                       'tooltip': event.title,
157                       'tooltip-append-to-body': true
158                   });
159                   //$compile(element)($scope);
160               };
161               /* config object */
162               $scope.uiConfig = {
163                   calendar: {
164                       height: 600,
165                       editable: true,
166                       defaultView:'agendaWeek',
167                       header: {
168                           left: 'title',
169                           center: '',
170                           right: 'today prev,next'
171                       },
172                       timezone: 'UTC',
173                       timeFormat: 'HH:mm',
174                       eventClick: $scope.alertOnEventClick,
175                       eventDrop: $scope.alertOnDrop,
176                       eventResize: $scope.alertOnResize,
177                       eventRender: $scope.eventRender,
178                       dayClick: $scope.calendarClick
179
180               
181                   }
182               };
183
184           });
185
186
Note: See TracBrowser for help on using the repository browser.