Move Custom Metadata into advanced

This commit is contained in:
James Brunton 2025-09-12 09:10:15 +01:00
parent 55b8455b66
commit 52885ec939
4 changed files with 58 additions and 61 deletions

View File

@ -5,7 +5,6 @@ import { useMetadataExtraction } from "../../../hooks/tools/changeMetadata/useMe
import DeleteAllStep from "./steps/DeleteAllStep"; import DeleteAllStep from "./steps/DeleteAllStep";
import StandardMetadataStep from "./steps/StandardMetadataStep"; import StandardMetadataStep from "./steps/StandardMetadataStep";
import DocumentDatesStep from "./steps/DocumentDatesStep"; import DocumentDatesStep from "./steps/DocumentDatesStep";
import CustomMetadataStep from "./steps/CustomMetadataStep";
import AdvancedOptionsStep from "./steps/AdvancedOptionsStep"; import AdvancedOptionsStep from "./steps/AdvancedOptionsStep";
interface ChangeMetadataSingleStepProps { interface ChangeMetadataSingleStepProps {
@ -86,23 +85,6 @@ const ChangeMetadataSingleStep = ({
<Divider /> <Divider />
{/* Custom Metadata */}
<Stack gap="md">
<Text size="sm" fw={500}>
{t('changeMetadata.customFields.title', 'Custom Metadata')}
</Text>
<CustomMetadataStep
parameters={parameters}
onParameterChange={onParameterChange}
disabled={fieldsDisabled}
addCustomMetadata={addCustomMetadata}
removeCustomMetadata={removeCustomMetadata}
updateCustomMetadata={updateCustomMetadata}
/>
</Stack>
<Divider />
{/* Advanced Options */} {/* Advanced Options */}
<Stack gap="md"> <Stack gap="md">
<Text size="sm" fw={500}> <Text size="sm" fw={500}>
@ -112,6 +94,9 @@ const ChangeMetadataSingleStep = ({
parameters={parameters} parameters={parameters}
onParameterChange={onParameterChange} onParameterChange={onParameterChange}
disabled={fieldsDisabled} disabled={fieldsDisabled}
addCustomMetadata={addCustomMetadata}
removeCustomMetadata={removeCustomMetadata}
updateCustomMetadata={updateCustomMetadata}
/> />
</Stack> </Stack>
</Stack> </Stack>

View File

@ -1,38 +1,60 @@
import { Select } from "@mantine/core"; import { Stack, Select, Divider } from "@mantine/core";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { ChangeMetadataParameters } from "../../../../hooks/tools/changeMetadata/useChangeMetadataParameters"; import { ChangeMetadataParameters } from "../../../../hooks/tools/changeMetadata/useChangeMetadataParameters";
import { TrappedStatus } from "../../../../types/metadata"; import { TrappedStatus } from "../../../../types/metadata";
import CustomMetadataStep from "./CustomMetadataStep";
interface AdvancedOptionsStepProps { interface AdvancedOptionsStepProps {
parameters: ChangeMetadataParameters; parameters: ChangeMetadataParameters;
onParameterChange: <K extends keyof ChangeMetadataParameters>(key: K, value: ChangeMetadataParameters[K]) => void; onParameterChange: <K extends keyof ChangeMetadataParameters>(key: K, value: ChangeMetadataParameters[K]) => void;
disabled?: boolean; disabled?: boolean;
addCustomMetadata: (key?: string, value?: string) => void;
removeCustomMetadata: (id: string) => void;
updateCustomMetadata: (id: string, key: string, value: string) => void;
} }
const AdvancedOptionsStep = ({ const AdvancedOptionsStep = ({
parameters, parameters,
onParameterChange, onParameterChange,
disabled = false disabled = false,
addCustomMetadata,
removeCustomMetadata,
updateCustomMetadata
}: AdvancedOptionsStepProps) => { }: AdvancedOptionsStepProps) => {
const { t } = useTranslation(); const { t } = useTranslation();
return ( return (
<Select <Stack gap="md">
label={t('changeMetadata.trapped.label', 'Trapped Status')} {/* Trapped Status */}
description={t('changeMetadata.trapped.description', 'Indicates whether the document has been trapped for high-quality printing')} <Select
value={parameters.trapped} label={t('changeMetadata.trapped.label', 'Trapped Status')}
onChange={(value) => { description={t('changeMetadata.trapped.description', 'Indicates whether the document has been trapped for high-quality printing')}
if (value) { value={parameters.trapped}
onParameterChange('trapped', value as TrappedStatus); onChange={(value) => {
} if (value) {
}} onParameterChange('trapped', value as TrappedStatus);
disabled={disabled || parameters.deleteAll} }
data={[ }}
{ value: TrappedStatus.UNKNOWN, label: t('changeMetadata.trapped.unknown', 'Unknown') }, disabled={disabled || parameters.deleteAll}
{ value: TrappedStatus.TRUE, label: t('changeMetadata.trapped.true', 'True') }, data={[
{ value: TrappedStatus.FALSE, label: t('changeMetadata.trapped.false', 'False') } { 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') }
]}
/>
<Divider />
{/* Custom Metadata */}
<CustomMetadataStep
parameters={parameters}
onParameterChange={onParameterChange}
disabled={disabled}
addCustomMetadata={addCustomMetadata}
removeCustomMetadata={removeCustomMetadata}
updateCustomMetadata={updateCustomMetadata}
/>
</Stack>
); );
}; };

View File

@ -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.bullet2", "False: Document has not been trapped"),
t("changeMetadata.tooltip.advanced.trapped.bullet3", "Unknown: Trapped status is not specified") 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")
]
} }
] ]
}; };

View File

@ -1,10 +1,9 @@
import { useState, useEffect } from "react"; import { useState } from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { createToolFlow } from "../components/tools/shared/createToolFlow"; import { createToolFlow } from "../components/tools/shared/createToolFlow";
import DeleteAllStep from "../components/tools/changeMetadata/steps/DeleteAllStep"; import DeleteAllStep from "../components/tools/changeMetadata/steps/DeleteAllStep";
import StandardMetadataStep from "../components/tools/changeMetadata/steps/StandardMetadataStep"; import StandardMetadataStep from "../components/tools/changeMetadata/steps/StandardMetadataStep";
import DocumentDatesStep from "../components/tools/changeMetadata/steps/DocumentDatesStep"; 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 AdvancedOptionsStep from "../components/tools/changeMetadata/steps/AdvancedOptionsStep";
import { useChangeMetadataParameters } from "../hooks/tools/changeMetadata/useChangeMetadataParameters"; import { useChangeMetadataParameters } from "../hooks/tools/changeMetadata/useChangeMetadataParameters";
import { useChangeMetadataOperation } from "../hooks/tools/changeMetadata/useChangeMetadataOperation"; import { useChangeMetadataOperation } from "../hooks/tools/changeMetadata/useChangeMetadataOperation";
@ -15,7 +14,6 @@ import {
useDeleteAllTips, useDeleteAllTips,
useStandardMetadataTips, useStandardMetadataTips,
useDocumentDatesTips, useDocumentDatesTips,
useCustomMetadataTips,
useAdvancedOptionsTips useAdvancedOptionsTips
} from "../components/tooltips/useChangeMetadataTips"; } from "../components/tooltips/useChangeMetadataTips";
@ -26,14 +24,12 @@ const ChangeMetadata = (props: BaseToolProps) => {
const deleteAllTips = useDeleteAllTips(); const deleteAllTips = useDeleteAllTips();
const standardMetadataTips = useStandardMetadataTips(); const standardMetadataTips = useStandardMetadataTips();
const documentDatesTips = useDocumentDatesTips(); const documentDatesTips = useDocumentDatesTips();
const customMetadataTips = useCustomMetadataTips();
const advancedOptionsTips = useAdvancedOptionsTips(); const advancedOptionsTips = useAdvancedOptionsTips();
// Individual step collapse states // Individual step collapse states
const [deleteAllCollapsed, setDeleteAllCollapsed] = useState(false); const [deleteAllCollapsed, setDeleteAllCollapsed] = useState(false);
const [standardMetadataCollapsed, setStandardMetadataCollapsed] = useState(false); const [standardMetadataCollapsed, setStandardMetadataCollapsed] = useState(false);
const [documentDatesCollapsed, setDocumentDatesCollapsed] = useState(true); const [documentDatesCollapsed, setDocumentDatesCollapsed] = useState(true);
const [customMetadataCollapsed, setCustomMetadataCollapsed] = useState(true);
const [advancedOptionsCollapsed, setAdvancedOptionsCollapsed] = useState(true); const [advancedOptionsCollapsed, setAdvancedOptionsCollapsed] = useState(true);
const base = useBaseTool( 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: (
<CustomMetadataStep
parameters={base.params.parameters}
onParameterChange={base.params.updateParameter}
disabled={base.endpointLoading || base.params.parameters.deleteAll || isExtractingMetadata}
addCustomMetadata={base.params.addCustomMetadata}
removeCustomMetadata={base.params.removeCustomMetadata}
updateCustomMetadata={base.params.updateCustomMetadata}
/>
),
},
{ {
title: t("changeMetadata.advanced.title", "Advanced Options"), title: t("changeMetadata.advanced.title", "Advanced Options"),
isCollapsed: getActualCollapsedState(advancedOptionsCollapsed), isCollapsed: getActualCollapsedState(advancedOptionsCollapsed),
@ -132,6 +110,9 @@ const ChangeMetadata = (props: BaseToolProps) => {
parameters={base.params.parameters} parameters={base.params.parameters}
onParameterChange={base.params.updateParameter} onParameterChange={base.params.updateParameter}
disabled={base.endpointLoading || isExtractingMetadata} disabled={base.endpointLoading || isExtractingMetadata}
addCustomMetadata={base.params.addCustomMetadata}
removeCustomMetadata={base.params.removeCustomMetadata}
updateCustomMetadata={base.params.updateCustomMetadata}
/> />
), ),
}, },