diff --git a/frontend/app/pages/index.vue b/frontend/app/pages/index.vue index 8106a59..e5f0ea8 100644 --- a/frontend/app/pages/index.vue +++ b/frontend/app/pages/index.vue @@ -58,7 +58,26 @@ -
+
+ + +
+
@@ -66,13 +85,13 @@ à
@@ -295,6 +314,7 @@ const showAddSiteModal = ref(false) const showAddMachineModal = ref(false) const searchTerm = ref('') const selectedSiteFilter = ref('') +const sortOrder = ref('name-asc') const dateFrom = ref('') const dateTo = ref('') const collapsedSites = ref([]) @@ -318,10 +338,33 @@ const machinesBySiteId = computed(() => { return map }) +const sortMachines = (machineList) => { + const list = [...machineList] + switch (sortOrder.value) { + case 'name-desc': + return list.sort((a, b) => + (b.name || '').localeCompare(a.name || '', 'fr', { sensitivity: 'base', numeric: true }) + ) + case 'date-desc': + return list.sort((a, b) => + new Date(b.createdAt || 0) - new Date(a.createdAt || 0) + ) + case 'date-asc': + return list.sort((a, b) => + new Date(a.createdAt || 0) - new Date(b.createdAt || 0) + ) + case 'name-asc': + default: + return list.sort((a, b) => + (a.name || '').localeCompare(b.name || '', 'fr', { sensitivity: 'base', numeric: true }) + ) + } +} + const sitesWithMachines = computed(() => { return sites.value.map((site) => ({ ...site, - machines: machinesBySiteId.value.get(site.id) || [] + machines: sortMachines(machinesBySiteId.value.get(site.id) || []) })) })