Chrysostomos for scheduler
[myslice.git] / plugins / scheduler2 / static / js / scheduler-helpers.js
index a455919..383cf1c 100755 (executable)
@@ -22,7 +22,14 @@ function fixOddEvenClasses() {
     $('#' + rsvrTblNm + ' tbody tr:visible:odd').addClass('odd');\r
 }\r
 \r
-function isRightClick(e) {\r
+SlotStatus = {\r
+    free: 0,\r
+    selected: 1,\r
+    reserved: 2,\r
+    maintenance: 3,\r
+}\r
+\r
+function schedulerIsRightClick(e) {\r
     if (e.which) {\r
         return (e.which == 3);\r
     } else if (e.button) {\r
@@ -30,3 +37,165 @@ function isRightClick(e) {
     }\r
     return false;\r
 }\r
+\r
+function schedulerCloneArray(originalArray) {\r
+    var clonedArray = $.map(originalArray, function (obj) {\r
+        return $.extend(true, {}, obj);\r
+    });\r
+\r
+    return clonedArray;\r
+}\r
+\r
+function schedulerGetSlots(slotSpan) {\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
+    while (d.getDate() == 1) {\r
+        var tmpTime = schedulerPadStr(d.getHours()) + ':' + schedulerPadStr(d.getMinutes());\r
+        slots.push({ id: i, time: tmpTime });\r
+        d = schedulerAddMinutes(d, slotSpan);\r
+        i++;\r
+    }\r
+    return slots;\r
+}\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
+    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", 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
+}\r
+\r
+//\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
+    var slotid = 0;\r
+    slotid += d.getHours() * schedulerSlotsPerHour;\r
+    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
+    console.log('timeslot selected');\r
+    _schedulerSetStatusSlot(slotId, rowIndex, resourceIndex, 'selected');\r
+}\r
+function schedulerFreeSlot(slotId, rowIndex, resourceIndex) {\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
+    for (var i = 0, len = Resources.length; i < len; i++) {\r
+        if (Resources[i].id == id)\r
+            return Resources[i]; // Return as soon as the object is found\r
+    }\r
+    return null; // The object was not found\r
+}\r
+\r
+//\r
+//for testing\r
+function getRandomStatus() {\r
+    var randint = Math.floor(Math.random() * (10 - 0 + 1) + 0);\r
+    switch (randint) {\r
+        case 0: case 1: case 2: case 3: case 4: case 5: case 6: return "free";\r
+        //case 8: return "selected";\r
+        case 7: case 8: case 9: return "reserved";\r
+        case 10: return "maintenance";\r
+    }\r
+}\r
+\r
+function schedulerPadStr(i) {\r
+    return (i < 10) ? "0" + i : "" + i;\r
+}\r
+\r
+function schedulerAddMinutes(date, minutes) {\r
+    return new Date(date.getTime() + minutes * 60000);\r
+}\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