update topn metrics

This commit is contained in:
Qiuxia Fan 2022-03-27 14:16:00 +08:00
parent 4fb4c7d4a4
commit 9556ca2ce9
3 changed files with 42 additions and 6 deletions

View File

@ -22,6 +22,7 @@ import { useSelectorStore } from "@/store/modules/selectors";
import { useAppStoreWithOut } from "@/store/modules/app";
import { Instance, Endpoint, Service } from "@/types/selector";
import { MetricConfigOpt } from "@/types/dashboard";
import { MetricCatalog } from "@/views/dashboard/data";
export function useQueryProcessor(config: any) {
if (!(config.metrics && config.metrics[0])) {
@ -62,7 +63,7 @@ export function useQueryProcessor(config: any) {
? null
: selectorStore.currentService.value,
normal: selectorStore.currentService.normal,
scope: dashboardStore.entity,
scope: config.catalog || dashboardStore.entity,
topN: 10,
order: c.sortOrder || "DES",
};
@ -340,3 +341,27 @@ export function aggregation(val: number, config: any): number | string {
return data;
}
export async function useGetMetricEntity(metric: string, metricType: any) {
if (!metric || !metricType) {
return;
}
let catalog = "";
const dashboardStore = useDashboardStore();
if (
[
MetricQueryTypes.ReadSampledRecords,
MetricQueryTypes.SortMetrics,
].includes(metricType)
) {
const res = await dashboardStore.fetchMetricList(metric);
if (res.errors) {
ElMessage.error(res.errors);
return;
}
const c: string = res.data.metrics[0].catalog;
catalog = (MetricCatalog as any)[c];
}
return catalog;
}

View File

@ -111,7 +111,11 @@ import {
} from "../../../data";
import { ElMessage } from "element-plus";
import Icon from "@/components/Icon.vue";
import { useQueryProcessor, useSourceProcessor } from "@/hooks/useProcessor";
import {
useQueryProcessor,
useSourceProcessor,
useGetMetricEntity,
} from "@/hooks/useProcessor";
import { useI18n } from "vue-i18n";
import { DashboardItem, MetricConfigOpt } from "@/types/dashboard";
import Standard from "./Standard.vue";
@ -343,8 +347,9 @@ async function queryMetrics() {
if (states.isList) {
return;
}
const { metricConfig } = dashboardStore.selectedGrid;
const params = useQueryProcessor({ ...states, metricConfig });
const { metricConfig, metricTypes, metrics } = dashboardStore.selectedGrid;
const catalog = await useGetMetricEntity(metrics[0], metricTypes[0]);
const params = useQueryProcessor({ ...states, metricConfig, catalog });
if (!params) {
emit("update", {});
return;

View File

@ -81,7 +81,11 @@ import { useAppStoreWithOut } from "@/store/modules/app";
import { useSelectorStore } from "@/store/modules/selectors";
import graphs from "../graphs";
import { useI18n } from "vue-i18n";
import { useQueryProcessor, useSourceProcessor } from "@/hooks/useProcessor";
import {
useQueryProcessor,
useSourceProcessor,
useGetMetricEntity,
} from "@/hooks/useProcessor";
import { EntityType, ListChartTypes } from "../data";
const props = {
@ -113,7 +117,9 @@ export default defineComponent({
}
async function queryMetrics() {
const params = await useQueryProcessor(props.data);
const { metricTypes, metrics } = props.data;
const catalog = await useGetMetricEntity(metrics[0], metricTypes[0]);
const params = await useQueryProcessor({ ...props.data, catalog });
if (!params) {
state.source = {};