Browse Source

feat: add reverse loop in loop elements block

Ahmad Kholid 2 years ago
parent
commit
300a2197bc

+ 5 - 2
src/background/workflowEngine/blocksHandler/handlerLoopElements.js

@@ -31,13 +31,16 @@ async function loopElements({ data, id }, { refData }) {
         selector: data.selector,
         selector: data.selector,
       });
       });
 
 
+      let elementsList = elements;
+      if (data.reverseLoop) elementsList = elements.reverse();
+
       const loopPayload = {
       const loopPayload = {
         maxLoop,
         maxLoop,
         index: 0,
         index: 0,
         blockId: id,
         blockId: id,
-        data: elements,
         id: data.loopId,
         id: data.loopId,
         type: 'elements',
         type: 'elements',
+        data: elementsList,
       };
       };
 
 
       if (data.loadMoreAction !== 'none') {
       if (data.loadMoreAction !== 'none') {
@@ -59,7 +62,7 @@ async function loopElements({ data, id }, { refData }) {
       /* eslint-disable-next-line */
       /* eslint-disable-next-line */
       refData.loopData[data.loopId] = {
       refData.loopData[data.loopId] = {
         $index: 0,
         $index: 0,
-        data: elements[0],
+        data: elementsList[0],
       };
       };
     }
     }
 
 

+ 7 - 0
src/components/newtab/workflow/edit/EditLoopElements.vue

@@ -21,6 +21,13 @@
       class="w-full mt-3"
       class="w-full mt-3"
       @change="updateData({ maxLoop: $event })"
       @change="updateData({ maxLoop: $event })"
     />
     />
+    <ui-checkbox
+      :model-value="data.reverseLoop"
+      class="mt-2"
+      @change="updateData({ reverseLoop: $event })"
+    >
+      {{ t('workflow.blocks.loop-data.reverse') }}
+    </ui-checkbox>
     <div class="mt-4 border-t pt-4 mb-8">
     <div class="mt-4 border-t pt-4 mb-8">
       <p class="text-sm text-gray-600 dark:text-gray-200">
       <p class="text-sm text-gray-600 dark:text-gray-200">
         {{ t('workflow.blocks.loop-elements.loadMore') }}
         {{ t('workflow.blocks.loop-elements.loadMore') }}

+ 3 - 2
src/utils/shared.js

@@ -742,11 +742,12 @@ export const tasks = {
     data: {
     data: {
       disableBlock: false,
       disableBlock: false,
       loopId: '',
       loopId: '',
+      selector: '',
       maxLoop: '0',
       maxLoop: '0',
       description: '',
       description: '',
-      selector: '',
-      findBy: 'cssSelector',
+      reverseLoop: false,
       actionElSelector: '',
       actionElSelector: '',
+      findBy: 'cssSelector',
       actionElMaxWaitTime: 5,
       actionElMaxWaitTime: 5,
       actionPageMaxWaitTime: 10,
       actionPageMaxWaitTime: 10,
       loadMoreAction: 'none',
       loadMoreAction: 'none',