@crystaldesign/web-planner-logic 25.13.0-beta.2 → 25.13.0-beta.20

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 (81) hide show
  1. package/build/cjs/{DivaBoxPlanner-f865ff9c.js → DivaBoxPlanner-75a61059.js} +202 -81
  2. package/build/cjs/{DivaStandardPlanner-f44f3a03.js → DivaStandardPlanner-5f5ed247.js} +2 -2
  3. package/build/cjs/{DoorPlanner-17dc699e.js → DoorPlanner-dd1c557d.js} +1 -1
  4. package/build/cjs/{Host3DSignalR-3843e7c8.js → Host3DSignalR-cccad487.js} +1 -1
  5. package/build/cjs/{LiviqueWWSHandler-79580044.js → LiviqueWWSHandler-1e672952.js} +1 -1
  6. package/build/cjs/{PfisterWWSHandler-edc45ac1.js → PfisterWWSHandler-a28d0dd2.js} +1 -1
  7. package/build/cjs/{PlannerHandler2D-16bf8df8.js → PlannerHandler2D-9e7dc8bc.js} +4 -2
  8. package/build/cjs/{SeriousBasketHandler-fd41e561.js → SeriousBasketHandler-6bb9b017.js} +1 -1
  9. package/build/cjs/{ShelfPlanner-20d69956.js → ShelfPlanner-20b550cc.js} +1 -1
  10. package/build/cjs/{StandardWWSHandler-28bf51c2.js → StandardWWSHandler-28a4140f.js} +1 -1
  11. package/build/cjs/{index-a94c390e.js → index-a610c6f1.js} +598 -453
  12. package/build/cjs/index.js +1 -1
  13. package/build/esm/{DivaBoxPlanner-68462b01.js → DivaBoxPlanner-103397a8.js} +202 -81
  14. package/build/esm/{DivaStandardPlanner-42600bb1.js → DivaStandardPlanner-a49a5218.js} +2 -2
  15. package/build/esm/{DoorPlanner-596bb4c5.js → DoorPlanner-eb6e9938.js} +1 -1
  16. package/build/esm/{Host3DSignalR-a339ed56.js → Host3DSignalR-29eac2c9.js} +1 -1
  17. package/build/esm/{LiviqueWWSHandler-92b609cb.js → LiviqueWWSHandler-61f97929.js} +1 -1
  18. package/build/esm/{PfisterWWSHandler-baae60f9.js → PfisterWWSHandler-3030f411.js} +1 -1
  19. package/build/esm/{PlannerHandler2D-36cd084c.js → PlannerHandler2D-9ea09804.js} +4 -2
  20. package/build/esm/{SeriousBasketHandler-b8bc14db.js → SeriousBasketHandler-5cb47e31.js} +1 -1
  21. package/build/esm/{ShelfPlanner-ed43c290.js → ShelfPlanner-c2298229.js} +1 -1
  22. package/build/esm/{StandardWWSHandler-14b103ac.js → StandardWWSHandler-b3473a6c.js} +1 -1
  23. package/build/esm/{index-d67e1a1c.js → index-d49f4d05.js} +598 -453
  24. package/build/esm/index.js +1 -1
  25. package/build/types/web-planner-logic/src/index.d.ts +1 -1
  26. package/build/types/web-planner-logic/src/index.d.ts.map +1 -1
  27. package/build/types/web-planner-logic/src/interface/AdditionalModelInfos.d.ts +19 -0
  28. package/build/types/web-planner-logic/src/interface/AdditionalModelInfos.d.ts.map +1 -1
  29. package/build/types/web-planner-logic/src/interface/Articles/AccessoireItemType.d.ts +1 -1
  30. package/build/types/web-planner-logic/src/interface/Articles/AccessoireItemType.d.ts.map +1 -1
  31. package/build/types/web-planner-logic/src/interface/Articles/CatalogArticleDataType.d.ts +6 -15
  32. package/build/types/web-planner-logic/src/interface/Articles/CatalogArticleDataType.d.ts.map +1 -1
  33. package/build/types/web-planner-logic/src/interface/Articles/CatalogPlannerArticleViewDataType.d.ts +1 -1
  34. package/build/types/web-planner-logic/src/interface/Articles/CatalogPlannerArticleViewDataType.d.ts.map +1 -1
  35. package/build/types/web-planner-logic/src/interface/CoreTypes/index.d.ts +4 -0
  36. package/build/types/web-planner-logic/src/interface/CoreTypes/index.d.ts.map +1 -1
  37. package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts +1 -1
  38. package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts.map +1 -1
  39. package/build/types/web-planner-logic/src/interface/OptionTypes/ArticleOptionDataTypes.d.ts +6 -0
  40. package/build/types/web-planner-logic/src/interface/OptionTypes/ArticleOptionDataTypes.d.ts.map +1 -1
  41. package/build/types/web-planner-logic/src/interface/OptionTypes/ArticleOptionValueView.d.ts +1 -1
  42. package/build/types/web-planner-logic/src/interface/OptionTypes/ArticleOptionValueView.d.ts.map +1 -1
  43. package/build/types/web-planner-logic/src/interface/OptionTypes/CatalogOptionDataTypes.d.ts +27 -19
  44. package/build/types/web-planner-logic/src/interface/OptionTypes/CatalogOptionDataTypes.d.ts.map +1 -1
  45. package/build/types/web-planner-logic/src/interface/ShelfPlanner/ShelfAccessoiresView.d.ts +1 -1
  46. package/build/types/web-planner-logic/src/interface/ShelfPlanner/ShelfAccessoiresView.d.ts.map +1 -1
  47. package/build/types/web-planner-logic/src/interface/ViewTypes/index.d.ts +7 -0
  48. package/build/types/web-planner-logic/src/interface/ViewTypes/index.d.ts.map +1 -1
  49. package/build/types/web-planner-logic/src/logic/Article/DivaArticle.d.ts.map +1 -1
  50. package/build/types/web-planner-logic/src/logic/Article/Engine/IDMArticleEngine.d.ts.map +1 -1
  51. package/build/types/web-planner-logic/src/logic/ConfigTree/DivaConfigTreeHandler.d.ts.map +1 -1
  52. package/build/types/web-planner-logic/src/logic/DivaApiHandler.d.ts.map +1 -1
  53. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts +2 -2
  54. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts.map +1 -1
  55. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/BoxPlannerGrid.d.ts +18 -3
  56. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/BoxPlannerGrid.d.ts.map +1 -1
  57. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/ConstructionRulesHandler.d.ts +2 -0
  58. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/ConstructionRulesHandler.d.ts.map +1 -1
  59. package/build/types/web-planner-logic/src/logic/Planner/DivaPlannerHandler.d.ts.map +1 -1
  60. package/build/types/web-planner-logic/src/logic/Planner/PlannerUtils/PlannerHandler2D.d.ts.map +1 -1
  61. package/build/types/web-planner-logic/src/logic/Set/DivaSetHandler.d.ts +3 -1
  62. package/build/types/web-planner-logic/src/logic/Set/DivaSetHandler.d.ts.map +1 -1
  63. package/build/types/web-planner-logic/src/model/Articles/Article/CatalogArticleData.d.ts +3 -13
  64. package/build/types/web-planner-logic/src/model/Articles/Article/CatalogArticleData.d.ts.map +1 -1
  65. package/build/types/web-planner-logic/src/model/Articles/Article/DivaCatalogArticle.d.ts +3 -3
  66. package/build/types/web-planner-logic/src/model/Articles/Article/DivaCatalogArticle.d.ts.map +1 -1
  67. package/build/types/web-planner-logic/src/model/Articles/Article/IDMCatalogArticle.d.ts +3 -3
  68. package/build/types/web-planner-logic/src/model/Articles/Article/IDMCatalogArticle.d.ts.map +1 -1
  69. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts +2 -1
  70. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts.map +1 -1
  71. package/build/types/web-planner-logic/src/model/Catalog/DivaCatalogData.d.ts +6 -1
  72. package/build/types/web-planner-logic/src/model/Catalog/DivaCatalogData.d.ts.map +1 -1
  73. package/build/types/web-planner-logic/src/model/Options/ArticleOptionData.d.ts +2 -1
  74. package/build/types/web-planner-logic/src/model/Options/ArticleOptionData.d.ts.map +1 -1
  75. package/build/types/web-planner-logic/src/model/Options/ArticleOptionValueData.d.ts +3 -9
  76. package/build/types/web-planner-logic/src/model/Options/ArticleOptionValueData.d.ts.map +1 -1
  77. package/build/types/web-planner-logic/src/model/Options/CatalogOptionData.d.ts +6 -3
  78. package/build/types/web-planner-logic/src/model/Options/CatalogOptionData.d.ts.map +1 -1
  79. package/build/types/web-planner-logic/src/model/Options/CatalogOptionValueData.d.ts +6 -4
  80. package/build/types/web-planner-logic/src/model/Options/CatalogOptionValueData.d.ts.map +1 -1
  81. 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-a610c6f1.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-9e7dc8bc.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
  }
