Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/21/16 16:48:34 (9 years ago)
Author:
jlodewyc
Message:

#2582 Resource calendar and client group creation, control implemented

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/WebJobManager/HeuristicLab.Clients.Hive.WebJobManager/wwwroot/js/hubs/calendarhubber.js

    r13775 r13782  
    1515               vm.currentcal = [];
    1616               vm.selectedEventId = -1;
    17 
     17               vm.groups = [];
     18               vm.clients = [];
    1819               vm.init = function () {
    1920
     
    3334                   };
    3435                   hubber.client.savingCurrentDone = function () {
     36                       vm.calendarSaver = false;
    3537                       $scope.clearCurrentCalendar();
    3638                       $scope.$apply();
    3739                   };
    3840                   hubber.client.savingAllDone = function () {
     41                       vm.calendarSaver = false;
    3942                       clearAllCalendarsFunc();
    4043                       $scope.$apply();
    4144                   };
     45                   hubber.client.processDispose = function (disp) {
     46                       vm.treeview.currentNode.IsDisposable = disp;
     47                       $scope.calendarDispose = false;
     48                       $scope.$apply();
     49                   }
    4250                   hubber.client.processDowntime = function (id, down) {
    4351                       var json = JSON.parse(down);
     
    8391                       $(".selected.ng-binding").addClass('loaded');
    8492                       $scope.selectedEventId = -1;
    85                        if ($scope.treeview.currentNode != null) {
     93                       if ($scope.treeview.currentNode != null && $scope.treeview.currentNode.Id != undefined) {
    8694                           if ($scope.treeview.currentNode.calendar.length === 0) {
    8795                               hubber.server.requestDownTime(vm.treeview.currentNode.Id);
     
    98106
    99107                   });
     108               }
     109               $scope.clearTreeSelect = function () {
     110                   if (vm.treeview.currentNode != undefined) {
     111                       vm.treeview.currentNode.selected = undefined;
     112                       vm.treeview.currentNode = undefined;
     113                       vm.selectedEventId = -1;
     114                   }
    100115               }
    101116               $scope.buildTree = function () {
     
    103118                   vm.temptree = [];
    104119                   vm.top = false;
     120                   var ungrouped = {
     121                       children: [],
     122                       Name: 'Ungrouped'
     123                   }
    105124                   for (; vm.data.length > 0;) {
    106125
    107                        if (vm.data[0].ParentResourceId == null) {
     126                       if (vm.data[0].ParentResourceId == null && vm.data[0].IsDisposable !== undefined) {
    108127                           var curr = $scope.seekChildren(vm.data.splice(0, 1)[0]);
     128                           vm.clients.push(curr);
     129                           ungrouped.children.push(curr);
     130                       }
     131                       else if (vm.data[0].ParentResourceId == null) {
     132                           var curr = $scope.seekChildren(vm.data.splice(0, 1)[0]);
     133                           vm.groups.push(curr);
    109134                           vm.tree.push(curr);
    110135                       }
    111136                       else {
    112137                           var curr = $scope.seekChildren(vm.data.splice(0, 1)[0]);
     138                           if (curr.IsDisposable !== undefined)
     139                               vm.clients.push(curr);
     140                           else
     141                               vm.groups.push(curr);
    113142                           vm.temptree.push(curr);
    114143                       }
    115144                   }
     145                   vm.tree.push(ungrouped);
    116146
    117147               };
     
    134164                   for (var t = 0; t < vm.data.length;) {
    135165                       if (current.Id == vm.data[t].ParentResourceId) {
     166                           if (vm.data[t].IsDisposable !== undefined)
     167                               vm.clients.push(vm.data[t]);
     168                           else
     169                               vm.groups.push(vm.data[t]);
    136170                           current.children.push(vm.data.splice(t, 1)[0]);
    137171                       }
     
    145179                   return current;
    146180               }
     181
     182               $scope.toggleDisposable = function () {
     183                   $scope.calendarDispose = true;
     184                   hubber.server.toggleDisposable(vm.treeview.currentNode.Id);
     185               }
     186
    147187               function collectInfoToSave(node, refresh, last) {
    148188                   var arr = node.calendar.down[0];
     
    164204                               "" + Date.parse(arr[i].rec.end),
    165205                               arr[i].rec.days.join(",")
    166                                
     206
    167207
    168208                           ]);
     
    181221                               "" + Date.parse(arr[i].rec.end),
    182222                               arr[i].rec.days.join(",")
    183                                
     223
    184224                           ]);
    185225                       }
     
    189229               }
    190230               $scope.saveCurrentCalendar = function () {
     231                   vm.calendarSaver = true;
    191232                   collectInfoToSave(vm.treeview.currentNode, true, false);
    192233                   //true for refresh, false for showing it's only one calendar saved.
    193234               }
    194235               $scope.saveAllCalendars = function () {
     236
    195237                   $scope.allSave = [];
    196238                   for (var i = 0; i < $scope.tree.length; i++)
     
    205247                       plain: true
    206248                   }).then(function (success) {
     249                       vm.calendarSaver = true;
    207250                       for (var i = 0; i < $scope.allSave.length; i++) {
    208251                           if (i >= $scope.allSave.length - 1)
     
    255298                   $scope.currentcal = [];
    256299                   for (var i = 0; i < $scope.tree.length; i++)
    257                        removeCalendarsRecurse($scope.tree[i]);
     300                       clearCalendarsRecurse($scope.tree[i]);
    258301                   hubber.server.requestDownTime(vm.treeview.currentNode.Id);
    259302                   $(".selected.ng-binding").addClass('loaded');
    260303               }
    261                function removeCalendarsRecurse(node) {
     304               function clearCalendarsRecurse(node) {
    262305
    263306                   node.calendar = [];
     
    265308                   node.changes = false;
    266309                   for (var i = 0; i < node.children.length; i++) {
    267                        removeCalendarsRecurse(node.children[i]);
    268                    }
    269                }
    270 
     310                       clearCalendarsRecurse(node.children[i]);
     311                   }
     312               }
     313               $scope.deleteAllEvents = function () {
     314                   vm.calendarDeleter = true;
     315                   vm.selectedEventId = -1;
     316                   var node = vm.treeview.currentNode.calendar.down[0];
     317                   for (var i = 0; i < node.length;) {
     318                       if (node[i].id != '00000000-0000-0000-0000-000000000000')
     319                           vm.treeview.currentNode.todelete.push(node[i].id);
     320                       $scope.setChanged(vm.selectedEventId);
     321                       node.splice(i, 1);
     322                   }
     323                   vm.calendarDeleter = false;
     324                   ngDialog.open({
     325                       template:
     326                        '<p>All events have been deleted. Save the changes to confirm deletion, clearing will restore all the events from the server</p>',
     327                       plain: true
     328                   });
     329               }
    271330               $scope.deleteAllPreviousEvents = function () {
     331                   vm.calendarDeleter = true;
    272332                   vm.selectedEventId = -1;
    273333                   var node = vm.treeview.currentNode.calendar.down[0];
     
    282342                           i++;
    283343                   }
     344                   vm.calendarDeleter = false;
    284345                   ngDialog.open({
    285346                       template:
     
    329390                   vm.selectedEventId = vm.treeview.currentNode.calendar.down[0].length - 1;
    330391                   vm.setChanged(vm.selectedEventId);
    331                    //  $("#resourcecalendar").fullCalendar('refetchEvents');
     392                   $scope.currentcal = [];
     393                   $scope.currentcal = vm.treeview.currentNode.calendar;
     394
    332395
    333396               }
     
    342405               $scope.eventClick = function (date, jsEvent, view) {
    343406                   vm.selectedEventId = checkId(date._id);
     407               };
     408               $scope.eventClickBtn = function (id) {
     409                   vm.selectedEventId = checkId(id);
     410                   vm.goToDate();
    344411               };
    345412               /* alert on Drop */
     
    381448
    382449               };
     450               $scope.removeList = function (id) {
     451                   var index = checkId(id);
     452                   vm.selectedEventId = -1;
     453                   vm.setChanged(vm.selectedEventId);
     454                   if (vm.treeview.currentNode.calendar.down[0][index].id != "00000000-0000-0000-0000-000000000000") {
     455                       vm.treeview.currentNode.todelete.push(vm.treeview.currentNode.calendar.down[0][index].id);
     456                   }
     457                   vm.treeview.currentNode.calendar.down[0].splice(index, 1);
     458
     459
     460               };
    383461
    384462               $scope.checkDateStartEnd = function () {
    385463                   if ($scope.currentcal.down[0][vm.selectedEventId].rec.start > $scope.currentcal.down[0][vm.selectedEventId].rec.end ||
    386464                       $scope.currentcal.down[0][vm.selectedEventId].rec.end === undefined) {
    387                        
     465
    388466                       $scope.currentcal.down[0][vm.selectedEventId].rec.end = new Date($scope.currentcal.down[0][vm.selectedEventId].rec.start);
    389                        
     467
    390468                   }
    391469                   if ($scope.currentcal.down[0][vm.selectedEventId].rec.start < Date.now())
    392470                       $scope.currentcal.down[0][vm.selectedEventId].rec.start = new Date();
    393                   }
     471               }
    394472               //pushes all changes to other recurs
    395473               $scope.pushRecurChanges = function (recid) {
     
    415493                               }
    416494                               else {
    417                                    
     495
    418496                                   arr[i].start.setHours(ob.start.getHours(), ob.start.getMinutes());
    419497                                   arr[i].end.setHours(ob.end.getHours(), ob.end.getMinutes());
     
    439517                                   loop2:
    440518                                       for (var i = 0; i < arr.length; i++) {
    441                                            
     519
    442520                                           if (arr[i].rec.recid === recid) {
    443                                                var dend = (d+1000 * 3600 * 24);
     521                                               var dend = (d + 1000 * 3600 * 24);
    444522                                               if (arr[i].start.getTime() >= d &&
    445523                                                   arr[i].end.getTime() <= dend) {
     
    449527                                           }
    450528                                       }
    451  
     529
    452530                                   var ts = new Date(d);
    453531                                   ts.setHours(new Date(ob.start).getHours(), new Date(ob.start).getMinutes());
     
    465543
    466544                               }
    467                                
     545
    468546                               d += (1000 * 3600 * 24);// 1 day
    469                              
     547
    470548                           }
    471549                   });
     
    491569               }
    492570
     571               $scope.goToDate = function () {
     572                   $("#resourcecalendar").fullCalendar('gotoDate', vm.currentcal.down[0][vm.selectedEventId].start);
     573               }
    493574               /* Render Tooltip */
    494575               $scope.eventRender = function (event, element, view) {
     
    508589                       header: {
    509590                           left: 'title',
    510                            center: '',
     591                           center: 'agendaWeek, agendaDay',
    511592                           right: 'today prev,next'
    512593                       },
     
    520601
    521602
    522                    }
    523                };
    524 
    525 
    526 
     603
     604                   }
     605               };
     606
     607
     608
     609           }).filter('disp', function () {
     610               return function (input) {
     611                   return input ? 'Disposable' : 'Not disposable';
     612               }
     613           }).directive('animateOnChange', function ($timeout) {
     614               return function (scope, element, attr) {
     615                   scope.$watch(attr.animateOnChange, function (nv, ov) {
     616
     617                       if (nv != ov) {
     618                           if (scope.currentcal.down[0][scope.selectedEventId].title === "Unavailable") {
     619                               element.addClass('changed');
     620                               $timeout(function () {
     621                                   element.removeClass('changed');
     622                               }, 250); // Could be enhanced to take duration as a parameter
     623                           }
     624                           else {
     625                               element.addClass('changedshut');
     626                               $timeout(function () {
     627                                   element.removeClass('changedshut');
     628                               }, 250); // Could be enhanced to take duration as a parameter
     629                           }
     630                       }
     631                   });
     632               };
    527633           });
    528634
Note: See TracChangeset for help on using the changeset viewer.