Browse Source

feat: add $index path in loopData keyword

Ahmad Kholid 3 years ago
parent
commit
2efd0c1ec6

+ 13 - 5
src/background/workflow-engine/blocks-handler/handler-loop-data.js

@@ -6,18 +6,22 @@ function loopData(block) {
     const nextBlockId = getBlockConnection(block);
     const nextBlockId = getBlockConnection(block);
 
 
     if (this.loopList[data.loopId]) {
     if (this.loopList[data.loopId]) {
-      this.loopList[data.loopId].index += 1;
+      const index = this.loopList[data.loopId].index + 1;
+
+      this.loopList[data.loopId].index = index;
 
 
       let currentLoopData;
       let currentLoopData;
 
 
       if (data.loopThrough === 'numbers') {
       if (data.loopThrough === 'numbers') {
         currentLoopData = this.referenceData.loopData[data.loopId] + 1;
         currentLoopData = this.referenceData.loopData[data.loopId] + 1;
       } else {
       } else {
-        currentLoopData =
-          this.loopList[data.loopId].data[this.loopList[data.loopId].index];
+        currentLoopData = this.loopList[data.loopId].data[index];
       }
       }
 
 
-      this.referenceData.loopData[data.loopId] = currentLoopData;
+      this.referenceData.loopData[data.loopId] = {
+        data: currentLoopData,
+        $index: index,
+      };
     } else {
     } else {
       let currLoopData;
       let currLoopData;
 
 
@@ -57,7 +61,11 @@ function loopData(block) {
             : data.maxLoop || currLoopData.length,
             : data.maxLoop || currLoopData.length,
       };
       };
       /* eslint-disable-next-line */
       /* eslint-disable-next-line */
-      this.referenceData.loopData[data.loopId] = data.loopThrough === 'numbers' ? data.fromNumber : currLoopData[0];
+      this.referenceData.loopData[data.loopId] = {
+        data:
+          data.loopThrough === 'numbers' ? data.fromNumber : currLoopData[0],
+        $index: 0,
+      };
     }
     }
 
 
     resolve({
     resolve({

+ 1 - 1
src/newtab/pages/Workflows.vue

@@ -31,7 +31,7 @@
       </div>
       </div>
       <ui-button
       <ui-button
         tag="a"
         tag="a"
-        href="https://automa.vercel.app/workflows"
+        href="https://automa.site/workflows"
         target="_blank"
         target="_blank"
         class="inline-block relative"
         class="inline-block relative"
         @click="browseWorkflow"
         @click="browseWorkflow"

+ 10 - 1
src/utils/reference-data/key-parser.js

@@ -11,7 +11,16 @@ export default function (key) {
 
 
   dataKey = objectHasKey(refKeys, dataKey) ? refKeys[dataKey] : dataKey;
   dataKey = objectHasKey(refKeys, dataKey) ? refKeys[dataKey] : dataKey;
 
 
-  if (dataKey !== 'dataColumns') return { dataKey, path: path || '' };
+  if (dataKey !== 'dataColumns') {
+    if (dataKey === 'loopData' && !path.endsWith('.$index')) {
+      const pathArr = path.split('.');
+      pathArr.splice(1, 0, 'data');
+
+      path = pathArr.join('.');
+    }
+
+    return { dataKey, path: path || '' };
+  }
 
 
   const pathArr = path?.split('.') ?? [];
   const pathArr = path?.split('.') ?? [];
   let dataPath = path;
   let dataPath = path;