feat: add normalization and sorting of items by name in ItemsPage

This commit is contained in:
Felix Zett 2025-08-31 19:48:52 +02:00
parent 482396039d
commit c966009ab5

View file

@ -12,6 +12,13 @@ import {
import ItemList from "../components/ItemList"; import ItemList from "../components/ItemList";
import TagFilter from "../components/TagFilter"; import TagFilter from "../components/TagFilter";
function normalizeName(name: string): string {
return name
.replace(/\{.*?\}/g, "") // {...} entfernen
.replace(/[^\p{L}\p{N}]/gu, "") // alles außer Unicode-Buchstaben/Zahlen entfernen
.toLowerCase();
}
export default function ItemsPage() { export default function ItemsPage() {
const [items, setItems] = useState<Item[]>([]); const [items, setItems] = useState<Item[]>([]);
const [tags, setTags] = useState<Tag[]>([]); const [tags, setTags] = useState<Tag[]>([]);
@ -73,7 +80,12 @@ export default function ItemsPage() {
return matchesText && matchesTags; return matchesText && matchesTags;
}); });
return ( // Sortieren nach bereinigtem Namen
const sortedItems = [...filteredItems].sort((a, b) =>
normalizeName(a.name).localeCompare(normalizeName(b.name))
);
return (
<div className="p-4 max-w-3xl mx-auto"> <div className="p-4 max-w-3xl mx-auto">
<h1 className="text-2xl font-bold mb-4">Items</h1> <h1 className="text-2xl font-bold mb-4">Items</h1>
@ -97,7 +109,7 @@ export default function ItemsPage() {
<p>Lade...</p> <p>Lade...</p>
) : ( ) : (
<ItemList <ItemList
items={filteredItems} items={sortedItems}
allTags={tags} allTags={tags}
onUpdateName={handleRenameItem} onUpdateName={handleRenameItem}
onDeleteTag={handleDeleteTag} onDeleteTag={handleDeleteTag}