angular-calendar-timeline
Version:
A timeline for angular that shows events on a timeline board in different modes: days, weeks, and months.
45 lines • 5.59 kB
JavaScript
export class RowDeterminant {
constructor(_itemsIterator) {
this._itemsIterator = _itemsIterator;
this._generateMap();
}
_generateMap() {
const map = [];
const iterate = (items) => {
(items ?? []).forEach(item => {
if (item.streamItems) {
item._streamLevels.forEach((levelArr, index) => {
map.push({ stream: item, items: levelArr });
});
}
else {
map.push({ stream: item, items: [item] });
}
if (item.childrenItemsExpanded) {
iterate(item.childrenItems ?? []);
}
});
};
iterate(this._itemsIterator.items);
this.rows = map;
}
getRowIndexByItem(item) {
let index;
for (let i = 0; i < this.rows.length; i++) {
const group = this.rows[i];
if (item.id === group.stream.id) {
index = i;
break;
}
const hasChild = group.items.find(i => i.id === item.id);
if (hasChild) {
index = i;
}
}
return index;
}
getStreamByRowIndex(index) {
return this.rows[index]?.stream;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWRldGVybWluYW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jYWxlbmRhci10aW1lbGluZS9zcmMvbGliL2hlbHBlcnMvcm93LWRldGVybWluYW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE1BQU0sT0FBTyxjQUFjO0lBR3pCLFlBQW9CLGNBQThCO1FBQTlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUNoRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVPLFlBQVk7UUFDbEIsTUFBTSxHQUFHLEdBQVcsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBc0IsRUFBUSxFQUFFO1lBQy9DLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDM0IsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFO3dCQUM3QyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQTtvQkFDM0MsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztxQkFBTSxDQUFDO29CQUNOLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFDLENBQUMsQ0FBQztnQkFDMUMsQ0FBQztnQkFFRCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO29CQUMvQixPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDcEMsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFBO1FBRUQsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7SUFDbEIsQ0FBQztJQUVELGlCQUFpQixDQUFDLElBQW1CO1FBQ25DLElBQUksS0FBSyxDQUFDO1FBRVYsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDMUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUUzQixJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDaEMsS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFDVixNQUFNO1lBQ1IsQ0FBQztZQUVELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDekQsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDYixLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ1osQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUFhO1FBQy9CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDbEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUl0ZW1zSXRlcmF0b3IsIElUaW1lbGluZUl0ZW0gfSBmcm9tIFwiLi4vbW9kZWxzXCI7XHJcblxyXG5pbnRlcmZhY2UgSVJvdyB7XHJcbiAgaXRlbXM6IElUaW1lbGluZUl0ZW1bXTtcclxuICBzdHJlYW06IElUaW1lbGluZUl0ZW07XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSb3dEZXRlcm1pbmFudCB7XHJcbiAgcm93czogSVJvd1tdO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9pdGVtc0l0ZXJhdG9yOiBJSXRlbXNJdGVyYXRvcikge1xyXG4gICAgdGhpcy5fZ2VuZXJhdGVNYXAoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dlbmVyYXRlTWFwKCk6IHZvaWQge1xyXG4gICAgY29uc3QgbWFwOiBJUm93W10gPSBbXTtcclxuICAgIGNvbnN0IGl0ZXJhdGUgPSAoaXRlbXM6IElUaW1lbGluZUl0ZW1bXSk6IHZvaWQgPT4ge1xyXG4gICAgICAoaXRlbXMgPz8gW10pLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0uc3RyZWFtSXRlbXMpIHtcclxuICAgICAgICAgIGl0ZW0uX3N0cmVhbUxldmVscy5mb3JFYWNoKChsZXZlbEFyciwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgbWFwLnB1c2goe3N0cmVhbTogaXRlbSwgaXRlbXM6IGxldmVsQXJyfSlcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBtYXAucHVzaCh7c3RyZWFtOiBpdGVtLCBpdGVtczogW2l0ZW1dfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbkl0ZW1zRXhwYW5kZWQpIHtcclxuICAgICAgICAgIGl0ZXJhdGUoaXRlbS5jaGlsZHJlbkl0ZW1zID8/IFtdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGl0ZXJhdGUodGhpcy5faXRlbXNJdGVyYXRvci5pdGVtcyk7XHJcbiAgICB0aGlzLnJvd3MgPSBtYXA7XHJcbiAgfVxyXG5cclxuICBnZXRSb3dJbmRleEJ5SXRlbShpdGVtOiBJVGltZWxpbmVJdGVtKTogbnVtYmVyIHtcclxuICAgIGxldCBpbmRleDtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBncm91cCA9IHRoaXMucm93c1tpXTtcclxuXHJcbiAgICAgIGlmIChpdGVtLmlkID09PSBncm91cC5zdHJlYW0uaWQpIHtcclxuICAgICAgICBpbmRleCA9IGk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGhhc0NoaWxkID0gZ3JvdXAuaXRlbXMuZmluZChpID0+IGkuaWQgPT09IGl0ZW0uaWQpO1xyXG4gICAgICBpZiAoaGFzQ2hpbGQpIHtcclxuICAgICAgICBpbmRleCA9IGk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaW5kZXg7XHJcbiAgfVxyXG5cclxuICBnZXRTdHJlYW1CeVJvd0luZGV4KGluZGV4OiBudW1iZXIpOiBJVGltZWxpbmVJdGVtIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLnJvd3NbaW5kZXhdPy5zdHJlYW07XHJcbiAgfVxyXG59XHJcblxyXG4iXX0=