UNPKG

@codehint-ng/tree-table

Version:

A simple component to display tree-hierarchically data in table.

47 lines 7.45 kB
import { Helper } from './items.helper'; export class SortHelper { static { this.otherShells = []; } static { this.shells = []; } static { this.sortFunction = null; } static getSorted(shells, sortFunction) { this.otherShells = [...shells]; this.shells = []; this.sortFunction = sortFunction; this.getShellsForLevel(0, null); return this.shells; } static getShellsForLevel(index, parentId) { let { levelShells, otherShells } = this.selectLevelShells(this.otherShells, parentId); if (this.sortFunction) { levelShells = this.sortShells(levelShells, this.sortFunction); } this.shells = Helper.arrayInsertItems(this.shells, index, levelShells); this.otherShells = [...otherShells]; levelShells.forEach(shell => { const shellIndex = this.shells.findIndex(i => i.item.id === shell.item.id); this.getShellsForLevel(shellIndex + 1, shell.item.id); }); } static selectLevelShells(shells, parentId) { const levelShells = []; const otherShells = []; shells.forEach(shell => { if (shell.item.parentId === parentId) { levelShells.push(shell); } else { otherShells.push(shell); } }); return { levelShells, otherShells }; } static sortShells(shells, sortFunction) { const sortFunc = (a, b) => { const data1 = a.item.data; const data2 = b.item.data; return !!data1 && !!data2 ? sortFunction(data1, data2) : 0; }; return shells.sort(sortFunc); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmVlLXRhYmxlL3NyYy9saWIvaGVscGVycy9zb3J0LmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEMsTUFBTSxPQUFPLFVBQVU7YUFDTixnQkFBVyxHQUE4QixFQUFFLENBQUM7YUFDNUMsV0FBTSxHQUE4QixFQUFFLENBQUM7YUFDdkMsaUJBQVksR0FBc0IsSUFBSSxDQUFDO0lBRXRELE1BQU0sQ0FBQyxTQUFTLENBQUksTUFBK0IsRUFBRSxZQUE2QjtRQUNoRixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRU8sTUFBTSxDQUFDLGlCQUFpQixDQUFJLEtBQWEsRUFBRSxRQUFnQjtRQUNqRSxJQUFJLEVBQUMsV0FBVyxFQUFFLFdBQVcsRUFBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3BGLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEUsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDO1FBRXBDLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDMUIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sTUFBTSxDQUFDLGlCQUFpQixDQUFJLE1BQStCLEVBQUUsUUFBZ0I7UUFFakYsTUFBTSxXQUFXLEdBQTRCLEVBQUUsQ0FBQztRQUNoRCxNQUFNLFdBQVcsR0FBNEIsRUFBRSxDQUFDO1FBRWhELE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDckIsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDckMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEVBQUMsV0FBVyxFQUFFLFdBQVcsRUFBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFJLE1BQStCLEVBQUUsWUFBNkI7UUFDakYsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUF3QixFQUFFLENBQXdCLEVBQUUsRUFBRTtZQUN0RSxNQUFNLEtBQUssR0FBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUM3QixNQUFNLEtBQUssR0FBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUM3QixPQUFPLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUcmVlVGFibGVJdGVtU2hlbGx9IGZyb20gJy4vbW9kZWxzJztcclxuaW1wb3J0IHtTb3J0RnVuY3Rpb259IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7SGVscGVyfSBmcm9tICcuL2l0ZW1zLmhlbHBlcic7XHJcblxyXG5leHBvcnQgY2xhc3MgU29ydEhlbHBlcjxUPiB7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgb3RoZXJTaGVsbHM6IFRyZWVUYWJsZUl0ZW1TaGVsbDxhbnk+W10gPSBbXTtcclxuICBwcml2YXRlIHN0YXRpYyBzaGVsbHM6IFRyZWVUYWJsZUl0ZW1TaGVsbDxhbnk+W10gPSBbXTtcclxuICBwcml2YXRlIHN0YXRpYyBzb3J0RnVuY3Rpb246IFNvcnRGdW5jdGlvbjxhbnk+ID0gbnVsbDtcclxuXHJcbiAgc3RhdGljIGdldFNvcnRlZDxUPihzaGVsbHM6IFRyZWVUYWJsZUl0ZW1TaGVsbDxUPltdLCBzb3J0RnVuY3Rpb246IFNvcnRGdW5jdGlvbjxUPikge1xyXG4gICAgdGhpcy5vdGhlclNoZWxscyA9IFsuLi5zaGVsbHNdO1xyXG4gICAgdGhpcy5zaGVsbHMgPSBbXTtcclxuICAgIHRoaXMuc29ydEZ1bmN0aW9uID0gc29ydEZ1bmN0aW9uO1xyXG4gICAgdGhpcy5nZXRTaGVsbHNGb3JMZXZlbCgwLCBudWxsKTtcclxuICAgIHJldHVybiB0aGlzLnNoZWxscztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGdldFNoZWxsc0ZvckxldmVsPFQ+KGluZGV4OiBudW1iZXIsIHBhcmVudElkOiBzdHJpbmcpIHtcclxuICAgIGxldCB7bGV2ZWxTaGVsbHMsIG90aGVyU2hlbGxzfSA9IHRoaXMuc2VsZWN0TGV2ZWxTaGVsbHModGhpcy5vdGhlclNoZWxscywgcGFyZW50SWQpO1xyXG4gICAgaWYgKHRoaXMuc29ydEZ1bmN0aW9uKSB7XHJcbiAgICAgIGxldmVsU2hlbGxzID0gdGhpcy5zb3J0U2hlbGxzKGxldmVsU2hlbGxzLCB0aGlzLnNvcnRGdW5jdGlvbik7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNoZWxscyA9IEhlbHBlci5hcnJheUluc2VydEl0ZW1zKHRoaXMuc2hlbGxzLCBpbmRleCwgbGV2ZWxTaGVsbHMpO1xyXG4gICAgdGhpcy5vdGhlclNoZWxscyA9IFsuLi5vdGhlclNoZWxsc107XHJcblxyXG4gICAgbGV2ZWxTaGVsbHMuZm9yRWFjaChzaGVsbCA9PiB7XHJcbiAgICAgIGNvbnN0IHNoZWxsSW5kZXggPSB0aGlzLnNoZWxscy5maW5kSW5kZXgoaSA9PiBpLml0ZW0uaWQgPT09IHNoZWxsLml0ZW0uaWQpO1xyXG4gICAgICB0aGlzLmdldFNoZWxsc0ZvckxldmVsKHNoZWxsSW5kZXggKyAxLCBzaGVsbC5pdGVtLmlkKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgc2VsZWN0TGV2ZWxTaGVsbHM8VD4oc2hlbGxzOiBUcmVlVGFibGVJdGVtU2hlbGw8VD5bXSwgcGFyZW50SWQ6IHN0cmluZylcclxuICAgICAgICAgICAgICAgIDoge2xldmVsU2hlbGxzOiBUcmVlVGFibGVJdGVtU2hlbGw8VD5bXSwgb3RoZXJTaGVsbHM6IFRyZWVUYWJsZUl0ZW1TaGVsbDxUPltdfSAge1xyXG4gICAgICBjb25zdCBsZXZlbFNoZWxsczogVHJlZVRhYmxlSXRlbVNoZWxsPFQ+W10gPSBbXTtcclxuICAgICAgY29uc3Qgb3RoZXJTaGVsbHM6IFRyZWVUYWJsZUl0ZW1TaGVsbDxUPltdID0gW107XHJcblxyXG4gICAgICBzaGVsbHMuZm9yRWFjaChzaGVsbCA9PiB7XHJcbiAgICAgICAgaWYgKHNoZWxsLml0ZW0ucGFyZW50SWQgPT09IHBhcmVudElkKSB7XHJcbiAgICAgICAgICBsZXZlbFNoZWxscy5wdXNoKHNoZWxsKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgb3RoZXJTaGVsbHMucHVzaChzaGVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIHtsZXZlbFNoZWxscywgb3RoZXJTaGVsbHN9O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHNvcnRTaGVsbHM8VD4oc2hlbGxzOiBUcmVlVGFibGVJdGVtU2hlbGw8VD5bXSwgc29ydEZ1bmN0aW9uOiBTb3J0RnVuY3Rpb248VD4pOiBUcmVlVGFibGVJdGVtU2hlbGw8VD5bXSB7XHJcbiAgICBjb25zdCBzb3J0RnVuYyA9IChhOiBUcmVlVGFibGVJdGVtU2hlbGw8VD4sIGI6IFRyZWVUYWJsZUl0ZW1TaGVsbDxUPikgPT4ge1xyXG4gICAgICBjb25zdCBkYXRhMTogVCA9IGEuaXRlbS5kYXRhO1xyXG4gICAgICBjb25zdCBkYXRhMjogVCA9IGIuaXRlbS5kYXRhO1xyXG4gICAgICByZXR1cm4gISFkYXRhMSAmJiAhIWRhdGEyID8gc29ydEZ1bmN0aW9uKGRhdGExLCBkYXRhMikgOiAwO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBzaGVsbHMuc29ydChzb3J0RnVuYyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==