@ahmedaoui/ngx-org-chart
Version:
Hierarchical Organization Chart
19 lines • 3.21 kB
JavaScript
export class Node {
constructor(structure, parent) {
this.parent = parent;
const [name, ...reports] = structure;
this.name = name.split('(')[0].trim();
const titleMatch = name.match(/\(([^)]+)\)/);
this.title = titleMatch && titleMatch[1].trim();
this.childs = reports.map(r => r.substring(1))
.reduce((previous, current) => {
if (!current.startsWith(' ')) {
previous.push([]);
}
previous[previous.length - 1].push(current);
return previous;
}, [])
.map(r => new Node(r, this));
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1vcmctY2hhcnQvc3JjL2xpYi9ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE1BQU0sT0FBTyxJQUFJO0lBUWYsWUFBWSxTQUFtQixFQUFFLE1BQWE7UUFDNUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsTUFBTSxDQUFDLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLFNBQVMsQ0FBQztRQUNyQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsS0FBSyxHQUFHLFVBQVUsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFaEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMzQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDN0IsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNwQixDQUFDO1lBRUQsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVDLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsRUFBRSxFQUFnQixDQUFDO2FBQ25CLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSU5vZGUge1xuICBuYW1lOiBzdHJpbmc7XG4gIGNzc0NsYXNzPzogc3RyaW5nO1xuICBpbWFnZT86IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmcgfCBudWxsO1xuICBjaGlsZHM/OiBJTm9kZVtdO1xufVxuXG5leHBvcnQgY2xhc3MgTm9kZSBpbXBsZW1lbnRzIElOb2RlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBjc3NDbGFzcz86IHN0cmluZztcbiAgaW1hZ2U/OiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nIHwgbnVsbDtcbiAgY2hpbGRzOiBOb2RlW107XG4gIHBhcmVudD86IE5vZGU7XG5cbiAgY29uc3RydWN0b3Ioc3RydWN0dXJlOiBzdHJpbmdbXSwgcGFyZW50PzogTm9kZSkge1xuICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICAgIGNvbnN0IFtuYW1lLCAuLi5yZXBvcnRzXSA9IHN0cnVjdHVyZTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lLnNwbGl0KCcoJylbMF0udHJpbSgpO1xuICAgIGNvbnN0IHRpdGxlTWF0Y2ggPSBuYW1lLm1hdGNoKC9cXCgoW14pXSspXFwpLyk7XG4gICAgdGhpcy50aXRsZSA9IHRpdGxlTWF0Y2ggJiYgdGl0bGVNYXRjaFsxXS50cmltKCk7XG5cbiAgICB0aGlzLmNoaWxkcyA9IHJlcG9ydHMubWFwKHIgPT4gci5zdWJzdHJpbmcoMSkpXG4gICAgICAucmVkdWNlKChwcmV2aW91cywgY3VycmVudCkgPT4ge1xuICAgICAgICBpZiAoIWN1cnJlbnQuc3RhcnRzV2l0aCgnICcpKSB7XG4gICAgICAgICAgcHJldmlvdXMucHVzaChbXSk7XG4gICAgICAgIH1cblxuICAgICAgICBwcmV2aW91c1twcmV2aW91cy5sZW5ndGggLSAxXS5wdXNoKGN1cnJlbnQpO1xuICAgICAgICByZXR1cm4gcHJldmlvdXM7XG4gICAgICB9LCBbXSBhcyBzdHJpbmdbXVtdKVxuICAgICAgLm1hcChyID0+IG5ldyBOb2RlKHIsIHRoaXMpKTtcbiAgfVxufVxuIl19