index_pattern.ts 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import moment from 'moment';
  2. const intervalMap = {
  3. "Hourly": { startOf: 'hour', amount: 'hours'},
  4. "Daily": { startOf: 'day', amount: 'days'},
  5. "Weekly": { startOf: 'isoWeek', amount: 'weeks'},
  6. "Monthly": { startOf: 'month', amount: 'months'},
  7. "Yearly": { startOf: 'year', amount: 'years'},
  8. };
  9. export class IndexPattern {
  10. constructor(private pattern, private interval: string | null) { }
  11. getIndexForToday() {
  12. if (this.interval) {
  13. return moment.utc().format(this.pattern);
  14. } else {
  15. return this.pattern;
  16. }
  17. }
  18. getIndexList(from, to) {
  19. if (!this.interval) {
  20. return this.pattern;
  21. }
  22. var intervalInfo = intervalMap[this.interval];
  23. var start = moment(from).utc().startOf(intervalInfo.startOf);
  24. var endEpoch = moment(to).utc().startOf(intervalInfo.startOf).valueOf();
  25. var indexList = [];
  26. while (start.valueOf() <= endEpoch) {
  27. indexList.push(start.format(this.pattern));
  28. start.add(1, intervalInfo.amount);
  29. }
  30. return indexList;
  31. }
  32. }