From 52885ec939d7851f8c88c04e2b0f306e067dc685 Mon Sep 17 00:00:00 2001 From: James Brunton Date: Fri, 12 Sep 2025 09:10:15 +0100 Subject: [PATCH] Move Custom Metadata into advanced --- .../ChangeMetadataSingleStep.tsx | 21 +------ .../steps/AdvancedOptionsStep.tsx | 58 +++++++++++++------ .../tooltips/useChangeMetadataTips.ts | 9 +++ frontend/src/tools/ChangeMetadata.tsx | 31 ++-------- 4 files changed, 58 insertions(+), 61 deletions(-) diff --git a/frontend/src/components/tools/changeMetadata/ChangeMetadataSingleStep.tsx b/frontend/src/components/tools/changeMetadata/ChangeMetadataSingleStep.tsx index 7a0c3ac59..2dafec7a1 100644 --- a/frontend/src/components/tools/changeMetadata/ChangeMetadataSingleStep.tsx +++ b/frontend/src/components/tools/changeMetadata/ChangeMetadataSingleStep.tsx @@ -5,7 +5,6 @@ import { useMetadataExtraction } from "../../../hooks/tools/changeMetadata/useMe import DeleteAllStep from "./steps/DeleteAllStep"; import StandardMetadataStep from "./steps/StandardMetadataStep"; import DocumentDatesStep from "./steps/DocumentDatesStep"; -import CustomMetadataStep from "./steps/CustomMetadataStep"; import AdvancedOptionsStep from "./steps/AdvancedOptionsStep"; interface ChangeMetadataSingleStepProps { @@ -86,23 +85,6 @@ const ChangeMetadataSingleStep = ({ - {/* Custom Metadata */} - - - {t('changeMetadata.customFields.title', 'Custom Metadata')} - - - - - - {/* Advanced Options */} @@ -112,6 +94,9 @@ const ChangeMetadataSingleStep = ({ parameters={parameters} onParameterChange={onParameterChange} disabled={fieldsDisabled} + addCustomMetadata={addCustomMetadata} + removeCustomMetadata={removeCustomMetadata} + updateCustomMetadata={updateCustomMetadata} /> diff --git a/frontend/src/components/tools/changeMetadata/steps/AdvancedOptionsStep.tsx b/frontend/src/components/tools/changeMetadata/steps/AdvancedOptionsStep.tsx index add04705b..8d29b8e49 100644 --- a/frontend/src/components/tools/changeMetadata/steps/AdvancedOptionsStep.tsx +++ b/frontend/src/components/tools/changeMetadata/steps/AdvancedOptionsStep.tsx @@ -1,38 +1,60 @@ -import { Select } from "@mantine/core"; +import { Stack, Select, Divider } from "@mantine/core"; import { useTranslation } from "react-i18next"; import { ChangeMetadataParameters } from "../../../../hooks/tools/changeMetadata/useChangeMetadataParameters"; import { TrappedStatus } from "../../../../types/metadata"; +import CustomMetadataStep from "./CustomMetadataStep"; interface AdvancedOptionsStepProps { parameters: ChangeMetadataParameters; onParameterChange: (key: K, value: ChangeMetadataParameters[K]) => void; disabled?: boolean; + addCustomMetadata: (key?: string, value?: string) => void; + removeCustomMetadata: (id: string) => void; + updateCustomMetadata: (id: string, key: string, value: string) => void; } const AdvancedOptionsStep = ({ parameters, onParameterChange, - disabled = false + disabled = false, + addCustomMetadata, + removeCustomMetadata, + updateCustomMetadata }: AdvancedOptionsStepProps) => { const { t } = useTranslation(); return ( - { + if (value) { + onParameterChange('trapped', value as TrappedStatus); + } + }} + disabled={disabled || parameters.deleteAll} + data={[ + { value: TrappedStatus.UNKNOWN, label: t('changeMetadata.trapped.unknown', 'Unknown') }, + { value: TrappedStatus.TRUE, label: t('changeMetadata.trapped.true', 'True') }, + { value: TrappedStatus.FALSE, label: t('changeMetadata.trapped.false', 'False') } + ]} + /> + + + + {/* Custom Metadata */} + + ); }; diff --git a/frontend/src/components/tooltips/useChangeMetadataTips.ts b/frontend/src/components/tooltips/useChangeMetadataTips.ts index 995592260..c5366063e 100644 --- a/frontend/src/components/tooltips/useChangeMetadataTips.ts +++ b/frontend/src/components/tooltips/useChangeMetadataTips.ts @@ -98,6 +98,15 @@ export const useAdvancedOptionsTips = (): TooltipContent => { t("changeMetadata.tooltip.advanced.trapped.bullet2", "False: Document has not been trapped"), t("changeMetadata.tooltip.advanced.trapped.bullet3", "Unknown: Trapped status is not specified") ] + }, + { + title: t("changeMetadata.tooltip.customFields.title", "Custom Metadata"), + description: t("changeMetadata.tooltip.customFields.text", "Add your own custom key-value metadata pairs."), + bullets: [ + t("changeMetadata.tooltip.customFields.bullet1", "Add any custom fields relevant to your document"), + t("changeMetadata.tooltip.customFields.bullet2", "Examples: Department, Project, Version, Status"), + t("changeMetadata.tooltip.customFields.bullet3", "Both key and value are required for each entry") + ] } ] }; diff --git a/frontend/src/tools/ChangeMetadata.tsx b/frontend/src/tools/ChangeMetadata.tsx index 435db6da8..9b691e879 100644 --- a/frontend/src/tools/ChangeMetadata.tsx +++ b/frontend/src/tools/ChangeMetadata.tsx @@ -1,39 +1,35 @@ -import { useState, useEffect } from "react"; +import { useState } from "react"; import { useTranslation } from "react-i18next"; import { createToolFlow } from "../components/tools/shared/createToolFlow"; import DeleteAllStep from "../components/tools/changeMetadata/steps/DeleteAllStep"; import StandardMetadataStep from "../components/tools/changeMetadata/steps/StandardMetadataStep"; import DocumentDatesStep from "../components/tools/changeMetadata/steps/DocumentDatesStep"; -import CustomMetadataStep from "../components/tools/changeMetadata/steps/CustomMetadataStep"; import AdvancedOptionsStep from "../components/tools/changeMetadata/steps/AdvancedOptionsStep"; import { useChangeMetadataParameters } from "../hooks/tools/changeMetadata/useChangeMetadataParameters"; import { useChangeMetadataOperation } from "../hooks/tools/changeMetadata/useChangeMetadataOperation"; import { useMetadataExtraction } from "../hooks/tools/changeMetadata/useMetadataExtraction"; import { useBaseTool } from "../hooks/tools/shared/useBaseTool"; import { BaseToolProps, ToolComponent } from "../types/tool"; -import { +import { useDeleteAllTips, useStandardMetadataTips, useDocumentDatesTips, - useCustomMetadataTips, useAdvancedOptionsTips } from "../components/tooltips/useChangeMetadataTips"; const ChangeMetadata = (props: BaseToolProps) => { const { t } = useTranslation(); - + // Individual tooltips for each step const deleteAllTips = useDeleteAllTips(); const standardMetadataTips = useStandardMetadataTips(); const documentDatesTips = useDocumentDatesTips(); - const customMetadataTips = useCustomMetadataTips(); const advancedOptionsTips = useAdvancedOptionsTips(); // Individual step collapse states const [deleteAllCollapsed, setDeleteAllCollapsed] = useState(false); const [standardMetadataCollapsed, setStandardMetadataCollapsed] = useState(false); const [documentDatesCollapsed, setDocumentDatesCollapsed] = useState(true); - const [customMetadataCollapsed, setCustomMetadataCollapsed] = useState(true); const [advancedOptionsCollapsed, setAdvancedOptionsCollapsed] = useState(true); const base = useBaseTool( @@ -102,24 +98,6 @@ const ChangeMetadata = (props: BaseToolProps) => { /> ), }, - { - title: t("changeMetadata.customFields.title", "Custom Metadata"), - isCollapsed: getActualCollapsedState(customMetadataCollapsed), - onCollapsedClick: base.hasResults - ? (base.settingsCollapsed ? base.handleSettingsReset : undefined) - : () => setCustomMetadataCollapsed(!customMetadataCollapsed), - tooltip: customMetadataTips, - content: ( - - ), - }, { title: t("changeMetadata.advanced.title", "Advanced Options"), isCollapsed: getActualCollapsedState(advancedOptionsCollapsed), @@ -132,6 +110,9 @@ const ChangeMetadata = (props: BaseToolProps) => { parameters={base.params.parameters} onParameterChange={base.params.updateParameter} disabled={base.endpointLoading || isExtractingMetadata} + addCustomMetadata={base.params.addCustomMetadata} + removeCustomMetadata={base.params.removeCustomMetadata} + updateCustomMetadata={base.params.updateCustomMetadata} /> ), },