From 9df9049fdfa4c3c6968f0dfeb35b5a57e5e8dd8e Mon Sep 17 00:00:00 2001 From: Alexis <35.alexis.pele@gmail.com> Date: Sat, 6 Apr 2024 23:45:34 +0200 Subject: [PATCH] Added sorting functions in search --- src/components/calendar/CalendarTile.vue | 8 +- .../calendar/search/CalendarSearch.vue | 73 ++++++++++++++++--- .../calendar/search/lists/SearchList.vue | 29 +++++++- src/components/ui/dialog/DialogContent.vue | 2 +- src/models/Date.ts | 39 ++++++++++ src/stores/calendar.ts | 13 ---- 6 files changed, 133 insertions(+), 31 deletions(-) diff --git a/src/components/calendar/CalendarTile.vue b/src/components/calendar/CalendarTile.vue index f7184e9..96f90c7 100644 --- a/src/components/calendar/CalendarTile.vue +++ b/src/components/calendar/CalendarTile.vue @@ -1,5 +1,5 @@ diff --git a/src/components/calendar/search/CalendarSearch.vue b/src/components/calendar/search/CalendarSearch.vue index 4a0a4dd..05994d4 100644 --- a/src/components/calendar/search/CalendarSearch.vue +++ b/src/components/calendar/search/CalendarSearch.vue @@ -3,15 +3,17 @@ import { Button } from '@/components/ui/button' import { Dialog, DialogContent, DialogTrigger } from '@/components/ui/dialog' import { Input } from '@/components/ui/input' import { ToggleGroup, ToggleGroupItem } from '@/components/ui/toggle-group' +import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip' +import { isCharacter, type Character } from '@/models/Characters' +import type { LeimDateOrder } from '@/models/Date' +import { isCalendarEvent, type CalendarEvent } from '@/models/Events' import { useCharacters } from '@/stores/characters' import { useCalendarEvents } from '@/stores/events' -import { PhMagnifyingGlass } from '@phosphor-icons/vue' +import { PhCaretDoubleDown, PhCaretDoubleUp, PhMagnifyingGlass } from '@phosphor-icons/vue' import { useMagicKeys, useStorage, useTimeoutFn, whenever } from '@vueuse/core' import { computed, ref } from 'vue' import { searchUnifier, type SearchMode } from '../Search' import SearchList from './lists/SearchList.vue' -import { isCalendarEvent, type CalendarEvent } from '@/models/Events' -import { isCharacter, type Character } from '@/models/Characters' const { characters } = useCharacters() const { baseEvents } = useCalendarEvents() @@ -22,6 +24,15 @@ const searchQuery = ref('') const searchEnough = computed(() => searchQuery.value.length >= 2) const selectedEntity = useStorage('se', undefined as SearchMode) +const selectedOrder = ref('desc') + +function setOrderAsc() { + selectedOrder.value = 'asc' +} + +function setOrderDesc() { + selectedOrder.value = 'desc' +} const searchResults = computed(() => { let results: (Character | CalendarEvent)[] = [] @@ -127,14 +138,53 @@ whenever(keys.control_period, () => { - - - Évènements - - - Personnages - - + + + + + Évènements + + + Personnages + + + + + + + + + + + + + Plus ancien + + + + + + + + + + + + + Plus récent + + + + + @@ -142,6 +192,7 @@ whenever(keys.control_period, () => { diff --git a/src/components/calendar/search/lists/SearchList.vue b/src/components/calendar/search/lists/SearchList.vue index 0a683b6..521265d 100644 --- a/src/components/calendar/search/lists/SearchList.vue +++ b/src/components/calendar/search/lists/SearchList.vue @@ -1,7 +1,7 @@ - + b.year) return 1 * orderFactor + + if (a.month < b.month) return -1 * orderFactor + if (a.month > b.month) return 1 * orderFactor + + if (a.day < b.day) return -1 * orderFactor + if (a.day > b.day) return 1 * orderFactor + + return 0 +} diff --git a/src/stores/calendar.ts b/src/stores/calendar.ts index 4d05170..68b8259 100644 --- a/src/stores/calendar.ts +++ b/src/stores/calendar.ts @@ -316,18 +316,6 @@ export const useCalendar = defineStore('calendar', () => { return `${getMonthName(date.month)} ${date.year} ${getPeriodOfYear(date.year).short}` } - /** - * Check whether two dates are identical - * - * @param date1 First date - * @param date2 Second date - * @returns True if the dates are identical - */ - function compareTwoDates(date1: LeimDate, date2: LeimDate) { - // To refacto to be more precise - return JSON.stringify({ ...date1 }) === JSON.stringify({ ...date2 }) - } - /** * Jumps the calendar to the given date * @@ -362,7 +350,6 @@ export const useCalendar = defineStore('calendar', () => { decrementYear, jumpToDate, jumpToDefaultDate, - compareTwoDates, getFormattedDateTitle, getMonthName, setViewType,
Plus ancien
Plus récent