From: Scott Baker Date: Tue, 4 Nov 2014 07:54:00 +0000 (-0800) Subject: modify test.js to use navigateToModel; move code out to xosHelper.js X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=e80625ad138e83b6df82784d0ad90964b730d9f0;p=plstackapi.git modify test.js to use navigateToModel; move code out to xosHelper.js --- diff --git a/planetstack/core/xoslib/static/js/test.js b/planetstack/core/xoslib/static/js/test.js index c0f4146..f657fa3 100644 --- a/planetstack/core/xoslib/static/js/test.js +++ b/planetstack/core/xoslib/static/js/test.js @@ -18,7 +18,23 @@ TestApp.addRegions({ linkedObjs4: "#linkedObjs4" }); -TestApp.on("start", function() { +//TestApp.navigateToDetail = function(detailView) { +// $(TestApp.detailBoxId).show(); +// TestApp.detail.show(detailView); +//}; + +TestApp.navigateToModel = function(app, detailClass, detailNavLink, model) { + + var detailView = new detailClass({ + model: model, + }); + + $(app.detailBoxId).show(); + app.detail.show(detailView); + detailView.showLinkedItems(); +}; + +TestApp.on("start", function() { var objs = ['deployment', 'image', 'networkTemplate', 'network', 'networkSliver', 'networkDeployment', 'node', 'service', 'site', 'slice', 'sliceDeployment', 'slicePrivilege', 'sliver', 'user', 'sliceRole', 'userDeployment']; for (var index in objs) { @@ -29,106 +45,23 @@ TestApp.on("start", function() { collection_name = name + "s"; region_name = name + "List"; - detailClass = Marionette.ItemView.extend({ + detailClass = XOSDetailView.extend({ template: detail_template, - tagName: 'div', - - events: {"click button.js-submit": "submitClicked", - "change input": "inputChanged"}, - - /* inputChanged is watching the onChange events of the input controls. We - do this to track when this view is 'dirty', so we can throw up a warning - if the user tries to change his slices without saving first. - */ - - inputChanged: function(e) { - this.dirty = true; - }, - - saveError: function(model, result, xhr) { - TestApp.showError(result); - }, - - saveSuccess: function(model, result, xhr) { - TestApp.showSuccess({status: xhr.xhr.status, statusText: xhr.xhr.statusText}); - }, - - submitClicked: function(e) { - TestApp.hideError(); - e.preventDefault(); - var data = Backbone.Syphon.serialize(this); - var thisView = this; - this.model.save(data, {error: function(model, result, xhr) { thisView.saveError(model, result, xhr); }, - success: function(model, result, xhr) { thisView.saveSuccess(model, result, xhr); }}); - this.dirty = false; - }, - }); + app: TestApp, + }); - itemViewClass = Marionette.ItemView.extend({ + itemViewClass = XOSItemView.extend({ detailClass: detailClass, template: tr_template, - tagName: 'tr', - className: 'test-tablerow', - - events: {"click": "changeItem"}, - - changeItem: function(e) { - TestApp.hideError(); - e.preventDefault(); - e.stopPropagation(); - - index=0; - for (relatedName in this.model.collection.relatedCollections) { - relatedField = this.model.collection.relatedCollections[relatedName]; - - relatedListViewClassName = relatedName + "ListView"; - if (TestApp[relatedListViewClassName] == undefined) { - console.log("warning: " + relatedListViewClassName + " not found"); - } - relatedListViewClass = TestApp[relatedListViewClassName].extend({collection: xos[relatedName].filterBy(relatedField,this.model.id)}); - TestApp["linkedObjs" + (index+1)].show(new relatedListViewClass()); - index = index + 1; - } - - while (index<4) { - TestApp["linkedObjs" + (index+1)].empty(); - index = index + 1; - } - - var detailView = new this.detailClass({ - model: this.model, - }); - $('#detailBox').show(); - TestApp.detail.show(detailView); - }, + app: TestApp, }); - listViewClass = Marionette.CompositeView.extend({ + listViewClass = XOSListView.extend({ childView: itemViewClass, - childViewContainer: 'tbody', template: table_template, collection: xos[collection_name], title: name + "s", - - initialize: function() { - this.listenTo(this.collection, 'change', this._renderChildren) - - // Because many of the templates use idToName(), we need to - // listen to the collections that hold the names for the ids - // that we want to display. - for (i in this.collection.foreignCollections) { - foreignName = this.collection.foreignCollections[i]; - if (xos[foreignName] == undefined) { - console.log("Failed to find xos class " + foreignName); - } - this.listenTo(xos[foreignName], 'change', this._renderChildren); - this.listenTo(xos[foreignName], 'sort', this._renderChildren); - } - }, - - templateHelpers: function() { - return { title: this.title }; - }, + app: TestApp, }); TestApp[collection_name + "ListView"] = listViewClass;