feat: remove the total filed from query conditions (#93)

This commit is contained in:
Fine0830 2022-05-19 15:49:24 +08:00 committed by GitHub
parent 7e0d716111
commit b953904c71
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 67 additions and 43 deletions

View File

@ -54,7 +54,6 @@ export const QueryServiceLogs = {
value value
} }
} }
total
}`, }`,
}; };

View File

@ -27,7 +27,6 @@ export const Traces = {
isError isError
traceIds traceIds
} }
total
}`, }`,
}; };

View File

@ -31,7 +31,6 @@ interface LogState {
selectorStore: any; selectorStore: any;
supportQueryLogsByKeywords: boolean; supportQueryLogsByKeywords: boolean;
logs: any[]; logs: any[];
logsTotal: number;
loadLogs: boolean; loadLogs: boolean;
} }
@ -43,12 +42,11 @@ export const logStore = defineStore({
endpoints: [{ value: "0", label: "All" }], endpoints: [{ value: "0", label: "All" }],
conditions: { conditions: {
queryDuration: useAppStoreWithOut().durationTime, queryDuration: useAppStoreWithOut().durationTime,
paging: { pageNum: 1, pageSize: 15, needTotal: true }, paging: { pageNum: 1, pageSize: 15 },
}, },
supportQueryLogsByKeywords: true, supportQueryLogsByKeywords: true,
selectorStore: useSelectorStore(), selectorStore: useSelectorStore(),
logs: [], logs: [],
logsTotal: 0,
loadLogs: false, loadLogs: false,
}), }),
actions: { actions: {
@ -131,7 +129,6 @@ export const logStore = defineStore({
} }
this.logs = res.data.data.queryLogs.logs; this.logs = res.data.data.queryLogs.logs;
this.logsTotal = res.data.data.queryLogs.total;
return res.data; return res.data;
}, },
async getBrowserLogs() { async getBrowserLogs() {
@ -145,7 +142,6 @@ export const logStore = defineStore({
return res.data; return res.data;
} }
this.logs = res.data.data.queryBrowserErrorLogs.logs; this.logs = res.data.data.queryBrowserErrorLogs.logs;
this.logsTotal = res.data.data.queryBrowserErrorLogs.total;
return res.data; return res.data;
}, },
async getLogTagKeys() { async getLogTagKeys() {

View File

@ -28,12 +28,10 @@ interface TraceState {
instances: Instance[]; instances: Instance[];
endpoints: Endpoint[]; endpoints: Endpoint[];
traceList: Trace[]; traceList: Trace[];
traceTotal: number;
traceSpans: Span[]; traceSpans: Span[];
currentTrace: Trace | any; currentTrace: Trace | any;
conditions: any; conditions: any;
traceSpanLogs: any[]; traceSpanLogs: any[];
traceSpanLogsTotal: number;
selectorStore: any; selectorStore: any;
} }
@ -45,16 +43,14 @@ export const traceStore = defineStore({
endpoints: [{ value: "0", label: "All" }], endpoints: [{ value: "0", label: "All" }],
traceList: [], traceList: [],
traceSpans: [], traceSpans: [],
traceTotal: 0,
currentTrace: {}, currentTrace: {},
conditions: { conditions: {
queryDuration: useAppStoreWithOut().durationTime, queryDuration: useAppStoreWithOut().durationTime,
traceState: "ALL", traceState: "ALL",
queryOrder: "BY_START_TIME", queryOrder: "BY_START_TIME",
paging: { pageNum: 1, pageSize: 15, needTotal: true }, paging: { pageNum: 1, pageSize: 20 },
}, },
traceSpanLogs: [], traceSpanLogs: [],
traceSpanLogsTotal: 0,
selectorStore: useSelectorStore(), selectorStore: useSelectorStore(),
}), }),
actions: { actions: {
@ -115,7 +111,6 @@ export const traceStore = defineStore({
return res.data; return res.data;
} }
if (!res.data.data.data.traces.length) { if (!res.data.data.data.traces.length) {
this.traceTotal = 0;
this.traceList = []; this.traceList = [];
this.setCurrentTrace({}); this.setCurrentTrace({});
this.setTraceSpans([]); this.setTraceSpans([]);
@ -128,7 +123,6 @@ export const traceStore = defineStore({
}); });
return d; return d;
}); });
this.traceTotal = res.data.data.data.total;
this.setCurrentTrace(res.data.data.data.traces[0] || {}); this.setCurrentTrace(res.data.data.data.traces[0] || {});
return res.data; return res.data;
}, },
@ -148,11 +142,9 @@ export const traceStore = defineStore({
.params(params); .params(params);
if (res.data.errors) { if (res.data.errors) {
this.traceSpanLogs = []; this.traceSpanLogs = [];
this.traceSpanLogsTotal = 0;
return res.data; return res.data;
} }
this.traceSpanLogs = res.data.data.queryLogs.logs || []; this.traceSpanLogs = res.data.data.queryLogs.logs || [];
this.traceSpanLogsTotal = res.data.data.queryLogs.total;
return res.data; return res.data;
}, },
async getTagKeys() { async getTagKeys() {

View File

@ -94,6 +94,8 @@ function setCurrentLog(log: any) {
font-size: 12px; font-size: 12px;
height: 100%; height: 100%;
border-bottom: 1px solid #eee; border-bottom: 1px solid #eee;
width: 100%;
overflow: auto;
} }
.log-header { .log-header {

View File

@ -229,7 +229,7 @@ function searchLogs() {
keywordsOfContent: keywordsOfContent.value, keywordsOfContent: keywordsOfContent.value,
excludingKeywordsOfContent: excludingKeywordsOfContent.value, excludingKeywordsOfContent: excludingKeywordsOfContent.value,
tags: tagsMap.value.length ? tagsMap.value : undefined, tags: tagsMap.value.length ? tagsMap.value : undefined,
paging: { pageNum: 1, pageSize: 15, needTotal: true }, paging: { pageNum: 1, pageSize: 15 },
relatedTrace: traceId.value ? { traceId: traceId.value } : undefined, relatedTrace: traceId.value ? { traceId: traceId.value } : undefined,
}); });
queryLogs(); queryLogs();

