mirror of
https://github.com/apache/skywalking-booster-ui.git
synced 2025-05-14 00:37:33 +00:00
send filters
This commit is contained in:
parent
261a8fdefb
commit
44316a4f16
@ -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,
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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) {
|
||||||
|
29
src/types/dashboard.d.ts
vendored
29
src/types/dashboard.d.ts
vendored
@ -39,20 +39,23 @@ export interface LayoutConfig {
|
|||||||
id?: string;
|
id?: string;
|
||||||
associate?: { widgetId: string }[];
|
associate?: { widgetId: string }[];
|
||||||
eventAssociate?: boolean;
|
eventAssociate?: boolean;
|
||||||
filters?: {
|
filters?: Filters;
|
||||||
dataIndex: number;
|
|
||||||
sourceId: string;
|
|
||||||
isRange?: boolean;
|
|
||||||
duration?: {
|
|
||||||
startTime: string;
|
|
||||||
endTime: string;
|
|
||||||
};
|
|
||||||
traceId?: string;
|
|
||||||
spanId?: string;
|
|
||||||
segmentId?: string;
|
|
||||||
id?: string;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
export type Filters = {
|
||||||
|
dataIndex: number;
|
||||||
|
sourceId: string;
|
||||||
|
isRange?: boolean;
|
||||||
|
duration?: {
|
||||||
|
startTime: string;
|
||||||
|
endTime: string;
|
||||||
|
};
|
||||||
|
traceId?: string;
|
||||||
|
spanId?: string;
|
||||||
|
segmentId?: string;
|
||||||
|
id?: string;
|
||||||
|
queryOrder?: string;
|
||||||
|
status?: string;
|
||||||
|
};
|
||||||
|
|
||||||
export type MetricConfigOpt = {
|
export type MetricConfigOpt = {
|
||||||
unit?: string;
|
unit?: string;
|
||||||
|
@ -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,17 +290,27 @@ 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) {
|
||||||
if (JSON.stringify(newJson) === JSON.stringify(oldJson)) {
|
return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
traceId.value = props.data.filters.traceId || "";
|
|
||||||
duration.value = props.data.filters.duration || appStore.durationTime;
|
|
||||||
init();
|
|
||||||
}
|
}
|
||||||
|
if (JSON.stringify(newJson) === JSON.stringify(oldJson)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
traceId.value = props.data.filters.traceId || "";
|
||||||
|
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();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
</script>
|
</script>
|
||||||
|
Loading…
Reference in New Issue
Block a user