successTemplate: "#xos-success-template",
logMessageCount: 0,
+ confirmDialog: function(view, event) {
+ $("#xos-confirm-dialog").dialog({
+ autoOpen: false,\r
+ modal: true,\r
+ buttons : {\r
+ "Confirm" : function() {\r
+ $(this).dialog("close");\r
+ view.trigger(event);\r
+ },\r
+ "Cancel" : function() {\r
+ $(this).dialog("close");\r
+ }\r
+ }\r
+ });
+ $("#xos-confirm-dialog").dialog("open");
+ },
+
hideError: function() {
if (this.logWindowId) {
} else {
return function() {\r
model = new xos[collection_name].model();\r
detailViewClass = app[detailName];\r
- detailView = new detailViewClass({model: model});\r
+ detailView = new detailViewClass({model: model, collection:xos[collection_name]});\r
app[regionName].show(detailView);\r
$("#xos-detail-button-box").show();\r
$("#xos-listview-button-box").hide();\r
events: {"click button.btn-xos-save-continue": "submitContinueClicked",
"click button.btn-xos-save-leave": "submitLeaveClicked",
"click button.btn-xos-save-another": "submitAddAnotherClicked",
+ "click button.btn-xos-delete": "deleteClicked",
"change input": "inputChanged"},
+ initialize: function() {
+ this.on('deleteConfirmed', this.deleteConfirmed);
+ },
+
/* 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\r
if the user tries to change his slices without saving first.\r
this.app.showSuccess(result);\r
},
+ destroyError: function(model, result, xhr, infoMsgId) {
+ result["what"] = "destroy " + model.__proto__.modelName;\r
+ result["infoMsgId"] = infoMsgId;\r
+ this.app.showError(result);\r
+ },\r
+\r
+ destroySuccess: function(model, result, xhr, infoMsgId) {\r
+ result = {status: xhr.xhr.status, statusText: xhr.xhr.statusText};\r
+ result["what"] = "destroy " + model.__proto__.modelName;\r
+ result["infoMsgId"] = infoMsgId;\r
+ this.app.showSuccess(result);\r
+ },
+
submitContinueClicked: function(e) {
console.log("saveContinue");
e.preventDefault();
console.log("saveLeave");
e.preventDefault();
this.save();
- this.app.Router.navigate(this.listNavLink, {trigger: true});
- console.log("route to " + this.listNavLink);
+ this.app.navigate("list", this.model.modelName);
},
submitAddAnotherClicked: function(e) {
console.log("saveAnother");
e.preventDefault();
this.save();
+ this.app.navigate("add", this.model.modelName);
},
save: function() {
var infoMsgId = this.app.showInformational( {what: "save " + this.model.__proto__.modelName, status: "", statusText: "in progress..."} );\r
var data = Backbone.Syphon.serialize(this);\r
var that = this;\r
+ var isNew = !this.model.id;\r
this.model.save(data, {error: function(model, result, xhr) { that.saveError(model,result,xhr,infoMsgId);},\r
success: function(model, result, xhr) { that.saveSuccess(model,result,xhr,infoMsgId);}});\r
+ if (isNew) {\r
+ console.log(this.model);\r
+ this.collection.add(this.model);\r
+ this.collection.sort();\r
+ }\r
this.dirty = false;\r
},
+ destroyModel: function() {
+ this.app.hideError();
+ var infoMsgId = this.app.showInformational( {what: "destroy " + this.model.__proto__.modelName, status: "", statusText: "in progress..."} );
+ var that = this;
+ this.model.destroy({error: function(model, result, xhr) { that.destroyError(model,result,xhr,infoMsgId);},
+ success: function(model, result, xhr) { that.destroySuccess(model,result,xhr,infoMsgId);}});
+ },
+
+ deleteClicked: function(e) {
+ e.preventDefault();
+\r this.app.confirmDialog(this, "deleteConfirmed");
+\r },
+\r
+\r deleteConfirmed: function() {
+\r modelName = this.model.modelName;
+\r this.destroyModel();
+\r this.app.navigate("list", modelName);
+\r },
+\r
tabClick: function(tabId, regionName) {
region = this.app[regionName];\r
if (this.currentTabRegion != undefined) {\r
childViewContainer: 'tbody',\r
\r
events: {"click button.btn-xos-add": "addClicked",\r
- },
-
+ "click button.btn-xos-refresh": "refreshClicked",\r
+ },\r
+\r
+ _fetchStateChange: function() {\r
+ if (this.collection.fetching) {\r
+ $("#xos-list-title-spinner").show();\r
+ } else {\r
+ $("#xos-list-title-spinner").hide();\r
+ }\r
+ },\r
+\r
addClicked: function(e) {
- console.log("add");
e.preventDefault();
this.app.Router.navigate("add" + firstCharUpper(this.collection.modelName), {trigger: true});
},
\r
- initialize: function() {\r
- this.listenTo(this.collection, 'change', this._renderChildren)
+\r refreshClicked: function(e) {
+\r e.preventDefault();
+\r this.collection.refresh(refreshRelated=true);
+\r },
+\r
+\r initialize: function() {
+\r this.listenTo(this.collection, 'change', this._renderChildren)
+ this.listenTo(this.collection, 'fetchStateChange', this._fetchStateChange);
// Because many of the templates use idToName(), we need to
// listen to the collections that hold the names for the ids