Add sortFields function to utils.ts
This commit is contained in:
parent
ad51105546
commit
aa1515a96d
1 changed files with 41 additions and 1 deletions
|
|
@ -1,5 +1,6 @@
|
||||||
import clsx, { ClassValue } from "clsx";
|
import clsx, { ClassValue } from "clsx";
|
||||||
import { twMerge } from "tailwind-merge";
|
import { twMerge } from "tailwind-merge";
|
||||||
|
import { priorityFields } from "../constants/constants";
|
||||||
import { ADJECTIVES, DESCRIPTIONS, NOUNS } from "../flow_constants";
|
import { ADJECTIVES, DESCRIPTIONS, NOUNS } from "../flow_constants";
|
||||||
import {
|
import {
|
||||||
APIDataType,
|
APIDataType,
|
||||||
|
|
@ -143,7 +144,7 @@ export function groupByFamily(
|
||||||
// se existir o flow
|
// se existir o flow
|
||||||
for (const node of flow) {
|
for (const node of flow) {
|
||||||
// para cada node do flow
|
// para cada node do flow
|
||||||
if (node!.data!.node!.flow) break; // não faz nada se o node for um group
|
if (node!.data!.node!.flow || !node!.data!.node!.template) break; // não faz nada se o node for um group
|
||||||
const nodeData = node.data;
|
const nodeData = node.data;
|
||||||
|
|
||||||
const foundNode = checkedNodes.get(nodeData.type); // verifica se o tipo do node já foi checado
|
const foundNode = checkedNodes.get(nodeData.type); // verifica se o tipo do node já foi checado
|
||||||
|
|
@ -642,3 +643,42 @@ export function getFieldTitle(
|
||||||
? template[templateField].display_name!
|
? template[templateField].display_name!
|
||||||
: template[templateField].name ?? templateField;
|
: template[templateField].name ?? templateField;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function sortFields(a, b, fieldOrder) {
|
||||||
|
// Early return for empty fields
|
||||||
|
if (!a && !b) return 0;
|
||||||
|
if (!a) return 1;
|
||||||
|
if (!b) return -1;
|
||||||
|
|
||||||
|
// Normalize the case to ensure case-insensitive comparison
|
||||||
|
const normalizedFieldA = a.toLowerCase();
|
||||||
|
const normalizedFieldB = b.toLowerCase();
|
||||||
|
|
||||||
|
const aIsPriority = priorityFields.has(normalizedFieldA);
|
||||||
|
const bIsPriority = priorityFields.has(normalizedFieldB);
|
||||||
|
|
||||||
|
// Sort by priority
|
||||||
|
if (aIsPriority && !bIsPriority) return -1;
|
||||||
|
if (!aIsPriority && bIsPriority) return 1;
|
||||||
|
|
||||||
|
// Check if either field is in the fieldOrder array
|
||||||
|
const indexOfA = fieldOrder.indexOf(normalizedFieldA);
|
||||||
|
const indexOfB = fieldOrder.indexOf(normalizedFieldB);
|
||||||
|
|
||||||
|
// If both fields are in fieldOrder, sort by their order in the array
|
||||||
|
if (indexOfA !== -1 && indexOfB !== -1) {
|
||||||
|
return indexOfA - indexOfB;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If only one of the fields is in fieldOrder, that field comes first
|
||||||
|
if (indexOfA !== -1) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (indexOfB !== -1) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Default case for fields not in priorityFields and not found in fieldOrder
|
||||||
|
// You might want to sort them alphabetically or in another specific manner
|
||||||
|
return a.localeCompare(b);
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue