@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
88 lines • 14.6 kB
JavaScript
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=