UNPKG

@netgrif/components-core

Version:

Netgrif Application engine frontend core Angular library

42 lines 6.33 kB
import { Operator } from './operator'; import { Query } from '../query/query'; import moment from 'moment'; import { clearTimeInformation } from '../../../utility/clear-time-information'; import { Operators } from './operators'; /** * Range operator for indexed fields that store a date in timestamp format. * * Will create a range query that matches every timestamp from the midnight of the first day (included) * to the midnight of the day after the second day (excluded). */ export class InRangeDate 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. Any time information will be ignored use {@link InRangeDateTime} * if you want a date time query instead. The two dates must be in ascending order, if not the behavior is undefined. */ createQuery(elasticKeywords, args) { this.checkArgumentsCount(args); const arg1 = moment(args[0]); clearTimeInformation(arg1); const arg2 = moment(args[1]); clearTimeInformation(arg2); arg2.date(arg2.date() + 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; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW4tcmFuZ2UtZGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvc2VhcmNoL21vZGVscy9vcGVyYXRvci9pbi1yYW5nZS1kYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFFcEMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUM3RSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBRXRDOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLFdBQVksU0FBUSxRQUFnQjtJQUM3QztRQUNJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsV0FBVyxDQUFDLGVBQThCLEVBQUUsSUFBbUI7UUFDM0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0Isb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQywwQkFBMEI7UUFDdEQsT0FBTyxRQUFRLENBQUMsY0FBYyxDQUFDLGVBQWUsRUFBRSxDQUFDLE9BQWUsRUFBRSxFQUFFO1lBQ2hFLE9BQU8sSUFBSSxLQUFLLENBQUMsSUFBSSxPQUFPLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsdUJBQXVCO1FBQ25CLE9BQU8sQ0FBQyw4QkFBOEIsRUFBRSxRQUFRLENBQUMsaUJBQWlCLEVBQUUsNEJBQTRCLEVBQUUsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDbEksQ0FBQztJQUVELFNBQVM7UUFDTCxPQUFPLFNBQVMsQ0FBQyxhQUFhLENBQUM7SUFDbkMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPcGVyYXRvcn0gZnJvbSAnLi9vcGVyYXRvcic7XG5pbXBvcnQge01vbWVudH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7UXVlcnl9IGZyb20gJy4uL3F1ZXJ5L3F1ZXJ5JztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7Y2xlYXJUaW1lSW5mb3JtYXRpb259IGZyb20gJy4uLy4uLy4uL3V0aWxpdHkvY2xlYXItdGltZS1pbmZvcm1hdGlvbic7XG5pbXBvcnQge09wZXJhdG9yc30gZnJvbSAnLi9vcGVyYXRvcnMnO1xuXG4vKipcbiAqIFJhbmdlIG9wZXJhdG9yIGZvciBpbmRleGVkIGZpZWxkcyB0aGF0IHN0b3JlIGEgZGF0ZSBpbiB0aW1lc3RhbXAgZm9ybWF0LlxuICpcbiAqIFdpbGwgY3JlYXRlIGEgcmFuZ2UgcXVlcnkgdGhhdCBtYXRjaGVzIGV2ZXJ5IHRpbWVzdGFtcCBmcm9tIHRoZSBtaWRuaWdodCBvZiB0aGUgZmlyc3QgZGF5IChpbmNsdWRlZClcbiAqIHRvIHRoZSBtaWRuaWdodCBvZiB0aGUgZGF5IGFmdGVyIHRoZSBzZWNvbmQgZGF5IChleGNsdWRlZCkuXG4gKi9cbmV4cG9ydCBjbGFzcyBJblJhbmdlRGF0ZSBleHRlbmRzIE9wZXJhdG9yPE1vbWVudD4ge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgcXVlcnkgYXMgc3BlY2lmaWVkIGJ5IHRoZSBbY2xhc3Nlc117QGxpbmsgSW5SYW5nZURhdGV9IGRvY3VtZW50YXRpb24uXG4gICAgICogU2VlIFtzdXBlci5jcmVhdGVRdWVyeSgpXXtAbGluayBPcGVyYXRvciNjcmVhdGVRdWVyeX0gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAgICogQHBhcmFtIGVsYXN0aWNLZXl3b3JkcyBrZXl3b3JkcyBvZiB0aGUgZmllbGRzIHRoYXQgc2hvdWxkIGJlIHF1ZXJpZWQuXG4gICAgICogSWYgbW9yZSB0aGFuIG9uZSBpcyBwcm92aWRlZCB0aGVuIHF1ZXJpZXMgZm9yIGV2ZXJ5IGtleXdvcmQgd2lsbCBiZSBnZW5lcmF0ZWQgYW5kIGNvbWJpbmVkIHdpdGggYW4gT1Igb3BlcmF0b3IuXG4gICAgICogQHBhcmFtIGFyZ3Mgc3RhcnQgYW5kIGVuZCBkYXRlIGZvciB0aGUgcmFuZ2UuIEFueSB0aW1lIGluZm9ybWF0aW9uIHdpbGwgYmUgaWdub3JlZCB1c2Uge0BsaW5rIEluUmFuZ2VEYXRlVGltZX1cbiAgICAgKiBpZiB5b3Ugd2FudCBhIGRhdGUgdGltZSBxdWVyeSBpbnN0ZWFkLiBUaGUgdHdvIGRhdGVzIG11c3QgYmUgaW4gYXNjZW5kaW5nIG9yZGVyLCBpZiBub3QgdGhlIGJlaGF2aW9yIGlzIHVuZGVmaW5lZC5cbiAgICAgKi9cbiAgICBjcmVhdGVRdWVyeShlbGFzdGljS2V5d29yZHM6IEFycmF5PHN0cmluZz4sIGFyZ3M6IEFycmF5PE1vbWVudD4pOiBRdWVyeSB7XG4gICAgICAgIHRoaXMuY2hlY2tBcmd1bWVudHNDb3VudChhcmdzKTtcbiAgICAgICAgY29uc3QgYXJnMSA9IG1vbWVudChhcmdzWzBdKTtcbiAgICAgICAgY2xlYXJUaW1lSW5mb3JtYXRpb24oYXJnMSk7XG4gICAgICAgIGNvbnN0IGFyZzIgPSBtb21lbnQoYXJnc1sxXSk7XG4gICAgICAgIGNsZWFyVGltZUluZm9ybWF0aW9uKGFyZzIpO1xuICAgICAgICBhcmcyLmRhdGUoYXJnMi5kYXRlKCkgKyAxKTsgLy8gbW9tZW50IGhhbmRsZXMgcm9sbG92ZXJcbiAgICAgICAgcmV0dXJuIE9wZXJhdG9yLmZvckVhY2hLZXl3b3JkKGVsYXN0aWNLZXl3b3JkcywgKGtleXdvcmQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBRdWVyeShgKCR7a2V5d29yZH06WyR7YXJnMS52YWx1ZU9mKCl9IFRPICR7YXJnMi52YWx1ZU9mKCl9fSlgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0T3BlcmF0b3JOYW1lVGVtcGxhdGUoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBbJ3NlYXJjaC5vcGVyYXRvci5pblJhbmdlLmZyb20nLCBPcGVyYXRvci5JTlBVVF9QTEFDRUhPTERFUiwgJ3NlYXJjaC5vcGVyYXRvci5pblJhbmdlLnRvJywgT3BlcmF0b3IuSU5QVVRfUExBQ0VIT0xERVJdO1xuICAgIH1cblxuICAgIHNlcmlhbGl6ZSgpOiBPcGVyYXRvcnMgfCBzdHJpbmcge1xuICAgICAgICByZXR1cm4gT3BlcmF0b3JzLklOX1JBTkdFX0RBVEU7XG4gICAgfVxufVxuIl19