Chrysostomos for scheduler
[myslice.git] / plugins / scheduler2 / static / js / table-selector.js
1 ////version 3\r
2 var dragStart_td = 0;\r
3 var dragStart_tr = 0;\r
4 var dragEnd_td = 0;\r
5 var dragEnd_tr = 0;\r
6 //tmp gia ta loops & check gia to last state\r
7 var tmp_dragStart_td;\r
8 var tmp_dragStart_tr;\r
9 var tmp_dragEnd_td;\r
10 var tmp_dragEnd_tr;\r
11 var isDragging = false;\r
12 var ctrlPressed = false;\r
13 // try stop \r
14 var continueExecuting = false;\r
15 var isExecuting = false;\r
16 \r
17 \r
18 \r
19 function rangeMouseDown(e) {\r
20     if (Debug) console.time("mouse:rangeMouseDown");\r
21     if (isRightClick(e)) {\r
22         return false;\r
23     } else {\r
24         dragStart_tr = $(this).parent().index();\r
25         dragStart_td = $(this).index();\r
26         dragEnd_tr = dragStart_tr;\r
27         dragEnd_td = dragStart_td;\r
28         //alert(dragStart_tr);\r
29         //var allCells = $("#tblReservation td");\r
30         //dragStart = allCells.index($(this));\r
31 \r
32         if ( $(this).hasClass("free"))\r
33             $(this).addClass("selected_tmp");\r
34 \r
35         isDragging = 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 (Debug) console.timeEnd("mouse:rangeMouseDown");\r
42 }\r
43 \r
44 function rangeMouseUp(e) {\r
45     if (Debug) console.time("mouse:rangeMouseUp");\r
46     if (isRightClick(e)) {\r
47         return false;\r
48     } else {\r
49         //var allCells = $("#tblReservation td");\r
50         //dragEnd = allCells.index($(this));\r
51 \r
52         dragEnd_tr = $(this).parent().index();\r
53         dragEnd_td = $(this).index();\r
54 \r
55         isDragging = false;\r
56         selectRange(false);\r
57 \r
58         document.documentElement.onselectstart = function () { return true; };\r
59     }\r
60     if (Debug) console.timeEnd("mouse:rangeMouseUp");\r
61 }\r
62 \r
63 function rangeMouseMove(e) {\r
64     //if (Debug) console.time("mouse:rangeMouseMove");\r
65     if (isDragging) {\r
66         dragEnd_tr = $(this).parent().attr('data-trindex');\r
67         dragEnd_td = $(this).attr('data-tdindex');\r
68 \r
69         //if (Debug) this.debug('foo');\r
70 \r
71         if ((dragEnd_tr != tmp_dragEnd_tr) || (dragEnd_td != tmp_dragEnd_td)) {\r
72             //console.log(dragEnd_tr + " - " + tmp_dragEnd_tr);\r
73             //console.log(dragEnd_td + " - " + tmp_dragEnd_td);\r
74             //selectRange(true);\r
75         }\r
76     }\r
77     //if (Debug) console.timeEnd("mouse:rangeMouseMove");\r
78 }\r
79 \r
80 function selectRange(IsTemp) {\r
81     if (Debug) console.time("mouse:---selectRange");\r
82 \r
83     if (!ctrlPressed)\r
84         $("#" + rsvrTblNm + "  td:not([class='info'],[class='closed'])").removeClass('selected selected_tmp').addClass('free');\r
85 \r
86     tmp_dragStart_td = dragStart_td;\r
87     tmp_dragStart_tr = dragStart_tr;\r
88     tmp_dragEnd_td = dragEnd_td;\r
89     tmp_dragEnd_tr = dragEnd_tr;\r
90 \r
91     if (tmp_dragStart_td > tmp_dragEnd_td) {\r
92         var tmp = tmp_dragStart_td;\r
93         tmp_dragStart_td = tmp_dragEnd_td;\r
94         tmp_dragEnd_td = tmp;\r
95     }\r
96 \r
97     if (tmp_dragStart_tr > tmp_dragEnd_tr) {\r
98         var tmp = tmp_dragStart_tr;\r
99         tmp_dragStart_tr = tmp_dragEnd_tr;\r
100         tmp_dragEnd_tr = tmp;\r
101     }\r
102 \r
103     //alert("tmp_dragStart_td:" + tmp_dragStart_td + "\n tmp_dragStart_tr:" + tmp_dragStart_tr + "\n tmp_dragEnd_td:" + tmp_dragEnd_td + "\n tmp_dragEnd_tr:" + tmp_dragEnd_tr);\r
104 \r
105 \r
106     for (i = tmp_dragStart_tr; i <= tmp_dragEnd_tr; i++) {\r
107         for (j = tmp_dragStart_td; j <= tmp_dragEnd_td; j++) {\r
108             //alert("i:" + i + "j:" + j);\r
109             var cell = $('#' + rsvrTblNm + '  tbody tr:eq(' + i + ') td:eq(' + j + ')');\r
110             //$(cell)\r
111             curClass = $(cell).attr("class");\r
112             //alert(curClass);\r
113             switch (curClass) {\r
114                 case "free_tmp":\r
115                     $(cell).removeClass();\r
116                     if (IsTemp)\r
117                         $(cell).addClass("free_tmp");\r
118                     else\r
119                         $(cell).addClass("free");\r
120                     break;\r
121                 case "free":\r
122                     $(cell).removeClass();\r
123                     if (IsTemp)\r
124                         $(cell).addClass("selected_tmp");\r
125                     else\r
126                         $(cell).addClass("selected");\r
127                     break;\r
128                 case "selected_tmp":\r
129                     $(cell).removeClass();\r
130                     if (IsTemp)\r
131                         $(cell).addClass("selected_tmp");\r
132                     else\r
133                         $(cell).addClass("selected");\r
134                     break;\r
135                 case "selected":\r
136                     $(cell).removeClass();\r
137                     if (IsTemp)\r
138                         $(cell).addClass("free_tmp");\r
139                     else\r
140                         $(cell).addClass("free");\r
141                     break;\r
142                 case "closed":\r
143                     //do nothing\r
144                     //alert("not allowed!");\r
145                     break;\r
146             }\r
147         }\r
148     }\r
149 \r
150 \r
151     /*if (dragEnd + 1 < dragStart) { // reverse select\r
152     //alert(1);\r
153     $("#tblReservation td:not([class='info'])").slice(dragEnd, dragStart + 1).addClass('selected');\r
154     } else {\r
155     alert(dragStart + "-" + dragEnd);\r
156     $("#tblReservation td:not([class='info'])").slice(dragStart, dragEnd).addClass('selected');\r
157     }*/\r
158 \r
159 \r
160     if (Debug) console.timeEnd("mouse:---selectRange");\r
161 }\r
162 \r
163 function ClearTableSelection(){\r
164     $('#' + rsvrTblNm + ' .selected').addClass("free").removeClass("selected");\r
165 }\r
166 \r
167 \r