UNPKG

@netgrif/components-core

Version:

Netgrif Application engine frontend core Angular library

88 lines 14.6 kB
import { Component, Input } from '@angular/core'; import { FormControl } from '@angular/forms'; import { map, startWith } from 'rxjs/operators'; import { orderBy } from 'natural-orderby'; import { AbstractHeaderModeComponent } from '../abstract-header-mode.component'; import * as i0 from "@angular/core"; import * as i1 from "@ngx-translate/core"; import * as i2 from "../../../logger/services/logger.service"; export class AbstractEditModeComponent extends AbstractHeaderModeComponent { _translate; _log; formControls = []; filterOptions = []; subHeader; headerService; constructor(_translate, _log) { super(); this._translate = _translate; this._log = _log; } ngOnInit() { this.subHeader = this.headerService.headerColumnCount$.subscribe(newCount => this.updateHeaderCount(newCount)); } ngOnDestroy() { this.subHeader.unsubscribe(); } updateHeaderCount(newCount) { if (this.formControls.length > newCount) { this.formControls = this.formControls.slice(0, newCount); this.filterOptions = this.filterOptions.slice(0, newCount); return; } while (this.formControls.length < newCount) { const i = this.formControls.length; const formControl = new FormControl(); formControl.setValue(this.headerService.headerState.selectedHeaders[i] ?? this.headerService.headerState.lastSelectedHeaders[i] ?? null); this.formControls.push(formControl); this.filterOptions.push(formControl.valueChanges.pipe(startWith(''), map(inputText => this._filter(inputText)))); } } _filter(value) { let filterValue; if (typeof value === 'string') { filterValue = value.toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g, ''); } else { filterValue = ''; } const arrayGroup = []; arrayGroup.push(...this.headerService.fieldsGroup); const meta = arrayGroup.splice(0, 1); // TODO IMPROVEMENT 17.7.2020 - don't sort the fieldsGroup array here, but sort it once in the headerService and maintain // the sorted order there meta.push(...orderBy(arrayGroup, v => v.groupTitle, 'asc')); meta.forEach(group => group.fields = orderBy(group.fields, v => v.title, 'asc')); return meta.map(group => ({ groupTitle: group.groupTitle, fields: group.fields.filter(option => this.checkImmediateTitle(option) && this._translate.instant(option.title).toLowerCase().normalize('NFD') .replace(/[\u0300-\u036f]/g, '').indexOf(filterValue) === 0) })).filter(group => group.fields.length > 0); } headerColumnSelected(columnIndex, newHeaderColumn) { this.headerService.headerColumnSelected(columnIndex, newHeaderColumn); } renderSelection = (header) => { return header ? this._translate.instant(header.title) : ''; }; checkImmediateTitle(option) { if (option.title === undefined || option.title === '') { this._log.warn('Immediate field in column [' + option.uniqueId + '] does not have a title'); return false; } return true; } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AbstractEditModeComponent, deps: [{ token: i1.TranslateService }, { token: i2.LoggerService }], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AbstractEditModeComponent, selector: "ncc-abstract-edit-mode", inputs: { headerService: "headerService" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AbstractEditModeComponent, decorators: [{ type: Component, args: [{ selector: 'ncc-abstract-edit-mode', template: '' }] }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.LoggerService }], propDecorators: { headerService: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZWRpdC1tb2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvaGVhZGVyL2hlYWRlci1tb2Rlcy9lZGl0LW1vZGUvYWJzdHJhY3QtZWRpdC1tb2RlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFHbEUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHOUMsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBR3hDLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDOzs7O0FBVzlFLE1BQU0sT0FBZ0IseUJBQTBCLFNBQVEsMkJBQTJCO0lBTy9DO0lBQ0E7SUFQekIsWUFBWSxHQUE0QixFQUFFLENBQUM7SUFDM0MsYUFBYSxHQUEyQyxFQUFFLENBQUM7SUFDeEQsU0FBUyxDQUFlO0lBRWxCLGFBQWEsQ0FBd0I7SUFFckQsWUFBZ0MsVUFBNEIsRUFDNUIsSUFBbUI7UUFDL0MsS0FBSyxFQUFFLENBQUM7UUFGb0IsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFDNUIsU0FBSSxHQUFKLElBQUksQ0FBZTtJQUVuRCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNuSCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxTQUFTLENB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RUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ25FLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxXQUFtQixFQUFFLGVBQTZCO1FBQzFFLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsV0FBVyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFTSxlQUFlLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUNoQyxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDL0QsQ0FBQyxDQUFBO0lBRU8sbUJBQW1CLENBQUMsTUFBb0I7UUFDNUMsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLEVBQUUsRUFBRTtZQUNuRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsR0FBRyxNQUFNLENBQUMsUUFBUSxHQUFHLHlCQUF5QixDQUFDLENBQUM7WUFDNUYsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO3dHQTdFaUIseUJBQXlCOzRGQUF6Qix5QkFBeUIsaUlBRmpDLEVBQUU7OzRGQUVNLHlCQUF5QjtrQkFKOUMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxRQUFRLEVBQUUsRUFBRTtpQkFDZjtpSEFNbUIsYUFBYTtzQkFBNUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBYnN0cmFjdEhlYWRlclNlcnZpY2V9IGZyb20gJy4uLy4uL2Fic3RyYWN0LWhlYWRlci1zZXJ2aWNlJztcbmltcG9ydCB7SGVhZGVyQ29sdW1ufSBmcm9tICcuLi8uLi9tb2RlbHMvaGVhZGVyLWNvbHVtbic7XG5pbXBvcnQge0Zvcm1Db250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge21hcCwgc3RhcnRXaXRofSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtGaWVsZHNHcm91cH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZpZWxkcy1ncm91cCc7XG5pbXBvcnQge29yZGVyQnl9IGZyb20gJ25hdHVyYWwtb3JkZXJieSc7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2xvZ2dlci9zZXJ2aWNlcy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge0Fic3RyYWN0SGVhZGVyTW9kZUNvbXBvbmVudH0gZnJvbSAnLi4vYWJzdHJhY3QtaGVhZGVyLW1vZGUuY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBIZWFkZXJPcHRpb24ge1xuICAgIGdyb3VwVGl0bGU6IHN0cmluZztcbiAgICBmaWVsZHM6IEFycmF5PEhlYWRlckNvbHVtbj47XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmNjLWFic3RyYWN0LWVkaXQtbW9kZScsXG4gICAgdGVtcGxhdGU6ICcnXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0RWRpdE1vZGVDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdEhlYWRlck1vZGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgcHVibGljIGZvcm1Db250cm9sczogQXJyYXk8Rm9ybUNvbnRyb2w8YW55Pj4gPSBbXTtcbiAgICBwdWJsaWMgZmlsdGVyT3B0aW9uczogQXJyYXk8T2JzZXJ2YWJsZTxBcnJheTxIZWFkZXJPcHRpb24+Pj4gPSBbXTtcbiAgICBwcm90ZWN0ZWQgc3ViSGVhZGVyOiBTdWJzY3JpcHRpb247XG5cbiAgICBASW5wdXQoKSBwdWJsaWMgaGVhZGVyU2VydmljZTogQWJzdHJhY3RIZWFkZXJTZXJ2aWNlO1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2xvZzogTG9nZ2VyU2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN1YkhlYWRlciA9IHRoaXMuaGVhZGVyU2VydmljZS5oZWFkZXJDb2x1bW5Db3VudCQuc3Vic2NyaWJlKG5ld0NvdW50ID0+IHRoaXMudXBkYXRlSGVhZGVyQ291bnQobmV3Q291bnQpKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdWJIZWFkZXIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdXBkYXRlSGVhZGVyQ291bnQobmV3Q291bnQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5mb3JtQ29udHJvbHMubGVuZ3RoID4gbmV3Q291bnQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2xzID0gdGhpcy5mb3JtQ29udHJvbHMuc2xpY2UoMCwgbmV3Q291bnQpO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJPcHRpb25zID0gdGhpcy5maWx0ZXJPcHRpb25zLnNsaWNlKDAsIG5ld0NvdW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlICh0aGlzLmZvcm1Db250cm9scy5sZW5ndGggPCBuZXdDb3VudCkge1xuICAgICAgICAgICAgY29uc3QgaSA9IHRoaXMuZm9ybUNvbnRyb2xzLmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gICAgICAgICAgICBmb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmhlYWRlclNlcnZpY2UuaGVhZGVyU3RhdGUuc2VsZWN0ZWRIZWFkZXJzW2ldID8/IHRoaXMuaGVhZGVyU2VydmljZS5oZWFkZXJTdGF0ZS5sYXN0U2VsZWN0ZWRIZWFkZXJzW2ldID8/IG51bGwpO1xuICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbHMucHVzaChmb3JtQ29udHJvbCk7XG4gICAgICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnMucHVzaChmb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgoJycpLFxuICAgICAgICAgICAgICAgIG1hcChpbnB1dFRleHQgPT4gdGhpcy5fZmlsdGVyKGlucHV0VGV4dCkpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBfZmlsdGVyKHZhbHVlKTogQXJyYXk8SGVhZGVyT3B0aW9uPiB7XG4gICAgICAgIGxldCBmaWx0ZXJWYWx1ZTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGZpbHRlclZhbHVlID0gKHZhbHVlIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKS5ub3JtYWxpemUoJ05GRCcpLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csICcnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpbHRlclZhbHVlID0gJyc7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhcnJheUdyb3VwOiBBcnJheTxGaWVsZHNHcm91cD4gPSBbXTtcbiAgICAgICAgYXJyYXlHcm91cC5wdXNoKC4uLnRoaXMuaGVhZGVyU2VydmljZS5maWVsZHNHcm91cCk7XG4gICAgICAgIGNvbnN0IG1ldGEgPSBhcnJheUdyb3VwLnNwbGljZSgwLCAxKTtcbiAgICAgICAgLy8gVE9ETyBJTVBST1ZFTUVOVCAxNy43LjIwMjAgLSBkb24ndCBzb3J0IHRoZSBmaWVsZHNHcm91cCBhcnJheSBoZXJlLCBidXQgc29ydCBpdCBvbmNlIGluIHRoZSBoZWFkZXJTZXJ2aWNlIGFuZCBtYWludGFpblxuICAgICAgICAvLyAgdGhlIHNvcnRlZCBvcmRlciB0aGVyZVxuICAgICAgICBtZXRhLnB1c2goLi4ub3JkZXJCeShhcnJheUdyb3VwLCB2ID0+IHYuZ3JvdXBUaXRsZSwgJ2FzYycpKTtcbiAgICAgICAgbWV0YS5mb3JFYWNoKGdyb3VwID0+IGdyb3VwLmZpZWxkcyA9IG9yZGVyQnkoZ3JvdXAuZmllbGRzLCB2ID0+IHYudGl0bGUsICdhc2MnKSk7XG5cbiAgICAgICAgcmV0dXJuIG1ldGEubWFwKGdyb3VwID0+ICh7XG4gICAgICAgICAgICBncm91cFRpdGxlOiBncm91cC5ncm91cFRpdGxlLFxuICAgICAgICAgICAgZmllbGRzOiBncm91cC5maWVsZHMuZmlsdGVyKG9wdGlvbiA9PiB0aGlzLmNoZWNrSW1tZWRpYXRlVGl0bGUob3B0aW9uKSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KG9wdGlvbi50aXRsZSkudG9Mb3dlckNhc2UoKS5ub3JtYWxpemUoJ05GRCcpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csICcnKS5pbmRleE9mKGZpbHRlclZhbHVlKSA9PT0gMClcbiAgICAgICAgfSkpLmZpbHRlcihncm91cCA9PiBncm91cC5maWVsZHMubGVuZ3RoID4gMCk7XG4gICAgfVxuXG4gICAgcHVibGljIGhlYWRlckNvbHVtblNlbGVjdGVkKGNvbHVtbkluZGV4OiBudW1iZXIsIG5ld0hlYWRlckNvbHVtbjogSGVhZGVyQ29sdW1uKSB7XG4gICAgICAgIHRoaXMuaGVhZGVyU2VydmljZS5oZWFkZXJDb2x1bW5TZWxlY3RlZChjb2x1bW5JbmRleCwgbmV3SGVhZGVyQ29sdW1uKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVuZGVyU2VsZWN0aW9uID0gKGhlYWRlcikgPT4ge1xuICAgICAgICByZXR1cm4gaGVhZGVyID8gdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoaGVhZGVyLnRpdGxlKSA6ICcnO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tJbW1lZGlhdGVUaXRsZShvcHRpb246IEhlYWRlckNvbHVtbik6IGJvb2xlYW4ge1xuICAgICAgICBpZiAob3B0aW9uLnRpdGxlID09PSB1bmRlZmluZWQgfHwgb3B0aW9uLnRpdGxlID09PSAnJykge1xuICAgICAgICAgICAgdGhpcy5fbG9nLndhcm4oJ0ltbWVkaWF0ZSBmaWVsZCBpbiBjb2x1bW4gWycgKyBvcHRpb24udW5pcXVlSWQgKyAnXSBkb2VzIG5vdCBoYXZlIGEgdGl0bGUnKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG4iXX0=