Browse Source

fix: max loop in loop data block

Ahmad Kholid 3 years ago
parent
commit
d0760ca532
1 changed files with 6 additions and 4 deletions
  1. 6 4
      src/background/workflowEngine/blocksHandler/handlerLoopData.js

+ 6 - 4
src/background/workflowEngine/blocksHandler/handlerLoopData.js

@@ -20,6 +20,7 @@ async function loopData({ data, id }, { refData }) {
         $index: index,
       };
     } else {
+      const maxLoop = +data.maxLoop || 0;
       const getLoopData = {
         numbers: () => data.fromNumber,
         table: () => refData.table,
@@ -34,7 +35,6 @@ async function loopData({ data, id }, { refData }) {
           return parseJSON(variableVal, variableVal);
         },
         elements: async () => {
-          const max = +data.maxLoop || 0;
           const findBy = isXPath(data.elementSelector)
             ? 'xpath'
             : 'cssSelector';
@@ -42,8 +42,8 @@ async function loopData({ data, id }, { refData }) {
             id,
             label: 'loop-data',
             data: {
-              max,
               findBy,
+              max: maxLoop,
               multiple: true,
               selector: data.elementSelector,
               waitForSelector: data.waitForSelector ?? false,
@@ -52,9 +52,9 @@ async function loopData({ data, id }, { refData }) {
           });
           this.loopEls.push({
             url,
-            max,
             loopId,
             findBy,
+            max: maxLoop,
             blockId: id,
             selector: data.elementSelector,
           });
@@ -78,6 +78,8 @@ async function loopData({ data, id }, { refData }) {
         }
       }
 
+      const maxToLoop =
+        maxLoop >= currLoopData.length ? currLoopData.length : maxLoop;
       this.loopList[data.loopId] = {
         index,
         blockId: id,
@@ -87,7 +89,7 @@ async function loopData({ data, id }, { refData }) {
         maxLoop:
           data.loopThrough === 'numbers'
             ? data.toNumber + 1 - data.fromNumber
-            : +data.maxLoop || currLoopData.length,
+            : maxToLoop,
       };
       /* eslint-disable-next-line */
       refData.loopData[data.loopId] = {