"click button.btn-tenant-delete": "deleteClicked",
"click button.btn-tenant-add-user": "addUserClicked",
"click button.btn-tenant-save": "saveClicked",
+ "click button.btn-tenant-download-ssh": "downloadClicked",
},
createClicked: function(e) {
XOSTenantApp.editUsers(this.options.linkedView.model);
},
+ downloadClicked: function(e) {
+ XOSTenantApp.downloadSSH(this.options.linkedView.model);
+ },
+
saveClicked: function(e) {
model = this.options.linkedView.model;
model.tenantSiteCollection.putToSlice(model);
logTableId: "#logTable",
statusMsgId: "#statusMsg",
hideTabsByDefault: true,
+ dirty: false,
varName: "XOSTenantApp",
});
tenantButtons: "#tenantButtons",
tenantAddSliceInterior: "#tenant-addslice-interior",
tenantEditUsersInterior: "#tenant-edit-users-interior",
+ tenantSSHCommandsInterior: "#tenant-ssh-commands-interior",
});
XOSTenantApp.setDirty = function(dirty) {
+ XOSTenantApp.dirty = dirty;
if (dirty) {
$("button.btn-tenant-save").addClass("btn-success");
} else {
var editDialog = this;
user_ids = all_options($("#tenant-edit-users-dialog").find(".select-picker-to"));
user_ids = user_ids.map( function(x) { return parseInt(x,10); } );
+ if (!array_same_elements(user_ids, model.usersBuffer)) {
+ XOSTenantApp.setDirty(true);
+ }
model.usersBuffer = user_ids;
$(editDialog).dialog("close");
},
$("#tenant-edit-users-dialog").dialog("open");\r
};\r
\r
+XOSTenantApp.downloadSSHOld = function(model) {\r
+ sshCommands = "";\r
+ for (index in model.attributes.sliceInfo.sshCommands) {\r
+ sshCommand = model.attributes.sliceInfo.sshCommands[index];\r
+ sshCommands = sshCommands + sshCommand + "\n";\r
+ }\r
+\r
+ if (sshCommands.length == 0) {\r
+ alert("this slice has no instantiated slivers yet");\r
+ return;\r
+ }\r
+\r
+ var myWindow = window.open("", "ssh_command_list",""); // "width=640, height=480");\r
+ myWindow.document.write("<html><head><title>SSH Commands</title></head><body><pre>" + sshCommands + "</pre></body></html>");\r
+ myWindow.document.close();\r
+};\r
+\r
+XOSTenantApp.downloadSSH = function(model) {\r
+ sshCommands = "";\r
+ for (index in model.attributes.sliceInfo.sshCommands) {\r
+ sshCommand = model.attributes.sliceInfo.sshCommands[index];\r
+ sshCommands = sshCommands + sshCommand + "\n";\r
+ }\r
+\r
+ if (sshCommands.length == 0) {\r
+ alert("this slice has no instantiated slivers yet");\r
+ return;\r
+ }\r
+\r
+ var htmlView = new HTMLView({html: '<pre style="overflow: auto; word-wrap: normal; white-space: pre; word-wrap: normal;">' + sshCommands + '</pre>'});\r
+ XOSTenantApp.tenantSSHCommandsInterior.show(htmlView);\r
+\r
+ $("#tenant-ssh-commands-dialog").dialog({\r
+ autoOpen: false,
+ modal: true,
+ width: 640,
+ buttons : {
+ "Ok" : function() {
+ $(this).dialog("close");
+ },
+ }
+ });
+ $("#tenant-ssh-commands-dialog").dialog("open");\r
+};\r
+\r
XOSTenantApp.deleteSlice = function(model) {\r
var app=this;\r
app.deleteDialog(model, function() { console.log("afterDelete"); app.viewSlice(undefined); });\r
};\r
\r
XOSTenantApp.viewSlice = function(model) {\r
+ if (XOSTenantApp.dirty) {\r
+ if (!confirm("The current sliver has unsaved data -- view new sliver anyway ?")) {\r
+ $("#tenantSliceSelector select").val(XOSTenantApp.currentSlice.id);\r
+ return;\r
+ }\r
+ }\r
+\r
+ XOSTenantApp.setDirty(false);\r
+\r
if (!model && xos.slicesPlus.models.length > 0) {\r
model = xos.slicesPlus.models[0];\r
}\r
\r
XOSTenantApp.tenantButtons.show( new XOSTenantButtonView( { app: XOSTenantApp,\r
linkedView: tenantSummary } ) );\r
+\r
+ XOSTenantApp.currentSlice = model;\r
} else {\r
XOSTenantApp.tenantSliceSelector.show(new HTMLView({html: ""}));\r
XOSTenantApp.tenantSummary.show(new HTMLView({html: "You have no slices"}));\r