Refactored globalVariables.ts and globalVariables/index.ts to extract and store component fields

This commit is contained in:
anovazzi1 2024-04-29 23:27:23 -03:00
commit fe5f6560e7
6 changed files with 23 additions and 16 deletions

View file

@ -22,6 +22,7 @@ import {
addVersionToDuplicates, addVersionToDuplicates,
createFlowComponent, createFlowComponent,
createNewFlow, createNewFlow,
extractFieldsFromComponenents,
processDataFromFlow, processDataFromFlow,
processFlows, processFlows,
} from "../utils/reactflowUtils"; } from "../utils/reactflowUtils";
@ -82,6 +83,7 @@ const useFlowsManagerStore = create<FlowsManagerStoreType>((set, get) => ({
); );
useTypesStore.setState((state) => ({ useTypesStore.setState((state) => ({
data: { ...state.data, ["saved_components"]: data }, data: { ...state.data, ["saved_components"]: data },
ComponentFields: extractFieldsFromComponenents({...state.data, ["saved_components"]: data }),
})); }));
set({ isLoading: false }); set({ isLoading: false });
resolve(); resolve();
@ -197,6 +199,7 @@ const useFlowsManagerStore = create<FlowsManagerStoreType>((set, get) => ({
set({ isLoading: false }); set({ isLoading: false });
useTypesStore.setState((state) => ({ useTypesStore.setState((state) => ({
data: { ...state.data, ["saved_components"]: data }, data: { ...state.data, ["saved_components"]: data },
ComponentFields: extractFieldsFromComponenents({...state.data, ["saved_components"]: data }),
})); }));
}, 200); }, 200);
// addFlowToLocalState(newFlow); // addFlowToLocalState(newFlow);
@ -219,6 +222,7 @@ const useFlowsManagerStore = create<FlowsManagerStoreType>((set, get) => ({
set({ isLoading: false }); set({ isLoading: false });
useTypesStore.setState((state) => ({ useTypesStore.setState((state) => ({
data: { ...state.data, ["saved_components"]: data }, data: { ...state.data, ["saved_components"]: data },
ComponentFields: extractFieldsFromComponenents({...state.data, ["saved_components"]: data }),
})); }));
// Return the id // Return the id
@ -248,6 +252,7 @@ const useFlowsManagerStore = create<FlowsManagerStoreType>((set, get) => ({
set({ isLoading: false }); set({ isLoading: false });
useTypesStore.setState((state) => ({ useTypesStore.setState((state) => ({
data: { ...state.data, ["saved_components"]: data }, data: { ...state.data, ["saved_components"]: data },
ComponentFields: extractFieldsFromComponenents({...state.data, ["saved_components"]: data }),
})); }));
resolve(); resolve();
}); });

View file

@ -3,7 +3,6 @@ import { GlobalVariablesStore } from "../types/zustand/globalVariables";
export const useGlobalVariablesStore = create<GlobalVariablesStore>( export const useGlobalVariablesStore = create<GlobalVariablesStore>(
(set, get) => ({ (set, get) => ({
avaliableFields: new Set(),
unavaliableFields: new Set(), unavaliableFields: new Set(),
setUnavaliableFields: (fields) => { setUnavaliableFields: (fields) => {
set({ unavaliableFields: fields }); set({ unavaliableFields: fields });
@ -14,12 +13,6 @@ export const useGlobalVariablesStore = create<GlobalVariablesStore>(
removeUnavaliableField: (field) => { removeUnavaliableField: (field) => {
get().unavaliableFields.delete(field); get().unavaliableFields.delete(field);
}, },
setAvaliableFields: (fields) => {
set({ avaliableFields: fields });
},
addAvaliableField: (field) => {
set({ avaliableFields: get().avaliableFields.add(field) });
},
globalVariablesEntries: [], globalVariablesEntries: [],
globalVariables: {}, globalVariables: {},
setGlobalVariables: (variables) => { setGlobalVariables: (variables) => {

View file

@ -2,11 +2,18 @@ import { create } from "zustand";
import { getAll } from "../controllers/API"; import { getAll } from "../controllers/API";
import { APIDataType } from "../types/api"; import { APIDataType } from "../types/api";
import { TypesStoreType } from "../types/zustand/types"; import { TypesStoreType } from "../types/zustand/types";
import { templatesGenerator, typesGenerator } from "../utils/reactflowUtils"; import { extractFieldsFromComponenents, templatesGenerator, typesGenerator } from "../utils/reactflowUtils";
import useAlertStore from "./alertStore"; import useAlertStore from "./alertStore";
import useFlowsManagerStore from "./flowsManagerStore"; import useFlowsManagerStore from "./flowsManagerStore";
export const useTypesStore = create<TypesStoreType>((set, get) => ({ export const useTypesStore = create<TypesStoreType>((set, get) => ({
ComponentFields: new Set(),
setComponentFields: (fields) => {
set({ ComponentFields: fields });
},
addComponentField: (field) => {
set({ ComponentFields: get().ComponentFields.add(field) });
},
types: {}, types: {},
templates: {}, templates: {},
data: {}, data: {},
@ -21,10 +28,10 @@ export const useTypesStore = create<TypesStoreType>((set, get) => ({
set((old) => ({ set((old) => ({
types: typesGenerator(data), types: typesGenerator(data),
data: { ...old.data, ...data }, data: { ...old.data, ...data },
ComponentFields: extractFieldsFromComponenents({ ...old.data, ...data }),
templates: templatesGenerator(data), templates: templatesGenerator(data),
})); }));
setLoading(false); setLoading(false);
console.log(templatesGenerator(data))
resolve(); resolve();
}) })
.catch((error) => { .catch((error) => {
@ -43,6 +50,7 @@ export const useTypesStore = create<TypesStoreType>((set, get) => ({
}, },
setData: (change: APIDataType | ((old: APIDataType) => APIDataType)) => { setData: (change: APIDataType | ((old: APIDataType) => APIDataType)) => {
let newChange = typeof change === "function" ? change(get().data) : change; let newChange = typeof change === "function" ? change(get().data) : change;
set({ data: newChange }); set({ data: newChange});
get().setComponentFields(extractFieldsFromComponenents(newChange));
}, },
})); }));

View file

@ -7,9 +7,6 @@ export type GlobalVariablesStore = {
addGlobalVariable: (name: string, id: string, type?: string) => void; addGlobalVariable: (name: string, id: string, type?: string) => void;
removeGlobalVariable: (name: string) => void; removeGlobalVariable: (name: string) => void;
getVariableId: (name: string) => string | undefined; getVariableId: (name: string) => string | undefined;
avaliableFields: Set<string>;
setAvaliableFields: (fields: Set<string>) => void;
addAvaliableField: (field: string) => void;
unavaliableFields: Set<string>; unavaliableFields: Set<string>;
setUnavaliableFields: (fields: Set<string>) => void; setUnavaliableFields: (fields: Set<string>) => void;
addUnavaliableField: (field: string) => void; addUnavaliableField: (field: string) => void;

View file

@ -8,4 +8,7 @@ export type TypesStoreType = {
data: APIDataType; data: APIDataType;
setData: (newState: {}) => void; setData: (newState: {}) => void;
getTypes: () => Promise<void>; getTypes: () => Promise<void>;
ComponentFields: Set<string>;
setComponentFields: (fields: Set<string>) => void;
addComponentField: (field: string) => void;
}; };

View file

@ -1235,16 +1235,17 @@ export function templatesGenerator(data: APIObjectType) {
} }
export function extractFieldsFromComponenents(data:APIObjectType ) { export function extractFieldsFromComponenents(data:APIObjectType ) {
const fields = new Set(); const fields = new Set<string>();
Object.keys(data).forEach((key) => { Object.keys(data).forEach((key) => {
Object.keys(data[key]).forEach((kind) => { Object.keys(data[key]).forEach((kind) => {
Object.keys(data[key][kind].template).forEach((field) => { Object.keys(data[key][kind].template).forEach((field) => {
if(data[key][kind].template[field].display_name && data[key][kind].template[field].show) 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( export function downloadFlow(