ucbuilder
Version:
:Shree Ganeshay Namah: new way app design
136 lines • 4.4 kB
JavaScript
import { GetUniqueId } from "../common/ipc/enumAndMore.js";
export class dataManager {
source = {};
map = {};
static ATTR = {
DM_DATA: "dm" + GetUniqueId(),
};
eventIncrementId = 0;
elementIncrementId = 1;
getId = (element) => {
let row = element[dataManager.ATTR.DM_DATA];
if (row == undefined) {
this.elementIncrementId++;
let _id = "id_" + this.elementIncrementId;
row = new rowInfo();
row.id = _id;
//console.log(this.source);
// console.log(this.elementIncrementId.toAlphabate()+" ("+this.elementIncrementId+")");
element[dataManager.ATTR.DM_DATA] = row;
//this.source[_id] = element;
}
return row;
};
getElement(id) {
return this.source[id];
}
fillObjectRef(targetObject, arr) {
arr.push(this.getId(targetObject).id);
for (let i = 0, iObj = targetObject.children, ilen = iObj.length; i < ilen; i++) {
const iItem = iObj[i];
this.fillObjectRef(iItem, arr);
}
//looping.htmlChildren(targetObject, s => this.fillObjectRef(s, arr));
}
deleteObjectRef(targetObject) {
//console.log('deleting.,');
let keylist = [];
this.fillObjectRef(targetObject, keylist);
keylist.forEach(e => delete this.source[e]);
}
getData(targetObject, key) {
let row = this.getId(targetObject);
switch (arguments.length) {
case 2:
return row.data[key];
case 1:
return row.data;
default:
return row;
}
}
setData(targetObject, key, value) {
let row = this.getId(targetObject);
switch (arguments.length) {
case 3:
row.data[key] = value;
break;
case 2:
row.data = value;
break;
}
}
// compareElements(ele1: HTMLElement, ele2: HTMLElement): boolean {
// return this.getId(ele1).id === this.getId(ele2).id;
// }
initElement(target) {
if (target.length == undefined) {
[target, target.querySelectorAll('*')].forEach((ele) => {
this.getId(ele);
});
}
else {
for (let i = 0, iObj = target, ilen = iObj.length; i < ilen; i++) {
target = iObj[i];
[target, target.querySelectorAll('*')].forEach((ele) => {
this.getId(ele);
});
}
}
}
setEvent(element, eventName, key, handler) {
let evt = {};
let row = this.getId(element);
if (eventName in row.event) {
evt = row.event[eventName];
evt[key] = handler;
}
else {
evt[key] = handler;
row.event[eventName] = evt;
}
element.addEventListener(eventName, handler, false);
}
unSetEvent(element, eventName, key, handler) {
let evt = {};
if (handler == undefined) {
let row = this.getId(element);
if (eventName in row.event) {
evt = row.event[eventName];
if (key == undefined) {
Object.keys(evt).forEach(s => element.removeEventListener(eventName, evt[s], false));
}
else {
handler = evt[key];
element.removeEventListener(eventName, handler, false);
}
}
}
else
element.removeEventListener(eventName, handler, false);
}
onHandler(element, eventName, handler) {
let eType = eventName.split(".");
if (eType.length == 0) {
this.setEvent(element, eType[0], `dataManager_onHandler_${GetUniqueId()}`, handler);
}
else {
this.setEvent(element, eType[0], eType[1], handler);
}
}
offHandler(element, eventName, handler) {
let eType = eventName.split(".");
if (eType.length == 0) {
this.unSetEvent(element, eType[0], undefined, handler);
}
else {
this.unSetEvent(element, eType[0], eType[1], handler);
}
}
}
export class rowInfo {
id = "";
data = {};
event = {};
}
//# sourceMappingURL=dataManager.js.map