@crystaldesign/web-planner-logic 25.13.0-beta.3 → 25.13.0-beta.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/build/cjs/{DivaBoxPlanner-f865ff9c.js → DivaBoxPlanner-19fff9fc.js} +217 -82
  2. package/build/cjs/{DivaStandardPlanner-f44f3a03.js → DivaStandardPlanner-e13f9c94.js} +2 -2
  3. package/build/cjs/{DoorPlanner-17dc699e.js → DoorPlanner-9eee1c48.js} +1 -1
  4. package/build/cjs/{Host3DSignalR-3843e7c8.js → Host3DSignalR-eab2939e.js} +1 -1
  5. package/build/cjs/{LiviqueWWSHandler-79580044.js → LiviqueWWSHandler-469f6583.js} +1 -1
  6. package/build/cjs/{PfisterWWSHandler-edc45ac1.js → PfisterWWSHandler-64e350c5.js} +1 -1
  7. package/build/cjs/{PlannerHandler2D-16bf8df8.js → PlannerHandler2D-787ed37c.js} +4 -2
  8. package/build/cjs/{SeriousBasketHandler-fd41e561.js → SeriousBasketHandler-f367ca39.js} +1 -1
  9. package/build/cjs/{ShelfPlanner-20d69956.js → ShelfPlanner-ec459d7e.js} +1 -1
  10. package/build/cjs/{StandardWWSHandler-28bf51c2.js → StandardWWSHandler-0dff1df3.js} +1 -1
  11. package/build/cjs/{index-a94c390e.js → index-9720b39c.js} +1356 -733
  12. package/build/cjs/index.js +1 -1
  13. package/build/esm/{DivaBoxPlanner-68462b01.js → DivaBoxPlanner-07aaffc1.js} +217 -82
  14. package/build/esm/{DivaStandardPlanner-42600bb1.js → DivaStandardPlanner-8659772b.js} +2 -2
  15. package/build/esm/{DoorPlanner-596bb4c5.js → DoorPlanner-1856ede2.js} +1 -1
  16. package/build/esm/{Host3DSignalR-a339ed56.js → Host3DSignalR-06c1d471.js} +1 -1
  17. package/build/esm/{LiviqueWWSHandler-92b609cb.js → LiviqueWWSHandler-d6dc0f40.js} +1 -1
  18. package/build/esm/{PfisterWWSHandler-baae60f9.js → PfisterWWSHandler-1c4b02d4.js} +1 -1
  19. package/build/esm/{PlannerHandler2D-36cd084c.js → PlannerHandler2D-c6ad67ab.js} +4 -2
  20. package/build/esm/{SeriousBasketHandler-b8bc14db.js → SeriousBasketHandler-1cbe7a5b.js} +1 -1
  21. package/build/esm/{ShelfPlanner-ed43c290.js → ShelfPlanner-d4025911.js} +1 -1
  22. package/build/esm/{StandardWWSHandler-14b103ac.js → StandardWWSHandler-b109a3d8.js} +1 -1
  23. package/build/esm/{index-d67e1a1c.js → index-df78379b.js} +1356 -733
  24. package/build/esm/index.js +1 -1
  25. package/build/types/web-planner-logic/src/index.d.ts +3 -2
  26. package/build/types/web-planner-logic/src/index.d.ts.map +1 -1
  27. package/build/types/web-planner-logic/src/interface/API/AiImageResult.d.ts +50 -0
  28. package/build/types/web-planner-logic/src/interface/API/AiImageResult.d.ts.map +1 -0
  29. package/build/types/web-planner-logic/src/interface/AdditionalModelInfos.d.ts +19 -0
  30. package/build/types/web-planner-logic/src/interface/AdditionalModelInfos.d.ts.map +1 -1
  31. package/build/types/web-planner-logic/src/interface/Articles/AccessoireItemType.d.ts +1 -1
  32. package/build/types/web-planner-logic/src/interface/Articles/AccessoireItemType.d.ts.map +1 -1
  33. package/build/types/web-planner-logic/src/interface/Articles/CatalogArticleDataType.d.ts +6 -15
  34. package/build/types/web-planner-logic/src/interface/Articles/CatalogArticleDataType.d.ts.map +1 -1
  35. package/build/types/web-planner-logic/src/interface/Articles/CatalogPlannerArticleViewDataType.d.ts +1 -1
  36. package/build/types/web-planner-logic/src/interface/Articles/CatalogPlannerArticleViewDataType.d.ts.map +1 -1
  37. package/build/types/web-planner-logic/src/interface/CoreTypes/index.d.ts +6 -0
  38. package/build/types/web-planner-logic/src/interface/CoreTypes/index.d.ts.map +1 -1
  39. package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts +1 -1
  40. package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts.map +1 -1
  41. package/build/types/web-planner-logic/src/interface/OptionTypes/ArticleOptionDataTypes.d.ts +6 -0
  42. package/build/types/web-planner-logic/src/interface/OptionTypes/ArticleOptionDataTypes.d.ts.map +1 -1
  43. package/build/types/web-planner-logic/src/interface/OptionTypes/ArticleOptionValueView.d.ts +1 -1
  44. package/build/types/web-planner-logic/src/interface/OptionTypes/ArticleOptionValueView.d.ts.map +1 -1
  45. package/build/types/web-planner-logic/src/interface/OptionTypes/CatalogOptionDataTypes.d.ts +27 -19
  46. package/build/types/web-planner-logic/src/interface/OptionTypes/CatalogOptionDataTypes.d.ts.map +1 -1
  47. package/build/types/web-planner-logic/src/interface/ShelfPlanner/ShelfAccessoiresView.d.ts +1 -1
  48. package/build/types/web-planner-logic/src/interface/ShelfPlanner/ShelfAccessoiresView.d.ts.map +1 -1
  49. package/build/types/web-planner-logic/src/interface/ViewTypes/index.d.ts +16 -0
  50. package/build/types/web-planner-logic/src/interface/ViewTypes/index.d.ts.map +1 -1
  51. package/build/types/web-planner-logic/src/interface/webPlannerParams/WebPlannerParamsType.d.ts +6 -1
  52. package/build/types/web-planner-logic/src/interface/webPlannerParams/WebPlannerParamsType.d.ts.map +1 -1
  53. package/build/types/web-planner-logic/src/logic/Article/DivaArticle.d.ts.map +1 -1
  54. package/build/types/web-planner-logic/src/logic/Article/Engine/IDMArticleEngine.d.ts.map +1 -1
  55. package/build/types/web-planner-logic/src/logic/ConfigTree/DivaConfigTreeHandler.d.ts.map +1 -1
  56. package/build/types/web-planner-logic/src/logic/DivaApiHandler.d.ts +26 -0
  57. package/build/types/web-planner-logic/src/logic/DivaApiHandler.d.ts.map +1 -1
  58. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts +20 -3
  59. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts.map +1 -1
  60. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/BoxPlannerGrid.d.ts +18 -3
  61. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/BoxPlannerGrid.d.ts.map +1 -1
  62. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/ConstructionRulesHandler.d.ts +2 -0
  63. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/ConstructionRulesHandler.d.ts.map +1 -1
  64. package/build/types/web-planner-logic/src/logic/Planner/DivaPlannerHandler.d.ts +2 -1
  65. package/build/types/web-planner-logic/src/logic/Planner/DivaPlannerHandler.d.ts.map +1 -1
  66. package/build/types/web-planner-logic/src/logic/Planner/PlannerUtils/PlannerHandler2D.d.ts.map +1 -1
  67. package/build/types/web-planner-logic/src/logic/Planner/Rendering/DivaMediaServiceHandler.d.ts +10 -0
  68. package/build/types/web-planner-logic/src/logic/Planner/Rendering/DivaMediaServiceHandler.d.ts.map +1 -1
  69. package/build/types/web-planner-logic/src/logic/Planner/Rendering/PlannerHandler3D.d.ts.map +1 -1
  70. package/build/types/web-planner-logic/src/logic/Planner/Rendering/Rendering.d.ts.map +1 -1
  71. package/build/types/web-planner-logic/src/logic/Set/DivaSet.d.ts +7 -0
  72. package/build/types/web-planner-logic/src/logic/Set/DivaSet.d.ts.map +1 -1
  73. package/build/types/web-planner-logic/src/logic/Set/DivaSetHandler.d.ts +5 -2
  74. package/build/types/web-planner-logic/src/logic/Set/DivaSetHandler.d.ts.map +1 -1
  75. package/build/types/web-planner-logic/src/model/Articles/Article/CatalogArticleData.d.ts +3 -13
  76. package/build/types/web-planner-logic/src/model/Articles/Article/CatalogArticleData.d.ts.map +1 -1
  77. package/build/types/web-planner-logic/src/model/Articles/Article/DivaCatalogArticle.d.ts +3 -3
  78. package/build/types/web-planner-logic/src/model/Articles/Article/DivaCatalogArticle.d.ts.map +1 -1
  79. package/build/types/web-planner-logic/src/model/Articles/Article/IDMCatalogArticle.d.ts +3 -3
  80. package/build/types/web-planner-logic/src/model/Articles/Article/IDMCatalogArticle.d.ts.map +1 -1
  81. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts +2 -1
  82. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts.map +1 -1
  83. package/build/types/web-planner-logic/src/model/Catalog/DivaCatalogData.d.ts +6 -1
  84. package/build/types/web-planner-logic/src/model/Catalog/DivaCatalogData.d.ts.map +1 -1
  85. package/build/types/web-planner-logic/src/model/Options/ArticleOptionData.d.ts +2 -1
  86. package/build/types/web-planner-logic/src/model/Options/ArticleOptionData.d.ts.map +1 -1
  87. package/build/types/web-planner-logic/src/model/Options/ArticleOptionValueData.d.ts +3 -9
  88. package/build/types/web-planner-logic/src/model/Options/ArticleOptionValueData.d.ts.map +1 -1
  89. package/build/types/web-planner-logic/src/model/Options/CatalogOptionData.d.ts +6 -3
  90. package/build/types/web-planner-logic/src/model/Options/CatalogOptionData.d.ts.map +1 -1
  91. package/build/types/web-planner-logic/src/model/Options/CatalogOptionValueData.d.ts +6 -4
  92. package/build/types/web-planner-logic/src/model/Options/CatalogOptionValueData.d.ts.map +1 -1
  93. package/build/types/web-planner-logic/src/test/datas/environments/scripts/pfister-prod.d.ts.map +1 -1
  94. package/build/types/web-planner-logic/src/test/datas/environments/scripts/pfister-quality.d.ts.map +1 -1
  95. package/build/types/web-planner-logic/src/test/datas/environments/testing/pfister-dev.d.ts.map +1 -1
  96. package/build/types/web-planner-logic/src/test/datas/environments/testing/retail-dev.d.ts.map +1 -1
  97. package/build/types/web-planner-logic/src/test/datas/environments/testing/retail-test.d.ts.map +1 -1
  98. package/package.json +2 -2
