add screensnew and tpldatanew

This commit is contained in:
philc 2025-02-06 00:02:44 +01:00
parent 608661495b
commit ff27e8a4ea

View File

@ -18,12 +18,17 @@ const Wwws = {};
Wwws.getwco = (wconame, ctx) => { Wwws.getwco = (wconame, ctx) => {
/** /**
* In a webpage to add a wco * In a webpage to add a wco
* <script src="/api/adminapi/wwws/getwco/wco.js?wcotribe=adminapi&tribe=adminapi&xapp=admin&pagename=apxid&code=enjoy"></script> * <script src="/api/adminapi/wwws/getwco/wco.js?wcotribe=adminapi&tribe=adminapi&xapp=admin&pagename=apxid&code=enjoy&tagid=id"></script>
* This will update /tribe/objects/wwws/itm/xapp.json * <div id="tagid" add tag here to customize if needded></div>
* A wco has a /adminapi/objects/wco/itm/wconame.json *
* * The script request will update /tribe/objects/wwws/itm/xapp.json with
* * tpl, schema, tpldata, ...
* * A wco has a /adminapi/objects/wco/itm/wconame.json that contain tpl options, ref, schema, ...
* The dynamic content is store in <div id="ctx.tagid">
* so tpldata:{${tagid}_${wco.tpldatamodel.key}:"..."}
* When the script request is done, it checks if exist file in wwws/${app}/src/tpldata/${pagename}/${tagid}_${wco.tpldatamodel.key}_lg.json
* if not it create with the wco example tpldatamodel ${wco.tpldatamodel.key}
* Check also if exist in localdb.pagename.tpldata
*/ */
const filereq = `../${ctx.wcotribe}/objects/wco/${wconame}/${wconame}.js`; const filereq = `../${ctx.wcotribe}/objects/wco/${wconame}/${wconame}.js`;
const wcoconf = `../${ctx.wcotribe}/objects/wco/itm/${wconame}.json`; const wcoconf = `../${ctx.wcotribe}/objects/wco/itm/${wconame}.json`;
@ -63,20 +68,24 @@ Wwws.getwco = (wconame, ctx) => {
}); });
} }
// check that tpldata exist for the wco, if not create them with template data example into the project // check that tpldata exist for the wco, if not create them with template data example into the project
if (wcoinfo.tpldatamodel && Object.keys(wcoinfo.tpldatamodel).length > 0) { if (ctx.tagid && wcoinfo.tpldatamodel && Object.keys(wcoinfo.tpldatamodel).length > 0) {
Object.keys(wcoinfo.tpldatamodel).forEach((t) => { Object.keys(wcoinfo.tpldatamodel).forEach((t) => {
const pathtpldata = `../${ctx.tribe}/objects/wwws/${ctx.xapp}/src/tpldata/${wconame}/${t}`; const pathtpldata = `${ctx.tribe}/objects/wwws/${ctx.xapp}/src/tpldata/${ctx.pagename}/${ctx.tagid}_${t}`;
if (!Object.keys(webpage.pages[ctx.pagename].tpldata).includes(t)) { const localdbname=`${ctx.pagename}_${ctx.tagid}_${t}`
webpage.pages[ctx.pagename].tpldata[t] = pathtpldata; if (!Object.keys(webpage.pages[ctx.pagename].tpldata).includes(localdbname)) {
webpage.pages[ctx.pagename].tpldata[localdbname] = pathtpldata;
} }
wcoinfo.lang.forEach((l) => { wcoinfo.lang.forEach((l) => {
if ( if (
!fs.existsSync(`${pathtpldata}_${l}.json`) && !fs.existsSync(`../${pathtpldata}_${l}.json`) &&
fs.existsSync(`../${wcoinfo.tpldatamodel[t]}_${l}.json`) fs.existsSync(`../${wcoinfo.tpldatamodel[t]}_${l}.json`)
) { ) {
fs.copySync( const tpldataexample=fs.readJSONSync(`../${wcoinfo.tpldatamodel[t]}_${l}.json`)
`../${wcoinfo.tpldatamodel[t]}_${l}.json`, Object.keys(ctx).forEach(k=>{
`${pathtpldata}_${l}.json` tpldataexample[k]=ctx[k]
})
fs.outputJSONSync(
`../${pathtpldata}_${l}.json`,tpldataexample
); );
} }
}); });
@ -96,7 +105,7 @@ Wwws.getwco = (wconame, ctx) => {
[ [
wcoinfo.schema.forEach((s) => { wcoinfo.schema.forEach((s) => {
s = s.replace("{{tribe}}", ctx.tribe); s = s.replace("{{tribe}}", ctx.tribe);
if (webpage.pages[ctx.pagename].schema.includes(s)) { if (!webpage.pages[ctx.pagename].schema.includes(s)) {
webpage.pages[ctx.pagename].schema.push(s); webpage.pages[ctx.pagename].schema.push(s);
} }
}), }),
@ -174,7 +183,7 @@ Wwws.build = (tribeId, webapp, srcdist, options) => {
} }
if (!confwww.pages[pgname].languages.includes(lg)) if (!confwww.pages[pgname].languages.includes(lg))
confwww.pages[pgname].languages.push(lg); confwww.pages[pgname].languages.push(lg);
const pgtxt = fs.readFileSync(f, "utf8"); const pgtxt = fs.readFileSync(f, "utf8");
const pg = new JSDOM(pgtxt); const pg = new JSDOM(pgtxt);
const dc = pg.window.document; const dc = pg.window.document;
@ -414,9 +423,11 @@ Wwws.initlocaldata = (tribe, appname, pagename, version, profils, lg) => {
options: {}, options: {},
tpl: {}, tpl: {},
tpldata: {}, tpldata: {},
tdatanew,
ref: {}, ref: {},
schema: {}, schema: {},
screens:{} screens:{},
screensnew:{}
}; };
localstorage.headers.xlang = lg; localstorage.headers.xlang = lg;
// A faire plus tard charger tous les referentiele et les data pour une page adminpage // A faire plus tard charger tous les referentiele et les data pour une page adminpage
@ -471,6 +482,7 @@ Wwws.initlocaldata = (tribe, appname, pagename, version, profils, lg) => {
} }
if (!loc.tpl) loc.tpl = {}; if (!loc.tpl) loc.tpl = {};
if (!loc.tpldata) loc.tpldata = {}; if (!loc.tpldata) loc.tpldata = {};
if (!loc.tpldatanew) loc.tpldatanew = {};
// remove loc.components (this is now in tpldata and tpl) // remove loc.components (this is now in tpldata and tpl)
if (loc.components) { if (loc.components) {
loc.components.forEach((c) => { loc.components.forEach((c) => {
@ -512,6 +524,22 @@ Wwws.initlocaldata = (tribe, appname, pagename, version, profils, lg) => {
} }
}); });
} }
if (loc.tpldatanew) {
Object.keys(loc.tpldatanew).forEach((r) => {
let src = `../${loc.tpldatanew[r]}`;
//console.log(path.resolve(src))
if (!fs.existsSync(src)) {
src += `_${lg}.json`;
}
if (fs.existsSync(src)) {
localstorage.tpldatanew[r] = fs.readJSONSync(src);
} else {
localstorage.tpldatanew[
r
] = `Check your ${fileparam} for template in ${pagename} profil and ${r} in tpldatanew`;
}
});
}
if (!loc.screens) loc.screens={} if (!loc.screens) loc.screens={}
if (loc.screens) { if (loc.screens) {
Object.keys(loc.screens).forEach((r) => { Object.keys(loc.screens).forEach((r) => {
@ -529,6 +557,23 @@ Wwws.initlocaldata = (tribe, appname, pagename, version, profils, lg) => {
} }
}); });
} }
if (!loc.screensnew) loc.screensnew={}
if (loc.screensnew) {
Object.keys(loc.screensnew).forEach((r) => {
let src = `../${loc.screensnew[r]}`;
//console.log(path.resolve(src))
if (!fs.existsSync(src)) {
src += `_${lg}.json`;
}
if (fs.existsSync(src)) {
localstorage.screensnew[r] = fs.readJSONSync(src);
} else {
localstorage.screensnew[
r
] = `Check your ${fileparam} for template in ${pagename} profil and ${r} in screensnew`;
}
});
}
if (loc.schema) { if (loc.schema) {
loc.schema.forEach((objpath) => { loc.schema.forEach((objpath) => {
const name = path.basename(objpath); const name = path.basename(objpath);