Skip to content

Commit 071aed5

Browse files
committed
fix(ui): fix device/container sorting in DeviceTable
1 parent 217aa0d commit 071aed5

File tree

12 files changed

+97
-22
lines changed

12 files changed

+97
-22
lines changed

ui/src/components/Containers/ContainerList.vue

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
<script setup lang="ts">
1414
import DeviceTable from "../Tables/DeviceTable.vue";
15-
import { FetchContainerParams, IContainerMethods } from "@/interfaces/IContainer";
15+
import { FetchContainerParams, IContainerMethods, SortContainersParams } from "@/interfaces/IContainer";
1616
import { useStore } from "@/store";
1717
1818
const store = useStore();
@@ -28,6 +28,13 @@ const fetchDevices = async ({ perPage, page, filter, status, sortStatusField, so
2828
});
2929
};
3030
31+
const setSort = ({ sortStatusField, sortStatusString }: SortContainersParams) => {
32+
store.dispatch("container/setSortStatus", {
33+
sortStatusField,
34+
sortStatusString,
35+
});
36+
};
37+
3138
const getFilter = () => store.getters["container/getFilter"];
3239
const getList = () => store.getters["container/list"];
3340
const getSortStatusField = () => store.getters["container/getSortStatusField"];
@@ -36,6 +43,7 @@ const getNumber = () => store.getters["container/getNumberContainers"];
3643
3744
const storeMethods: IContainerMethods = {
3845
fetchDevices,
46+
setSort,
3947
getFilter,
4048
getList,
4149
getSortStatusField,

ui/src/components/Containers/ContainerPendingList.vue

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
<script setup lang="ts">
1414
import DeviceTable from "../Tables/DeviceTable.vue";
15-
import { FetchContainerParams, IContainerMethods } from "@/interfaces/IContainer";
15+
import { FetchContainerParams, IContainerMethods, SortContainersParams } from "@/interfaces/IContainer";
1616
import { useStore } from "@/store";
1717
1818
const store = useStore();
@@ -28,6 +28,13 @@ const fetchDevices = async ({ perPage, page, filter, status, sortStatusField, so
2828
});
2929
};
3030
31+
const setSort = ({ sortStatusField, sortStatusString }: SortContainersParams) => {
32+
store.dispatch("container/setSortStatus", {
33+
sortStatusField,
34+
sortStatusString,
35+
});
36+
};
37+
3138
const getFilter = () => store.getters["container/getFilter"];
3239
const getList = () => store.getters["container/list"];
3340
const getSortStatusField = () => store.getters["container/getSortStatusField"];
@@ -36,6 +43,7 @@ const getNumber = () => store.getters["container/getNumberContainers"];
3643
3744
const storeMethods: IContainerMethods = {
3845
fetchDevices,
46+
setSort,
3947
getFilter,
4048
getList,
4149
getSortStatusField,

ui/src/components/Containers/ContainerRejectedList.vue

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
<script setup lang="ts">
1414
import DeviceTable from "../Tables/DeviceTable.vue";
15-
import { FetchContainerParams, IContainerMethods } from "@/interfaces/IContainer";
15+
import { FetchContainerParams, IContainerMethods, SortContainersParams } from "@/interfaces/IContainer";
1616
import { useStore } from "@/store";
1717
1818
const store = useStore();
@@ -28,6 +28,13 @@ const fetchDevices = async ({ perPage, page, filter, status, sortStatusField, so
2828
});
2929
};
3030
31+
const setSort = ({ sortStatusField, sortStatusString }: SortContainersParams) => {
32+
store.dispatch("container/setSortStatus", {
33+
sortStatusField,
34+
sortStatusString,
35+
});
36+
};
37+
3138
const getFilter = () => store.getters["container/getFilter"];
3239
const getList = () => store.getters["container/list"];
3340
const getSortStatusField = () => store.getters["container/getSortStatusField"];
@@ -36,6 +43,7 @@ const getNumber = () => store.getters["container/getNumberContainers"];
3643
3744
const storeMethods: IContainerMethods = {
3845
fetchDevices,
46+
setSort,
3947
getFilter,
4048
getList,
4149
getSortStatusField,

ui/src/components/Devices/DeviceList.vue

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
<script setup lang="ts">
1414
import DeviceTable from "../Tables/DeviceTable.vue";
15-
import { FetchDevicesParams, IDeviceMethods } from "@/interfaces/IDevice";
15+
import { FetchDevicesParams, IDeviceMethods, SortDevicesParams } from "@/interfaces/IDevice";
1616
import { useStore } from "@/store";
1717
1818
const store = useStore();
@@ -28,6 +28,13 @@ const fetchDevices = async ({ perPage, page, filter, status, sortStatusField, so
2828
});
2929
};
3030
31+
const setSort = ({ sortStatusField, sortStatusString }: SortDevicesParams) => {
32+
store.dispatch("devices/setSortStatus", {
33+
sortStatusField,
34+
sortStatusString,
35+
});
36+
};
37+
3138
const getFilter = () => store.getters["devices/getFilter"];
3239
const getList = () => store.getters["devices/list"];
3340
const getSortStatusField = () => store.getters["devices/getSortStatusField"];
@@ -36,6 +43,7 @@ const getNumber = () => store.getters["devices/getNumberDevices"];
3643
3744
const storeMethods: IDeviceMethods = {
3845
fetchDevices,
46+
setSort,
3947
getFilter,
4048
getList,
4149
getSortStatusField,

ui/src/components/Devices/DevicePendingList.vue

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
<script setup lang="ts">
1414
import DeviceTable from "../Tables/DeviceTable.vue";
15-
import { FetchDevicesParams, IDeviceMethods } from "@/interfaces/IDevice";
15+
import { FetchDevicesParams, IDeviceMethods, SortDevicesParams } from "@/interfaces/IDevice";
1616
import { useStore } from "@/store";
1717
1818
const store = useStore();
@@ -28,6 +28,13 @@ const fetchDevices = async ({ perPage, page, filter, status, sortStatusField, so
2828
});
2929
};
3030
31+
const setSort = ({ sortStatusField, sortStatusString }: SortDevicesParams) => {
32+
store.dispatch("devices/setSortStatus", {
33+
sortStatusField,
34+
sortStatusString,
35+
});
36+
};
37+
3138
const getFilter = () => store.getters["devices/getFilter"];
3239
const getList = () => store.getters["devices/list"];
3340
const getSortStatusField = () => store.getters["devices/getSortStatusField"];
@@ -36,6 +43,7 @@ const getNumber = () => store.getters["devices/getNumberDevices"];
3643
3744
const storeMethods: IDeviceMethods = {
3845
fetchDevices,
46+
setSort,
3947
getFilter,
4048
getList,
4149
getSortStatusField,

ui/src/components/Devices/DeviceRejectedList.vue

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
<script setup lang="ts">
1414
import DeviceTable from "../Tables/DeviceTable.vue";
15-
import { FetchDevicesParams, IDeviceMethods } from "@/interfaces/IDevice";
15+
import { FetchDevicesParams, IDeviceMethods, SortDevicesParams } from "@/interfaces/IDevice";
1616
import { useStore } from "@/store";
1717
1818
const store = useStore();
@@ -28,6 +28,13 @@ const fetchDevices = async ({ perPage, page, filter, status, sortStatusField, so
2828
});
2929
};
3030
31+
const setSort = ({ sortStatusField, sortStatusString }: SortDevicesParams) => {
32+
store.dispatch("devices/setSortStatus", {
33+
sortStatusField,
34+
sortStatusString,
35+
});
36+
};
37+
3138
const getFilter = () => store.getters["devices/getFilter"];
3239
const getList = () => store.getters["devices/list"];
3340
const getSortStatusField = () => store.getters["devices/getSortStatusField"];
@@ -36,6 +43,7 @@ const getNumber = () => store.getters["devices/getNumberDevices"];
3643
3744
const storeMethods: IDeviceMethods = {
3845
fetchDevices,
46+
setSort,
3947
getFilter,
4048
getList,
4149
getSortStatusField,

ui/src/components/Tables/DeviceTable.vue

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ const props = defineProps({
277277
},
278278
});
279279
280-
const { fetchDevices, getFilter, getList, getSortStatusField, getSortStatusString, getNumber } = props.storeMethods;
280+
const { fetchDevices, setSort, getFilter, getList, getSortStatusField, getSortStatusString, getNumber } = props.storeMethods;
281281
282282
const router = useRouter();
283283
const loading = ref(false);
@@ -377,13 +377,16 @@ const getDevices = async (perPageValue: number, pageValue: number, filter: strin
377377
};
378378
379379
const getSortOrder = () => {
380-
const currentOrder = store.getters["apiKeys/getSortStatusString"];
380+
const currentOrder = getSortStatusString();
381381
if (currentOrder === "asc") return "desc";
382382
return "asc";
383383
};
384384
385385
const sortByItem = async (field: string) => {
386-
await fetchDevices({ sortStatusField: field, sortStatusString: getSortOrder() });
386+
setSort({
387+
sortStatusField: field,
388+
sortStatusString: getSortOrder(),
389+
});
387390
await getDevices(itemsPerPage.value, page.value, filter.value);
388391
};
389392

