Chrysostomos for scheduler
[unfold.git] / plugins / scheduler2 / static / js / scheduler-helpers.js
index 54c665f..383cf1c 100755 (executable)
@@ -60,15 +60,23 @@ function schedulerGetSlots(slotSpan) {
     return slots;\r
 }\r
 \r
-function schedulerGetLeases(slotSpan) {\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
-    var i = 0;\r
+    var i = 0; var j = 0; var g = 0;\r
+    var maxg = granularity / slotSpan;\r
     while (d.getDate() == 1) {\r
         //slots.push({ id: i, status: getRandomStatus() });\r
-        slots.push({ id: i, status: "free" });\r
+        slots.push({ id: i, status: "free", groupid: j, groupIndex: g });\r
         d = schedulerAddMinutes(d, slotSpan);\r
+        //fix counters\r
+        g++;\r
+        if (maxg == g) {\r
+            g = 0;\r
+            j++;\r
+        }\r
         i++;\r
     }\r
     return slots;\r
@@ -77,6 +85,7 @@ function schedulerGetLeases(slotSpan) {
 //\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
@@ -85,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
@@ -122,4 +185,17 @@ function schedulerPadStr(i) {
 \r
 function schedulerAddMinutes(date, minutes) {\r
     return new Date(date.getTime() + minutes * 60000);\r
-}
\ No newline at end of file
+}\r
+\r
+function schedulerCompareOnDay(dateOne, dateTwo) {\r
+    if (dateOne.getYear() == dateTwo.getYear() &&\r
+        dateOne.getMonth() == dateTwo.getMonth() &&\r
+        dateOne.getDate() == dateTwo.getDate()) {\r
+        return 0;\r
+    } else if (dateOne > dateTwo) {\r
+        return -1;\r
+    } else {\r
+        return 0;\r
+    }\r
+\r
+}\r