From 3afccbd660510699abcec422c9358a1c86195607 Mon Sep 17 00:00:00 2001 From: Marshal Date: Tue, 16 Jun 2026 10:24:22 +0000 Subject: [PATCH] fix priority ui --- apps/edr-freight-web/backoffice/src/App.tsx | 8 ++++---- .../components/ruleEngine/RuleEngineFormDialog.tsx | 14 ++++++++++++-- .../pages/ruleEngine/RuleEngineResourcePage.tsx | 9 +++++++-- .../src/pages/ruleEngine/config/resources.ts | 9 +++++---- 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/apps/edr-freight-web/backoffice/src/App.tsx b/apps/edr-freight-web/backoffice/src/App.tsx index dcbb6f50a..b957e0f87 100644 --- a/apps/edr-freight-web/backoffice/src/App.tsx +++ b/apps/edr-freight-web/backoffice/src/App.tsx @@ -179,10 +179,10 @@ const buildSidebarSections = (demoItems: SidebarItem[]): SidebarSection[] => [ icon: , children: [ ...getCategorySidebarChildren("configuration"), - { - label: "Train scheduling rules", - href: "/dashboard/configuration/train-scheduling-rules", - }, + // { + // label: "Train scheduling rules", + // href: "/dashboard/configuration/train-scheduling-rules", + // }, ], }, { diff --git a/apps/edr-freight-web/backoffice/src/components/ruleEngine/RuleEngineFormDialog.tsx b/apps/edr-freight-web/backoffice/src/components/ruleEngine/RuleEngineFormDialog.tsx index cc8a68688..61edd76f9 100644 --- a/apps/edr-freight-web/backoffice/src/components/ruleEngine/RuleEngineFormDialog.tsx +++ b/apps/edr-freight-web/backoffice/src/components/ruleEngine/RuleEngineFormDialog.tsx @@ -165,7 +165,17 @@ const RuleEngineFormDialog = ({ } }, [open, fields, initialRecord]); - const formRows = useMemo(() => buildFormRows(fields), [fields]); + const visibleFields = useMemo( + () => + fields.filter( + (field) => + !field.hideWhen || + !field.hideWhen.equals.includes(String(values[field.hideWhen.field] ?? "")), + ), + [fields, values], + ); + + const formRows = useMemo(() => buildFormRows(visibleFields), [visibleFields]); const setField = (name: string, value: unknown) => { setValues((current) => ({ ...current, [name]: value })); @@ -175,7 +185,7 @@ const RuleEngineFormDialog = ({ event.preventDefault(); const payload: Record = {}; - for (const field of fields) { + for (const field of visibleFields) { const raw = values[field.name]; if (field.type === "number") { if (raw === "" || raw === undefined) continue; diff --git a/apps/edr-freight-web/backoffice/src/pages/ruleEngine/RuleEngineResourcePage.tsx b/apps/edr-freight-web/backoffice/src/pages/ruleEngine/RuleEngineResourcePage.tsx index 64e79f8e7..f03fb199e 100644 --- a/apps/edr-freight-web/backoffice/src/pages/ruleEngine/RuleEngineResourcePage.tsx +++ b/apps/edr-freight-web/backoffice/src/pages/ruleEngine/RuleEngineResourcePage.tsx @@ -296,8 +296,13 @@ const RuleEngineResourcePage = () => { }; const handleFormSubmit = (values: Record) => { - const payload = - config.slug === "rates" ? { ...values, currency: "USD" } : values; + let payload = values; + if (config.slug === "rates") { + payload = { ...values, currency: "USD" }; + } else if (config.slug === "priority-configs") { + // Label is required by the backend but hidden in the UI for now. + payload = { ...values, label: String(Date.now()) }; + } if (editing?.id) { update.mutate( diff --git a/apps/edr-freight-web/backoffice/src/pages/ruleEngine/config/resources.ts b/apps/edr-freight-web/backoffice/src/pages/ruleEngine/config/resources.ts index 6ac2b29c7..b29654653 100644 --- a/apps/edr-freight-web/backoffice/src/pages/ruleEngine/config/resources.ts +++ b/apps/edr-freight-web/backoffice/src/pages/ruleEngine/config/resources.ts @@ -34,6 +34,8 @@ export interface FormFieldDef { optional?: boolean; options?: { label: string; value: string }[]; placeholder?: string; + /** Hide this field when another field currently equals one of these values. */ + hideWhen?: { field: string; equals: string[] }; } export interface RuleEngineOrderConfig { @@ -241,7 +243,6 @@ export const RULE_ENGINE_RESOURCES: RuleEngineResourceConfig[] = [ searchPlaceholder: "Search priority rules...", orderConfig: { field: "displayOrder", label: "Display order" }, columns: [ - { id: "label", header: "Label", accessorKey: "label" }, { id: "type", header: "Type", accessorKey: "type" }, { id: "currency", header: "Currency", accessorKey: "currency" }, { id: "minWagonCount", header: "Min wagons", accessorKey: "minWagonCount", format: "number" }, @@ -250,7 +251,6 @@ export const RULE_ENGINE_RESOURCES: RuleEngineResourceConfig[] = [ activeColumn, ], formFields: [ - { name: "label", label: "Label", type: "text", required: true }, { name: "type", label: "Type", @@ -261,11 +261,12 @@ export const RULE_ENGINE_RESOURCES: RuleEngineResourceConfig[] = [ }, { name: "currency", - label: "Currency (required for Payment currency type)", + label: "Currency", type: "select", optional: true, options: [{ label: "None", value: RULE_ENGINE_SELECT_NONE }, ...CURRENCIES], - placeholder: "Leave as None for Wagon count rules", + placeholder: "Select a currency", + hideWhen: { field: "type", equals: ["WAGON"] }, }, { name: "minWagonCount", label: "Min wagon count", type: "number", required: true }, { name: "maxWagonCount", label: "Max wagon count", type: "number", required: true },