@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
42 lines • 6.33 kB
JavaScript
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