var schedulerTblFirstColWidth = 150;\r
//Some Data\r
var schedulerSlotsPerHour = 6;\r
-var schedulerMaxRows = 50;\r
+var schedulerMaxRows = 12;\r
var SchedulerData = [];\r
var SchedulerSlots = [];\r
var SchedulerDataViewData = [];\r
var _leasesDone = false;\r
var _resourcesDone = false;\r
//Enable Debug\r
-var schedulerDebug = false;\r
+var schedulerDebug = true;\r
//tmp to delete\r
var tmpSchedulerLeases = [];\r
\r
this.classname="scheduler2";\r
// Call the parent constructor, see FAQ when forgotten\r
this._super(options, element);\r
+ // We need to remember the active filter for datatables filtering
+ this.filters = Array();\r
+\r
\r
SchedulerSlots = schedulerGetSlots(60/schedulerSlotsPerHour);\r
//selection from table \r
\r
if (schedulerDebug) console.time("Listening_to_queries");\r
/* Listening to queries */\r
- this.listen_query(options.query_uuid, 'all_ev');\r
+
+ this.listen_query(options.query_uuid);
+ this.listen_query(options.query_all_uuid, 'all');\r
this.listen_query(options.query_all_resources_uuid, 'all_resources');\r
this.listen_query(options.query_lease_uuid, 'lease');\r
//this.listen_query(options.query_lease_uuid, 'lease');\r
},\r
on_all_resources_new_record: function (data) {\r
//alert(data.toSource());\r
- if (SchedulerData.length < schedulerMaxRows)\r
- SchedulerData.push({ id: data.urn, name: data.hrn, leases: schedulerGetLeases(60 / schedulerSlotsPerHour), type: data.type });\r
+ if (data.exclusive == true){\r
+ SchedulerData.push({\r
+ id: data.urn,\r
+ index: SchedulerData.length,\r
+ name: data.hrn,\r
+ granularity: data.granularity,\r
+ leases: schedulerGetLeases(60 / schedulerSlotsPerHour),\r
+ type: data.type,\r
+ org_resource: data\r
+ });\r
+ if (schedulerDebug && SchedulerData[SchedulerData.length - 1].org_resource.network_hrn == 'omf') {\r
+ SchedulerData[SchedulerData.length - 1].granularity = 30;\r
+ }\r
+ }\r
//alert(data.toSource());\r
+\r
},\r
on_all_resources_query_done: function (data) {\r
_resourcesDone = true;\r
status: 'reserved',\r
resource: data.resource,\r
network: data.network,\r
- start_time: data.start_time,\r
+ start_time: new Date(data.start_time * 1000),\r
+ start_time_unixtimestamp: data.start_time,\r
lease_type: data.lease_type,\r
granularity: data.granularity,\r
duration: data.duration\r
\r
\r
// no prefix\r
-\r
on_filter_added: function (filter) {\r
-\r
+ this.filters.push(filter);\r
+ this._SetFiletredResources(this.filters);\r
+ //angular and UI\r
+ var tmpScope = angular.element(document.getElementById('SchedulerCtrl')).scope();\r
+ if (SchedulerDataViewData.length == 0) {\r
+ $("#plugin-scheduler").hide();\r
+ $("#plugin-scheduler-empty").show();\r
+ tmpScope.clearStuff();\r
+ } else {\r
+ $("#plugin-scheduler-empty").hide();\r
+ $("#plugin-scheduler").show();\r
+ tmpScope.initSchedulerResources(schedulerMaxRows < SchedulerDataViewData.length ? schedulerMaxRows : SchedulerDataViewData.length);\r
+ }\r
+ },
+
+ on_filter_removed: function (filter) {
+ // Remove corresponding filters
+ this.filters = $.grep(this.filters, function (x) {\r
+ return x == filter;\r
+ });\r
+ this._SetFiletredResources(this.filters);\r
+ //angular and UI\r
+ var tmpScope = angular.element(document.getElementById('SchedulerCtrl')).scope();\r
+ if (SchedulerDataViewData.length == 0) {\r
+ $("#plugin-scheduler").hide();\r
+ $("#plugin-scheduler-empty").show();\r
+ tmpScope.clearStuff();\r
+ } else {\r
+ $("#plugin-scheduler-empty").hide();\r
+ $("#plugin-scheduler").show();\r
+ tmpScope.initSchedulerResources(schedulerMaxRows < SchedulerDataViewData.length ? schedulerMaxRows : SchedulerDataViewData.length);\r
+ }\r
+ },
+
+ on_filter_clear: function () {\r
+ this.filters = [];\r
+ this._SetFiletredResources(this.filters);\r
+ //angular and UI\r
+ var tmpScope = angular.element(document.getElementById('SchedulerCtrl')).scope();\r
+ if (SchedulerDataViewData.length == 0) {\r
+ $("#plugin-scheduler").hide();\r
+ $("#plugin-scheduler-empty").show();\r
+ tmpScope.clearStuff();\r
+ } else {\r
+ $("#plugin-scheduler-empty").hide();\r
+ $("#plugin-scheduler").show();\r
+ tmpScope.initSchedulerResources(schedulerMaxRows < SchedulerDataViewData.length ? schedulerMaxRows : SchedulerDataViewData.length);\r
+ }\r
},\r
\r
// ... be sure to list all events here\r
_initScheduler: function () {\r
if (_resourcesDone && _leasesDone)\r
{\r
+ SchedulerDataViewData = SchedulerData;\r
/* GUI setup and event binding */\r
this._FixLeases();\r
this._initUI();\r
}\r
},\r
\r
- _initUI : function () {\r
+ _initUI: function () {\r
+ //alert(1);\r
if (schedulerDebug) console.time("_initUI");\r
//init DatePicker Start\r
$("#DateToRes").datepicker({\r
//init Slider\r
$('#tblSlider').slider({\r
min: 0,\r
- max: SchedulerTotalCells - SchedulerTotalVisibleCells - 1,\r
+ max: SchedulerTotalCells - SchedulerTotalVisibleCells,\r
value: 0,\r
slide: function (event, ui) {\r
//$("#amount").val("$" + ui.values[0] + " - $" + ui.values[1]);\r
//console.log(ui.value);\r
- if (_schedulerCurrentCellPosition > ui.value)\r
- angular.element(document.getElementById('SchedulerCtrl')).scope().moveBackSlot(ui.value, ui.value + SchedulerTotalVisibleCells);\r
- else if (_schedulerCurrentCellPosition < ui.value)\r
- angular.element(document.getElementById('SchedulerCtrl')).scope().moveFrontSlot(ui.value, ui.value + SchedulerTotalVisibleCells);\r
+ var angScope = angular.element(document.getElementById('SchedulerCtrl')).scope();\r
+ if (_schedulerCurrentCellPosition > ui.value) {\r
+ angScope.moveBackSlot(ui.value, ui.value + SchedulerTotalVisibleCells);\r
+ }\r
+ else if (_schedulerCurrentCellPosition < ui.value) {\r
+ angScope.moveFrontSlot(ui.value, ui.value + SchedulerTotalVisibleCells);\r
+ }\r
_schedulerCurrentCellPosition = ui.value;\r
}\r
});\r
//other stuff\r
$("#plugin-scheduler-loader").hide();\r
$("#plugin-scheduler").show();\r
-\r
//fixOddEvenClasses();\r
//$("#" + schedulerTblId + " td:not([class])").addClass("free");\r
if (schedulerDebug) console.timeEnd("_initUI");\r
_FixTable: function () {\r
var colWidth = 50;\r
SchedulerTotalCells = SchedulerSlots.length;\r
- $('#' + schedulerTblId + ' thead tr th:eq(0)').css("width", schedulerTblFirstColWidth);\r
+ $('#' + schedulerTblId + ' thead tr th:eq(0)').css("width", schedulerTblFirstColWidth); //.css("display", "block");\r
//this get width might need fix depending on the template \r
var tblwidth = $('#scheduler-tab').parent().outerWidth();\r
SchedulerTotalVisibleCells = parseInt((tblwidth - schedulerTblFirstColWidth) / colWidth);\r
// SchedulerData.push({ name: 'xyz+ccc', leases: schedulerGetLeases(60 / schedulerSlotsPerHour), urn: 'xyz+ccc', type: 'node' });\r
// SchedulerData.push({ name: 'nitos1', leases: schedulerGetLeases(60 / schedulerSlotsPerHour), urn: 'nitos1', type: 'node' });\r
//}\r
- angular.element(document.getElementById('SchedulerCtrl')).scope().initSlots(0, SchedulerTotalVisibleCells);\r
+ var tmpScope = angular.element(document.getElementById('SchedulerCtrl')).scope();\r
+ tmpScope.initSchedulerResources(schedulerMaxRows < SchedulerDataViewData.length ? schedulerMaxRows : SchedulerDataViewData.length);\r
+\r
+ },\r
+\r
+ _SetFiletredResources : function (filters) {\r
+ if (filters.length > 0) {\r
+ SchedulerDataViewData = new Array();\r
+ var tmpAddIt = true;\r
+ for (var i = 0; i < SchedulerData.length; i++) {\r
+ loopfilters:\r
+ for (var f = 0; f < filters.length; f++) {\r
+ tmpAddIt = this._FilterResource(SchedulerData[i], filters[f]);\r
+ if (tmpAddIt == false) break loopfilters;\r
+ }\r
+ if (tmpAddIt) {\r
+ SchedulerDataViewData.push(SchedulerData[i]);\r
+ }\r
+ }\r
+ } else {\r
+ SchedulerDataViewData = SchedulerData;\r
+ }\r
},\r
+\r
+ _FilterResource: function (resource, filter) {\r
+ var key = filter[0];\r
+ var op = filter[1];\r
+ var value = filter[2];\r
+ var colValue = resource.org_resource[key];\r
+ var ret = true;\r
+ if (schedulerDebug && colValue == 'omf') colValue = 'nitos';\r
+\r
+ if (op == '=' || op == '==') {\r
+ if (colValue != value || colValue == null || colValue == "" || colValue == "n/a")
+ ret = false;\r
+ } else if (op == 'included') {\r
+ $.each(value, function (i, x) {\r
+ if (x == colValue) {\r
+ ret = true;\r
+ return false;\r
+ } else {\r
+ ret = false;\r
+ }\r
+ });\r
+ } else if (op == '!=') {\r
+ if (colValue == value || colValue == null || colValue == "" || colValue == "n/a")
+ ret = false;\r
+ }\r
+\r
+ return ret;\r
+ },\r
+\r
_SetPeriodInPage: function (start, end) {\r
}\r
});\r