ontimize-web-ngx
Version:
Ontimize Web framework using Angular 15
97 lines • 15.6 kB
JavaScript
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=