UNPKG

ucbuilder

Version:

For Developing Applications with multiple form/usercontrols etc.. In Single BrowserWindow...

179 lines (178 loc) 6.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.listUiHandler = void 0; const commonEvent_1 = require("ucbuilder/global/commonEvent"); const listUiSearch_1 = require("ucbuilder/global/listUiSearch"); const timeoutCall_1 = require("ucbuilder/global/timeoutCall"); const enumAndMore_1 = require("../pager/enumAndMore"); class listUiHandler { constructor() { this.OPTIONS = { SESSION: { currentIndex: -1, scrollTop: 0, }, listSize: undefined, currentItem: undefined, }; this.source = new enumAndMore_1.SourceManage(); this.nodes = { itemSize: { hasSet: false, width: 0, height: 0, update(htEle) { this.hasSet = true; if (!htEle.isConnected) { document.body.appendChild(htEle); timeoutCall_1.timeoutCall.start(() => { this.width = htEle.offsetWidth; this.height = htEle.offsetHeight; }); document.body.removeChild(htEle); } else { this.width = htEle.offsetWidth; this.height = htEle.offsetHeight; } }, }, getNode: (index) => { return this.itemTemplate.extended.generateNode(this.source.rows[index]); }, prepend: (index) => { debugger; return undefined; }, append: (index, replaceNode = false) => { debugger; return undefined; }, update: (index) => { let nodes = this.nodes; let ele = nodes.append(index, true); this.setCurrentIndex(this.currentIndex); return ele; }, clear: () => { this.Records.lstVWEle.innerHTML = ""; this.Events.onClearContainer.fire(); }, indexOf: (ele) => { return -1; }, fill: () => { console.log("ds"); }, callToFill: () => { }, loopVisibleRows: (callback = (ele) => { return true; }) => { }, onRendar: () => { this.nodes.loopVisibleRows((ele) => { return true; }); }, __doactualRendar: () => { this.nodes.onRendar(); this.nodes.refreshHiddenCount(); }, render() { this.__doactualRendar(); }, refreshHiddenCount: () => { }, }; this.Records = { itemAt(index) { return undefined; }, lstVWEle: undefined, scrollerElement: undefined, getItemFromChild(ele) { let _container = this.lstVWEle; while (true) { if (ele.parentElement == null) { return null; } else if (_container.is(ele.parentElement)) { return ele; } else { ele = ele.parentElement; } } }, getNode: (index) => { return this.itemTemplate.extended.generateNode(this.source.rows[index]); }, }; this.Events = { onSourceUpdate: new commonEvent_1.CommonEvent(), itemDoubleClick: new commonEvent_1.CommonEvent(), itemMouseDown: new commonEvent_1.CommonEvent(), itemMouseUp: new commonEvent_1.CommonEvent(), onClearContainer: new commonEvent_1.CommonEvent(), currentItemIndexChange: new commonEvent_1.CommonEvent(), newItemGenerate: new commonEvent_1.CommonEvent(), onListUISizeChanged: new commonEvent_1.CommonEvent(), beforeOldItemRemoved: new commonEvent_1.CommonEvent(), onRowNavigationChanged: (callback, event, valToAddRemove) => { callback(event, valToAddRemove); }, onReachLastRecord: () => { return false; }, onReachFirstRecord: () => { return false; }, onkeydown: (e) => { }, }; this.keydown_listner = (evt) => { this.Events.onkeydown(evt); }; this.search = new listUiSearch_1.listUiSearch(this); } get itemTemplate() { return this._itemTemplate; } set itemTemplate(value) { this._itemTemplate = value; let _itemSize = this.nodes.itemSize; let s = value.extended.size; setTimeout(() => { _itemSize.height = s.height; _itemSize.width = s.width; }); } get length() { return this.source.rows.length; } get currentRecord() { return this.source.rows[this.currentIndex]; } get currentIndex() { return this.OPTIONS.SESSION.currentIndex; } set currentIndex(val) { this.setCurrentIndex(val); } set scrollerElement(val) { if (val == undefined) return; if (this.resizeObsrv != undefined) this.resizeObsrv.disconnect(); this.resizeObsrv = new window.ResizeObserver((pera) => { setTimeout(() => { this.OPTIONS.listSize = pera[0].contentRect; this.Events.onListUISizeChanged.fire([pera[0].contentRect]); }); }); this.Records.scrollerElement = val; this.resizeObsrv.observe(val); } init(lstVw, scrollerElement, uc) { this.Records.lstVWEle = lstVw; this.source.onUpdate.on((cnt) => { this.Events.onSourceUpdate.fire([cnt]); }); this.scrollerElement = scrollerElement; lstVw.addEventListener("dblclick", (e) => { let itm = this.Records.getItemFromChild(e.target); if (itm != null) this.Events.itemDoubleClick.fire([this.currentIndex, e]); }); scrollerElement.addEventListener("keydown", this.keydown_listner); } setCurrentIndex(val, evt, eventType = 'Other') { } } exports.listUiHandler = listUiHandler;