send filters

This commit is contained in:
Fine 2022-10-13 15:20:21 +08:00
parent 261a8fdefb
commit 44316a4f16
5 changed files with 66 additions and 38 deletions

View File

@ -167,7 +167,7 @@ function updateOptions() {
function viewTrace() { function viewTrace() {
const item = associateProcessor().traceFilters(currentParams.value); const item = associateProcessor().traceFilters(currentParams.value);
console.log(item);
traceOptions.value = { traceOptions.value = {
...traceOptions.value, ...traceOptions.value,
filters: item, filters: item,

View File

@ -17,6 +17,7 @@
import { useAppStoreWithOut } from "@/store/modules/app"; import { useAppStoreWithOut } from "@/store/modules/app";
import dateFormatStep from "@/utils/dateFormat"; import dateFormatStep from "@/utils/dateFormat";
import getLocalTime from "@/utils/localtime"; import getLocalTime from "@/utils/localtime";
import { QueryOrders } from "@/views/dashboard/data";
export default function associateProcessor() { export default function associateProcessor() {
function eventAssociate(props: any) { function eventAssociate(props: any) {
@ -89,9 +90,19 @@ export default function associateProcessor() {
step, step,
}; };
} }
let queryOrder = QueryOrders[1].value;
let status = undefined;
if (currentParams.seriesName.includes("_sla")) {
queryOrder = QueryOrders[0].value;
status = "ERROR";
}
if (currentParams.seriesName.includes("_apdex")) {
status = "ERROR";
}
const item = { const item = {
duration, duration,
queryOrder,
status,
}; };
return item; return item;
} }

View File

@ -22,6 +22,7 @@ import graphql from "@/graphql";
import { AxiosResponse } from "axios"; import { AxiosResponse } from "axios";
import { useAppStoreWithOut } from "@/store/modules/app"; import { useAppStoreWithOut } from "@/store/modules/app";
import { useSelectorStore } from "@/store/modules/selectors"; import { useSelectorStore } from "@/store/modules/selectors";
import { QueryOrders } from "@/views/dashboard/data";
interface TraceState { interface TraceState {
services: Service[]; services: Service[];
@ -47,7 +48,7 @@ export const traceStore = defineStore({
conditions: { conditions: {
queryDuration: useAppStoreWithOut().durationTime, queryDuration: useAppStoreWithOut().durationTime,
traceState: "ALL", traceState: "ALL",
queryOrder: "BY_START_TIME", queryOrder: QueryOrders[0].value,
paging: { pageNum: 1, pageSize: 20 }, paging: { pageNum: 1, pageSize: 20 },
}, },
traceSpanLogs: [], traceSpanLogs: [],
@ -56,6 +57,7 @@ export const traceStore = defineStore({
actions: { actions: {
setTraceCondition(data: any) { setTraceCondition(data: any) {
this.conditions = { ...this.conditions, ...data }; this.conditions = { ...this.conditions, ...data };
console.log(this.conditions.queryOrder);
}, },
setCurrentTrace(trace: Trace) { setCurrentTrace(trace: Trace) {
this.currentTrace = trace; this.currentTrace = trace;
@ -71,7 +73,7 @@ export const traceStore = defineStore({
queryDuration: useAppStoreWithOut().durationTime, queryDuration: useAppStoreWithOut().durationTime,
paging: { pageNum: 1, pageSize: 20 }, paging: { pageNum: 1, pageSize: 20 },
traceState: "ALL", traceState: "ALL",
queryOrder: "BY_START_TIME", queryOrder: QueryOrders[0].value,
}; };
}, },
async getServices(layer: string) { async getServices(layer: string) {

View File

@ -39,7 +39,9 @@ export interface LayoutConfig {
id?: string; id?: string;
associate?: { widgetId: string }[]; associate?: { widgetId: string }[];
eventAssociate?: boolean; eventAssociate?: boolean;
filters?: { filters?: Filters;
}
export type Filters = {
dataIndex: number; dataIndex: number;
sourceId: string; sourceId: string;
isRange?: boolean; isRange?: boolean;
@ -51,8 +53,9 @@ export interface LayoutConfig {
spanId?: string; spanId?: string;
segmentId?: string; segmentId?: string;
id?: string; id?: string;
queryOrder?: string;
status?: string;
}; };
}
export type MetricConfigOpt = { export type MetricConfigOpt = {
unit?: string; unit?: string;

View File

@ -95,17 +95,15 @@ limitations under the License. -->
import { ref, reactive, watch, onUnmounted } from "vue"; import { ref, reactive, watch, onUnmounted } from "vue";
import type { PropType } from "vue"; import type { PropType } from "vue";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
import { Option } from "@/types/app"; import { Option, DurationTime } from "@/types/app";
import { Status } from "../../data";
import { useTraceStore } from "@/store/modules/trace"; import { useTraceStore } from "@/store/modules/trace";
import { useDashboardStore } from "@/store/modules/dashboard"; import { useDashboardStore } from "@/store/modules/dashboard";
import { useAppStoreWithOut } from "@/store/modules/app"; import { useAppStoreWithOut } from "@/store/modules/app";
import { useSelectorStore } from "@/store/modules/selectors"; import { useSelectorStore } from "@/store/modules/selectors";
import ConditionTags from "@/views/components/ConditionTags.vue"; import ConditionTags from "@/views/components/ConditionTags.vue";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import { EntityType } from "../../data"; import { EntityType, QueryOrders, Status } from "../../data";
import { LayoutConfig } from "@/types/dashboard"; import { LayoutConfig } from "@/types/dashboard";
import { DurationTime } from "@/types/app";
/*global defineProps, Recordable */ /*global defineProps, Recordable */
const props = defineProps({ const props = defineProps({
@ -115,28 +113,29 @@ const props = defineProps({
default: () => ({ graph: {} }), default: () => ({ graph: {} }),
}, },
}); });
const traceId = ref<string>( const filters = reactive<Recordable>(props.data.filters || {});
(props.data.filters && props.data.filters.traceId) || "" const traceId = ref<string>(filters.traceId || "");
);
const { t } = useI18n(); const { t } = useI18n();
const appStore = useAppStoreWithOut(); const appStore = useAppStoreWithOut();
const selectorStore = useSelectorStore(); const selectorStore = useSelectorStore();
const dashboardStore = useDashboardStore(); const dashboardStore = useDashboardStore();
const traceStore = useTraceStore(); const traceStore = useTraceStore();
const duration = ref<DurationTime>( const duration = ref<DurationTime>(filters.duration || appStore.durationTime);
(props.data.filters && props.data.filters.duration) || appStore.durationTime
);
const minTraceDuration = ref<number>(); const minTraceDuration = ref<number>();
const maxTraceDuration = ref<number>(); const maxTraceDuration = ref<number>();
const tagsList = ref<string[]>([]); const tagsList = ref<string[]>([]);
const tagsMap = ref<Option[]>([]); const tagsMap = ref<Option[]>([]);
const state = reactive<Recordable>({ const state = reactive<Recordable>({
status: { label: "All", value: "ALL" }, status: filters.status === "ERROR" ? Status[2] : Status[0],
instance: { value: "0", label: "All" }, instance: { value: "0", label: "All" },
endpoint: { value: "0", label: "All" }, endpoint: { value: "0", label: "All" },
service: { value: "", label: "" }, service: { value: "", label: "" },
}); });
if (filters.queryOrder) {
traceStore.setTraceCondition({
queryOrder: filters.queryOrder,
});
}
if (props.needQuery) { if (props.needQuery) {
init(); init();
} }
@ -189,7 +188,10 @@ async function getInstances(id?: string) {
} }
function getCurrentNode(arr: { id: string }[]) { function getCurrentNode(arr: { id: string }[]) {
let item; let item;
if (props.data.filters && props.data.filters.id) { if (!props.data.filters) {
return item;
}
if (props.data.filters.id) {
item = arr.find((d: { id: string }) => d.id === props.data.filters?.id); item = arr.find((d: { id: string }) => d.id === props.data.filters?.id);
} }
return item; return item;
@ -198,7 +200,7 @@ function setCondition() {
let param: any = { let param: any = {
traceState: state.status.value || "ALL", traceState: state.status.value || "ALL",
tags: tagsMap.value.length ? tagsMap.value : undefined, tags: tagsMap.value.length ? tagsMap.value : undefined,
queryOrder: traceStore.conditions.queryOrder || "BY_DURATION", queryOrder: traceStore.conditions.queryOrder || QueryOrders[1].value,
queryDuration: duration.value, queryDuration: duration.value,
minTraceDuration: Number(minTraceDuration.value), minTraceDuration: Number(minTraceDuration.value),
maxTraceDuration: Number(maxTraceDuration.value), maxTraceDuration: Number(maxTraceDuration.value),
@ -288,18 +290,28 @@ watch(
} }
} }
); );
// Event widget associate with trace widget
watch( watch(
() => props.data.filters, () => props.data.filters,
(newJson, oldJson) => { (newJson, oldJson) => {
if (props.data.filters) { if (!props.data.filters) {
return;
}
if (JSON.stringify(newJson) === JSON.stringify(oldJson)) { if (JSON.stringify(newJson) === JSON.stringify(oldJson)) {
return; return;
} }
traceId.value = props.data.filters.traceId || ""; traceId.value = props.data.filters.traceId || "";
duration.value = props.data.filters.duration || appStore.durationTime; duration.value = props.data.filters.duration || appStore.durationTime;
// if (props.data.filters.queryOrder) {
// traceStore.setTraceCondition({
// queryOrder: props.data.filters.queryOrder,
// });
// }
// if (props.data.filters.status) {
// state.status = filters.status === "ERROR" ? Status[2] : Status[0];
// }
init(); init();
} }
}
); );
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>