Skip to content

Commit

Permalink
add filtering logic. If MDS is configured but disabled, set default v…
Browse files Browse the repository at this point in the history
…ersion to 2.19

Signed-off-by: Kama Huang <[email protected]>
  • Loading branch information
Kama Huang committed Dec 26, 2024
1 parent d9de8a7 commit 7cf2f77
Show file tree
Hide file tree
Showing 2 changed files with 138 additions and 25 deletions.
20 changes: 18 additions & 2 deletions public/pages/workflow_detail/workflow_inputs/processors_list.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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);
Expand All @@ -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
? [
Expand Down Expand Up @@ -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;
})(),
},
]}
/>
Expand Down
143 changes: 120 additions & 23 deletions public/pages/workflows/new_workflow/new_workflow.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,16 @@ interface NewWorkflowProps {}
export const getEffectiveVersion = async (
dataSourceId: string | undefined
): Promise<string> => {
// 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');
Expand All @@ -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;
Expand All @@ -65,26 +76,27 @@ const filterPresetsByVersion = async (
workflows: WorkflowTemplate[],
dataSourceId: string | undefined
): Promise<WorkflowTemplate[]> => {
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,
WORKFLOW_TYPE.HYBRID_SEARCH,
];

try {
if (!dataSourceId) {
return [];
}

const version = await getEffectiveVersion(dataSourceId);
if (version === undefined) {
return [];
}

if (semver.lt(version, '2.17.0')) {
return [];
Expand Down Expand Up @@ -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
Expand All @@ -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<string>('');
Expand All @@ -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(() => {
Expand All @@ -187,7 +284,7 @@ export function NewWorkflow(props: NewWorkflowProps) {
/>
</EuiFlexItem>
<EuiFlexItem>
{!dataSourceId || loading ? (
{loading || isVersionLoading ? (
<EuiFlexGroup
justifyContent="center"
alignItems="center"
Expand Down

0 comments on commit 7cf2f77

Please sign in to comment.