Chrysostomos for scheduler
[unfold.git] / plugins / scheduler2 / static / js / scheduler-helpers.js
index 5de21cb..383cf1c 100755 (executable)
@@ -61,6 +61,7 @@ function schedulerGetSlots(slotSpan) {
 }\r
 \r
 function schedulerGetLeases(slotSpan, granularity) {\r
+    granularity = granularity / 60;\r
     if (slotSpan == 0) slotSpan = 10;\r
     var slots = [];\r
     var d = new Date(2014, 1, 1, 0, 0, 0, 0);\r
@@ -84,6 +85,7 @@ function schedulerGetLeases(slotSpan, granularity) {
 //\r
 //GetSlotId from time\r
 function schedulerGetSlotId(startTime, duration, granularity) {\r
+    //granularity in seconds\r
     startTime = parseInt(startTime);\r
     var d = new Date(startTime * 1000);\r
     var timespan = 60 / schedulerSlotsPerHour;\r
@@ -92,15 +94,69 @@ function schedulerGetSlotId(startTime, duration, granularity) {
     slotid += d.getMinutes() / timespan;\r
     return slotid;\r
 }\r
+//\r
+//GetSlotId from time\r
+function schedulerGetDateTimeFromSlotId(slotId, tmpDateTime) {\r
+    \r
+    var timespan = 60 / schedulerSlotsPerHour;\r
+    var totalMinutes = slotId * timespan;\r
+    var totalHours = totalMinutes / 60;\r
+    if (totalHours >= 1) {\r
+        totalHours = Math.floor(totalHours);\r
+        totalMinutes = totalMinutes - totalHours * 60;\r
+    } else {\r
+        totalHours = 0;\r
+    }\r
+    tmpDateTime.setHours(totalHours, totalMinutes, 0, 0);\r
+\r
+    return tmpDateTime;\r
+}\r
+//\r
+//GetSlotId from time\r
+function schedulerFindDuration(startTime, endTime, granularity) {\r
+    var duration = 0;\r
+    var fd = new Date(startTime * 1000);\r
+    var td = new Date(endTime * 1000);\r
+    while (fd < td) {\r
+        duration++;\r
+        fd.setMinutes(fd.getMinutes() + granularity);\r
+    }\r
+    return duration;\r
+}\r
 \r
+//\r
+// Set Select - Free Slots *******Start\r
 function schedulerSelectSlot(slotId, rowIndex, resourceIndex) {\r
-    SchedulerDataViewData[rowIndex].leases[slotId].status = 'selected';\r
-    SchedulerData[resourceIndex].leases[slotId].status = 'selected';\r
+    console.log('timeslot selected');\r
+    _schedulerSetStatusSlot(slotId, rowIndex, resourceIndex, 'selected');\r
 }\r
 function schedulerFreeSlot(slotId, rowIndex, resourceIndex) {\r
-    SchedulerDataViewData[rowIndex].leases[slotId].status = 'free';\r
-    SchedulerData[resourceIndex].leases[slotId].status = 'free';\r
+    _schedulerSetStatusSlot(slotId, rowIndex, resourceIndex, 'free');\r
+}\r
+\r
+function _schedulerSetStatusSlot(slotId, rowIndex, resourceIndex, classText) {\r
+    var tmpVS = SchedulerDataViewData[rowIndex].leases[slotId];  // for the display\r
+    var tmpS = SchedulerData[resourceIndex].leases[slotId];     // for the data\r
+    console.log(SchedulerData[resourceIndex].id);\r
+    tmpVS.status = classText;\r
+    tmpS.status = classText;\r
+    //select other from the group in the same granularity\r
+    var slotSpan = 60 / schedulerSlotsPerHour;\r
+    var maxg = (SchedulerData[resourceIndex].granularity / 60) / slotSpan;\r
+\r
+    var startSlotId = tmpVS.groupIndex == 0 ? 0 : slotId - tmpVS.groupIndex;\r
+    for (var s = 0; s < maxg; s++) {\r
+        if (tmpVS.groupIndex != s) {\r
+            SchedulerDataViewData[rowIndex].leases[startSlotId].status = classText;\r
+            SchedulerData[resourceIndex].leases[startSlotId].status = classText;\r
+        }\r
+        startSlotId++;\r
+    }\r
+\r
 }\r
+//\r
+// Set Select - Free Slots *******End\r
+\r
 //\r
 //Find Resource By Id\r
 function schedulerFindResourceById(Resources, id) {\r
@@ -142,4 +198,4 @@ function schedulerCompareOnDay(dateOne, dateTwo) {
         return 0;\r
     }\r
 \r
-}
\ No newline at end of file
+}\r