UNPKG

@netgrif/components-core

Version:

Netgrif Application engine frontend core Angular library

43 lines 6.47 kB
import { Operator } from './operator'; import moment from 'moment'; import { Query } from '../query/query'; import { Operators } from './operators'; /** * Range operator for indexed fields that store a date time in timestamp format. * * Will create a range query that matches every timestamp from the 0th millisecond of the first date time object (included) * to the 0th millisecond of the next minute after the minute in the second date time object (excluded). */ export class InRangeDateTime extends Operator { constructor() { super(2); } /** * Creates a query as specified by the [classes]{@link InRangeDate} documentation. * See [super.createQuery()]{@link Operator#createQuery} for more information. * @param elasticKeywords keywords of the fields that should be queried. * If more than one is provided then queries for every keyword will be generated and combined with an OR operator. * @param args start and end date for the range. If you want to ignore the time information use {@link InRangeDate} * Operator instead. The two date time objects must be in ascending order, if not the behavior is undefined. */ createQuery(elasticKeywords, args) { this.checkArgumentsCount(args); const arg1 = moment(args[0]); arg1.milliseconds(0); arg1.seconds(0); const arg2 = moment(args[1]); arg2.milliseconds(0); arg2.seconds(0); arg2.minutes(arg2.minutes() + 1); // moment handles rollover return Operator.forEachKeyword(elasticKeywords, (keyword) => { return new Query(`(${keyword}:[${arg1.valueOf()} TO ${arg2.valueOf()}})`); }); } getOperatorNameTemplate() { return ['search.operator.inRange.from', Operator.INPUT_PLACEHOLDER, 'search.operator.inRange.to', Operator.INPUT_PLACEHOLDER]; } serialize() { return Operators.IN_RANGE_DATE_TIME; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW4tcmFuZ2UtZGF0ZS10aW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9zZWFyY2gvbW9kZWxzL29wZXJhdG9yL2luLXJhbmdlLWRhdGUtdGltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sTUFBZ0IsTUFBTSxRQUFRLENBQUM7QUFDdEMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFFdEM7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxRQUFnQjtJQUNqRDtRQUNJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsV0FBVyxDQUFDLGVBQThCLEVBQUUsSUFBbUI7UUFDM0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLDBCQUEwQjtRQUM1RCxPQUFPLFFBQVEsQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLENBQUMsT0FBZSxFQUFFLEVBQUU7WUFDaEUsT0FBTyxJQUFJLEtBQUssQ0FBQyxJQUFJLE9BQU8sS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5RSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCx1QkFBdUI7UUFDbkIsT0FBTyxDQUFDLDhCQUE4QixFQUFFLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSw0QkFBNEIsRUFBRSxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNsSSxDQUFDO0lBRUQsU0FBUztRQUNMLE9BQU8sU0FBUyxDQUFDLGtCQUFrQixDQUFDO0lBQ3hDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7T3BlcmF0b3J9IGZyb20gJy4vb3BlcmF0b3InO1xuaW1wb3J0IG1vbWVudCwge01vbWVudH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7UXVlcnl9IGZyb20gJy4uL3F1ZXJ5L3F1ZXJ5JztcbmltcG9ydCB7T3BlcmF0b3JzfSBmcm9tICcuL29wZXJhdG9ycyc7XG5cbi8qKlxuICogUmFuZ2Ugb3BlcmF0b3IgZm9yIGluZGV4ZWQgZmllbGRzIHRoYXQgc3RvcmUgYSBkYXRlIHRpbWUgaW4gdGltZXN0YW1wIGZvcm1hdC5cbiAqXG4gKiBXaWxsIGNyZWF0ZSBhIHJhbmdlIHF1ZXJ5IHRoYXQgbWF0Y2hlcyBldmVyeSB0aW1lc3RhbXAgZnJvbSB0aGUgMHRoIG1pbGxpc2Vjb25kIG9mIHRoZSBmaXJzdCBkYXRlIHRpbWUgb2JqZWN0IChpbmNsdWRlZClcbiAqIHRvIHRoZSAwdGggbWlsbGlzZWNvbmQgb2YgdGhlIG5leHQgbWludXRlIGFmdGVyIHRoZSBtaW51dGUgaW4gdGhlIHNlY29uZCBkYXRlIHRpbWUgb2JqZWN0IChleGNsdWRlZCkuXG4gKi9cbmV4cG9ydCBjbGFzcyBJblJhbmdlRGF0ZVRpbWUgZXh0ZW5kcyBPcGVyYXRvcjxNb21lbnQ+IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoMik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHF1ZXJ5IGFzIHNwZWNpZmllZCBieSB0aGUgW2NsYXNzZXNde0BsaW5rIEluUmFuZ2VEYXRlfSBkb2N1bWVudGF0aW9uLlxuICAgICAqIFNlZSBbc3VwZXIuY3JlYXRlUXVlcnkoKV17QGxpbmsgT3BlcmF0b3IjY3JlYXRlUXVlcnl9IGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAgICAqIEBwYXJhbSBlbGFzdGljS2V5d29yZHMga2V5d29yZHMgb2YgdGhlIGZpZWxkcyB0aGF0IHNob3VsZCBiZSBxdWVyaWVkLlxuICAgICAqIElmIG1vcmUgdGhhbiBvbmUgaXMgcHJvdmlkZWQgdGhlbiBxdWVyaWVzIGZvciBldmVyeSBrZXl3b3JkIHdpbGwgYmUgZ2VuZXJhdGVkIGFuZCBjb21iaW5lZCB3aXRoIGFuIE9SIG9wZXJhdG9yLlxuICAgICAqIEBwYXJhbSBhcmdzIHN0YXJ0IGFuZCBlbmQgZGF0ZSBmb3IgdGhlIHJhbmdlLiBJZiB5b3Ugd2FudCB0byBpZ25vcmUgdGhlIHRpbWUgaW5mb3JtYXRpb24gdXNlIHtAbGluayBJblJhbmdlRGF0ZX1cbiAgICAgKiBPcGVyYXRvciBpbnN0ZWFkLiBUaGUgdHdvIGRhdGUgdGltZSBvYmplY3RzIG11c3QgYmUgaW4gYXNjZW5kaW5nIG9yZGVyLCBpZiBub3QgdGhlIGJlaGF2aW9yIGlzIHVuZGVmaW5lZC5cbiAgICAgKi9cbiAgICBjcmVhdGVRdWVyeShlbGFzdGljS2V5d29yZHM6IEFycmF5PHN0cmluZz4sIGFyZ3M6IEFycmF5PE1vbWVudD4pOiBRdWVyeSB7XG4gICAgICAgIHRoaXMuY2hlY2tBcmd1bWVudHNDb3VudChhcmdzKTtcbiAgICAgICAgY29uc3QgYXJnMSA9IG1vbWVudChhcmdzWzBdKTtcbiAgICAgICAgYXJnMS5taWxsaXNlY29uZHMoMCk7XG4gICAgICAgIGFyZzEuc2Vjb25kcygwKTtcbiAgICAgICAgY29uc3QgYXJnMiA9IG1vbWVudChhcmdzWzFdKTtcbiAgICAgICAgYXJnMi5taWxsaXNlY29uZHMoMCk7XG4gICAgICAgIGFyZzIuc2Vjb25kcygwKTtcbiAgICAgICAgYXJnMi5taW51dGVzKGFyZzIubWludXRlcygpICsgMSk7IC8vIG1vbWVudCBoYW5kbGVzIHJvbGxvdmVyXG4gICAgICAgIHJldHVybiBPcGVyYXRvci5mb3JFYWNoS2V5d29yZChlbGFzdGljS2V5d29yZHMsIChrZXl3b3JkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUXVlcnkoYCgke2tleXdvcmR9Olske2FyZzEudmFsdWVPZigpfSBUTyAke2FyZzIudmFsdWVPZigpfX0pYCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldE9wZXJhdG9yTmFtZVRlbXBsYXRlKCk6IEFycmF5PHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gWydzZWFyY2gub3BlcmF0b3IuaW5SYW5nZS5mcm9tJywgT3BlcmF0b3IuSU5QVVRfUExBQ0VIT0xERVIsICdzZWFyY2gub3BlcmF0b3IuaW5SYW5nZS50bycsIE9wZXJhdG9yLklOUFVUX1BMQUNFSE9MREVSXTtcbiAgICB9XG5cbiAgICBzZXJpYWxpemUoKTogT3BlcmF0b3JzIHwgc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5JTl9SQU5HRV9EQVRFX1RJTUU7XG4gICAgfVxufVxuIl19