handler-loop-data.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import { generateJSON } from '@/utils/data-exporter';
  2. import { getBlockConnection } from '../helper';
  3. function loopData(block) {
  4. return new Promise((resolve) => {
  5. const { data } = block;
  6. if (this.loopList[data.loopId]) {
  7. this.loopList[data.loopId].index += 1;
  8. let currentLoopData;
  9. if (data.loopThrough === 'numbers') {
  10. currentLoopData = this.loopData[data.loopId] + 1;
  11. } else {
  12. currentLoopData =
  13. this.loopList[data.loopId].data[this.loopList[data.loopId].index];
  14. }
  15. this.loopData[data.loopId] = currentLoopData;
  16. } else {
  17. let currLoopData;
  18. switch (data.loopThrough) {
  19. case 'numbers':
  20. currLoopData = data.fromNumber;
  21. break;
  22. case 'data-columns':
  23. currLoopData = generateJSON(Object.keys(this.data), this.data);
  24. break;
  25. case 'custom-data':
  26. currLoopData = JSON.parse(data.loopData);
  27. break;
  28. default:
  29. }
  30. this.loopList[data.loopId] = {
  31. index: 0,
  32. data: currLoopData,
  33. id: data.loopId,
  34. blockId: block.id,
  35. type: data.loopThrough,
  36. maxLoop:
  37. data.loopThrough === 'numbers'
  38. ? data.toNumber + 1 - data.fromNumber
  39. : data.maxLoop || currLoopData.length,
  40. };
  41. /* eslint-disable-next-line */
  42. this.loopData[data.loopId] = data.loopThrough === 'numbers' ? data.fromNumber : currLoopData[0];
  43. }
  44. resolve({
  45. data: this.loopData[data.loopId],
  46. nextBlockId: getBlockConnection(block),
  47. });
  48. });
  49. }
  50. export default loopData;