*/\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 schedulerMaxRows = 12;\r
var SchedulerData = [];\r
var SchedulerSlots = [];\r
+var SchedulerDateSelected = new Date();\r
var SchedulerDataViewData = [];\r
var SchedulerSlotsViewData = [];\r
var SchedulerTotalCells;\r
var tmpSchedulerLeases = [];\r
\r
(function ($) {\r
- var scheduler2 = Plugin.extend({\r
+ scheduler2 = Plugin.extend({\r
\r
/** XXX to check\r
* @brief Plugin constructor\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
this.filters = Array();\r
\r
index: SchedulerData.length,\r
name: data.hrn,\r
granularity: data.granularity,\r
- leases: schedulerGetLeases(60 / schedulerSlotsPerHour),\r
+ leases: schedulerGetLeases(60 / schedulerSlotsPerHour, data.granularity),\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
+ SchedulerData[SchedulerData.length - 1].granularity = 1800;\r
}\r
}\r
//alert(data.toSource());\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: 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
+ 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
//console.log(data.toSource()); console.log('lease_new_record');\r
},\r
on_lease_query_done: function (data) {\r
numberOfMonths: 3\r
}).change(function () {\r
//Scheduler2.loadWithDate();\r
- }).click(function () {\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
+ } 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
+ })*/\r
//End init DatePicker\r
\r
//init Table\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