@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
92 lines • 16.6 kB
JavaScript
import { AbstractTimeInstanceField, AbstractTimeInstanceFieldValidation } from './models/abstract-time-instance-field';
import moment from 'moment';
import { AbstractBaseDataFieldComponent } from "../base-component/abstract-base-data-field.component";
import { DATA_FIELD_PORTAL_DATA } from "../models/data-field-portal-data-injection-token";
import { Component, Inject, Optional } from '@angular/core';
import { MAT_DATE_LOCALE } from '@angular/material/core';
import * as i0 from "@angular/core";
import * as i1 from "@ngx-translate/core";
import * as i2 from "@angular/material/core";
import * as i3 from "../../translate/language.service";
export class AbstractTimeInstanceFieldComponent extends AbstractBaseDataFieldComponent {
_translate;
_adapter;
_locale;
_languageService;
_subLang;
constructor(_translate, _adapter, _locale, _languageService, dataFieldPortalData) {
super(dataFieldPortalData);
this._translate = _translate;
this._adapter = _adapter;
this._locale = _locale;
this._languageService = _languageService;
if (this._locale !== this._languageService.getLanguage()) {
this.setLangToAdapter(this._languageService.getLanguage());
}
this._subLang = this._languageService.getLangChange$().subscribe(lang => {
if (this._locale !== lang) {
this.setLangToAdapter(lang);
}
});
}
ngOnDestroy() {
super.ngOnDestroy();
this._subLang.unsubscribe();
}
setLangToAdapter(lang) {
this._locale = lang;
this._adapter.setLocale(this._locale);
}
buildErrorMessage(dataField) {
if (this.formControlRef.hasError(AbstractTimeInstanceFieldValidation.REQUIRED)) {
return this._translate.instant('dataField.validations.required');
}
if (this.formControlRef.hasError(AbstractTimeInstanceFieldValidation.VALID_BETWEEN)) {
const tmp = dataField.validations.find(value => value.validationRule.includes(AbstractTimeInstanceFieldValidation.BETWEEN)).validationRule.split(' ');
const parts = tmp[1].split(',');
let left = AbstractTimeInstanceField.parseDate(parts[0]);
let right = AbstractTimeInstanceField.parseDate(parts[1]);
left = moment.isMoment(left) ? left.format('DD.MM.YYYY HH:mm:ss') : left;
right = moment.isMoment(right) ? right.format('DD.MM.YYYY HH:mm:ss') : right;
if (left === 'past') {
return this.resolveErrorMessage(dataField, AbstractTimeInstanceFieldValidation.BETWEEN, this._translate.instant('dataField.validations.datePast', { right }));
}
if (right === 'future') {
return this.resolveErrorMessage(dataField, AbstractTimeInstanceFieldValidation.BETWEEN, this._translate.instant('dataField.validations.dateFuture', { left }));
}
return this.resolveErrorMessage(dataField, AbstractTimeInstanceFieldValidation.BETWEEN, this._translate.instant('dataField.validations.dateRange', { left, right }));
}
if (this.formControlRef.hasError(AbstractTimeInstanceFieldValidation.VALID_WORKDAY)) {
return this.resolveErrorMessage(dataField, AbstractTimeInstanceFieldValidation.WORKDAY, this._translate.instant('dataField.validations.workday'));
}
if (this.formControlRef.hasError(AbstractTimeInstanceFieldValidation.VALID_WEEKEND)) {
return this.resolveErrorMessage(dataField, AbstractTimeInstanceFieldValidation.WEEKEND, this._translate.instant('dataField.validations.weekend'));
}
return '';
}
resolveErrorMessage(dataField, search, generalMessage) {
const validation = dataField.validations.find(value => value.validationRule.includes(search));
if (validation.validationMessage && validation.validationMessage !== '') {
return validation.validationMessage;
}
return generalMessage;
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AbstractTimeInstanceFieldComponent, deps: [{ token: i1.TranslateService }, { token: i2.DateAdapter }, { token: MAT_DATE_LOCALE }, { token: i3.LanguageService }, { token: DATA_FIELD_PORTAL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AbstractTimeInstanceFieldComponent, selector: "ncc-abstract-time-instance-field", usesInheritance: true, ngImport: i0, template: '', isInline: true });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AbstractTimeInstanceFieldComponent, decorators: [{
type: Component,
args: [{
selector: 'ncc-abstract-time-instance-field',
template: ''
}]
}], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.DateAdapter }, { type: undefined, decorators: [{
type: Inject,
args: [MAT_DATE_LOCALE]
}] }, { type: i3.LanguageService }, { type: undefined, decorators: [{
type: Optional
}, {
type: Inject,
args: [DATA_FIELD_PORTAL_DATA]
}] }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtdGltZS1pbnN0YW5jZS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2RhdGEtZmllbGRzL3RpbWUtaW5zdGFuY2UtYWJzdHJhY3QtZmllbGQvYWJzdHJhY3QtdGltZS1pbnN0YW5jZS1maWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHlCQUF5QixFQUFFLG1DQUFtQyxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFFckgsT0FBTyxNQUFnQixNQUFNLFFBQVEsQ0FBQztBQUN0QyxPQUFPLEVBQUMsOEJBQThCLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUNwRyxPQUFPLEVBQUMsc0JBQXNCLEVBQXNCLE1BQU0sa0RBQWtELENBQUM7QUFDN0csT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQWEsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBYyxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFRcEUsTUFBTSxPQUFnQixrQ0FBd0UsU0FBUSw4QkFBaUM7SUFHbkc7SUFDQTtJQUN5QjtJQUN6QjtJQUp0QixRQUFRLENBQWU7SUFDakMsWUFBZ0MsVUFBNEIsRUFDNUIsUUFBMEIsRUFDRCxPQUFlLEVBQ3hDLGdCQUFpQyxFQUNDLG1CQUEyQztRQUN6RyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUxDLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLGFBQVEsR0FBUixRQUFRLENBQWtCO1FBQ0QsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUN4QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBRzdELElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFD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QUUsRUFBRTtpQkFDZjs7MEJBTTBCLE1BQU07MkJBQUMsZUFBZTs7MEJBRXRCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBYnN0cmFjdFRpbWVJbnN0YW5jZUZpZWxkLCBBYnN0cmFjdFRpbWVJbnN0YW5jZUZpZWxkVmFsaWRhdGlvbn0gZnJvbSAnLi9tb2RlbHMvYWJzdHJhY3QtdGltZS1pbnN0YW5jZS1maWVsZCc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IG1vbWVudCwge01vbWVudH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7QWJzdHJhY3RCYXNlRGF0YUZpZWxkQ29tcG9uZW50fSBmcm9tIFwiLi4vYmFzZS1jb21wb25lbnQvYWJzdHJhY3QtYmFzZS1kYXRhLWZpZWxkLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtEQVRBX0ZJRUxEX1BPUlRBTF9EQVRBLCBEYXRhRmllbGRQb3J0YWxEYXRhfSBmcm9tIFwiLi4vbW9kZWxzL2RhdGEtZmllbGQtcG9ydGFsLWRhdGEtaW5qZWN0aW9uLXRva2VuXCI7XG5pbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGF0ZUFkYXB0ZXIsIE1BVF9EQVRFX0xPQ0FMRX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQge0xhbmd1YWdlU2VydmljZX0gZnJvbSAnLi4vLi4vdHJhbnNsYXRlL2xhbmd1YWdlLnNlcnZpY2UnO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25jYy1hYnN0cmFjdC10aW1lLWluc3RhbmNlLWZpZWxkJyxcbiAgICB0ZW1wbGF0ZTogJydcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RUaW1lSW5zdGFuY2VGaWVsZENvbXBvbmVudDxUIGV4dGVuZHMgQWJzdHJhY3RUaW1lSW5zdGFuY2VGaWVsZD4gZXh0ZW5kcyBBYnN0cmFjdEJhc2VEYXRhRmllbGRDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gICAgcHJvdGVjdGVkIF9zdWJMYW5nOiBTdWJzY3JpcHRpb247XG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2FkYXB0ZXI6IERhdGVBZGFwdGVyPGFueT4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBJbmplY3QoTUFUX0RBVEVfTE9DQUxFKSBwcm90ZWN0ZWQgX2xvY2FsZTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2xhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERBVEFfRklFTERfUE9SVEFMX0RBVEEpIGRhdGFGaWVsZFBvcnRhbERhdGE6IERhdGFGaWVsZFBvcnRhbERhdGE8VD4pIHtcbiAgICAgICAgc3VwZXIoZGF0YUZpZWxkUG9ydGFsRGF0YSk7XG4gICAgICAgIGlmICh0aGlzLl9sb2NhbGUgIT09IHRoaXMuX2xhbmd1YWdlU2VydmljZS5nZXRMYW5ndWFnZSgpKSB7XG4gICAgICAgICAgICB0aGlzLnNldExhbmdUb0FkYXB0ZXIodGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmdldExhbmd1YWdlKCkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3N1YkxhbmcgPSB0aGlzLl9sYW5ndWFnZVNlcnZpY2UuZ2V0TGFuZ0NoYW5nZSQoKS5zdWJzY3JpYmUobGFuZyA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5fbG9jYWxlICE9PSBsYW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRMYW5nVG9BZGFwdGVyKGxhbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIHRoaXMuX3N1YkxhbmcudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0TGFuZ1RvQWRhcHRlcihsYW5nOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fbG9jYWxlID0gbGFuZ1xuICAgICAgICB0aGlzLl9hZGFwdGVyLnNldExvY2FsZSh0aGlzLl9sb2NhbGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBidWlsZEVycm9yTWVzc2FnZShkYXRhRmllbGQ6IEFic3RyYWN0VGltZUluc3RhbmNlRmllbGQpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybUNvbnRyb2xSZWYuaGFzRXJyb3IoQWJzdHJhY3RUaW1lSW5zdGFuY2VGaWVsZFZhbGlkYXRpb24uUkVRVUlSRUQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ2RhdGFGaWVsZC52YWxpZGF0aW9ucy5yZXF1aXJlZCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmZvcm1Db250cm9sUmVmLmhhc0Vycm9yKEFic3RyYWN0VGltZUluc3RhbmNlRmllbGRWYWxpZGF0aW9uLlZBTElEX0JFVFdFRU4pKSB7XG4gICAgICAgICAgICBjb25zdCB0bXAgPSBkYXRhRmllbGQudmFsaWRhdGlvbnMuZmluZCh2YWx1ZSA9PlxuICAgICAgICAgICAgICAgIHZhbHVlLnZhbGlkYXRpb25SdWxlLmluY2x1ZGVzKEFic3RyYWN0VGltZUluc3RhbmNlRmllbGRWYWxpZGF0aW9uLkJFVFdFRU4pXG4gICAgICAgICAgICApLnZhbGlkYXRpb25SdWxlLnNwbGl0KCcgJyk7XG4gICAgICAgICAgICBjb25zdCBwYXJ0cyA9IHRtcFsxXS5zcGxpdCgnLCcpO1xuICAgICAgICAgICAgbGV0IGxlZnQgPSBBYnN0cmFjdFRpbWVJbnN0YW5jZUZpZWxkLnBhcnNlRGF0ZShwYXJ0c1swXSk7XG4gICAgICAgICAgICBsZXQgcmlnaHQgPSBBYnN0cmFjdFRpbWVJbnN0YW5jZUZpZWxkLnBhcnNlRGF0ZShwYXJ0c1sxXSk7XG4gICAgICAgICAgICBsZWZ0ID0gbW9tZW50LmlzTW9tZW50KGxlZnQpID8gKGxlZnQgYXMgTW9tZW50KS5mb3JtYXQoJ0RELk1NLllZWVkgSEg6bW06c3MnKSA6IGxlZnQ7XG4gICAgICAgICAgICByaWdodCA9IG1vbWVudC5pc01vbWVudChyaWdodCkgPyAocmlnaHQgYXMgTW9tZW50KS5mb3JtYXQoJ0RELk1NLllZWVkgSEg6bW06c3MnKSA6IHJpZ2h0O1xuICAgICAgICAgICAgaWYgKGxlZnQgPT09ICdwYXN0Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlc29sdmVFcnJvck1lc3NhZ2UoZGF0YUZpZWxkLCBBYnN0cmFjdFRpbWVJbnN0YW5jZUZpZWxkVmFsaWRhdGlvbi5CRVRXRUVOLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnZGF0YUZpZWxkLnZhbGlkYXRpb25zLmRhdGVQYXN0Jywge3JpZ2h0fSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJpZ2h0ID09PSAnZnV0dXJlJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlc29sdmVFcnJvck1lc3NhZ2UoZGF0YUZpZWxkLCBBYnN0cmFjdFRpbWVJbnN0YW5jZUZpZWxkVmFsaWRhdGlvbi5CRVRXRUVOLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnZGF0YUZpZWxkLnZhbGlkYXRpb25zLmRhdGVGdXR1cmUnLCB7bGVmdH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlc29sdmVFcnJvck1lc3NhZ2UoZGF0YUZpZWxkLCBBYnN0cmFjdFRpbWVJbnN0YW5jZUZpZWxkVmFsaWRhdGlvbi5CRVRXRUVOLFxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQudmFsaWRhdGlvbnMuZGF0ZVJhbmdlJywge2xlZnQsIHJpZ2h0fSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmZvcm1Db250cm9sUmVmLmhhc0Vycm9yKEFic3RyYWN0VGltZUluc3RhbmNlRmllbGRWYWxpZGF0aW9uLlZBTElEX1dPUktEQVkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXNvbHZlRXJyb3JNZXNzYWdlKFxuICAgICAgICAgICAgICAgIGRhdGFGaWVsZCwgQWJzdHJhY3RUaW1lSW5zdGFuY2VGaWVsZFZhbGlkYXRpb24uV09SS0RBWSwgdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ2RhdGFGaWVsZC52YWxpZGF0aW9ucy53b3JrZGF5JylcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZm9ybUNvbnRyb2xSZWYuaGFzRXJyb3IoQWJzdHJhY3RUaW1lSW5zdGFuY2VGaWVsZFZhbGlkYXRpb24uVkFMSURfV0VFS0VORCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlc29sdmVFcnJvck1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgZGF0YUZpZWxkLCBBYnN0cmFjdFRpbWVJbnN0YW5jZUZpZWxkVmFsaWRhdGlvbi5XRUVLRU5ELCB0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnZGF0YUZpZWxkLnZhbGlkYXRpb25zLndlZWtlbmQnKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlc29sdmVFcnJvck1lc3NhZ2UoZGF0YUZpZWxkOiBBYnN0cmFjdFRpbWVJbnN0YW5jZUZpZWxkLCBzZWFyY2g6IHN0cmluZywgZ2VuZXJhbE1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICBjb25zdCB2YWxpZGF0aW9uID0gZGF0YUZpZWxkLnZhbGlkYXRpb25zLmZpbmQodmFsdWUgPT4gdmFsdWUudmFsaWRhdGlvblJ1bGUuaW5jbHVkZXMoc2VhcmNoKSk7XG4gICAgICAgIGlmICh2YWxpZGF0aW9uLnZhbGlkYXRpb25NZXNzYWdlICYmIHZhbGlkYXRpb24udmFsaWRhdGlvbk1lc3NhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsaWRhdGlvbi52YWxpZGF0aW9uTWVzc2FnZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2VuZXJhbE1lc3NhZ2U7XG4gICAgfVxuXG59XG4iXX0=