View File

@ -26,8 +26,10 @@ limitations under the License. -->
<el-pagination <el-pagination
v-model:currentPage="logStore.conditions.paging.pageNum" v-model:currentPage="logStore.conditions.paging.pageNum"
v-model:page-size="pageSize" v-model:page-size="pageSize"
layout="prev, pager, next, jumper" :small="true"
:total="logStore.logsTotal" layout="prev, pager, next"
:pager-count="5"
:total="total"
@current-change="updatePage" @current-change="updatePage"
:style="`float: right`" :style="`float: right`"
/> />
@ -35,7 +37,7 @@ limitations under the License. -->
</div> </div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { ref } from "vue"; import { ref, computed } from "vue";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
import LogTable from "@/views/dashboard/related/components/LogTable/Index.vue"; import LogTable from "@/views/dashboard/related/components/LogTable/Index.vue";
import { useLogStore } from "@/store/modules/log"; import { useLogStore } from "@/store/modules/log";
@ -49,9 +51,14 @@ const type = ref<string>(
dashboardStore.layerId === "BROWSER" ? "browser" : "service" dashboardStore.layerId === "BROWSER" ? "browser" : "service"
); );
const pageSize = ref<number>(15); const pageSize = ref<number>(15);
const total = computed(() =>
logStore.logs.length === pageSize.value
? pageSize.value * logStore.conditions.paging.pageNum + 1
: pageSize.value * logStore.conditions.paging.pageNum
);
function updatePage(p: number) { function updatePage(p: number) {
logStore.setLogCondition({ logStore.setLogCondition({
paging: { pageNum: p, pageSize: pageSize.value, needTotal: true }, paging: { pageNum: p, pageSize: pageSize.value },
}); });
queryLogs(); queryLogs();
} }

View File

