UNPKG

@ng-flexy/form

Version:

Flexy components and tools to build Angular 8+ applications

62 lines 9.18 kB
import { __awaiter } from "tslib"; import { get, set } from 'lodash'; import * as jsonata_ from 'jsonata'; const jsonata = jsonata_; export class FlexyFormAbstractOptionsComponent { constructor(optionsService, logger) { this.optionsService = optionsService; this.logger = logger; this.filterData = {}; } initOptions() { return __awaiter(this, void 0, void 0, function* () { if (this.optionsUrl) { this.loading = true; const options = yield this.optionsService.loadOptions(this.optionsUrl, this.optionsMapper, this.optionsPath).toPromise(); this._optionsCache = options; this.loading = false; if (this.optionsFilter && this.optionsFilter.filter) { this._setOptionsFiltering(); } else { this.options = options; } } else { this.loading = false; } }); } _setOptionsFiltering() { try { const jsonataExp = jsonata(this.optionsFilter.filter); this.logger.debug('jsonata', this.optionsFilter.filter); this.changesSubscription = this.form.currentData$.subscribe(data => { let isChanged = false; this.optionsFilter.observableFields.forEach(path => { const vp = get(data, path); if (get(this.filterData, path) !== vp) { set(this.filterData, path, vp); isChanged = true; } }); if (isChanged) { this.logger.debug('evaluate', { optionsList: this._optionsCache, observableFields: this.filterData }); const jsonOptions = jsonataExp.evaluate({ optionsList: this._optionsCache, observableFields: this.filterData }); const options = jsonOptions ? (Array.isArray(jsonOptions) ? jsonOptions : [jsonOptions]) : []; this.options = options.filter(item => !!item); } }); } catch (e) { this.logger.error('Wrong jsonata expresion', this.optionsFilter.filter, e); } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3Qtb3B0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtL3NyYy9saWIvY29tcG9uZW50cy9hYnN0cmFjdC1vcHRpb25zLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBRUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDbEMsT0FBTyxLQUFLLFFBQVEsTUFBTSxTQUFTLENBQUM7QUFLcEMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDO0FBT3pCLE1BQU0sT0FBZ0IsaUNBQWlDO0lBa0JyRCxZQUFnQyxjQUE4QyxFQUFZLE1BQTBCO1FBQXBGLG1CQUFjLEdBQWQsY0FBYyxDQUFnQztRQUFZLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBSjFHLGVBQVUsR0FBRyxFQUFFLENBQUM7SUFJNkYsQ0FBQztJQUVsSCxXQUFXOztZQUNmLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7Z0JBQ3BCLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDekgsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNyQixJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUU7b0JBQ25ELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2lCQUM3QjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztpQkFDeEI7YUFDRjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQzthQUN0QjtRQUNILENBQUM7S0FBQTtJQUVPLG9CQUFvQjtRQUMxQixJQUFJO1lBQ0YsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDeEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDakUsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO2dCQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDakQsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDM0IsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUU7d0JBQ3JDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDL0IsU0FBUyxHQUFHLElBQUksQ0FBQztxQkFDbEI7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxTQUFTLEVBQUU7b0JBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFO3dCQUM1QixXQUFXLEVBQUUsSUFBSSxDQUFDLGFBQWE7d0JBQy9CLGdCQUFnQixFQUFFLElBQUksQ0FBQyxVQUFVO3FCQUNsQyxDQUFDLENBQUM7b0JBQ0gsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQzt3QkFDdEMsV0FBVyxFQUFFLElBQUksQ0FBQyxhQUFhO3dCQUMvQixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsVUFBVTtxQkFDbEMsQ0FBbUIsQ0FBQztvQkFDckIsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQzlGLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDL0M7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztTQUM1RTtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsZXh5Rm9ybUNvbnRyb2xPcHRpb25zU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Zvcm0tY29udHJvbC1vcHRpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBnZXQsIHNldCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgKiBhcyBqc29uYXRhXyBmcm9tICdqc29uYXRhJztcbmltcG9ydCB7IEZsZXh5TG9nZ2VyU2VydmljZSB9IGZyb20gJ0BuZy1mbGV4eS9jb3JlJztcbmltcG9ydCB7IEZsZXh5Rm9ybSB9IGZyb20gJy4uL21vZGVscy9mb3JtLm1vZGVsJztcbmltcG9ydCB7IFNlbGVjdE9wdGlvbiwgU2VsZWN0T3B0aW9uTWFwcGVyIH0gZnJvbSAnLi4vbW9kZWxzL3NlbGVjdC1vcHRpb24uZGF0YSc7XG5cbmNvbnN0IGpzb25hdGEgPSBqc29uYXRhXztcblxuZXhwb3J0IGludGVyZmFjZSBGbGV4eUZvcm1PcHRpb25zRmlsdGVyIHtcbiAgb2JzZXJ2YWJsZUZpZWxkczogc3RyaW5nW107XG4gIGZpbHRlcjogc3RyaW5nO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRmxleHlGb3JtQWJzdHJhY3RPcHRpb25zQ29tcG9uZW50IHtcbiAgZm9ybTogRmxleHlGb3JtO1xuXG4gIC8vIGlucHV0c1xuICBvcHRpb25zOiBTZWxlY3RPcHRpb25bXTtcbiAgb3B0aW9uc1VybDogc3RyaW5nO1xuICBvcHRpb25zUGF0aDogc3RyaW5nO1xuICBvcHRpb25zTWFwcGVyOiBTZWxlY3RPcHRpb25NYXBwZXIgfCBzdHJpbmc7XG4gIG9wdGlvbnNSYXdJZDogc3RyaW5nO1xuICBvcHRpb25zRmlsdGVyOiBGbGV4eUZvcm1PcHRpb25zRmlsdGVyO1xuXG4gIGxvYWRpbmc6IGJvb2xlYW47XG5cbiAgcHJvdGVjdGVkIGNoYW5nZXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJvdGVjdGVkIGZpbHRlckRhdGEgPSB7fTtcblxuICBwcml2YXRlIF9vcHRpb25zQ2FjaGU6IFNlbGVjdE9wdGlvbltdO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgb3B0aW9uc1NlcnZpY2U6IEZsZXh5Rm9ybUNvbnRyb2xPcHRpb25zU2VydmljZSwgcHJvdGVjdGVkIGxvZ2dlcjogRmxleHlMb2dnZXJTZXJ2aWNlKSB7fVxuXG4gIGFzeW5jIGluaXRPcHRpb25zKCkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNVcmwpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICBjb25zdCBvcHRpb25zID0gYXdhaXQgdGhpcy5vcHRpb25zU2VydmljZS5sb2FkT3B0aW9ucyh0aGlzLm9wdGlvbnNVcmwsIHRoaXMub3B0aW9uc01hcHBlciwgdGhpcy5vcHRpb25zUGF0aCkudG9Qcm9taXNlKCk7XG4gICAgICB0aGlzLl9vcHRpb25zQ2FjaGUgPSBvcHRpb25zO1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5vcHRpb25zRmlsdGVyICYmIHRoaXMub3B0aW9uc0ZpbHRlci5maWx0ZXIpIHtcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uc0ZpbHRlcmluZygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0T3B0aW9uc0ZpbHRlcmluZygpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QganNvbmF0YUV4cCA9IGpzb25hdGEodGhpcy5vcHRpb25zRmlsdGVyLmZpbHRlcik7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnanNvbmF0YScsIHRoaXMub3B0aW9uc0ZpbHRlci5maWx0ZXIpO1xuICAgICAgdGhpcy5jaGFuZ2VzU3Vic2NyaXB0aW9uID0gdGhpcy5mb3JtLmN1cnJlbnREYXRhJC5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgIGxldCBpc0NoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vcHRpb25zRmlsdGVyLm9ic2VydmFibGVGaWVsZHMuZm9yRWFjaChwYXRoID0+IHtcbiAgICAgICAgICBjb25zdCB2cCA9IGdldChkYXRhLCBwYXRoKTtcbiAgICAgICAgICBpZiAoZ2V0KHRoaXMuZmlsdGVyRGF0YSwgcGF0aCkgIT09IHZwKSB7XG4gICAgICAgICAgICBzZXQodGhpcy5maWx0ZXJEYXRhLCBwYXRoLCB2cCk7XG4gICAgICAgICAgICBpc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpc0NoYW5nZWQpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnZXZhbHVhdGUnLCB7XG4gICAgICAgICAgICBvcHRpb25zTGlzdDogdGhpcy5fb3B0aW9uc0NhY2hlLFxuICAgICAgICAgICAgb2JzZXJ2YWJsZUZpZWxkczogdGhpcy5maWx0ZXJEYXRhXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29uc3QganNvbk9wdGlvbnMgPSBqc29uYXRhRXhwLmV2YWx1YXRlKHtcbiAgICAgICAgICAgIG9wdGlvbnNMaXN0OiB0aGlzLl9vcHRpb25zQ2FjaGUsXG4gICAgICAgICAgICBvYnNlcnZhYmxlRmllbGRzOiB0aGlzLmZpbHRlckRhdGFcbiAgICAgICAgICB9KSBhcyBTZWxlY3RPcHRpb25bXTtcbiAgICAgICAgICBjb25zdCBvcHRpb25zID0ganNvbk9wdGlvbnMgPyAoQXJyYXkuaXNBcnJheShqc29uT3B0aW9ucykgPyBqc29uT3B0aW9ucyA6IFtqc29uT3B0aW9uc10pIDogW107XG4gICAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucy5maWx0ZXIoaXRlbSA9PiAhIWl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcignV3JvbmcganNvbmF0YSBleHByZXNpb24nLCB0aGlzLm9wdGlvbnNGaWx0ZXIuZmlsdGVyLCBlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==