X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fcore%2Fxoslib%2Fstatic%2Fjs%2FxosAdminSite.js;h=f5c756692c7cbea0e253ca3ffb74b58f0503dbfc;hb=23728671481acb47aee46826a35e8dca289ed8d1;hp=d265630f913cff45224edd223460f8ac32a89431;hpb=119eeed7783d2e26805685527eb779083dd10f9f;p=plstackapi.git diff --git a/planetstack/core/xoslib/static/js/xosAdminSite.js b/planetstack/core/xoslib/static/js/xosAdminSite.js index d265630..f5c7566 100644 --- a/planetstack/core/xoslib/static/js/xosAdminSite.js +++ b/planetstack/core/xoslib/static/js/xosAdminSite.js @@ -1,4 +1,5 @@ -OBJS = ['deployment', 'image', 'networkTemplate', 'network', 'networkSliver', 'networkDeployment', 'node', 'service', 'site', 'slice', 'sliceDeployment', 'slicePrivilege', 'sliver', 'user', 'sliceRole', 'userDeployment']; +OBJS = ['deployment', 'image', 'networkTemplate', 'network', 'networkSliver', 'node', 'service', 'site', 'slice', 'slicePrivilege', 'sliver', 'user', 'sliceRole', 'flavor', 'controller', 'siteDeployment']; +// 'networkDeployment', 'userDeployment', 'sliceDeployment', 'imageDeployment' NAV_OBJS = ['deployment', 'site', 'slice', 'user']; REWRITES = {"/admin/core/deployment/": "#deployments", @@ -21,21 +22,20 @@ XOSAdminApp.addRegions({ linkedObjs3: "#linkedObjs3", linkedObjs4: "#linkedObjs4", - addChildDetail: "#xos-addchild-detail" + addChildDetail: "#xos-addchild-detail", + + rightButtonPanel: "#rightButtonPanel" }); -XOSAdminApp.navigateToModel = function(app, detailClass, detailNavLink, model) { - XOSAdminApp.Router.navigate(detailNavLink + "/" + model.id, {trigger: true}); -}; - XOSAdminApp.navigate = function(what, modelName, modelId) { + console.log("XOSAsminApp.navigate"); collection_name = modelName + "s"; if (what=="list") { XOSAdminApp.Router.navigate(collection_name, {trigger: true}) } else if (what=="detail") { XOSAdminApp.Router.navigate(collection_name + "/" + modelId, {trigger: true}) } else if (what=="add") { - XOSAdminApp.Router.navigate("add" + firstCharUpper(modelName), {trigger: true}) + XOSAdminApp.Router.navigate("add" + firstCharUpper(modelName), {trigger: true, force: true}) } } @@ -61,35 +61,82 @@ XOSAdminApp.updateNavigationPanel = function() { }; XOSAdminApp.buildViews = function() { + genericAddChildClass = XOSDetailView.extend({template: "#xos-add-template", + app: XOSAdminApp}); + XOSAdminApp["genericAddChildView"] = genericAddChildClass; + + genericDetailClass = XOSDetailView.extend({template: "#xos-detail-template", + app: XOSAdminApp}); + XOSAdminApp["genericDetailView"] = genericDetailClass; + + genericItemViewClass = XOSItemView.extend({template: "#xos-listitem-template", + app: XOSAdminApp}); + XOSAdminApp["genericItemView"] = genericItemViewClass; + + //genericListViewClass = XOSListView.extend({template: "#xos-list-template", + // app: XOSAdminApp}); + + genericListViewClass = XOSDataTableView.extend({template: "#xos-list-template", app: XOSAdminApp}); + XOSAdminApp["genericListView"] = genericListViewClass; + for (var index in OBJS) { name = OBJS[index]; tr_template = '#xosAdmin-' + name + '-listitem-template'; table_template = '#xosAdmin-' + name + '-list-template'; detail_template = '#xosAdmin-' + name + '-detail-template'; + add_child_template = '#xosAdmin-' + name + '-add-child-template'; collection_name = name + "s"; region_name = name + "List"; - detailNavLink = collection_name; - detailClass = XOSDetailView.extend({ - template: detail_template, - app: XOSAdminApp, - }); + if (window["XOSDetailView_" + name]) { + detailClass = window["XOSDetailView_" + name].extend({template: "#xos-detail-template", + app: XOSAdminApp}); + } else { + detailClass = genericDetailClass; + } + if ($(detail_template).length) { + detailClass = detailClass.extend({ + template: detail_template, + }); + } XOSAdminApp[collection_name + "DetailView"] = detailClass; - - itemViewClass = XOSItemView.extend({ - detailClass: detailClass, - template: tr_template, - app: XOSAdminApp, - detailNavLink: detailNavLink, - }); - - listViewClass = XOSListView.extend({ - childView: itemViewClass, - template: table_template, - collection: xos[collection_name], - title: name + "s", - app: XOSAdminApp, - }); + + if (window["XOSDetailView_" + name]) { + addClass = window["XOSDetailView_" + name].extend({template: "#xos-add-template", + app: XOSAdminApp}); + } else { + addClass = genericAddChildClass; + } + if ($(add_child_template).length) { + addClass = detailClass.extend({ + template: add_child_template, + }); + } + XOSAdminApp[collection_name + "AddChildView"] = addClass; + + if ($(tr_template).length) { + itemViewClass = XOSItemView.extend({ + template: tr_template, + app: XOSAdminApp, + }); + } else { + itemViewClass = genericItemViewClass; + } + + if ($(table_template).length) { + listViewClass = XOSListView.extend({ + childView: itemViewClass, + template: table_template, + collection: xos[collection_name], + title: name + "s", + app: XOSAdminApp, + }); + } else { + listViewClass = genericListViewClass.extend( { childView: itemViewClass, + collection: xos[collection_name], + title: name + "s", + } ); + } XOSAdminApp[collection_name + "ListView"] = listViewClass; @@ -109,6 +156,7 @@ XOSAdminApp.initRouter = function() { api_command = "list" + firstCharUpper(collection_name); listViewName = collection_name + "ListView"; detailViewName = collection_name + "DetailView"; + addChildViewName = collection_name + "AddChildView"; api[api_command] = XOSAdminApp.createListHandler(listViewName, collection_name, "detail", collection_name); routes[nav_url] = api_command; @@ -126,7 +174,7 @@ XOSAdminApp.initRouter = function() { nav_url = "addChild" + firstCharUpper(name) + "/:parentModel/:parentField/:parentId"; api_command = "addChild" + firstCharUpper(name); - api[api_command] = XOSAdminApp.createAddChildHandler(detailViewName, collection_name); + api[api_command] = XOSAdminApp.createAddChildHandler(addChildViewName, collection_name); routes[nav_url] = api_command; nav_url = "delete" + firstCharUpper(name) + "/:id"; @@ -135,6 +183,8 @@ XOSAdminApp.initRouter = function() { routes[nav_url] = api_command; }; + routes["*part"] = "listSlices"; + XOSAdminApp.Router = new router({ appRoutes: routes, controller: api }); };