summaryrefslogtreecommitdiff
path: root/app/node_modules/okadminview/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/node_modules/okadminview/index.js')
-rw-r--r--app/node_modules/okadminview/index.js28
1 files changed, 17 insertions, 11 deletions
diff --git a/app/node_modules/okadminview/index.js b/app/node_modules/okadminview/index.js
index a376df5..05e2251 100644
--- a/app/node_modules/okadminview/index.js
+++ b/app/node_modules/okadminview/index.js
@@ -1,4 +1,5 @@
-var assign = require('object-assign')
+var assign = require('object-assign');
+var cloneDeep = require('lodash.clonedeep');
var bodyParser = require('body-parser');
var methodOverride = require('method-override');
var Q = require('q');
@@ -22,12 +23,14 @@ function OKAdminView(options) {
throw new Error('No templateProvider provided to OKAdminView');
if (!options.meta)
throw new Error('No meta query provided to OKAdminView');
+
var app = options.app;
var express = options.express;
var meta = options.meta;
var resourceCache = this._resourceCache = options.resourceCache;
- var resourceConfig = this._resourceConfig = options.resourceConfig;
+ var resourceConfig = this._resourceConfig = cloneDeep(options.resourceConfig);
var provider = options.templateProvider;
+
// Load templates
var templates = this._templates =
['index', 'resource', 'resource_new'].reduce(function(cache, name) {
@@ -37,6 +40,7 @@ function OKAdminView(options) {
cache[name] = template;
return cache;
}, {});
+
// OKAdmin middleware is a router, so mounts on 'use'
Object.defineProperty(this, 'mount', {
value: 'use',
@@ -120,13 +124,14 @@ function OKAdminView(options) {
resource: resource,
query: id
});
- fetchResourceTemplateData(meta, query, getResourceTemplateData).then(function(data) {
- if (!data) {
- resourceMissingHandler(req, res)()
- } else {
- view.renderResource(req, res, data);
- }
- }).fail(errorHandler(req, res));
+ fetchResourceTemplateData(meta, query, getResourceTemplateData)
+ .then(function(data) {
+ if (!data) {
+ resourceMissingHandler(req, res)()
+ } else {
+ view.renderResource(req, res, data);
+ }
+ }).fail(errorHandler(req, res));
}
});
@@ -201,6 +206,7 @@ function getResourceTemplateData(meta, resource, data) {
meta = meta || {};
resource = resource || {};
data = data || {};
+ // Decorate spec with actual resource values
var spec = Object.keys(resource.spec).reduce(function(cache, prop) {
var value = data[prop];
cache[prop].value = value;
@@ -245,7 +251,7 @@ OKAdminView.prototype.renderResourceNew = function(req, res, data) {
* Annotate template data with schema info
*/
function fetchIndexTemplateData(meta, queries) {
- return Q.Promise(function(resolve, reject) {
+ return Q.promise(function(resolve, reject) {
Q.all([meta.get()].concat(queries.map(function(query) {
return query.get();
}))).then(function(results) {
@@ -293,7 +299,7 @@ function fetchIndexTemplateData(meta, queries) {
*/
function fetchResourceTemplateData(meta, query, fn) {
fn = fn || function(m, r, d) { return {meta: m, resource: d}; };
- return Q.Promise(function(resolve, reject) {
+ return Q.promise(function(resolve, reject) {
meta.get().then(function(metadata) {
query.get().then(function(data) {
var resource = query.resource;