Allow custom loading definition elements

merge-requests/60/head
Moe 2019-04-13 18:58:55 -07:00
parent c7700b8eea
commit 57c5168454
2 changed files with 45 additions and 3 deletions

View File

@ -1,6 +1,28 @@
var fs = require('fs')
var express = require('express')
module.exports = function(s,config,lang,app,io){
function mergeDeep(...objects) {
const isObject = obj => obj && typeof obj === 'object';
return objects.reduce((prev, obj) => {
Object.keys(obj).forEach(key => {
const pVal = prev[key];
const oVal = obj[key];
if (Array.isArray(pVal) && Array.isArray(oVal)) {
prev[key] = pVal.concat(...oVal);
}
else if (isObject(pVal) && isObject(oVal)) {
prev[key] = mergeDeep(pVal, oVal);
}
else {
prev[key] = oVal;
}
});
return prev;
}, {});
}
s.customAutoLoadModules = {}
s.customAutoLoadTree = {
pages: [],
@ -14,7 +36,7 @@ module.exports = function(s,config,lang,app,io){
superLibsJs: [],
superLibsCss: []
}
var folderPath = __dirname + '/customAutoLoad'
var folderPath = s.mainDirectory + '/libs/customAutoLoad'
var search = function(searchFor,searchIn){return searchIn.indexOf(searchFor) > -1}
fs.readdir(folderPath,function(err,folderContents){
if(!err && folderContents){
@ -117,6 +139,25 @@ module.exports = function(s,config,lang,app,io){
})
})
break;
case'definitions':
var definitionsFolder = s.checkCorrectPathEnding(customModulePath) + 'definitions/'
fs.readdir(definitionsFolder,function(err,files){
if(err)return console.log(err);
files.forEach(function(filename){
var fileData = require(definitionsFolder + filename)
var rule = filename.replace('.json','').replace('.js','')
if(config.language === rule){
s.definitions = mergeDeep(s.definitions,fileData)
}
if(s.loadedDefinitons[rule]){
s.loadedDefinitons[rule] = mergeDeep(s.loadedDefinitons[rule],fileData)
}else{
s.loadedDefinitons[rule] = mergeDeep(s.copySystemDefaultDefinitions(),fileData)
}
console.log(s.loadedDefinitons[rule]['Monitor Settings'].blocks.Identity)
})
})
break;
}
})
})

View File

@ -16,15 +16,16 @@ module.exports = function(s,config,lang,app,io){
}
}
//load defintions dynamically
s.definitions = definitions
s.copySystemDefaultDefinitions = function(){
//en_CA
return Object.assign(definitions,{})
return Object.assign(s.definitions,{})
}
s.loadedDefinitons={}
s.loadedDefinitons[config.language] = s.copySystemDefaultDefinitions()
s.getDefinitonFile = function(rule){
if(rule && rule !== ''){
var file = s.loadedDefinitons[file]
var file = s.loadedDefinitons[rule]
if(!file){
try{
s.loadedDefinitons[rule] = require(s.location.definitions+'/'+rule+'.js')(s,config,lang)