Chrysostomos for scheduler
[myslice.git] / plugins / scheduler2 / static / js / table-selector.js
diff --git a/plugins/scheduler2/static/js/table-selector.js b/plugins/scheduler2/static/js/table-selector.js
new file mode 100755 (executable)
index 0000000..b499151
--- /dev/null
@@ -0,0 +1,167 @@
+////version 3\r
+var dragStart_td = 0;\r
+var dragStart_tr = 0;\r
+var dragEnd_td = 0;\r
+var dragEnd_tr = 0;\r
+//tmp gia ta loops & check gia to last state\r
+var tmp_dragStart_td;\r
+var tmp_dragStart_tr;\r
+var tmp_dragEnd_td;\r
+var tmp_dragEnd_tr;\r
+var isDragging = false;\r
+var ctrlPressed = false;\r
+// try stop \r
+var continueExecuting = false;\r
+var isExecuting = false;\r
+\r
+\r
+\r
+function rangeMouseDown(e) {\r
+    if (Debug) console.time("mouse:rangeMouseDown");\r
+    if (isRightClick(e)) {\r
+        return false;\r
+    } else {\r
+        dragStart_tr = $(this).parent().index();\r
+        dragStart_td = $(this).index();\r
+        dragEnd_tr = dragStart_tr;\r
+        dragEnd_td = dragStart_td;\r
+        //alert(dragStart_tr);\r
+        //var allCells = $("#tblReservation td");\r
+        //dragStart = allCells.index($(this));\r
+\r
+        if ( $(this).hasClass("free"))\r
+            $(this).addClass("selected_tmp");\r
+\r
+        isDragging = true;\r
+        //selectRange();\r
+\r
+        if (typeof e.preventDefault != 'undefined') { e.preventDefault(); }\r
+        document.documentElement.onselectstart = function () { return false; };\r
+    }\r
+    if (Debug) console.timeEnd("mouse:rangeMouseDown");\r
+}\r
+\r
+function rangeMouseUp(e) {\r
+    if (Debug) console.time("mouse:rangeMouseUp");\r
+    if (isRightClick(e)) {\r
+        return false;\r
+    } else {\r
+        //var allCells = $("#tblReservation td");\r
+        //dragEnd = allCells.index($(this));\r
+\r
+        dragEnd_tr = $(this).parent().index();\r
+        dragEnd_td = $(this).index();\r
+\r
+        isDragging = false;\r
+        selectRange(false);\r
+\r
+        document.documentElement.onselectstart = function () { return true; };\r
+    }\r
+    if (Debug) console.timeEnd("mouse:rangeMouseUp");\r
+}\r
+\r
+function rangeMouseMove(e) {\r
+    //if (Debug) console.time("mouse:rangeMouseMove");\r
+    if (isDragging) {\r
+        dragEnd_tr = $(this).parent().attr('data-trindex');\r
+        dragEnd_td = $(this).attr('data-tdindex');\r
+\r
+        //if (Debug) this.debug('foo');\r
+\r
+        if ((dragEnd_tr != tmp_dragEnd_tr) || (dragEnd_td != tmp_dragEnd_td)) {\r
+            //console.log(dragEnd_tr + " - " + tmp_dragEnd_tr);\r
+            //console.log(dragEnd_td + " - " + tmp_dragEnd_td);\r
+            //selectRange(true);\r
+        }\r
+    }\r
+    //if (Debug) console.timeEnd("mouse:rangeMouseMove");\r
+}\r
+\r
+function selectRange(IsTemp) {\r
+    if (Debug) console.time("mouse:---selectRange");\r
+\r
+    if (!ctrlPressed)\r
+        $("#" + rsvrTblNm + "  td:not([class='info'],[class='closed'])").removeClass('selected selected_tmp').addClass('free');\r
+\r
+    tmp_dragStart_td = dragStart_td;\r
+    tmp_dragStart_tr = dragStart_tr;\r
+    tmp_dragEnd_td = dragEnd_td;\r
+    tmp_dragEnd_tr = dragEnd_tr;\r
+\r
+    if (tmp_dragStart_td > tmp_dragEnd_td) {\r
+        var tmp = tmp_dragStart_td;\r
+        tmp_dragStart_td = tmp_dragEnd_td;\r
+        tmp_dragEnd_td = tmp;\r
+    }\r
+\r
+    if (tmp_dragStart_tr > tmp_dragEnd_tr) {\r
+        var tmp = tmp_dragStart_tr;\r
+        tmp_dragStart_tr = tmp_dragEnd_tr;\r
+        tmp_dragEnd_tr = tmp;\r
+    }\r
+\r
+    //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
+\r
+\r
+    for (i = tmp_dragStart_tr; i <= tmp_dragEnd_tr; i++) {\r
+        for (j = tmp_dragStart_td; j <= tmp_dragEnd_td; j++) {\r
+            //alert("i:" + i + "j:" + j);\r
+            var cell = $('#' + rsvrTblNm + '  tbody tr:eq(' + i + ') td:eq(' + j + ')');\r
+            //$(cell)\r
+            curClass = $(cell).attr("class");\r
+            //alert(curClass);\r
+            switch (curClass) {\r
+                case "free_tmp":\r
+                    $(cell).removeClass();\r
+                    if (IsTemp)\r
+                        $(cell).addClass("free_tmp");\r
+                    else\r
+                        $(cell).addClass("free");\r
+                    break;\r
+                case "free":\r
+                    $(cell).removeClass();\r
+                    if (IsTemp)\r
+                        $(cell).addClass("selected_tmp");\r
+                    else\r
+                        $(cell).addClass("selected");\r
+                    break;\r
+                case "selected_tmp":\r
+                    $(cell).removeClass();\r
+                    if (IsTemp)\r
+                        $(cell).addClass("selected_tmp");\r
+                    else\r
+                        $(cell).addClass("selected");\r
+                    break;\r
+                case "selected":\r
+                    $(cell).removeClass();\r
+                    if (IsTemp)\r
+                        $(cell).addClass("free_tmp");\r
+                    else\r
+                        $(cell).addClass("free");\r
+                    break;\r
+                case "closed":\r
+                    //do nothing\r
+                    //alert("not allowed!");\r
+                    break;\r
+            }\r
+        }\r
+    }\r
+\r
+\r
+    /*if (dragEnd + 1 < dragStart) { // reverse select\r
+    //alert(1);\r
+    $("#tblReservation td:not([class='info'])").slice(dragEnd, dragStart + 1).addClass('selected');\r
+    } else {\r
+    alert(dragStart + "-" + dragEnd);\r
+    $("#tblReservation td:not([class='info'])").slice(dragStart, dragEnd).addClass('selected');\r
+    }*/\r
+\r
+\r
+    if (Debug) console.timeEnd("mouse:---selectRange");\r
+}\r
+\r
+function ClearTableSelection(){\r
+    $('#' + rsvrTblNm + ' .selected').addClass("free").removeClass("selected");\r
+}\r
+\r
+\r