diff --git a/src/modules/03_logs/components/LogTable.vue b/src/modules/03_logs/components/LogTable.vue index 2ef05420..8f91691d 100644 --- a/src/modules/03_logs/components/LogTable.vue +++ b/src/modules/03_logs/components/LogTable.vue @@ -21,7 +21,6 @@ const columns = ref([ name: "startTimeStamp", align: "left", label: "เวลา", - sortable: true, field: "startTimeStamp", headerStyle: "font-size: 14px", format: (v) => date2Thai(v, false, true), @@ -33,7 +32,6 @@ const columns = ref([ name: "username", align: "left", label: "ผู้ใช้", - sortable: true, field: "username", headerStyle: "font-size: 14px", style: "font-size: 14px", @@ -44,7 +42,6 @@ const columns = ref([ name: "host", align: "left", label: "Host", - sortable: true, field: "host", headerStyle: "font-size: 14px", style: "font-size: 14px", @@ -55,7 +52,6 @@ const columns = ref([ name: "endpoint", align: "left", label: "Endpoint", - sortable: true, field: "endpoint", headerStyle: "font-size: 14px", style: "font-size: 14px", @@ -66,7 +62,6 @@ const columns = ref([ name: "method", align: "left", label: "Method", - sortable: true, field: "method", headerStyle: "font-size: 14px", style: "font-size: 14px", @@ -77,7 +72,6 @@ const columns = ref([ name: "responseCode", align: "left", label: "Response Code", - sortable: true, field: "responseCode", headerStyle: "font-size: 14px", style: "font-size: 14px", @@ -88,7 +82,6 @@ const columns = ref([ name: "logType", align: "left", label: "สถานะ", - sortable: true, field: "logType", headerStyle: "font-size: 14px", style: "font-size: 14px", @@ -100,7 +93,6 @@ const columns = ref([ name: "responseDescription", align: "left", label: "ข้อความ", - sortable: true, field: "responseDescription", headerStyle: "font-size: 14px", style: "font-size: 14px", @@ -110,13 +102,18 @@ const columns = ref([ { name: "dataDiff", align: "left", - label: "ข้อมูลที่เปลี่ยนแปลง", + label: "รายละเอียด", field: "dataDiff", headerStyle: "font-size: 14px", style: "font-size: 14px", }, ]); +const startTime = ref(); +const startDate = ref(""); +const endTime = ref(); +const sortTime = ref<"desc" | "asc">("desc"); +const endDate = ref(""); const openDialog = ref(false); const currentlogData = ref>(); @@ -166,7 +163,15 @@ function handleScroll() { search: inputSearch.value ?? undefined, systemName: systemName.value ?? undefined, searchAfter: searchAfter.value ?? undefined, - date: date.value, + date: new Date(startDate.value), + startDate: + startDate.value.split("T")[0] === endDate.value.split("T")[0] + ? undefined + : new Date(startDate.value), + endDate: + startDate.value.split("T")[0] === endDate.value.split("T")[0] + ? undefined + : new Date(endDate.value), }, true ); @@ -179,6 +184,24 @@ function handleScroll() { const infiniteScroll = handleScroll(); function selectedDate() { + startDate.value = date.value[0].toISOString(); + endDate.value = date.value[1].toISOString(); + + if (!!startTime.value) { + replaceTimeInISOString(startDate.value, startTime.value, "start"); + } else { + const date = new Date(startDate.value); + date.setHours(0, 0, 0, 0); + startDate.value = date.toISOString(); + } + if (!!endTime.value) { + replaceTimeInISOString(endDate.value, endTime.value, "end"); + } else { + const date = new Date(endDate.value); + date.setHours(23, 59, 59, 999); + endDate.value = date.toISOString(); + } + logData.value = []; searchAfter.value = undefined; storeData.fetchLog( @@ -187,7 +210,16 @@ function selectedDate() { search: inputSearch.value ?? undefined, systemName: systemName.value ?? undefined, searchAfter: searchAfter.value ?? undefined, - date: date.value, + sort: sortTime.value, + date: new Date(startDate.value), + startDate: + startDate.value.split("T")[0] === endDate.value.split("T")[0] + ? undefined + : new Date(startDate.value), + endDate: + startDate.value.split("T")[0] === endDate.value.split("T")[0] + ? undefined + : new Date(endDate.value), }, true ); @@ -211,8 +243,38 @@ function classColorMethod(val: string) { } } +function replaceTimeInISOString(isoString: string, time: string, type: string) { + const [datePart] = isoString.split("T"); + + const [hours, minutes] = time.split(":").map(Number); + + const newDate = new Date(isoString); + + newDate.setUTCHours(hours - 7); + newDate.setUTCMinutes(minutes); + newDate.setUTCSeconds(0); + newDate.setUTCMilliseconds(0); + + if (type === "start") { + startDate.value = newDate.toISOString(); + } else { + endDate.value = newDate.toISOString(); + } +} + +function dateThaiRange(val: [Date, Date]) { + if (val === null) { + } else if (date2Thai(val[0]) === date2Thai(val[1])) { + return `${date2Thai(val[0])}`; + } else { + return `${date2Thai(val[0])} - ${date2Thai(val[1])} `; + } +} + onMounted(() => { systemName.value = route.query.system as string; + startDate.value = date.value[0].toISOString(); + endDate.value = date.value[1].toISOString(); }); @@ -224,6 +286,8 @@ onMounted(() => { v-model="date" :locale="'th'" autoApply + range + :class="$q.screen.gt.sm ? 'col-3' : 'col-5'" :enableTimePicker="false" @update:modelValue="selectedDate" week-start="0" @@ -235,8 +299,9 @@ onMounted(() => { diff --git a/src/modules/03_logs/interface/response/Main.ts b/src/modules/03_logs/interface/response/Main.ts index 30afb602..67d18e4e 100644 --- a/src/modules/03_logs/interface/response/Main.ts +++ b/src/modules/03_logs/interface/response/Main.ts @@ -30,6 +30,8 @@ interface ResLog { responseDescription: string; // sequence: Record; tId: string; + input: string; + output: string; } export type { ResRound, ResLog }; diff --git a/src/modules/03_logs/stores/main.ts b/src/modules/03_logs/stores/main.ts index 2ff4e1f8..1d743ee5 100644 --- a/src/modules/03_logs/stores/main.ts +++ b/src/modules/03_logs/stores/main.ts @@ -24,7 +24,7 @@ export const useDataStore = defineStore("logStore", () => { const logData = ref([]); const systemName = ref(); const searchAfter = ref(); - const date = ref(new Date()); + const date = ref<[Date, Date]>([new Date(), new Date()]); async function fetchLog( opts?: { size?: number; @@ -32,6 +32,9 @@ export const useDataStore = defineStore("logStore", () => { searchAfter?: number; systemName?: string; date?: Date; + sort?: string; + startDate?: Date; + endDate?: Date; }, isBottom?: boolean ) { diff --git a/src/modules/03_logs/views/lists.vue b/src/modules/03_logs/views/lists.vue index cd1e8462..ab1593ba 100644 --- a/src/modules/03_logs/views/lists.vue +++ b/src/modules/03_logs/views/lists.vue @@ -113,7 +113,7 @@ onMounted(async () => { await storeData.fetchLog({ size: size.value, systemName: systemName.value ?? undefined, - date: date.value, + date: date.value[0], }); if (route.query.system) { const a = menuList.value.find((v) => {