d69a2d4590c92408d6148608faaaff2d4edfb3cf
[myslice.git] / plugins / scheduler2 / static / js / scheduler-table-selector.js
1 ////version 3\r
2 var scheduler_table_dragStart_td = 0;\r
3 var scheduler_table_dragStart_tr = 0;\r
4 var scheduler_table_dragEnd_td = 0;\r
5 var scheduler_table_dragEnd_tr = 0;\r
6 //tmp gia ta loops & check gia to last state\r
7 var tmp_scheduler_table_dragStart_td;\r
8 var tmp_scheduler_table_dragStart_tr;\r
9 var tmp_scheduler_table_dragEnd_td;\r
10 var tmp_scheduler_table_dragEnd_tr;\r
11 var schedulerTableIsDragging = false;\r
12 // try stop \r
13 var continueExecuting = false;\r
14 var isExecuting = false;\r
15 \r
16 \r
17 \r
18 function rangeMouseDown(e) {\r
19     if (SchedulerData) console.time("mouse:rangeMouseDown");\r
20     if (schedulerIsRightClick(e)) {\r
21         return false;\r
22     } else {\r
23         scheduler_table_dragStart_tr = $(this).parent().index();\r
24         scheduler_table_dragStart_td = $(this).index() -1;\r
25         scheduler_table_dragEnd_tr = scheduler_table_dragStart_tr;\r
26         scheduler_table_dragEnd_td = scheduler_table_dragStart_td;\r
27         //alert(scheduler_table_dragStart_tr);\r
28         //var allCells = $("#tblReservation td");\r
29         //dragStart = allCells.index($(this));\r
30 \r
31         if ( $(this).hasClass("free")){\r
32             $(this).addClass("selected_tmp");\r
33             $(this).siblings("td[data-groupid='" + $(this).data('groupid') + "']").addClass("selected_tmp");\r
34         }\r
35         schedulerTableIsDragging = true;\r
36         //selectRange();\r
37 \r
38         if (typeof e.preventDefault != 'undefined') { e.preventDefault(); }\r
39         document.documentElement.onselectstart = function () { return false; };\r
40     }\r
41     if (SchedulerData) console.timeEnd("mouse:rangeMouseDown");\r
42 }\r
43 \r
44 function rangeMouseUp(e) {\r
45     if (SchedulerData) console.time("mouse:rangeMouseUp");\r
46     if (schedulerIsRightClick(e)) {\r
47         return false;\r
48     } else {\r
49         //var allCells = $("#tblReservation td");\r
50         //dragEnd = allCells.index($(this));\r
51 \r
52         scheduler_table_dragEnd_tr = $(this).parent().index();\r
53         scheduler_table_dragEnd_td = $(this).index() -1;\r
54 \r
55         schedulerTableIsDragging = false;\r
56         selectRange(false);\r
57 \r
58         document.documentElement.onselectstart = function () { return true; };\r
59     }\r
60     if (SchedulerData) console.timeEnd("mouse:rangeMouseUp");\r
61 }\r
62 \r
63 function rangeMouseMove(e) {\r
64     //if (SchedulerData) console.time("mouse:rangeMouseMove");\r
65     if (schedulerTableIsDragging) {\r
66         scheduler_table_dragEnd_tr = $(this).parent().attr('data-trindex');\r
67         scheduler_table_dragEnd_td = $(this).attr('data-tdindex');\r
68 \r
69         //if (SchedulerData) this.SchedulerData('foo');\r
70 \r
71         if ((scheduler_table_dragEnd_tr != tmp_scheduler_table_dragEnd_tr) || (scheduler_table_dragEnd_td != tmp_scheduler_table_dragEnd_td)) {\r
72             //console.log(scheduler_table_dragEnd_tr + " - " + tmp_scheduler_table_dragEnd_tr);\r
73             //console.log(scheduler_table_dragEnd_td + " - " + tmp_scheduler_table_dragEnd_td);\r
74             //selectRange(true);\r
75         }\r
76     }\r
77     //if (SchedulerData) console.timeEnd("mouse:rangeMouseMove");\r
78 }\r
79 \r
80 function selectRange(isTemp) {\r
81     if (SchedulerData) console.time("mouse:---selectRange");\r
82 \r
83     if (!schedulerCtrlPressed)\r
84         $("#" + schedulerTblId + "  td.selected, #" + schedulerTblId + "  td.selected_tmp").each(function() {\r
85             $(this).removeClass('selected selected_tmp').addClass('free');\r
86             $(this).siblings("td[data-groupid='" + $(this).data('groupid') + "']").removeClass('selected selected_tmp').addClass("free");\r
87             schedulerFreeSlot($(this).data('slotid'), $(this).siblings('th').data('rowindex'), $(this).siblings('th').data('resourceindex'));\r
88         });\r
89 \r
90     tmp_scheduler_table_dragStart_td = scheduler_table_dragStart_td;\r
91     tmp_scheduler_table_dragStart_tr = scheduler_table_dragStart_tr;\r
92     tmp_scheduler_table_dragEnd_td = scheduler_table_dragEnd_td;\r
93     tmp_scheduler_table_dragEnd_tr = scheduler_table_dragEnd_tr;\r
94 \r
95     if (tmp_scheduler_table_dragStart_td > tmp_scheduler_table_dragEnd_td) {\r
96         var tmp = tmp_scheduler_table_dragStart_td;\r
97         tmp_scheduler_table_dragStart_td = tmp_scheduler_table_dragEnd_td;\r
98         tmp_scheduler_table_dragEnd_td = tmp;\r
99     }\r
100 \r
101     if (tmp_scheduler_table_dragStart_tr > tmp_scheduler_table_dragEnd_tr) {\r
102         var tmp = tmp_scheduler_table_dragStart_tr;\r
103         tmp_scheduler_table_dragStart_tr = tmp_scheduler_table_dragEnd_tr;\r
104         tmp_scheduler_table_dragEnd_tr = tmp;\r
105     }\r
106     //var angularScope = angular.element(document.getElementById('SchedulerCtrl')).scope();\r
107     //alert("tmp_scheduler_table_dragStart_td:" + tmp_scheduler_table_dragStart_td + "\n tmp_scheduler_table_dragStart_tr:" + tmp_scheduler_table_dragStart_tr + "\n tmp_scheduler_table_dragEnd_td:" + tmp_scheduler_table_dragEnd_td + "\n tmp_scheduler_table_dragEnd_tr:" + tmp_scheduler_table_dragEnd_tr);\r
108 \r
109 \r
110     for (var i = tmp_scheduler_table_dragStart_tr; i <= tmp_scheduler_table_dragEnd_tr; i++) {\r
111         for (var j = tmp_scheduler_table_dragStart_td; j <= tmp_scheduler_table_dragEnd_td; j++) {\r
112             //alert("i:" + i + "j:" + j);\r
113             var cell = $('#' + schedulerTblId + '  tbody tr:eq(' + i + ') td:eq(' + j + ')');\r
114             //$(cell)\r
115             var curClass = $(cell).attr("class");\r
116             curClass = curClass.replace('ng-scope','').trim();\r
117             //alert(curClass);\r
118             switch (curClass) {\r
119                 case "free_tmp":\r
120                     $(cell).removeClass('selected_tmp selected free_tmp free');\r
121                     $(cell).siblings("td[data-groupid='" + $(cell).data('groupid') + "']").removeClass("selected_tmp selected free_tmp free");\r
122                     if (isTemp){\r
123                         $(cell).addClass("free_tmp");\r
124                         $(cell).siblings("td[data-groupid='" + $(cell).data('groupid') + "']").addClass("free");\r
125                     } else {\r
126                         schedulerFreeSlot($(cell).data('slotid'), $(cell).siblings('th').data('rowindex'), $(cell).siblings('th').data('resourceindex'));\r
127                         $(cell).addClass("free");\r
128                         $(cell).siblings("td[data-groupid='" + $(cell).data('groupid') + "']").addClass("free");\r
129                     }\r
130                     break;\r
131                 case "free":\r
132                     $(cell).removeClass('selected_tmp selected free_tmp free');\r
133                     $(cell).siblings("td[data-groupid='" + $(cell).data('groupid') + "']").removeClass("selected_tmp selected free_tmp free");\r
134                     if (isTemp){\r
135                         $(cell).addClass("selected_tmp");\r
136                         $(cell).siblings("td[data-groupid='" + $(cell).data('groupid') + "']").addClass("selected_tmp");\r
137                     }else {\r
138                         schedulerSelectSlot($(cell).data('slotid'), $(cell).siblings('th').data('rowindex'), $(cell).siblings('th').data('resourceindex'));\r
139                         $(cell).addClass("selected");\r
140                         $(cell).siblings("td[data-groupid='" + $(cell).data('groupid') + "']").addClass("selected");\r
141                     }\r
142                     break;\r
143                 case "selected_tmp":\r
144                     $(cell).removeClass('selected_tmp selected free_tmp free');\r
145                     $(cell).siblings("td[data-groupid='" + $(cell).data('groupid') + "']").removeClass("selected_tmp selected free_tmp free");\r
146                     if (isTemp){\r
147                         $(cell).addClass("selected_tmp");\r
148                         $(cell).siblings("td[data-groupid='" + $(cell).data('groupid') + "']").addClass("selected_tmp");\r
149                     } else {\r
150                         schedulerSelectSlot($(cell).data('slotid'), $(cell).siblings('th').data('rowindex'), $(cell).siblings('th').data('resourceindex'));\r
151                         $(cell).addClass("selected");\r
152                         $(cell).siblings("td[data-groupid='" + $(cell).data('groupid') + "']").addClass("selected");\r
153                     }\r
154                     break;\r
155                 case "selected":\r
156                     $(cell).removeClass('selected_tmp selected free_tmp free');\r
157                     $(cell).siblings("td[data-groupid='" + $(cell).data('groupid') + "']").removeClass("selected_tmp selected free_tmp free");\r
158                     if (isTemp){\r
159                         $(cell).addClass("free_tmp");\r
160                         $(cell).siblings("td[data-groupid='" + $(cell).data('groupid') + "']").addClass("free_tmp");\r
161                     } else {\r
162                         schedulerFreeSlot($(cell).data('slotid'), $(cell).siblings('th').data('rowindex'), $(cell).siblings('th').data('resourceindex'));\r
163                         $(cell).addClass("free");\r
164                         $(cell).siblings("td[data-groupid='" + $(cell).data('groupid') + "']").addClass("free");\r
165                     }\r
166                     break;\r
167                 case "closed":\r
168                     //do nothing\r
169                     //alert("not allowed!");\r
170                     break;\r
171             }\r
172         }\r
173     }\r
174 \r
175 \r
176     /*if (dragEnd + 1 < dragStart) { // reverse select\r
177     //alert(1);\r
178     $("#tblReservation td:not([class='info'])").slice(dragEnd, dragStart + 1).addClass('selected');\r
179     } else {\r
180     alert(dragStart + "-" + dragEnd);\r
181     $("#tblReservation td:not([class='info'])").slice(dragStart, dragEnd).addClass('selected');\r
182     }*/\r
183 \r
184     if (SchedulerData) console.timeEnd("mouse:---selectRange");\r
185 }\r
186 \r
187 function ClearTableSelection(){\r
188     $('#' + schedulerTblId + ' .selected').addClass("free").removeClass("selected");\r
189 }\r
190 \r
191 \r