var d = new Date(2014, 1, 1, 0, 0, 0, 0);\r
var i = 0;\r
while (d.getDate() == 1) {\r
- //var tmpTime = schedulerPadStr(d.getHours()) + schedulerPadStr(d.getMinutes());\r
- slots.push({ id: i, status: getRandomStatus() });\r
+ //slots.push({ id: i, status: getRandomStatus() });\r
+ slots.push({ id: i, status: "free" });\r
d = schedulerAddMinutes(d, slotSpan);\r
i++;\r
}\r
return slots;\r
}\r
\r
+//\r
+//GetSlotId from time\r
+function schedulerGetSlotId(startTime, duration, granularity) {\r
+ startTime = parseInt(startTime);\r
+ var d = new Date(startTime * 1000);\r
+ var timespan = 60 / schedulerSlotsPerHour;\r
+ var slotid = 0;\r
+ slotid += d.getHours() * schedulerSlotsPerHour;\r
+ slotid += d.getMinutes() / timespan;\r
+ return slotid;\r
+}\r
+//\r
+//Find Resource By Id\r
+function schedulerFindResourceById(Resources, id) {\r
+\r
+ for (var i = 0, len = Resources.length; i < len; i++) {\r
+ if (Resources[i].id == id)\r
+ return Resources[i]; // Return as soon as the object is found\r
+ }\r
+ return null; // The object was not found\r
+}\r
+\r
+//\r
+//for testing\r
function getRandomStatus() {\r
var randint = Math.floor(Math.random() * (10 - 0 + 1) + 0);\r
switch (randint) {\r
var SchedulerTotalVisibleCells;\r
//Help Variables\r
var _schedulerCurrentCellPosition = 0;\r
+var _leasesDone = false;\r
+var _resourcesDone = false;\r
//Enable Debug\r
-var schedulerDebug = true;\r
+var schedulerDebug = false;\r
+//tmp to delete\r
+var tmpSchedulerLeases = [];\r
\r
(function ($) {\r
var scheduler2 = Plugin.extend({\r
schedulerCtrlPressed = false;\r
}\r
});\r
- //$("#" + schedulerTblId).on('mousedown', 'td', rangeMouseDown).on('mouseup', 'td', rangeMouseUp).on('mousemove', 'td', rangeMouseMove);\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
//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({ name: data.hrn, leases: schedulerGetLeases(schedulerSlotsPerHour), urn: data.urn, type: data.type });\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
- /* GUI setup and event binding */\r
- this._initUI();\r
- //this.loadWithDate();\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
/* 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) { alert(data.toSource()); console.log('lease_new_record'); },\r
- on_lease_query_done: function (data) { console.log('lease_query_done'); },\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
/* INTERNAL FUNCTIONS */\r
- _initUI: function () {\r
+ _initScheduler: function () {\r
+ if (_resourcesDone && _leasesDone)\r
+ {\r
+ /* GUI setup and event binding */\r
+ this._FixLeases();\r
+ this._initUI();\r
+ }\r
+ },\r
+\r
+ _initUI : function () {\r
if (schedulerDebug) console.time("_initUI");\r
//init DatePicker Start\r
$("#DateToRes").datepicker({\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
+ }\r
+ }\r
+ },\r
+\r
_FixTable: function () {\r
var colWidth = 50;\r
SchedulerTotalCells = SchedulerSlots.length;\r
var tblwidth = $('#scheduler-tab').parent().outerWidth();\r
SchedulerTotalVisibleCells = parseInt((tblwidth - schedulerTblFirstColWidth) / colWidth);\r
\r
- if (SchedulerData.length == 0) {\r
- //puth some test data\r
- SchedulerData.push({ name: 'xyz+aaa', leases: schedulerGetLeases(60 / schedulerSlotsPerHour), urn: 'xyz+aaa', type: 'node' });\r
- SchedulerData.push({ name: 'xyz+bbb', leases: schedulerGetLeases(60 / schedulerSlotsPerHour), urn: 'xyz+bbb', type: 'node' });\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
+ //if (SchedulerData.length == 0) {\r
+ // //puth some test data\r
+ // SchedulerData.push({ name: 'xyz+aaa', leases: schedulerGetLeases(60 / schedulerSlotsPerHour), urn: 'xyz+aaa', type: 'node' });\r
+ // SchedulerData.push({ name: 'xyz+bbb', leases: schedulerGetLeases(60 / schedulerSlotsPerHour), urn: 'xyz+bbb', type: 'node' });\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
},\r
_SetPeriodInPage: function (start, end) {\r