* 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
var totalCell = "";\r
for (var i = 0; i < totalColums; i++) totalCell +="<td></td>"; \r
var srt_body = "";\r
-\r
+ \r
$.each(SchedulerResources, function (i, group) {\r
+ console.log(group.groupName);\r
//var groupTR = $("#ShedulerNodes tbody").html('<tr><td class="no-image verticalIndex" rowspan="' + group.resources.length + '"><div class="verticalText">' + group.groupName + '</div></td><td id="schdlr_frstTD" class="info fixed"></td></tr>');\r
- var groupTR = $("#ShedulerNodes tbody").html('<tr><td class="no-image verticalIndex" rowspan="' + 30 + '"><div class="verticalText">' + group.groupName + '</div></td><td id="schdlr_frstTD" class="info fixed"></td></tr>');\r
+ //var groupTR = $("#ShedulerNodes tbody").html('<tr><td class="no-image verticalIndex" rowspan="' + 30 + '"><div class="verticalText">' + group.groupName + '</div></td><td id="schdlr_frstTD" class="info fixed"></td></tr>');\r
+ var groupTR = $("#ShedulerNodes tbody").html('<tr><td id="schdlr_frstTD" class="info fixed"></td></tr>');\r
\r
- $.each(group.resources.slice(0,30), function (i, resource) {\r
+ //$.each(group.resources.slice(0,30), function (i, resource) {\r
+ $.each(group.resources, function (i, resource) {\r
if (i == 0) {\r
//$("#ShedulerNodes tbody tr:first").append('<td class="info fixed">' + resource.hostname + '</td>');\r
- $(groupTR).find("#schdlr_frstTD").html(resource.hostname);\r
+ $(groupTR).find("#schdlr_frstTD").html(resource.urn);\r
//$(srt_body).html("<tr>" + totalCell + "</tr>");\r
} else {\r
- $(groupTR).find("tr:last").after('<tr><td class="info fixed">' + resource.hostname + '</td></tr>');\r
+ $(groupTR).find("tr:last").after('<tr><td class="info fixed">' + resource.urn + '</td></tr>');\r
//$(srt_body).find("tr:last").after("<tr>" + totalCell + "</tr>");\r
}\r
srt_body += "<tr>" + totalCell + "</tr>";\r
//data is empty on load\r
},\r
on_all_resources_new_record: function (data) {\r
+ //console.log(data);\r
var tmpGroup = lookup(SchedulerResources, 'groupName', data.type);\r
if (tmpGroup == null) {\r
tmpGroup = { groupName: data.type, resources: [] };\r
},\r
/* all_resources QUERY HANDLERS End */\r
/* lease QUERY HANDLERS Start */\r
- on_lease_clear_records: function (data) { alert('clear_records'); },\r
- on_lease_query_in_progress: function (data) { alert('query_in_progress'); },\r
- on_lease_new_record: function (data) { alert('new_record'); },\r
- on_lease_query_done: function (data) { alert('query_done'); },\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) { console.log('lease_new_record'); },\r
+ on_lease_query_done: function (data) { console.log('lease_query_done'); },\r
//another plugin has modified something, that requires you to update your display. \r
- on_lease_field_state_changed: function (data) { alert('query_done'); },\r
+ on_lease_field_state_changed: function (data) { console.log('lease_field_state_changed'); },\r
/* lease QUERY HANDLERS End */\r
\r
\r
from plugins.googlemap import GoogleMap
from plugins.queryupdater import QueryUpdater
from plugins.testbeds import TestbedsPlugin
+from plugins.scheduler2 import Scheduler2
from theme import ThemeView
main_query_init_key = 'urn'
aq = AnalyzedQuery(main_query, metadata=metadata)
page.enqueue_query(main_query, analyzed_query=aq)
+ sq_resource = aq.subquery('resource')
+ sq_lease = aq.subquery('lease')
query_resource_all = Query.get('resource').select(resource_fields)
page.enqueue_query(query_resource_all)
- sq_resource = aq.subquery('resource')
- sq_lease = aq.subquery('lease')
+ # leases query
+ lease_md = metadata.details_by_object('lease')
+ lease_fields = [column['name'] for column in lease_md['column']]
+
+ query_all_lease = Query.get('lease').select(lease_fields)
+ page.enqueue_query(query_all_lease)
+
+ print "!!!!!!!!!! query leases = ",query_all_lease
# --------------------------------------------------------------------------
- # RESOURCES
+ # RESOURCES LIST
# resources as a list using datatable plugin
list_resources = QueryTable(
)
# --------------------------------------------------------------------------
- # RESOURCES
+ # RESOURCES MAP
# the resources part is made of a Tabs (Geographic, List),
map_resources = GoogleMap(
zoom = 4,
)
+ # --------------------------------------------------------------------------
+ # LEASES Nitos Scheduler
+ # Display the leases reservation timeslots of the resources
+
+ resources_as_scheduler2 = Scheduler2(
+ page = page,
+ domid = 'scheduler',
+ title = 'Scheduler',
+ # this is the query at the core of the slice list
+ query = sq_resource,
+ query_all_resources = query_resource_all,
+ query_lease = query_all_lease,
+ )
+
# --------------------------------------------------------------------------
# QueryUpdater (Pending Operations)
network_md = metadata.details_by_object('network')
network_fields = [column['name'] for column in network_md['column']]
- print "sliceresourceview.py ====> ",network_fields
query_network = Query.get('network').select(network_fields)
page.enqueue_query(query_network)
template_env['list_resources'] = list_resources.render(self.request)
template_env['filter_testbeds'] = filter_testbeds.render(self.request)
template_env['map_resources'] = map_resources.render(self.request)
+ template_env['scheduler'] = resources_as_scheduler2.render(self.request)
template_env['pending_resources'] = pending_resources.render(self.request)
template_env["theme"] = self.theme
template_env["username"] = request.user