index_pattern.ts 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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)
  24. .utc()
  25. .startOf(intervalInfo.startOf);
  26. var endEpoch = moment(to)
  27. .utc()
  28. .startOf(intervalInfo.startOf)
  29. .valueOf();
  30. var 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. }