Browse Source

feat: add array data type

Ahmad Kholid 3 years ago
parent
commit
e18b774728

+ 4 - 1
src/background/workflow-engine/blocks-handler.js

@@ -23,6 +23,9 @@ function convertData(data, type) {
     case 'boolean':
       result = Boolean(data);
       break;
+    case 'array':
+      result = Array.from(data);
+      break;
     default:
   }
 
@@ -443,7 +446,7 @@ export async function interactionHandler(block) {
       const column = getColumn(block.data.dataColumn);
 
       if (block.data.saveData) {
-        if (Array.isArray(data)) {
+        if (Array.isArray(data) && column.type !== 'array') {
           data.forEach((item) => {
             pushData(column, item);
           });

+ 1 - 0
src/components/newtab/workflow/WorkflowDataColumns.vue

@@ -56,6 +56,7 @@ const dataTypes = [
   { id: 'string', name: 'Text' },
   { id: 'integer', name: 'Number' },
   { id: 'boolean', name: 'Boolean' },
+  { id: 'array', name: 'Array' },
 ];
 
 const state = reactive({

+ 12 - 12
src/content/blocks-handler.js

@@ -89,18 +89,6 @@ export function getText(block) {
   });
 }
 
-function incScrollPos(element, data, vertical = true) {
-  let currentPos = vertical ? element.scrollTop : element.scrollLeft;
-
-  if (data.incY) {
-    currentPos += data.scrollY;
-  } else if (data.incX) {
-    currentPos += data.scrollX;
-  }
-
-  return currentPos;
-}
-
 const automaScript = `
 function automaNextBlock(data) {
   window.dispatchEvent(new CustomEvent('__automa-next-block__', { detail: data }));
@@ -151,6 +139,18 @@ export function javascriptCode(block) {
 }
 
 export function elementScroll(block) {
+  function incScrollPos(element, data, vertical = true) {
+    let currentPos = vertical ? element.scrollTop : element.scrollLeft;
+
+    if (data.incY) {
+      currentPos += data.scrollY;
+    } else if (data.incX) {
+      currentPos += data.scrollX;
+    }
+
+    return currentPos;
+  }
+
   return new Promise((resolve) => {
     const { data } = block;
     const behavior = data.smooth ? 'smooth' : 'auto';

+ 1 - 1
src/utils/shared.js

@@ -28,7 +28,7 @@ export const tasks = {
   },
   'active-tab': {
     name: 'Active tab',
-    description: "Set current tab that you're in as a active tab",
+    description: "Set current tab that you're in as an active tab",
     icon: 'riWindowLine',
     component: 'BlockBasic',
     category: 'browser',

+ 2 - 1
src/utils/workflow-trigger.js

@@ -121,7 +121,8 @@ export async function registerWorkflowTrigger(workflowId, { data }) {
       'keyboard-shortcut': registerKeyboardShortcut,
     };
 
-    await triggersHandler[data.type](workflowId, data);
+    if (triggersHandler[data.type])
+      await triggersHandler[data.type](workflowId, data);
   } catch (error) {
     console.error(error);
   }