Third Party fixing symbolic links of third-party folder
[myslice.git] / plugins / scheduler2 / static / js / scheduler-helpers.js
1 function lookup(array, prop, value) {\r
2     for (var i = 0, len = array.length; i < len; i++)\r
3         if (array[i][prop] === value) return array[i];\r
4 }\r
5 \r
6 function GetTimeFromInt(intTime) {\r
7     var has30 = intTime % 1;\r
8     var CurInt = parseInt(intTime / 1);\r
9     if (CurInt < 10)\r
10         CurInt = "0" + CurInt;\r
11 \r
12     if (has30 == 0) {\r
13         return CurInt + ":00";\r
14     } else {\r
15         return CurInt + ":30";\r
16     }\r
17 }\r
18 \r
19 function fixOddEvenClasses() {\r
20     $('#' + rsvrTblNm + ' tbody tr').removeClass();\r
21     $('#' + rsvrTblNm + ' tbody tr:visible:even').addClass('even');\r
22     $('#' + rsvrTblNm + ' tbody tr:visible:odd').addClass('odd');\r
23 }\r
24 \r
25 SlotStatus = {\r
26     free: 0,\r
27     selected: 1,\r
28     reserved: 2,\r
29     maintenance: 3,\r
30 }\r
31 \r
32 function schedulerIsRightClick(e) {\r
33     if (e.which) {\r
34         return (e.which == 3);\r
35     } else if (e.button) {\r
36         return (e.button == 2);\r
37     }\r
38     return false;\r
39 }\r
40 \r
41 function schedulerCloneArray(originalArray) {\r
42     var clonedArray = $.map(originalArray, function (obj) {\r
43         return $.extend(true, {}, obj);\r
44     });\r
45 \r
46     return clonedArray;\r
47 }\r
48 \r
49 function schedulerGetLeases(slotSpan, granularity) {\r
50     granularity = granularity / 60;\r
51     if (slotSpan == 0) slotSpan = 10;\r
52     var slots = [];\r
53     var d = new Date(2014, 1, 1, 0, 0, 0, 0);\r
54     var i = 0; var j = 0; var g = 0;\r
55     var maxg = granularity / slotSpan;\r
56     while (d.getDate() == 1) {\r
57         //slots.push({ id: i, status: getRandomStatus() });\r
58         slots.push({ id: i, status: "free", groupid: j, groupIndex: g });\r
59         d = schedulerAddMinutes(d, slotSpan);\r
60         //fix counters\r
61         g++;\r
62         if (maxg == g) {\r
63             g = 0;\r
64             j++;\r
65         }\r
66         i++;\r
67     }\r
68     return slots;\r
69 }\r
70 \r
71 //\r
72 //GetSlotId from time\r
73 function schedulerGetSlotId(startTime, duration, granularity) {\r
74     //granularity in seconds\r
75     startTime = parseInt(startTime);\r
76     var d = new Date(startTime * 1000);\r
77     var timespan = 60 / schedulerSlotsPerHour;\r
78     var slotid = 0;\r
79     slotid += d.getHours() * schedulerSlotsPerHour;\r
80     slotid += d.getMinutes() / timespan;\r
81     return slotid;\r
82 }\r
83 //\r
84 //GetSlotId from time\r
85 function schedulerGetDateTimeFromSlotId(slotId, tmpDateTime) {\r
86     \r
87     var timespan = 60 / schedulerSlotsPerHour;\r
88     var totalMinutes = slotId * timespan;\r
89     var totalHours = totalMinutes / 60;\r
90     if (totalHours >= 1) {\r
91         totalHours = Math.floor(totalHours);\r
92         totalMinutes = totalMinutes - totalHours * 60;\r
93     } else {\r
94         totalHours = 0;\r
95     }\r
96     tmpDateTime.setHours(totalHours, totalMinutes, 0, 0);\r
97 \r
98     return tmpDateTime;\r
99 }\r
100 //\r
101 //GetSlotId from time\r
102 function schedulerFindDuration(startTime, endTime, granularity) {\r
103     var duration = 0;\r
104     var fd = new Date(startTime * 1000);\r
105     var td = new Date(endTime * 1000);\r
106     while (fd < td) {\r
107         duration++;\r
108         fd.setMinutes(fd.getMinutes() + granularity);\r
109     }\r
110     return duration;\r
111 }\r
112 \r
113 //\r
114 // Set Select - Free Slots *******Start\r
115 function schedulerSelectSlot(slotId, rowIndex, resourceIndex) {\r
116     console.log('timeslot selected');\r
117     _schedulerSetStatusSlot(slotId, rowIndex, resourceIndex, 'selected');\r
118 }\r
119 function schedulerFreeSlot(slotId, rowIndex, resourceIndex) {\r
120     _schedulerSetStatusSlot(slotId, rowIndex, resourceIndex, 'free');\r
121 }\r
122 \r
123 function _schedulerSetStatusSlot(slotId, rowIndex, resourceIndex, classText) {\r
124     var tmpVS = SchedulerDataViewData[rowIndex].leases[slotId];  // for the display\r
125     var tmpS = SchedulerData[resourceIndex].leases[slotId];     // for the data\r
126     console.log(SchedulerData[resourceIndex].id);\r
127     tmpVS.status = classText;\r
128     tmpS.status = classText;\r
129     //select other from the group in the same granularity\r
130     var slotSpan = 60 / schedulerSlotsPerHour;\r
131     var maxg = (SchedulerData[resourceIndex].granularity / 60) / slotSpan;\r
132 \r
133     var startSlotId = tmpVS.groupIndex == 0 ? 0 : slotId - tmpVS.groupIndex;\r
134     for (var s = 0; s < maxg; s++) {\r
135         if (tmpVS.groupIndex != s) {\r
136             SchedulerDataViewData[rowIndex].leases[startSlotId].status = classText;\r
137             SchedulerData[resourceIndex].leases[startSlotId].status = classText;\r
138         }\r
139         startSlotId++;\r
140     }\r
141 \r
142 }\r
143 //\r
144 // Set Select - Free Slots *******End\r
145 \r
146 //\r
147 //Find Resource By Id\r
148 function schedulerFindResourceById(Resources, id) {\r
149     for (var i = 0, len = Resources.length; i < len; i++) {\r
150         if (Resources[i].id == id)\r
151             return Resources[i]; // Return as soon as the object is found\r
152     }\r
153     return null; // The object was not found\r
154 }\r
155 \r
156 //\r
157 //for testing\r
158 function getRandomStatus() {\r
159     var randint = Math.floor(Math.random() * (10 - 0 + 1) + 0);\r
160     switch (randint) {\r
161         case 0: case 1: case 2: case 3: case 4: case 5: case 6: return "free";\r
162         //case 8: return "selected";\r
163         case 7: case 8: case 9: return "reserved";\r
164         case 10: return "maintenance";\r
165     }\r
166 }\r
167 \r
168 function schedulerPadStr(i) {\r
169     return (i < 10) ? "0" + i : "" + i;\r
170 }\r
171 \r
172 function schedulerAddMinutes(date, minutes) {\r
173     return new Date(date.getTime() + minutes * 60000);\r
174 }\r
175 \r
176 /**\r
177  * Compares two dates\r
178  *\r
179  * Returns:\r
180  *   0 if they are equal\r
181  *   -1 if the first is less than the second\r
182  *   1 if the first is more than the second\r
183  */\r
184 function schedulerCompareOnDay(dateOne, dateTwo)\r
185 {\r
186     if (dateOne.getYear() == dateTwo.getYear() &&\r
187         dateOne.getMonth() == dateTwo.getMonth() &&\r
188         dateOne.getDate() == dateTwo.getDate()) {\r
189         return 0;\r
190     } else if (dateOne > dateTwo) {\r
191         return -1;\r
192     } else {\r
193         return 1;\r
194     }\r
195 \r
196 }\r