mirror of
https://github.com/crawlab-team/crawlab.git
synced 2026-01-22 17:31:03 +01:00
29 lines
780 B
Go
29 lines
780 B
Go
import dayjs, {Dayjs} from 'dayjs';
|
|
|
|
export const DEFAULT_DATE_FORMAT = 'YYYY-MM-DD';
|
|
|
|
export const spanDateRange = (start: Dayjs | string, end: Dayjs | string, data: StatsResult[], dateKey?: string): StatsResult[] => {
|
|
// date key
|
|
const key = dateKey || 'date';
|
|
|
|
// format
|
|
const format = DEFAULT_DATE_FORMAT;
|
|
|
|
// cache data
|
|
const cache = new Map<string, StatsResult>();
|
|
data.forEach(d => cache.set(d[key], d));
|
|
|
|
// results
|
|
const results = [] as StatsResult[];
|
|
|
|
// iterate
|
|
for (let date = dayjs(start, format); date.format(format) <= dayjs(end, format).format(format); date = date.add(1, 'day')) {
|
|
let item = cache.get(date.format(format));
|
|
if (!item) item = {};
|
|
item[key] = date.format(format);
|
|
results.push(item);
|
|
}
|
|
|
|
return results;
|
|
};
|