fixed scheduler to display past slots as disabled
authorJordan Augé <jordan.auge@lip6.fr>
Tue, 15 Jul 2014 10:36:10 +0000 (12:36 +0200)
committerJordan Augé <jordan.auge@lip6.fr>
Tue, 15 Jul 2014 10:36:10 +0000 (12:36 +0200)
plugins/scheduler2/static/css/scheduler2.css
plugins/scheduler2/static/img/forbidden.png [new file with mode: 0644]
plugins/scheduler2/static/js/scheduler2.js

index b16eb80..2fcf063 100755 (executable)
     cursor: not-allowed;\r
 }\r
 \r
+#scheduler-reservation-table tbody tr td.disabled {\r
+    background: url("../img/forbidden.png") no-repeat scroll 50% 50%; /* #DD4444;*/\r
+    cursor: not-allowed;\r
+}\r
+\r
 #scheduler-reservation-table tbody tr td.success {\r
        content: "✓";\r
 }\r
diff --git a/plugins/scheduler2/static/img/forbidden.png b/plugins/scheduler2/static/img/forbidden.png
new file mode 100644 (file)
index 0000000..fba5664
Binary files /dev/null and b/plugins/scheduler2/static/img/forbidden.png differ
index fbfcfa0..b8c761a 100755 (executable)
@@ -495,6 +495,7 @@ var SCHEDULER_COLWIDTH = 50;
             do_resize: function()\r
             {\r
                 var scope = this._get_scope();\r
+                var num_hidden_cells, new_max;\r
 \r
                 $('#' + schedulerTblId + ' thead tr th:eq(0)').css("width", SCHEDULER_FIRST_COLWIDTH);\r
                 //self get width might need fix depending on the template \r
@@ -511,12 +512,15 @@ var SCHEDULER_COLWIDTH = 50;
                 scope.lcm_colspan = this._lcm_colspan;\r
 \r
                 // Slider max value\r
-\r
                 if ($('#tblSlider').data('slider') != undefined) {\r
-                    var new_max = (this._all_slots.length - this._num_visible_cells) / this._lcm_colspan;\r
-                    $('#tblSlider').slider('setAttribute', 'max', new_max);\r
+                    num_hidden_cells = this._all_slots.length - this._num_visible_cells;\r
+\r
+                    $('#tblSlider').slider('setAttribute', 'max', num_hidden_cells);\r
+                    $('#tblSlider').slider('setValue', scope.from, true);\r
+                    this._get_scope().$apply();\r
                 }\r
 \r
+\r
             },\r
 \r
             on_show: function(e)\r
@@ -567,18 +571,23 @@ var SCHEDULER_COLWIDTH = 50;
 \r
             _scope_clear_leases: function()\r
             {\r
+                var time, now;\r
                 var self = this;\r
                 var scope = this._get_scope();\r
 \r
+                now = new Date().getTime();\r
+\r
                 // Setup leases with a default free status...\r
                 $.each(this.scope_resources_by_key, function(resource_key, resource) {\r
                     resource.leases = [];\r
                     var colspan_lease = resource.granularity / self._granularity; //eg. 3600 / 1800 => 2 cells\r
+                    time = SchedulerDateSelected.getTime();\r
                     for (i=0; i < self._all_slots.length / colspan_lease; i++) { // divide by granularity\r
                         resource.leases.push({\r
                             id:     'coucou',\r
-                            status: 'free', // 'selected', 'reserved', 'maintenance' XXX pending ??\r
+                            status: (time < now) ? 'disabled':  'free', // 'selected', 'reserved', 'maintenance' XXX pending ??\r
                         });\r
+                        time += resource.granularity * 1000;\r
                     }\r
                 });\r
 \r
@@ -777,6 +786,9 @@ var SCHEDULER_COLWIDTH = 50;
             _initUI: function() \r
             {\r
                 var self = this;\r
+                var scope = self._get_scope();\r
+\r
+                var num_hidden_cells;\r
 \r
                 $("#DateToRes").datepicker({\r
                     onRender: function(date) {\r
@@ -795,15 +807,22 @@ var SCHEDULER_COLWIDTH = 50;
                 }).datepicker('setValue', SchedulerDateSelected); //.data('datepicker');\r
 \r
                 //init Slider\r
+                num_hidden_cells = self._all_slots.length - self._num_visible_cells;\r
+                init_cell = (new Date().getHours() - 1) * 3600 / self._granularity;\r
+                if (init_cell > num_hidden_cells)\r
+                    init_cell = num_hidden_cells;\r
+                \r
                 $('#tblSlider').slider({\r
                     min: 0,\r
-                    max: (self._all_slots.length - self._num_visible_cells) / self._lcm_colspan,\r
-                    value: 0,\r
+                    max: num_hidden_cells, // / self._lcm_colspan,\r
+                    value: init_cell,\r
                 }).on('slide', function(ev) {\r
                     var scope = self._get_scope();\r
                     scope.from = ev.value * self._lcm_colspan;\r
                     scope.$apply();\r
                 });\r
+                scope.from = init_cell;\r
+                scope.$apply();\r
 \r
                 $("#plugin-scheduler-loader").hide();\r
                 $("#plugin-scheduler").show();\r