* start of settings types Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * add validator Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * start of settings in rust Signed-off-by: Jess Frazelle <github@jessfraz.com> * fix wasm Signed-off-by: Jess Frazelle <github@jessfraz.com> * fix Signed-off-by: Jess Frazelle <github@jessfraz.com> * fix wasm Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * more tests Signed-off-by: Jess Frazelle <github@jessfraz.com> * derive docs Signed-off-by: Jess Frazelle <github@jessfraz.com> * configuration Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * read and write functions with migration Signed-off-by: Jess Frazelle <github@jessfraz.com> * make more dry Signed-off-by: Jess Frazelle <github@jessfraz.com> * more parsing of app settings Signed-off-by: Jess Frazelle <github@jessfraz.com> * more things Signed-off-by: Jess Frazelle <github@jessfraz.com> * cleanup Signed-off-by: Jess Frazelle <github@jessfraz.com> * trim end Signed-off-by: Jess Frazelle <github@jessfraz.com> * project settings Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * fix Signed-off-by: Jess Frazelle <github@jessfraz.com> * fixes Signed-off-by: Jess Frazelle <github@jessfraz.com> * fixes Signed-off-by: Jess Frazelle <github@jessfraz.com> * cleanup tauri commands Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * refactor Signed-off-by: Jess Frazelle <github@jessfraz.com> * refactor Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * change to files Signed-off-by: Jess Frazelle <github@jessfraz.com> * better Signed-off-by: Jess Frazelle <github@jessfraz.com> * cleanup more Signed-off-by: Jess Frazelle <github@jessfraz.com> * get rid of dead code Signed-off-by: Jess Frazelle <github@jessfraz.com> * fixed Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * cleanup some more shit Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * add validation Signed-off-by: Jess Frazelle <github@jessfraz.com> * validation Signed-off-by: Jess Frazelle <github@jessfraz.com> * validate Signed-off-by: Jess Frazelle <github@jessfraz.com> * validate Signed-off-by: Jess Frazelle <github@jessfraz.com> * clippuy Signed-off-by: Jess Frazelle <github@jessfraz.com> * clippuy Signed-off-by: Jess Frazelle <github@jessfraz.com> * fix; Signed-off-by: Jess Frazelle <github@jessfraz.com> --------- Signed-off-by: Jess Frazelle <github@jessfraz.com>
56 lines
1.5 KiB
TypeScript
56 lines
1.5 KiB
TypeScript
import {
|
|
faArrowDown,
|
|
faArrowUp,
|
|
faCircle,
|
|
} from '@fortawesome/free-solid-svg-icons'
|
|
import { Project } from 'wasm-lib/kcl/bindings/Project'
|
|
|
|
const DESC = ':desc'
|
|
|
|
export function getSortIcon(currentSort: string, newSort: string) {
|
|
if (currentSort === newSort) {
|
|
return faArrowUp
|
|
} else if (currentSort === newSort + DESC) {
|
|
return faArrowDown
|
|
}
|
|
return faCircle
|
|
}
|
|
|
|
export function getNextSearchParams(currentSort: string, newSort: string) {
|
|
if (currentSort === null || !currentSort)
|
|
return { sort_by: newSort + (newSort !== 'modified' ? DESC : '') }
|
|
if (currentSort.includes(newSort) && !currentSort.includes(DESC))
|
|
return { sort_by: '' }
|
|
return {
|
|
sort_by: newSort + (currentSort.includes(DESC) ? '' : DESC),
|
|
}
|
|
}
|
|
|
|
export function getSortFunction(sortBy: string) {
|
|
const sortByName = (a: Project, b: Project) => {
|
|
if (a.name && b.name) {
|
|
return sortBy.includes('desc')
|
|
? a.name.localeCompare(b.name)
|
|
: b.name.localeCompare(a.name)
|
|
}
|
|
return 0
|
|
}
|
|
|
|
const sortByModified = (a: Project, b: Project) => {
|
|
if (a.metadata?.modified && b.metadata?.modified) {
|
|
const aDate = new Date(a.metadata.modified)
|
|
const bDate = new Date(b.metadata.modified)
|
|
return !sortBy || sortBy.includes('desc')
|
|
? bDate.getTime() - aDate.getTime()
|
|
: aDate.getTime() - bDate.getTime()
|
|
}
|
|
return 0
|
|
}
|
|
|
|
if (sortBy?.includes('name')) {
|
|
return sortByName
|
|
} else {
|
|
return sortByModified
|
|
}
|
|
}
|