*/\r
\r
/* some params */\r
+var scheduler2;\r
+var scheduler2Instance;\r
//is ctrl keyboard button pressed\r
var schedulerCtrlPressed = false;\r
//table Id\r
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 SchedulerDateSelected = new Date();\r
var SchedulerDataViewData = [];\r
var SchedulerSlotsViewData = [];\r
var SchedulerTotalCells;\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
-(function ($) {\r
- var scheduler2 = Plugin.extend({\r
+(function($) {\r
+ scheduler2 = Plugin.extend({\r
\r
- /** XXX to check\r
+ /** XXX to check\r
* @brief Plugin constructor\r
* @param options : an associative array of setting values\r
* @param element : \r
* @return : a jQuery collection of objects on which the plugin is\r
* applied, which allows to maintain chainability of calls\r
*/\r
- init: function (options, element) {\r
- this.classname="scheduler2";\r
- // Call the parent constructor, see FAQ when forgotten\r
- this._super(options, element);\r
-\r
- SchedulerSlots = schedulerGetSlots(60/schedulerSlotsPerHour);\r
- //selection from table \r
- $(window).keydown(function (evt) {\r
- if (evt.which == 17) { // ctrl\r
- schedulerCtrlPressed = true;\r
+ init: function(options, element) {\r
+ this.classname = "scheduler2";\r
+ // Call the parent constructor, see FAQ when forgotten\r
+ this._super(options, element);\r
+ scheduler2Instance = this;\r
+ // We need to remember the active filter for datatables filtering\r
+ this.filters = Array();\r
+\r
+\r
+ SchedulerSlots = schedulerGetSlots(60 / schedulerSlotsPerHour);\r
+ //selection from table \r
+ $(window).keydown(function(evt) {\r
+ if (evt.which == 17) { // ctrl\r
+ schedulerCtrlPressed = true;\r
+ }\r
+ }).keyup(function(evt) {\r
+ if (evt.which == 17) { // ctrl\r
+ schedulerCtrlPressed = false;\r
+ }\r
+ });\r
+ $("#" + schedulerTblId).on('mousedown', 'td', rangeMouseDown).on('mouseup', 'td', rangeMouseUp).on('mousemove', 'td', rangeMouseMove);\r
+\r
+ // Explain this will allow query events to be handled\r
+ // What happens when we don't define some events ?\r
+ // Some can be less efficient\r
+\r
+ if (schedulerDebug) console.time("Listening_to_queries");\r
+ /* Listening to queries */\r
+\r
+ this.listen_query(options.query_uuid);\r
+ 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
+ if (schedulerDebug) console.timeEnd("Listening_to_queries");\r
+\r
+ },\r
+\r
+ /* Handlers */\r
+\r
+ /* all_ev QUERY HANDLERS Start */\r
+ on_all_ev_clear_records: function(data) {\r
+ //alert('all_ev clear_records');\r
+ },\r
+ on_all_ev_query_in_progress: function(data) {\r
+ // alert('all_ev query_in_progress');\r
+ },\r
+ on_all_ev_new_record: function(data) {\r
+ //alert('all_ev new_record');\r
+ },\r
+ on_all_ev_query_done: function(data) {\r
+ //alert('all_ev query_done');\r
+ },\r
+ //another plugin has modified something, that requires you to update your display. \r
+ on_all_ev_field_state_changed: function(data) {\r
+ //alert('all_ev query_done');\r
+ },\r
+ /* all_ev QUERY HANDLERS End */\r
+ /* all_resources QUERY HANDLERS Start */\r
+ on_all_resources_clear_records: function(data) {\r
+ //data is empty on load\r
+ },\r
+ on_all_resources_query_in_progress: function(data) {\r
+ //data is empty on load\r
+ },\r
+ on_all_resources_new_record: function(data) {\r
+ //alert(data.toSource());\r
+ if (data.exclusive == true) {\r
+ var tmpGran = schedulerDebug && data.granularity == null ? 1800 : data.granularity;\r
+ SchedulerData.push({\r
+ id: data.urn,\r
+ index: SchedulerData.length,\r
+ name: data.hrn,\r
+ granularity: tmpGran,\r
+ leases: schedulerGetLeases(60 / schedulerSlotsPerHour, tmpGran),\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 = 1800;\r
+ }*/\r
}\r
- }).keyup(function (evt) {\r
- if (evt.which == 17) { // ctrl\r
- schedulerCtrlPressed = false;\r
+ //alert(data.toSource());\r
+\r
+ },\r
+ on_all_resources_query_done: function(data) {\r
+ _resourcesDone = true;\r
+ this._initScheduler();\r
+ },\r
+ //another plugin has modified something, that requires you to update your display. \r
+ on_all_resources_field_state_changed: function(data) {\r
+ //alert('all_resources query_done');\r
+ },\r
+ /* all_resources QUERY HANDLERS End */\r
+ /* lease QUERY HANDLERS Start */\r
+ on_lease_clear_records: function(data) { console.log('clear_records'); },\r
+ on_lease_query_in_progress: function(data) { console.log('lease_query_in_progress'); },\r
+ on_lease_new_record: function(data) {\r
+ if (data.resource.indexOf("nitos") > -1) {\r
+ tmpSchedulerLeases.push({\r
+ id: schedulerGetSlotId(data.start_time, data.duration, data.granularity),\r
+ end_id: schedulerGetSlotId(data.end_time, data.duration, data.granularity),\r
+ slice: data.slice,\r
+ status: 'reserved',\r
+ resource: data.resource,\r
+ network: data.network,\r
+ start_time: new Date(data.start_time * 1000),\r
+ start_time_unixtimestamp: data.start_time,\r
+ end_time: new Date(data.end_time * 1000),\r
+ end_time_unixtimestamp: data.end_time,\r
+ lease_type: data.lease_type,\r
+ granularity: data.granularity,\r
+ duration: data.duration\r
+ });\r
}\r
- });\r
- $("#" + schedulerTblId).on('mousedown', 'td', rangeMouseDown).on('mouseup', 'td', rangeMouseUp).on('mousemove', 'td', rangeMouseMove);\r
-\r
- // Explain this will allow query events to be handled\r
- // What happens when we don't define some events ?\r
- // Some can be less efficient\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_all_resources_uuid, 'all_resources');\r
- this.listen_query(options.query_lease_uuid, 'lease');\r
- //this.listen_query(options.query_lease_uuid, 'lease');\r
- if (schedulerDebug) console.timeEnd("Listening_to_queries");\r
-\r
- },\r
-\r
- /* Handlers */\r
-\r
- /* all_ev QUERY HANDLERS Start */\r
- on_all_ev_clear_records: function (data) {\r
- //alert('all_ev clear_records');\r
- },\r
- on_all_ev_query_in_progress: function (data) {\r
- // alert('all_ev query_in_progress');\r
- },\r
- on_all_ev_new_record: function (data) {\r
- //alert('all_ev new_record');\r
- },\r
- on_all_ev_query_done: function (data) {\r
- //alert('all_ev query_done');\r
- },\r
- //another plugin has modified something, that requires you to update your display. \r
- on_all_ev_field_state_changed: function (data) {\r
- //alert('all_ev query_done');\r
- },\r
- /* all_ev QUERY HANDLERS End */\r
- /* all_resources QUERY HANDLERS Start */\r
- on_all_resources_clear_records: function (data) {\r
- //data is empty on load\r
- },\r
- on_all_resources_query_in_progress: function (data) {\r
- //data is empty on load\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
- //alert(data.toSource());\r
- },\r
- on_all_resources_query_done: function (data) {\r
- _resourcesDone = true;\r
- this._initScheduler();\r
- },\r
- //another plugin has modified something, that requires you to update your display. \r
- on_all_resources_field_state_changed: function (data) {\r
- //alert('all_resources query_done');\r
- },\r
- /* all_resources QUERY HANDLERS End */\r
- /* lease QUERY HANDLERS Start */\r
- on_lease_clear_records: function (data) { console.log('clear_records'); },\r
- on_lease_query_in_progress: function (data) { console.log('lease_query_in_progress'); },\r
- on_lease_new_record: function (data) {\r
- tmpSchedulerLeases.push({\r
- id: schedulerGetSlotId(data.start_time, data.duration, data.granularity),\r
- slice: data.slice,\r
- status: 'reserved',\r
- resource: data.resource,\r
- network: data.network,\r
- start_time: data.start_time,\r
- lease_type: data.lease_type,\r
- granularity: data.granularity,\r
- duration: data.duration\r
- });\r
- //console.log(data.toSource()); console.log('lease_new_record');\r
- },\r
- on_lease_query_done: function (data) {\r
- _leasesDone = true;\r
- this._initScheduler();\r
- // console.log('lease_query_done');\r
- },\r
- //another plugin has modified something, that requires you to update your display. \r
- on_lease_field_state_changed: function (data) { console.log('lease_field_state_changed'); },\r
- /* lease QUERY HANDLERS End */\r
-\r
-\r
- // no prefix\r
-\r
- on_filter_added: function (filter) {\r
-\r
- },\r
-\r
- // ... be sure to list all events here\r
+ //console.log(data.toSource()); console.log('lease_new_record');\r
+ },\r
+ on_lease_query_done: function(data) {\r
+ _leasesDone = true;\r
+ this._initScheduler();\r
+ // console.log('lease_query_done');\r
+ },\r
+ //another plugin has modified something, that requires you to update your display. \r
+ on_lease_field_state_changed: function(data) { console.log('lease_field_state_changed'); },\r
+ /* lease QUERY HANDLERS End */\r
+\r
+\r
+ // no prefix\r
+ on_filter_added: function(filter) {\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
+ },\r
+\r
+ on_filter_removed: function(filter) {\r
+ // Remove corresponding filters\r
+ 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
+ },\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
- /* RECORD HANDLERS */\r
- on_all_new_record: function (record) {\r
- //alert('on_all_new_record');\r
- },\r
+ on_lease_filter_added: function(filter) {\r
+ console.log("Filter on Leases added !");\r
+ },\r
\r
- debug : function (logTxt) {\r
- if (typeof window.console != 'undefined') {\r
- console.debug(logTxt);\r
- }\r
- },\r
+ // ... be sure to list all events here\r
\r
- /* INTERNAL FUNCTIONS */\r
- _initScheduler: function () {\r
- if (_resourcesDone && _leasesDone)\r
- {\r
- /* GUI setup and event binding */\r
- this._FixLeases();\r
- this._initUI();\r
- }\r
- },\r
+ /* RECORD HANDLERS */\r
+ on_all_new_record: function(record) {\r
+ //alert('on_all_new_record');\r
+ },\r
\r
- _initUI : function () {\r
- if (schedulerDebug) console.time("_initUI");\r
- //init DatePicker Start\r
- $("#DateToRes").datepicker({\r
- dateFormat: "yy-mm-dd",\r
- minDate: 0,\r
- numberOfMonths: 3\r
- }).change(function () {\r
- //Scheduler2.loadWithDate();\r
- }).click(function () {\r
- $("#ui-datepicker-div").css("z-index", 5);\r
- });\r
- //End init DatePicker\r
- \r
- //init Table\r
- this._FixTable();\r
- //End init Table\r
-\r
- //init Slider\r
- $('#tblSlider').slider({\r
- min: 0,\r
- max: SchedulerTotalCells - SchedulerTotalVisibleCells - 1,\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
- _schedulerCurrentCellPosition = ui.value;\r
+ debug: function(logTxt) {\r
+ if (typeof window.console != 'undefined') {\r
+ console.debug(logTxt);\r
}\r
- });\r
- //End init Slider\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
- },\r
+ },\r
+\r
+ /* INTERNAL FUNCTIONS */\r
+ _initScheduler: function() {\r
+ if (_resourcesDone && _leasesDone) {\r
+ SchedulerDataViewData = SchedulerData;\r
+ /* GUI setup and event binding */\r
+ this._FixLeases();\r
+ this._initUI();\r
+ }\r
+ },\r
+\r
+ _initUI: function() {\r
+ //alert(1);\r
+ if (schedulerDebug) console.time("_initUI");\r
+ //init DatePicker Start\r
+ $("#DateToRes").datepicker({\r
+ dateFormat: "yy-mm-dd",\r
+ minDate: 0,\r
+ numberOfMonths: 3\r
+ }).change(function() {\r
+ //Scheduler2.loadWithDate();\r
+ SchedulerDateSelected = $("#DateToRes").datepicker("getDate");\r
+ if (SchedulerDateSelected != null && SchedulerDateSelected != '') {\r
+ for (var i = 0; i < SchedulerData.length; i++) {\r
+ SchedulerData[i].leases = schedulerGetLeases(60 / schedulerSlotsPerHour, SchedulerData[i].granularity);\r
+ }\r
+ scheduler2Instance._FixLeases();\r
+ $('#tblSlider').slider('value', 0);\r
+ var tmpScope = angular.element(document.getElementById('SchedulerCtrl')).scope();\r
+ tmpScope.initSchedulerResources(schedulerMaxRows < SchedulerDataViewData.length ? schedulerMaxRows : SchedulerDataViewData.length);\r
+\r
+ console.log(SchedulerDateSelected);\r
+ console.log(SchedulerDateSelected.getTime()/1000);\r
+ var tomorrow = new Date(SchedulerDateSelected);\r
+ tomorrow.setDate(SchedulerDateSelected.getDate()+1);\r
+ console.log(tomorrow);\r
+ console.log(tomorrow.getTime()/1000);\r
+ \r
+ // Remove previous date interval\r
+ manifold.raise_event(scheduler2Instance.options.query_lease_uuid, FILTER_REMOVED, ['start_time', '>']);\r
+ manifold.raise_event(scheduler2Instance.options.query_lease_uuid, FILTER_REMOVED, ['start_time', '<']);\r
+\r
+ // Add new date interval\r
+ manifold.raise_event(scheduler2Instance.options.query_lease_uuid, FILTER_ADDED, ['start_time', '>', SchedulerDateSelected.getTime()/1000]);\r
+ manifold.raise_event(scheduler2Instance.options.query_lease_uuid, FILTER_ADDED, ['start_time', '<', tomorrow.getTime()/1000]);\r
+ } else {\r
+ alert("Please select a date, so the scheduler can reserve leases.");\r
+ }\r
+ }).datepicker('setDate', SchedulerDateSelected);\r
+ /*.click(function () {\r
+ $("#ui-datepicker-div").css("z-index", 5);\r
+ })*/\r
+ //End init DatePicker\r
+\r
+ //init Table\r
+ this._FixTable();\r
+ //End init Table\r
+\r
+ //init Slider\r
+ $('#tblSlider').slider({\r
+ min: 0,\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
+ var angScope = angular.element(document.getElementById('SchedulerCtrl')).scope();\r
+ if (_schedulerCurrentCellPosition > ui.value) {\r
+ angScope.moveBackSlot(ui.value, ui.value + SchedulerTotalVisibleCells);\r
+ } else if (_schedulerCurrentCellPosition < ui.value) {\r
+ angScope.moveFrontSlot(ui.value, ui.value + SchedulerTotalVisibleCells);\r
+ }\r
+ _schedulerCurrentCellPosition = ui.value;\r
+ }\r
+ });\r
+ //End init Slider\r
+\r
+\r
+ //btn Submit leases\r
+ $('#btnSchedulerSubmit').click(function () {\r
+ var leasesForCommit = new Array();\r
+ var newLeaseStarted = false;\r
+ var tmpDateTime = SchedulerDateSelected;\r
+ for (var i = 0; i < SchedulerData.length; i++)\r
+ {\r
+ var tpmR = SchedulerData[i];\r
+ for (var j = 0; j < tpmR.leases.length; j++) {\r
+ var tpmL = tpmR.leases[j];\r
+ if (newLeaseStarted == false && tpmL.status == 'selected') {\r
+ //get date of the slot\r
+ tmpDateTime = schedulerGetDateTimeFromSlotId(tpmL.id, tmpDateTime);\r
+ var unixStartTime = tmpDateTime.getTime() / 1000;\r
+ //add lease object\r
+ leasesForCommit.push({\r
+ resource: tpmR.id,\r
+ granularity: tpmR.granularity,\r
+ lease_type: null,\r
+ slice: null,\r
+ start_time: unixStartTime,\r
+ end_time: null,\r
+ duration: null\r
+ });\r
+ newLeaseStarted = true;\r
+ } else if (newLeaseStarted == true && tpmL.status != 'selected') {\r
+ //get date of the slot\r
+ tmpDateTime = schedulerGetDateTimeFromSlotId(tpmL.id, tmpDateTime);\r
+ var unixEndTime = tmpDateTime.getTime() / 1000;\r
+ //upate end_time\r
+ var tmpCL = leasesForCommit[leasesForCommit.length - 1];\r
+ tmpCL.end_time = unixEndTime;\r
+ tmpCL.duration = schedulerFindDuration(tmpCL.start_time, tmpCL.end_time, tmpCL.granularity);\r
+ newLeaseStarted = false;\r
+ }\r
+ }\r
+ }\r
+\r
+ for (var i = 0; i < leasesForCommit.length; i++) {\r
+ //manifold.raise_event(scheduler.options.query_lease_uuid, SET_ADD, leasesForCommit[i]);\r
+ }\r
+ });\r
+ //\r
+\r
+\r
+ //End btn Submit leases\r
+\r
+ //other stuff\r
+ $("#plugin-scheduler-loader").hide();\r
+ $("#plugin-scheduler").show();\r
+ //fixOddEvenClasses();\r
+ //$("#" + schedulerTblId + " td:not([class])").addClass("free");\r
+ if (schedulerDebug) console.timeEnd("_initUI");\r
+ },\r
\r
_FixLeases : function () {\r
for (var i = 0; i < tmpSchedulerLeases.length; i++) {\r
var tmpLea = tmpSchedulerLeases[i];\r
- var tmpRes = schedulerFindResourceById(SchedulerData, tmpLea.resource);\r
- if (tmpRes != null) {\r
- //alert(tmpLea.id + '-' + tmpLea.start_time);\r
- tmpRes.leases[tmpLea.id] = tmpLea;\r
+ if ((schedulerCompareOnDay(tmpLea.start_time, SchedulerDateSelected) == 0) ||\r
+ (tmpLea.start_time <= SchedulerDateSelected && SchedulerDateSelected <= tmpLea.end_time) || \r
+ (schedulerCompareOnDay(tmpLea.end_time, SchedulerDateSelected) == 0)) {\r
+ var tmpRes = schedulerFindResourceById(SchedulerData, tmpLea.resource);\r
+ if (tmpRes != null) {\r
+ //Replace Lease with current lease from the manifold\r
+ var orgLease = tmpRes.leases[tmpLea.id];\r
+ tmpLea['groupid'] = orgLease.groupid;\r
+ tmpLea['groupIndex'] = orgLease.groupIndex;\r
+ if (orgLease.groupIndex != 0) {\r
+ if (!window.console) {\r
+ console.warn('there is an error with the leases of the resource :' + tmpRes.name + '\n The lease start in the middle of the granularity!' + '\n The Scheduler plugin might not work!');\r
+ }\r
+ }\r
+ tmpRes.leases[tmpLea.id] = tmpLea;\r
+ this._ExtractLeaseSlots(tmpRes, tmpRes.leases[tmpLea.id]);\r
+ }\r
}\r
}\r
},\r
\r
+ _ExtractLeaseSlots: function (tmpRes, lease) {\r
+ var tmpStartDate = lease.start_time;\r
+ var tmpEndDate = lease.end_time;\r
+ var startLoop; var toLoop;\r
+ if (schedulerCompareOnDay(lease.start_time,lease.end_time) == 0) {\r
+ //in the same date\r
+ startLoop = lease.id;\r
+ toLoop = lease.end_id;\r
+ } else if (lease.start_time < SchedulerDateSelected && SchedulerDateSelected < lease.end_time) {\r
+ //one hole day (more than 3days)\r
+ startLoop = 0;\r
+ toLoop = tmpRes.leases.length;\r
+ } else if (schedulerCompareOnDay(lease.start_time, SchedulerDateSelected) == 0) {\r
+ //the same day and extends\r
+ startLoop = lease.id;\r
+ toLoop = tmpRes.leases.length;\r
+ } else if (schedulerCompareOnDay(lease.end_time, SchedulerDateSelected) == 0) {\r
+ //extends to the last say\r
+ startLoop = 0;\r
+ toLoop = lease.end_id;\r
+ }\r
+ //var minutGran = tmpRes.granularity * 60;\r
+ for (var li = lease.id; li < toLoop; li++) {\r
+ tmpRes.leases[li].status = 'reserved';\r
+ }\r
+ \r
+ //reserved\r
+ //tmpRes.leases[tmpLea.id\r
+ },\r
+\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")\r
+ 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")\r
+ ret = false;\r
+ }\r
+\r
+ return ret;\r
+ },\r
+\r
_SetPeriodInPage: function (start, end) {\r
}\r
});\r