X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fcore%2Fxoslib%2Fstatic%2Fjs%2Fxoslib%2FxosHelper.js;h=7392843e32df088cafdbd051025e757d5ab47eae;hb=058ff324def456d1e4f2d85069b91f6cfc1108eb;hp=07ae9a9164241b682a71db5749c988781fd53696;hpb=a8f51083a554b27676f0b194a67cd7b123962998;p=plstackapi.git diff --git a/planetstack/core/xoslib/static/js/xoslib/xosHelper.js b/planetstack/core/xoslib/static/js/xoslib/xosHelper.js index 07ae9a9..7392843 100644 --- a/planetstack/core/xoslib/static/js/xoslib/xosHelper.js +++ b/planetstack/core/xoslib/static/js/xoslib/xosHelper.js @@ -4,6 +4,21 @@ HTMLView = Marionette.ItemView.extend({ }, }); +FilteredCompositeView = Marionette.CompositeView.extend( { + showCollection: function() { + var ChildView; + this.collection.each(function(child, index) { + filterFunc = this.options.filter || this.filter; + if (filterFunc && !filterFunc(child)) { + return; + } + ChildView = this.getChildView(child); + this.addChild(child, ChildView, index); + }, this); + + }, +}); + SliceSelectorOption = Marionette.ItemView.extend({ template: "#xos-sliceselector-option", tagName: "option", @@ -16,7 +31,7 @@ SliceSelectorOption = Marionette.ItemView.extend({ }, }); -SliceSelectorView = Marionette.CompositeView.extend({ +SliceSelectorView = FilteredCompositeView.extend({ template: "#xos-sliceselector-select", childViewContainer: "select", childView: SliceSelectorOption, @@ -39,20 +54,6 @@ SliceSelectorView = Marionette.CompositeView.extend({ templateHelpers: function() { return {caption: this.options.caption || this.caption }; }, }); -FilteredCompositeView = Marionette.CompositeView.extend( { - showCollection: function() { - var ChildView; - this.collection.each(function(child, index) { - if (this.filter && !this.filter(child)) { - return; - } - ChildView = this.getChildView(child); - this.addChild(child, ChildView, index); - }, this); - - }, -}); - XOSRouter = Marionette.AppRouter.extend({ initialize: function() { this.routeStack=[]; @@ -475,7 +476,7 @@ XOSDetailView = Marionette.ItemView.extend({ */ initialize: function() { - this.on("saveSuccess", this.onAfterSave); + this.on("saveSuccess", this.onSaveSuccess); this.synchronous = false; }, @@ -485,11 +486,20 @@ XOSDetailView = Marionette.ItemView.extend({ }); }, + saveSuccess: function(e) { + // always called after a save succeeds + }, + afterSave: function(e) { + // if this.synchronous, then called after the save succeeds + // if !this.synchronous, then called after save is initiated }, - onAfterSave: function(e) { - this.afterSave(e); + onSaveSuccess: function(e) { + this.saveSuccess(e); + if (this.synchronous) { + this.afterSave(e); + } }, inputChanged: function(e) { @@ -559,9 +569,7 @@ XOSDetailView = Marionette.ItemView.extend({ this.model.save(data, {error: function(model, result, xhr) { that.app.saveError(model,result,xhr,infoMsgId);}, success: function(model, result, xhr) { that.app.saveSuccess(model,result,xhr,infoMsgId); - if (that.synchronous) { - that.trigger("saveSuccess"); - } + that.trigger("saveSuccess"); }}); this.dirty = false; @@ -665,6 +673,7 @@ XOSDetailView = Marionette.ItemView.extend({ model: this.model, detailView: this, choices: this.options.choices || this.choices || this.model.choices || {}, + helpText: this.options.helpText || this.helpText || this.model.helpText || {}, }}, }); @@ -875,6 +884,7 @@ XOSDataTableView = Marionette.View.extend( { render: function() { var view = this; + var fieldDisplayNames = view.options.fieldDisplayNames || view.fieldDisplayNames || {}; view.columnsByIndex = []; view.columnsByFieldName = {}; @@ -882,7 +892,7 @@ XOSDataTableView = Marionette.View.extend( { inputType = view.options.inputType || view.inputType || {}; mRender = undefined; mSearchText = undefined; - sTitle = fieldNameToHumanReadable(fieldName); + sTitle = fieldName in fieldDisplayNames ? fieldDisplayNames[fieldName] : fieldNameToHumanReadable(fieldName); bSortable = true; if (fieldName=="backend_status") { mRender = function(x,y,z) { return xosBackendStatusIconTemplate(z); }; @@ -913,6 +923,8 @@ XOSDataTableView = Marionette.View.extend( { "bJQueryUI": true, "bStateSave": true, "bServerSide": true, + "bFilter": ! (view.options.disableFilter || view.disableFilter), + "bPaginate": ! (view.options.disablePaginate || view.disablePaginate), "aoColumns": view.columnsByIndex, fnServerData: function(sSource, aoData, fnCallback, settings) { @@ -1005,7 +1017,9 @@ XOSDataTableView = Marionette.View.extend( { aaData.sort(function(a,b) { return compareColumns(sortCols, sortDirs, a, b); }); // slice it for pagination - aaData = aaData.slice(iDisplayStart, iDisplayStart+iDisplayLength); + if (iDisplayLength >= 0) { + aaData = aaData.slice(iDisplayStart, iDisplayStart+iDisplayLength); + } return fnCallback({iTotalRecords: totalSize, iTotalDisplayRecords: filteredSize,