UNPKG

6.14 kBJavaScriptView Raw
1"use strict";
2/*!
3 * Simple Node Mobile Portal
4 * Copyright(c) 2012-2017 Faisal(admin@simpleportaljs.com)
5 *
6 * MIT Licensed
7 */
8var DispatchWrapper=require("./../util/spdispatch"),events=require("events"),TemplateUtils=require("simpleportal/lib/template/util"),util=require("./../util");var Router=module.exports=function(a,b){events.EventEmitter.call(this);a=a||{};this.routerloaded=false;this.routerid=a.routerid||"DEFAULT_ROUTER_ID";this.preferencekey=this.routerid;this.priority=a.priority||0;this.routers={};this._routererrors={};this.urlHandles={};this.configuration={};if(b){this._serverInstance=b}return this};require("util").inherits(Router,events.EventEmitter);Router.prototype.addUrlHandle=function(a,b){this.urlHandles[a]=b};Router.prototype.getRouterErrors=function(a){return this._routererrors};Router.prototype.getRouters=function(){return this.routers};Router.prototype.registerViewHandler=function(){};Router.prototype.updateConfiguration=function(b){var a=this;a.configuration=b;a.loadRouter(b,function(){})};Router.prototype.loadRouter=function(c,b){var a=this;a.emit("router.loaded");if(b){b()}};Router.prototype.initServer=function(b,c){var a=this;a._serverInstance=b;this.updateConfiguration(b.getConfiguration());this.emit("init.server");if(c){c()}};Router.prototype.invokeAll=function(b,h){var a=this;var f=Object.keys(a.routers).length,d=0;var g={};if(a.routers&&Object.keys(a.routers).length>0){for(var e in a.routers){if(a.routers[e]&&typeof a.routers[e]=="object"&&a.routers[e][b]&&typeof a.routers[e][b]=="function"){try{a.routers[e][b](a.getServerInstance(),function(i){if(i){g[e]=i}if(d++==f-1){a.emit("router."+b);if(h){h(Object.keys(g).length>0?g:null)}}})}catch(c){a.getLogger().error(a.routerid+":"+e,c);if(c){g[e]=c}if(d++==f-1){a.emit("router."+b);if(h){h(Object.keys(g).length>0?g:null)}}}}else{if(d++==f-1){a.emit("router."+b);if(h){h(Object.keys(g).length>0?g:null)}}}}}else{a.emit("router."+b);if(h){h()}}};Router.prototype.startAll=function(b){var a=this;if(this.routerid=="serviceloader"){console.log(this.getRouterErrors())}a.invokeAll("start",b)};Router.prototype.startupAll=function(b){var a=this;a.invokeAll("startup",b)};Router.prototype.initAll=function(b){var a=this;a.invokeAll("init",function(){if(a.routerid=="serviceloader"){a.invokeAll("startup",b)}if(b){b()}})};Router.prototype.shutdownAll=function(b){var a=this;a.invokeAll("shutdown",function(){if(b){b()}})};Router.prototype.initRouter=function(b,d){var a=this;if(this.routerloaded){a.getLogger().error("Router.initRouter",this.routerid+":>> Router already initialized.")}else{a.registerViewHandler();if(b&&b.dispatch instanceof DispatchWrapper&&this.urlHandles){var c=b.dispatch.addUrlHandler(this.urlHandles)}a.routerloaded=true}if(d){d()}};Router.prototype.getServerInstance=function(a){return this._serverInstance};Router.prototype.getContext=function(b){var a=this;if(!a._serverInstance){a.getLogger().error(a.routerid+":getContext","server instance is not available")}if(a.routerid!=b){return a._serverInstance[b]}else{return a}};Router.prototype.getConfiguration=function(a,b){if(a){return this.configuration[a]||b}else{return this.configuration}};Router.prototype.getPluginloader=function(){return this.getContext("pluginloader")};Router.prototype.getServiceloader=function(){return this.getContext("serviceloader")};Router.prototype.getViewloader=function(){return this.getContext("viewloader")};Router.prototype.getStartuploader=function(){return this.getContext("startuploader")};Router.prototype.getFilterloader=function(){return this.getContext("filterloader")};Router.prototype.getRouter=function(a){if(this.routers){return this.routers[a]}else{return null}};Router.prototype.getLogger=function(a,b){if(!this.getServerInstance()){return{info:function(){console.log(a+"[::]:"+b)}}}else{return this.getServerInstance().getLogger()}};Router.prototype.getValue=function(a){return this[a]};Router.prototype.getPreferenceSetting=function(a,b){return Router.DEFAULT_PROPS};Router.prototype.getPreference=function(){return Router.DEFAULT_PROPS};Router.prototype.getRouterDefaults=function(a){return Router.DEFAULT_PROPS};Router.prototype.savePreference=function(b,d,e){var a=this;var c={};if(typeof b=="object"){c=b;if(typeof d=="function"){e=d;d=null}}else{if(b&&d){c.title=c.key=b;c.preference=d}}if(c&&c.key&&c.preference){c.key=a.preferencekey+"_"+c.key;a.getServiceloader().getService("serverpreference").registerPreference(c,e)}else{if(e){e("not a valid preference object")}}};Router.prototype.removeSavedPreference=function(b,d){var a=this;var c=a.preferencekey+"_"+b;a.getServiceloader().getService("serverpreference").removeByKey(c,d)};Router.prototype.getSavedPreference=function(b,c,e){var a=this;if(typeof b=="function"){a.getServerInstance().getRouter("serviceloader").getService("serverpreference").search({key:new RegExp("^"+a.routerid+"_")},function(f,j){var h={};if(j&&j.length>0){for(var g in j){var k=j[g];h[k.key.replace(a.routerid+"_","")]=k.preference}}b(null,h)},{},{limit:"none"})}else{if(typeof c=="function"){e=c;c=null}var d=a.preferencekey+"_"+b;a.getServerInstance().getRouter("serviceloader").getService("serverpreference").getByKey(d,e)}};Router.prototype.getRouterFields=function(d){var a=this;var b=a.getRouterDefaults();var h=Object.keys(b);var f=[];var g=TemplateUtils.getFieldFromObject(b,a.preferencekey+"__"+d+"__");if(g){for(var c in g){var e=g[c];if(c==0){e.html.category=a.routerid+" - Configuration for - "+d}f.push(e)}}return f};Router.prototype.getTempPath=function(c,b){var a=this;var d=a.getServerInstance().getConfiguration("resources").tempdir||"._tmp";d=util.getServerPath(d);return util.appendFilePath(d,a.routerid,(c&&c.id?c.id:""),b)};Router.prototype.getDataPath=function(c,b){var a=this;var d=a.getServerInstance().getConfiguration("resources").datadir||"data";d=util.getServerPath(d);return util.appendFilePath(d,a.routerid,(c&&c.id?c.id:""),b)};Router.prototype.getBackupPath=function(c,b){var a=this;var d=a.getServerInstance().getConfiguration("resources").backupdir||"backup";d=util.getServerPath(d);return util.appendFilePath(d,a.routerid,(c&&c.id?c.id:""),b)};
\No newline at end of file