index_pattern.ts 1.1 KB

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