From 7cf2f7718f3f41b8c4c0ff5a39773cf5fca17acd Mon Sep 17 00:00:00 2001 From: Kama Huang Date: Fri, 20 Dec 2024 15:46:19 -0800 Subject: [PATCH] add filtering logic. If MDS is configured but disabled, set default version to 2.19 Signed-off-by: Kama Huang --- .../workflow_inputs/processors_list.tsx | 20 ++- .../workflows/new_workflow/new_workflow.tsx | 143 +++++++++++++++--- 2 files changed, 138 insertions(+), 25 deletions(-) diff --git a/public/pages/workflow_detail/workflow_inputs/processors_list.tsx b/public/pages/workflow_detail/workflow_inputs/processors_list.tsx index c875ac8e..ad4d1dfc 100644 --- a/public/pages/workflow_detail/workflow_inputs/processors_list.tsx +++ b/public/pages/workflow_detail/workflow_inputs/processors_list.tsx @@ -44,6 +44,7 @@ import { } from '../../../configs'; import { ProcessorInputs } from './processor_inputs'; import { useLocation } from 'react-router-dom'; +import { getDataSourceEnabled } from '../../../../public/services'; interface ProcessorsListProps { uiConfig: WorkflowConfig; @@ -74,9 +75,19 @@ export function ProcessorsList(props: ProcessorsListProps) { useEffect(() => { const dataSourceId = getDataSourceFromURL(location).dataSourceId; + console.log('DataSourceId:', dataSourceId); + + const enabled = getDataSourceEnabled().enabled; + if (!enabled) { + console.log('MDS disabled, setting version to 2.19.0'); + setVersion('2.19.0'); + return; + } + if (dataSourceId) { getEffectiveVersion(dataSourceId) .then((ver) => { + console.log('Current version:', ver); setVersion(ver); }) .catch(console.error); @@ -103,7 +114,8 @@ export function ProcessorsList(props: ProcessorsListProps) { const getMenuItems = () => { const isPreV219 = semver.gte(version, '2.17.0') && semver.lt(version, '2.19.0'); - + console.log('Version:', version); + console.log('Is pre-2.19:', isPreV219); const ingestProcessors = [ ...(isPreV219 ? [ @@ -368,7 +380,11 @@ export function ProcessorsList(props: ProcessorsListProps) { { id: PANEL_ID, title: getMenuItems().length > 0 ? 'PROCESSORS' : '', - items: getMenuItems(), + items: (() => { + const items = getMenuItems(); + console.log('Menu items:', items); + return items; + })(), }, ]} /> diff --git a/public/pages/workflows/new_workflow/new_workflow.tsx b/public/pages/workflows/new_workflow/new_workflow.tsx index 1387db2e..1ad779b6 100644 --- a/public/pages/workflows/new_workflow/new_workflow.tsx +++ b/public/pages/workflows/new_workflow/new_workflow.tsx @@ -42,6 +42,16 @@ interface NewWorkflowProps {} export const getEffectiveVersion = async ( dataSourceId: string | undefined ): Promise => { + // console.log('Checking data source enabled status...'); + // const dataSourceEnabled = getDataSourceEnabled().enabled; + // console.log('Data source enabled:', dataSourceEnabled); + + // // If MDS is disabled, return a default version + // if (!dataSourceEnabled) { + // console.log('MDS is disabled, returning latest version'); + // return '2.19.0'; + // } + try { if (dataSourceId === undefined) { console.log('cannot find data source'); @@ -52,9 +62,10 @@ export const getEffectiveVersion = async ( 'data-source', dataSourceId ); - const version = - dataSource?.attributes?.dataSourceVersion || MIN_SUPPORTED_VERSION; - return version; + // const version = + // dataSource?.attributes?.dataSourceVersion || MIN_SUPPORTED_VERSION; + // return version; + return '2.19.0'; } catch (error) { console.error('Error getting version:', error); return MIN_SUPPORTED_VERSION; @@ -65,11 +76,19 @@ const filterPresetsByVersion = async ( workflows: WorkflowTemplate[], dataSourceId: string | undefined ): Promise => { + console.log('Initial workflows count:', workflows.length); // if MDS is disabled, skip the version check and assume it is version 2.19+ const dataSourceEnabled = getDataSourceEnabled().enabled; + console.log('MDS enabled:', dataSourceEnabled); if (!dataSourceEnabled) { + console.log('MDS is disabled, returning all workflows'); return workflows; } + + if (!dataSourceId) { + return []; + } + const allowedPresetsFor217 = [ WORKFLOW_TYPE.SEMANTIC_SEARCH, WORKFLOW_TYPE.MULTIMODAL_SEARCH, @@ -77,14 +96,7 @@ const filterPresetsByVersion = async ( ]; try { - if (!dataSourceId) { - return []; - } - const version = await getEffectiveVersion(dataSourceId); - if (version === undefined) { - return []; - } if (semver.lt(version, '2.17.0')) { return []; @@ -117,6 +129,8 @@ export function NewWorkflow(props: NewWorkflowProps) { const dataSourceId = getDataSourceId(); const dataSourceEnabled = getDataSourceEnabled().enabled; + console.log('Initial render:', { dataSourceId, dataSourceEnabled }); + // workflows state const { presetWorkflows, loading } = useSelector( (state: AppState) => state.presets @@ -125,6 +139,7 @@ export function NewWorkflow(props: NewWorkflowProps) { const [filteredWorkflows, setFilteredWorkflows] = useState< WorkflowTemplate[] >([]); + const [isVersionLoading, setIsVersionLoading] = useState(false); // search bar state const [searchQuery, setSearchQuery] = useState(''); @@ -144,29 +159,111 @@ export function NewWorkflow(props: NewWorkflowProps) { } }, [dataSourceId, dataSourceEnabled]); + useEffect(() => { + console.log('State changed:', { + loading, + isVersionLoading, + presetWorkflowsLength: presetWorkflows?.length, + allWorkflowsLength: allWorkflows.length, + filteredWorkflowsLength: filteredWorkflows.length, + }); + }, [ + loading, + isVersionLoading, + presetWorkflows, + allWorkflows, + filteredWorkflows, + ]); + // initial hook to populate all workflows // enrich them with dynamically-generated UI flows based on use case useEffect(() => { const loadWorkflows = async () => { - if (!presetWorkflows) return; + console.log('loadWorkflows called:', { + hasPresetWorkflows: Boolean(presetWorkflows?.length), + dataSourceId, + }); + + if (!presetWorkflows || presetWorkflows.length === 0) { + console.log('No preset workflows, returning early'); + + return; + } + const dataSourceEnabled = getDataSourceEnabled().enabled; - if (dataSourceEnabled && !dataSourceId) return; + console.log('MDS enabled:', dataSourceEnabled); - const version = await getEffectiveVersion(dataSourceId); - const enrichedWorkflows = presetWorkflows.map((presetWorkflow) => - enrichPresetWorkflowWithUiMetadata(presetWorkflow, version) - ); + if (!dataSourceEnabled) { + console.log('MDS disabled, setting all workflows'); - const versionFilteredWorkflows = await filterPresetsByVersion( - enrichedWorkflows, - dataSourceId - ); + const enrichedWorkflows = presetWorkflows.map((presetWorkflow) => + enrichPresetWorkflowWithUiMetadata(presetWorkflow, '2.19.0') + ); + setAllWorkflows(enrichedWorkflows); + setFilteredWorkflows(enrichedWorkflows); + setIsVersionLoading(false); + return; + } + + if (!dataSourceId) { + console.log('No datasource ID, clearing workflows and setting loading'); + + setAllWorkflows([]); + setFilteredWorkflows([]); + setIsVersionLoading(true); + return; + } + console.log('Starting version check'); - setAllWorkflows(versionFilteredWorkflows); + setIsVersionLoading(true); + + // const version = await getEffectiveVersion(dataSourceId); + // const enrichedWorkflows = presetWorkflows.map((presetWorkflow) => + // enrichPresetWorkflowWithUiMetadata(presetWorkflow, version) + // ); + + // const versionFilteredWorkflows = await filterPresetsByVersion( + // enrichedWorkflows, + // dataSourceId + // ); + + // setAllWorkflows(versionFilteredWorkflows); + // setFilteredWorkflows(versionFilteredWorkflows); + // }; + try { + const version = await getEffectiveVersion(dataSourceId); + console.log('Got version:', version); + + const enrichedWorkflows = presetWorkflows.map((presetWorkflow) => + enrichPresetWorkflowWithUiMetadata(presetWorkflow, version) + ); + + const versionFilteredWorkflows = await filterPresetsByVersion( + enrichedWorkflows, + dataSourceId + ); + console.log( + 'Setting filtered workflows:', + versionFilteredWorkflows.length + ); + + setAllWorkflows(versionFilteredWorkflows); + setFilteredWorkflows(versionFilteredWorkflows); + setIsVersionLoading(false); + } catch (error) { + console.error('Error loading workflows:', error); + setAllWorkflows([]); + setFilteredWorkflows([]); + if (dataSourceId) { + setIsVersionLoading(false); + } + } }; loadWorkflows(); - }, [presetWorkflows, dataSourceId]); + }, [presetWorkflows, dataSourceId, dataSourceEnabled]); + + console.log('Render - loading states:', { loading, isVersionLoading }); // When search query updated, re-filter preset list useEffect(() => { @@ -187,7 +284,7 @@ export function NewWorkflow(props: NewWorkflowProps) { /> - {!dataSourceId || loading ? ( + {loading || isVersionLoading ? (