move stuff out of test and into xosHelper.js for better code reuse
diff --git a/planetstack/core/xoslib/static/js/test.js b/planetstack/core/xoslib/static/js/test.js
index 9de80b7..c0f4146 100644
--- a/planetstack/core/xoslib/static/js/test.js
+++ b/planetstack/core/xoslib/static/js/test.js
@@ -1,4 +1,4 @@
-TestApp = new Marionette.Application();
+TestApp = new XOSApplication();
TestApp.addRegions({
deploymentList: "#deploymentList",
@@ -18,59 +18,6 @@
linkedObjs4: "#linkedObjs4"
});
-TestApp.hideError = function(result) {
- $("#errorBox").hide();
- $("#successBox").hide();
-};
-
-TestApp.showSuccess = function(result) {
- $("#successBox").show();
- $("#successBox").html(_.template($("#test-success-template").html())(result));
- $('#close-success-box').unbind().bind('click', function() {
- $('#successBox').hide();
- });
-};
-
-TestApp.showError = function(result) {
- $("#errorBox").show();
- $("#errorBox").html(_.template($("#test-error-template").html())(result));
- $('#close-error-box').unbind().bind('click', function() {
- $('#errorBox').hide();
- });
-};
-
-idToName = function(id, collectionName, fieldName) {
- linkedObject = xos[collectionName].get(id);
- if (linkedObject == undefined) {
- return "#" + id;
- } else {
- return linkedObject.attributes[fieldName];
- }
-};
-
-idToOptions = function(id, collectionName, fieldName) {
- result=""
- for (index in xos[collectionName].models) {
- linkedObject = xos[collectionName].models[index];
- linkedId = linkedObject["id"];
- linkedName = linkedObject.attributes[fieldName];
- if (linkedId == id) {
- selected = " selected";
- } else {
- selected = "";
- }
- result = result + '<option value="' + linkedId + '"' + selected + '>' + linkedName + '</option>';
- }
- return result;
-};
-
-idToSelect = function(variable, id, collectionName, fieldName) {
- result = '<select name="' + variable + '">' +
- idToOptions(id, collectionName, fieldName) +
- '</select>';
- return result;
-}
-
TestApp.on("start", function() {
var objs = ['deployment', 'image', 'networkTemplate', 'network', 'networkSliver', 'networkDeployment', 'node', 'service', 'site', 'slice', 'sliceDeployment', 'slicePrivilege', 'sliver', 'user', 'sliceRole', 'userDeployment'];
diff --git a/planetstack/core/xoslib/static/js/xoslib/xosHelper.js b/planetstack/core/xoslib/static/js/xoslib/xosHelper.js
new file mode 100644
index 0000000..c799794
--- /dev/null
+++ b/planetstack/core/xoslib/static/js/xoslib/xosHelper.js
@@ -0,0 +1,81 @@
+XOSApplication = Marionette.Application.extend({
+ errorBoxId: "#errorBox",
+ errorCloseButtonId: "#close-error-box",
+ successBoxId: "#successBox",
+ successCloseButtonId: "#close-success-box",
+ errorTemplate: "#xos-error-template",
+ successTemplate: "#xos-success-template",
+
+ hideError: function(result) {
+ $(this.errorBoxId).hide();
+ $(this.successBoxId).hide();
+ },
+
+ showSuccess: function(result) {
+ $(this.successBoxId).show();
+ $(this.successBoxId).html(_.template($(this.successTemplate).html())(result));
+ $(this.successCloseButtonId).unbind().bind('click', function() {
+ $(this.successBoxId).hide();
+ });
+ },
+
+ showError: function(result) {
+ $(this.errorBoxId).show();
+ $(this.errorBoxId).html(_.template($(this.errorTemplate).html())(result));
+ $(this.errorCloseButtonId).unbind().bind('click', function() {
+ $(this.errorBoxId).hide();
+ });
+ },
+});
+
+/* Give an id, the name of a collection, and the name of a field for models
+ within that collection, lookup the id and return the value of the field.
+*/
+
+idToName = function(id, collectionName, fieldName) {
+ linkedObject = xos[collectionName].get(id);
+ if (linkedObject == undefined) {
+ return "#" + id;
+ } else {
+ return linkedObject.attributes[fieldName];
+ }
+};
+
+/* Constructs lists of <option> html blocks for items in a collection.
+
+ selectedId = the id of an object that should be selected, if any
+ collectionName = name of collection
+ fieldName = name of field within models of collection that will be displayed
+*/
+
+idToOptions = function(selectedId, collectionName, fieldName) {
+ result=""
+ for (index in xos[collectionName].models) {
+ linkedObject = xos[collectionName].models[index];
+ linkedId = linkedObject["id"];
+ linkedName = linkedObject.attributes[fieldName];
+ if (linkedId == selectedId) {
+ selected = " selected";
+ } else {
+ selected = "";
+ }
+ result = result + '<option value="' + linkedId + '"' + selected + '>' + linkedName + '</option>';
+ }
+ return result;
+};
+
+/* Constructs an html <select> and the <option>s to go with it.
+
+ variable = variable name to return to form
+ selectedId = the id of an object that should be selected, if any
+ collectionName = name of collection
+ fieldName = name of field within models of collection that will be displayed
+*/
+
+idToSelect = function(variable, selectedId, collectionName, fieldName) {
+ result = '<select name="' + variable + '">' +
+ idToOptions(selectedId, collectionName, fieldName) +
+ '</select>';
+ return result;
+}
+