Sfoglia il codice sorgente

feat: insert variables in execute workflow block

Ahmad Kholid 2 anni fa
parent
commit
598a586d69

+ 21 - 3
src/background/workflowEngine/blocksHandler/handlerExecuteWorkflow.js

@@ -51,12 +51,30 @@ async function executeWorkflow({ id: blockId, data }) {
   }
 
   workflow = convertWorkflowData(workflow);
+  const optionsParams = { variables: {} };
+
+  if (!isWhitespace(data.globalData))
+    optionsParams.globalData = data.globalData;
+
+  if (data.insertAllVars) {
+    optionsParams.variables = JSON.parse(
+      JSON.stringify(this.engine.referenceData.variables)
+    );
+  } else if (data.insertVars) {
+    const varsName = data.insertVars.split(',');
+    varsName.forEach((name) => {
+      const varName = name.trim();
+      const value = this.engine.referenceData.variables[varName];
+
+      if (!value && typeof value !== 'boolean') return;
+
+      optionsParams.variables[varName] = value;
+    });
+  }
 
   const options = {
     options: {
-      data: {
-        globalData: isWhitespace(data.globalData) ? null : data.globalData,
-      },
+      data: optionsParams,
       parentWorkflow: {
         id: this.engine.id,
         name: this.engine.workflow.name,

+ 27 - 3
src/components/newtab/workflow/edit/EditExecuteWorkflow.vue

@@ -1,5 +1,5 @@
 <template>
-  <div>
+  <div class="mb-12">
     <ui-textarea
       :model-value="data.description"
       :placeholder="t('common.description')"
@@ -26,10 +26,10 @@
       :label="t('workflow.blocks.execute-workflow.executeId')"
       :title="t('workflow.blocks.execute-workflow.executeId')"
       placeholder="abc123"
-      class="mb-3 w-full"
+      class="w-full"
       @change="updateData({ executeId: $event })"
     />
-    <p class="text-sm text-gray-600 dark:text-gray-200 ml-1 mb-1">
+    <p class="text-sm mt-4 text-gray-600 dark:text-gray-200 ml-1 mb-1">
       {{ t('common.globalData') }}
     </p>
     <pre
@@ -38,6 +38,30 @@
       @click="state.showGlobalData = true"
       v-text="data.globalData || '____'"
     />
+    <ui-checkbox
+      :model-value="data.insertAllVars"
+      class="leading-tight mt-4"
+      @change="updateData({ insertAllVars: $event })"
+    >
+      {{ t('workflow.blocks.execute-workflow.insertAllVars') }}
+    </ui-checkbox>
+    <template v-if="!data.insertAllVars">
+      <label class="mt-4 block">
+        <span class="text-sm ml-1 block text-gray-600 dark:text-gray-200">
+          {{ t('workflow.blocks.execute-workflow.insertVars') }}
+        </span>
+        <ui-textarea
+          :model-value="data.insertVars"
+          placeholder="varA,varB,varC"
+          @change="updateData({ insertVars: $event })"
+        />
+      </label>
+      <span
+        class="text-sm ml-1 block text-gray-600 dark:text-gray-200 leading-tight"
+      >
+        {{ t('workflow.blocks.execute-workflow.useCommas') }}
+      </span>
+    </template>
     <ui-modal
       v-model="state.showGlobalData"
       title="Global data"

+ 4 - 1
src/locales/en/blocks.json

@@ -353,7 +353,10 @@
         "overwriteNote": "This will overwrite the global data of the selected workflow",
         "select": "Select workflow",
         "executeId": "Execute Id (optional)",
-        "description": ""
+        "description": "",
+        "insertAllVars": "Insert all current workflow variables",
+        "insertVars": "Insert current workflow variables",
+        "useCommas": "Use commas to separate the variable name"
       },
       "google-sheets": {
         "name": "Google sheets",

+ 1 - 0
src/utils/shared.js

@@ -66,6 +66,7 @@ export const tasks = {
       workflowId: '',
       globalData: '',
       description: '',
+      insertAllVars: false,
     },
   },
   'active-tab': {