UNPKG

ontimize-web-ngx

Version:
97 lines 15.6 kB
import { Directive, ElementRef, Injector, Input, Renderer2 } from '@angular/core'; import { Subscription } from 'rxjs'; import { distinctUntilChanged, filter } from 'rxjs/operators'; import { OTranslateService } from '../../../../../services/translate/o-translate.service'; import { Util } from '../../../../../util/util'; import { OTableBase } from '../../../o-table-base.class'; import * as i0 from "@angular/core"; import * as i1 from "../../../o-table-base.class"; export class OTableExpandedFooterDirective { set display(val) { this.showMessage(val); } set colspan(value) { this._colspan = value; if (this.tdTableWithMessage) { this.tdTableWithMessage.setAttribute('colspan', value); } } get colspan() { return this._colspan; } constructor(table, element, renderer, injector) { this.table = table; this.element = element; this.renderer = renderer; this.injector = injector; this.subscription = new Subscription(); this.translateService = this.injector.get(OTranslateService); } ngAfterViewInit() { if (this.element.nativeElement.childNodes[2]) { this.tableBody = this.element.nativeElement.childNodes[1]; } this.registerContentChange(); } registerContentChange() { const tr = this.renderer.createElement('tr'); this.tdTableWithMessage = this.renderer.createElement('td'); this.renderer.addClass(tr, 'o-table-no-results'); tr.appendChild(this.tdTableWithMessage); this.renderer.appendChild(this.tableBody, tr); this.subscription.add(this.table.onContentChange.pipe(distinctUntilChanged((prev, curr) => prev.length === curr.length), filter(() => !!this.table.staticData)).subscribe(() => this.showMessage(true))); if (this.table.oTableQuickFilterComponent) { this.subscription.add(this.table.oTableQuickFilterComponent.onChange.pipe().subscribe(() => this.showMessage(true))); } } showMessage(display) { this.removeMessageSpan(); if (display && this.table && this.table.dataSource && this.table.dataSource.renderedData.length === 0) { this.createMessageSpan(); } } removeMessageSpan() { if (this.spanMessageNotResults) { this.renderer.removeChild(this.element.nativeElement, this.spanMessageNotResults); } } destroy() { this.subscription.unsubscribe(); } buildMessage() { let message = ''; message = this.translateService.get('TABLE.EMPTY'); if (this.tableHasQuickFilter() && this.table.oTableQuickFilterComponent.value) { message += this.translateService.get('TABLE.EMPTY_USING_FILTER', [(this.table.oTableQuickFilterComponent.value)]); } return message; } tableHasQuickFilter() { return this.table.quickFilter && Util.isDefined(this.table.oTableQuickFilterComponent); } createMessageSpan() { const message = this.buildMessage(); this.spanMessageNotResults = this.renderer.createElement('span'); const messageNotResults = this.renderer.createText(message); if (this.tdTableWithMessage) { this.tdTableWithMessage.setAttribute('colspan', this.colspan); this.renderer.appendChild(this.spanMessageNotResults, messageNotResults); this.renderer.appendChild(this.tdTableWithMessage, this.spanMessageNotResults); } } } OTableExpandedFooterDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableExpandedFooterDirective, deps: [{ token: i1.OTableBase }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive }); OTableExpandedFooterDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: OTableExpandedFooterDirective, selector: "[oTableExpandedFooter]", inputs: { display: ["oTableExpandedFooter", "display"], colspan: ["oTableExpandedFooterColspan", "colspan"] }, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableExpandedFooterDirective, decorators: [{ type: Directive, args: [{ selector: '[oTableExpandedFooter]' }] }], ctorParameters: function () { return [{ type: i1.OTableBase }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }]; }, propDecorators: { display: [{ type: Input, args: ['oTableExpandedFooter'] }], colspan: [{ type: Input, args: ['oTableExpandedFooterColspan'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1leHBhbmRlZC1mb290ZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvZXh0ZW5zaW9ucy9mb290ZXIvZXhwYW5kZWQvby10YWJsZS1leHBhbmRlZC1mb290ZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUMxRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7QUFLekQsTUFBTSxPQUFPLDZCQUE2QjtJQVd4QyxJQUNJLE9BQU8sQ0FBQyxHQUFZO1FBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQ0ksT0FBTyxDQUFDLEtBQWE7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDeEQ7SUFDSCxDQUFDO0lBQ0QsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFHRCxZQUNT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a0IsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUNoRjtJQUNILENBQUM7OzJIQTlHVSw2QkFBNkI7K0dBQTdCLDZCQUE2Qjs0RkFBN0IsNkJBQTZCO2tCQUh6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3QkFBd0I7aUJBQ25DO3lLQWFLLE9BQU87c0JBRFYsS0FBSzt1QkFBQyxzQkFBc0I7Z0JBTXpCLE9BQU87c0JBRFYsS0FBSzt1QkFBQyw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEluamVjdG9yLCBJbnB1dCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE9UcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvdHJhbnNsYXRlL28tdHJhbnNsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPVGFibGVCYXNlIH0gZnJvbSAnLi4vLi4vLi4vby10YWJsZS1iYXNlLmNsYXNzJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW29UYWJsZUV4cGFuZGVkRm9vdGVyXSdcbn0pXG5leHBvcnQgY2xhc3MgT1RhYmxlRXhwYW5kZWRGb290ZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcblxuICBwcml2YXRlIHNwYW5NZXNzYWdlTm90UmVzdWx0czogYW55O1xuICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IE9UcmFuc2xhdGVTZXJ2aWNlO1xuICBwcml2YXRlIHRhYmxlQm9keTogYW55O1xuICBwcml2YXRlIHRkVGFibGVXaXRoTWVzc2FnZTogYW55O1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAvKipcbiAgICogU2hvdy9IaWRlIG1lc3NhZ2Ugd2hlbiB0aGUgcXVlcnkgaXMgbGF1bmNoZWQvY2FsbGJhY2tlZFxuICAgKi9cbiAgQElucHV0KCdvVGFibGVFeHBhbmRlZEZvb3RlcicpXG4gIHNldCBkaXNwbGF5KHZhbDogYm9vbGVhbikge1xuICAgIHRoaXMuc2hvd01lc3NhZ2UodmFsKTtcbiAgfVxuXG4gIEBJbnB1dCgnb1RhYmxlRXhwYW5kZWRGb290ZXJDb2xzcGFuJylcbiAgc2V0IGNvbHNwYW4odmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2NvbHNwYW4gPSB2YWx1ZTtcbiAgICBpZiAodGhpcy50ZFRhYmxlV2l0aE1lc3NhZ2UpIHtcbiAgICAgIHRoaXMudGRUYWJsZVdpdGhNZXNzYWdlLnNldEF0dHJpYnV0ZSgnY29sc3BhbicsIHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgZ2V0IGNvbHNwYW4oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fY29sc3BhbjtcbiAgfVxuICBwcml2YXRlIF9jb2xzcGFuOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRhYmxlOiBPVGFibGVCYXNlLFxuICAgIHB1YmxpYyBlbGVtZW50OiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yXG4gICkge1xuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9UcmFuc2xhdGVTZXJ2aWNlKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2hpbGROb2Rlc1syXSkge1xuICAgICAgdGhpcy50YWJsZUJvZHkgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5jaGlsZE5vZGVzWzFdO1xuICAgIH1cbiAgICB0aGlzLnJlZ2lzdGVyQ29udGVudENoYW5nZSgpO1xuICB9XG5cbiAgcmVnaXN0ZXJDb250ZW50Q2hhbmdlKCkge1xuICAgIC8vIENyZWF0ZSBhIHRyIHdpdGggYSB0ZCBhbmQgaW5zaWRlIHB1dCB0aGUgbWVzc2FnZSBhbmQgYWRkIHRvIHRib2R5XG4gICAgLy8gPHRyPjx0ZD48c3Bhbj57bWVzc2FnZX08L3NwYW4+PHRkPjx0cj5cbiAgICBjb25zdCB0ciA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgndHInKTtcbiAgICB0aGlzLnRkVGFibGVXaXRoTWVzc2FnZSA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgndGQnKTtcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRyLCAnby10YWJsZS1uby1yZXN1bHRzJyk7XG4gICAgdHIuYXBwZW5kQ2hpbGQodGhpcy50ZFRhYmxlV2l0aE1lc3NhZ2UpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy50YWJsZUJvZHksIHRyKTtcblxuICAgIC8qIFNob3cvSGlkZSBtZXNzYWdlIFdoZW4gdGhlIHJlbmRlcmVyIGRhdGEgaXMgY2hhbmdlZCB3aXRoIHN0YXRpYyBkYXRhKi9cbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQodGhpcy50YWJsZS5vbkNvbnRlbnRDaGFuZ2UucGlwZShcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2LCBjdXJyKSA9PiBwcmV2Lmxlbmd0aCA9PT0gY3Vyci5sZW5ndGgpLFxuICAgICAgZmlsdGVyKCgpID0+ICEhdGhpcy50YWJsZS5zdGF0aWNEYXRhKVxuICAgICkuc3Vic2NyaWJlKCgpID0+IHRoaXMuc2hvd01lc3NhZ2UodHJ1ZSkpKTtcblxuICAgIC8qICBTaG93L0hpZGUgbWVzc2FnZSB3aGVuIHRoZSBxdWlja2ZpbHRlciBpcyBjaGFuZ2VkICovXG4gICAgaWYgKHRoaXMudGFibGUub1RhYmxlUXVpY2tGaWx0ZXJDb21wb25lbnQpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnRhYmxlLm9UYWJsZVF1aWNrRmlsdGVyQ29tcG9uZW50Lm9uQ2hhbmdlLnBpcGUoKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zaG93TWVzc2FnZSh0cnVlKSkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzaG93TWVzc2FnZShkaXNwbGF5OiBib29sZWFuKTogdm9pZCB7XG4gICAgLy8gcmVzZXQgc3BhbiBtZXNzYWdlXG4gICAgdGhpcy5yZW1vdmVNZXNzYWdlU3BhbigpO1xuXG4gICAgaWYgKGRpc3BsYXkgJiYgdGhpcy50YWJsZSAmJiB0aGlzLnRhYmxlLmRhdGFTb3VyY2UgJiYgdGhpcy50YWJsZS5kYXRhU291cmNlLnJlbmRlcmVkRGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIGdlbmVyYXRlIG5ldyBtZXNzYWdlXG4gICAgICB0aGlzLmNyZWF0ZU1lc3NhZ2VTcGFuKCk7XG4gICAgfVxuICB9XG5cblxuICByZW1vdmVNZXNzYWdlU3BhbigpIHtcbiAgICBpZiAodGhpcy5zcGFuTWVzc2FnZU5vdFJlc3VsdHMpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHRoaXMuc3Bhbk1lc3NhZ2VOb3RSZXN1bHRzKTtcbiAgICB9XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRNZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgbGV0IG1lc3NhZ2UgPSAnJztcbiAgICBtZXNzYWdlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldCgnVEFCTEUuRU1QVFknKTtcbiAgICBpZiAodGhpcy50YWJsZUhhc1F1aWNrRmlsdGVyKCkgJiYgdGhpcy50YWJsZS5vVGFibGVRdWlja0ZpbHRlckNvbXBvbmVudC52YWx1ZSkge1xuICAgICAgbWVzc2FnZSArPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KCdUQUJMRS5FTVBUWV9VU0lOR19GSUxURVInLCBbKHRoaXMudGFibGUub1RhYmxlUXVpY2tGaWx0ZXJDb21wb25lbnQudmFsdWUpXSk7XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRhYmxlSGFzUXVpY2tGaWx0ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGFibGUucXVpY2tGaWx0ZXIgJiYgVXRpbC5pc0RlZmluZWQodGhpcy50YWJsZS5vVGFibGVRdWlja0ZpbHRlckNvbXBvbmVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlTWVzc2FnZVNwYW4oKSB7XG4gICAgLy8gMSBCdWlsZCBtZXNzYWdlXG4gICAgY29uc3QgbWVzc2FnZSA9IHRoaXMuYnVpbGRNZXNzYWdlKCk7XG4gICAgLy8gMiBDcmVhdGUgbWVzc2FnZVxuICAgIHRoaXMuc3Bhbk1lc3NhZ2VOb3RSZXN1bHRzID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgY29uc3QgbWVzc2FnZU5vdFJlc3VsdHMgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZVRleHQobWVzc2FnZSk7XG4gICAgaWYgKHRoaXMudGRUYWJsZVdpdGhNZXNzYWdlKSB7XG4gICAgICB0aGlzLnRkVGFibGVXaXRoTWVzc2FnZS5zZXRBdHRyaWJ1dGUoJ2NvbHNwYW4nLCB0aGlzLmNvbHNwYW4pO1xuICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLnNwYW5NZXNzYWdlTm90UmVzdWx0cywgbWVzc2FnZU5vdFJlc3VsdHMpO1xuICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLnRkVGFibGVXaXRoTWVzc2FnZSwgdGhpcy5zcGFuTWVzc2FnZU5vdFJlc3VsdHMpO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=