@@ -5,10 +5,10 @@ var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
5
5
  var _createClass = require('@babel/runtime/helpers/createClass');
6
6
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
7
7
  var _regeneratorRuntime = require('@babel/runtime/regenerator');
8
- var index = require('./index-a94c390e.js');
8
+ var index = require('./index-9720b39c.js');
9
9
  var DivaUtils = require('@crystaldesign/diva-utils');
10
10
  var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
11
- var PlannerHandler2D = require('./PlannerHandler2D-16bf8df8.js');
11
+ var PlannerHandler2D = require('./PlannerHandler2D-787ed37c.js');
12
12
  require('@babel/runtime/helpers/slicedToArray');
13
13
  require('@babel/runtime/helpers/objectWithoutProperties');
14
14
  require('axios');
@@ -2616,31 +2616,95 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2616
2616
  }
2617
2617
  return undefined;
2618
2618
  }
2619
+ }, {
2620
+ key: "validateDimensionRule",
2621
+ value: function validateDimensionRule(dimRule, boxPlannerSize) {
2622
+ var isOver = false;
2623
+ var isEqual = false;
2624
+ if (dimRule.dimension.toLowerCase() == 'height' && boxPlannerSize.y > dimRule.dimensionLimit) isOver = true;
2625
+ if (dimRule.dimension.toLowerCase() == 'height' && boxPlannerSize.y == dimRule.dimensionLimit) isEqual = true;
2626
+ if (dimRule.dimension.toLowerCase() == 'width' && boxPlannerSize.x > dimRule.dimensionLimit) isOver = true;
2627
+ if (dimRule.dimension.toLowerCase() == 'width' && boxPlannerSize.x == dimRule.dimensionLimit) isEqual = true;
2628
+ if (dimRule.dimension.toLowerCase() == 'depth' && boxPlannerSize.z > dimRule.dimensionLimit) isOver = true;
2629
+ if (dimRule.dimension.toLowerCase() == 'depth' && boxPlannerSize.z == dimRule.dimensionLimit) isEqual = true;
2630
+ if (isOver) {
2631
+ if (dimRule.higherLimit.toLowerCase() == 'doshow') return true;else if (dimRule.higherLimit.toLowerCase() == 'dohide') return false;
2632
+ } else if (isEqual) {
2633
+ return true;
2634
+ } else {
2635
+ if (dimRule.lowerLimit.toLowerCase() == 'doshow') return true;else if (dimRule.lowerLimit.toLowerCase() == 'dohide') return false;
2636
+ }
2637
+ return false;
2638
+ }
2639
+
2640
+ /*
2641
+ * This function corrects the elements in one row when the top element is wider then the bottom one.
2642
+ * Goal is to make all the bottom ones also atleast as wide as the top one because no element can overhang - omlin setup
2643
+ */
2644
+ }, {
2645
+ key: "correctOverHangingElement",
2646
+ value: function correctOverHangingElement(boxPlannerGrid, optionHandler, changedOPTs) {
2647
+ var _this2 = this;
2648
+ if (!changedOPTs) return;
2649
+ var _loop = function _loop() {
2650
+ var elements = boxPlannerGrid.getAllElementsInColumn(columndIdx, false, false); // from bottom to top
2651
+ var lastElement = null;
2652
+ elements.forEach(function (element) {
2653
+ var _lastElement$Width, _element$Width, _lastElement$Depth, _element$Depth;
2654
+ if (!lastElement) {
2655
+ lastElement = element;
2656
+ return;
2657
+ }
2658
+ if (((_lastElement$Width = lastElement.Width) !== null && _lastElement$Width !== void 0 ? _lastElement$Width : 0) > ((_element$Width = element.Width) !== null && _element$Width !== void 0 ? _element$Width : 0)) {
2659
+ var t = Object.entries(changedOPTs); // should be the new wider width that causes the overhanging
2660
+ var opt = t[0][0];
2661
+ var opv = t[0][1];
2662
+ _this2.setOptionValue(element.ElementId, opt, opv, optionHandler);
2663
+ }
2664
+ if (((_lastElement$Depth = lastElement.Depth) !== null && _lastElement$Depth !== void 0 ? _lastElement$Depth : 0) > ((_element$Depth = element.Depth) !== null && _element$Depth !== void 0 ? _element$Depth : 0)) {
2665
+ var _t = Object.entries(changedOPTs); // should be the new wider width that causes the overhanging
2666
+ var _opt = _t[0][0];
2667
+ var _opv2 = _t[0][1];
2668
+ _this2.setOptionValue(element.ElementId, _opt, _opv2, optionHandler);
2669
+ }
2670
+ lastElement = element;
2671
+ });
2672
+ };
2673
+ for (var columndIdx = 0; columndIdx < boxPlannerGrid.getColumnCount(); columndIdx++) {
2674
+ _loop();
2675
+ }
2676
+ }
2677
+
2678
+ /*
2679
+ * This function corrects Options that are based on the total planning dimensions
2680
+ * */
2619
2681
  }, {
2620
2682
  key: "correctOptionsInfluencedByDimensions",
2621
2683
  value: function correctOptionsInfluencedByDimensions(boxPlannerGrid, optionHandler) {
2622
- var _this2 = this;
2684
+ var _this3 = this;
2623
2685
  if (!this.constructionRules.optionsInfluencedByDimensions) return;
2624
2686
  var boxPlannerSize = boxPlannerGrid.getSizeOfWholeSet(false);
2625
2687
  var allElements = boxPlannerGrid.getAllElementsInFrontGrid();
2626
2688
  this.constructionRules.optionsInfluencedByDimensions.forEach(function (dimRule) {
2627
- var isOver = false;
2628
- var isEqual = false;
2629
- if (dimRule.dimension.toLowerCase() == 'height' && boxPlannerSize.y > dimRule.dimensionLimit) isOver = true;
2630
- if (dimRule.dimension.toLowerCase() == 'height' && boxPlannerSize.y == dimRule.dimensionLimit) isEqual = true;
2631
- if (dimRule.dimension.toLowerCase() == 'width' && boxPlannerSize.x > dimRule.dimensionLimit) isOver = true;
2632
- if (dimRule.dimension.toLowerCase() == 'width' && boxPlannerSize.x == dimRule.dimensionLimit) isEqual = true;
2633
- if (dimRule.dimension.toLowerCase() == 'depth' && boxPlannerSize.z > dimRule.dimensionLimit) isOver = true;
2634
- if (dimRule.dimension.toLowerCase() == 'depth' && boxPlannerSize.z == dimRule.dimensionLimit) isEqual = true;
2635
- allElements.forEach(function (element) {
2636
- if (isOver) {
2637
- if (dimRule.higherLimit.toLowerCase() == 'doshow') _this2.setOptionDoShow(element.ElementId, dimRule.option, optionHandler);else if (dimRule.higherLimit.toLowerCase() == 'dohide') _this2.setOptionDoHide(element.ElementId, dimRule.option, optionHandler);
2638
- } else if (isEqual) {
2639
- _this2.setOptionDoShow(element.ElementId, dimRule.option, optionHandler);
2640
- } else {
2641
- if (dimRule.lowerLimit.toLowerCase() == 'doshow') _this2.setOptionDoShow(element.ElementId, dimRule.option, optionHandler);else if (dimRule.lowerLimit.toLowerCase() == 'dohide') _this2.setOptionDoHide(element.ElementId, dimRule.option, optionHandler);
2642
- }
2643
- });
2689
+ if (Array.isArray(dimRule)) {
2690
+ if (dimRule.every(function (rule) {
2691
+ return _this3.validateDimensionRule(rule, boxPlannerSize);
2692
+ })) dimRule.forEach(function (rule) {
2693
+ return allElements.forEach(function (element) {
2694
+ return _this3.setOptionDoShow(element.ElementId, rule.option, optionHandler);
2695
+ });
2696
+ });else dimRule.forEach(function (rule) {
2697
+ return allElements.forEach(function (element) {
2698
+ return _this3.setOptionDoHide(element.ElementId, rule.option, optionHandler);
2699
+ });
2700
+ });
2701
+ } else {
2702
+ if (_this3.validateDimensionRule(dimRule, boxPlannerSize)) allElements.forEach(function (element) {
2703
+ return _this3.setOptionDoShow(element.ElementId, dimRule.option, optionHandler);
2704
+ });else allElements.forEach(function (element) {
2705
+ return _this3.setOptionDoHide(element.ElementId, dimRule.option, optionHandler);
2706
+ });
2707
+ }
2644
2708
  });
2645
2709
  }
2646
2710
  }, {
@@ -2703,27 +2767,32 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2703
2767
  }, {
2704
2768
  key: "correctCoverPlate",
2705
2769
  value: function correctCoverPlate(coverPlateRule, boxPlannerGrid, optionHandler) {
2706
- var _this3 = this;
2770
+ var _this4 = this;
2707
2771
  if (coverPlateRule.onHighestElementsOnly) return; // System4 not handled by this logic yet
2708
2772
 
2709
2773
  var elementsPerSeries = boxPlannerGrid.getHighestElementsPerSeries(!!coverPlateRule.onBottom);
2710
2774
  elementsPerSeries.forEach(function (serie) {
2711
2775
  var seriesWidth = 0;
2712
2776
  var seriesWidthToPlateOpv = coverPlateRule.seriesWidthToPlateOpv;
2777
+
2778
+ // default => set all to ohne
2713
2779
  serie.forEach(function (element) {
2714
- var _element$Width;
2715
- seriesWidth += (_element$Width = element.Width) !== null && _element$Width !== void 0 ? _element$Width : 0;
2716
- _this3.setOptionValue(element.ElementId, coverPlateRule.optABD, 'OPVOHNE', optionHandler);
2780
+ var _element$Width2;
2781
+ seriesWidth += (_element$Width2 = element.Width) !== null && _element$Width2 !== void 0 ? _element$Width2 : 0;
2782
+ boxPlannerGrid.getAllElementsDown(element.ElementId).elements.forEach(function (e) {
2783
+ return _this4.setOptionValue(e, coverPlateRule.optABD, 'OPVOHNE', optionHandler);
2784
+ });
2785
+ _this4.setOptionValue(element.ElementId, coverPlateRule.optABD, 'OPVOHNE', optionHandler);
2717
2786
  });
2718
2787
  var firstUncoveredElement = serie[0];
2719
- var _loop = function _loop() {
2788
+ var _loop2 = function _loop2() {
2720
2789
  var opv = seriesWidthToPlateOpv.findLast(function (stp) {
2721
2790
  // is a clean element ending
2722
2791
  var helperWidth = 0;
2723
2792
  var isClean = false;
2724
2793
  serie.forEach(function (element) {
2725
- var _element$Width2;
2726
- helperWidth += (_element$Width2 = element.Width) !== null && _element$Width2 !== void 0 ? _element$Width2 : 0;
2794
+ var _element$Width3;
2795
+ helperWidth += (_element$Width3 = element.Width) !== null && _element$Width3 !== void 0 ? _element$Width3 : 0;
2727
2796
  if (Math.abs(helperWidth - stp.limit) < 1) isClean = true;
2728
2797
  });
2729
2798
  if (stp.limit <= seriesWidth && isClean) return true;
@@ -2732,7 +2801,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2732
2801
  if (!opv) return {
2733
2802
  v: void 0
2734
2803
  };
2735
- _this3.setOptionValue(firstUncoveredElement.ElementId, coverPlateRule.optABD, opv.plateOpv, optionHandler);
2804
+ _this4.setOptionValue(firstUncoveredElement.ElementId, coverPlateRule.optABD, opv.plateOpv, optionHandler);
2736
2805
  var helperWidth = 0;
2737
2806
  firstUncoveredElement = serie.find(function (e) {
2738
2807
  var _e$Width;
@@ -2745,7 +2814,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2745
2814
  },
2746
2815
  _ret;
2747
2816
  while (seriesWidth != 0) {
2748
- _ret = _loop();
2817
+ _ret = _loop2();
2749
2818
  if (_ret) return _ret.v;
2750
2819
  }
2751
2820
  });
@@ -3147,6 +3216,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3147
3216
  }
3148
3217
  this.correctLadder(boxPlannerGrid, optionHandler);
3149
3218
  this.correctOptionsInfluencedByDimensions(boxPlannerGrid, optionHandler);
3219
+ this.correctOverHangingElement(boxPlannerGrid, optionHandler, changedOPTs);
3150
3220
  this.partlistHelper.calculateKnots(boxPlannerGrid, optionHandler);
3151
3221
  this.partlistHelper.calculateRahmen(boxPlannerGrid, optionHandler);
3152
3222
  for (i = 0; i < boxPlannerGrid.getColumnCount(); i++) {
@@ -3155,13 +3225,13 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3155
3225
  }
3156
3226
  }
3157
3227
  doChangeRetailArticleNumbers = this.doChangeRetailArticleNumbers(boxPlannerGrid, optionHandler);
3158
- _context.next = 27;
3228
+ _context.next = 28;
3159
3229
  return this.updateCfgValuesByPlanner(optionHandler, undefined, this.constructionRules.partlistRules.bundleRules, doChangeRetailArticleNumbers);
3160
- case 27:
3230
+ case 28:
3161
3231
  LOG$2.debug('BoxPlanner updateOptionLogic - Duration after setting Option Values of all Articles: ' + (new Date().getTime() - startTime));
3162
3232
  LOG$2.debug('BoxPlanner updateOptionLogic - Duration after setting updating configurator: ' + (new Date().getTime() - startTime));
3163
3233
  return _context.abrupt("return", resultMessage);
3164
- case 30:
3234
+ case 31:
3165
3235
  case "end":
3166
3236
  return _context.stop();
3167
3237
  }
@@ -3842,10 +3912,12 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3842
3912
  }, {
3843
3913
  key: "getAllElementsInColumn",
3844
3914
  value: function getAllElementsInColumn(index, fromBackmodul) {
3915
+ var orderBottomDown = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
3845
3916
  var curGrid = fromBackmodul ? this.backGrid : this.frontGrid;
3846
3917
  var allElements = [];
3847
3918
  var allElementIds = [];
3848
- if (curGrid.length > index) {
3919
+ if (!curGrid[index]) return allElements;
3920
+ if (orderBottomDown) {
3849
3921
  for (var i = 0; i < curGrid[index].length; i++) {
3850
3922
  var cell = curGrid[index][i];
3851
3923
  if (cell && allElementIds.indexOf(cell.plannerElementId) == -1) {
@@ -3853,6 +3925,14 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3853
3925
  allElements.push(this.plannerElements.get(cell.plannerElementId));
3854
3926
  }
3855
3927
  }
3928
+ } else {
3929
+ for (var i = curGrid[index].length - 1; i >= 0; i--) {
3930
+ var _cell4 = curGrid[index][i];
3931
+ if (_cell4 && allElementIds.indexOf(_cell4.plannerElementId) == -1) {
3932
+ allElementIds.push(_cell4.plannerElementId);
3933
+ allElements.push(this.plannerElements.get(_cell4.plannerElementId));
3934
+ }
3935
+ }
3856
3936
  }
3857
3937
  return allElements;
3858
3938
  }
@@ -4081,6 +4161,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4081
4161
  }, {
4082
4162
  key: "getHighestElementsPerSeries",
4083
4163
  value: function getHighestElementsPerSeries() {
4164
+ var onBottom = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
4084
4165
  if (this.hasActiveBackside) throw new Error('this function is doesnt implement the backside logic (yet)');
4085
4166
  var result = [];
4086
4167
  var lastHeight = -1;
@@ -4089,7 +4170,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4089
4170
  var height = row.reduce(function (added, column) {
4090
4171
  return column.height + added;
4091
4172
  }, 0);
4092
- if (height == lastHeight) {
4173
+ if (height == lastHeight || onBottom) {
4093
4174
  if (!result[result.length - 1]) result.push([]);
4094
4175
  result[result.length - 1].push(this.getPlannerElementAtGridPos(idx, row.length - 1, false));
4095
4176
  } else {
@@ -4127,6 +4208,47 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4127
4208
  };
4128
4209
  }
4129
4210
 
4211
+ /**
4212
+ * Get all the Elements need to fill up for the copy of Element x fxe:
4213
+ *
4214
+ * [4] ->
4215
+ * [3]
4216
+ * [2]
4217
+ * [0][1]
4218
+ *
4219
+ * returns element 4, 3 and 2 because those are needed to copy in order
4220
+ * for the copy of element 4 to not float
4221
+ */
4222
+ }, {
4223
+ key: "getAllElementsToFillUp",
4224
+ value: function getAllElementsToFillUp(elementId, dir) {
4225
+ var curPos = this.getCellsInGridByElementId(elementId);
4226
+ if (curPos.startRowIndex == 0) return {
4227
+ elements: [],
4228
+ backside: false
4229
+ };
4230
+ var d = dir == 'RIGHT' ? +1 : -1;
4231
+ //columns and rows are swapped don't ask me why
4232
+ var index = {
4233
+ x: curPos.startColIndex,
4234
+ y: curPos.startRowIndex
4235
+ };
4236
+ var curGrid = curPos.backside ? this.backGrid : this.frontGrid;
4237
+ var plannerIdsToFill = [];
4238
+ var existingPlannerIds = [];
4239
+ for (var colIdx = 0; colIdx <= index.y; colIdx++) {
4240
+ var _curGrid$index$x$colI, _curGrid;
4241
+ var elementToCopy = (_curGrid$index$x$colI = curGrid[index.x][colIdx]) === null || _curGrid$index$x$colI === void 0 ? void 0 : _curGrid$index$x$colI.plannerElementId;
4242
+ var neighbour = (_curGrid = curGrid[index.x + d]) === null || _curGrid === void 0 ? void 0 : _curGrid[colIdx];
4243
+ if (!neighbour && elementToCopy) plannerIdsToFill.push(elementToCopy);else if (elementToCopy) existingPlannerIds.push(elementToCopy);
4244
+ }
4245
+ // if there is nothing to fill we copy everyting
4246
+ return {
4247
+ elements: plannerIdsToFill.length == 0 ? existingPlannerIds : plannerIdsToFill,
4248
+ backside: curPos.backside
4249
+ };
4250
+ }
4251
+
4130
4252
  /**
4131
4253
  * Returns all Elements that are under the specified element
4132
4254
  * AAAE
@@ -4185,50 +4307,63 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4185
4307
  }
4186
4308
  }, {
4187
4309
  key: "prepareGridForColCopy",
4188
- value: function prepareGridForColCopy(elementId, copyIndex) {
4189
- if (copyIndex.y > 0) return;
4310
+ value: function prepareGridForColCopy(elementId, relativeCopyIndex) {
4311
+ var _this$frontGrid;
4312
+ if (relativeCopyIndex.y > 0) return;
4190
4313
  var elementToCopyPos = this.getCellsInGridByElementId(elementId);
4191
- this.plannerElements.get(elementId);
4192
- //Kopiere das Grid nach rechts abhängig von der Breite des aktuellen Elementes
4193
- //now correct all indices in all cells:
4194
-
4195
- var copyStartIndex = 0;
4196
- if (copyIndex.x > 0) copyStartIndex = elementToCopyPos.endColIndex + 1;else if (copyIndex.x < 0) copyStartIndex = elementToCopyPos.startColIndex;
4197
- var copyIndexCount = 1 + (elementToCopyPos.endColIndex - elementToCopyPos.startColIndex);
4198
- var allUsedCellsFrontGrid = this.getAllUsedCellsInGrid(false);
4199
- this.frontGrid = new Array();
4200
- for (var i = 0; i < allUsedCellsFrontGrid.length; i++) {
4201
- var curCellFrontGrid = allUsedCellsFrontGrid[i];
4202
- if (curCellFrontGrid.index.x >= copyStartIndex) {
4203
- curCellFrontGrid.index.x += copyIndexCount;
4204
- }
4205
- if (!this.frontGrid[curCellFrontGrid.index.x]) {
4206
- this.frontGrid[curCellFrontGrid.index.x] = [];
4207
- }
4208
- this.frontGrid[curCellFrontGrid.index.x][curCellFrontGrid.index.y] = curCellFrontGrid;
4209
- }
4210
- //Init empty cols
4211
- for (var i = copyStartIndex; i < copyStartIndex + copyIndexCount; i++) {
4212
- if (!this.frontGrid[i]) this.frontGrid[i] = [];
4213
- }
4214
- if (this.hasActiveBackside) {
4215
- var allUsedCellsBackGrid = this.getAllUsedCellsInGrid(true);
4216
- this.backGrid = new Array();
4217
- for (var i = 0; i < allUsedCellsBackGrid.length; i++) {
4218
- var curCellBackGrid = allUsedCellsBackGrid[i];
4219
- if (curCellBackGrid.index.x >= copyStartIndex) {
4220
- curCellBackGrid.index.x += copyIndexCount;
4314
+ var copyDirectionIsRight = relativeCopyIndex.x > 0;
4315
+ // We add the relativeCopyIndex only if positive otherwise the whole grid get's
4316
+ // shifted to the right bexause can`t got negative
4317
+ var absoluteCopyIndex = {
4318
+ x: elementToCopyPos.cells[0].index.x + relativeCopyIndex.x,
4319
+ y: elementToCopyPos.cells[0].index.y + relativeCopyIndex.y
4320
+ };
4321
+
4322
+ // check if the side we copy to is already blocked
4323
+ // if blocked and we copy to the left the grid get's shifted so the copy
4324
+ // get's the index of the copied
4325
+
4326
+ var isBlocked = (_this$frontGrid = this.frontGrid[elementToCopyPos.cells[0].index.x + relativeCopyIndex.x]) === null || _this$frontGrid === void 0 ? void 0 : _this$frontGrid[elementToCopyPos.cells[0].index.y];
4327
+ if (absoluteCopyIndex.x == -1 || isBlocked && !copyDirectionIsRight) absoluteCopyIndex.x -= relativeCopyIndex.x;
4328
+
4329
+ // new copy logic fill up like this:
4330
+ // [][] -> | [][][]
4331
+ // [][] | [][][]
4332
+ // [][][] | [][][]
4333
+ // not like this (old logic)
4334
+ // [][] -> | [][][]
4335
+ // [][] | [][][]
4336
+ // [][][] | [][][][]
4337
+
4338
+ function moveGrid(plannedCells) {
4339
+ var grid = new Array();
4340
+ var rightNeighbourOfCopy = plannedCells.find(function (c) {
4341
+ return c.index.x == (copyDirectionIsRight ? absoluteCopyIndex.x : absoluteCopyIndex.x + 1) && c.index.y == absoluteCopyIndex.y;
4342
+ });
4343
+ var leftNeighbourOfCopy = plannedCells.find(function (c) {
4344
+ return c.index.x == (!copyDirectionIsRight ? absoluteCopyIndex.x : absoluteCopyIndex.x - 1) && c.index.y == absoluteCopyIndex.y;
4345
+ });
4346
+ plannedCells.forEach(function (cell) {
4347
+ // if i planned to -1 or absolute corrected 0 all the others get moved
4348
+ // if we the copied element does not have a neighbour we can just fill
4349
+
4350
+ //if (copyDirectionIsRight && cell.index.x >= absoluteCopyIndex) {}
4351
+ if (cell.index.x >= absoluteCopyIndex.x && (copyDirectionIsRight && rightNeighbourOfCopy || !copyDirectionIsRight && leftNeighbourOfCopy || absoluteCopyIndex.x == -1)) cell.index.x += 1;
4352
+ if (!grid[cell.index.x]) {
4353
+ grid[cell.index.x] = [];
4221
4354
  }
4222
- if (!this.backGrid[curCellBackGrid.index.x]) {
4223
- this.backGrid[curCellBackGrid.index.x] = [];
4355
+ if (!grid[cell.index.x][cell.index.y]) {
4356
+ grid[cell.index.x][cell.index.y] = cell;
4224
4357
  }
4225
- this.backGrid[curCellBackGrid.index.x][curCellBackGrid.index.y] = curCellBackGrid;
4226
- }
4227
-
4358
+ });
4359
+ return grid;
4360
+ }
4361
+ this.frontGrid = moveGrid(this.getAllUsedCellsInGrid(false));
4362
+ if (!this.frontGrid[absoluteCopyIndex.x]) this.frontGrid[absoluteCopyIndex.x] = [];
4363
+ if (this.hasActiveBackside) {
4364
+ this.backGrid = moveGrid(this.getAllUsedCellsInGrid(true));
4228
4365
  //Init empty cols
4229
- for (var i = copyStartIndex; i < copyStartIndex + copyIndexCount; i++) {
4230
- if (!this.backGrid[i]) this.backGrid[i] = [];
4231
- }
4366
+ if (!this.backGrid[absoluteCopyIndex.x]) this.backGrid[absoluteCopyIndex.y] = [];
4232
4367
  }
4233
4368
  }
4234
4369
  }, {
@@ -4287,7 +4422,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4287
4422
  }
4288
4423
 
4289
4424
  /**
4290
- * This function deletes an Element from the grid.
4425
+ * This function deletes an Element from the grid.ShaderMaterial
4291
4426
  * If backsideModule is active, than the oppsite Element is deleted as well
4292
4427
  * If the boxPlanner_backside switch deletion type is set, do not delete the opposite element
4293
4428
  * If the last element in col was deleted, do delete whole col.
@@ -4361,18 +4496,18 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4361
4496
  }
4362
4497
  for (var i = 0; i < this.backGrid.length; i++) {
4363
4498
  for (var j = 0; j < this.backGrid[i].length; j++) {
4364
- var _cell4 = this.backGrid[i][j];
4365
- if (allCheckedElementIds.indexOf(_cell4.plannerElementId) == -1) {
4366
- var _element2 = this.plannerElements.get(_cell4.plannerElementId);
4367
- allCheckedElementIds.push(_cell4.plannerElementId);
4499
+ var _cell5 = this.backGrid[i][j];
4500
+ if (allCheckedElementIds.indexOf(_cell5.plannerElementId) == -1) {
4501
+ var _element2 = this.plannerElements.get(_cell5.plannerElementId);
4502
+ allCheckedElementIds.push(_cell5.plannerElementId);
4368
4503
  var cellFrontGrid = this.frontGrid[i][j];
4369
4504
  var elementFrontGrid = this.plannerElements.get(cellFrontGrid.plannerElementId);
4370
4505
  if (elementFrontGrid) {
4371
4506
  var targetDPFrontGrid = elementFrontGrid === null || elementFrontGrid === void 0 ? void 0 : elementFrontGrid.getDockingPointById('AVO_AVO_2_IL');
4372
4507
  if (!targetDPFrontGrid) LOG$1.error(new DivaUtils.DivaError('Error Loading DockingPoint AVO_2 for plannerElement'));else if (_element2) PlannerHandler2D.dockingPointHandlerInst.tryDockElementToDP(_element2, elementFrontGrid, targetDPFrontGrid);
4373
4508
  }
4374
- var _topNeighbors = this.getNeighborElements(_cell4.plannerElementId, 'TOP');
4375
- var _rightNeighbors = this.getNeighborElements(_cell4.plannerElementId, 'RIGHT');
4509
+ var _topNeighbors = this.getNeighborElements(_cell5.plannerElementId, 'TOP');
4510
+ var _rightNeighbors = this.getNeighborElements(_cell5.plannerElementId, 'RIGHT');
4376
4511
  for (var n = 0; n < _topNeighbors.length; n++) {
4377
4512
  PlannerHandler2D.dockingPointHandlerInst.tryDockElement(_element2, 'AVO', [_topNeighbors[n]]);
4378
4513
  }
@@ -5425,7 +5560,7 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5425
5560
  allElementsToCopy = result.elements;
5426
5561
  result.backside;
5427
5562
  } else {
5428
- var _result = this.boxPlannerGrid.getAllElementsDown(elementId);
5563
+ var _result = this.boxPlannerGrid.getAllElementsToFillUp(elementId, copyInfo.copyIndex.x > 0 ? 'RIGHT' : 'LEFT');
5429
5564
  allElementsToCopy = allElementsToCopy.concat(_result.elements);
5430
5565
  _result.backside;
5431
5566
  }
@@ -5,9 +5,9 @@ var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
5
5
  var _createClass = require('@babel/runtime/helpers/createClass');
6
6
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
7
7
  var _regeneratorRuntime = require('@babel/runtime/regenerator');
8
- var index = require('./index-a94c390e.js');
8
+ var index = require('./index-9720b39c.js');
9
9
  var DivaUtils = require('@crystaldesign/diva-utils');
10
- var PlannerHandler2D = require('./PlannerHandler2D-16bf8df8.js');
10
+ var PlannerHandler2D = require('./PlannerHandler2D-787ed37c.js');
11
11
  require('@babel/runtime/helpers/slicedToArray');
12
12
  require('@babel/runtime/helpers/objectWithoutProperties');
13
13
  require('@babel/runtime/helpers/toConsumableArray');
@@ -3,7 +3,7 @@
3
3
  var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
4
4
  var _createClass = require('@babel/runtime/helpers/createClass');
5
5
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
- require('./index-a94c390e.js');
6
+ require('./index-9720b39c.js');
7
7
  var DivaUtils = require('@crystaldesign/diva-utils');
8
8
  require('@babel/runtime/helpers/slicedToArray');
9
9
  require('@babel/runtime/helpers/asyncToGenerator');
@@ -5,7 +5,7 @@ var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
5
5
  var _createClass = require('@babel/runtime/helpers/createClass');
6
6
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
7
7
  var _regeneratorRuntime = require('@babel/runtime/regenerator');
8
- var index = require('./index-a94c390e.js');
8
+ var index = require('./index-9720b39c.js');
9
9
  var DivaUtils = require('@crystaldesign/diva-utils');
10
10
  var signalr = require('@microsoft/signalr');
11
11
  var io = require('socket.io-client');
@@ -2,7 +2,7 @@
2
2
 
3
3
  var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
4
4
  var _createClass = require('@babel/runtime/helpers/createClass');
5
- require('./index-a94c390e.js');
5
+ require('./index-9720b39c.js');
6
6
  require('@babel/runtime/helpers/slicedToArray');
7
7
  require('@babel/runtime/helpers/asyncToGenerator');
8
8
  require('@babel/runtime/helpers/defineProperty');
@@ -2,7 +2,7 @@
2
2
 
3
3
  var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
4
4
  var _createClass = require('@babel/runtime/helpers/createClass');
5
- var index = require('./index-a94c390e.js');
5
+ var index = require('./index-9720b39c.js');
6
6
  var basketModel = require('@crystaldesign/basket-model');
7
7
  var DivaUtils = require('@crystaldesign/diva-utils');
8
8
  require('@babel/runtime/helpers/slicedToArray');
@@ -5,7 +5,7 @@ var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
5
5
  var _createClass = require('@babel/runtime/helpers/createClass');
6
6
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
7
7
  var _regeneratorRuntime = require('@babel/runtime/regenerator');
8
- var index = require('./index-a94c390e.js');
8
+ var index = require('./index-9720b39c.js');
9
9
  var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
10
10
  var fabric = require('fabric');
11
11
  var DivaUtils = require('@crystaldesign/diva-utils');
@@ -2064,7 +2064,9 @@ var PlannerHandler2D = /*#__PURE__*/function () {
2064
2064
  dockingPointHandlerInst.initDockingPointsFromSvg(plannerElement, this.svgUtils.getDPsInSVG(svgXml), minBorderSVG, plannerconfig);
2065
2065
  var svgXmlOLT = this.svgUtils.removeOLFFromSvg(svgXml);
2066
2066
  var oltPoints = this.svgUtils.getPointOfPoligonById(svgXml, 'OLT');
2067
- if (oltPoints === undefined) throw new Error('no olt fount in svg');
2067
+ if (!(oltPoints !== null && oltPoints !== void 0 && oltPoints.length)) {
2068
+ LOG.error(new DivaUtils.DivaError('no olt fount in svg for element' + plannerElement.ArticleCodex + ' with id ' + plannerElement.getElementId()));
2069
+ }
2068
2070
  plannerElement.OLTPolygon = oltPoints;
2069
2071
  var olf = this.svgUtils.getPointOfPoligonById(svgXml, 'OLF');
2070
2072
  if (olf !== null && olf !== void 0 && olf.length) {
@@ -3,7 +3,7 @@
3
3
  var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
4
4
  var _createClass = require('@babel/runtime/helpers/createClass');
5
5
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
- var index = require('./index-a94c390e.js');
6
+ var index = require('./index-9720b39c.js');
7
7
  var DivaUtils = require('@crystaldesign/diva-utils');
8
8
  require('@babel/runtime/helpers/slicedToArray');
9
9
  require('@babel/runtime/helpers/asyncToGenerator');
@@ -6,7 +6,7 @@ var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
6
6
  var _createClass = require('@babel/runtime/helpers/createClass');
7
7
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
8
8
  var _regeneratorRuntime = require('@babel/runtime/regenerator');
9
- var index = require('./index-a94c390e.js');
9
+ var index = require('./index-9720b39c.js');
10
10
  var DivaUtils = require('@crystaldesign/diva-utils');
11
11
  require('@babel/runtime/helpers/slicedToArray');
12
12
  require('@babel/runtime/helpers/objectWithoutProperties');
@@ -2,7 +2,7 @@
2
2
 
3
3
  var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
4
4
  var _createClass = require('@babel/runtime/helpers/createClass');
5
- require('./index-a94c390e.js');
5
+ require('./index-9720b39c.js');
6
6
  require('@babel/runtime/helpers/slicedToArray');
7
7
  require('@babel/runtime/helpers/asyncToGenerator');
8
8
  require('@babel/runtime/helpers/defineProperty');