scheduler com
[unfold.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 \r
34         schedulerTableIsDragging = true;\r
35         //selectRange();\r
36 \r
37         if (typeof e.preventDefault != 'undefined') { e.preventDefault(); }\r
38         document.documentElement.onselectstart = function () { return false; };\r
39     }\r
40     if (SchedulerData) console.timeEnd("mouse:rangeMouseDown");\r
41 }\r
42 \r
43 function rangeMouseUp(e) {\r
44     if (SchedulerData) console.time("mouse:rangeMouseUp");\r
45     if (schedulerIsRightClick(e)) {\r
46         return false;\r
47     } else {\r
48         //var allCells = $("#tblReservation td");\r
49         //dragEnd = allCells.index($(this));\r
50 \r
51         scheduler_table_dragEnd_tr = $(this).parent().index();\r
52         scheduler_table_dragEnd_td = $(this).index() -1;\r
53 \r
54         schedulerTableIsDragging = false;\r
55         selectRange(false);\r
56 \r
57         document.documentElement.onselectstart = function () { return true; };\r
58     }\r
59     if (SchedulerData) console.timeEnd("mouse:rangeMouseUp");\r
60 }\r
61 \r
62 function rangeMouseMove(e) {\r
63     //if (SchedulerData) console.time("mouse:rangeMouseMove");\r
64     if (schedulerTableIsDragging) {\r
65         scheduler_table_dragEnd_tr = $(this).parent().attr('data-trindex');\r
66         scheduler_table_dragEnd_td = $(this).attr('data-tdindex');\r
67 \r
68         //if (SchedulerData) this.SchedulerData('foo');\r
69 \r
70         if ((scheduler_table_dragEnd_tr != tmp_scheduler_table_dragEnd_tr) || (scheduler_table_dragEnd_td != tmp_scheduler_table_dragEnd_td)) {\r
71             //console.log(scheduler_table_dragEnd_tr + " - " + tmp_scheduler_table_dragEnd_tr);\r
72             //console.log(scheduler_table_dragEnd_td + " - " + tmp_scheduler_table_dragEnd_td);\r
73             //selectRange(true);\r
74         }\r
75     }\r
76     //if (SchedulerData) console.timeEnd("mouse:rangeMouseMove");\r
77 }\r
78 \r
79 function selectRange(isTemp) {\r
80     if (SchedulerData) console.time("mouse:---selectRange");\r
81 \r
82     if (!schedulerCtrlPressed)\r
83         $("#" + schedulerTblId + "  td.selected, #" + schedulerTblId + "  td.selected_tmp").each(function() {\r
84             $(this).removeClass('selected selected_tmp').addClass('free');\r
85             schedulerFreeSlot($(this).data('slotid'), $(this).siblings('th').data('resourceindex'));\r
86         });\r
87 \r
88     tmp_scheduler_table_dragStart_td = scheduler_table_dragStart_td;\r
89     tmp_scheduler_table_dragStart_tr = scheduler_table_dragStart_tr;\r
90     tmp_scheduler_table_dragEnd_td = scheduler_table_dragEnd_td;\r
91     tmp_scheduler_table_dragEnd_tr = scheduler_table_dragEnd_tr;\r
92 \r
93     if (tmp_scheduler_table_dragStart_td > tmp_scheduler_table_dragEnd_td) {\r
94         var tmp = tmp_scheduler_table_dragStart_td;\r
95         tmp_scheduler_table_dragStart_td = tmp_scheduler_table_dragEnd_td;\r
96         tmp_scheduler_table_dragEnd_td = tmp;\r
97     }\r
98 \r
99     if (tmp_scheduler_table_dragStart_tr > tmp_scheduler_table_dragEnd_tr) {\r
100         var tmp = tmp_scheduler_table_dragStart_tr;\r
101         tmp_scheduler_table_dragStart_tr = tmp_scheduler_table_dragEnd_tr;\r
102         tmp_scheduler_table_dragEnd_tr = tmp;\r
103     }\r
104     //var angularScope = angular.element(document.getElementById('SchedulerCtrl')).scope();\r
105     //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
106 \r
107 \r
108     for (var i = tmp_scheduler_table_dragStart_tr; i <= tmp_scheduler_table_dragEnd_tr; i++) {\r
109         for (var j = tmp_scheduler_table_dragStart_td; j <= tmp_scheduler_table_dragEnd_td; j++) {\r
110             //alert("i:" + i + "j:" + j);\r
111             var cell = $('#' + schedulerTblId + '  tbody tr:eq(' + i + ') td:eq(' + j + ')');\r
112             //$(cell)\r
113             var curClass = $(cell).attr("class");\r
114             curClass = curClass.replace('ng-scope','').trim();\r
115             //alert(curClass);\r
116             switch (curClass) {\r
117                 case "free_tmp":\r
118                     $(cell).removeClass('selected_tmp selected free_tmp free');\r
119                     if (isTemp)\r
120                         $(cell).addClass("free_tmp");\r
121                     else{\r
122                         schedulerFreeSlot($(cell).data('slotid'), $(cell).siblings('th').data('resourceindex'));\r
123                         $(cell).addClass("free");\r
124                     }\r
125                     break;\r
126                 case "free":\r
127                     $(cell).removeClass('selected_tmp selected free_tmp free');\r
128                     if (isTemp)\r
129                         $(cell).addClass("selected_tmp");\r
130                     else {\r
131                         schedulerSelectSlot($(cell).data('slotid'), $(cell).siblings('th').data('resourceindex'));\r
132                         $(cell).addClass("selected");\r
133                     }\r
134                     break;\r
135                 case "selected_tmp":\r
136                     $(cell).removeClass('selected_tmp selected free_tmp free');\r
137                     if (isTemp)\r
138                         $(cell).addClass("selected_tmp");\r
139                     else {\r
140                         schedulerSelectSlot($(cell).data('slotid'), $(cell).siblings('th').data('resourceindex'));\r
141                         $(cell).addClass("selected");\r
142                     }\r
143                     break;\r
144                 case "selected":\r
145                     $(cell).removeClass('selected_tmp selected free_tmp free');\r
146                     if (isTemp)\r
147                         $(cell).addClass("free_tmp");\r
148                     else {\r
149                         schedulerFreeSlot($(cell).data('slotid'), $(cell).siblings('th').data('resourceindex'));\r
150                         $(cell).addClass("free");\r
151                     }\r
152                     break;\r
153                 case "closed":\r
154                     //do nothing\r
155                     //alert("not allowed!");\r
156                     break;\r
157             }\r
158         }\r
159     }\r
160 \r
161 \r
162     /*if (dragEnd + 1 < dragStart) { // reverse select\r
163     //alert(1);\r
164     $("#tblReservation td:not([class='info'])").slice(dragEnd, dragStart + 1).addClass('selected');\r
165     } else {\r
166     alert(dragStart + "-" + dragEnd);\r
167     $("#tblReservation td:not([class='info'])").slice(dragStart, dragEnd).addClass('selected');\r
168     }*/\r
169 \r
170 \r
171     if (SchedulerData) console.timeEnd("mouse:---selectRange");\r
172 }\r
173 \r
174 function ClearTableSelection(){\r
175     $('#' + schedulerTblId + ' .selected').addClass("free").removeClass("selected");\r
176 }\r
177 \r
178 \r