ngx-dynamic-dashboard
Version:
an dashboard lib for angular 10
67 lines • 8.7 kB
JavaScript
import { Facet, Tag } from './facet-model';
export class FacetTagProcessor {
constructor(objectList) {
this.facet_tags = [];
this.objectList = objectList;
}
getFacetTags() {
const me = this;
this.objectList.forEach(function (item) {
me.formatAndUpdateTagList(item.tags);
});
return this.facet_tags;
}
formatAndUpdateTagList(items) {
items.forEach(tag => {
// add the first facet and tag to the facet_tag array
if (!this.facet_tags.length) {
this.createFacetAndAddItToTheFacetTagArray(tag);
}
else {
let facetExists = false;
this.facet_tags.forEach(facet => {
if (facet.name.toLowerCase() === tag.facet.toLowerCase()) {
facetExists = true;
}
});
if (facetExists) {
this.updateFacetWithTag(tag);
}
else {
this.createFacetAndAddItToTheFacetTagArray(tag);
}
}
});
}
createFacetAndAddItToTheFacetTagArray(tag) {
const _tags = [];
const _tag = this.createTag(this.capitalize(tag.name));
_tags.push(_tag);
const facet = new Facet(tag.facet, _tags);
this.facet_tags.push(facet);
}
createTag(tag) {
return new Tag(tag);
}
updateFacetWithTag(tag) {
// find the facet and then add the tag or update the count
this.facet_tags.forEach(facet => {
if (facet.name.toLowerCase() === tag.facet.toLowerCase()) {
let tagExists = false;
facet.tags.forEach(_tag => {
if (_tag.name.toLowerCase() === tag.name.toLowerCase()) {
tagExists = true;
_tag.count = _tag.count + 1;
}
});
if (!tagExists) {
facet.tags.push(this.createTag(this.capitalize(tag.name)));
}
}
});
}
capitalize(value) {
return value.charAt(0).toUpperCase() + value.slice(1).toLowerCase();
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZXQtdGFnLXByb2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvYmVubGkvd29ya3NwYWNlcy9uZ3gtZHluYW1pYy1kYXNoYm9hcmQtZnJhbWV3b3JrL3Byb2plY3RzL25neC1keW5hbWljLWRhc2hib2FyZC9zcmMvIiwic291cmNlcyI6WyJkYXNoYm9hcmQvZmFjZXQvZmFjZXQtdGFnLXByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsS0FBSyxFQUFFLEdBQUcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxNQUFNLE9BQU8saUJBQWlCO0lBSzFCLFlBQVksVUFBaUI7UUFIN0IsZUFBVSxHQUFpQixFQUFFLENBQUM7UUFJMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDakMsQ0FBQztJQUVELFlBQVk7UUFFUixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJO1lBRWxDLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFekMsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUVELHNCQUFzQixDQUFDLEtBQVk7UUFFL0IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUVoQixxREFBcUQ7WUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFO2dCQUV6QixJQUFJLENBQUMscUNBQXFDLENBQUMsR0FBRyxDQUFDLENBQUM7YUFFbkQ7aUJBQU07Z0JBRUgsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDO2dCQUV4QixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFFNUIsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEVBQUU7d0JBQ3RELFdBQVcsR0FBRyxJQUFJLENBQUM7cUJBQ3RCO2dCQUNMLENBQUMsQ0FBQyxDQUFDO2dCQUVILElBQUksV0FBVyxFQUFFO29CQUViLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFFaEM7cUJBQU07b0JBRUgsSUFBSSxDQUFDLHFDQUFxQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUVuRDthQUNKO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQscUNBQXFDLENBQUMsR0FBUTtRQUUxQyxNQUFNLEtBQUssR0FBZSxFQUFFLENBQUM7UUFDN0IsTUFBTSxJQUFJLEdBQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRTVELEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFakIsTUFBTSxLQUFLLEdBQVUsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUVqRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVoQyxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQUc7UUFFVCxPQUFPLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxHQUFRO1FBRXZCLDBEQUEwRDtRQUMxRCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUU1QixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsRUFBRTtnQkFHdEQsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO2dCQUd0QixLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFFdEIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUU7d0JBRXBELFNBQVMsR0FBRyxJQUFJLENBQUM7d0JBRWpCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7cUJBRS9CO2dCQUVMLENBQUMsQ0FBQyxDQUFDO2dCQUVILElBQUksQ0FBQyxTQUFTLEVBQUU7b0JBRVosS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzlEO2FBQ0o7UUFFTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBYTtRQUNwQixPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4RSxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0ZhY2V0LCBUYWd9IGZyb20gJy4vZmFjZXQtbW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgRmFjZXRUYWdQcm9jZXNzb3Ige1xuXG4gICAgZmFjZXRfdGFnczogQXJyYXk8RmFjZXQ+ID0gW107XG4gICAgb2JqZWN0TGlzdDogYW55W107XG5cbiAgICBjb25zdHJ1Y3RvcihvYmplY3RMaXN0OiBhbnlbXSkge1xuICAgICAgICB0aGlzLm9iamVjdExpc3QgPSBvYmplY3RMaXN0O1xuICAgIH1cblxuICAgIGdldEZhY2V0VGFncygpIHtcblxuICAgICAgICBjb25zdCBtZSA9IHRoaXM7XG4gICAgICAgIHRoaXMub2JqZWN0TGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG5cbiAgICAgICAgICAgIG1lLmZvcm1hdEFuZFVwZGF0ZVRhZ0xpc3QoaXRlbS50YWdzKTtcblxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5mYWNldF90YWdzO1xuICAgIH1cblxuICAgIGZvcm1hdEFuZFVwZGF0ZVRhZ0xpc3QoaXRlbXM6IGFueVtdKSB7XG5cbiAgICAgICAgaXRlbXMuZm9yRWFjaCh0YWcgPT4ge1xuXG4gICAgICAgICAgICAvLyBhZGQgdGhlIGZpcnN0IGZhY2V0IGFuZCB0YWcgdG8gdGhlIGZhY2V0X3RhZyBhcnJheVxuICAgICAgICAgICAgaWYgKCF0aGlzLmZhY2V0X3RhZ3MubGVuZ3RoKSB7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUZhY2V0QW5kQWRkSXRUb1RoZUZhY2V0VGFnQXJyYXkodGFnKTtcblxuICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgIGxldCBmYWNldEV4aXN0cyA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5mYWNldF90YWdzLmZvckVhY2goZmFjZXQgPT4ge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChmYWNldC5uYW1lLnRvTG93ZXJDYXNlKCkgPT09IHRhZy5mYWNldC50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmYWNldEV4aXN0cyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGlmIChmYWNldEV4aXN0cykge1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRmFjZXRXaXRoVGFnKHRhZyk7XG5cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlRmFjZXRBbmRBZGRJdFRvVGhlRmFjZXRUYWdBcnJheSh0YWcpO1xuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjcmVhdGVGYWNldEFuZEFkZEl0VG9UaGVGYWNldFRhZ0FycmF5KHRhZzogYW55KSB7XG5cbiAgICAgICAgY29uc3QgX3RhZ3M6IEFycmF5PFRhZz4gPSBbXTtcbiAgICAgICAgY29uc3QgX3RhZzogVGFnID0gdGhpcy5jcmVhdGVUYWcodGhpcy5jYXBpdGFsaXplKHRhZy5uYW1lKSk7XG5cbiAgICAgICAgX3RhZ3MucHVzaChfdGFnKTtcblxuICAgICAgICBjb25zdCBmYWNldDogRmFjZXQgPSBuZXcgRmFjZXQodGFnLmZhY2V0LCBfdGFncyk7XG5cbiAgICAgICAgdGhpcy5mYWNldF90YWdzLnB1c2goZmFjZXQpO1xuXG4gICAgfVxuXG4gICAgY3JlYXRlVGFnKHRhZykge1xuXG4gICAgICAgIHJldHVybiBuZXcgVGFnKHRhZyk7XG4gICAgfVxuXG4gICAgdXBkYXRlRmFjZXRXaXRoVGFnKHRhZzogYW55KSB7XG5cbiAgICAgICAgLy8gZmluZCB0aGUgZmFjZXQgYW5kIHRoZW4gYWRkIHRoZSB0YWcgb3IgdXBkYXRlIHRoZSBjb3VudFxuICAgICAgICB0aGlzLmZhY2V0X3RhZ3MuZm9yRWFjaChmYWNldCA9PiB7XG5cbiAgICAgICAgICAgIGlmIChmYWNldC5uYW1lLnRvTG93ZXJDYXNlKCkgPT09IHRhZy5mYWNldC50b0xvd2VyQ2FzZSgpKSB7XG5cblxuICAgICAgICAgICAgICAgIGxldCB0YWdFeGlzdHMgPSBmYWxzZTtcblxuXG4gICAgICAgICAgICAgICAgZmFjZXQudGFncy5mb3JFYWNoKF90YWcgPT4ge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChfdGFnLm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gdGFnLm5hbWUudG9Mb3dlckNhc2UoKSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdFeGlzdHMgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBfdGFnLmNvdW50ID0gX3RhZy5jb3VudCArIDE7XG5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRhZ0V4aXN0cykge1xuXG4gICAgICAgICAgICAgICAgICAgIGZhY2V0LnRhZ3MucHVzaCh0aGlzLmNyZWF0ZVRhZyh0aGlzLmNhcGl0YWxpemUodGFnLm5hbWUpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNhcGl0YWxpemUodmFsdWU6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdmFsdWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB2YWx1ZS5zbGljZSgxKS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbn1cbiJdfQ==