@ -44,7 +44,9 @@ limitations under the License. -->
v-model:currentPage="pageNum" v-model:currentPage="pageNum"
v-model:page-size="pageSize" v-model:page-size="pageSize"
:small="true" :small="true"
:total="traceStore.traceSpanLogsTotal" layout="prev, pager, next"
:pager-count="5"
:total="total"
@current-change="turnLogsPage" @current-change="turnLogsPage"
/> />
<LogTable <LogTable
@ -146,7 +148,7 @@ limitations under the License. -->
</template> </template>
<script lang="ts"> <script lang="ts">
import dayjs from "dayjs"; import dayjs from "dayjs";
import { ref, defineComponent } from "vue"; import { ref, defineComponent, computed } from "vue";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
import { useTraceStore } from "@/store/modules/trace"; import { useTraceStore } from "@/store/modules/trace";
import { Option } from "@/types/app"; import { Option } from "@/types/app";
@ -171,6 +173,11 @@ export default defineComponent({
const displayMode = ref<string>("List"); const displayMode = ref<string>("List");
const pageNum = ref<number>(1); const pageNum = ref<number>(1);
const pageSize = 10; const pageSize = 10;
const total = computed(() =>
traceStore.traceList.length === pageSize
? pageSize * pageNum.value + 1
: pageSize * pageNum.value
);
const dateFormat = (date: number, pattern = "YYYY-MM-DD HH:mm:ss") => const dateFormat = (date: number, pattern = "YYYY-MM-DD HH:mm:ss") =>
dayjs(date).format(pattern); dayjs(date).format(pattern);
const showTraceLogs = ref<boolean>(false); const showTraceLogs = ref<boolean>(false);
@ -202,7 +209,7 @@ export default defineComponent({
relatedTrace: { relatedTrace: {
traceId: traceId.value || traceStore.currentTrace.traceIds[0].value, traceId: traceId.value || traceStore.currentTrace.traceIds[0].value,
}, },
paging: { pageNum: pageNum.value, pageSize, needTotal: true }, paging: { pageNum: pageNum.value, pageSize },
}, },
}); });
if (res.errors) { if (res.errors) {
@ -227,6 +234,7 @@ export default defineComponent({
pageSize, pageSize,
pageNum, pageNum,
loading, loading,
total,
}; };
}, },
}); });

View File

@ -72,9 +72,19 @@ limitations under the License. -->
</div> </div>
<div class="mr-10"> <div class="mr-10">
<span class="sm b grey mr-5">{{ t("duration") }}:</span> <span class="sm b grey mr-5">{{ t("duration") }}:</span>
<el-input size="small" class="inputs mr-5" v-model="minTraceDuration" /> <el-input
size="small"
class="inputs mr-5"
v-model="minTraceDuration"
type="number"
/>
<span class="grey mr-5">-</span> <span class="grey mr-5">-</span>
<el-input size="small" class="inputs" v-model="maxTraceDuration" /> <el-input
size="small"
class="inputs"
v-model="maxTraceDuration"
type="number"
/>
</div> </div>
</div> </div>
<div class="flex-h"> <div class="flex-h">
@ -100,8 +110,8 @@ const selectorStore = useSelectorStore();
const dashboardStore = useDashboardStore(); const dashboardStore = useDashboardStore();
const traceStore = useTraceStore(); const traceStore = useTraceStore();
const traceId = ref<string>(""); const traceId = ref<string>("");
const minTraceDuration = ref<string>(""); const minTraceDuration = ref<number>(NaN);
const maxTraceDuration = ref<string>(""); const maxTraceDuration = ref<number>(NaN);
const tagsList = ref<string[]>([]); const tagsList = ref<string[]>([]);
const tagsMap = ref<Option[]>([]); const tagsMap = ref<Option[]>([]);
const state = reactive<any>({ const state = reactive<any>({
@ -174,11 +184,11 @@ function searchTraces() {
serviceInstanceId: instance || state.instance.id || undefined, serviceInstanceId: instance || state.instance.id || undefined,
traceState: state.status.value || "ALL", traceState: state.status.value || "ALL",
queryDuration: appStore.durationTime, queryDuration: appStore.durationTime,
minTraceDuration: appStore.minTraceDuration || undefined, minTraceDuration: Number(minTraceDuration.value),
maxTraceDuration: appStore.maxTraceDuration || undefined, maxTraceDuration: Number(maxTraceDuration.value),
queryOrder: "BY_DURATION", queryOrder: "BY_DURATION",
tags: tagsMap.value.length ? tagsMap.value : undefined, tags: tagsMap.value.length ? tagsMap.value : undefined,
paging: { pageNum: 1, pageSize: 15, needTotal: true }, paging: { pageNum: 1, pageSize: 20 },
}); });
queryTraces(); queryTraces();
} }

View File

