fixed duplicated leases
[myslice.git] / plugins / scheduler2 / static / js / scheduler2.js
index 0150830..fbfcfa0 100755 (executable)
@@ -313,7 +313,7 @@ var SCHEDULER_COLWIDTH = 50;
                     }\r
         \r
                     $scope._create_new_lease(model_resource.urn, start_time, end_time);\r
-                    model_lease.status = 'pendingin'; \r
+                    model_lease.status = (model_lease.status == 'free') ? 'pendingin' : 'selected';\r
                     // unless the exact same lease already existed (pending_out status for the lease, not the cell !!)\r
 \r
                     break;\r
@@ -351,7 +351,7 @@ var SCHEDULER_COLWIDTH = 50;
                     }\r
                 \r
                     // cf comment in previous switch case\r
-                    model_lease.status = 'pendingout'; \r
+                    model_lease.status = (model_lease.status == 'selected') ? 'pendingout' : 'free';\r
 \r
                     break;\r
 \r
@@ -599,8 +599,17 @@ var SCHEDULER_COLWIDTH = 50;
                         scope._leases_by_resource[lease.resource] = [];\r
                     scope._leases_by_resource[lease.resource].push(lease);\r
 \r
-                    self._set_lease_slots(lease_key, lease);\r
+                });\r
 \r
+                this._set_all_lease_slots();\r
+            },\r
+\r
+            _set_all_lease_slots: function()\r
+            {\r
+                var self = this;\r
+            \r
+                manifold.query_store.iter_records(this.options.query_lease_uuid, function(lease_key, lease) {\r
+                    self._set_lease_slots(lease_key, lease);\r
                 });\r
             },\r
 \r
@@ -682,7 +691,7 @@ var SCHEDULER_COLWIDTH = 50;
 \r
                 resource = this.scope_resources_by_key[lease.resource];\r
                 day_timestamp = SchedulerDateSelected.getTime() / 1000;\r
-                id_start = (lease.start_time - day_timestamp) / resource.granularity;\r
+                id_start = Math.floor((lease.start_time - day_timestamp) / resource.granularity);\r
 \r
                 /* Some leases might be in the past */\r
                 if (id_start < 0)\r
@@ -691,14 +700,14 @@ var SCHEDULER_COLWIDTH = 50;
                 if (id_start >= this._all_slots.length)\r
                     return true; // ~ continue\r
 \r
-                id_end   = (lease.end_time   - day_timestamp) / resource.granularity - 1;\r
+                id_end   = Math.ceil((lease.end_time   - day_timestamp) / resource.granularity);\r
                 colspan_lease = resource.granularity / this._granularity; //eg. 3600 / 1800 => 2 cells\r
                 if (id_end >= this._all_slots.length / colspan_lease) {\r
                     /* Limit the display to the current day */\r
                     id_end = this._all_slots.length / colspan_lease\r
                 }\r
 \r
-                for (i = id_start; i <= id_end; i++) {\r
+                for (i = id_start; i < id_end; i++) {\r
                     // the same slots might be affected multiple times.\r
                     // PENDING_IN + PENDING_OUT => IN \r
                     //\r
@@ -735,7 +744,11 @@ var SCHEDULER_COLWIDTH = 50;
                             lease_success = '';\r
                             break;\r
                         case STATE_SET_OUT_PENDING:\r
-                            lease_class = 'pendingout';\r
+                            // pending_in & pending_out == IN == replacement\r
+                            if (resource.leases[i].status == 'pendingin')\r
+                                lease_class = 'pendingin'\r
+                            else\r
+                                lease_class = 'pendingout';\r
                             lease_success = '';\r
                             break;\r
                     \r
@@ -776,7 +789,7 @@ var SCHEDULER_COLWIDTH = 50;
                     $('#tblSlider').slider('setValue', 0); // XXX\r
                     // Refresh leases\r
                     self._scope_clear_leases();\r
-                    self._scope_set_leases();\r
+                    self._set_all_lease_slots();\r
                     // Refresh display\r
                     self._get_scope().$apply();\r
                 }).datepicker('setValue', SchedulerDateSelected); //.data('datepicker');\r