@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
111 lines • 15.9 kB
JavaScript
import { Injectable } from '@angular/core';
import { Operators } from '../models/operator/operators';
import { Equals } from '../models/operator/equals';
import { EqualsDate } from '../models/operator/equals-date';
import { EqualsDateTime } from '../models/operator/equals-date-time';
import { InRange } from '../models/operator/in-range';
import { InRangeDate } from '../models/operator/in-range-date';
import { InRangeDateTime } from '../models/operator/in-range-date-time';
import { IsNull } from '../models/operator/is-null';
import { LessThan } from '../models/operator/less-than';
import { LessThanDate } from '../models/operator/less-than-date';
import { LessThanDateTime } from '../models/operator/less-than-date-time';
import { Like } from '../models/operator/like';
import { MoreThan } from '../models/operator/more-than';
import { MoreThanDate } from '../models/operator/more-than-date';
import { MoreThanDateTime } from '../models/operator/more-than-date-time';
import { NotEquals } from '../models/operator/not-equals';
import { NotEqualsDate } from '../models/operator/not-equals-date';
import { Substring } from '../models/operator/substring';
import { LessThanEqual } from '../models/operator/less-than-equal';
import { MoreThanEqual } from '../models/operator/more-than-equal';
import { MoreThanEqualDate } from '../models/operator/more-than-equal-date';
import { MoreThanEqualDateTime } from '../models/operator/more-than-equal-date-time';
import { LessThanEqualDate } from '../models/operator/less-than-equal-date';
import { LessThanEqualDateTime } from '../models/operator/less-than-equal-date-time';
import { NotEqualsDateTime } from '../models/operator/not-equals-date-time';
import * as i0 from "@angular/core";
/**
* A service that resolves {@link Operators} (or custom string) into a concrete (@link Operator) implementation class.
*/
export class OperatorResolverService {
/**
* Resolves the operators in the {@link Operators} enum into their corresponding classes.
* Passes all unresolved values into the [toCustomClass()]{@link OperatorResolverService#toCustomClass} method.
* @param operator a serialized representation of the {@link Operator} class
*/
toClass(operator) {
switch (operator) {
default:
return this.toCustomClass(operator);
case Operators.EQUALS:
return Equals;
case Operators.EQUALS_DATE:
return EqualsDate;
case Operators.EQUALS_DATE_TIME:
return EqualsDateTime;
case Operators.IN_RANGE:
return InRange;
case Operators.IN_RANGE_DATE:
return InRangeDate;
case Operators.IN_RANGE_DATE_TIME:
return InRangeDateTime;
case Operators.IS_NULL:
return IsNull;
case Operators.LESS_THAN:
return LessThan;
case Operators.LESS_THAN_DATE:
return LessThanDate;
case Operators.LESS_THAN_DATE_TIME:
return LessThanDateTime;
case Operators.LESS_THAN_EQUAL:
return LessThanEqual;
case Operators.LESS_THAN_EQUAL_DATE:
return LessThanEqualDate;
case Operators.LESS_THAN_EQUAL_DATE_TIME:
return LessThanEqualDateTime;
case Operators.LIKE:
return Like;
case Operators.MORE_THAN:
return MoreThan;
case Operators.MORE_THAN_DATE:
return MoreThanDate;
case Operators.MORE_THAN_DATE_TIME:
return MoreThanDateTime;
case Operators.MORE_THAN_EQUAL:
return MoreThanEqual;
case Operators.MORE_THAN_EQUAL_DATE:
return MoreThanEqualDate;
case Operators.MORE_THAN_EQUAL_DATE_TIME:
return MoreThanEqualDateTime;
case Operators.NOT_EQUALS:
return NotEquals;
case Operators.NOT_EQUALS_DATE:
return NotEqualsDate;
case Operators.NOT_EQUALS_DATE_TIME:
return NotEqualsDateTime;
case Operators.SUBSTRING:
return Substring;
}
}
/**
* Should resolve any custom operators into their corresponding class objects.
*
* If you implement any custom {@link Operator} classes, you should override this method to resolve them after serialization.
*
* @param operator the serialized string provided by your [Operator.serialize()]{@link Operator#serialize} implementation
* @returns `undefined`
*/
toCustomClass(operator) {
return undefined;
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OperatorResolverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OperatorResolverService, providedIn: 'root' });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OperatorResolverService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0b3ItcmVzb2x2ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvc2VhcmNoL29wZXJhdG9yLXNlcnZpY2Uvb3BlcmF0b3ItcmVzb2x2ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFPLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDakQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQzFELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDcEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQzdELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0RSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDbEQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3RELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUN4RSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3RELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx3Q0FBd0Ms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RztJQUNPLGFBQWEsQ0FBQyxRQUFnQjtRQUNwQyxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO3dHQXhFUSx1QkFBdUI7NEdBQXZCLHVCQUF1QixjQUZwQixNQUFNOzs0RkFFVCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7T3BlcmF0b3J9IGZyb20gJy4uL21vZGVscy9vcGVyYXRvci9vcGVyYXRvcic7XG5pbXBvcnQge09wZXJhdG9yc30gZnJvbSAnLi4vbW9kZWxzL29wZXJhdG9yL29wZXJhdG9ycyc7XG5pbXBvcnQge0VxdWFsc30gZnJvbSAnLi4vbW9kZWxzL29wZXJhdG9yL2VxdWFscyc7XG5pbXBvcnQge0VxdWFsc0RhdGV9IGZyb20gJy4uL21vZGVscy9vcGVyYXRvci9lcXVhbHMtZGF0ZSc7XG5pbXBvcnQge0VxdWFsc0RhdGVUaW1lfSBmcm9tICcuLi9tb2RlbHMvb3BlcmF0b3IvZXF1YWxzLWRhdGUtdGltZSc7XG5pbXBvcnQge0luUmFuZ2V9IGZyb20gJy4uL21vZGVscy9vcGVyYXRvci9pbi1yYW5nZSc7XG5pbXBvcnQge0luUmFuZ2VEYXRlfSBmcm9tICcuLi9tb2RlbHMvb3BlcmF0b3IvaW4tcmFuZ2UtZGF0ZSc7XG5pbXBvcnQge0luUmFuZ2VEYXRlVGltZX0gZnJvbSAnLi4vbW9kZWxzL29wZXJhdG9yL2luLXJhbmdlLWRhdGUtdGltZSc7XG5pbXBvcnQge0lzTnVsbH0gZnJvbSAnLi4vbW9kZWxzL29wZXJhdG9yL2lzLW51bGwnO1xuaW1wb3J0IHtMZXNzVGhhbn0gZnJvbSAnLi4vbW9kZWxzL29wZXJhdG9yL2xlc3MtdGhhbic7XG5pbXBvcnQge0xlc3NUaGFuRGF0ZX0gZnJvbSAnLi4vbW9kZWxzL29wZXJhdG9yL2xlc3MtdGhhbi1kYXRlJztcbmltcG9ydCB7TGVzc1RoYW5EYXRlVGltZX0gZnJvbSAnLi4vbW9kZWxzL29wZXJhdG9yL2xlc3MtdGhhbi1kYXRlLXRpbWUnO1xuaW1wb3J0IHtMaWtlfSBmcm9tICcuLi9tb2RlbHMvb3BlcmF0b3IvbGlrZSc7XG5pbXBvcnQge01vcmVUaGFufSBmcm9tICcuLi9tb2RlbHMvb3BlcmF0b3IvbW9yZS10aGFuJztcbmltcG9ydCB7TW9yZVRoYW5EYXRlfSBmcm9tICcuLi9tb2RlbHMvb3BlcmF0b3IvbW9yZS10aGFuLWRhdGUnO1xuaW1wb3J0IHtNb3JlVGhhbkRhdGVUaW1lfSBmcm9tICcuLi9tb2RlbHMvb3BlcmF0b3IvbW9yZS10aGFuLWRhdGUtdGltZSc7XG5pbXBvcnQge05vdEVxdWFsc30gZnJvbSAnLi4vbW9kZWxzL29wZXJhdG9yL25vdC1lcXVhbHMnO1xuaW1wb3J0IHtOb3RFcXVhbHNEYXRlfSBmcm9tICcuLi9tb2RlbHMvb3BlcmF0b3Ivbm90LWVxdWFscy1kYXRlJztcbmltcG9ydCB7U3Vic3RyaW5nfSBmcm9tICcuLi9tb2RlbHMvb3BlcmF0b3Ivc3Vic3RyaW5nJztcbmltcG9ydCB7TGVzc1RoYW5FcXVhbH0gZnJvbSAnLi4vbW9kZWxzL29wZXJhdG9yL2xlc3MtdGhhbi1lcXVhbCc7XG5pbXBvcnQge01vcmVUaGFuRXF1YWx9IGZyb20gJy4uL21vZGVscy9vcGVyYXRvci9tb3JlLXRoYW4tZXF1YWwnO1xuaW1wb3J0IHtNb3JlVGhhbkVxdWFsRGF0ZX0gZnJvbSAnLi4vbW9kZWxzL29wZXJhdG9yL21vcmUtdGhhbi1lcXVhbC1kYXRlJztcbmltcG9ydCB7TW9yZVRoYW5FcXVhbERhdGVUaW1lfSBmcm9tICcuLi9tb2RlbHMvb3BlcmF0b3IvbW9yZS10aGFuLWVxdWFsLWRhdGUtdGltZSc7XG5pbXBvcnQge0xlc3NUaGFuRXF1YWxEYXRlfSBmcm9tICcuLi9tb2RlbHMvb3BlcmF0b3IvbGVzcy10aGFuLWVxdWFsLWRhdGUnO1xuaW1wb3J0IHtMZXNzVGhhbkVxdWFsRGF0ZVRpbWV9IGZyb20gJy4uL21vZGVscy9vcGVyYXRvci9sZXNzLXRoYW4tZXF1YWwtZGF0ZS10aW1lJztcbmltcG9ydCB7Tm90RXF1YWxzRGF0ZVRpbWV9IGZyb20gJy4uL21vZGVscy9vcGVyYXRvci9ub3QtZXF1YWxzLWRhdGUtdGltZSc7XG5cbi8qKlxuICogQSBzZXJ2aWNlIHRoYXQgcmVzb2x2ZXMge0BsaW5rIE9wZXJhdG9yc30gKG9yIGN1c3RvbSBzdHJpbmcpIGludG8gYSBjb25jcmV0ZSAoQGxpbmsgT3BlcmF0b3IpIGltcGxlbWVudGF0aW9uIGNsYXNzLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE9wZXJhdG9yUmVzb2x2ZXJTZXJ2aWNlIHtcblxuICAgIC8qKlxuICAgICAqIFJlc29sdmVzIHRoZSBvcGVyYXRvcnMgaW4gdGhlIHtAbGluayBPcGVyYXRvcnN9IGVudW0gaW50byB0aGVpciBjb3JyZXNwb25kaW5nIGNsYXNzZXMuXG4gICAgICogUGFzc2VzIGFsbCB1bnJlc29sdmVkIHZhbHVlcyBpbnRvIHRoZSBbdG9DdXN0b21DbGFzcygpXXtAbGluayBPcGVyYXRvclJlc29sdmVyU2VydmljZSN0b0N1c3RvbUNsYXNzfSBtZXRob2QuXG4gICAgICogQHBhcmFtIG9wZXJhdG9yIGEgc2VyaWFsaXplZCByZXByZXNlbnRhdGlvbiBvZiB0aGUge0BsaW5rIE9wZXJhdG9yfSBjbGFzc1xuICAgICAqL1xuICAgIHB1YmxpYyB0b0NsYXNzKG9wZXJhdG9yOiBPcGVyYXRvcnMgfCBzdHJpbmcpOiBUeXBlPE9wZXJhdG9yPGFueT4+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgc3dpdGNoIChvcGVyYXRvcikge1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50b0N1c3RvbUNsYXNzKG9wZXJhdG9yKTtcbiAgICAgICAgICAgIGNhc2UgT3BlcmF0b3JzLkVRVUFMUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gRXF1YWxzO1xuICAgICAgICAgICAgY2FzZSBPcGVyYXRvcnMuRVFVQUxTX0RBVEU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEVxdWFsc0RhdGU7XG4gICAgICAgICAgICBjYXNlIE9wZXJhdG9ycy5FUVVBTFNfREFURV9USU1FOlxuICAgICAgICAgICAgICAgIHJldHVybiBFcXVhbHNEYXRlVGltZTtcbiAgICAgICAgICAgIGNhc2UgT3BlcmF0b3JzLklOX1JBTkdFOlxuICAgICAgICAgICAgICAgIHJldHVybiBJblJhbmdlO1xuICAgICAgICAgICAgY2FzZSBPcGVyYXRvcnMuSU5fUkFOR0VfREFURTpcbiAgICAgICAgICAgICAgICByZXR1cm4gSW5SYW5nZURhdGU7XG4gICAgICAgICAgICBjYXNlIE9wZXJhdG9ycy5JTl9SQU5HRV9EQVRFX1RJTUU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEluUmFuZ2VEYXRlVGltZTtcbiAgICAgICAgICAgIGNhc2UgT3BlcmF0b3JzLklTX05VTEw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIElzTnVsbDtcbiAgICAgICAgICAgIGNhc2UgT3BlcmF0b3JzLkxFU1NfVEhBTjpcbiAgICAgICAgICAgICAgICByZXR1cm4gTGVzc1RoYW47XG4gICAgICAgICAgICBjYXNlIE9wZXJhdG9ycy5MRVNTX1RIQU5fREFURTpcbiAgICAgICAgICAgICAgICByZXR1cm4gTGVzc1RoYW5EYXRlO1xuICAgICAgICAgICAgY2FzZSBPcGVyYXRvcnMuTEVTU19USEFOX0RBVEVfVElNRTpcbiAgICAgICAgICAgICAgICByZXR1cm4gTGVzc1RoYW5EYXRlVGltZTtcbiAgICAgICAgICAgIGNhc2UgT3BlcmF0b3JzLkxFU1NfVEhBTl9FUVVBTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gTGVzc1RoYW5FcXVhbDtcbiAgICAgICAgICAgIGNhc2UgT3BlcmF0b3JzLkxFU1NfVEhBTl9FUVVBTF9EQVRFOlxuICAgICAgICAgICAgICAgIHJldHVybiBMZXNzVGhhbkVxdWFsRGF0ZTtcbiAgICAgICAgICAgIGNhc2UgT3BlcmF0b3JzLkxFU1NfVEhBTl9FUVVBTF9EQVRFX1RJTUU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIExlc3NUaGFuRXF1YWxEYXRlVGltZTtcbiAgICAgICAgICAgIGNhc2UgT3BlcmF0b3JzLkxJS0U6XG4gICAgICAgICAgICAgICAgcmV0dXJuIExpa2U7XG4gICAgICAgICAgICBjYXNlIE9wZXJhdG9ycy5NT1JFX1RIQU46XG4gICAgICAgICAgICAgICAgcmV0dXJuIE1vcmVUaGFuO1xuICAgICAgICAgICAgY2FzZSBPcGVyYXRvcnMuTU9SRV9USEFOX0RBVEU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIE1vcmVUaGFuRGF0ZTtcbiAgICAgICAgICAgIGNhc2UgT3BlcmF0b3JzLk1PUkVfVEhBTl9EQVRFX1RJTUU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIE1vcmVUaGFuRGF0ZVRpbWU7XG4gICAgICAgICAgICBjYXNlIE9wZXJhdG9ycy5NT1JFX1RIQU5fRVFVQUw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIE1vcmVUaGFuRXF1YWw7XG4gICAgICAgICAgICBjYXNlIE9wZXJhdG9ycy5NT1JFX1RIQU5fRVFVQUxfREFURTpcbiAgICAgICAgICAgICAgICByZXR1cm4gTW9yZVRoYW5FcXVhbERhdGU7XG4gICAgICAgICAgICBjYXNlIE9wZXJhdG9ycy5NT1JFX1RIQU5fRVFVQUxfREFURV9USU1FOlxuICAgICAgICAgICAgICAgIHJldHVybiBNb3JlVGhhbkVxdWFsRGF0ZVRpbWU7XG4gICAgICAgICAgICBjYXNlIE9wZXJhdG9ycy5OT1RfRVFVQUxTOlxuICAgICAgICAgICAgICAgIHJldHVybiBOb3RFcXVhbHM7XG4gICAgICAgICAgICBjYXNlIE9wZXJhdG9ycy5OT1RfRVFVQUxTX0RBVEU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIE5vdEVxdWFsc0RhdGU7XG4gICAgICAgICAgICBjYXNlIE9wZXJhdG9ycy5OT1RfRVFVQUxTX0RBVEVfVElNRTpcbiAgICAgICAgICAgICAgICByZXR1cm4gTm90RXF1YWxzRGF0ZVRpbWU7XG4gICAgICAgICAgICBjYXNlIE9wZXJhdG9ycy5TVUJTVFJJTkc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFN1YnN0cmluZztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNob3VsZCByZXNvbHZlIGFueSBjdXN0b20gb3BlcmF0b3JzIGludG8gdGhlaXIgY29ycmVzcG9uZGluZyBjbGFzcyBvYmplY3RzLlxuICAgICAqXG4gICAgICogSWYgeW91IGltcGxlbWVudCBhbnkgY3VzdG9tIHtAbGluayBPcGVyYXRvcn0gY2xhc3NlcywgeW91IHNob3VsZCBvdmVycmlkZSB0aGlzIG1ldGhvZCB0byByZXNvbHZlIHRoZW0gYWZ0ZXIgc2VyaWFsaXphdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcGVyYXRvciB0aGUgc2VyaWFsaXplZCBzdHJpbmcgcHJvdmlkZWQgYnkgeW91ciBbT3BlcmF0b3Iuc2VyaWFsaXplKClde0BsaW5rIE9wZXJhdG9yI3NlcmlhbGl6ZX0gaW1wbGVtZW50YXRpb25cbiAgICAgKiBAcmV0dXJucyBgdW5kZWZpbmVkYFxuICAgICAqL1xuICAgIHByb3RlY3RlZCB0b0N1c3RvbUNsYXNzKG9wZXJhdG9yOiBzdHJpbmcpOiBUeXBlPE9wZXJhdG9yPGFueT4+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG59XG4iXX0=