index_pattern.ts 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { toUtc, dateTime } from '@grafana/data';
  2. const intervalMap: any = {
  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: any, private interval: string | null) {}
  11. getIndexForToday() {
  12. if (this.interval) {
  13. return toUtc().format(this.pattern);
  14. } else {
  15. return this.pattern;
  16. }
  17. }
  18. getIndexList(from: any, to: any) {
  19. if (!this.interval) {
  20. return this.pattern;
  21. }
  22. const intervalInfo = intervalMap[this.interval];
  23. const start = dateTime(from)
  24. .utc()
  25. .startOf(intervalInfo.startOf);
  26. const endEpoch = dateTime(to)
  27. .utc()
  28. .startOf(intervalInfo.startOf)
  29. .valueOf();
  30. const indexList = [];
  31. while (start.valueOf() <= endEpoch) {
  32. indexList.push(start.format(this.pattern));
  33. start.add(1, intervalInfo.amount);
  34. }
  35. return indexList;
  36. }
  37. }