UNPKG

coffeerest-api-frontend-ng-admin

Version:
57 lines (49 loc) 2.1 kB
clone = (obj) -> JSON.parse JSON.stringify obj mustache = require 'mustache' jsfront = require('jsonschema-frontend') module.exports = (server, model, lib, urlprefix ) -> me = {} me.init = (uimodel) -> path = __dirname+'/src/mustache' me.uimodel = uimodel = jsfront.parse uimodel uimodel.js = require('fs').readFileSync(__dirname+"/node_modules/ng-admin/build/ng-admin.min.js").toString() jscode = [] jscode.push "var admin = nga.application('"+uimodel.menu.title+"')" jscode.push " .baseApiUrl('"+uimodel.model.host+"');" jscode.push "var entity = {};" for k,resource of uimodel.resources slug = k.split "/" jscode.push "entity."+ slug[1] + " = nga.entity('"+ slug[1] + "');" for menuitem in uimodel.menu.items jsfront.render "#{path}/menuitem.js", menuitem, jscode jscode[k] = " "+v for k,v of jscode uimodel.jsconfig = jscode.join("\n") + ";\n" uimodel.css = require('fs').readFileSync(__dirname+"/node_modules/ng-admin/build/ng-admin.min.css").toString() uimodel.html = require('fs').readFileSync(__dirname+"/src/mustache/index.html").toString() me.generateHTML = () -> return mustache.render me.uimodel.html, me.uimodel lib.events.on 'beforeStart', (data, next) -> server = data.server model = data.model lib = data.lib me.init lib.uimodel urlprefix = data.urlprefix # register html url url = model.frontend['ng-admin'].url if model.frontend?['ng-admin']?.url? if url and not model.resources[ url ]? console.log "registering REST resource: "+url ( (urlprefix,model,me) -> model.resources[url] = get: description: "renders html of admin screen" server.get url, (req,res,next) -> body = me.generateHTML() res.writeHead 200, 'Content-Length': Buffer.byteLength(body), 'Content-Type': 'text/html' res.write(body) res.end() next() )(urlprefix,model,me) next() return me