summaryrefslogtreecommitdiff
path: root/app/node_modules/okadminview/index.js
diff options
context:
space:
mode:
authorSean Fridman <fridman@mail.sfsu.edu>2015-07-09 16:58:02 -0400
committerSean Fridman <fridman@mail.sfsu.edu>2015-07-09 17:55:50 -0400
commit42fe17f3e52be163a506bf9a3953aa8adb5fd64f (patch)
treee4320eaf5ae38d18299fb4b5b046b8b28ed6401b /app/node_modules/okadminview/index.js
parent9be28b4322a629b8fe7c35e8cdc42eb413c6d84a (diff)
Implement groupBy queries + admin interface
Diffstat (limited to 'app/node_modules/okadminview/index.js')
-rw-r--r--app/node_modules/okadminview/index.js42
1 files changed, 18 insertions, 24 deletions
diff --git a/app/node_modules/okadminview/index.js b/app/node_modules/okadminview/index.js
index f6a7cdb..924f5a5 100644
--- a/app/node_modules/okadminview/index.js
+++ b/app/node_modules/okadminview/index.js
@@ -40,6 +40,8 @@ function OKAdminView(options) {
if (!options.errorHandler)
throw new Error('No error handler provided to OKAdminView');
+ var dashboardConfig = options.dashboardConfig || {}
+ var dashboardResourceConfig = dashboardConfig.resources || {}
var app = options.app;
var express = options.express;
var meta = options.meta;
@@ -79,10 +81,12 @@ function OKAdminView(options) {
var id = resource.getID(staticData);
// Check to see if there's a more specific instance
resource = resourceCache.get(type, id) || resource;
+ var resourceOptions = dashboardResourceConfig[type] || {}
+ var groupBy = resourceOptions.groupBy
if (resource.bound) {
- return OKQuery({resource: resource});;
+ return OKQuery({resource: resource, groupBy: groupBy})
} else {
- return OKQuery({resource: resource, query: config.query})
+ return OKQuery({resource: resource, query: config.query, groupBy: groupBy})
}
});
@@ -123,7 +127,7 @@ function OKAdminView(options) {
}));
router.get('/', function readIndex(req, res, next) {
- fetchIndexTemplateData(meta, indexQueries).then(function(data) {
+ fetchIndexTemplateData(meta, indexQueries, dashboardConfig).then(function(data) {
view.renderIndex(req, res, assign(data, {
success: req.flash('success'),
errors: req.flash('errors')
@@ -316,7 +320,9 @@ OKAdminView.prototype.renderResourceNew = function(req, res, data) {
/**
* Annotate template data with schema info
*/
-function fetchIndexTemplateData(meta, queries) {
+function fetchIndexTemplateData(meta, queries, dashboardConfig) {
+ var resourceConfig = dashboardConfig.resources
+
return Q.promise(function(resolve, reject) {
Q.all(queries.map(function(query) {
return query.get();
@@ -327,27 +333,15 @@ function fetchIndexTemplateData(meta, queries) {
var resource = queries[i].resource;
// We want the raw object spec
var spec = resource.spec;
- var key = pluralize(resource.type);
- if (!cache[key]) {
- cache[key] = {
- type: resource.type,
- spec: spec,
- data: []
- };
- }
-
- if (result.length) {
- result.forEach(addData)
- } else {
- addData(result);
+ var dashConf = resourceConfig[resource.type] || {}
+ var groupBy = dashConf.groupBy
+ var key = pluralize(resource.type)
+ cache[key] = {
+ type: resource.type,
+ spec: spec,
+ data: result,
+ groupBy: groupBy
}
-
- function addData(data) {
- // Report id to template under standard name
- data.id = resource.getID(data);
- cache[key].data.push(data);
- }
-
return cache;
}, {});