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 },