SPA Route: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
(5 intermediate revisions by the same user not shown) | |||
Line 64: | Line 64: | ||
token : 'recruits', | token : 'recruits', | ||
X01 : 'new', //subForm='E03001X01', token='new' | X01 : 'new', //subForm='E03001X01', token='new' | ||
X02 : 'old' //subForm='E03001X02', token=' | X02 : 'old' //subForm='E03001X02', token='old' | ||
}, | }, | ||
E03002 : { | E03002 : { | ||
Line 93: | Line 93: | ||
R03001 : { | R03001 : { | ||
token : 'recruits', | token : 'recruits', | ||
X01 : 'new', //subForm='R03001X01', token=' | X01 : 'new', //subForm='R03001X01', token='new' | ||
X02 : 'old' //subForm='R03001X02', token=' | X02 : 'old' //subForm='R03001X02', token='old' | ||
}, | }, | ||
R03002 : { | R03002 : { | ||
token : 'allowance', | token : 'allowance', | ||
X01 : 'ta', //subForm='R03002X01', token='ta' | X01 : 'ta', //subForm='R03002X01', token='ta' | ||
X02 : 'da' //subForm='R03002X02', token=' | X02 : 'da' //subForm='R03002X02', token='da' | ||
}, | }, | ||
R03003 : 'performance', //token='performance' | R03003 : 'performance', //token='performance' | ||
Line 118: | Line 118: | ||
}; | }; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Logical Representation of Route === | === Logical Representation of Route === | ||
Line 133: | Line 132: | ||
subModules = ebis.subModules, | subModules = ebis.subModules, | ||
basePath = ebis.getContexPath(), | basePath = ebis.getContexPath(), | ||
baseToken = basePath + '# | baseToken = basePath + '#/', | ||
module, modObj, modToken; | module, modObj, modToken; | ||
Line 158: | Line 157: | ||
subModToken = modToken + subModObj + '/'; | subModToken = modToken + subModObj + '/'; | ||
console.log(subModToken); | console.log(subModToken); | ||
route.getFormRoutes(ebis, route, module, subModule, subModToken); | |||
} | |||
} | |||
} | |||
}, | |||
getFormRoutes : function(ebis, route, module, subModule, subModToken){ | |||
var modObj = ebis[module], | |||
forms = modObj&&modObj[subModule], | |||
form, formObj, formToken; | |||
for(form in forms){ | |||
if(forms.hasOwnProperty(form)){ | |||
formObj = forms[form]; | |||
if(CKi.isString(formObj)){ | |||
formToken = subModToken + formObj + '/'; | |||
console.log(formToken); | |||
}else if(CKi.isObject(formObj)&&formObj.token){ | |||
formToken = subModToken + formObj.token + '/'; | |||
console.log(formToken); | |||
route.getSubFormRotues(formObj, formToken); | |||
} | |||
} | |||
} | |||
}, | |||
getSubFormRotues : function(subForms, formToken){ | |||
var subform, | |||
subFormObj, | |||
subFormToken; | |||
for(subForm in subForms){ | |||
if(subForms.hasOwnProperty(subForm)&&subForm!='token'){ | |||
subFormObj = subForms[subForm]; | |||
if(CKi.isString(subFormObj)){ | |||
subFormToken = formToken + subFormObj + '/'; | |||
console.log(subFormToken); | |||
} | } | ||
} | } | ||
Line 163: | Line 197: | ||
} | } | ||
}; | }; | ||
</syntaxhighlight> | |||
=== Generated SPA Routes === | |||
<syntaxhighlight lang="javascript"> | |||
CKi.ebis.route.getRoutes() | |||
/* | |||
------------------------------------------------------------------------------- | |||
generate route for CKi.ebis.M03 | |||
------------------------------------------------------------------------------- | |||
http://chorke.org/ebis/en/#/ | |||
http://chorke.org/ebis/en/#/human/resource/ | |||
http://chorke.org/ebis/en/#/human/resource/entries/ | |||
http://chorke.org/ebis/en/#/human/resource/entries/recruits/ | |||
http://chorke.org/ebis/en/#/human/resource/entries/recruits/new/ | |||
http://chorke.org/ebis/en/#/human/resource/entries/recruits/old/ | |||
http://chorke.org/ebis/en/#/human/resource/entries/allowance/ | |||
http://chorke.org/ebis/en/#/human/resource/entries/allowance/ta/ | |||
http://chorke.org/ebis/en/#/human/resource/entries/allowance/da/ | |||
http://chorke.org/ebis/en/#/human/resource/entries/performance/ | |||
http://chorke.org/ebis/en/#/human/resource/entries/attendance/ | |||
http://chorke.org/ebis/en/#/human/resource/entries/payrolls/ | |||
http://chorke.org/ebis/en/#/human/resource/queries/ | |||
http://chorke.org/ebis/en/#/human/resource/queries/recruits/ | |||
http://chorke.org/ebis/en/#/human/resource/queries/recruits/new/ | |||
http://chorke.org/ebis/en/#/human/resource/queries/recruits/old/ | |||
http://chorke.org/ebis/en/#/human/resource/queries/allowance/ | |||
http://chorke.org/ebis/en/#/human/resource/queries/allowance/ta/ | |||
http://chorke.org/ebis/en/#/human/resource/queries/allowance/da/ | |||
http://chorke.org/ebis/en/#/human/resource/queries/performance/ | |||
http://chorke.org/ebis/en/#/human/resource/queries/attendance/ | |||
http://chorke.org/ebis/en/#/human/resource/queries/payrolls/ | |||
http://chorke.org/ebis/en/#/human/resource/reports/ | |||
http://chorke.org/ebis/en/#/human/resource/reports/recruits/ | |||
http://chorke.org/ebis/en/#/human/resource/reports/recruits/new/ | |||
http://chorke.org/ebis/en/#/human/resource/reports/recruits/old/ | |||
http://chorke.org/ebis/en/#/human/resource/reports/allowance/ | |||
http://chorke.org/ebis/en/#/human/resource/reports/allowance/ta/ | |||
http://chorke.org/ebis/en/#/human/resource/reports/allowance/da/ | |||
http://chorke.org/ebis/en/#/human/resource/reports/performance/ | |||
http://chorke.org/ebis/en/#/human/resource/reports/attendance/ | |||
http://chorke.org/ebis/en/#/human/resource/reports/payrolls/ | |||
http://chorke.org/ebis/en/#/human/resource/settings/ | |||
http://chorke.org/ebis/en/#/human/resource/settings/gender/ | |||
http://chorke.org/ebis/en/#/human/resource/settings/marital/status/ | |||
http://chorke.org/ebis/en/#/human/resource/settings/relation/ | |||
http://chorke.org/ebis/en/#/human/resource/settings/religion/ | |||
http://chorke.org/ebis/en/#/human/resource/settings/nationality/ | |||
http://chorke.org/ebis/en/#/human/resource/schedules/ | |||
http://chorke.org/ebis/en/#/human/resource/schedules/appointment/ | |||
http://chorke.org/ebis/en/#/human/resource/schedules/promotion/ | |||
------------------------------------------------------------------------------- | |||
*/ | |||
</syntaxhighlight> | |||
==Updates Recommended== | |||
<syntaxhighlight lang="javascript"> | |||
CKi.ebis.route.getRoutes() | |||
/* | |||
------------------------------------------------------------------------------- | |||
generate route for CKi.ebis.M03 | |||
------------------------------------------------------------------------------- | |||
http://chorke.org/ebis/en/#/human/resource/batches/ | |||
http://chorke.org/ebis/en/#/human/resource/batches/appointment/ | |||
http://chorke.org/ebis/en/#/human/resource/batches/promotion/ | |||
------------------------------------------------------------------------------- | |||
*/ | |||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 20:57, 25 June 2018
Single Page Application (SPA) Route
To make an Single Page Application (SPA) User Friendly, Robust and Simple, Routing is the main factor. Here is planing and guide line to build and user friendly application. Simple URL/Token make the application simple for modern web application.
Config for Handle Server Side
//initialization
var CKi=CKi||{
getType : function(object){
return Object.prototype.toString.call(object);
},
isString : function(object){
return CKi.getType(object) === '[object String]';
},
isObject : function(object){
return CKi.getType(object) === '[object Object]';
}
};
//ebis core context
CKi.ebis={
getContexPath : function($, contextPath){
$ = CKi.ebis.server;
contextPath = $.protocol + '://' + $.host
+ (!$.hasReverseProxy ? ':' + $.port : '')
+ '/'+ $.contextPath + '/' + $.language + '/';
return contextPath;
}
};
//ebis server context
CKi.ebis.server={
hasReverseProxy : !0,
contextPath : 'ebis',
language : 'en',
protocol : 'http',
host : 'chorke.org',
port : '8080'
};
Modules, Submodules & Forms
CKi.ebis.modules = {
M00 : 'system', //token='system'
M01 : 'security', //token='security'
M02 : 'resource', //token='resource'
M03 : 'human/resource' //token='human/resource'
};
CKi.ebis.subModules = {
E : 'entries', //token='entries'
Q : 'queries', //token='queries'
R : 'reports', //token='reports'
S : 'settings', //token='settings'
T : 'schedules' //token='schedules'
};
CKi.ebis.M03 = {
E : {
E03001 : {
token : 'recruits',
X01 : 'new', //subForm='E03001X01', token='new'
X02 : 'old' //subForm='E03001X02', token='old'
},
E03002 : {
token : 'allowance',
X01 : 'ta', //subForm='E03002X01', token='ta'
X02 : 'da' //subForm='E03002X02', token='da'
},
E03003 : 'performance', //token='performance'
E03004 : 'attendance', //token='attendance'
E03005 : 'payrolls' //token='payrolls'
},
Q : {
Q03001 : {
token : 'recruits',
X01 : 'new', //subForm='Q03001X01', token='new'
X02 : 'old' //subForm='Q03001X02', token='old'
},
Q03002 : {
token : 'allowance',
X01 : 'ta', //subForm='Q03002X01', token='ta'
X02 : 'da' //subForm='Q03002X02', token='da'
},
Q03003 : 'performance', //token='performance'
Q03004 : 'attendance', //token='attendance'
Q03005 : 'payrolls' //token='payrolls'
},
R : {
R03001 : {
token : 'recruits',
X01 : 'new', //subForm='R03001X01', token='new'
X02 : 'old' //subForm='R03001X02', token='old'
},
R03002 : {
token : 'allowance',
X01 : 'ta', //subForm='R03002X01', token='ta'
X02 : 'da' //subForm='R03002X02', token='da'
},
R03003 : 'performance', //token='performance'
R03004 : 'attendance', //token='attendance'
R03005 : 'payrolls' //token='payrolls'
},
S : {
S02003 : 'gender', //token='gender'
S02004 : 'marital/status', //token='marital/status'
S02005 : 'relation', //token='relation'
S02006 : 'religion', //token='religion'
S02007 : 'nationality' //token='nationality'
},
T : {
T05001 : 'appointment', //token='appointment'
T07001 : 'promotion' //token='promotion'
}
};
Logical Representation of Route
CKi.ebis.route={
getRoutes : function(){
var ebis = CKi.ebis,
route = ebis.route;
route.getModuleRoutes(ebis, route);
},
getModuleRoutes : function(ebis, route){
var modules = ebis.modules,
subModules = ebis.subModules,
basePath = ebis.getContexPath(),
baseToken = basePath + '#/',
module, modObj, modToken;
console.log(baseToken);
for(module in modules){
if(modules.hasOwnProperty(module)){
modObj = modules[module];
if(CKi.isString(modObj)){
modToken = baseToken + modObj + '/';
console.log(modToken);
route.getSubModuleRoutes(ebis, route, module, modToken);
}
}
}
},
getSubModuleRoutes : function(ebis, route, module, modToken){
var subModules = ebis.subModules,
subModule, subModObj, subModToken;
for(subModule in subModules){
if(subModules.hasOwnProperty(subModule)){
subModObj = subModules[subModule];
if(CKi.isString(subModObj)){
subModToken = modToken + subModObj + '/';
console.log(subModToken);
route.getFormRoutes(ebis, route, module, subModule, subModToken);
}
}
}
},
getFormRoutes : function(ebis, route, module, subModule, subModToken){
var modObj = ebis[module],
forms = modObj&&modObj[subModule],
form, formObj, formToken;
for(form in forms){
if(forms.hasOwnProperty(form)){
formObj = forms[form];
if(CKi.isString(formObj)){
formToken = subModToken + formObj + '/';
console.log(formToken);
}else if(CKi.isObject(formObj)&&formObj.token){
formToken = subModToken + formObj.token + '/';
console.log(formToken);
route.getSubFormRotues(formObj, formToken);
}
}
}
},
getSubFormRotues : function(subForms, formToken){
var subform,
subFormObj,
subFormToken;
for(subForm in subForms){
if(subForms.hasOwnProperty(subForm)&&subForm!='token'){
subFormObj = subForms[subForm];
if(CKi.isString(subFormObj)){
subFormToken = formToken + subFormObj + '/';
console.log(subFormToken);
}
}
}
}
};
Generated SPA Routes
CKi.ebis.route.getRoutes()
/*
-------------------------------------------------------------------------------
generate route for CKi.ebis.M03
-------------------------------------------------------------------------------
http://chorke.org/ebis/en/#/
http://chorke.org/ebis/en/#/human/resource/
http://chorke.org/ebis/en/#/human/resource/entries/
http://chorke.org/ebis/en/#/human/resource/entries/recruits/
http://chorke.org/ebis/en/#/human/resource/entries/recruits/new/
http://chorke.org/ebis/en/#/human/resource/entries/recruits/old/
http://chorke.org/ebis/en/#/human/resource/entries/allowance/
http://chorke.org/ebis/en/#/human/resource/entries/allowance/ta/
http://chorke.org/ebis/en/#/human/resource/entries/allowance/da/
http://chorke.org/ebis/en/#/human/resource/entries/performance/
http://chorke.org/ebis/en/#/human/resource/entries/attendance/
http://chorke.org/ebis/en/#/human/resource/entries/payrolls/
http://chorke.org/ebis/en/#/human/resource/queries/
http://chorke.org/ebis/en/#/human/resource/queries/recruits/
http://chorke.org/ebis/en/#/human/resource/queries/recruits/new/
http://chorke.org/ebis/en/#/human/resource/queries/recruits/old/
http://chorke.org/ebis/en/#/human/resource/queries/allowance/
http://chorke.org/ebis/en/#/human/resource/queries/allowance/ta/
http://chorke.org/ebis/en/#/human/resource/queries/allowance/da/
http://chorke.org/ebis/en/#/human/resource/queries/performance/
http://chorke.org/ebis/en/#/human/resource/queries/attendance/
http://chorke.org/ebis/en/#/human/resource/queries/payrolls/
http://chorke.org/ebis/en/#/human/resource/reports/
http://chorke.org/ebis/en/#/human/resource/reports/recruits/
http://chorke.org/ebis/en/#/human/resource/reports/recruits/new/
http://chorke.org/ebis/en/#/human/resource/reports/recruits/old/
http://chorke.org/ebis/en/#/human/resource/reports/allowance/
http://chorke.org/ebis/en/#/human/resource/reports/allowance/ta/
http://chorke.org/ebis/en/#/human/resource/reports/allowance/da/
http://chorke.org/ebis/en/#/human/resource/reports/performance/
http://chorke.org/ebis/en/#/human/resource/reports/attendance/
http://chorke.org/ebis/en/#/human/resource/reports/payrolls/
http://chorke.org/ebis/en/#/human/resource/settings/
http://chorke.org/ebis/en/#/human/resource/settings/gender/
http://chorke.org/ebis/en/#/human/resource/settings/marital/status/
http://chorke.org/ebis/en/#/human/resource/settings/relation/
http://chorke.org/ebis/en/#/human/resource/settings/religion/
http://chorke.org/ebis/en/#/human/resource/settings/nationality/
http://chorke.org/ebis/en/#/human/resource/schedules/
http://chorke.org/ebis/en/#/human/resource/schedules/appointment/
http://chorke.org/ebis/en/#/human/resource/schedules/promotion/
-------------------------------------------------------------------------------
*/
Updates Recommended
CKi.ebis.route.getRoutes()
/*
-------------------------------------------------------------------------------
generate route for CKi.ebis.M03
-------------------------------------------------------------------------------
http://chorke.org/ebis/en/#/human/resource/batches/
http://chorke.org/ebis/en/#/human/resource/batches/appointment/
http://chorke.org/ebis/en/#/human/resource/batches/promotion/
-------------------------------------------------------------------------------
*/