UNPKG

angular-bootstrap-italia

Version:

<p align="center"> <h1 align="center">Bootstrap Italia + Angular 9</h1>

95 lines 16.7 kB
import { __decorate } from "tslib"; import { Component, Input } from '@angular/core'; var TimelineComponent = /** @class */ (function () { function TimelineComponent() { this.timeline = []; } TimelineComponent.prototype.ngOnInit = function () { var _this = this; var arrayLastElem = this.timeHistory[this.timeHistory.length - 1]; this.lastElem = { id: arrayLastElem.id, datetime: arrayLastElem.datetime, changes: arrayLastElem.changes, user: arrayLastElem.user, changesName: arrayLastElem.changes ? this.getElemChanges(arrayLastElem.changes) : null }; this.timeHistory.forEach(function (elem, index) { if (index < _this.timeHistory.length - 1) { _this.timeline.push({ id: elem.id, datetime: elem.datetime, user: elem.user, changes: elem.changes, changesName: elem.changes ? _this.getElemChanges(elem.changes) : null }); } }); }; TimelineComponent.prototype.openDetailModal = function (item) { var _this = this; var mainItemIndex = this.timeHistory.indexOf(this.timeHistory.find(function (elem) { return elem.id === item.id; })); var previusElem = mainItemIndex - 1 >= 0 ? this.timeline[mainItemIndex - 1] : null; this.modalDetails = []; var keys = Object.keys(item.changes); keys.forEach(function (key) { if (_this.changesDictionary[key]) { _this.modalDetails.push({ key: _this.changesDictionary[key], value: typeof item.changes[key] !== 'object' ? item.changes[key] : _this.translateObject(item.changes[key]), oldValue: typeof item.changes[key] !== 'object' ? previusElem === null || previusElem === void 0 ? void 0 : previusElem.changes[key] : _this.translateObject(previusElem === null || previusElem === void 0 ? void 0 : previusElem.changes[key]), }); } }); $('#timelineModal').modal('show'); }; TimelineComponent.prototype.translateObject = function (obj) { var _this = this; if (obj) { var translatedObj_1 = {}; var keys = Object.keys(obj); keys.forEach(function (key) { if (_this.changesDictionary[key]) { translatedObj_1[_this.changesDictionary[key]] = obj[key]; } else { translatedObj_1[key] = obj[key]; } }); return translatedObj_1; } else { return null; } }; TimelineComponent.prototype.getElemChanges = function (changes) { var _this = this; var transaltedKeys = []; var keys = Object.keys(changes); keys.forEach(function (key) { if (_this.changesDictionary[key]) { transaltedKeys.push(_this.changesDictionary[key]); } }); return transaltedKeys.join(', '); }; __decorate([ Input() ], TimelineComponent.prototype, "timeHistory", void 0); __decorate([ Input() ], TimelineComponent.prototype, "changesDictionary", void 0); TimelineComponent = __decorate([ Component({ selector: 'lib-timeline', template: "<div class=\"it-timeline-wrapper\">\n <div class=\"row\">\n\n <div class=\"col-12\" *ngFor=\"let item of timeline; let i = index\">\n <div class=\"timeline-element\">\n <div class=\"it-pin-wrapper it-evidence\">\n <div class=\"pin-icon\">\n <svg class=\"icon\">\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-code-circle\"></use>\n </svg>\n </div>\n <div class=\"pin-text\"><span>{{ item.datetime }}</span></div>\n </div>\n <div class=\"card-wrapper\">\n <div class=\"card\">\n <div class=\"card-body\">\n <div class=\"category-top\">\n <p class=\"category\" *ngIf=\"i == 0\">Inserimento</p>\n <p class=\"category\" *ngIf=\"i > 0\">Modifica</p>\n </div>\n <h5 class=\"card-title\" *ngIf=\"item.changesName && i > 0\">Sono state apportate le seguenti modifiche: </h5>\n <p class=\"card-text\" *ngIf=\"item.changesName && i > 0\">{{ item.changesName }}</p>\n <span class=\"card-signature\">utente: {{ item.user }}</span>\n <a class=\"read-more\" href=\"javascript:void(0);\" (click)=\"openDetailModal(item)\">\n <span class=\"text\">Leggi di pi\u00F9</span>\n <svg class=\"icon\">\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-arrow-right\"></use>\n </svg>\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"col-12\">\n <div class=\"timeline-element\">\n <span class=\"it-now-label d-none d-lg-flex\">Ultimo Aggiornamento</span>\n <div class=\"it-pin-wrapper it-now\">\n <div class=\"pin-icon\">\n <svg class=\"icon\">\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-code-circle\"></use>\n </svg>\n </div>\n <div class=\"pin-text\"><span>{{ lastElem.datetime }}</span></div>\n </div>\n <div class=\"card-wrapper\">\n <div class=\"card\">\n <div class=\"card-body\">\n <div class=\"category-top\">\n <p class=\"category\">Modifica</p>\n </div>\n <h5 class=\"card-title\">Sono state apportate le seguenti modifiche: </h5>\n <p class=\"card-text\">{{ lastElem.changesName }}</p>\n <span class=\"card-signature\">utente: {{ lastElem.user }}</span>\n <a class=\"read-more\" href=\"javascript:void(0);\" (click)=\"openDetailModal(lastElem)\">\n <span class=\"text\">Leggi di pi\u00F9</span>\n <svg class=\"icon\">\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-arrow-right\"></use>\n </svg>\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n</div>\n\n<!-- Modal -->\n<div class=\"modal fade\" tabindex=\"-1\" role=\"dialog\" id=\"timelineModal\" data-keyboard=\"false\" data-backdrop=\"static\">\n <div class=\"modal-dialog modal-dialog-centered modal-xl\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Elenco Modifiche Apportate:\n </h5>\n <button class=\"close\" type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\">\n <svg class=\"icon\">\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-close\"></use>\n </svg>\n </button>\n </div>\n <div class=\"modal-body\">\n <div class=\"link-list-wrapper\">\n <ul class=\"link-list\">\n <li *ngFor=\"let elem of modalDetails\">\n <svg class=\"icon icon-primary\">\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-chevron-right\"></use>\n </svg>\n <span class=\"font-weight-bold\">{{ elem.key }}: </span>\n {{ elem.value | json }}\n <span class=\"font-italic\" style=\"color: gray;\" *ngIf=\"elem.oldValue\">\n (valore precedente: {{ elem.oldValue | json }})\n </span>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [""] }) ], TimelineComponent); return TimelineComponent; }()); export { TimelineComponent }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhci1ib290c3RyYXAtaXRhbGlhLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvdGltZWxpbmUvdGltZWxpbmUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQWV6RDtJQXdCRTtRQVZBLGFBQVEsR0FNRixFQUFFLENBQUM7SUFJTyxDQUFDO0lBRWpCLG9DQUFRLEdBQVI7UUFBQSxpQkFxQkM7UUFwQkMsSUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsUUFBUSxHQUFHO1lBQ2QsRUFBRSxFQUFFLGFBQWEsQ0FBQyxFQUFFO1lBQ3BCLFFBQVEsRUFBRSxhQUFhLENBQUMsUUFBUTtZQUNoQyxPQUFPLEVBQUUsYUFBYSxDQUFDLE9BQU87WUFDOUIsSUFBSSxFQUFFLGFBQWEsQ0FBQyxJQUFJO1lBQ3hCLFdBQVcsRUFBRSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtTQUN2RixDQUFDO1FBRUYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBQyxJQUFJLEVBQUUsS0FBSztZQUNuQyxJQUFJLEtBQUssR0FBRyxLQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ3ZDLEtBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO29CQUNqQixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7b0JBQ1gsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO29CQUN2QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7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QUF0QyxpQkFXQztRQVZDLElBQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUUxQixJQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBQSxHQUFHO1lBQ2QsSUFBSSxLQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQy9CLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDbEQ7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBckdRO1FBQVIsS0FBSyxFQUFFOzBEQUE2QjtJQUU1QjtRQUFSLEtBQUssRUFBRTtnRUFBd0M7SUFKckMsaUJBQWlCO1FBTDdCLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxjQUFjO1lBQ3hCLHd4SUFBd0M7O1NBRXpDLENBQUM7T0FDVyxpQkFBaUIsQ0F5RzdCO0lBQUQsd0JBQUM7Q0FBQSxBQXpHRCxJQXlHQztTQXpHWSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLy8galF1ZXJ5XG5kZWNsYXJlIHZhciAkOiBhbnk7XG5cbi8vIE1vZGVsc1xuaW1wb3J0IHsgSVRpbWVIaXN0b3J5IH0gZnJvbSAnLi90aW1lLWhpc3RvcnkubW9kZWwnO1xuaW1wb3J0IHsgSURpY3Rpb25hcnkgfSBmcm9tICcuL2RpY3Rpb25hcnkubW9kZWwnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi10aW1lbGluZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90aW1lbGluZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RpbWVsaW5lLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgVGltZWxpbmVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIHRpbWVIaXN0b3J5OiBJVGltZUhpc3RvcnlbXTtcblxuICBASW5wdXQoKSBjaGFuZ2VzRGljdGlvbmFyeTogSURpY3Rpb25hcnk8c3RyaW5nPjtcblxuICBsYXN0RWxlbToge1xuICAgIGlkOiBhbnksXG4gICAgZGF0ZXRpbWU6IHN0cmluZyxcbiAgICB1c2VyOiBzdHJpbmcsXG4gICAgY2hhbmdlczogb2JqZWN0LFxuICAgIGNoYW5nZXNOYW1lOiBzdHJpbmdcbiAgfTtcblxuICB0aW1lbGluZToge1xuICAgIGlkOiBhbnksXG4gICAgZGF0ZXRpbWU6IHN0cmluZyxcbiAgICB1c2VyOiBzdHJpbmcsXG4gICAgY2hhbmdlczogb2JqZWN0LFxuICAgIGNoYW5nZXNOYW1lOiBzdHJpbmdcbiAgfVtdID0gW107XG5cbiAgbW9kYWxEZXRhaWxzOiBhbnlbXTtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGFycmF5TGFzdEVsZW0gPSB0aGlzLnRpbWVIaXN0b3J5W3RoaXMudGltZUhpc3RvcnkubGVuZ3RoIC0gMV07XG4gICAgdGhpcy5sYXN0RWxlbSA9IHtcbiAgICAgIGlkOiBhcnJheUxhc3RFbGVtLmlkLFxuICAgICAgZGF0ZXRpbWU6IGFycmF5TGFzdEVsZW0uZGF0ZXRpbWUsXG4gICAgICBjaGFuZ2VzOiBhcnJheUxhc3RFbGVtLmNoYW5nZXMsXG4gICAgICB1c2VyOiBhcnJheUxhc3RFbGVtLnVzZXIsXG4gICAgICBjaGFuZ2VzTmFtZTogYXJyYXlMYXN0RWxlbS5jaGFuZ2VzID8gdGhpcy5nZXRFbGVtQ2hhbmdlcyhhcnJheUxhc3RFbGVtLmNoYW5nZXMpIDogbnVsbFxuICAgIH07XG5cbiAgICB0aGlzLnRpbWVIaXN0b3J5LmZvckVhY2goKGVsZW0sIGluZGV4KSA9PiB7XG4gICAgICBpZiAoaW5kZXggPCB0aGlzLnRpbWVIaXN0b3J5Lmxlbmd0aCAtIDEpIHtcbiAgICAgICAgdGhpcy50aW1lbGluZS5wdXNoKHtcbiAgICAgICAgICBpZDogZWxlbS5pZCxcbiAgICAgICAgICBkYXRldGltZTogZWxlbS5kYXRldGltZSxcbiAgICAgICAgICB1c2VyOiBlbGVtLnVzZXIsXG4gICAgICAgICAgY2hhbmdlczogZWxlbS5jaGFuZ2VzLFxuICAgICAgICAgIGNoYW5nZXNOYW1lOiBlbGVtLmNoYW5nZXMgPyB0aGlzLmdldEVsZW1DaGFuZ2VzKGVsZW0uY2hhbmdlcykgOiBudWxsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb3BlbkRldGFpbE1vZGFsKGl0ZW0pIHtcbiAgICBjb25zdCBtYWluSXRlbUluZGV4ID0gdGhpcy50aW1lSGlzdG9yeS5pbmRleE9mKHRoaXMudGltZUhpc3RvcnkuZmluZChlbGVtID0+IGVsZW0uaWQgPT09IGl0ZW0uaWQpKTtcbiAgICBjb25zdCBwcmV2aXVzRWxlbSA9IG1haW5JdGVtSW5kZXggLSAxID49IDAgPyB0aGlzLnRpbWVsaW5lW21haW5JdGVtSW5kZXggLSAxXSA6IG51bGw7XG5cbiAgICB0aGlzLm1vZGFsRGV0YWlscyA9IFtdO1xuXG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGl0ZW0uY2hhbmdlcyk7XG4gICAga2V5cy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAodGhpcy5jaGFuZ2VzRGljdGlvbmFyeVtrZXldKSB7XG4gICAgICAgIHRoaXMubW9kYWxEZXRhaWxzLnB1c2goe1xuICAgICAgICAgIGtleTogdGhpcy5jaGFuZ2VzRGljdGlvbmFyeVtrZXldLFxuICAgICAgICAgIHZhbHVlOiB0eXBlb2YgaXRlbS5jaGFuZ2VzW2tleV0gIT09ICdvYmplY3QnXG4gICAgICAgICAgICA/IGl0ZW0uY2hhbmdlc1trZXldXG4gICAgICAgICAgICA6IHRoaXMudHJhbnNsYXRlT2JqZWN0KGl0ZW0uY2hhbmdlc1trZXldKSxcbiAgICAgICAgICBvbGRWYWx1ZTogdHlwZW9mIGl0ZW0uY2hhbmdlc1trZXldICE9PSAnb2JqZWN0J1xuICAgICAgICAgICAgPyBwcmV2aXVzRWxlbT8uY2hhbmdlc1trZXldXG4gICAgICAgICAgICA6IHRoaXMudHJhbnNsYXRlT2JqZWN0KHByZXZpdXNFbGVtPy5jaGFuZ2VzW2tleV0pLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgICQoJyN0aW1lbGluZU1vZGFsJykubW9kYWwoJ3Nob3cnKTtcbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNsYXRlT2JqZWN0KG9iaikge1xuICAgIGlmIChvYmopIHtcbiAgICAgIGNvbnN0IHRyYW5zbGF0ZWRPYmogPSB7fTtcblxuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gICAgICBrZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY2hhbmdlc0RpY3Rpb25hcnlba2V5XSkge1xuICAgICAgICAgIHRyYW5zbGF0ZWRPYmpbdGhpcy5jaGFuZ2VzRGljdGlvbmFyeVtrZXldXSA9IG9ialtrZXldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRyYW5zbGF0ZWRPYmpba2V5XSA9IG9ialtrZXldO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHRyYW5zbGF0ZWRPYmo7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0RWxlbUNoYW5nZXMoY2hhbmdlczogb2JqZWN0KSB7XG4gICAgY29uc3QgdHJhbnNhbHRlZEtleXMgPSBbXTtcblxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhjaGFuZ2VzKTtcbiAgICBrZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmICh0aGlzLmNoYW5nZXNEaWN0aW9uYXJ5W2tleV0pIHtcbiAgICAgICAgdHJhbnNhbHRlZEtleXMucHVzaCh0aGlzLmNoYW5nZXNEaWN0aW9uYXJ5W2tleV0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRyYW5zYWx0ZWRLZXlzLmpvaW4oJywgJyk7XG4gIH1cblxufVxuIl19