@@ -4127,6 +4207,43 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4127
4207
  };
4128
4208
  }
4129
4209
 
4210
+ /**
4211
+ * Get all the Elements need to fill up for the copy of Element x fxe:
4212
+ *
4213
+ * [4] ->
4214
+ * [3]
4215
+ * [2]
4216
+ * [0][1]
4217
+ *
4218
+ * returns element 4, 3 and 2 because those are needed to copy in order
4219
+ * for the copy of element 4 to not float
4220
+ */
4221
+ }, {
4222
+ key: "getAllElementsToFillUp",
4223
+ value: function getAllElementsToFillUp(elementId, dir) {
4224
+ var curPos = this.getCellsInGridByElementId(elementId);
4225
+ if (curPos.startRowIndex == 0) return {
4226
+ elements: [],
4227
+ backside: false
4228
+ };
4229
+ var curGrid = curPos.backside ? this.backGrid : this.frontGrid;
4230
+ var resultPlannerIds = [];
4231
+ for (var x = curPos.startColIndex; x <= curPos.endColIndex; x++) {
4232
+ for (var y = curPos.startRowIndex--; y >= 0; y--) {
4233
+ var cell = curGrid[x][y];
4234
+ var d = dir == 'RIGHT' ? +1 : -1;
4235
+ var sideExists = curGrid[x + d] && curGrid[x + d][y];
4236
+ if (cell && !sideExists && resultPlannerIds.indexOf(cell.plannerElementId) == -1) {
4237
+ resultPlannerIds.push(cell.plannerElementId);
4238
+ }
4239
+ }
4240
+ }
4241
+ return {
4242
+ elements: resultPlannerIds,
4243
+ backside: curPos.backside
4244
+ };
4245
+ }
4246
+
4130
4247
  /**
4131
4248
  * Returns all Elements that are under the specified element
4132
4249
  * AAAE
@@ -4185,50 +4302,54 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4185
4302
  }
4186
4303
  }, {
4187
4304
  key: "prepareGridForColCopy",
4188
- value: function prepareGridForColCopy(elementId, copyIndex) {
4189
- if (copyIndex.y > 0) return;
4305
+ value: function prepareGridForColCopy(elementId, relativeCopyIndex) {
4306
+ if (relativeCopyIndex.y > 0) return;
4190
4307
  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;
4308
+ var copyDirectionIsRight = relativeCopyIndex.x > 0;
4309
+ // We add the relativeCopyIndex only if positive otherwise the whole grid get's
4310
+ // shifted to the right bexause can`t got negative
4311
+ var absoluteCopyIndex = {
4312
+ x: elementToCopyPos.cells[0].index.x,
4313
+ y: elementToCopyPos.cells[0].index.y + relativeCopyIndex.y
4314
+ };
4315
+ if (relativeCopyIndex.x > 0) absoluteCopyIndex.x += relativeCopyIndex.x;
4316
+
4317
+ // new copy logic fill up like this:
4318
+ // [][] -> | [][][]
4319
+ // [][] | [][][]
4320
+ // [][][] | [][][]
4321
+ // not like this (old logic)
4322
+ // [][] -> | [][][]
4323
+ // [][] | [][][]
4324
+ // [][][] | [][][][]
4325
+
4326
+ function moveGrid(plannedCells) {
4327
+ var grid = new Array();
4328
+ var rightNeighbourOfCopy = plannedCells.find(function (c) {
4329
+ return c.index.x == (copyDirectionIsRight ? absoluteCopyIndex.x : absoluteCopyIndex.x + 1) && c.index.y == absoluteCopyIndex.y;
4330
+ });
4331
+ var leftNeighbourOfCopy = plannedCells.find(function (c) {
4332
+ return c.index.x == (!copyDirectionIsRight ? absoluteCopyIndex.x : absoluteCopyIndex.x - 1) && c.index.y == absoluteCopyIndex.y;
4333
+ });
4334
+ plannedCells.forEach(function (cell) {
4335
+ // if i planned to -1 or absolute corrected 0 all the others get moved
4336
+ // if we the copied element does not have a neighbour we can just fill
4337
+ if (cell.index.x >= absoluteCopyIndex.x && (copyDirectionIsRight && rightNeighbourOfCopy || !copyDirectionIsRight && leftNeighbourOfCopy || absoluteCopyIndex.x == 0)) cell.index.x += 1;
4338
+ if (!grid[cell.index.x]) {
4339
+ grid[cell.index.x] = [];
4221
4340
  }
4222
- if (!this.backGrid[curCellBackGrid.index.x]) {
4223
- this.backGrid[curCellBackGrid.index.x] = [];
4341
+ if (!grid[cell.index.x][cell.index.y]) {
4342
+ grid[cell.index.x][cell.index.y] = cell;
4224
4343
  }
4225
- this.backGrid[curCellBackGrid.index.x][curCellBackGrid.index.y] = curCellBackGrid;
4226
- }
4227
-
4344
+ });
4345
+ return grid;
4346
+ }
4347
+ this.frontGrid = moveGrid(this.getAllUsedCellsInGrid(false));
4348
+ if (!this.frontGrid[absoluteCopyIndex.x]) this.frontGrid[absoluteCopyIndex.x] = [];
4349
+ if (this.hasActiveBackside) {
4350
+ this.backGrid = moveGrid(this.getAllUsedCellsInGrid(true));
4228
4351
  //Init empty cols
4229
- for (var i = copyStartIndex; i < copyStartIndex + copyIndexCount; i++) {
4230
- if (!this.backGrid[i]) this.backGrid[i] = [];
4231
- }
4352
+ if (!this.backGrid[absoluteCopyIndex.x]) this.backGrid[absoluteCopyIndex.y] = [];
4232
4353
  }
4233
4354
  }
4234
4355
  }, {
@@ -4287,7 +4408,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4287
4408
  }
4288
4409
 
4289
4410
  /**
4290
- * This function deletes an Element from the grid.
4411
+ * This function deletes an Element from the grid.ShaderMaterial
4291
4412
  * If backsideModule is active, than the oppsite Element is deleted as well
4292
4413
  * If the boxPlanner_backside switch deletion type is set, do not delete the opposite element
4293
4414
  * If the last element in col was deleted, do delete whole col.
@@ -4361,18 +4482,18 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4361
4482
  }
4362
4483
  for (var i = 0; i < this.backGrid.length; i++) {
4363
4484
  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);
4485
+ var _cell5 = this.backGrid[i][j];
4486
+ if (allCheckedElementIds.indexOf(_cell5.plannerElementId) == -1) {
4487
+ var _element2 = this.plannerElements.get(_cell5.plannerElementId);
4488
+ allCheckedElementIds.push(_cell5.plannerElementId);
4368
4489
  var cellFrontGrid = this.frontGrid[i][j];
4369
4490
  var elementFrontGrid = this.plannerElements.get(cellFrontGrid.plannerElementId);
4370
4491
  if (elementFrontGrid) {
4371
4492
  var targetDPFrontGrid = elementFrontGrid === null || elementFrontGrid === void 0 ? void 0 : elementFrontGrid.getDockingPointById('AVO_AVO_2_IL');
4372
4493
  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
4494
  }
4374
- var _topNeighbors = this.getNeighborElements(_cell4.plannerElementId, 'TOP');
4375
- var _rightNeighbors = this.getNeighborElements(_cell4.plannerElementId, 'RIGHT');
4495
+ var _topNeighbors = this.getNeighborElements(_cell5.plannerElementId, 'TOP');
4496
+ var _rightNeighbors = this.getNeighborElements(_cell5.plannerElementId, 'RIGHT');
4376
4497
  for (var n = 0; n < _topNeighbors.length; n++) {
4377
4498
  PlannerHandler2D.dockingPointHandlerInst.tryDockElement(_element2, 'AVO', [_topNeighbors[n]]);
4378
4499
  }
@@ -5425,7 +5546,7 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5425
5546
  allElementsToCopy = result.elements;
5426
5547
  result.backside;
5427
5548
  } else {
5428
- var _result = this.boxPlannerGrid.getAllElementsDown(elementId);
5549
+ var _result = this.boxPlannerGrid.getAllElementsToFillUp(elementId, copyInfo.copyIndex.x > 0 ? 'RIGHT' : 'LEFT');
5429
5550
  allElementsToCopy = allElementsToCopy.concat(_result.elements);
5430
5551
  _result.backside;
5431
5552
  }
@@ -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-a610c6f1.js');
9
9
  var DivaUtils = require('@crystaldesign/diva-utils');
10
- var PlannerHandler2D = require('./PlannerHandler2D-16bf8df8.js');
10
+ var PlannerHandler2D = require('./PlannerHandler2D-9e7dc8bc.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-a610c6f1.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-a610c6f1.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-a610c6f1.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-a610c6f1.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-a610c6f1.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-a610c6f1.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-a610c6f1.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-a610c6f1.js');
6
6
  require('@babel/runtime/helpers/slicedToArray');
7
7
  require('@babel/runtime/helpers/asyncToGenerator');
8
8
  require('@babel/runtime/helpers/defineProperty');