@ -17,9 +17,9 @@ limitations under the License. -->
v-model:currentPage="traceStore.conditions.paging.pageNum" v-model:currentPage="traceStore.conditions.paging.pageNum"
v-model:page-size="pageSize" v-model:page-size="pageSize"
:small="true" :small="true"
layout="prev, pager, next, jumper" layout="prev, pager, next"
:total="traceStore.traceTotal" :pager-count="5"
v-model:pager-count="pageCount" :total="total"
@current-change="updatePage" @current-change="updatePage"
/> />
<div class="selectors"> <div class="selectors">
@ -71,7 +71,7 @@ limitations under the License. -->
<script lang="ts" setup> <script lang="ts" setup>
import dayjs from "dayjs"; import dayjs from "dayjs";
import { ref } from "vue"; import { ref, computed } from "vue";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
import { useTraceStore } from "@/store/modules/trace"; import { useTraceStore } from "@/store/modules/trace";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
@ -83,8 +83,12 @@ const { t } = useI18n();
const traceStore = useTraceStore(); const traceStore = useTraceStore();
const loading = ref<boolean>(false); const loading = ref<boolean>(false);
const selectedKey = ref<string>(""); const selectedKey = ref<string>("");
const pageSize = ref<number>(15); const pageSize = ref<number>(20);
const pageCount = ref<number>(5); const total = computed(() =>
traceStore.traceList.length === pageSize.value
? pageSize.value * traceStore.conditions.paging.pageNum + 1
: pageSize.value * traceStore.conditions.paging.pageNum
);
const dateFormat = (date: number, pattern = "YYYY-MM-DD HH:mm:ss") => const dateFormat = (date: number, pattern = "YYYY-MM-DD HH:mm:ss") =>
dayjs(date).format(pattern); dayjs(date).format(pattern);
@ -96,7 +100,7 @@ function searchTrace() {
function updatePage(p: number) { function updatePage(p: number) {
traceStore.setTraceCondition({ traceStore.setTraceCondition({
paging: { pageNum: p, pageSize: pageSize.value, needTotal: true }, paging: { pageNum: p, pageSize: pageSize.value },
}); });
searchTrace(); searchTrace();
} }
@ -104,7 +108,7 @@ function updatePage(p: number) {
function changeSort(opt: Option[] | any) { function changeSort(opt: Option[] | any) {
traceStore.setTraceCondition({ traceStore.setTraceCondition({
queryOrder: opt[0].value, queryOrder: opt[0].value,
paging: { pageNum: 1, pageSize: pageSize.value, needTotal: true }, paging: { pageNum: 1, pageSize: pageSize.value },
}); });
searchTrace(); searchTrace();
} }
@ -167,7 +171,7 @@ async function queryTraces() {
} }
.list { .list {
width: 400px; width: 300px;
} }
.trace-tr { .trace-tr {

View File

@ -91,7 +91,9 @@ limitations under the License. -->
v-model:currentPage="pageNum" v-model:currentPage="pageNum"
v-model:page-size="pageSize" v-model:page-size="pageSize"
:small="true" :small="true"
:total="traceStore.traceSpanLogsTotal" layout="prev, pager, next"
:pager-count="5"
:total="total"
@current-change="turnPage" @current-change="turnPage"
/> />
<LogTable <LogTable
@ -106,7 +108,7 @@ limitations under the License. -->
</el-dialog> </el-dialog>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { ref } from "vue"; import { ref, computed } from "vue";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
import type { PropType } from "vue"; import type { PropType } from "vue";
import dayjs from "dayjs"; import dayjs from "dayjs";
@ -124,6 +126,11 @@ const traceStore = useTraceStore();
const pageNum = ref<number>(1); const pageNum = ref<number>(1);
const showRelatedLogs = ref<boolean>(false); const showRelatedLogs = ref<boolean>(false);
const pageSize = 10; const pageSize = 10;
const total = computed(() =>
traceStore.traceList.length === pageSize
? pageSize * pageNum.value + 1
: pageSize * pageNum.value
);
const dateFormat = (date: number, pattern = "YYYY-MM-DD HH:mm:ss") => const dateFormat = (date: number, pattern = "YYYY-MM-DD HH:mm:ss") =>
dayjs(date).format(pattern); dayjs(date).format(pattern);
async function getTaceLogs() { async function getTaceLogs() {
@ -135,7 +142,7 @@ async function getTaceLogs() {
segmentId: props.currentSpan.segmentId, segmentId: props.currentSpan.segmentId,
spanId: props.currentSpan.spanId, spanId: props.currentSpan.spanId,
}, },
paging: { pageNum: pageNum.value, pageSize, needTotal: true }, paging: { pageNum: pageNum.value, pageSize },
}, },
}); });
if (res.errors) { if (res.errors) {