ucbuilder
Version:
For Developing Applications with multiple form/usercontrols etc.. In Single BrowserWindow...
142 lines (141 loc) • 6.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.commonParser = void 0;
const commonGenerator_1 = require("ucbuilder/build/codefile/commonGenerator");
const codeFileInfo_1 = require("ucbuilder/build/codeFileInfo");
const buildRow_js_1 = require("ucbuilder/build/buildRow.js");
const common_1 = require("ucbuilder/build/common");
const filterContent_1 = require("ucbuilder/global/filterContent");
const fileDataBank_1 = require("ucbuilder/global/fileDataBank");
const aliceManager_1 = require("ucbuilder/build/codefile/aliceManager");
const Template_1 = require("ucbuilder/Template");
class commonParser {
constructor(bldr) {
this.rows = [];
this.aliceMng = new aliceManager_1.AliceManager();
this._filterText = new filterContent_1.FilterContent();
this.bldr = bldr;
this.gen = new commonGenerator_1.commonGenerator();
}
init(filePath, htmlContents = undefined) {
let row = this.fill(filePath, htmlContents);
if (row != undefined)
this.rows.push(row);
}
fill(filePath, htmlContents = undefined) {
let _row = common_1.objectOpt.clone(buildRow_js_1.commonRow);
let _this = this;
_row.src = new codeFileInfo_1.codeFileInfo(codeFileInfo_1.codeFileInfo.getExtType(filePath));
if (!_row.src.parseUrl(filePath))
return undefined;
let code = (htmlContents == undefined) ? fileDataBank_1.FileDataBank.readFile(_row.src.html.rootPath, {
replaceContentWithKeys: false
}) : htmlContents;
let isUserControl = _row.src.extCode == common_1.buildOptions.extType.Usercontrol;
this.formHT = code.$();
this.aliceMng.fillAlices(this.formHT);
_row.designer.className =
_row.codefile.baseClassName = "Designer";
_row.codefile.className = _row.src.name;
if (!isUserControl) {
_row.designer.baseClassName = "Template";
let tptbyCntnt = Template_1.Template.getTemplates.byDirectory(filePath);
let tpts = _row.designer.templetes;
tptbyCntnt.forEach(template => {
let rolelwr = template.name.toLowerCase();
if (tpts.findIndex(s => s.name.toLowerCase() == rolelwr) != -1)
return;
let controls = [];
let cntHT = template.htmlContents.$();
let _htEleAr = Array.from(cntHT.querySelectorAll(`[${common_1.propOpt.ATTR.ACCESS_KEY}]`));
_htEleAr.forEach(e => {
let scope = e.getAttribute(common_1.propOpt.ATTR.SCOPE_KEY);
if (scope == undefined)
scope = 'public';
controls.push({
name: e.getAttribute("x-name"),
nodeName: e.nodeName,
proto: common_1.objectOpt.getClassName(e),
scope: scope,
});
});
tpts.push({
name: template.name,
scope: "public",
controls: controls
});
});
}
else {
_row.designer.baseClassName = "Usercontrol";
let elem = Array.from(this.formHT.querySelectorAll(`[${common_1.propOpt.ATTR.ACCESS_KEY}]`));
let im = _row.designer.importClasses;
let aliceNumber = 0;
aliceNumber = this.fillDefImports('Usercontrol', 'ucbuilder/Usercontrol', aliceNumber, im);
aliceNumber = this.fillDefImports('intenseGenerator', 'ucbuilder/intenseGenerator', aliceNumber, im);
aliceNumber = this.fillDefImports('UcOptions', 'ucbuilder/enumAndMore', aliceNumber, im);
elem.forEach((ele) => {
let nameAttr = ele.getAttribute(common_1.propOpt.ATTR.ACCESS_KEY);
let nodeName = ele.nodeName;
let scope = ele.getAttribute(common_1.propOpt.ATTR.SCOPE_KEY);
if (scope == undefined)
scope = 'public';
let proto = Object.getPrototypeOf(ele).constructor.name;
if (ele.hasAttribute("x-from")) {
let _subpath = ele.getAttribute("x-from");
let uFInf = new codeFileInfo_1.codeFileInfo(codeFileInfo_1.codeFileInfo.getExtType(_subpath));
uFInf.parseUrl(_subpath);
//console.log(_subpath);
//console.log(uFInf.mainFileRootPath);
if (uFInf.existCodeFile || uFInf.existHtmlFile || uFInf.existDeignerFile) {
let ctrlNode = {
name: nameAttr,
proto: proto,
scope: scope,
type: uFInf.extCode,
nodeName: uFInf.name,
src: uFInf,
};
aliceNumber = _this.fillDefImports(uFInf.name, uFInf.mainFileRootPath, aliceNumber, im, ctrlNode);
_row.designer.controls.push(ctrlNode);
}
}
else {
_row.designer.controls.push({
name: nameAttr,
proto: proto,
scope: scope,
type: 'none',
nodeName: nodeName,
});
}
});
// console.log(_row.src.codeSrc.rootPath);
// console.log(im);
}
return _row;
}
fillDefImports(name, url, aliceNumber, classList, ctrlNode) {
let _found = classList.find(s => s.name.equalIgnoreCase(name));
let aliceTxt = (_found) ? 'a' + aliceNumber++ : '';
let obj = {
name: name,
alice: aliceTxt,
url: url,
get importText() {
if (this.alice == '')
return this.name;
else
return `${this.name} as ${this.alice}`;
},
get objText() {
return (this.alice == '') ? this.name : this.alice;
}
};
if (ctrlNode != undefined)
ctrlNode.importedClass = obj;
classList.push(obj);
return aliceNumber;
}
}
exports.commonParser = commonParser;