Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/19/16 17:11:50 (9 years ago)
Author:
jlodewyc
Message:

#2582 Event recurring finished (small bugs)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/WebJobManager/HeuristicLab.Clients.Hive.WebJobManager/Scripts/Hubs/CalendarHubber.js

    r13768 r13775  
    1111               var y = date.getFullYear();
    1212               var hubber = $.connection.calendarHub;
     13
    1314               vm.alertMessage = "No alerts";
    1415               vm.currentcal = [];
     
    4344                       var arrdown = [];
    4445                       var str = "";
    45                        var col = "";
    4646                       for (var i = 0; i < json.length; i++) {
    4747                           if (json[i].DowntimeType === 0) {
     
    6060                               allDay: json[i].AllDayEvent,
    6161                               color: col,
     62                               rec: {
     63                                   recurrence: json[i].Recurring,
     64                                   recid: json[i].RecurringId,
     65                                   days: [false, false, false, false, false, false, false],
     66                                   start: new Date(json[i].StartDate),
     67                                   end: new Date(json[i].EndDate)
     68
     69                               },
    6270                               changed: false
    6371                           });
     
    6775
    6876                       $scope.currentcal = $scope.treeview.currentNode.calendar;
     77                       $("#resourcecalendar").fullCalendar('refresh');
    6978                       $scope.$apply();
    7079                   }
     
    145154                           var t = arr[i].allDay.toString();
    146155                           toadd.push([
    147                                arr[i].title,
    148                                "" + Date.parse(arr[i].start),
    149                                "" + Date.parse(arr[i].end),
    150                                t,
    151                                node.Id
     156                               arr[i].title,//status
     157                               "" + Date.parse(arr[i].start),//start
     158                               "" + Date.parse(arr[i].end),//end
     159                               t,// allday
     160                               node.Id, //resource id
     161                               arr[i].rec.recurrence.toString(),//true on recur
     162                               arr[i].rec.recid,//recur id
     163                               "" + Date.parse(arr[i].rec.start),
     164                               "" + Date.parse(arr[i].rec.end),
     165                               arr[i].rec.days.join(",")
     166                               
     167
    152168                           ]);
    153169                       }
     
    155171                           var t = arr[i].allDay.toString();
    156172                           toupd.push([
    157                                arr[i].id,
    158                                arr[i].title,
    159                                "" + Date.parse(arr[i].start),
    160                                "" + Date.parse(arr[i].end),
    161                                t
     173                               arr[i].id,//id to update
     174                               arr[i].title,//status
     175                               "" + Date.parse(arr[i].start),//start
     176                               "" + Date.parse(arr[i].end),//end
     177                               t,//allday
     178                               arr[i].rec.recurrence.toString(),//true on recur
     179                               arr[i].rec.recid,//recur id
     180                               "" + Date.parse(arr[i].rec.start),
     181                               "" + Date.parse(arr[i].rec.end),
     182                               arr[i].rec.days.join(",")
     183                               
    162184                           ]);
    163185                       }
    164186                   }
    165                    vm.sendtoserv = [toadd, toupd, todel];
     187                   vm.sendtoserv = [todel, toadd, toupd];
    166188                   hubber.server.saveCalendar(node.Id, todel, toadd, toupd, refresh, last);
    167189               }
     
    190212                       }
    191213                   });
    192                    
    193                    
     214
     215
    194216               }
    195217               function createSaveRequests(node) {
     
    201223               }
    202224               $scope.clearCurrentCalendar = function () {
    203                    
     225
    204226                   $scope.selectedEventId = -1;
    205227                   $scope.treeview.currentNode.calendar = null;
     
    253275                       if (node[i].end < Date.now()) {
    254276                           if (node[i].id != '00000000-0000-0000-0000-000000000000')
    255                             vm.treeview.currentNode.todelete.push(node[i].id);
    256                            $scope.setChanged();
     277                               vm.treeview.currentNode.todelete.push(node[i].id);
     278                           $scope.setChanged(vm.selectedEventId);
    257279                           node.splice(i, 1);
    258280                       }
     
    268290
    269291
    270                $scope.setChanged = function () {
    271                    if (vm.selectedEventId != -1) {
    272                        if (vm.treeview.currentNode.calendar.down[0][vm.selectedEventId].title === "Unavailable")
    273                            vm.treeview.currentNode.calendar.down[0][vm.selectedEventId].color = '#0099cc';
     292               $scope.setChanged = function (id) {
     293                   if (id != -1) {
     294                       if (vm.treeview.currentNode.calendar.down[0][id].title === "Unavailable")
     295                           vm.treeview.currentNode.calendar.down[0][id].color = '#0099cc';
    274296                       else
    275                            vm.treeview.currentNode.calendar.down[0][vm.selectedEventId].color = '#ff5500';
    276 
    277                        vm.treeview.currentNode.calendar.down[0][vm.selectedEventId].changed = true;
     297                           vm.treeview.currentNode.calendar.down[0][id].color = '#ff5500';
     298
     299                       vm.treeview.currentNode.calendar.down[0][id].changed = true;
    278300                   }
    279301                   vm.treeview.currentNode.changes = true;
     
    289311                   var end = new Date(dat);
    290312                   end.setHours(dat.getHours() + 2);
    291                    console.log(end);
    292313                   vm.treeview.currentNode.calendar.down[0].push({
    293314                       id: '00000000-0000-0000-0000-000000000000',
     
    296317                       end: end,
    297318                       allDay: date._ambigTime,
     319                       rec: {
     320                           recurrence: false,
     321                           recid: '0',
     322                           days: [false, false, false, false, false, false, false],
     323                           start: dat,
     324                           end: end
     325
     326                       },
    298327                       _id: (newid)
    299328                   });
    300329                   vm.selectedEventId = vm.treeview.currentNode.calendar.down[0].length - 1;
    301                    vm.setChanged();
     330                   vm.setChanged(vm.selectedEventId);
    302331                   //  $("#resourcecalendar").fullCalendar('refetchEvents');
    303332
     
    317346               $scope.dragandDrop = function (event, delta, revertFunc, jsEvent, ui, view) {
    318347                   vm.selectedEventId = checkId(event._id);
    319                    vm.setChanged();
     348                   vm.setChanged(vm.selectedEventId);
    320349                   if (event.end == null) {
    321350                       event.end = moment(event.start).add(2, 'hours');
     
    336365               $scope.resizeEvent = function (event, delta, revertFunc, jsEvent, ui, view) {
    337366                   vm.selectedEventId = checkId(event._id);
    338                    vm.setChanged();
     367                   vm.setChanged(vm.selectedEventId);
    339368                   vm.treeview.currentNode.calendar.down[0][vm.selectedEventId].start = new Date(event.start);
    340369                   vm.treeview.currentNode.calendar.down[0][vm.selectedEventId].end = new Date(event.end);
     
    344373               $scope.remove = function (index) {
    345374                   vm.selectedEventId = -1;
    346                    vm.setChanged();
     375                   vm.setChanged(vm.selectedEventId);
    347376                   if (vm.treeview.currentNode.calendar.down[0][index].id != "00000000-0000-0000-0000-000000000000") {
    348377                       vm.treeview.currentNode.todelete.push(vm.treeview.currentNode.calendar.down[0][index].id);
     
    352381
    353382               };
     383
     384               $scope.checkDateStartEnd = function () {
     385                   if ($scope.currentcal.down[0][vm.selectedEventId].rec.start > $scope.currentcal.down[0][vm.selectedEventId].rec.end ||
     386                       $scope.currentcal.down[0][vm.selectedEventId].rec.end === undefined) {
     387                       
     388                       $scope.currentcal.down[0][vm.selectedEventId].rec.end = new Date($scope.currentcal.down[0][vm.selectedEventId].rec.start);
     389                       
     390                   }
     391                   if ($scope.currentcal.down[0][vm.selectedEventId].rec.start < Date.now())
     392                       $scope.currentcal.down[0][vm.selectedEventId].rec.start = new Date();
     393                  }
     394               //pushes all changes to other recurs
     395               $scope.pushRecurChanges = function (recid) {
     396                   ngDialog.openConfirm({
     397                       template:
     398                        '<p>This will change all existing recurrences and create new recurrences where needed. Are you sure?</p>' +
     399                        '<div>' +
     400                          '<button type="button" class="btn btn-default" ng-click="closeThisDialog(0)">No </button> ' +
     401                          '<button type="button" class="btn btn-primary" ng-click="confirm(1)">Yes' +
     402                        '</button></div>',
     403                       plain: true
     404                   }).then(function (success) {
     405                       var arr = vm.treeview.currentNode.calendar.down[0];
     406                       var ob = $.extend(true, {}, arr[vm.selectedEventId]);
     407                       for (var i = 0; i < arr.length;) {
     408                           if (arr[i].rec.recid === recid) {
     409                               if (new Date(arr[i].start) < new Date(ob.rec.start) ||
     410                                        new Date(arr[i].end) > new Date(ob.rec.end) ||
     411                                        !ob.rec.days[new Date(arr[i].start).getDay()]) {
     412                                   vm.remove(i);
     413                                   vm.selectedEventId = -1;
     414
     415                               }
     416                               else {
     417                                   
     418                                   arr[i].start.setHours(ob.start.getHours(), ob.start.getMinutes());
     419                                   arr[i].end.setHours(ob.end.getHours(), ob.end.getMinutes());
     420                                   arr[i].title = ob.title;
     421                                   arr[i].rec = ob.rec;
     422                                   arr[i].allDay = ob.allDay;
     423                                   vm.setChanged(i);
     424                                   i++;
     425                               }
     426                           }
     427                           else
     428                               i++;
     429                       }
     430                       var start = new Date(ob.rec.start);
     431                       start.setHours(2, 0, 0, 0);
     432                       var end = new Date(ob.rec.end);
     433                       end = new Date(end.setHours(24, 0, 0, 0) + 1000 * 3600 * 2);
     434
     435                       loop1:
     436                           for (var d = (start.getTime()) ; d < (end.getTime()) ;) {
     437                               var tog = ob.rec.days[new Date(d).getDay()];
     438                               if (tog) {
     439                                   loop2:
     440                                       for (var i = 0; i < arr.length; i++) {
     441                                           
     442                                           if (arr[i].rec.recid === recid) {
     443                                               var dend = (d+1000 * 3600 * 24);
     444                                               if (arr[i].start.getTime() >= d &&
     445                                                   arr[i].end.getTime() <= dend) {
     446                                                   d += (1000 * 3600 * 24);
     447                                                   continue loop1;
     448                                               }
     449                                           }
     450                                       }
     451 
     452                                   var ts = new Date(d);
     453                                   ts.setHours(new Date(ob.start).getHours(), new Date(ob.start).getMinutes());
     454                                   var te = new Date(d);
     455                                   te.setHours(new Date(ob.end).getHours(), new Date(ob.end).getMinutes());
     456                                   arr.push({
     457                                       id: '00000000-0000-0000-0000-000000000000',
     458                                       title: ob.title,
     459                                       start: ts,
     460                                       end: te,
     461                                       allDay: ob.allDay,
     462                                       rec: ob.rec
     463                                   });
     464                                   vm.setChanged(arr.length - 1);
     465
     466                               }
     467                               
     468                               d += (1000 * 3600 * 24);// 1 day
     469                             
     470                           }
     471                   });
     472               }
     473               $scope.deleteAllRecurrences = function (recid) {
     474                   ngDialog.openConfirm({
     475                       template:
     476                        '<p>This will delete every found recurrence. Are you sure?</p>' +
     477                        '<div>' +
     478                          '<button type="button" class="btn btn-default" ng-click="closeThisDialog(0)">No </button> ' +
     479                          '<button type="button" class="btn btn-primary" ng-click="confirm(1)">Yes' +
     480                        '</button></div>',
     481                       plain: true
     482                   }).then(function (success) {
     483                       var arr = vm.treeview.currentNode.calendar.down[0];
     484                       for (var i = 0; i < arr.length;) {
     485                           if (arr[i].rec.recid === recid)
     486                               vm.remove(i);
     487                           else
     488                               i++;
     489                       }
     490                   });
     491               }
     492
    354493               /* Render Tooltip */
    355494               $scope.eventRender = function (event, element, view) {
     
    383522                   }
    384523               };
    385                $rootScope.$on('$locationChangeStart', function (event, newUrl, oldUrl) {
    386                    console.log($(".changed").length);
    387                    if ($(".changed").length != 0) {
    388                        ngDialog.openConfirm({
    389                            template:
    390                             '<p>You have unsaved changes. Are you sure you want to leave this page? All changes will be lost. </p>' +
    391                             '<div>' +
    392                             '<button type="button" class="btn btn-primary" ng-click="confirm(1)">Yes' +
    393                             '<button type="button" class="btn btn-default" ng-click="closeThisDialog(0)">No </button> ' +
    394                             '</button></div>',
    395                            plain: true
    396                        }).then(function (success) {
    397                            $rootScope.allowNavigation();
    398                        });
    399                    }
    400                    
    401                    event.preventDefault(); // This prevents the navigation from happening
    402                }
    403     );
     524
     525
    404526
    405527           });
Note: See TracChangeset for help on using the changeset viewer.