Skip to content

Commit bca1b69

Browse files
committed
- apply DateRange type to store
- fix applying query filters on loading of message list
1 parent 39f917d commit bca1b69

File tree

3 files changed

+27
-25
lines changed

3 files changed

+27
-25
lines changed

src/Frontend/src/components/audit/AuditList.vue

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -120,10 +120,12 @@ function setQuery() {
120120
121121
let firstLoad = true;
122122
123-
onBeforeMount(async () => {
123+
onBeforeMount(() => {
124124
setQuery();
125125
126-
await Promise.all([store.refresh(), store.loadEndpoints()]);
126+
//without setTimeout, this happens before the store is properly initialised, and therefore the query route values aren't applied to the refresh
127+
//TODO: is there a better way to achieve this?
128+
setTimeout(async () => await Promise.all([store.refresh(), store.loadEndpoints()]), 0);
127129
128130
firstLoad = false;
129131
});
@@ -142,12 +144,9 @@ const watchHandle = watch([() => route.query, itemsPerPage, sortBy, messageFilte
142144
return;
143145
}
144146
145-
let from = "",
146-
to = "";
147-
if (dateRange.value.length === 2) {
148-
from = dateRange.value[0].toISOString();
149-
to = dateRange.value[1].toISOString();
150-
}
147+
const [fromDate, toDate] = dateRange.value;
148+
const from = fromDate?.toISOString() ?? "";
149+
const to = toDate?.toISOString() ?? "";
151150
152151
await router.push({
153152
query: {

src/Frontend/src/components/audit/DatePickerRange.vue

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,28 @@
11
<script setup lang="ts">
2+
import { DateRange } from "@/stores/AuditStore";
23
import VueDatePicker from "@vuepic/vue-datepicker";
34
import { ref, useTemplateRef, watch } from "vue";
45
5-
type DateRange = [Date, Date];
6-
7-
const model = defineModel<Date[]>({ required: true });
8-
const internalModel = ref<Date[]>([]);
6+
const model = defineModel<DateRange>({ required: true });
7+
const internalModel = ref<DateRange>([]);
98
const displayDataRange = ref<string>("No dates");
109
const datePicker = useTemplateRef<typeof VueDatePicker>("datePicker");
1110
1211
watch(internalModel, () => {
13-
if (isValidRange(internalModel.value as DateRange)) {
14-
model.value = internalModel.value;
15-
displayDataRange.value = formatDate(internalModel.value as DateRange);
12+
const updatedRange = internalModel.value as DateRange;
13+
if (isValidRange(updatedRange)) {
14+
model.value = updatedRange;
15+
displayDataRange.value = formatDate(updatedRange);
1616
} else internalModel.value = model.value;
1717
});
1818
19-
watch(model, () => {
20-
internalModel.value = model.value;
21-
});
19+
watch(
20+
model,
21+
() => {
22+
internalModel.value = model.value;
23+
},
24+
{ immediate: true }
25+
);
2226
2327
function isValidRange([fromDate, toDate]: DateRange) {
2428
return (!fromDate && !toDate) || (toDate && toDate <= new Date());

src/Frontend/src/stores/AuditStore.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@ import Message from "@/resources/Message";
66
import { EndpointsView } from "@/resources/EndpointView.ts";
77
import useAutoRefresh from "@/composables/autoRefresh";
88

9+
export type DateRange = [fromDate: Date, toDate: Date] | [];
10+
911
export const useAuditStore = defineStore("AuditStore", () => {
1012
const sortByInstances = ref<SortInfo>({
1113
property: "time_sent",
1214
isAscending: false,
1315
});
1416

15-
const dateRange = ref<Date[]>([]);
17+
const dateRange = ref<DateRange>([]);
1618
const messageFilterString = ref("");
1719
const itemsPerPage = ref(100);
1820
const totalCount = ref(0);
@@ -32,12 +34,9 @@ export const useAuditStore = defineStore("AuditStore", () => {
3234

3335
const dataRetriever = useAutoRefresh(async () => {
3436
try {
35-
let from = "",
36-
to = "";
37-
if (dateRange.value.length === 2) {
38-
from = dateRange.value[0].toISOString();
39-
to = dateRange.value[1].toISOString();
40-
}
37+
const [fromDate, toDate] = dateRange.value;
38+
const from = fromDate?.toISOString() ?? "";
39+
const to = toDate?.toISOString() ?? "";
4140
const [response, data] = await useTypedFetchFromServiceControl<Message[]>(
4241
`messages2/?endpoint_name=${selectedEndpointName.value}&from=${from}&to=${to}&q=${messageFilterString.value}&page_size=${itemsPerPage.value}&sort=${sortByInstances.value.property}&direction=${sortByInstances.value.isAscending ? "asc" : "desc"}`
4342
);

0 commit comments

Comments
 (0)