ui/src/interfaces/IContainer.ts

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,18 @@ export interface FetchContainerParams {
6262
sortStatusField: string;
6363
sortStatusString: string;
6464
}
65+
66+
export interface SortContainersParams {
67+
sortStatusField: string;
68+
sortStatusString: string;
69+
}
70+
6571
export interface IContainerMethods {
66-
fetchDevices: (params: FetchContainerParams) => Promise<void>;
67-
getFilter: () => string;
68-
getList: () => IContainer[];
69-
getSortStatusField: () => string;
70-
getSortStatusString: () => string;
71-
getNumber: () => number;
72+
fetchDevices: (params: FetchContainerParams) => Promise<void>;
73+
setSort: (params: SortContainersParams) => void;
74+
getFilter: () => string;
75+
getList: () => IContainer[];
76+
getSortStatusField: () => string;
77+
getSortStatusString: () => string;
78+
getNumber: () => number;
7279
}

ui/src/interfaces/IDevice.ts

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,18 @@ export interface FetchDevicesParams {
5757
sortStatusField: string;
5858
sortStatusString: string;
5959
}
60+
61+
export interface SortDevicesParams {
62+
sortStatusField: string;
63+
sortStatusString: string;
64+
}
65+
6066
export interface IDeviceMethods {
61-
fetchDevices: (params: FetchDevicesParams) => Promise<void>;
62-
getFilter: () => string;
63-
getList: () => IDevice[];
64-
getSortStatusField: () => string;
65-
getSortStatusString: () => string;
66-
getNumber: () => number;
67+
fetchDevices: (params: FetchDevicesParams) => Promise<void>;
68+
setSort: (params: SortDevicesParams) => void;
69+
getFilter: () => string;
70+
getList: () => IDevice[];
71+
getSortStatusField: () => string;
72+
getSortStatusString: () => string;
73+
getNumber: () => number;
6774
}

ui/src/store/modules/container.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,11 @@ export const container: Module<ContainerState, State> = {
7979
state.filter = filter;
8080
},
8181

82+
setSortStatus: (state, data) => {
83+
state.sortStatusField = data.sortStatusField;
84+
state.sortStatusString = data.sortStatusString;
85+
},
86+
8287
clearListContainers: (state) => {
8388
state.containers = [];
8489
state.numberContainers = 0;
@@ -181,5 +186,9 @@ export const container: Module<ContainerState, State> = {
181186
updateDeviceTag: async (context, data) => {
182187
await apiContainer.updateContainerTag(data);
183188
},
189+
190+
setSortStatus({ commit }, data) {
191+
commit("setSortStatus", data);
192+
},
184193
},
185194
};

0 commit comments

Comments
 (0)