refactor association metrics

This commit is contained in:
Qiuxia Fan 2022-07-28 15:34:40 +08:00
parent dc8e4bf273
commit 0512309290

View File

@ -105,52 +105,66 @@ function visTimeline() {
return; return;
} }
dashboardStore.selectWidget(props.data); dashboardStore.selectWidget(props.data);
const all = getDashboard(dashboardStore.currentDashboard).widgets; associateMetrics(properties.items, events);
const widgets = all.filter( });
(d: { value: string; label: string } & LayoutConfig) => { }
const isLinear = ["Bar", "Line", "Area"].includes( function associateMetrics(
(d.graph && d.graph.type) || "" items: number[],
); events: {
if (isLinear) { id: number;
return d; content: string;
} start: Date;
} end: Date;
data: unknown;
className: string;
}[]
) {
const all = getDashboard(dashboardStore.currentDashboard).widgets;
const widgets = all.filter((d: any) => {
const isLinear = ["Bar", "Line", "Area"].includes(
(d.graph && d.graph.type) || ""
); );
const index = properties.items[0]; if (isLinear) {
const i = events[index - 1 || 0]; return d;
}
});
const index = items[0];
const i = events[index - 1 || 0];
for (const widget of widgets) { for (const widget of widgets) {
let end = i.end; let end: Date | number = i.end;
if (!isNaN(index)) { if (!isNaN(index)) {
let diff = 60000; let diff = 60000;
switch (appStore.duration.step) { switch (appStore.duration.step) {
case "MINUTE": case "MINUTE":
diff = 60000; diff = 60000;
break; break;
case "HOUR": case "HOUR":
diff = 3600000; diff = 3600000;
break; break;
case "DAY": case "DAY":
diff = 3600000 * 24; diff = 3600000 * 24;
break; break;
}
if (!i.end || i.end.getTime() - i.start.getTime() < diff) {
end = i.start.getTime() + diff;
}
} }
const startTime = dateFormatTime(i.start, appStore.duration.step); if (!i.end || i.end.getTime() - i.start.getTime() < diff) {
const endTime = dateFormatTime(new Date(end), appStore.duration.step); end = i.start.getTime() + diff;
widget.filters = { }
}
const startTime = dateFormatTime(i.start, appStore.duration.step);
const endTime = dateFormatTime(new Date(end), appStore.duration.step);
const item = {
...widget,
filters: {
sourceId: dashboardStore.selectedGrid.id || "", sourceId: dashboardStore.selectedGrid.id || "",
isRange: true, isRange: true,
duration: { duration: {
startTime, startTime,
endTime, endTime,
}, },
}; },
dashboardStore.setWidget(widget); };
} dashboardStore.setWidget(item);
}); }
} }
function resize() { function resize() {
const observer = new ResizeObserver((entries) => { const observer = new ResizeObserver((entries) => {