diff --git a/src/frontend/src/stores/flowsManagerStore.ts b/src/frontend/src/stores/flowsManagerStore.ts index 9471889c3..94d104823 100644 --- a/src/frontend/src/stores/flowsManagerStore.ts +++ b/src/frontend/src/stores/flowsManagerStore.ts @@ -22,6 +22,7 @@ import { addVersionToDuplicates, createFlowComponent, createNewFlow, + extractFieldsFromComponenents, processDataFromFlow, processFlows, } from "../utils/reactflowUtils"; @@ -82,6 +83,7 @@ const useFlowsManagerStore = create((set, get) => ({ ); useTypesStore.setState((state) => ({ data: { ...state.data, ["saved_components"]: data }, + ComponentFields: extractFieldsFromComponenents({...state.data, ["saved_components"]: data }), })); set({ isLoading: false }); resolve(); @@ -197,6 +199,7 @@ const useFlowsManagerStore = create((set, get) => ({ set({ isLoading: false }); useTypesStore.setState((state) => ({ data: { ...state.data, ["saved_components"]: data }, + ComponentFields: extractFieldsFromComponenents({...state.data, ["saved_components"]: data }), })); }, 200); // addFlowToLocalState(newFlow); @@ -219,6 +222,7 @@ const useFlowsManagerStore = create((set, get) => ({ set({ isLoading: false }); useTypesStore.setState((state) => ({ data: { ...state.data, ["saved_components"]: data }, + ComponentFields: extractFieldsFromComponenents({...state.data, ["saved_components"]: data }), })); // Return the id @@ -248,6 +252,7 @@ const useFlowsManagerStore = create((set, get) => ({ set({ isLoading: false }); useTypesStore.setState((state) => ({ data: { ...state.data, ["saved_components"]: data }, + ComponentFields: extractFieldsFromComponenents({...state.data, ["saved_components"]: data }), })); resolve(); }); diff --git a/src/frontend/src/stores/globalVariables.ts b/src/frontend/src/stores/globalVariables.ts index 6e17384e6..d9a326b08 100644 --- a/src/frontend/src/stores/globalVariables.ts +++ b/src/frontend/src/stores/globalVariables.ts @@ -3,7 +3,6 @@ import { GlobalVariablesStore } from "../types/zustand/globalVariables"; export const useGlobalVariablesStore = create( (set, get) => ({ - avaliableFields: new Set(), unavaliableFields: new Set(), setUnavaliableFields: (fields) => { set({ unavaliableFields: fields }); @@ -14,12 +13,6 @@ export const useGlobalVariablesStore = create( removeUnavaliableField: (field) => { get().unavaliableFields.delete(field); }, - setAvaliableFields: (fields) => { - set({ avaliableFields: fields }); - }, - addAvaliableField: (field) => { - set({ avaliableFields: get().avaliableFields.add(field) }); - }, globalVariablesEntries: [], globalVariables: {}, setGlobalVariables: (variables) => { diff --git a/src/frontend/src/stores/typesStore.ts b/src/frontend/src/stores/typesStore.ts index 95223087f..f2539a8d3 100644 --- a/src/frontend/src/stores/typesStore.ts +++ b/src/frontend/src/stores/typesStore.ts @@ -2,11 +2,18 @@ import { create } from "zustand"; import { getAll } from "../controllers/API"; import { APIDataType } from "../types/api"; import { TypesStoreType } from "../types/zustand/types"; -import { templatesGenerator, typesGenerator } from "../utils/reactflowUtils"; +import { extractFieldsFromComponenents, templatesGenerator, typesGenerator } from "../utils/reactflowUtils"; import useAlertStore from "./alertStore"; import useFlowsManagerStore from "./flowsManagerStore"; export const useTypesStore = create((set, get) => ({ + ComponentFields: new Set(), + setComponentFields: (fields) => { + set({ ComponentFields: fields }); + }, + addComponentField: (field) => { + set({ ComponentFields: get().ComponentFields.add(field) }); + }, types: {}, templates: {}, data: {}, @@ -21,10 +28,10 @@ export const useTypesStore = create((set, get) => ({ set((old) => ({ types: typesGenerator(data), data: { ...old.data, ...data }, + ComponentFields: extractFieldsFromComponenents({ ...old.data, ...data }), templates: templatesGenerator(data), })); setLoading(false); - console.log(templatesGenerator(data)) resolve(); }) .catch((error) => { @@ -43,6 +50,7 @@ export const useTypesStore = create((set, get) => ({ }, setData: (change: APIDataType | ((old: APIDataType) => APIDataType)) => { let newChange = typeof change === "function" ? change(get().data) : change; - set({ data: newChange }); + set({ data: newChange}); + get().setComponentFields(extractFieldsFromComponenents(newChange)); }, })); diff --git a/src/frontend/src/types/zustand/globalVariables/index.ts b/src/frontend/src/types/zustand/globalVariables/index.ts index 9c4fe421b..c5f6c24d2 100644 --- a/src/frontend/src/types/zustand/globalVariables/index.ts +++ b/src/frontend/src/types/zustand/globalVariables/index.ts @@ -7,9 +7,6 @@ export type GlobalVariablesStore = { addGlobalVariable: (name: string, id: string, type?: string) => void; removeGlobalVariable: (name: string) => void; getVariableId: (name: string) => string | undefined; - avaliableFields: Set; - setAvaliableFields: (fields: Set) => void; - addAvaliableField: (field: string) => void; unavaliableFields: Set; setUnavaliableFields: (fields: Set) => void; addUnavaliableField: (field: string) => void; diff --git a/src/frontend/src/types/zustand/types/index.ts b/src/frontend/src/types/zustand/types/index.ts index 133afbda1..4f817de47 100644 --- a/src/frontend/src/types/zustand/types/index.ts +++ b/src/frontend/src/types/zustand/types/index.ts @@ -8,4 +8,7 @@ export type TypesStoreType = { data: APIDataType; setData: (newState: {}) => void; getTypes: () => Promise; + ComponentFields: Set; + setComponentFields: (fields: Set) => void; + addComponentField: (field: string) => void; }; diff --git a/src/frontend/src/utils/reactflowUtils.ts b/src/frontend/src/utils/reactflowUtils.ts index 49aae5b7a..ad1244495 100644 --- a/src/frontend/src/utils/reactflowUtils.ts +++ b/src/frontend/src/utils/reactflowUtils.ts @@ -1235,16 +1235,17 @@ export function templatesGenerator(data: APIObjectType) { } export function extractFieldsFromComponenents(data:APIObjectType ) { - const fields = new Set(); + const fields = new Set(); Object.keys(data).forEach((key) => { Object.keys(data[key]).forEach((kind) => { Object.keys(data[key][kind].template).forEach((field) => { if(data[key][kind].template[field].display_name && data[key][kind].template[field].show) - fields.add(data[key][kind].template[field].display_name); + fields.add(data[key][kind].template[field].display_name!); }); }); }); - return Array.from(fields); + console.log(fields); + return fields; } export function downloadFlow(