readonly fields, wip
diff --git a/planetstack/core/xoslib/static/js/xoslib/xos-backbone.js b/planetstack/core/xoslib/static/js/xoslib/xos-backbone.js
index f24bcbc..f02aed8 100644
--- a/planetstack/core/xoslib/static/js/xoslib/xos-backbone.js
+++ b/planetstack/core/xoslib/static/js/xoslib/xos-backbone.js
@@ -320,13 +320,9 @@
attrs.addFields = attrs.detailFields;
}
- if (!attrs.inputType) {
- attrs.inputType = {};
- }
-
- if (!attrs.foreignFields) {
- attrs.foreignFields = {};
- }
+ attrs.inputType = attrs.inputType || {};
+ attrs.foreignFields = attrs.foreignFields || {};
+ attrs.readOnlyFields = attrs.readOnlyFields || [];
if (!attrs.collectionName) {
attrs.collectionName = modelName + "s";
@@ -342,7 +338,7 @@
modelAttrs[key] = value;
collectionAttrs[key] = value;
}
- if ($.inArray(key, ["validate", "preSave"])) {
+ if ($.inArray(key, ["validate", "preSave", "readOnlyFields"])) {
modelAttrs[key] = value;
}
}
diff --git a/planetstack/core/xoslib/static/js/xoslib/xosHelper.js b/planetstack/core/xoslib/static/js/xoslib/xosHelper.js
index 3205598..9e69aa7 100644
--- a/planetstack/core/xoslib/static/js/xoslib/xosHelper.js
+++ b/planetstack/core/xoslib/static/js/xoslib/xosHelper.js
@@ -142,6 +142,7 @@
console.log(parent_id);
model = new xos[collection_name].model();
model.attributes[parent_fieldName] = parent_id;
+ model.readOnlyFields.push(parent_fieldName);
console.log(model);
detailViewClass = app[addChildName];
var detailView = new detailViewClass({model: model, collection:xos[collection_name]});
@@ -672,10 +673,16 @@
fieldName = name of field within models of collection that will be displayed
*/
-idToSelect = function(variable, selectedId, collectionName, fieldName) {
- result = '<select name="' + variable + '">' +
+idToSelect = function(variable, selectedId, collectionName, fieldName, readOnly) {
+ if (readOnly) {
+ readOnly = " readonly";
+ } else {
+ readOnly = "";
+ }
+ result = '<select name="' + variable + '"' + readOnly + '>' +
idToOptions(selectedId, collectionName, fieldName) +
'</select>';
+ console.log(result);
return result;
}
diff --git a/planetstack/core/xoslib/templates/xosAdmin.html b/planetstack/core/xoslib/templates/xosAdmin.html
index a222889..3848fc0 100644
--- a/planetstack/core/xoslib/templates/xosAdmin.html
+++ b/planetstack/core/xoslib/templates/xosAdmin.html
@@ -89,7 +89,9 @@
</script>
<script type="text/template" id="xos-list-footer-template">
- <a href="<%= addChildHash %>">Add...</a>
+ <% if (addChildHash) { %>
+ <a href="<%= addChildHash %>">Add...</a>
+ <% } %>
</script>
<script type="text/template" id="xos-delete-button-template">
@@ -106,12 +108,13 @@
<table>
<% _.each(addFields, function(fieldName) { %>
<tr><td><%= fieldNameToHumanReadable(fieldName) %>:</td>
+ <% readOnly = $.inArray(fieldName, model.readOnlyFields)>=0 ? " readonly" : ""; console.log(fieldName + " " + readOnly); console.log(model.readOnlyFields); %>
<% if (fieldName in foreignFields) { %>
- <td><%= idToSelect(fieldName, model.attributes[fieldName], foreignFields[fieldName], "humanReadableName") %></td>
+ <td><%= idToSelect(fieldName, model.attributes[fieldName], foreignFields[fieldName], "humanReadableName", readOnly) %></td>
<% } else if (inputType[fieldName] == "checkbox") { %>
- <td><input type="checkbox" name="<%= fieldName %>" <% if (model.attributes[fieldName]) print("checked"); %>></td>
+ <td><input type="checkbox" name="<%= fieldName %>" <% if (model.attributes[fieldName]) print("checked"); %><%= readOnly %>></td>
<% } else { %>
- <td><input type="text" name="<%= fieldName %>" value="<%= model.attributes[fieldName] %>"></td>
+ <td><input type="text" name="<%= fieldName %>" value="<%= model.attributes[fieldName] %>"<%= readOnly %>></td>
<% } %>
</tr>
<% }); %>
@@ -121,7 +124,7 @@
</script>
<script type="text/template" id="xos-detail-template">
- <h3 class="xos-detail-title">Add Object: <%= modelName %></h3>
+ <h3 class="xos-detail-title">Edit Object: <%= modelName %></h3>
<form>
<table>
<% console.log(model); _.each(detailFields, function(fieldName) { %>
@@ -622,3 +625,4 @@
xosDeleteButtonTemplate = _.template($("#xos-delete-button-template").html());
xosDetailLinkTemplate = _.template($("#xos-detail-link-template").html());
</script>
+