diff --git a/src/hooks/data.ts b/src/hooks/data.ts index 1656122f..01301b0d 100644 --- a/src/hooks/data.ts +++ b/src/hooks/data.ts @@ -21,6 +21,7 @@ export enum MetricQueryTypes { ReadLabeledMetricsValues = "readLabeledMetricsValues", READHEATMAP = "readHeatMap", ReadSampledRecords = "readSampledRecords", + ReadRecords = "readRecords", } export enum Calculations { @@ -101,4 +102,10 @@ export const RespFields: any = { value refId }`, + readRecords: `{ + id + name + value + refId + }`, }; diff --git a/src/hooks/useProcessor.ts b/src/hooks/useProcessor.ts index 55f2edc7..d7301898 100644 --- a/src/hooks/useProcessor.ts +++ b/src/hooks/useProcessor.ts @@ -73,6 +73,22 @@ export function useQueryProcessor(config: any) { topN: c.topN || 10, order: c.sortOrder || "DES", }; + } else if ([MetricQueryTypes.ReadRecords].includes(metricType)) { + variables.push(`$condition${index}: RecordCondition!`); + conditions[`condition${index}`] = { + name, + parentEntity: { + scope: config.catalog, + normal: selectorStore.currentService + ? selectorStore.currentService.normal + : true, + serviceName: ["All"].includes(dashboardStore.entity) + ? null + : selectorStore.currentService.value, + }, + topN: c.topN || 10, + order: c.sortOrder || "DES", + }; } else { if (metricType === MetricQueryTypes.ReadLabeledMetricsValues) { const labels = (c.labelsIndex || "") @@ -435,6 +451,7 @@ export async function useGetMetricEntity(metric: string, metricType: any) { [ MetricQueryTypes.ReadSampledRecords, MetricQueryTypes.SortMetrics, + MetricQueryTypes.ReadRecords, ].includes(metricType) ) { const res = await dashboardStore.fetchMetricList(metric); diff --git a/src/locales/lang/en.ts b/src/locales/lang/en.ts index 0d582555..8feef5aa 100644 --- a/src/locales/lang/en.ts +++ b/src/locales/lang/en.ts @@ -108,6 +108,7 @@ const msg = { showXAxis: "Show X Axis", showYAxis: "Show Y Axis", nameError: "The dashboard name cannot be duplicate", + nameEmptyError: "The dashboard name cannot be empty", showGroup: "Show Group", noRoot: "Please set a root dashboard for", noWidget: "Please add widgets.", diff --git a/src/locales/lang/es.ts b/src/locales/lang/es.ts index 95aba2bf..45e79dcf 100644 --- a/src/locales/lang/es.ts +++ b/src/locales/lang/es.ts @@ -110,6 +110,7 @@ const msg = { showXAxis: "Mostrar Eje X", showYAxis: "Mostrar Eje Y", nameError: "El nombre del panel no puede ser duplicado", + nameEmptyError: "El nombre del panel no puede estar vacío", showGroup: "Mostrar Grupo", noRoot: "Por favor ponga la raíz del panel", noWidget: "Por favor añada widgets.", diff --git a/src/locales/lang/zh.ts b/src/locales/lang/zh.ts index d92bd402..c1661402 100644 --- a/src/locales/lang/zh.ts +++ b/src/locales/lang/zh.ts @@ -106,6 +106,7 @@ const msg = { showXAxis: "显示X轴", showYAxis: "显示Y轴", nameError: "仪表板名称不能重复", + nameEmptyError: "仪表板名称不能为空", noRoot: "请设置根仪表板,为", showGroup: "显示分组", noWidget: "请添加组件", diff --git a/src/views/dashboard/New.vue b/src/views/dashboard/New.vue index 9ed38cf7..31e8160d 100644 --- a/src/views/dashboard/New.vue +++ b/src/views/dashboard/New.vue @@ -81,6 +81,10 @@ const onCreate = () => { states.entity === d.entity && states.selectedLayer === d.layer ); + if (!states.name) { + ElMessage.error(t("nameEmptyError")); + return; + } if (index > -1) { ElMessage.error(t("nameError")); return; diff --git a/src/views/dashboard/data.ts b/src/views/dashboard/data.ts index eeb3478a..534aeea6 100644 --- a/src/views/dashboard/data.ts +++ b/src/views/dashboard/data.ts @@ -45,6 +45,7 @@ export const MetricChartType: any = { readLabeledMetricsValues: [{ label: "Line", value: "Line" }], readHeatMap: [{ label: "Heat Map", value: "HeatMap" }], readSampledRecords: [{ label: "Top List", value: "TopList" }], + readRecords: [{ label: "Top List", value: "TopList" }], }; export const DefaultGraphConfig: { [key: string]: any } = { Bar: { @@ -134,6 +135,7 @@ export const MetricTypes: { { label: "read heatmap values in the duration", value: "readHeatMap" }, ], SAMPLED_RECORD: [ + { label: "get sorted topN values", value: "readRecords" }, { label: "get sorted topN values", value: "readSampledRecords" }, ], };