feat: add sorting function for tags in TripChecklist
This commit is contained in:
parent
07918c55c3
commit
03b3923dec
1 changed files with 14 additions and 2 deletions
|
|
@ -67,6 +67,18 @@ export default function TripChecklist({ trips }: { trips: any[] }) {
|
||||||
const trip = trips.find((t) => t.id === id);
|
const trip = trips.find((t) => t.id === id);
|
||||||
const [selectedTags, setSelectedTags] = useState<any[]>([]);
|
const [selectedTags, setSelectedTags] = useState<any[]>([]);
|
||||||
|
|
||||||
|
// Sort tags: mitnahme (normal) -> bedingung (mandatory) -> kategorie (category),
|
||||||
|
// each group sorted alphabetically (German collation, base sensitivity).
|
||||||
|
function sortTagsForDisplay(tags: any[]) {
|
||||||
|
const typeOrder = (t: any) => (t.category ? 2 : t.mandatory ? 1 : 0);
|
||||||
|
return [...tags].sort((a, b) => {
|
||||||
|
const ta = typeOrder(a);
|
||||||
|
const tb = typeOrder(b);
|
||||||
|
if (ta !== tb) return ta - tb;
|
||||||
|
return a.name.localeCompare(b.name, "de", { sensitivity: "base" });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (trip) {
|
if (trip) {
|
||||||
setSelectedTags(trip.selected_tags);
|
setSelectedTags(trip.selected_tags);
|
||||||
|
|
@ -244,7 +256,7 @@ export default function TripChecklist({ trips }: { trips: any[] }) {
|
||||||
{selectedTags.length === 0 ? (
|
{selectedTags.length === 0 ? (
|
||||||
<span className="text-gray-400 text-sm">keine</span>
|
<span className="text-gray-400 text-sm">keine</span>
|
||||||
) : (
|
) : (
|
||||||
selectedTags.map((tag: any) => (
|
sortTagsForDisplay(selectedTags).map((tag: any) => (
|
||||||
<Tag
|
<Tag
|
||||||
key={tag.id}
|
key={tag.id}
|
||||||
tag={tag}
|
tag={tag}
|
||||||
|
|
@ -350,7 +362,7 @@ export default function TripChecklist({ trips }: { trips: any[] }) {
|
||||||
{selectedTags.length === 0 ? (
|
{selectedTags.length === 0 ? (
|
||||||
<span className="text-gray-400 text-sm">keine</span>
|
<span className="text-gray-400 text-sm">keine</span>
|
||||||
) : (
|
) : (
|
||||||
selectedTags.map((tag: any) => (
|
sortTagsForDisplay(selectedTags).map((tag: any) => (
|
||||||
<Tag
|
<Tag
|
||||||
key={tag.id}
|
key={tag.id}
|
||||||
tag={tag}
|
tag={tag}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue