@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
69 lines • 7.36 kB
JavaScript
import { Directive, forwardRef, ElementRef, Input } from '@angular/core';
import { NG_VALIDATORS } from '@angular/forms';
import { some, isEqual, isEmpty } from 'lodash-es';
import * as i0 from "@angular/core";
export class OpcuaDeviceProtocolBrowsePathValidation {
constructor(el) {
this.el = el;
}
validate(control) {
if (control.value) {
if (!this.isValidJson(control.value)) {
return { invalidBrowsePathNotation: true };
}
else {
if (this.isBrowsePathUnique(control.value)) {
return { browsePathNotUnique: true };
}
}
}
return null;
}
isValidJson(value) {
try {
const browsePath = JSON.parse(value);
return !isEmpty(browsePath);
}
catch (error) {
return false;
}
}
toArray(str) {
return JSON.parse(str);
}
isBrowsePathUnique(value) {
const mappings = this.getMappings();
const found = some(mappings, item => {
if (isEqual(item.browsePath, this.toArray(value)) && item.id !== this.model.id) {
return item;
}
});
return found ? true : false;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OpcuaDeviceProtocolBrowsePathValidation, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: OpcuaDeviceProtocolBrowsePathValidation, selector: "[c8yBrowsePathValidator][ngModel]", inputs: { getMappings: "getMappings", model: "model" }, providers: [
{
provide: NG_VALIDATORS,
useExisting: forwardRef(() => OpcuaDeviceProtocolBrowsePathValidation),
multi: true
}
], ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OpcuaDeviceProtocolBrowsePathValidation, decorators: [{
type: Directive,
args: [{
selector: '[c8yBrowsePathValidator][ngModel]',
providers: [
{
provide: NG_VALIDATORS,
useExisting: forwardRef(() => OpcuaDeviceProtocolBrowsePathValidation),
multi: true
}
]
}]
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { getMappings: [{
type: Input
}], model: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BjdWEtZGV2aWNlLXByb3RvY29sLWJyb3dzZS1wYXRoLXZhbGlkYXRpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvdG9jb2wtb3BjdWEvb3BjdWEtZGV2aWNlLXByb3RvY29sLWJyb3dzZS1wYXRoLXZhbGlkYXRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUE4QixhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBWW5ELE1BQU0sT0FBTyx1Q0FBdUM7SUFJbEQsWUFBb0IsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7SUFBRyxDQUFDO0lBRXRDLFFBQVEsQ0FBQyxPQUF3QjtRQUMvQixJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDckMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSxDQUFDO1lBQzdDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxDQUFDO2dCQUN2QyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBSztRQUNmLElBQUksQ0FBQztZQUNILE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsR0FBRztRQUNULE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBSztRQUN0QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNsQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQy9FLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzlCLENBQUM7K0dBeENVLHVDQUF1QzttR0FBdkMsdUNBQXVDLG9IQVJ2QztZQUNUO2dCQUNFLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHVDQUF1QyxDQUFDO2dCQUN0RSxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0Y7OzRGQUVVLHVDQUF1QztrQkFWbkQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUNBQW1DO29CQUM3QyxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHdDQUF3QyxDQUFDOzRCQUN0RSxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRjsrRUFFVSxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgZm9yd2FyZFJlZiwgRWxlbWVudFJlZiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZhbGlkYXRvciwgQWJzdHJhY3RDb250cm9sLCBOR19WQUxJREFUT1JTIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgc29tZSwgaXNFcXVhbCwgaXNFbXB0eSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjOHlCcm93c2VQYXRoVmFsaWRhdG9yXVtuZ01vZGVsXScsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBPcGN1YURldmljZVByb3RvY29sQnJvd3NlUGF0aFZhbGlkYXRpb24pLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgT3BjdWFEZXZpY2VQcm90b2NvbEJyb3dzZVBhdGhWYWxpZGF0aW9uIGltcGxlbWVudHMgVmFsaWRhdG9yIHtcbiAgQElucHV0KCkgZ2V0TWFwcGluZ3M6ICgpID0+IFtdO1xuICBASW5wdXQoKSBtb2RlbDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHt9XG5cbiAgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgaWYgKGNvbnRyb2wudmFsdWUpIHtcbiAgICAgIGlmICghdGhpcy5pc1ZhbGlkSnNvbihjb250cm9sLnZhbHVlKSkge1xuICAgICAgICByZXR1cm4geyBpbnZhbGlkQnJvd3NlUGF0aE5vdGF0aW9uOiB0cnVlIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5pc0Jyb3dzZVBhdGhVbmlxdWUoY29udHJvbC52YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4geyBicm93c2VQYXRoTm90VW5pcXVlOiB0cnVlIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpc1ZhbGlkSnNvbih2YWx1ZSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBicm93c2VQYXRoID0gSlNPTi5wYXJzZSh2YWx1ZSk7XG4gICAgICByZXR1cm4gIWlzRW1wdHkoYnJvd3NlUGF0aCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICB0b0FycmF5KHN0cikge1xuICAgIHJldHVybiBKU09OLnBhcnNlKHN0cik7XG4gIH1cblxuICBpc0Jyb3dzZVBhdGhVbmlxdWUodmFsdWUpOiBib29sZWFuIHtcbiAgICBjb25zdCBtYXBwaW5ncyA9IHRoaXMuZ2V0TWFwcGluZ3MoKTtcbiAgICBjb25zdCBmb3VuZCA9IHNvbWUobWFwcGluZ3MsIGl0ZW0gPT4ge1xuICAgICAgaWYgKGlzRXF1YWwoaXRlbS5icm93c2VQYXRoLCB0aGlzLnRvQXJyYXkodmFsdWUpKSAmJiBpdGVtLmlkICE9PSB0aGlzLm1vZGVsLmlkKSB7XG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmb3VuZCA/IHRydWUgOiBmYWxzZTtcbiAgfVxufVxuIl19