2
0

fillRangeData.ts 807 B

12345678910111213141516171819202122232425262728293031323334
  1. export enum EPrometheusDataStatus {
  2. noData = -1,
  3. failed = -2,
  4. }
  5. export const fillRangeData = (
  6. items: any[],
  7. start: number,
  8. end: number,
  9. step: number
  10. ) => {
  11. const length = Math.floor((+end - start) / step) + 1;
  12. if (length >= 0) {
  13. const timeRange = Array(length)
  14. .fill(0)
  15. .map((_, i) => +start + i * step)
  16. .map(d => d / 1000);
  17. items.forEach(item => {
  18. const dict = {} as any;
  19. item.values.forEach(([t, v]: any) => (dict[t] = isNaN(v) ? 0 : +v));
  20. const minTime = Math.min(...item.values.map((d: any) => d[0]));
  21. item.values = timeRange.map(t =>
  22. t in dict
  23. ? dict[t]
  24. : t > minTime
  25. ? EPrometheusDataStatus.failed
  26. : EPrometheusDataStatus.noData
  27. );
  28. });
  29. }
  30. };
  31. export default fillRangeData;