diff --git a/frontend/src/AppBuilder/_stores/slices/queryPanelSlice.js b/frontend/src/AppBuilder/_stores/slices/queryPanelSlice.js
index 12a538400e..27a59740db 100644
--- a/frontend/src/AppBuilder/_stores/slices/queryPanelSlice.js
+++ b/frontend/src/AppBuilder/_stores/slices/queryPanelSlice.js
@@ -205,7 +205,6 @@ export const createQueryPanelSlice = (set, get) => ({
setPreviewPanelExpanded,
executeRunPycode,
runTransformation,
- executeWorkflow,
executeMultilineJS,
} = queryPanel;
const { onEvent } = eventsSlice;
@@ -297,14 +296,6 @@ export const createQueryPanelSlice = (set, get) => ({
queryExecutionPromise = executeMultilineJS(query.options.code, query?.id, false, mode, parameters);
} else if (query.kind === 'runpy') {
queryExecutionPromise = executeRunPycode(query.options.code, query, false, mode, queryState);
- } else if (query.kind === 'workflows') {
- queryExecutionPromise = executeWorkflow(
- moduleId,
- query.options.workflowId,
- query.options.blocking,
- query.options?.params,
- (currentAppEnvironmentId ?? environmentId) || selectedEnvironment?.id //TODO: currentAppEnvironmentId may no longer required. Need to check
- );
} else {
queryExecutionPromise = dataqueryService.run(
queryId,
@@ -465,7 +456,6 @@ export const createQueryPanelSlice = (set, get) => ({
setPreviewPanelExpanded,
executeRunPycode,
runTransformation,
- executeWorkflow,
executeMultilineJS,
setIsPreviewQueryLoading,
} = queryPanel;
@@ -514,14 +504,6 @@ export const createQueryPanelSlice = (set, get) => ({
queryExecutionPromise = executeMultilineJS(query.options.code, query?.id, true, '', parameters);
} else if (query.kind === 'runpy') {
queryExecutionPromise = executeRunPycode(query.options.code, query, true, 'edit', queryState);
- } else if (query.kind === 'workflows') {
- queryExecutionPromise = executeWorkflow(
- moduleId,
- query.options.workflowId,
- query.options.blocking,
- query.options?.params,
- (currentAppEnvironmentId ?? environmentId) || selectedEnvironment?.id //TODO: currentAppEnvironmentId may no longer required. Need to check
- );
} else {
queryExecutionPromise = dataqueryService.preview(query, options, currentVersionId, currentAppEnvironmentId);
}
diff --git a/frontend/src/_components/AccordionForm.jsx b/frontend/src/_components/AccordionForm.jsx
new file mode 100644
index 0000000000..6afe396bb0
--- /dev/null
+++ b/frontend/src/_components/AccordionForm.jsx
@@ -0,0 +1,22 @@
+import React from 'react';
+import isEmpty from 'lodash/isEmpty';
+import Accordion from '@/_ui/Accordion';
+
+const AccordionForm = ({ formComponent, getLayout }) => {
+ const sections = Object.keys(formComponent)
+ .map((key) => ({
+ title: formComponent[key].title,
+ inputs: formComponent[key].inputs,
+ }))
+ .filter(({ inputs }) => inputs && !isEmpty(inputs));
+
+ const items = sections.map(({ title, inputs }) => ({
+ title: title,
+ isOpen: true,
+ children: getLayout(inputs),
+ }));
+
+ return