@crystaldesign/web-planner-logic 25.13.0-beta.9 → 25.14.0-beta.1

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 (112) hide show
  1. package/build/cjs/{DivaBoxPlanner-9dc63e6c.js → DivaBoxPlanner-1aa00c05.js} +949 -632
  2. package/build/cjs/{DivaStandardPlanner-edc8adbb.js → DivaStandardPlanner-6f7f29c2.js} +101 -74
  3. package/build/cjs/{DoorPlanner-4184aa93.js → DoorPlanner-cac35b21.js} +1 -1
  4. package/build/cjs/{Host3DSignalR-3e4afb1c.js → Host3DSignalR-99bf15f7.js} +19 -1
  5. package/build/cjs/{LiviqueWWSHandler-566296fe.js → LiviqueWWSHandler-96b45f30.js} +1 -1
  6. package/build/cjs/{PfisterWWSHandler-c131cf9d.js → PfisterWWSHandler-ca57914a.js} +1 -1
  7. package/build/cjs/{PlannerHandler2D-cdf785a8.js → PlannerHandler2D-c2f424fb.js} +1 -1
  8. package/build/cjs/{SeriousBasketHandler-62a42abd.js → SeriousBasketHandler-3da471b1.js} +1 -1
  9. package/build/cjs/{ShelfPlanner-5d155708.js → ShelfPlanner-0e604bef.js} +1 -1
  10. package/build/cjs/{StandardWWSHandler-e33be010.js → StandardWWSHandler-7830aef9.js} +1 -1
  11. package/build/cjs/{index-589e2f4b.js → index-66e9bbd7.js} +2267 -1352
  12. package/build/cjs/index.js +3 -1
  13. package/build/esm/{DivaBoxPlanner-091c8b09.js → DivaBoxPlanner-8c163d35.js} +949 -632
  14. package/build/esm/{DivaStandardPlanner-8c6fe69d.js → DivaStandardPlanner-d89575a9.js} +101 -74
  15. package/build/esm/{DoorPlanner-b7931e1b.js → DoorPlanner-a5b01dbb.js} +1 -1
  16. package/build/esm/{Host3DSignalR-f59bbfff.js → Host3DSignalR-45d8f4c4.js} +19 -1
  17. package/build/esm/{LiviqueWWSHandler-17487162.js → LiviqueWWSHandler-ef620655.js} +1 -1
  18. package/build/esm/{PfisterWWSHandler-38fd3e0b.js → PfisterWWSHandler-bfd319db.js} +1 -1
  19. package/build/esm/{PlannerHandler2D-80d37ff1.js → PlannerHandler2D-af50a706.js} +1 -1
  20. package/build/esm/{SeriousBasketHandler-2843e656.js → SeriousBasketHandler-40a88689.js} +1 -1
  21. package/build/esm/{ShelfPlanner-d144ac1f.js → ShelfPlanner-e9996b84.js} +1 -1
  22. package/build/esm/{StandardWWSHandler-c87284af.js → StandardWWSHandler-f6e8e368.js} +1 -1
  23. package/build/esm/{index-f875e861.js → index-f5485f21.js} +2266 -1353
  24. package/build/esm/index.js +1 -1
  25. package/build/types/web-planner-logic/src/index.d.ts +4 -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 +82 -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/API/Checkout.d.ts +4 -1
  30. package/build/types/web-planner-logic/src/interface/API/Checkout.d.ts.map +1 -1
  31. package/build/types/web-planner-logic/src/interface/API/ViewConfigDataType.d.ts +2 -0
  32. package/build/types/web-planner-logic/src/interface/API/ViewConfigDataType.d.ts.map +1 -1
  33. package/build/types/web-planner-logic/src/interface/AdditionalModelInfos.d.ts +19 -0
  34. package/build/types/web-planner-logic/src/interface/AdditionalModelInfos.d.ts.map +1 -1
  35. package/build/types/web-planner-logic/src/interface/Articles/AccessoireItemType.d.ts +1 -1
  36. package/build/types/web-planner-logic/src/interface/Articles/AccessoireItemType.d.ts.map +1 -1
  37. package/build/types/web-planner-logic/src/interface/Articles/CatalogArticleDataType.d.ts +6 -15
  38. package/build/types/web-planner-logic/src/interface/Articles/CatalogArticleDataType.d.ts.map +1 -1
  39. package/build/types/web-planner-logic/src/interface/Articles/CatalogPlannerArticleViewDataType.d.ts +1 -1
  40. package/build/types/web-planner-logic/src/interface/Articles/CatalogPlannerArticleViewDataType.d.ts.map +1 -1
  41. package/build/types/web-planner-logic/src/interface/CoreTypes/index.d.ts +2 -0
  42. package/build/types/web-planner-logic/src/interface/CoreTypes/index.d.ts.map +1 -1
  43. package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts +2 -1
  44. package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts.map +1 -1
  45. package/build/types/web-planner-logic/src/interface/FunctionTypes/index.d.ts +1 -1
  46. package/build/types/web-planner-logic/src/interface/FunctionTypes/index.d.ts.map +1 -1
  47. package/build/types/web-planner-logic/src/interface/OptionTypes/ArticleOptionDataTypes.d.ts +6 -0
  48. package/build/types/web-planner-logic/src/interface/OptionTypes/ArticleOptionDataTypes.d.ts.map +1 -1
  49. package/build/types/web-planner-logic/src/interface/OptionTypes/ArticleOptionValueView.d.ts +1 -1
  50. package/build/types/web-planner-logic/src/interface/OptionTypes/ArticleOptionValueView.d.ts.map +1 -1
  51. package/build/types/web-planner-logic/src/interface/OptionTypes/CatalogOptionDataTypes.d.ts +26 -20
  52. package/build/types/web-planner-logic/src/interface/OptionTypes/CatalogOptionDataTypes.d.ts.map +1 -1
  53. package/build/types/web-planner-logic/src/interface/ShelfPlanner/ShelfAccessoiresView.d.ts +1 -1
  54. package/build/types/web-planner-logic/src/interface/ShelfPlanner/ShelfAccessoiresView.d.ts.map +1 -1
  55. package/build/types/web-planner-logic/src/interface/ViewTypes/index.d.ts +9 -0
  56. package/build/types/web-planner-logic/src/interface/ViewTypes/index.d.ts.map +1 -1
  57. package/build/types/web-planner-logic/src/interface/webPlannerParams/WebPlannerParamsType.d.ts +5 -0
  58. package/build/types/web-planner-logic/src/interface/webPlannerParams/WebPlannerParamsType.d.ts.map +1 -1
  59. package/build/types/web-planner-logic/src/logic/Article/DivaArticle.d.ts +2 -0
  60. package/build/types/web-planner-logic/src/logic/Article/DivaArticle.d.ts.map +1 -1
  61. package/build/types/web-planner-logic/src/logic/Article/Engine/IDMArticleEngine.d.ts.map +1 -1
  62. package/build/types/web-planner-logic/src/logic/DivaApiHandler.d.ts +32 -0
  63. package/build/types/web-planner-logic/src/logic/DivaApiHandler.d.ts.map +1 -1
  64. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts +48 -5
  65. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts.map +1 -1
  66. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/BoxPlannerGrid.d.ts +30 -6
  67. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/BoxPlannerGrid.d.ts.map +1 -1
  68. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/ConstructionRulesHandler.d.ts +3 -0
  69. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/ConstructionRulesHandler.d.ts.map +1 -1
  70. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/DivaBoxPlanner.d.ts +4 -0
  71. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/DivaBoxPlanner.d.ts.map +1 -1
  72. package/build/types/web-planner-logic/src/logic/Planner/DivaPlannerHandler.d.ts +12 -1
  73. package/build/types/web-planner-logic/src/logic/Planner/DivaPlannerHandler.d.ts.map +1 -1
  74. package/build/types/web-planner-logic/src/logic/Planner/DivaStandardPlanner.d.ts +1 -0
  75. package/build/types/web-planner-logic/src/logic/Planner/DivaStandardPlanner.d.ts.map +1 -1
  76. package/build/types/web-planner-logic/src/logic/Planner/Rendering/DivaMediaServiceHandler.d.ts +10 -0
  77. package/build/types/web-planner-logic/src/logic/Planner/Rendering/DivaMediaServiceHandler.d.ts.map +1 -1
  78. package/build/types/web-planner-logic/src/logic/Planner/Rendering/Host3DSignalR.d.ts.map +1 -1
  79. package/build/types/web-planner-logic/src/logic/Planner/Rendering/PlannerHandler3D.d.ts.map +1 -1
  80. package/build/types/web-planner-logic/src/logic/Planner/Rendering/Rendering.d.ts.map +1 -1
  81. package/build/types/web-planner-logic/src/logic/Set/DivaSet.d.ts +8 -0
  82. package/build/types/web-planner-logic/src/logic/Set/DivaSet.d.ts.map +1 -1
  83. package/build/types/web-planner-logic/src/logic/Set/DivaSetHandler.d.ts +17 -1
  84. package/build/types/web-planner-logic/src/logic/Set/DivaSetHandler.d.ts.map +1 -1
  85. package/build/types/web-planner-logic/src/model/Articles/Article/CatalogArticleData.d.ts +3 -13
  86. package/build/types/web-planner-logic/src/model/Articles/Article/CatalogArticleData.d.ts.map +1 -1
  87. package/build/types/web-planner-logic/src/model/Articles/Article/DivaCatalogArticle.d.ts +3 -3
  88. package/build/types/web-planner-logic/src/model/Articles/Article/DivaCatalogArticle.d.ts.map +1 -1
  89. package/build/types/web-planner-logic/src/model/Articles/Article/IDMCatalogArticle.d.ts +3 -3
  90. package/build/types/web-planner-logic/src/model/Articles/Article/IDMCatalogArticle.d.ts.map +1 -1
  91. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts +3 -1
  92. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts.map +1 -1
  93. package/build/types/web-planner-logic/src/model/Catalog/DivaCatalogData.d.ts +6 -1
  94. package/build/types/web-planner-logic/src/model/Catalog/DivaCatalogData.d.ts.map +1 -1
  95. package/build/types/web-planner-logic/src/model/Options/ArticleOptionData.d.ts +2 -1
  96. package/build/types/web-planner-logic/src/model/Options/ArticleOptionData.d.ts.map +1 -1
  97. package/build/types/web-planner-logic/src/model/Options/ArticleOptionValueData.d.ts +3 -9
  98. package/build/types/web-planner-logic/src/model/Options/ArticleOptionValueData.d.ts.map +1 -1
  99. package/build/types/web-planner-logic/src/model/Options/CatalogOptionData.d.ts +5 -3
  100. package/build/types/web-planner-logic/src/model/Options/CatalogOptionData.d.ts.map +1 -1
  101. package/build/types/web-planner-logic/src/model/Options/CatalogOptionValueData.d.ts +6 -4
  102. package/build/types/web-planner-logic/src/model/Options/CatalogOptionValueData.d.ts.map +1 -1
  103. package/build/types/web-planner-logic/src/model/Planner/BoxPlannerData.d.ts +2 -1
  104. package/build/types/web-planner-logic/src/model/Planner/BoxPlannerData.d.ts.map +1 -1
  105. package/build/types/web-planner-logic/src/model/Planner/PlannerInteractionData.d.ts +7 -2
  106. package/build/types/web-planner-logic/src/model/Planner/PlannerInteractionData.d.ts.map +1 -1
  107. package/build/types/web-planner-logic/src/test/datas/environments/scripts/pfister-prod.d.ts.map +1 -1
  108. package/build/types/web-planner-logic/src/test/datas/environments/scripts/pfister-quality.d.ts.map +1 -1
  109. package/build/types/web-planner-logic/src/test/datas/environments/testing/pfister-dev.d.ts.map +1 -1
  110. package/build/types/web-planner-logic/src/test/datas/environments/testing/retail-dev.d.ts.map +1 -1
  111. package/build/types/web-planner-logic/src/test/datas/environments/testing/retail-test.d.ts.map +1 -1
  112. 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-589e2f4b.js');
8
+ var index = require('./index-66e9bbd7.js');
9
9
  var DivaUtils = require('@crystaldesign/diva-utils');
10
10
  var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
11
- var PlannerHandler2D = require('./PlannerHandler2D-cdf785a8.js');
11
+ var PlannerHandler2D = require('./PlannerHandler2D-c2f424fb.js');
12
12
  require('@babel/runtime/helpers/slicedToArray');
13
13
  require('@babel/runtime/helpers/objectWithoutProperties');
14
14
  require('axios');
@@ -1834,6 +1834,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
1834
1834
  * Elements without bottom plate are "Garderobe" or "Offenes Fach ohne Boden"
1835
1835
  */
1836
1836
  _defineProperty__default["default"](this, "getElementHasBottomPlate", function (curElement, optionHandler) {
1837
+ if (!curElement) return false;
1837
1838
  if (_this.constructionRules.knotInfo.elementsWithGroundPlate) {
1838
1839
  for (var i = 0; i < _this.constructionRules.knotInfo.elementsWithGroundPlate.length; i++) {
1839
1840
  var onOPT = _this.constructionRules.knotInfo.elementsWithGroundPlate[i].onOPT;
@@ -1850,6 +1851,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
1850
1851
  * @param optionHandler
1851
1852
  */
1852
1853
  _defineProperty__default["default"](this, "getElementIsCornerElement", function (curElement, optionHandler) {
1854
+ if (!curElement) return false;
1853
1855
  return _this.constructionRules.hasCORNER && _this.arrayContainsValue(_this.constructionRules.knotInfo.cornerElements.onOPVs, _this.getOptionVal(curElement.getElementId(), _this.constructionRules.knotInfo.cornerElements.onOPT, optionHandler));
1854
1856
  });
1855
1857
  _defineProperty__default["default"](this, "getElementIsGarderobeElement", function (curElement, optionHandler) {
@@ -1869,9 +1871,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
1869
1871
  if (boxPlannerGrid.getElementHasTopElement(curElement.getElementId())) {
1870
1872
  var allTopElements = boxPlannerGrid.getTopElements(curElement.getElementId());
1871
1873
  var oneTrueFound = false;
1872
- for (var i = 0; i < allTopElements.length; i++) {
1873
- if (_this.getElementHasBottomPlate(allTopElements[i], optionHandler)) oneTrueFound = true;
1874
- }
1874
+ if (_this.getElementHasBottomPlate(allTopElements[0], optionHandler)) oneTrueFound = true;
1875
1875
  return oneTrueFound;
1876
1876
  }
1877
1877
  return true;
@@ -2057,7 +2057,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2057
2057
  }
2058
2058
  }
2059
2059
  if (cellsInGrid.endColIndex < colCount - 1) {
2060
- var rightElement = boxPlannerGrid.getPlannerElementAtGridPos(cellsInGrid.endColIndex + 1, 0, false);
2060
+ var rightElement = boxPlannerGrid.getPlannerElementAtGridPos(cellsInGrid.endColIndex, 0, false);
2061
2061
  if (rightElement) {
2062
2062
  var _cornerVal = this.getOptionVal(rightElement.getElementId(), 'OPTELEMENT', optionHandler);
2063
2063
  if (_cornerVal == 'OPVECK_I') {
@@ -2072,7 +2072,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2072
2072
  }
2073
2073
  if (this.constructionRules.avoidOptionLastCol) {
2074
2074
  var elementType = this.getOptionVal(allElementIds[i], this.constructionRules.avoidOptionLastCol.onOPT, optionHandler);
2075
- if (this.arrayContainsValue(this.constructionRules.avoidOptionLastCol.onOPVs, elementType) && cellsInGrid.endColIndex == colCount - 1) {
2075
+ if (this.arrayContainsValue(this.constructionRules.avoidOptionLastCol.onOPVs, elementType) && cellsInGrid.endColIndex - 1 == colCount - 1) {
2076
2076
  this.setOptionValue(allElementIds[i], this.constructionRules.avoidOptionLastCol.onOPT, this.constructionRules.avoidOptionLastCol.defaultOpv, optionHandler);
2077
2077
  }
2078
2078
  }
@@ -2231,6 +2231,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2231
2231
  //Setze alle Fuße zurück
2232
2232
  //DEPRECTED this.setOptionValue(allElementIds[i], "OPTFAF_LINKS", "OPVOHNE_FAF", optionHandler);
2233
2233
  //DEPRECTED this.setOptionValue(allElementIds[i], "OPTFAF_RECHTS", "OPVOHNE_FAF", optionHandler);
2234
+
2234
2235
  this.setOptionValue(allElementIds[i], 'OPTFAF_L_V', 'OPVOHNE_FAF', optionHandler);
2235
2236
  this.setOptionValue(allElementIds[i], 'OPTFAF_L_H', 'OPVOHNE_FAF', optionHandler);
2236
2237
  this.setOptionValue(allElementIds[i], 'OPTFAF_R_V', 'OPVOHNE_FAF', optionHandler);
@@ -2445,35 +2446,17 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2445
2446
  var bottomElemts = boxPlannerGrid.getBottomElements(curElement.ElementId);
2446
2447
  var topRightElemt = !fromBackside ? boxPlannerGrid.getTopRightElement(curElement.ElementId) : boxPlannerGrid.getTopLeftElement(curElement.ElementId);
2447
2448
  if (rightElemts.length > 0) {
2448
- if (rightElemts.length > 1) {
2449
- LOG$2.error(new DivaUtils.DivaError('BoxPlannerError - only one OPTNACHBAR_RECHTS allowed', {
2450
- code: 'WC_0012'
2451
- }));
2452
- } else {
2453
- this.setOptionValue(curElement.ElementId, 'OPTNACHBAR_RECHTS', this.getOptionVal(rightElemts[0].ElementId, 'OPTELEMENT', optionHandler), optionHandler);
2454
- }
2449
+ this.setOptionValue(curElement.ElementId, 'OPTNACHBAR_RECHTS', this.getOptionVal(rightElemts[0].ElementId, 'OPTELEMENT', optionHandler), optionHandler);
2455
2450
  } else {
2456
2451
  this.setOptionDoHide(curElement.ElementId, 'OPTNACHBAR_RECHTS', optionHandler);
2457
2452
  }
2458
2453
  if (leftElemts.length > 0) {
2459
- if (leftElemts.length > 1) {
2460
- LOG$2.error(new DivaUtils.DivaError('BoxPlannerError - only one OPTNACHBAR_LINKS allowed', {
2461
- code: 'WC_0012'
2462
- }));
2463
- } else {
2464
- this.setOptionValue(curElement.ElementId, 'OPTNACHBAR_LINKS', this.getOptionVal(leftElemts[0].ElementId, 'OPTELEMENT', optionHandler), optionHandler);
2465
- }
2454
+ this.setOptionValue(curElement.ElementId, 'OPTNACHBAR_LINKS', this.getOptionVal(leftElemts[0].ElementId, 'OPTELEMENT', optionHandler), optionHandler);
2466
2455
  } else {
2467
2456
  this.setOptionDoHide(curElement.ElementId, 'OPTNACHBAR_LINKS', optionHandler);
2468
2457
  }
2469
2458
  if (topElemts.length > 0) {
2470
- if (topElemts.length > 1) {
2471
- LOG$2.error(new DivaUtils.DivaError('BoxPlannerError - only one OPTNACHBAR_OBEN allowed', {
2472
- code: 'WC_0012'
2473
- }));
2474
- } else {
2475
- this.setOptionValue(curElement.ElementId, 'OPTNACHBAR_OBEN', this.getOptionVal(topElemts[0].ElementId, 'OPTELEMENT', optionHandler), optionHandler);
2476
- }
2459
+ this.setOptionValue(curElement.ElementId, 'OPTNACHBAR_OBEN', this.getOptionVal(topElemts[0].ElementId, 'OPTELEMENT', optionHandler), optionHandler);
2477
2460
  } else {
2478
2461
  this.setOptionDoHide(curElement.ElementId, 'OPTNACHBAR_OBEN', optionHandler);
2479
2462
  }
@@ -2484,13 +2467,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2484
2467
  }
2485
2468
  if (this.constructionRules.hasNeighbors && this.constructionRules.hasNeighbors.indexOf('OPTNACHBAR_UNTEN') >= 0) {
2486
2469
  if (bottomElemts.length > 0) {
2487
- if (bottomElemts.length > 1) {
2488
- LOG$2.error(new DivaUtils.DivaError('BoxPlannerError - only one OPTNACHBAR_UNTEN allowed', {
2489
- code: 'WC_0012'
2490
- }));
2491
- } else {
2492
- this.setOptionValue(curElement.ElementId, 'OPTNACHBAR_UNTEN', this.getOptionVal(bottomElemts[0].ElementId, 'OPTELEMENT', optionHandler), optionHandler);
2493
- }
2470
+ this.setOptionValue(curElement.ElementId, 'OPTNACHBAR_UNTEN', this.getOptionVal(bottomElemts[0].ElementId, 'OPTELEMENT', optionHandler), optionHandler);
2494
2471
  } else {
2495
2472
  this.setOptionDoHide(curElement.ElementId, 'OPTNACHBAR_UNTEN', optionHandler);
2496
2473
  }
@@ -2544,7 +2521,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2544
2521
  }
2545
2522
  }
2546
2523
  }
2547
- if (this.getElementHasBottomPlate(backElement, optionHandler)) {
2524
+ if (backElement && this.getElementHasBottomPlate(backElement, optionHandler)) {
2548
2525
  //Set the opposite element has rahmen unten vorne
2549
2526
  this.setOptionDoShow(frontElement, 'OPTOPP_RAHMEN_U_V', optionHandler);
2550
2527
  } else {
@@ -2616,31 +2593,112 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2616
2593
  }
2617
2594
  return undefined;
2618
2595
  }
2596
+ }, {
2597
+ key: "validateDimensionRule",
2598
+ value: function validateDimensionRule(dimRule, boxPlannerSize) {
2599
+ var isOver = false;
2600
+ var isEqual = false;
2601
+ if (dimRule.dimension.toLowerCase() == 'height' && boxPlannerSize.y > dimRule.dimensionLimit) isOver = true;
2602
+ if (dimRule.dimension.toLowerCase() == 'height' && boxPlannerSize.y == dimRule.dimensionLimit) isEqual = true;
2603
+ if (dimRule.dimension.toLowerCase() == 'width' && boxPlannerSize.x > dimRule.dimensionLimit) isOver = true;
2604
+ if (dimRule.dimension.toLowerCase() == 'width' && boxPlannerSize.x == dimRule.dimensionLimit) isEqual = true;
2605
+ if (dimRule.dimension.toLowerCase() == 'depth' && boxPlannerSize.z > dimRule.dimensionLimit) isOver = true;
2606
+ if (dimRule.dimension.toLowerCase() == 'depth' && boxPlannerSize.z == dimRule.dimensionLimit) isEqual = true;
2607
+ if (isOver) {
2608
+ if (dimRule.higherLimit.toLowerCase() == 'doshow') return true;else if (dimRule.higherLimit.toLowerCase() == 'dohide') return false;
2609
+ } else if (isEqual) {
2610
+ return true;
2611
+ } else {
2612
+ if (dimRule.lowerLimit.toLowerCase() == 'doshow') return true;else if (dimRule.lowerLimit.toLowerCase() == 'dohide') return false;
2613
+ }
2614
+ return false;
2615
+ }
2616
+
2617
+ /*
2618
+ * This function corrects the elements in one row when the top element is wider then the bottom one.
2619
+ * Goal is to make all the bottom ones also atleast as wide as the top one because no element can overhang - omlin setup
2620
+ */
2621
+ }, {
2622
+ key: "correctOverHangingElement",
2623
+ value: function correctOverHangingElement(changedElementId, boxPlannerGrid, optionHandler, changedOPTs) {
2624
+ var _this2 = this;
2625
+ if (!changedOPTs) return;
2626
+ var _loop = function _loop() {
2627
+ var elements = boxPlannerGrid.getAllElementsInColumn(columndIdx, false, false); // from bottom to top
2628
+ var lastElement = null;
2629
+ var changedElementIdx = elements.findIndex(function (e) {
2630
+ return e.ElementId == changedElementId;
2631
+ });
2632
+ elements.forEach(function (element, idx) {
2633
+ var _lastElement$Width, _element$Width, _lastElement$Depth, _element$Depth;
2634
+ if (!lastElement) {
2635
+ lastElement = element;
2636
+ return;
2637
+ }
2638
+ 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)) {
2639
+ // is either the above wider opt or the one under and smaller
2640
+ var t = Object.entries(changedOPTs);
2641
+ var opt = t[0][0];
2642
+ var opv = t[0][1];
2643
+ if (idx < changedElementIdx) {
2644
+ _this2.setOptionValue(element.ElementId, opt, opv, optionHandler);
2645
+ } else {
2646
+ _this2.setOptionValue(element.ElementId, opt, opv, optionHandler);
2647
+ }
2648
+ }
2649
+ 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)) {
2650
+ var _t = Object.entries(changedOPTs); // should be the new wider width that causes the overhanging
2651
+ var _opt = _t[0][0];
2652
+ var _opv2 = _t[0][1];
2653
+ _this2.setOptionValue(element.ElementId, _opt, _opv2, optionHandler);
2654
+ }
2655
+ lastElement = element;
2656
+ });
2657
+ };
2658
+ for (var columndIdx = 0; columndIdx < boxPlannerGrid.getColumnCount(); columndIdx++) {
2659
+ _loop();
2660
+ }
2661
+ }
2662
+ }, {
2663
+ key: "correctFoot",
2664
+ value: function correctFoot(boxPlannerGrid, optionHandler) {
2665
+ var _this3 = this;
2666
+ var elements = boxPlannerGrid.getAllElementsInFrontGrid();
2667
+ elements.forEach(function (e) {
2668
+ if (boxPlannerGrid.getElementHasBottomElement(e.ElementId)) _this3.setOptionValue(e.ElementId, 'OPTFUSS_SYS', 'OPVOHNE', optionHandler);
2669
+ });
2670
+ }
2671
+
2672
+ /*
2673
+ * This function corrects Options that are based on the total planning dimensions
2674
+ * */
2619
2675
  }, {
2620
2676
  key: "correctOptionsInfluencedByDimensions",
2621
2677
  value: function correctOptionsInfluencedByDimensions(boxPlannerGrid, optionHandler) {
2622
- var _this2 = this;
2678
+ var _this4 = this;
2623
2679
  if (!this.constructionRules.optionsInfluencedByDimensions) return;
2624
2680
  var boxPlannerSize = boxPlannerGrid.getSizeOfWholeSet(false);
2625
2681
  var allElements = boxPlannerGrid.getAllElementsInFrontGrid();
2626
2682
  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
- });
2683
+ if (Array.isArray(dimRule)) {
2684
+ if (dimRule.every(function (rule) {
2685
+ return _this4.validateDimensionRule(rule, boxPlannerSize);
2686
+ })) dimRule.forEach(function (rule) {
2687
+ return allElements.forEach(function (element) {
2688
+ return _this4.setOptionDoShow(element.ElementId, rule.option, optionHandler);
2689
+ });
2690
+ });else dimRule.forEach(function (rule) {
2691
+ return allElements.forEach(function (element) {
2692
+ return _this4.setOptionDoHide(element.ElementId, rule.option, optionHandler);
2693
+ });
2694
+ });
2695
+ } else {
2696
+ if (_this4.validateDimensionRule(dimRule, boxPlannerSize)) allElements.forEach(function (element) {
2697
+ return _this4.setOptionDoShow(element.ElementId, dimRule.option, optionHandler);
2698
+ });else allElements.forEach(function (element) {
2699
+ return _this4.setOptionDoHide(element.ElementId, dimRule.option, optionHandler);
2700
+ });
2701
+ }
2644
2702
  });
2645
2703
  }
2646
2704
  }, {
@@ -2703,27 +2761,32 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2703
2761
  }, {
2704
2762
  key: "correctCoverPlate",
2705
2763
  value: function correctCoverPlate(coverPlateRule, boxPlannerGrid, optionHandler) {
2706
- var _this3 = this;
2764
+ var _this5 = this;
2707
2765
  if (coverPlateRule.onHighestElementsOnly) return; // System4 not handled by this logic yet
2708
2766
 
2709
2767
  var elementsPerSeries = boxPlannerGrid.getHighestElementsPerSeries(!!coverPlateRule.onBottom);
2710
2768
  elementsPerSeries.forEach(function (serie) {
2711
2769
  var seriesWidth = 0;
2712
2770
  var seriesWidthToPlateOpv = coverPlateRule.seriesWidthToPlateOpv;
2771
+
2772
+ // default => set all to ohne
2713
2773
  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);
2774
+ var _element$Width2;
2775
+ seriesWidth += (_element$Width2 = element.Width) !== null && _element$Width2 !== void 0 ? _element$Width2 : 0;
2776
+ boxPlannerGrid.getAllElementsDown(element.ElementId).elements.forEach(function (e) {
2777
+ return _this5.setOptionValue(e, coverPlateRule.optABD, 'OPVOHNE', optionHandler);
2778
+ });
2779
+ _this5.setOptionValue(element.ElementId, coverPlateRule.optABD, 'OPVOHNE', optionHandler);
2717
2780
  });
2718
2781
  var firstUncoveredElement = serie[0];
2719
- var _loop = function _loop() {
2782
+ var _loop2 = function _loop2() {
2720
2783
  var opv = seriesWidthToPlateOpv.findLast(function (stp) {
2721
2784
  // is a clean element ending
2722
2785
  var helperWidth = 0;
2723
2786
  var isClean = false;
2724
2787
  serie.forEach(function (element) {
2725
- var _element$Width2;
2726
- helperWidth += (_element$Width2 = element.Width) !== null && _element$Width2 !== void 0 ? _element$Width2 : 0;
2788
+ var _element$Width3;
2789
+ helperWidth += (_element$Width3 = element.Width) !== null && _element$Width3 !== void 0 ? _element$Width3 : 0;
2727
2790
  if (Math.abs(helperWidth - stp.limit) < 1) isClean = true;
2728
2791
  });
2729
2792
  if (stp.limit <= seriesWidth && isClean) return true;
@@ -2732,7 +2795,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2732
2795
  if (!opv) return {
2733
2796
  v: void 0
2734
2797
  };
2735
- _this3.setOptionValue(firstUncoveredElement.ElementId, coverPlateRule.optABD, opv.plateOpv, optionHandler);
2798
+ _this5.setOptionValue(firstUncoveredElement.ElementId, coverPlateRule.optABD, opv.plateOpv, optionHandler);
2736
2799
  var helperWidth = 0;
2737
2800
  firstUncoveredElement = serie.find(function (e) {
2738
2801
  var _e$Width;
@@ -2745,7 +2808,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2745
2808
  },
2746
2809
  _ret;
2747
2810
  while (seriesWidth != 0) {
2748
- _ret = _loop();
2811
+ _ret = _loop2();
2749
2812
  if (_ret) return _ret.v;
2750
2813
  }
2751
2814
  });
@@ -3071,6 +3134,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3071
3134
  key: "updateOptionLogicBoxPlanner",
3072
3135
  value: function () {
3073
3136
  var _updateOptionLogicBoxPlanner = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee(boxPlannerGrid, changedOPTs, targetElements, forceResetCornerElements) {
3137
+ var _targetElements;
3074
3138
  var startTime, resultMessage, optionHandler, allElements, i, _iterator, _step, coverPlateRule, j, doChangeRetailArticleNumbers;
3075
3139
  return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
3076
3140
  while (1) switch (_context.prev = _context.next) {
@@ -3145,8 +3209,10 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3145
3209
  }
3146
3210
  }
3147
3211
  }
3212
+ this.correctFoot(boxPlannerGrid, optionHandler);
3148
3213
  this.correctLadder(boxPlannerGrid, optionHandler);
3149
3214
  this.correctOptionsInfluencedByDimensions(boxPlannerGrid, optionHandler);
3215
+ this.correctOverHangingElement((_targetElements = targetElements) === null || _targetElements === void 0 ? void 0 : _targetElements[0], boxPlannerGrid, optionHandler, changedOPTs);
3150
3216
  this.partlistHelper.calculateKnots(boxPlannerGrid, optionHandler);
3151
3217
  this.partlistHelper.calculateRahmen(boxPlannerGrid, optionHandler);
3152
3218
  for (i = 0; i < boxPlannerGrid.getColumnCount(); i++) {
@@ -3155,13 +3221,13 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3155
3221
  }
3156
3222
  }
3157
3223
  doChangeRetailArticleNumbers = this.doChangeRetailArticleNumbers(boxPlannerGrid, optionHandler);
3158
- _context.next = 27;
3224
+ _context.next = 29;
3159
3225
  return this.updateCfgValuesByPlanner(optionHandler, undefined, this.constructionRules.partlistRules.bundleRules, doChangeRetailArticleNumbers);
3160
- case 27:
3226
+ case 29:
3161
3227
  LOG$2.debug('BoxPlanner updateOptionLogic - Duration after setting Option Values of all Articles: ' + (new Date().getTime() - startTime));
3162
3228
  LOG$2.debug('BoxPlanner updateOptionLogic - Duration after setting updating configurator: ' + (new Date().getTime() - startTime));
3163
3229
  return _context.abrupt("return", resultMessage);
3164
- case 30:
3230
+ case 32:
3165
3231
  case "end":
3166
3232
  return _context.stop();
3167
3233
  }
@@ -3223,21 +3289,26 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3223
3289
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
3224
3290
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
3225
3291
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
3292
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3293
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3226
3294
  var LOG$1 = DivaUtils__default["default"].initLog('Planner', 'BOX-PLANNER_GRID');
3227
3295
  var BoxPlannerGrid = /*#__PURE__*/function () {
3228
3296
  function BoxPlannerGrid(gridSetupParams, getValueOfOptionOfArticle) {
3229
3297
  _classCallCheck__default["default"](this, BoxPlannerGrid);
3230
3298
  _defineProperty__default["default"](this, "plannerElements", void 0);
3231
- _defineProperty__default["default"](this, "frontGrid", void 0);
3232
- //first entry is width, second height
3233
- _defineProperty__default["default"](this, "backGrid", void 0);
3234
- //if cell is empty it is undefined
3299
+ _defineProperty__default["default"](this, "generalPlanningState", void 0);
3300
+ // [0] == frontgrid, and [1] == backgrid
3235
3301
  _defineProperty__default["default"](this, "hasActiveBackside", void 0);
3236
3302
  _defineProperty__default["default"](this, "getValueOfOptionOfArticle", void 0);
3237
3303
  _defineProperty__default["default"](this, "gridSetupParams", void 0);
3238
3304
  this.plannerElements = new Map();
3239
- this.frontGrid = new Array();
3240
- this.backGrid = new Array();
3305
+
3306
+ // the old logic
3307
+ this.generalPlanningState = {
3308
+ grids: [{
3309
+ matrix: [[]]
3310
+ }]
3311
+ };
3241
3312
  this.gridSetupParams = gridSetupParams;
3242
3313
  this.getValueOfOptionOfArticle = getValueOfOptionOfArticle;
3243
3314
  this.hasActiveBackside = false;
@@ -3256,50 +3327,57 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3256
3327
  if (this.gridSetupParams.forceSingleCellPerElement) {
3257
3328
  var cell = {
3258
3329
  //isEmpty: false,
3259
- plannerElementId: newElement.ElementId,
3260
- width: this.gridSetupParams.forceFixCellRasterSize ? this.gridSetupParams.fixCellRasterWidth : newElement.getWidth(),
3261
- height: this.gridSetupParams.forceFixCellRasterSize ? this.gridSetupParams.fixCellRasterHeight : newElement.getHeight(),
3330
+ plannedElement: {
3331
+ elementId: newElement.ElementId,
3332
+ basketId: newElement.getBasketId(),
3333
+ size: {
3334
+ width: this.gridSetupParams.forceFixCellRasterSize ? this.gridSetupParams.fixCellRasterWidth : newElement.getWidth(),
3335
+ height: this.gridSetupParams.forceFixCellRasterSize ? this.gridSetupParams.fixCellRasterHeight : newElement.getHeight(),
3336
+ depth: newElement.getDepth()
3337
+ },
3338
+ articleCodex: newElement.ArticleCodex,
3339
+ area: {
3340
+ fromX: startColIndex,
3341
+ toX: startColIndex + 1,
3342
+ fromY: startRowIndex,
3343
+ toY: startRowIndex + 1
3344
+ }
3345
+ },
3262
3346
  index: new index.Vector2(startColIndex, startRowIndex)
3263
3347
  };
3264
- return {
3265
- cells: [cell],
3266
- startColIndex: startColIndex,
3267
- endColIndex: startColIndex,
3268
- startRowIndex: startRowIndex,
3269
- endRowIndex: startRowIndex,
3270
- backside: backside,
3271
- colCount: 1,
3272
- rowCount: 1
3273
- };
3348
+ return [cell];
3274
3349
  }
3275
3350
  if (!this.gridSetupParams.forceFixCellRasterSize) {
3276
3351
  LOG$1.error(new DivaUtils.DivaError('Box planner with params forceSingleCellPerElement is false and forceFixCellRasterSize is false are not allowed'));
3277
3352
  }
3278
3353
  var colCount = Math.round(newElement.getWidth() / this.gridSetupParams.fixCellRasterWidth);
3279
- var rowCount = Math.round(newElement.getHeight() / this.gridSetupParams.fixCellRasterWidth);
3354
+ var rowCount = Math.round(newElement.getHeight() / this.gridSetupParams.fixCellRasterHeight);
3280
3355
  var cells = [];
3281
3356
  for (var i = 0; i < colCount; i++) {
3282
3357
  for (var j = 0; j < rowCount; j++) {
3283
3358
  var _cell = {
3284
- // isEmpty: false,
3285
- plannerElementId: newElement.ElementId,
3286
- width: this.gridSetupParams.fixCellRasterWidth,
3287
- height: this.gridSetupParams.fixCellRasterHeight,
3359
+ plannedElement: {
3360
+ basketId: newElement.getBasketId(),
3361
+ elementId: newElement.getElementId(),
3362
+ articleCodex: newElement.ArticleCodex,
3363
+ size: {
3364
+ width: newElement.getWidth(),
3365
+ depth: newElement.getDepth(),
3366
+ height: newElement.getHeight()
3367
+ },
3368
+ area: {
3369
+ fromX: startColIndex,
3370
+ toX: startColIndex + newElement.getWidth() / this.gridSetupParams.fixCellRasterWidth,
3371
+ fromY: startRowIndex,
3372
+ toY: startRowIndex + newElement.getHeight() / this.gridSetupParams.fixCellRasterHeight
3373
+ }
3374
+ },
3288
3375
  index: new index.Vector2(startColIndex + i, startRowIndex + j)
3289
3376
  };
3290
3377
  cells.push(_cell);
3291
3378
  }
3292
3379
  }
3293
- return {
3294
- cells: cells,
3295
- startColIndex: startColIndex,
3296
- endColIndex: startColIndex + colCount - 1,
3297
- startRowIndex: startRowIndex,
3298
- endRowIndex: startRowIndex + rowCount - 1,
3299
- backside: backside,
3300
- colCount: colCount,
3301
- rowCount: rowCount
3302
- };
3380
+ return cells;
3303
3381
  }
3304
3382
  }, {
3305
3383
  key: "createEmptyCells",
@@ -3345,7 +3423,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3345
3423
  key: "getAllUsedCellsInGrid",
3346
3424
  value: function getAllUsedCellsInGrid(backside) {
3347
3425
  var allCellsInGrid = new Array();
3348
- var curGrid = backside ? this.backGrid : this.frontGrid;
3426
+ var curGrid = backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3349
3427
  for (var i = 0; i < curGrid.length; i++) {
3350
3428
  for (var j = 0; j < curGrid[i].length; j++) {
3351
3429
  if (curGrid[i][j] != undefined) allCellsInGrid.push(curGrid[i][j]);
@@ -3359,9 +3437,12 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3359
3437
  */
3360
3438
  }, {
3361
3439
  key: "getGridColumnWidth",
3362
- value: function getGridColumnWidth(columnIndex) {
3363
- for (var i = 0; i < this.frontGrid[columnIndex].length; i++) {
3364
- if (this.frontGrid[columnIndex][i]) return this.frontGrid[columnIndex][i].width;
3440
+ value: function getGridColumnWidth(x) {
3441
+ var frontGrid = this.generalPlanningState.grids[0].matrix;
3442
+ for (var y = 0; x < frontGrid[y].length; x++) {
3443
+ var _plannedElement$size$, _plannedElement;
3444
+ var cell = frontGrid[x][y];
3445
+ if (cell) return (_plannedElement$size$ = (_plannedElement = cell.plannedElement) === null || _plannedElement === void 0 ? void 0 : _plannedElement.size.width) !== null && _plannedElement$size$ !== void 0 ? _plannedElement$size$ : 0;
3365
3446
  }
3366
3447
  return 0;
3367
3448
  }
@@ -3373,14 +3454,18 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3373
3454
  */
3374
3455
  }, {
3375
3456
  key: "getGridColumnHeight",
3376
- value: function getGridColumnHeight(columnIdex) {
3457
+ value: function getGridColumnHeight(x) {
3377
3458
  var height = 0;
3378
3459
  var firstElementFound = false;
3379
- if (this.frontGrid.length > columnIdex) {
3380
- var allCellsInCol = this.frontGrid[columnIdex];
3381
- for (var i = allCellsInCol.length; i >= 0; i--) {
3382
- if (!firstElementFound && allCellsInCol[i]) firstElementFound = true;
3383
- if (firstElementFound) height += allCellsInCol[i] == undefined ? 0 : allCellsInCol[i].height;
3460
+ var frontGrid = this.generalPlanningState.grids[0].matrix;
3461
+ if (frontGrid.length > x) {
3462
+ var column = frontGrid[x];
3463
+ for (var y = column.length - 1; y >= 0; y--) {
3464
+ var _plannedElement$size$2, _plannedElement2;
3465
+ var cell = column[y];
3466
+ if (!firstElementFound && cell) firstElementFound = true;
3467
+ if (firstElementFound) height += (_plannedElement$size$2 = (_plannedElement2 = cell.plannedElement) === null || _plannedElement2 === void 0 ? void 0 : _plannedElement2.size.height) !== null && _plannedElement$size$2 !== void 0 ? _plannedElement$size$2 : 0;
3468
+ y = cell.plannedElement ? cell.plannedElement.area.fromY - 1 : y - 1;
3384
3469
  }
3385
3470
  }
3386
3471
  return height;
@@ -3393,31 +3478,37 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3393
3478
  key: "deleteElementByIdFromGrid",
3394
3479
  value: function deleteElementByIdFromGrid(elementIdTodelete) {
3395
3480
  var gridCellsToDelete = this.getCellsInGridByElementId(elementIdTodelete);
3396
- var curGrid = gridCellsToDelete.backside ? this.backGrid : this.frontGrid;
3481
+ var curGrid = gridCellsToDelete.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3397
3482
  var rowCountToDelete = 1 + (gridCellsToDelete.endRowIndex - gridCellsToDelete.startRowIndex);
3398
- var doDeleteCol = false;
3399
- var startColToDelete = gridCellsToDelete.startColIndex;
3400
- var colCountToDelete = 1 + (gridCellsToDelete.startColIndex - gridCellsToDelete.endColIndex);
3401
3483
 
3402
3484
  //check if we need to delete all cols
3403
- if (this.getRowCount(gridCellsToDelete.startColIndex, gridCellsToDelete.backside) == rowCountToDelete) {
3404
- doDeleteCol = true;
3405
- }
3406
- var allUsedCellCurGrid = this.getAllUsedCellsInGrid(gridCellsToDelete.backside);
3407
- curGrid = new Array();
3408
- for (var i = 0; i < allUsedCellCurGrid.length; i++) {
3409
- var curCellFrontGrid = allUsedCellCurGrid[i];
3410
- if (curCellFrontGrid.plannerElementId != elementIdTodelete) {
3411
- if (doDeleteCol && curCellFrontGrid.index.x > startColToDelete) {
3412
- curCellFrontGrid.index.x -= colCountToDelete;
3413
- }
3414
- if (!curGrid[curCellFrontGrid.index.x]) {
3415
- curGrid[curCellFrontGrid.index.x] = [];
3416
- }
3417
- curGrid[curCellFrontGrid.index.x][curCellFrontGrid.index.y] = curCellFrontGrid;
3418
- }
3419
- }
3420
- if (gridCellsToDelete.backside) this.backGrid = curGrid;else this.frontGrid = curGrid;
3485
+ if (this.getRowCount(gridCellsToDelete.startColIndex, gridCellsToDelete.backside) == rowCountToDelete) ;
3486
+ gridCellsToDelete.cells.reverse().forEach(function (cell) {
3487
+ curGrid[cell.index.x].splice(cell.index.y, 1);
3488
+ if (curGrid[cell.index.x].length == 0) curGrid.splice(cell.index.x, 1);
3489
+ });
3490
+ var refreshedGrid = [];
3491
+ curGrid.forEach(function (row, x) {
3492
+ refreshedGrid[x] = [];
3493
+ row.forEach(function (column, y) {
3494
+ var area = column.plannedElement.area;
3495
+ refreshedGrid[x][y] = {
3496
+ index: {
3497
+ x: x,
3498
+ y: y
3499
+ },
3500
+ plannedElement: _objectSpread(_objectSpread({}, column.plannedElement), {}, {
3501
+ area: {
3502
+ fromX: x,
3503
+ fromY: y,
3504
+ toX: x + (area.toX - area.fromX),
3505
+ toY: y + (area.toY - area.fromY)
3506
+ }
3507
+ })
3508
+ };
3509
+ });
3510
+ });
3511
+ if (gridCellsToDelete.backside) this.generalPlanningState.grids[1].matrix = refreshedGrid;else this.generalPlanningState.grids[0].matrix = refreshedGrid;
3421
3512
  }
3422
3513
 
3423
3514
  /**
@@ -3430,11 +3521,14 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3430
3521
  }, {
3431
3522
  key: "getPlannerElementAtGridPos",
3432
3523
  value: function getPlannerElementAtGridPos(curXPos, curYPos, fromBackmodul) {
3433
- var curElementGrid = fromBackmodul ? this.backGrid : this.frontGrid;
3524
+ var curElementGrid = fromBackmodul ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3434
3525
  if (curElementGrid[curXPos] && curElementGrid[curXPos][curYPos]) {
3526
+ var _cell$plannedElement;
3435
3527
  var cell = curElementGrid[curXPos][curYPos];
3436
3528
  if (cell == undefined) return undefined;
3437
- return this.plannerElements.get(cell.plannerElementId);
3529
+ var elementId = (_cell$plannedElement = cell.plannedElement) === null || _cell$plannedElement === void 0 ? void 0 : _cell$plannedElement.elementId;
3530
+ if (!elementId) return undefined;
3531
+ return this.plannerElements.get(elementId);
3438
3532
  }
3439
3533
  return undefined;
3440
3534
  }
@@ -3448,82 +3542,53 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3448
3542
  }, {
3449
3543
  key: "getCellsInGridByElementId",
3450
3544
  value: function getCellsInGridByElementId(elementId) {
3451
- var firstCell = undefined;
3545
+ var _this$generalPlanning, _cells$0$plannedEleme, _area$fromX, _area$toX, _area$fromY, _area$toY;
3452
3546
  var onBacksideFound = false;
3453
- for (var i = 0; i < this.frontGrid.length; i++) {
3454
- for (var j = 0; j < this.frontGrid[i].length; j++) {
3455
- var cell = this.frontGrid[i][j];
3456
- if (cell && cell.plannerElementId == elementId) {
3457
- firstCell = cell;
3458
- onBacksideFound = false;
3459
- }
3460
- }
3461
- }
3462
- if (firstCell == undefined) {
3463
- for (var i = 0; i < this.backGrid.length; i++) {
3464
- for (var j = 0; j < this.backGrid[i].length; j++) {
3465
- var _cell2 = this.backGrid[i][j];
3466
- if (_cell2 && _cell2.plannerElementId == elementId) {
3467
- firstCell = _cell2;
3468
- onBacksideFound = true;
3469
- }
3547
+ var frontGrid = this.generalPlanningState.grids[0].matrix;
3548
+ var backGrid = (_this$generalPlanning = this.generalPlanningState.grids[1]) === null || _this$generalPlanning === void 0 ? void 0 : _this$generalPlanning.matrix;
3549
+ var cells = [];
3550
+ frontGrid.forEach(function (x) {
3551
+ return x.forEach(function (y) {
3552
+ var _y$plannedElement;
3553
+ if (((_y$plannedElement = y.plannedElement) === null || _y$plannedElement === void 0 ? void 0 : _y$plannedElement.elementId) == elementId) cells.push(y);
3554
+ });
3555
+ });
3556
+ backGrid === null || backGrid === void 0 || backGrid.forEach(function (x) {
3557
+ return x.forEach(function (y) {
3558
+ var _y$plannedElement2;
3559
+ if (((_y$plannedElement2 = y.plannedElement) === null || _y$plannedElement2 === void 0 ? void 0 : _y$plannedElement2.elementId) == elementId) {
3560
+ cells.push(y);
3561
+ onBacksideFound = true;
3470
3562
  }
3471
- }
3472
- }
3473
- if (firstCell == undefined) return {
3474
- cells: [],
3475
- backside: false,
3476
- startColIndex: -1,
3477
- endColIndex: -1,
3478
- startRowIndex: -1,
3479
- endRowIndex: -1,
3563
+ });
3564
+ });
3565
+ if (cells.length == 0) return {
3566
+ cells: cells,
3567
+ backside: onBacksideFound,
3568
+ startColIndex: 0,
3569
+ endColIndex: 0,
3570
+ startRowIndex: 0,
3571
+ endRowIndex: 0,
3480
3572
  colCount: 0,
3481
3573
  rowCount: 0
3482
3574
  };
3483
- if (this.gridSetupParams.forceSingleCellPerElement) return {
3484
- cells: [firstCell],
3485
- backside: onBacksideFound,
3486
- startColIndex: firstCell.index.x,
3487
- endColIndex: firstCell.index.x,
3488
- startRowIndex: firstCell.index.y,
3489
- endRowIndex: firstCell.index.y,
3490
- colCount: 1,
3491
- rowCount: 1
3492
- };
3493
- //Now find the other cells that have the same element
3494
-
3495
- var curGrid = onBacksideFound ? this.backGrid : this.frontGrid;
3496
- var cells = [firstCell];
3497
- var startColIndex = Infinity;
3498
- var endColIndex = -Infinity;
3499
- var startRowIndex = Infinity;
3500
- var endRowIndex = -Infinity;
3501
- for (var i = firstCell.index.x; i < curGrid.length; i++) {
3502
- for (var j = firstCell.index.y + 1; j < curGrid.length; j++) {
3503
- var nextCell = curGrid[i][j];
3504
- if (nextCell && nextCell.plannerElementId == elementId) {
3505
- if (i < startColIndex) startColIndex = i;
3506
- if (i > endColIndex) endColIndex = i;
3507
- if (j < startRowIndex) startRowIndex = j;
3508
- if (j > endColIndex) endRowIndex = j;
3509
- cells.push(nextCell); //also this cell has the same element
3510
- //TODO
3511
- } else {
3512
- break;
3513
- }
3514
- }
3515
- }
3575
+ var area = (_cells$0$plannedEleme = cells[0].plannedElement) === null || _cells$0$plannedEleme === void 0 ? void 0 : _cells$0$plannedEleme.area;
3516
3576
  return {
3517
3577
  cells: cells,
3518
3578
  backside: onBacksideFound,
3519
- startColIndex: startColIndex,
3520
- endColIndex: endColIndex,
3521
- startRowIndex: startRowIndex,
3522
- endRowIndex: endRowIndex,
3523
- colCount: endColIndex - startColIndex + 1,
3524
- rowCount: endRowIndex - startRowIndex + 1
3579
+ startColIndex: (_area$fromX = area === null || area === void 0 ? void 0 : area.fromX) !== null && _area$fromX !== void 0 ? _area$fromX : 0,
3580
+ endColIndex: (_area$toX = area === null || area === void 0 ? void 0 : area.toX) !== null && _area$toX !== void 0 ? _area$toX : 0,
3581
+ startRowIndex: (_area$fromY = area === null || area === void 0 ? void 0 : area.fromY) !== null && _area$fromY !== void 0 ? _area$fromY : 0,
3582
+ endRowIndex: (_area$toY = area === null || area === void 0 ? void 0 : area.toY) !== null && _area$toY !== void 0 ? _area$toY : 0,
3583
+ colCount: area ? area.toX - area.toX : 0,
3584
+ rowCount: area ? area.toY - area.fromY : 0
3525
3585
  };
3526
3586
  }
3587
+ }, {
3588
+ key: "GridSetupParams",
3589
+ set: function set(gridSetupParams) {
3590
+ this.gridSetupParams = gridSetupParams;
3591
+ }
3527
3592
 
3528
3593
  /**
3529
3594
  * This function returns all elementIds that are inside the grid
@@ -3540,11 +3605,12 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3540
3605
  var allElements = [];
3541
3606
  for (var i = 0; i < grid.length; i++) {
3542
3607
  for (var j = 0; j < grid[i].length; j++) {
3608
+ var _cell$plannedElement2;
3543
3609
  var cell = grid[i][j];
3544
3610
  if (cell == undefined) continue;
3545
- if (allElementIds.indexOf(cell.plannerElementId) == -1) {
3546
- allElementIds.push(cell.plannerElementId);
3547
- allElements.push(this.plannerElements.get(cell.plannerElementId));
3611
+ if ((_cell$plannedElement2 = cell.plannedElement) !== null && _cell$plannedElement2 !== void 0 && _cell$plannedElement2.elementId && allElementIds.indexOf(cell.plannedElement.elementId) == -1) {
3612
+ allElementIds.push(cell.plannedElement.elementId);
3613
+ allElements.push(this.plannerElements.get(cell.plannedElement.elementId));
3548
3614
  }
3549
3615
  }
3550
3616
  }
@@ -3553,17 +3619,17 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3553
3619
  }, {
3554
3620
  key: "getAllElementsInFrontGrid",
3555
3621
  value: function getAllElementsInFrontGrid() {
3556
- return this._getAllElementsInGrid(this.frontGrid);
3622
+ return this._getAllElementsInGrid(this.generalPlanningState.grids[0].matrix);
3557
3623
  }
3558
3624
  }, {
3559
3625
  key: "getAllElementsInBackGrid",
3560
3626
  value: function getAllElementsInBackGrid() {
3561
- return this._getAllElementsInGrid(this.backGrid);
3627
+ return this._getAllElementsInGrid(this.generalPlanningState.grids[1].matrix);
3562
3628
  }
3563
3629
  }, {
3564
3630
  key: "getAllElementsInBacksideModuleGrid",
3565
3631
  value: function getAllElementsInBacksideModuleGrid() {
3566
- return this._getAllElementsInGrid(this.backGrid).map(function (element) {
3632
+ return this._getAllElementsInGrid(this.generalPlanningState.grids[1].matrix).map(function (element) {
3567
3633
  return element.ElementId;
3568
3634
  });
3569
3635
  }
@@ -3578,24 +3644,31 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3578
3644
  }, {
3579
3645
  key: "getAllElementsInGridSortedbyGridPos",
3580
3646
  value: function getAllElementsInGridSortedbyGridPos() {
3647
+ var _this$generalPlanning2, _this$generalPlanning3;
3581
3648
  var returnElements = [];
3582
3649
  var allCheckedElementIds = [];
3583
- for (var i = 0; i < this.frontGrid.length; i++) {
3584
- for (var j = 0; j < this.frontGrid[i].length; j++) {
3585
- var cell = this.frontGrid[i][j];
3586
- if (cell && allCheckedElementIds.indexOf(cell.plannerElementId) == -1) {
3587
- var element = this.getElementById(cell.plannerElementId);
3588
- allCheckedElementIds.push(cell.plannerElementId);
3650
+ var frontGrid = this.generalPlanningState.grids[0].matrix;
3651
+ var backGrid = (_this$generalPlanning2 = (_this$generalPlanning3 = this.generalPlanningState.grids[1]) === null || _this$generalPlanning3 === void 0 ? void 0 : _this$generalPlanning3.matrix) !== null && _this$generalPlanning2 !== void 0 ? _this$generalPlanning2 : 0;
3652
+ for (var i = 0; i < frontGrid.length; i++) {
3653
+ for (var j = 0; j < frontGrid[i].length; j++) {
3654
+ var _cell$plannedElement3;
3655
+ var cell = frontGrid[i][j];
3656
+ var elementId = (_cell$plannedElement3 = cell.plannedElement) === null || _cell$plannedElement3 === void 0 ? void 0 : _cell$plannedElement3.elementId;
3657
+ if (cell && elementId && allCheckedElementIds.indexOf(elementId) == -1) {
3658
+ var element = this.getElementById(elementId);
3659
+ allCheckedElementIds.push(elementId);
3589
3660
  returnElements.push(element);
3590
3661
  }
3591
3662
  }
3592
3663
  }
3593
- for (var i = 0; i < this.backGrid.length; i++) {
3594
- for (var j = 0; j < this.backGrid[i].length; j++) {
3595
- var _cell3 = this.backGrid[i][j];
3596
- if (_cell3 && allCheckedElementIds.indexOf(_cell3.plannerElementId) == -1) {
3597
- var _element = this.getElementById(_cell3.plannerElementId);
3598
- allCheckedElementIds.push(_cell3.plannerElementId);
3664
+ for (var i = 0; i < backGrid.length; i++) {
3665
+ for (var j = 0; j < backGrid[i].length; j++) {
3666
+ var _cell2$plannedElement;
3667
+ var _cell2 = backGrid[i][j];
3668
+ var _elementId = (_cell2$plannedElement = _cell2.plannedElement) === null || _cell2$plannedElement === void 0 ? void 0 : _cell2$plannedElement.elementId;
3669
+ if (_cell2 && _elementId && allCheckedElementIds.indexOf(_elementId) == -1) {
3670
+ var _element = this.getElementById(_elementId);
3671
+ allCheckedElementIds.push(_elementId);
3599
3672
  returnElements.push(_element);
3600
3673
  }
3601
3674
  }
@@ -3627,9 +3700,9 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3627
3700
  }, {
3628
3701
  key: "getElementIsInLastCol",
3629
3702
  value: function getElementIsInLastCol(elementId, fromBackmodul) {
3630
- var curElementGrid = fromBackmodul ? this.backGrid : this.frontGrid;
3703
+ var curElementGrid = fromBackmodul ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3631
3704
  var result = this.getCellsInGridByElementId(elementId);
3632
- return result.endColIndex + 1 == curElementGrid.length;
3705
+ return result.endColIndex == curElementGrid.length;
3633
3706
  }
3634
3707
 
3635
3708
  /**
@@ -3640,10 +3713,10 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3640
3713
  key: "getElementHasTopElement",
3641
3714
  value: function getElementHasTopElement(elementId) {
3642
3715
  var result = this.getCellsInGridByElementId(elementId);
3643
- var curGrid = result.backside ? this.backGrid : this.frontGrid;
3644
- for (var i = result.startColIndex; i <= result.endColIndex; i++) {
3716
+ var curGrid = result.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3717
+ for (var i = result.startColIndex; i < result.endColIndex; i++) {
3645
3718
  //Check if in one of the top cells is another element
3646
- if (curGrid[i].length > result.endRowIndex + 1 && curGrid[i][result.endRowIndex + 1]) {
3719
+ if (curGrid[i].length > result.endRowIndex && curGrid[i][result.endRowIndex]) {
3647
3720
  return true;
3648
3721
  }
3649
3722
  }
@@ -3657,19 +3730,18 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3657
3730
  }, {
3658
3731
  key: "getTopElements",
3659
3732
  value: function getTopElements(elementId) {
3733
+ var _curGrid$plannedEleme;
3660
3734
  var result = this.getCellsInGridByElementId(elementId);
3661
- var curGrid = result.backside ? this.backGrid : this.frontGrid;
3735
+ var curGrid = result.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3662
3736
  var neighborPlannerElements = [];
3663
- var neighborElementIds = [];
3664
- for (var i = result.startColIndex; i <= result.endColIndex; i++) {
3665
- if (curGrid[i].length > result.endRowIndex + 1 && curGrid[i][result.endRowIndex + 1]) {
3666
- var neighborCell = curGrid[i][result.endRowIndex + 1];
3667
- if (!neighborCell) continue;
3668
- if (neighborElementIds.indexOf(neighborCell.plannerElementId) == -1) {
3669
- neighborElementIds.push(neighborCell.plannerElementId);
3670
- neighborPlannerElements.push(this.plannerElements.get(neighborCell.plannerElementId));
3671
- }
3672
- }
3737
+ var plannedElement = result.cells[0].plannedElement;
3738
+ if (!plannedElement) return neighborPlannerElements;
3739
+ var topElement = (_curGrid$plannedEleme = curGrid[plannedElement.area.fromX]) === null || _curGrid$plannedEleme === void 0 ? void 0 : _curGrid$plannedEleme[plannedElement.area.toY];
3740
+ while (topElement) {
3741
+ var element = topElement.plannedElement;
3742
+ if (!element) break;
3743
+ neighborPlannerElements.push(this.plannerElements.get(element.elementId));
3744
+ topElement = curGrid[element.area.fromX][element.area.toY];
3673
3745
  }
3674
3746
  return neighborPlannerElements;
3675
3747
  }
@@ -3682,10 +3754,10 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3682
3754
  key: "getTopRightElement",
3683
3755
  value: function getTopRightElement(elementId) {
3684
3756
  var result = this.getCellsInGridByElementId(elementId);
3685
- var curGrid = result.backside ? this.backGrid : this.frontGrid;
3686
- if (curGrid.length > result.endColIndex + 1 && curGrid[result.endColIndex + 1].length > result.endRowIndex + 1 && curGrid[result.endColIndex + 1][result.endRowIndex + 1]) {
3687
- var cell = curGrid[result.endColIndex + 1][result.endRowIndex + 1];
3688
- return this.plannerElements.get(cell.plannerElementId);
3757
+ var curGrid = result.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3758
+ if (curGrid.length > result.endColIndex && curGrid[result.endColIndex].length > result.endRowIndex && curGrid[result.endColIndex][result.endRowIndex]) {
3759
+ var cell = curGrid[result.endColIndex][result.endRowIndex];
3760
+ return this.plannerElements.get(cell.plannedElement.elementId);
3689
3761
  }
3690
3762
  return undefined;
3691
3763
  }
@@ -3698,10 +3770,10 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3698
3770
  key: "getTopLeftElement",
3699
3771
  value: function getTopLeftElement(elementId) {
3700
3772
  var result = this.getCellsInGridByElementId(elementId);
3701
- var curGrid = result.backside ? this.backGrid : this.frontGrid;
3702
- if (result.startColIndex > 0 && curGrid[result.startColIndex - 1].length > 0 && curGrid[result.startColIndex - 1][result.endRowIndex + 1]) {
3703
- var cell = curGrid[result.startColIndex - 1][result.endRowIndex + 1];
3704
- return this.plannerElements.get(cell.plannerElementId);
3773
+ var curGrid = result.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3774
+ if (result.startColIndex > 0 && curGrid[result.startColIndex - 1].length > 0 && curGrid[result.startColIndex - 1][result.endRowIndex]) {
3775
+ var cell = curGrid[result.startColIndex - 1][result.endRowIndex];
3776
+ return this.plannerElements.get(cell.plannedElement.elementId);
3705
3777
  }
3706
3778
  return undefined;
3707
3779
  }
@@ -3729,22 +3801,21 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3729
3801
  }, {
3730
3802
  key: "getBottomElements",
3731
3803
  value: function getBottomElements(elementId) {
3804
+ var _curGrid$plannedEleme2;
3732
3805
  var result = this.getCellsInGridByElementId(elementId);
3733
- var curGrid = result.backside ? this.backGrid : this.frontGrid;
3734
- var bottomElements = [];
3735
- var bottomElementIds = [];
3736
- if (result.startRowIndex - 1 >= 0) {
3737
- for (var i = result.startColIndex; i <= result.endColIndex; i++) {
3738
- var cell = curGrid[i][result.startRowIndex - 1];
3739
- if (cell) {
3740
- if (bottomElementIds.indexOf(cell.plannerElementId) == -1) {
3741
- bottomElementIds.push(cell.plannerElementId);
3742
- bottomElements.push(this.plannerElements.get(cell.plannerElementId));
3743
- }
3744
- }
3745
- }
3806
+ var curGrid = result.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3807
+ var neighborPlannerElements = [];
3808
+ var plannedElement = result.cells[0].plannedElement;
3809
+ if (!plannedElement) return neighborPlannerElements;
3810
+ var topElement = (_curGrid$plannedEleme2 = curGrid[plannedElement.area.fromX]) === null || _curGrid$plannedEleme2 === void 0 ? void 0 : _curGrid$plannedEleme2[plannedElement.area.fromY - 1];
3811
+ while (topElement) {
3812
+ var _curGrid$element$area;
3813
+ var element = topElement.plannedElement;
3814
+ if (!element) break;
3815
+ neighborPlannerElements.push(this.plannerElements.get(element.elementId));
3816
+ topElement = (_curGrid$element$area = curGrid[element.area.fromX]) === null || _curGrid$element$area === void 0 ? void 0 : _curGrid$element$area[element.area.fromY - 1];
3746
3817
  }
3747
- return bottomElements;
3818
+ return neighborPlannerElements;
3748
3819
  }
3749
3820
 
3750
3821
  /**
@@ -3755,9 +3826,9 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3755
3826
  key: "getElementHasRightElement",
3756
3827
  value: function getElementHasRightElement(elementId) {
3757
3828
  var result = this.getCellsInGridByElementId(elementId);
3758
- var curGrid = result.backside ? this.backGrid : this.frontGrid;
3759
- if (curGrid.length > result.endColIndex + 1 && curGrid[result.endColIndex + 1].length > result.startRowIndex) {
3760
- var cell = curGrid[result.endColIndex + 1][result.startRowIndex];
3829
+ var curGrid = result.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3830
+ if (curGrid.length > result.endColIndex && curGrid[result.endColIndex].length > result.startRowIndex) {
3831
+ var cell = curGrid[result.endColIndex][result.startRowIndex];
3761
3832
  if (cell) return true;
3762
3833
  }
3763
3834
  return false;
@@ -3774,18 +3845,18 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3774
3845
  key: "getRightElements",
3775
3846
  value: function getRightElements(elementId) {
3776
3847
  var result = this.getCellsInGridByElementId(elementId);
3777
- var curGrid = result.backside ? this.backGrid : this.frontGrid;
3848
+ var curGrid = result.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3778
3849
  var rightElements = [];
3779
3850
  var rightElementIds = [];
3780
- if (curGrid.length > result.endColIndex + 1) {
3781
- for (var i = result.startRowIndex; i <= result.endRowIndex; i++) {
3782
- var cell = curGrid[result.endColIndex + 1][i];
3783
- if (cell) {
3784
- if (rightElementIds.indexOf(cell.plannerElementId) == -1) {
3785
- rightElementIds.push(cell.plannerElementId);
3786
- rightElements.push(this.plannerElements.get(cell.plannerElementId));
3787
- }
3788
- }
3851
+ var element = result.cells[0].plannedElement;
3852
+ if (!element) return rightElements;
3853
+ for (var y = element.area.fromY; y < element.area.toY; y++) {
3854
+ var _curGrid$element$area2, _cell$plannedElement4;
3855
+ var cell = (_curGrid$element$area2 = curGrid[element.area.toX]) === null || _curGrid$element$area2 === void 0 ? void 0 : _curGrid$element$area2[y];
3856
+ var _elementId2 = cell === null || cell === void 0 || (_cell$plannedElement4 = cell.plannedElement) === null || _cell$plannedElement4 === void 0 ? void 0 : _cell$plannedElement4.elementId;
3857
+ if (cell && _elementId2 && rightElementIds.indexOf(_elementId2) == -1) {
3858
+ rightElementIds.push(_elementId2);
3859
+ rightElements.push(this.plannerElements.get(_elementId2));
3789
3860
  }
3790
3861
  }
3791
3862
  return rightElements;
@@ -3799,7 +3870,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3799
3870
  key: "getElementHasLeftElement",
3800
3871
  value: function getElementHasLeftElement(elementId) {
3801
3872
  var result = this.getCellsInGridByElementId(elementId);
3802
- var curGrid = result.backside ? this.backGrid : this.frontGrid;
3873
+ var curGrid = result.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3803
3874
  if (result.startColIndex > 0 && curGrid[result.startColIndex - 1][result.startRowIndex]) {
3804
3875
  return true;
3805
3876
  }
@@ -3817,21 +3888,21 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3817
3888
  key: "getLeftElements",
3818
3889
  value: function getLeftElements(elementId) {
3819
3890
  var result = this.getCellsInGridByElementId(elementId);
3820
- var curGrid = result.backside ? this.backGrid : this.frontGrid;
3821
- var leftElements = [];
3822
- var leftElementIds = [];
3823
- if (result.startColIndex - 1 >= 0) {
3824
- for (var i = result.startRowIndex; i <= result.endRowIndex; i++) {
3825
- var cell = curGrid[result.startColIndex - 1][i];
3826
- if (cell) {
3827
- if (leftElementIds.indexOf(cell.plannerElementId) == -1) {
3828
- leftElementIds.push(cell.plannerElementId);
3829
- leftElements.push(this.plannerElements.get(cell.plannerElementId));
3830
- }
3831
- }
3891
+ var curGrid = result.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3892
+ var rightElements = [];
3893
+ var rightElementIds = [];
3894
+ var element = result.cells[0].plannedElement;
3895
+ if (!element) return rightElements;
3896
+ for (var y = element.area.fromY; y < element.area.toY; y++) {
3897
+ var _curGrid, _cell$plannedElement5;
3898
+ var cell = (_curGrid = curGrid[element.area.fromX - 1]) === null || _curGrid === void 0 ? void 0 : _curGrid[y];
3899
+ var _elementId3 = cell === null || cell === void 0 || (_cell$plannedElement5 = cell.plannedElement) === null || _cell$plannedElement5 === void 0 ? void 0 : _cell$plannedElement5.elementId;
3900
+ if (cell && _elementId3 && rightElementIds.indexOf(_elementId3) == -1) {
3901
+ rightElementIds.push(_elementId3);
3902
+ rightElements.push(this.plannerElements.get(_elementId3));
3832
3903
  }
3833
3904
  }
3834
- return leftElements;
3905
+ return rightElements;
3835
3906
  }
3836
3907
 
3837
3908
  /*
@@ -3842,15 +3913,29 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3842
3913
  }, {
3843
3914
  key: "getAllElementsInColumn",
3844
3915
  value: function getAllElementsInColumn(index, fromBackmodul) {
3845
- var curGrid = fromBackmodul ? this.backGrid : this.frontGrid;
3916
+ var orderBottomDown = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
3917
+ var curGrid = fromBackmodul ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3846
3918
  var allElements = [];
3847
3919
  var allElementIds = [];
3848
- if (curGrid.length > index) {
3920
+ if (!curGrid[index]) return allElements;
3921
+ if (orderBottomDown) {
3849
3922
  for (var i = 0; i < curGrid[index].length; i++) {
3923
+ var _cell$plannedElement6;
3850
3924
  var cell = curGrid[index][i];
3851
- if (cell && allElementIds.indexOf(cell.plannerElementId) == -1) {
3852
- allElementIds.push(cell.plannerElementId);
3853
- allElements.push(this.plannerElements.get(cell.plannerElementId));
3925
+ var elementId = cell === null || cell === void 0 || (_cell$plannedElement6 = cell.plannedElement) === null || _cell$plannedElement6 === void 0 ? void 0 : _cell$plannedElement6.elementId;
3926
+ if (elementId && cell && allElementIds.indexOf(elementId) == -1) {
3927
+ allElementIds.push(elementId);
3928
+ allElements.push(this.plannerElements.get(elementId));
3929
+ }
3930
+ }
3931
+ } else {
3932
+ for (var i = curGrid[index].length - 1; i >= 0; i--) {
3933
+ var _cell3$plannedElement;
3934
+ var _cell3 = curGrid[index][i];
3935
+ var _elementId4 = _cell3 === null || _cell3 === void 0 || (_cell3$plannedElement = _cell3.plannedElement) === null || _cell3$plannedElement === void 0 ? void 0 : _cell3$plannedElement.elementId;
3936
+ if (_cell3 && _elementId4 && allElementIds.indexOf(_elementId4) == -1) {
3937
+ allElementIds.push(_elementId4);
3938
+ allElements.push(this.plannerElements.get(_elementId4));
3854
3939
  }
3855
3940
  }
3856
3941
  }
@@ -3863,7 +3948,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3863
3948
  }, {
3864
3949
  key: "getColumnCount",
3865
3950
  value: function getColumnCount() {
3866
- return this.frontGrid.length;
3951
+ return this.generalPlanningState.grids[0].matrix.length;
3867
3952
  }
3868
3953
 
3869
3954
  /**
@@ -3873,7 +3958,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3873
3958
  }, {
3874
3959
  key: "getRowCount",
3875
3960
  value: function getRowCount(colIndex, fromBackmodul) {
3876
- return fromBackmodul ? this.backGrid[colIndex].length : this.frontGrid[colIndex].length;
3961
+ return fromBackmodul ? this.generalPlanningState.grids[1].matrix[colIndex].length : this.generalPlanningState.grids[0].matrix[colIndex].length;
3877
3962
  }
3878
3963
 
3879
3964
  /*
@@ -3884,15 +3969,17 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3884
3969
  }, {
3885
3970
  key: "getAllElementsInRow",
3886
3971
  value: function getAllElementsInRow(index, fromBackmodul) {
3887
- var curGrid = fromBackmodul ? this.backGrid : this.frontGrid;
3972
+ var curGrid = fromBackmodul ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3888
3973
  var allElements = [];
3889
3974
  var allElementIds = [];
3890
3975
  for (var i = 0; i < curGrid.length; i++) {
3891
3976
  if (curGrid[i].length > index) {
3977
+ var _cell$plannedElement7;
3892
3978
  var cell = curGrid[i][index];
3893
- if (cell && allElementIds.indexOf(cell.plannerElementId) == -1) {
3894
- allElementIds.push(cell.plannerElementId);
3895
- allElements.push(this.plannerElements.get(cell.plannerElementId));
3979
+ var elementId = cell === null || cell === void 0 || (_cell$plannedElement7 = cell.plannedElement) === null || _cell$plannedElement7 === void 0 ? void 0 : _cell$plannedElement7.elementId;
3980
+ if (cell && elementId && allElementIds.indexOf(elementId) == -1) {
3981
+ allElementIds.push(elementId);
3982
+ allElements.push(this.plannerElements.get(elementId));
3896
3983
  }
3897
3984
  }
3898
3985
  }
@@ -3906,7 +3993,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3906
3993
  }, {
3907
3994
  key: "getSizeOfHighesRow",
3908
3995
  value: function getSizeOfHighesRow(fromBackmodul) {
3909
- var curGrid = fromBackmodul ? this.backGrid : this.frontGrid;
3996
+ var curGrid = fromBackmodul ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3910
3997
  var highestRow = 0;
3911
3998
  for (var i = 0; i < curGrid.length; i++) {
3912
3999
  for (var j = curGrid[i].length; j >= 0; j--) {
@@ -3935,69 +4022,39 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3935
4022
  }, {
3936
4023
  key: "getNeighborElements",
3937
4024
  value: function getNeighborElements(elementId, dir) {
3938
- var cellPos = this.getCellsInGridByElementId(elementId);
3939
- var curGrid = cellPos.backside ? this.backGrid : this.frontGrid;
4025
+ var _curGrid$area$toX, _curGrid$area$toX2, _curGrid2, _curGrid3, _curGrid$area$fromX, _topNeighbour$planned, _curGrid$area$fromX2, _downNeighbour$planne;
4026
+ var res = this.getCellsInGridByElementId(elementId);
4027
+ var curGrid = res.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3940
4028
  var result = [];
3941
- var resultPlannerIds = [];
4029
+ var plannedElement = res.cells[0].plannedElement;
4030
+ if (!plannedElement) return result;
3942
4031
  switch (dir) {
3943
- case 'TOP':
3944
- for (var i = cellPos.startColIndex; i <= cellPos.endColIndex; i++) {
3945
- var neighborX = i;
3946
- var neighborY = cellPos.endRowIndex + 1;
3947
- if (curGrid[neighborX].length > neighborY) {
3948
- var neighborCell = curGrid[neighborX][neighborY];
3949
- if (neighborCell && resultPlannerIds.indexOf(neighborCell.plannerElementId) == -1) {
3950
- resultPlannerIds.push(neighborCell.plannerElementId);
3951
- result.push(this.plannerElements.get(neighborCell.plannerElementId));
3952
- }
3953
- }
3954
- }
3955
- break;
3956
- case 'DOWN':
3957
- for (var i = cellPos.startColIndex; i <= cellPos.endColIndex; i++) {
3958
- var _neighborX = i;
3959
- var _neighborY = cellPos.startRowIndex - 1;
3960
- if (_neighborY >= 0) {
3961
- var _neighborCell = curGrid[_neighborX][_neighborY];
3962
- if (_neighborCell && resultPlannerIds.indexOf(_neighborCell.plannerElementId) == -1) {
3963
- resultPlannerIds.push(_neighborCell.plannerElementId);
3964
- result.push(this.plannerElements.get(_neighborCell.plannerElementId));
3965
- }
3966
- }
3967
- }
4032
+ case 'RIGHT':
4033
+ // only clean neighbours (for docking) add property if you also need clean ones
4034
+ var rLowestNeighbour = (_curGrid$area$toX = curGrid[plannedElement.area.toX]) === null || _curGrid$area$toX === void 0 || (_curGrid$area$toX = _curGrid$area$toX[plannedElement.area.fromY]) === null || _curGrid$area$toX === void 0 || (_curGrid$area$toX = _curGrid$area$toX.plannedElement) === null || _curGrid$area$toX === void 0 ? void 0 : _curGrid$area$toX.elementId;
4035
+ var rHighestNeighbour = (_curGrid$area$toX2 = curGrid[plannedElement.area.toX]) === null || _curGrid$area$toX2 === void 0 || (_curGrid$area$toX2 = _curGrid$area$toX2[plannedElement.area.toY - 1]) === null || _curGrid$area$toX2 === void 0 || (_curGrid$area$toX2 = _curGrid$area$toX2.plannedElement) === null || _curGrid$area$toX2 === void 0 ? void 0 : _curGrid$area$toX2.elementId;
4036
+ if (rLowestNeighbour == rHighestNeighbour && rLowestNeighbour) result.push(this.plannerElements.get(rLowestNeighbour));
3968
4037
  break;
3969
4038
  case 'LEFT':
3970
- for (var i = cellPos.startRowIndex; i <= cellPos.endRowIndex; i++) {
3971
- var _neighborX2 = cellPos.startColIndex - 1;
3972
- var _neighborY2 = i;
3973
- if (_neighborX2 >= 0) {
3974
- var _neighborCell2 = curGrid[_neighborX2][_neighborY2];
3975
- if (_neighborCell2 && resultPlannerIds.indexOf(_neighborCell2.plannerElementId) == -1) {
3976
- resultPlannerIds.push(_neighborCell2.plannerElementId);
3977
- result.push(this.plannerElements.get(_neighborCell2.plannerElementId));
3978
- }
3979
- }
3980
- }
4039
+ var lowestNeighbour = (_curGrid2 = curGrid[plannedElement.area.fromX - 1]) === null || _curGrid2 === void 0 || (_curGrid2 = _curGrid2[plannedElement.area.fromY]) === null || _curGrid2 === void 0 || (_curGrid2 = _curGrid2.plannedElement) === null || _curGrid2 === void 0 ? void 0 : _curGrid2.elementId;
4040
+ var highestNeighbour = (_curGrid3 = curGrid[plannedElement.area.fromX - 1]) === null || _curGrid3 === void 0 || (_curGrid3 = _curGrid3[plannedElement.area.toY - 1]) === null || _curGrid3 === void 0 || (_curGrid3 = _curGrid3.plannedElement) === null || _curGrid3 === void 0 ? void 0 : _curGrid3.elementId;
4041
+ if (lowestNeighbour == highestNeighbour && lowestNeighbour) result.push(this.plannerElements.get(lowestNeighbour));
3981
4042
  break;
3982
- case 'RIGHT':
3983
- for (var i = cellPos.startRowIndex; i <= cellPos.endRowIndex; i++) {
3984
- var _neighborX3 = cellPos.startColIndex + 1;
3985
- var _neighborY3 = i;
3986
- if (curGrid.length > _neighborX3) {
3987
- var _neighborCell3 = curGrid[_neighborX3][_neighborY3];
3988
- if (_neighborCell3 && resultPlannerIds.indexOf(_neighborCell3.plannerElementId) == -1) {
3989
- resultPlannerIds.push(_neighborCell3.plannerElementId);
3990
- result.push(this.plannerElements.get(_neighborCell3.plannerElementId));
3991
- }
3992
- }
3993
- }
4043
+ case 'TOP':
4044
+ var topNeighbour = (_curGrid$area$fromX = curGrid[plannedElement.area.fromX]) === null || _curGrid$area$fromX === void 0 ? void 0 : _curGrid$area$fromX[plannedElement.area.toY];
4045
+ var tElementId = topNeighbour === null || topNeighbour === void 0 || (_topNeighbour$planned = topNeighbour.plannedElement) === null || _topNeighbour$planned === void 0 ? void 0 : _topNeighbour$planned.elementId;
4046
+ if (tElementId) result.push(this.plannerElements.get(tElementId));
4047
+ break;
4048
+ case 'DOWN':
4049
+ var downNeighbour = (_curGrid$area$fromX2 = curGrid[plannedElement.area.fromX]) === null || _curGrid$area$fromX2 === void 0 ? void 0 : _curGrid$area$fromX2[plannedElement.area.fromY - 1];
4050
+ var dElementId = downNeighbour === null || downNeighbour === void 0 || (_downNeighbour$planne = downNeighbour.plannedElement) === null || _downNeighbour$planne === void 0 ? void 0 : _downNeighbour$planne.elementId;
4051
+ if (dElementId) result.push(this.plannerElements.get(dElementId));
3994
4052
  break;
3995
4053
  case 'BACK':
3996
4054
  if (this.hasActiveBackside) {
3997
- var plannerElement = this.getPlannerElementAtGridPos(cellPos.startColIndex, cellPos.startRowIndex, true);
4055
+ var plannerElement = this.getPlannerElementAtGridPos(res.startColIndex, res.startRowIndex, true);
3998
4056
  if (plannerElement != undefined) result = [plannerElement];
3999
4057
  }
4000
- break;
4001
4058
  }
4002
4059
  return result;
4003
4060
  }
@@ -4053,22 +4110,29 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4053
4110
  var depth = 0;
4054
4111
  var height = 0;
4055
4112
  var checkedElementIds = [];
4056
- for (var i = 0; i < this.frontGrid.length; i++) {
4113
+ var frontGrid = this.generalPlanningState.grids[0].matrix;
4114
+ for (var x = 0; x < frontGrid.length;) {
4115
+ var _row$0$plannedElement, _row$0$plannedElement2;
4057
4116
  var curHeight = 0;
4058
- for (var j = 0; j < this.frontGrid[i].length; j++) {
4059
- var cell = this.frontGrid[i][j];
4060
- if (cell && checkedElementIds.indexOf(cell.plannerElementId) == -1) {
4061
- curHeight += this.plannerElements.get(cell.plannerElementId).getHeight();
4062
- if (i == 0 && j == 0) depth = this.plannerElements.get(cell.plannerElementId).getDepth();
4117
+ var row = frontGrid[x];
4118
+ for (var y = 0; y < row.length;) {
4119
+ var _cell4, _cell$plannedElement$, _cell$plannedElement8;
4120
+ var cell = row[y];
4121
+ var elementId = (_cell4 = cell) === null || _cell4 === void 0 || (_cell4 = _cell4.plannedElement) === null || _cell4 === void 0 ? void 0 : _cell4.elementId;
4122
+ if (elementId && cell && checkedElementIds.indexOf(elementId) == -1) {
4123
+ curHeight += this.plannerElements.get(elementId).getHeight();
4124
+ if (x == 0 && y == 0) depth = this.plannerElements.get(elementId).getDepth();
4063
4125
  }
4126
+ y = (_cell$plannedElement$ = (_cell$plannedElement8 = cell.plannedElement) === null || _cell$plannedElement8 === void 0 ? void 0 : _cell$plannedElement8.area.toY) !== null && _cell$plannedElement$ !== void 0 ? _cell$plannedElement$ : y + 1;
4064
4127
  }
4065
4128
  if (curHeight > height) height = curHeight;
4066
- var curWidth = this.getGridColumnWidth(i);
4067
- if (correctSizeSystem4 && i > 0) {
4129
+ var curWidth = this.getGridColumnWidth(x);
4130
+ if (correctSizeSystem4 && x > 0) {
4068
4131
  //Correct width
4069
4132
  if (curWidth == 77.9) curWidth = 75;else if (curWidth == 40.4) curWidth = 37.5;else if (curWidth == 21.7) curWidth = 18.75;
4070
4133
  }
4071
4134
  width += curWidth;
4135
+ x = (_row$0$plannedElement = (_row$0$plannedElement2 = row[0].plannedElement) === null || _row$0$plannedElement2 === void 0 ? void 0 : _row$0$plannedElement2.area.toX) !== null && _row$0$plannedElement !== void 0 ? _row$0$plannedElement : x + 1;
4072
4136
  }
4073
4137
  if (this.hasActiveBackside) depth *= 2;
4074
4138
  return new index.Vector3(width, height, depth);
@@ -4081,21 +4145,26 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4081
4145
  }, {
4082
4146
  key: "getHighestElementsPerSeries",
4083
4147
  value: function getHighestElementsPerSeries() {
4148
+ var onBottom = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
4084
4149
  if (this.hasActiveBackside) throw new Error('this function is doesnt implement the backside logic (yet)');
4085
4150
  var result = [];
4086
4151
  var lastHeight = -1;
4087
- for (var idx = 0; idx < this.getColumnCount(); idx++) {
4088
- var row = this.frontGrid[idx];
4089
- var height = row.reduce(function (added, column) {
4090
- return column.height + added;
4091
- }, 0);
4092
- if (height == lastHeight) {
4152
+ for (var x = 0; x < this.getColumnCount();) {
4153
+ var row = this.generalPlanningState.grids[0].matrix[x];
4154
+ var height = 0;
4155
+ for (var y = 0; y < row.length;) {
4156
+ var element = row[y].plannedElement;
4157
+ height += element.size.height;
4158
+ y = element.area.toY;
4159
+ }
4160
+ if (Math.round(height) == Math.round(lastHeight) || onBottom) {
4093
4161
  if (!result[result.length - 1]) result.push([]);
4094
- result[result.length - 1].push(this.getPlannerElementAtGridPos(idx, row.length - 1, false));
4162
+ result[result.length - 1].push(this.getPlannerElementAtGridPos(x, row.length - 1, false));
4095
4163
  } else {
4096
- result.push([this.getPlannerElementAtGridPos(idx, row.length - 1, false)]);
4164
+ result.push([this.getPlannerElementAtGridPos(x, row.length - 1, false)]);
4097
4165
  }
4098
4166
  lastHeight = height;
4167
+ x = row[row.length - 1].plannedElement ? row[row.length - 1].plannedElement.area.toX : x + 1;
4099
4168
  }
4100
4169
  return result;
4101
4170
  }
@@ -4127,6 +4196,60 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4127
4196
  };
4128
4197
  }
4129
4198
 
4199
+ /**
4200
+ * Get all the Elements need to fill up for the copy of Element x fxe:
4201
+ *
4202
+ * [4] ->
4203
+ * [3]
4204
+ * [2]
4205
+ * [0][1]
4206
+ *
4207
+ * returns element 4, 3 and 2 because those are needed to copy in order
4208
+ * for the copy of element 4 to not float
4209
+ */
4210
+ }, {
4211
+ key: "getAllElementsToFillUp",
4212
+ value: function getAllElementsToFillUp(elementId, dir) {
4213
+ var _this = this;
4214
+ var curPos = this.getCellsInGridByElementId(elementId);
4215
+
4216
+ //columns and rows are swapped don't ask me why
4217
+ var element = curPos.cells[0].plannedElement;
4218
+ var index = {
4219
+ x: curPos.startColIndex,
4220
+ y: curPos.startRowIndex
4221
+ };
4222
+ var curGrid = curPos.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
4223
+ var plannerIdsToFill = [];
4224
+ var existingPlannerIds = [];
4225
+ var _loop = function _loop(_y) {
4226
+ var _curGrid$index$x$_y;
4227
+ var elementToCopy = (_curGrid$index$x$_y = curGrid[index.x][_y]) === null || _curGrid$index$x$_y === void 0 ? void 0 : _curGrid$index$x$_y.plannedElement;
4228
+ if (!elementToCopy) {
4229
+ y = _y;
4230
+ return 1;
4231
+ } // break
4232
+ var length = element.area.toX - element.area.fromX;
4233
+ var d = dir == 'RIGHT' ? +length : -length;
4234
+ var isPlanned = curGrid.every(function (x, idx) {
4235
+ var _x$_y;
4236
+ return idx < element.area.fromX + d || idx >= element.area.toX + d || ((_x$_y = x[_y]) === null || _x$_y === void 0 ? void 0 : _x$_y.plannedElement);
4237
+ });
4238
+ var neighbour = _this.getNeighborElements(elementToCopy.elementId, dir);
4239
+ if (neighbour.length == 0 && !isPlanned && elementToCopy) plannerIdsToFill.push(elementToCopy.elementId);else if (elementToCopy) existingPlannerIds.push(elementToCopy.elementId);
4240
+ _y = elementToCopy.area.toY;
4241
+ y = _y;
4242
+ };
4243
+ for (var y = 0; y <= index.y;) {
4244
+ if (_loop(y)) break;
4245
+ }
4246
+ // if there is nothing to fill we copy everyting
4247
+ return {
4248
+ elements: plannerIdsToFill.length == 0 ? existingPlannerIds : plannerIdsToFill,
4249
+ backside: curPos.backside
4250
+ };
4251
+ }
4252
+
4130
4253
  /**
4131
4254
  * Returns all Elements that are under the specified element
4132
4255
  * AAAE
@@ -4143,13 +4266,15 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4143
4266
  elements: [],
4144
4267
  backside: false
4145
4268
  };
4146
- var curGrid = curPos.backside ? this.backGrid : this.frontGrid;
4269
+ var curGrid = curPos.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
4147
4270
  var resultPlannerIds = [];
4148
- for (var i = curPos.startColIndex; i <= curPos.endColIndex; i++) {
4271
+ for (var i = curPos.startColIndex; i < curPos.endColIndex; i++) {
4149
4272
  for (var j = curPos.startRowIndex--; j >= 0; j--) {
4273
+ var _neighborCell$planned;
4150
4274
  var neighborCell = curGrid[i][j];
4151
- if (neighborCell && resultPlannerIds.indexOf(neighborCell.plannerElementId) == -1) {
4152
- resultPlannerIds.push(neighborCell.plannerElementId);
4275
+ var _elementId5 = neighborCell === null || neighborCell === void 0 || (_neighborCell$planned = neighborCell.plannedElement) === null || _neighborCell$planned === void 0 ? void 0 : _neighborCell$planned.elementId;
4276
+ if (neighborCell && _elementId5 && resultPlannerIds.indexOf(_elementId5) == -1) {
4277
+ resultPlannerIds.push(_elementId5);
4153
4278
  }
4154
4279
  }
4155
4280
  }
@@ -4185,56 +4310,78 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4185
4310
  }
4186
4311
  }, {
4187
4312
  key: "prepareGridForColCopy",
4188
- value: function prepareGridForColCopy(elementId, copyIndex) {
4189
- if (copyIndex.y > 0) return;
4313
+ value: function prepareGridForColCopy(elementId, relativeCopyIndex) {
4314
+ var _this$generalPlanning4, _this$generalPlanning5, _frontGrid;
4315
+ if (relativeCopyIndex.y > 0) return;
4190
4316
  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] = [];
4317
+ var copyDirectionIsRight = relativeCopyIndex.x > 0;
4318
+ // We add the relativeCopyIndex only if positive otherwise the whole grid get's
4319
+ // shifted to the right bexause can`t got negative
4320
+ var element = elementToCopyPos.cells[0].plannedElement;
4321
+ var absoluteCopyIndex = {
4322
+ x: element.area.toX - 1 + relativeCopyIndex.x,
4323
+ y: element.area.fromY + relativeCopyIndex.y
4324
+ };
4325
+ if (relativeCopyIndex.x < 0) absoluteCopyIndex.x = elementToCopyPos.cells[0].plannedElement.area.fromX - 1;
4326
+
4327
+ // check if the side we copy to is already blocked
4328
+ // if blocked and we copy to the left the grid get's shifted so the copy
4329
+ // get's the index of the copied
4330
+ var frontGrid = this.generalPlanningState.grids[0].matrix;
4331
+ var backGrid = (_this$generalPlanning4 = (_this$generalPlanning5 = this.generalPlanningState.grids[1]) === null || _this$generalPlanning5 === void 0 ? void 0 : _this$generalPlanning5.matrix) !== null && _this$generalPlanning4 !== void 0 ? _this$generalPlanning4 : 0;
4332
+ var widthCopyArea = element.area.toX - element.area.fromX;
4333
+ var isBlocked = (_frontGrid = frontGrid[elementToCopyPos.cells[0].index.x + relativeCopyIndex.x]) === null || _frontGrid === void 0 ? void 0 : _frontGrid[elementToCopyPos.cells[0].index.y];
4334
+ if (absoluteCopyIndex.x == -1 || isBlocked && !copyDirectionIsRight) absoluteCopyIndex.x -= relativeCopyIndex.x;
4335
+
4336
+ // new copy logic fill up like this:
4337
+ // [][] -> | [][][]
4338
+ // [][] | [][][]
4339
+ // [][][] | [][][]
4340
+ // not like this (old logic)
4341
+ // [][] -> | [][][]
4342
+ // [][] | [][][]
4343
+ // [][][] | [][][][]
4344
+ function moveGrid(plannedCells) {
4345
+ var grid = new Array();
4346
+ var rightNeighbour = plannedCells.filter(function (c) {
4347
+ return c.index.x == element.area.toX;
4348
+ });
4349
+ var rightNeighbourOfCopy = rightNeighbour.find(function (c) {
4350
+ return c.index.y == absoluteCopyIndex.y;
4351
+ });
4352
+ var leftNeighbour = plannedCells.filter(function (c) {
4353
+ return c.index.x == element.area.fromX - 1;
4354
+ });
4355
+ var leftNeighbourOfCopy = leftNeighbour.find(function (neighbour) {
4356
+ return neighbour.index.y == absoluteCopyIndex.y;
4357
+ });
4358
+ plannedCells.forEach(function (cell) {
4359
+ // if we can't fill up (need to move the grid)
4360
+ if (cell.index.x >= absoluteCopyIndex.x && (copyDirectionIsRight && (rightNeighbourOfCopy || rightNeighbour.length == 0) || !copyDirectionIsRight && (leftNeighbourOfCopy || leftNeighbour.length == 0) || absoluteCopyIndex.x == -1)) {
4361
+ cell.index.x += widthCopyArea;
4362
+ cell.plannedElement.area.fromX += widthCopyArea;
4363
+ cell.plannedElement.area.toX += widthCopyArea;
4364
+ }
4365
+ if (!grid[cell.index.x]) grid[cell.index.x] = [];
4366
+ grid[cell.index.x][cell.index.y] = cell;
4367
+ });
4368
+ return grid;
4213
4369
  }
4370
+ frontGrid = moveGrid(this.getAllUsedCellsInGrid(false));
4371
+ for (var x = 0; x < widthCopyArea; x++) if (!frontGrid[absoluteCopyIndex.x + x]) frontGrid[absoluteCopyIndex.x + x] = [];
4372
+ this.generalPlanningState.grids[0].matrix = frontGrid;
4214
4373
  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;
4221
- }
4222
- if (!this.backGrid[curCellBackGrid.index.x]) {
4223
- this.backGrid[curCellBackGrid.index.x] = [];
4224
- }
4225
- this.backGrid[curCellBackGrid.index.x][curCellBackGrid.index.y] = curCellBackGrid;
4226
- }
4227
-
4228
- //Init empty cols
4229
- for (var i = copyStartIndex; i < copyStartIndex + copyIndexCount; i++) {
4230
- if (!this.backGrid[i]) this.backGrid[i] = [];
4231
- }
4374
+ backGrid = moveGrid(this.getAllUsedCellsInGrid(true));
4375
+ for (var _x2 = 0; _x2 < widthCopyArea; _x2++) if (!backGrid[absoluteCopyIndex.x + _x2]) backGrid[absoluteCopyIndex.x + _x2] = [];
4376
+ this.generalPlanningState.grids[1].matrix = backGrid;
4232
4377
  }
4233
4378
  }
4234
4379
  }, {
4235
4380
  key: "prepareGridForBackSideCopy",
4236
4381
  value: function prepareGridForBackSideCopy() {
4237
- this.backGrid = new Array();
4382
+ this.generalPlanningState.grids[1] = {
4383
+ matrix: [[]]
4384
+ };
4238
4385
  this.hasActiveBackside = true;
4239
4386
  }
4240
4387
 
@@ -4248,11 +4395,10 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4248
4395
  }, {
4249
4396
  key: "addElementAtGridPos",
4250
4397
  value: function addElementAtGridPos(newElement, col, row, fromBackmodul) {
4251
- var curGrid = fromBackmodul ? this.backGrid : this.frontGrid;
4252
- var result = this.createNewCells(newElement, col, row, fromBackmodul);
4253
- for (var i = 0; i < result.cells.length; i++) {
4254
- var cell = result.cells[i];
4255
- // Prüfen, ob das innere Array existiert, sonst erstellen
4398
+ var curGrid = fromBackmodul ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
4399
+ var cells = this.createNewCells(newElement, col, row, fromBackmodul);
4400
+ for (var i = 0; i < cells.length; i++) {
4401
+ var cell = cells[i];
4256
4402
  if (!curGrid[cell.index.x]) {
4257
4403
  curGrid[cell.index.x] = [];
4258
4404
  }
@@ -4261,6 +4407,67 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4261
4407
  this.plannerElements.set(newElement.getElementId(), newElement);
4262
4408
  if (fromBackmodul) this.hasActiveBackside = true;
4263
4409
  }
4410
+ /**
4411
+ * move element
4412
+ * @param elementIDToMove
4413
+ * @param copyInfo
4414
+ */
4415
+ }, {
4416
+ key: "moveElementAsCopy",
4417
+ value: function moveElementAsCopy(elementId, absoluteIndex) {
4418
+ var elementData = this.plannerElements.get(elementId);
4419
+ var deletedCells = this.getCellsInGridByElementId(elementId);
4420
+ if (!elementData) return;
4421
+ this.deleteElement(elementId, "STD");
4422
+ var curGrid = this.generalPlanningState.grids[0].matrix;
4423
+ var cells = undefined;
4424
+ if (absoluteIndex.x < 0 || absoluteIndex.y == 0 && deletedCells.endRowIndex >= absoluteIndex.x // moved 0 to 4 so now shift to left
4425
+ ) {
4426
+ var dir = deletedCells.endColIndex >= absoluteIndex.x;
4427
+ if (deletedCells.startColIndex >= absoluteIndex.x) absoluteIndex.x -= deletedCells.endColIndex - deletedCells.startColIndex;
4428
+ if (absoluteIndex.x < 0) absoluteIndex.x = 0;
4429
+ cells = this.createNewCells(elementData, absoluteIndex.x, absoluteIndex.y, false);
4430
+ var movedGrid = [];
4431
+ var element = cells[0].plannedElement;
4432
+ curGrid.forEach(function (_, x) {
4433
+ _.forEach(function (_, y) {
4434
+ var newX = x;
4435
+ var shiftX = 0;
4436
+ if (y == absoluteIndex.y) {
4437
+ newX += dir ? element.area.toX - element.area.fromX : -(element.area.toX - element.area.fromX);
4438
+ shiftX = dir ? element.area.toX - element.area.fromX : -(element.area.toX - element.area.fromX);
4439
+ }
4440
+ if (!movedGrid[newX]) movedGrid[newX] = [];
4441
+ var cellElem = curGrid[x][y].plannedElement;
4442
+ var newCell = {
4443
+ plannedElement: _objectSpread(_objectSpread({}, cellElem), {}, {
4444
+ area: {
4445
+ fromX: newX,
4446
+ toX: cellElem.area.toX + shiftX,
4447
+ fromY: cellElem.area.fromY,
4448
+ toY: cellElem.area.toY
4449
+ }
4450
+ }),
4451
+ index: {
4452
+ x: newX,
4453
+ y: y
4454
+ }
4455
+ };
4456
+ movedGrid[newX][y] = newCell;
4457
+ });
4458
+ });
4459
+ curGrid = movedGrid;
4460
+ } else {
4461
+ if (absoluteIndex.x > deletedCells.startColIndex && absoluteIndex.y == deletedCells.startRowIndex) absoluteIndex.x -= deletedCells.endColIndex - deletedCells.startColIndex;
4462
+ cells = this.createNewCells(elementData, absoluteIndex.x, absoluteIndex.y, false);
4463
+ }
4464
+ for (var i = 0; i < cells.length; i++) {
4465
+ if (!curGrid[cells[i].index.x]) curGrid[cells[i].index.x] = [];
4466
+ curGrid[cells[i].index.x][cells[i].index.y] = cells[i];
4467
+ }
4468
+ this.plannerElements.set(elementId, elementData);
4469
+ this.generalPlanningState.grids[0].matrix = curGrid;
4470
+ }
4264
4471
 
4265
4472
  /**
4266
4473
  * Assume that the grid is already prepared and there is enough empty space for the new element.
@@ -4272,22 +4479,27 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4272
4479
  key: "addElementAsCopy",
4273
4480
  value: function addElementAsCopy(copiedElementId, newElement, copyIndex) {
4274
4481
  var curPos = this.getCellsInGridByElementId(copiedElementId);
4482
+ var area = curPos.cells[0].plannedElement.area;
4275
4483
  var cellIndex = {
4276
- x: curPos.endColIndex + copyIndex.x,
4277
- y: curPos.endRowIndex + copyIndex.y
4484
+ x: area.fromX,
4485
+ y: area.fromY
4278
4486
  };
4487
+ if (copyIndex.x > 0) cellIndex.x = area.toX - 1 + copyIndex.x;else if (copyIndex.x < 0) cellIndex.x = area.fromX - (area.toX - area.fromX);else if (copyIndex.y > 0) cellIndex.y = area.toY - 1 + copyIndex.y;
4279
4488
  var backsideForCopy = copyIndex.z == -1 || curPos.backside == true;
4280
- var newCellInfos = this.createNewCells(newElement, cellIndex.x, cellIndex.y, backsideForCopy);
4281
- var curGrid = backsideForCopy ? this.backGrid : this.frontGrid;
4282
- for (var i = 0; i < newCellInfos.cells.length; i++) {
4283
- if (!curGrid[newCellInfos.cells[i].index.x]) curGrid[newCellInfos.cells[i].index.x] = [];
4284
- curGrid[newCellInfos.cells[i].index.x][newCellInfos.cells[i].index.y] = newCellInfos.cells[i];
4489
+ if (cellIndex.x < 0) cellIndex.x = 0; // can't plan to negative space see prepareGridForColCopy
4490
+ var curGrid = backsideForCopy ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
4491
+ // can't float need to dock
4492
+ if (curGrid[cellIndex.x].length < cellIndex.y) cellIndex.y = curGrid[cellIndex.x].length;
4493
+ var cells = this.createNewCells(newElement, cellIndex.x, cellIndex.y, backsideForCopy);
4494
+ for (var i = 0; i < cells.length; i++) {
4495
+ if (!curGrid[cells[i].index.x]) curGrid[cells[i].index.x] = [];
4496
+ curGrid[cells[i].index.x][cells[i].index.y] = cells[i];
4285
4497
  }
4286
4498
  this.plannerElements.set(newElement.getElementId(), newElement);
4287
4499
  }
4288
4500
 
4289
4501
  /**
4290
- * This function deletes an Element from the grid.
4502
+ * This function deletes an Element from the grid.ShaderMaterial
4291
4503
  * If backsideModule is active, than the oppsite Element is deleted as well
4292
4504
  * If the boxPlanner_backside switch deletion type is set, do not delete the opposite element
4293
4505
  * If the last element in col was deleted, do delete whole col.
@@ -4308,12 +4520,75 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4308
4520
  }, {
4309
4521
  key: "updateGridElementDimensions",
4310
4522
  value: function updateGridElementDimensions(elementId, elementData) {
4523
+ var _this2 = this;
4311
4524
  if (!elementData) return;
4312
4525
  var res = this.getCellsInGridByElementId(elementId);
4526
+ var scpe = this.gridSetupParams.forceSingleCellPerElement;
4313
4527
  res.cells.forEach(function (cell) {
4314
- cell.width = elementData.width;
4315
- cell.height = elementData.height;
4528
+ if (!cell.plannedElement) return;
4529
+ cell.plannedElement.size.width = elementData.width;
4530
+ cell.plannedElement.size.height = elementData.height;
4531
+ cell.plannedElement.area = {
4532
+ fromX: cell.index.x,
4533
+ toX: !scpe ? Math.round(cell.index.x + elementData.width / _this2.gridSetupParams.fixCellRasterWidth) : cell.index.x + 1,
4534
+ fromY: cell.index.y,
4535
+ toY: !scpe ? Math.round(cell.index.y + elementData.height / _this2.gridSetupParams.fixCellRasterHeight) : cell.index.y + 1
4536
+ };
4316
4537
  });
4538
+ if (scpe) return;
4539
+ var newGrid = new Array();
4540
+ var plannedCells = this.getAllUsedCellsInGrid(false);
4541
+ plannedCells.forEach(function (cell) {
4542
+ var area = cell.plannedElement.area;
4543
+ if (newGrid.find(function (x) {
4544
+ return x.find(function (y) {
4545
+ var _y$plannedElement3, _cell$plannedElement9;
4546
+ return ((_y$plannedElement3 = y.plannedElement) === null || _y$plannedElement3 === void 0 ? void 0 : _y$plannedElement3.elementId) == ((_cell$plannedElement9 = cell.plannedElement) === null || _cell$plannedElement9 === void 0 ? void 0 : _cell$plannedElement9.elementId);
4547
+ });
4548
+ })) return;
4549
+ for (var x = area.fromX; x < area.toX; x++) {
4550
+ var _loop2 = function _loop2(y) {
4551
+ if (!newGrid[x]) newGrid[x] = [];
4552
+ if (y < area.fromY) {
4553
+ if (newGrid[x][y]) return 0; // continue
4554
+ var el = _this2.generalPlanningState.grids[0].matrix.findLast(function (_x) {
4555
+ return _x[y].plannedElement;
4556
+ });
4557
+ newGrid[x][y] = {
4558
+ index: {
4559
+ x: x,
4560
+ y: y
4561
+ },
4562
+ plannedElement: el && el.length > 0 ? el[0].plannedElement : undefined
4563
+ };
4564
+ return 0; // continue
4565
+ }
4566
+
4567
+ // if the element got smaller we need to move it to the neighbour
4568
+ //newGrid[x][y] = { ...cell, index: { x, y: y } };
4569
+ newGrid[x][y] = _objectSpread(_objectSpread({}, cell), {}, {
4570
+ index: {
4571
+ x: x,
4572
+ y: y
4573
+ },
4574
+ plannedElement: _objectSpread(_objectSpread({}, cell.plannedElement), {}, {
4575
+ area: {
4576
+ fromX: x,
4577
+ toX: x + (cell.plannedElement.area.toX - cell.plannedElement.area.fromX),
4578
+ fromY: y,
4579
+ toY: y + (cell.plannedElement.area.toY - cell.plannedElement.area.fromY)
4580
+ }
4581
+ })
4582
+ });
4583
+ },
4584
+ _ret;
4585
+ for (var y = 0; y < area.toY; y++) {
4586
+ _ret = _loop2(y);
4587
+ if (_ret === 0) continue;
4588
+ }
4589
+ }
4590
+ });
4591
+ if (res.backside) this.generalPlanningState.grids[1].matrix = newGrid;else this.generalPlanningState.grids[0].matrix = newGrid;
4317
4592
  }
4318
4593
 
4319
4594
  /**
@@ -4323,6 +4598,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4323
4598
  }, {
4324
4599
  key: "updateWorldPosOfElements",
4325
4600
  value: function updateWorldPosOfElements() {
4601
+ var _this$generalPlanning6, _this$generalPlanning7;
4326
4602
  //First remove all docking Point relation information
4327
4603
  var _iterator = _createForOfIteratorHelper(this.plannerElements.values()),
4328
4604
  _step;
@@ -4340,45 +4616,45 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4340
4616
  //First remove all docking Point relation information
4341
4617
 
4342
4618
  var allCheckedElementIds = [];
4343
- for (var i = 0; i < this.frontGrid.length; i++) {
4344
- for (var j = 0; j < this.frontGrid[i].length; j++) {
4345
- var cell = this.frontGrid[i][j];
4346
- if (allCheckedElementIds.indexOf(cell.plannerElementId) == -1) {
4347
- var element = this.plannerElements.get(cell.plannerElementId);
4348
- allCheckedElementIds.push(cell.plannerElementId);
4349
- var topNeighbors = this.getNeighborElements(cell.plannerElementId, 'TOP');
4350
- var rightNeighbors = this.getNeighborElements(cell.plannerElementId, 'RIGHT');
4351
- for (var n = 0; n < topNeighbors.length; n++) {
4352
- PlannerHandler2D.dockingPointHandlerInst.tryDockElement(element, 'AVO', [topNeighbors[n]]);
4353
- }
4354
- for (var n = 0; n < rightNeighbors.length; n++) {
4355
- PlannerHandler2D.dockingPointHandlerInst.tryDockElement(element, 'AVR', [rightNeighbors[n]]);
4356
- }
4619
+ var frontGrid = this.generalPlanningState.grids[0].matrix;
4620
+ var backGrid = (_this$generalPlanning6 = (_this$generalPlanning7 = this.generalPlanningState.grids[1]) === null || _this$generalPlanning7 === void 0 ? void 0 : _this$generalPlanning7.matrix) !== null && _this$generalPlanning6 !== void 0 ? _this$generalPlanning6 : [];
4621
+ for (var x = 0; x < frontGrid.length; x++) {
4622
+ for (var y = 0; y < frontGrid[x].length; y++) {
4623
+ var _cell$plannedElement10;
4624
+ var cell = frontGrid[x][y];
4625
+ var elementId = cell === null || cell === void 0 || (_cell$plannedElement10 = cell.plannedElement) === null || _cell$plannedElement10 === void 0 ? void 0 : _cell$plannedElement10.elementId;
4626
+ if (elementId && allCheckedElementIds.indexOf(elementId) == -1) {
4627
+ var element = this.plannerElements.get(elementId);
4628
+ allCheckedElementIds.push(elementId);
4629
+ var topNeighbors = this.getNeighborElements(elementId, 'TOP');
4630
+ var rightNeighbors = this.getNeighborElements(elementId, 'RIGHT');
4631
+ var leftNeighbors = this.getNeighborElements(elementId, 'LEFT');
4632
+ if (topNeighbors.length > 0) PlannerHandler2D.dockingPointHandlerInst.tryDockElement(element, 'AVO', [topNeighbors[0]]);
4633
+ if (leftNeighbors.length > 0) PlannerHandler2D.dockingPointHandlerInst.tryDockElement(element, 'AVL', [leftNeighbors[0]]);
4634
+ if (rightNeighbors.length > 0) PlannerHandler2D.dockingPointHandlerInst.tryDockElement(element, 'AVR', [rightNeighbors[0]]);
4357
4635
  element.PosNr = posNr;
4358
4636
  posNr++;
4359
4637
  }
4360
4638
  }
4361
4639
  }
4362
- for (var i = 0; i < this.backGrid.length; i++) {
4363
- 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);
4368
- var cellFrontGrid = this.frontGrid[i][j];
4369
- var elementFrontGrid = this.plannerElements.get(cellFrontGrid.plannerElementId);
4640
+ for (var i = 0; i < backGrid.length; i++) {
4641
+ for (var j = 0; j < backGrid[i].length; j++) {
4642
+ var _cell5$plannedElement;
4643
+ var _cell5 = backGrid[i][j];
4644
+ var _elementId6 = _cell5 === null || _cell5 === void 0 || (_cell5$plannedElement = _cell5.plannedElement) === null || _cell5$plannedElement === void 0 ? void 0 : _cell5$plannedElement.elementId;
4645
+ if (_elementId6 && allCheckedElementIds.indexOf(_elementId6) == -1) {
4646
+ var _element2 = this.plannerElements.get(_elementId6);
4647
+ allCheckedElementIds.push(_elementId6);
4648
+ var frontCell = frontGrid[i][j];
4649
+ var elementFrontGrid = this.plannerElements.get(frontCell.plannedElement.elementId);
4370
4650
  if (elementFrontGrid) {
4371
4651
  var targetDPFrontGrid = elementFrontGrid === null || elementFrontGrid === void 0 ? void 0 : elementFrontGrid.getDockingPointById('AVO_AVO_2_IL');
4372
4652
  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
4653
  }
4374
- var _topNeighbors = this.getNeighborElements(_cell4.plannerElementId, 'TOP');
4375
- var _rightNeighbors = this.getNeighborElements(_cell4.plannerElementId, 'RIGHT');
4376
- for (var n = 0; n < _topNeighbors.length; n++) {
4377
- PlannerHandler2D.dockingPointHandlerInst.tryDockElement(_element2, 'AVO', [_topNeighbors[n]]);
4378
- }
4379
- for (var n = 0; n < _rightNeighbors.length; n++) {
4380
- PlannerHandler2D.dockingPointHandlerInst.tryDockElement(_element2, 'AVL', [_rightNeighbors[n]]);
4381
- }
4654
+ var _topNeighbors = this.getNeighborElements(_elementId6, 'TOP');
4655
+ var _rightNeighbors = this.getNeighborElements(_elementId6, 'RIGHT');
4656
+ if (_topNeighbors.length > 0) PlannerHandler2D.dockingPointHandlerInst.tryDockElement(_element2, 'AVO', [_topNeighbors[0]]);
4657
+ if (_rightNeighbors.length > 0) PlannerHandler2D.dockingPointHandlerInst.tryDockElement(_element2, 'AVL', [_rightNeighbors[0]]);
4382
4658
  _element2.PosNr = posNr;
4383
4659
  posNr++;
4384
4660
  }
@@ -4406,10 +4682,10 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4406
4682
  _iterator2.f();
4407
4683
  }
4408
4684
  this.plannerElements.clear();
4409
- this.frontGrid = new Array();
4685
+ this.generalPlanningState.grids[0].matrix = [];
4410
4686
  if (this.hasActiveBackside) {
4411
4687
  this.hasActiveBackside = false;
4412
- this.backGrid = new Array();
4688
+ this.generalPlanningState.grids[1].matrix = [];
4413
4689
  }
4414
4690
  }
4415
4691
 
@@ -4435,7 +4711,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4435
4711
  _iterator3.f();
4436
4712
  }
4437
4713
  allElements = [];
4438
- this.backGrid = new Array();
4714
+ this.generalPlanningState.grids[1].matrix = [];
4439
4715
  }
4440
4716
  }, {
4441
4717
  key: "getPlannerHasActiveBackside",
@@ -4450,26 +4726,31 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4450
4726
  }, {
4451
4727
  key: "getBoundingBox",
4452
4728
  value: function getBoundingBox() {
4729
+ var _frontGrid$;
4730
+ var frontGrid = this.generalPlanningState.grids[0].matrix;
4731
+ var element = frontGrid === null || frontGrid === void 0 || (_frontGrid$ = frontGrid[0]) === null || _frontGrid$ === void 0 || (_frontGrid$ = _frontGrid$[0]) === null || _frontGrid$ === void 0 ? void 0 : _frontGrid$.plannedElement;
4453
4732
  var height = 0;
4454
4733
  var minX = 0;
4455
4734
  var maxX = 0;
4456
4735
  var curX = 0;
4457
4736
  var minZ = 0;
4458
- var curZ = this.plannerElements.get(this.frontGrid[0][0].plannerElementId).getDepth();
4737
+ var curZ = element ? element.size.depth : 0;
4459
4738
  var maxZ = 0;
4460
4739
  var curDir;
4461
4740
  curDir = 'RIGHT';
4462
4741
  var allCheckedElementIds = [];
4463
- for (var i = 0; i < this.frontGrid.length; i++) {
4464
- var groundCell = this.frontGrid[i][0];
4742
+ for (var i = 0; i < frontGrid.length; i++) {
4743
+ var _groundCell$plannedEl;
4744
+ var groundCell = frontGrid[i][0];
4465
4745
  if (!groundCell) break; //if on the lowest position the cell is empty, the grid ist finished - no wholes are allowed
4466
4746
 
4467
- if (allCheckedElementIds.indexOf(groundCell.plannerElementId) == -1) {
4468
- allCheckedElementIds.push(groundCell.plannerElementId);
4469
- var groundElement = this.plannerElements.get(groundCell.plannerElementId);
4747
+ var elementId = (_groundCell$plannedEl = groundCell.plannedElement) === null || _groundCell$plannedEl === void 0 ? void 0 : _groundCell$plannedEl.elementId;
4748
+ if (elementId && allCheckedElementIds.indexOf(elementId) == -1) {
4749
+ allCheckedElementIds.push(elementId);
4750
+ var groundElement = this.plannerElements.get(elementId);
4470
4751
  if (!groundElement) continue;
4471
4752
  //Check if the col has a corner.
4472
- var elementOption = this.getValueOfOptionOfArticle(groundCell.plannerElementId, 'OPTELEMENT');
4753
+ var elementOption = this.getValueOfOptionOfArticle(elementId, 'OPTELEMENT');
4473
4754
  if (curDir == 'RIGHT') {
4474
4755
  curX += groundElement.getWidth();
4475
4756
  } else if (curDir == 'FRONT') {
@@ -4538,7 +4819,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4538
4819
  var _curGrid$x;
4539
4820
  return ((_curGrid$x = curGrid[x]) === null || _curGrid$x === void 0 ? void 0 : _curGrid$x[y]) === undefined;
4540
4821
  };
4541
- var curGrid = elementCells.backside ? this.backGrid : this.frontGrid;
4822
+ var curGrid = elementCells.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
4542
4823
  var _iterator4 = _createForOfIteratorHelper(this.plannerElements.keys()),
4543
4824
  _step4;
4544
4825
  try {
@@ -4557,7 +4838,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4557
4838
 
4558
4839
  //Now we found a possible place
4559
4840
 
4560
- var locationInformation = this.createLocationInformation(element, elementCells.backside, this.createEmptyCells(otherElementCells.startColIndex, otherElementCells.endRowIndex + 1, otherElementCells.startColIndex, otherElementCells.endRowIndex + 1, element.getWidth(), element.getHeight()), otherElementCells.startColIndex, otherElementCells.endRowIndex + 1, 1, 1);
4841
+ var locationInformation = this.createLocationInformation(element, elementCells.backside, this.createEmptyCells(otherElementCells.cells[0].plannedElement.area.fromX, otherElementCells.cells[0].plannedElement.area.toX, otherElementCells.cells[0].plannedElement.area.fromY, otherElementCells.cells[0].plannedElement.area.toY + 1, element.getWidth(), element.getHeight()), otherElementCells.cells[0].plannedElement.area.fromX, otherElementCells.cells[0].plannedElement.area.toX, 1, 1);
4561
4842
  allFreeMoveLocations.push(locationInformation);
4562
4843
  }
4563
4844
  } else {
@@ -4566,7 +4847,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4566
4847
  var _otherElementCells = this.getCellsInGridByElementId(otherElementId);
4567
4848
  var freeStartTopColIndex = -1;
4568
4849
  var freeEndTopColIndex = -1;
4569
- var topRow = _otherElementCells.endRowIndex + 1;
4850
+ var topRow = _otherElementCells.cells[0].plannedElement.area.toY + 1;
4570
4851
  for (var x = _otherElementCells.startColIndex; x <= _otherElementCells.startColIndex + _otherElementCells.colCount - 1; x++) {
4571
4852
  var freeSpaceFound = false;
4572
4853
  if (isEmptyCell(x, topRow)) {
@@ -4639,7 +4920,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4639
4920
  }
4640
4921
 
4641
4922
  // Determine the grid to work with (front or back) based on the element's location
4642
- var curGrid = elementCells.backside ? this.backGrid : this.frontGrid;
4923
+ var curGrid = elementCells.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
4643
4924
 
4644
4925
  // Get the boundaries of the element in the grid
4645
4926
  var startColIndex = elementCells.startColIndex;
@@ -4698,9 +4979,9 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4698
4979
  var targetRowIndex = endRowIndex + 1;
4699
4980
  var _copyPossible = false;
4700
4981
  // Iterate through columns within the element's width
4701
- for (var _x = endColIndex; _x >= startColIndex; _x--) {
4702
- if (isValidCell(_x, targetRowIndex)) {
4703
- copyStartColIndex = _x;
4982
+ for (var _x3 = endColIndex; _x3 >= startColIndex; _x3--) {
4983
+ if (isValidCell(_x3, targetRowIndex)) {
4984
+ copyStartColIndex = _x3;
4704
4985
  _copyPossible = true;
4705
4986
  }
4706
4987
  }
@@ -4714,29 +4995,29 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4714
4995
  case 'RIGHT':
4715
4996
  {
4716
4997
  // Target column to the left of the element
4717
- var _targetColIndex = endColIndex + 1;
4998
+ var _targetColIndex = endColIndex;
4718
4999
  var _copyPossible2 = false;
4719
5000
  // Iterate through rows within the element's height
4720
- for (var _y = startRowIndex; _y <= endRowIndex; _y++) {
4721
- if (isValidCell(_targetColIndex, _y)) {
4722
- copyStartRowIndex = _y;
5001
+ for (var _y2 = startRowIndex; _y2 <= endRowIndex; _y2++) {
5002
+ if (isValidCell(_targetColIndex, _y2)) {
5003
+ copyStartRowIndex = _y2;
4723
5004
  _copyPossible2 = true;
4724
5005
  break;
4725
5006
  }
4726
5007
  }
4727
5008
  if (!_copyPossible2) return undefined;
4728
5009
  _copyPossible2 = false;
4729
- for (var _x2 = endColIndex + 1; _x2 <= endColIndex + elementCells.colCount; _x2++) {
4730
- if (isValidCell(_x2, copyStartRowIndex) && (copyStartRowIndex == 0 || !isValidCell(_x2, copyStartRowIndex - 1))) {
5010
+ for (var _x4 = endColIndex; _x4 <= endColIndex + elementCells.colCount; _x4++) {
5011
+ if (isValidCell(_x4, copyStartRowIndex) && (copyStartRowIndex == 0 || !isValidCell(_x4, copyStartRowIndex - 1))) {
4731
5012
  //check also for overhang
4732
- copyEndColIndex = _x2;
5013
+ copyEndColIndex = _x4;
4733
5014
  _copyPossible2 = true;
4734
5015
  } else {
4735
5016
  break; //when you find one situation where it is not valid skip outside.
4736
5017
  }
4737
5018
  }
4738
5019
  if (!_copyPossible2) return undefined;
4739
- copyStartColIndex = endColIndex + 1;
5020
+ copyStartColIndex = endColIndex;
4740
5021
  copyEndRowIndex = endRowIndex;
4741
5022
  freeCells = this.createEmptyCells(copyStartColIndex, copyStartRowIndex, copyEndColIndex, copyEndRowIndex, element.getWidth(), element.getHeight());
4742
5023
  break;
@@ -4753,7 +5034,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4753
5034
  }, {
4754
5035
  key: "createLocationInformation",
4755
5036
  value: function createLocationInformation(element, fromBackside, cells, cellsStartColIndex, cellsStartRowIndex, cellsColCount, cellsRowCount) {
4756
- var curGrid = fromBackside ? this.backGrid : this.frontGrid;
5037
+ var curGrid = fromBackside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
4757
5038
  var elementLocation = {
4758
5039
  cells: cells,
4759
5040
  widthPerCell: this.gridSetupParams.forceFixCellRasterSize ? this.gridSetupParams.fixCellRasterWidth : element.getWidth(),
@@ -4769,14 +5050,16 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4769
5050
  } else {
4770
5051
  var distToOriginX = 0;
4771
5052
  for (var i = 0; i < cellsStartColIndex; i++) {
4772
- distToOriginX += curGrid[i][0].width;
5053
+ var _plannedElement$size$3, _plannedElement3;
5054
+ distToOriginX += (_plannedElement$size$3 = (_plannedElement3 = curGrid[i][0].plannedElement) === null || _plannedElement3 === void 0 ? void 0 : _plannedElement3.size.width) !== null && _plannedElement$size$3 !== void 0 ? _plannedElement$size$3 : 0;
4773
5055
  }
4774
5056
  if (cellsStartColIndex < 0) {
4775
5057
  distToOriginX = -element.getWidth();
4776
5058
  }
4777
5059
  var distToOriginY = 0;
4778
5060
  for (var i = 0; i < cellsStartRowIndex; i++) {
4779
- distToOriginY += curGrid[cellsStartColIndex][i].height;
5061
+ var _plannedElement$size$4, _plannedElement4;
5062
+ distToOriginY += (_plannedElement$size$4 = (_plannedElement4 = curGrid[cellsStartColIndex][i].plannedElement) === null || _plannedElement4 === void 0 ? void 0 : _plannedElement4.size.width) !== null && _plannedElement$size$4 !== void 0 ? _plannedElement$size$4 : 0;
4780
5063
  }
4781
5064
  elementLocation.startIndexWorldPos = new index.Vector2(distToOriginX, distToOriginY);
4782
5065
  }
@@ -4792,7 +5075,8 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4792
5075
  for (var i = 0; i < allElements.length; i++) {
4793
5076
  var element = allElements[i];
4794
5077
  var elementCells = this.getCellsInGridByElementId(element.getElementId());
4795
- var elementLocation = this.createLocationInformation(element, elementCells.backside, elementCells.cells, elementCells.startColIndex, elementCells.startRowIndex, elementCells.colCount, elementCells.rowCount);
5078
+ var area = elementCells.cells[0].plannedElement.area;
5079
+ var elementLocation = this.createLocationInformation(element, elementCells.backside, elementCells.cells, area.fromX, area.toX, area.fromY, area.toY);
4796
5080
  var planningLeftLocation = this.getFreePlanningLocation(element.getElementId(), 'LEFT');
4797
5081
  var planningRightLocation = this.getFreePlanningLocation(element.getElementId(), 'RIGHT');
4798
5082
  var planningTopLocation = this.getFreePlanningLocation(element.getElementId(), 'TOP');
@@ -4818,10 +5102,20 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4818
5102
  }
4819
5103
  }, {
4820
5104
  key: "getGeneralPlanningState",
4821
- value: function getGeneralPlanningState(selectedElementId) {
4822
- var matrix = [];
4823
- var selectedElement = undefined;
4824
- var plannedElements = Array.from(this.plannerElements.values()).map(function (p) {
5105
+ value: function getGeneralPlanningState() {
5106
+ var _ele2, _ele3;
5107
+ var movables = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
5108
+ var selectedElementId = arguments.length > 1 ? arguments[1] : undefined;
5109
+ if (!movables) return this.generalPlanningState;
5110
+ // fill to equal size
5111
+ var matrix = this.generalPlanningState.grids[0].matrix;
5112
+ var matrixWithMovables = [];
5113
+ var maxWidth = matrix.length;
5114
+ var maxHeight = 0;
5115
+ matrix.forEach(function (x) {
5116
+ if (x.length > maxHeight) maxHeight = x.length;
5117
+ });
5118
+ Array.from(this.plannerElements.values()).map(function (p) {
4825
5119
  return {
4826
5120
  basketId: p.getBasketId(),
4827
5121
  elementId: p.getElementId(),
@@ -4839,86 +5133,75 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4839
5133
  }
4840
5134
  };
4841
5135
  });
4842
- for (var i = 0; i < this.frontGrid.length; i++) {
4843
- matrix.push([]);
4844
- var frontGridRow = this.frontGrid[i];
4845
- var _loop = function _loop() {
4846
- var cell = frontGridRow[j];
4847
- if (cell) {
4848
- var plannedElement = plannedElements.find(function (p) {
4849
- return p.elementId === cell.plannerElementId;
4850
- });
4851
- if (plannedElement) {
4852
- if (plannedElement.area.fromX === undefined || plannedElement.area.fromX > cell.index.x) plannedElement.area.fromX = cell.index.x;
4853
- if (plannedElement.area.toX === undefined || plannedElement.area.toX < cell.index.x) plannedElement.area.toX = cell.index.x;
4854
- if (plannedElement.area.fromY === undefined || plannedElement.area.fromY > cell.index.y) plannedElement.area.fromY = cell.index.y;
4855
- if (plannedElement.area.toY === undefined || plannedElement.area.toY < cell.index.y) plannedElement.area.toY = cell.index.y;
4856
- }
4857
- matrix[i].push({
4858
- index: cell.index,
4859
- plannedElement: plannedElement
4860
- });
4861
- }
4862
- };
4863
- for (var j = 0; j < frontGridRow.length; j++) {
4864
- _loop();
4865
- }
4866
- }
4867
-
4868
- // Fill matrix rows to equal length
4869
- var maxLength = Math.max.apply(Math, _toConsumableArray__default["default"](matrix.map(function (row) {
4870
- return row.length;
4871
- })));
4872
- matrix.forEach(function (row) {
4873
- while (row.length < maxLength) {
4874
- var _row$;
4875
- var lastCell = row[row.length - 1];
4876
- var newY = lastCell ? lastCell.index.y + 1 : 0;
4877
- row.push({
4878
- index: new index.Vector2(((_row$ = row[0]) === null || _row$ === void 0 ? void 0 : _row$.index.x) || 0, newY),
4879
- plannedElement: undefined
4880
- });
4881
- }
4882
- });
4883
- var selectedPlannedElement = selectedElementId ? plannedElements.find(function (p) {
4884
- return p.elementId === selectedElementId;
4885
- }) : undefined;
4886
- if (selectedPlannedElement) {
4887
- //add the free let planningLeftLocation = this.getFreePlanningLocation(element.getElementId(), 'LEFT');
4888
- var planningLeftLocation = this.getFreePlanningLocation(selectedPlannedElement.elementId, 'LEFT');
4889
- var planningRightLocation = this.getFreePlanningLocation(selectedPlannedElement.elementId, 'RIGHT');
4890
- var planningTopLocation = this.getFreePlanningLocation(selectedPlannedElement.elementId, 'TOP');
4891
- var fixedPositionRules = [];
4892
- if (planningLeftLocation) {
4893
- this.addFreeCellsToMatrix(matrix, planningLeftLocation.cells, fixedPositionRules);
4894
- }
4895
- if (planningRightLocation) {
4896
- this.addFreeCellsToMatrix(matrix, planningRightLocation.cells, fixedPositionRules);
4897
- }
4898
- if (planningTopLocation) {
4899
- this.addFreeCellsToMatrix(matrix, planningTopLocation.cells, fixedPositionRules);
4900
- }
5136
+ var isSupport = false;
5137
+ var selectedElement = undefined;
5138
+ var ele = undefined;
5139
+ if (selectedElementId) {
5140
+ var res = this.getCellsInGridByElementId(selectedElementId);
5141
+ ele = res.cells[0].plannedElement;
4901
5142
  selectedElement = {
4902
- articleCodex: selectedPlannedElement.articleCodex,
4903
- size: selectedPlannedElement.size,
5143
+ articleCodex: ele.articleCodex,
5144
+ elementId: ele.elementId,
4904
5145
  gridSpace: {
4905
- rows: selectedPlannedElement.area.toY - selectedPlannedElement.area.fromY + 1,
4906
- colums: selectedPlannedElement.area.toX - selectedPlannedElement.area.fromX + 1
5146
+ rows: ele.area.toY - ele.area.fromY + 1,
5147
+ colums: ele.area.toX - ele.area.fromX + 1
4907
5148
  },
4908
- rules: fixedPositionRules,
4909
- elementId: selectedElementId
5149
+ area: ele.area,
5150
+ size: ele.size,
5151
+ rules: []
4910
5152
  };
4911
- }
4912
- return {
4913
- grids: [{
4914
- index: 0,
4915
- // boxplanner usecase grid index always 0
4916
- rowSizes: this.getRowSizes(matrix, selectedElement),
4917
- columnSizes: this.getColumnSizes(matrix, selectedElement),
4918
- matrix: matrix
4919
- }],
4920
- selectedElement: selectedElement
4921
- };
5153
+ isSupport = !!matrix.find(function (x, idx) {
5154
+ return idx >= ele.area.fromX && idx < ele.area.toX && matrix[idx].length > ele.area.toY;
5155
+ }); // can't move if there is anything above these cells
5156
+ }
5157
+ if (isSupport) return this.generalPlanningState;
5158
+ for (var x = 0; x < maxWidth; x++) {
5159
+ var _x = ele.area.fromX == 0 ? x : x + 1;
5160
+ if (!matrixWithMovables[_x]) if (matrix[x]) matrixWithMovables[_x] = _toConsumableArray__default["default"](matrix[x]);
5161
+ for (var y = 0; y < maxHeight; y++) {
5162
+ if (matrix[x].length > y && matrix[x][y]) {
5163
+ matrixWithMovables[_x][y].plannedElement;
5164
+ matrixWithMovables[_x][y] = _objectSpread({}, matrix[x][y]);
5165
+ }
5166
+ }
5167
+ }
5168
+
5169
+ // add movable to the top
5170
+ var from = ele.area.fromX == 0 ? ele.area.fromX : ele.area.fromX + 1;
5171
+ var to = ele.area.fromX == 0 ? ele.area.toX : ele.area.toX + 1;
5172
+ matrixWithMovables.forEach(function (_, x) {
5173
+ if (x >= from && x < to) return;
5174
+ var row = matrixWithMovables[x];
5175
+ var len = row.length;
5176
+ var _x = ele.fromX == 0 ? x : x - 1;
5177
+ row[len] = {
5178
+ index: {
5179
+ x: _x,
5180
+ y: len
5181
+ }
5182
+ };
5183
+ });
5184
+
5185
+ // add movable to the side
5186
+ var len = matrixWithMovables.length;
5187
+ if (((_ele2 = ele) === null || _ele2 === void 0 ? void 0 : _ele2.area.toX) != matrix.length) matrixWithMovables[len] = [{
5188
+ index: {
5189
+ x: ele.fromX == 0 ? len : len - 1,
5190
+ y: 0
5191
+ }
5192
+ }];
5193
+ if (((_ele3 = ele) === null || _ele3 === void 0 ? void 0 : _ele3.area.fromX) != 0) matrixWithMovables[0] = [{
5194
+ index: {
5195
+ x: -1,
5196
+ y: 0
5197
+ }
5198
+ }];
5199
+ return _objectSpread(_objectSpread({}, this.generalPlanningState), {}, {
5200
+ selectedElement: selectedElement,
5201
+ grids: [_objectSpread(_objectSpread({}, this.generalPlanningState.grids[0]), {}, {
5202
+ matrix: matrixWithMovables
5203
+ })]
5204
+ });
4922
5205
  }
4923
5206
  }, {
4924
5207
  key: "getRowSizes",
@@ -4927,7 +5210,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4927
5210
  //system 4 useacse
4928
5211
  var totalColCount = matrix[0].length;
4929
5212
  var colSizes = Array(totalColCount).fill(-1);
4930
- var _loop2 = function _loop2(i) {
5213
+ var _loop3 = function _loop3(i) {
4931
5214
  var _matrix$find;
4932
5215
  var cell = (_matrix$find = matrix.find(function (row) {
4933
5216
  var _row$i$plannedElement, _row$i$plannedElement2;
@@ -4941,7 +5224,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4941
5224
  if (colSizes[i] === -1) return 1; // break
4942
5225
  };
4943
5226
  for (var i = 0; i < totalColCount; i++) {
4944
- if (_loop2(i)) break;
5227
+ if (_loop3(i)) break;
4945
5228
  }
4946
5229
  if (colSizes.includes(-1)) LOG$1.error(new Error('Column sizes are not set'));
4947
5230
  return colSizes;
@@ -5004,9 +5287,9 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
5004
5287
  });
5005
5288
  if (!column) {
5006
5289
  matrix.map(function (row) {
5007
- var _row$2;
5290
+ var _row$;
5008
5291
  return row.push({
5009
- index: new index.Vector2(((_row$2 = row[0]) === null || _row$2 === void 0 ? void 0 : _row$2.index.x) || 0, y),
5292
+ index: new index.Vector2(((_row$ = row[0]) === null || _row$ === void 0 ? void 0 : _row$.index.x) || 0, y),
5010
5293
  plannedElement: undefined
5011
5294
  });
5012
5295
  });
@@ -5213,7 +5496,7 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5213
5496
  key: "addPlannerElement",
5214
5497
  value: (function () {
5215
5498
  var _addPlannerElement = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee2(basketID, params) {
5216
- var plannerElement, data;
5499
+ var plannerElement, data, constructionRules, _constructionRules$co, _constructionRules$co2;
5217
5500
  return _regeneratorRuntime__default["default"].wrap(function _callee2$(_context2) {
5218
5501
  while (1) switch (_context2.prev = _context2.next) {
5219
5502
  case 0:
@@ -5232,7 +5515,19 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5232
5515
  return PlannerHandler2D.handler2D.loadSVG(plannerElement, this.set);
5233
5516
  case 9:
5234
5517
  if (!this.constructionRulesHandler.getConstructionRulesLoaded()) {
5235
- this.constructionRulesHandler.setConstructionRules(this.set.getConstructionRuleOfElementId(plannerElement.ElementId));
5518
+ constructionRules = this.set.getConstructionRuleOfElementId(plannerElement.ElementId);
5519
+ if (constructionRules) {
5520
+ this.boxPlannerGrid.GridSetupParams = {
5521
+ fixCellRasterHeight: 19.2,
5522
+ fixCellRasterWidth: 19.2,
5523
+ forceFixCellRasterSize: (_constructionRules$co = constructionRules.constructionRules.forceFixCellRasterSize) !== null && _constructionRules$co !== void 0 ? _constructionRules$co : true,
5524
+ forceSingleCellPerElement: (_constructionRules$co2 = constructionRules.constructionRules.forceSingleCellPerElement) !== null && _constructionRules$co2 !== void 0 ? _constructionRules$co2 : true,
5525
+ hasMaxGridRasterHeight: constructionRules.constructionRules.hasMaxGridRasterHeight,
5526
+ maxGridRasterHeight: constructionRules.constructionRules.maxGridRasterHeight,
5527
+ hasMaxGridRasterWidth: constructionRules.constructionRules.hasMaxGridRasterWidth,
5528
+ maxGridRasterWidth: constructionRules.constructionRules.maxGridRasterWidth
5529
+ }, this.constructionRulesHandler.setConstructionRules(constructionRules);
5530
+ }
5236
5531
  }
5237
5532
  this.boxPlannerGrid.addElementAtGridPos(plannerElement, params.boxCol, params.boxRow, params.backside != undefined ? params.backside : false);
5238
5533
  if (!params.boxUpdateWholePlanning) {
@@ -5272,6 +5567,28 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5272
5567
  }
5273
5568
  return extendPlanner;
5274
5569
  }()
5570
+ }, {
5571
+ key: "movePlannerElement",
5572
+ value: function () {
5573
+ var _movePlannerElement = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee4(elementId, absoluteIndex) {
5574
+ return _regeneratorRuntime__default["default"].wrap(function _callee4$(_context4) {
5575
+ while (1) switch (_context4.prev = _context4.next) {
5576
+ case 0:
5577
+ this.boxPlannerGrid.moveElementAsCopy(elementId, absoluteIndex);
5578
+ this.boxPlannerGrid.updateWorldPosOfElements();
5579
+ _context4.next = 4;
5580
+ return this.constructionRulesHandler.updateOptionLogicBoxPlanner(this.boxPlannerGrid, "", [elementId]);
5581
+ case 4:
5582
+ case "end":
5583
+ return _context4.stop();
5584
+ }
5585
+ }, _callee4, this);
5586
+ }));
5587
+ function movePlannerElement(_x6, _x7) {
5588
+ return _movePlannerElement.apply(this, arguments);
5589
+ }
5590
+ return movePlannerElement;
5591
+ }()
5275
5592
  /**
5276
5593
  * Handles copyying the planner Element. it can happen that also other planner elements are influenced
5277
5594
  * @param articleCopyRelation Holds the relation - which element with elementID is copyed and has a new Article. ElementToCopyID -> BasketID of new Article
@@ -5280,18 +5597,18 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5280
5597
  }, {
5281
5598
  key: "copyPlannerElement",
5282
5599
  value: (function () {
5283
- var _copyPlannerElement = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee4(articleCopyRelation, copyInfo) {
5600
+ var _copyPlannerElement = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee5(articleCopyRelation, copyInfo) {
5284
5601
  var _this = this;
5285
5602
  var gridIsPrepared, plannerElementsToLoadSVG, that, i, cellPos, allDPs, j;
5286
- return _regeneratorRuntime__default["default"].wrap(function _callee4$(_context4) {
5287
- while (1) switch (_context4.prev = _context4.next) {
5603
+ return _regeneratorRuntime__default["default"].wrap(function _callee5$(_context5) {
5604
+ while (1) switch (_context5.prev = _context5.next) {
5288
5605
  case 0:
5289
5606
  gridIsPrepared = false;
5290
5607
  if (copyInfo) {
5291
- _context4.next = 3;
5608
+ _context5.next = 3;
5292
5609
  break;
5293
5610
  }
5294
- return _context4.abrupt("return");
5611
+ return _context5.abrupt("return");
5295
5612
  case 3:
5296
5613
  if (copyInfo.copyType == 'STD') copyInfo.targetElements = [];
5297
5614
  plannerElementsToLoadSVG = [];
@@ -5321,10 +5638,10 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5321
5638
  i = 0;
5322
5639
  case 8:
5323
5640
  if (!(i < plannerElementsToLoadSVG.length)) {
5324
- _context4.next = 15;
5641
+ _context5.next = 15;
5325
5642
  break;
5326
5643
  }
5327
- _context4.next = 11;
5644
+ _context5.next = 11;
5328
5645
  return PlannerHandler2D.handler2D.loadSVG(plannerElementsToLoadSVG[i], this.set);
5329
5646
  case 11:
5330
5647
  //Check if we have to prevent to build even higher in this col
@@ -5340,19 +5657,19 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5340
5657
  }
5341
5658
  case 12:
5342
5659
  i++;
5343
- _context4.next = 8;
5660
+ _context5.next = 8;
5344
5661
  break;
5345
5662
  case 15:
5346
5663
  this.boxPlannerGrid.updateWorldPosOfElements();
5347
- _context4.next = 18;
5664
+ _context5.next = 18;
5348
5665
  return this.constructionRulesHandler.updateOptionLogicBoxPlanner(this.boxPlannerGrid, copyInfo.changedOPT, copyInfo.targetElements);
5349
5666
  case 18:
5350
5667
  case "end":
5351
- return _context4.stop();
5668
+ return _context5.stop();
5352
5669
  }
5353
- }, _callee4, this);
5670
+ }, _callee5, this);
5354
5671
  }));
5355
- function copyPlannerElement(_x6, _x7) {
5672
+ function copyPlannerElement(_x8, _x9) {
5356
5673
  return _copyPlannerElement.apply(this, arguments);
5357
5674
  }
5358
5675
  return copyPlannerElement;
@@ -5425,8 +5742,8 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5425
5742
  allElementsToCopy = result.elements;
5426
5743
  result.backside;
5427
5744
  } else {
5428
- var _result = this.boxPlannerGrid.getAllElementsDown(elementId);
5429
- allElementsToCopy = allElementsToCopy.concat(_result.elements);
5745
+ var _result = this.boxPlannerGrid.getAllElementsToFillUp(elementId, copyInfo.copyIndex.x > 0 ? 'RIGHT' : 'LEFT');
5746
+ allElementsToCopy = _result.elements;
5430
5747
  _result.backside;
5431
5748
  }
5432
5749
  }
@@ -5458,10 +5775,10 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5458
5775
  }, {
5459
5776
  key: "deletePlannerElement",
5460
5777
  value: (function () {
5461
- var _deletePlannerElement = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee5(elementId, autoCorrectAVL_AVR, deletionType) {
5778
+ var _deletePlannerElement = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee6(elementId, autoCorrectAVL_AVR, deletionType) {
5462
5779
  var cellPos, newSelectedPos, doUpdateWholeLogic, _this$boxPlannerGrid$;
5463
- return _regeneratorRuntime__default["default"].wrap(function _callee5$(_context5) {
5464
- while (1) switch (_context5.prev = _context5.next) {
5780
+ return _regeneratorRuntime__default["default"].wrap(function _callee6$(_context6) {
5781
+ while (1) switch (_context6.prev = _context6.next) {
5465
5782
  case 0:
5466
5783
  //TODO ÜBERLEGEN WIE MAN DAS JETZT RICHTET: BESSER WÄRE ES MAN GIBT DAS NÄCHSTE ZU SELECTIERENDE ELEMENT ID ZURÜCK
5467
5784
  //var pos = this.boxPlannerGrid.getIndexInGridByElementId(elementId);
@@ -5495,29 +5812,29 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5495
5812
  } else if (deletionType == 'STD_DONTUPDATE') doUpdateWholeLogic = false;
5496
5813
  }
5497
5814
  if (!doUpdateWholeLogic) {
5498
- _context5.next = 11;
5815
+ _context6.next = 11;
5499
5816
  break;
5500
5817
  }
5501
5818
  this.boxPlannerGrid.updateWorldPosOfElements();
5502
- _context5.next = 11;
5819
+ _context6.next = 11;
5503
5820
  return this.constructionRulesHandler.updateOptionLogicBoxPlanner(this.boxPlannerGrid);
5504
5821
  case 11:
5505
5822
  if (!this.boxPlannerGrid.getPlannerElementAtGridPos(newSelectedPos.col, newSelectedPos.row, newSelectedPos.backside)) {
5506
- _context5.next = 13;
5823
+ _context6.next = 13;
5507
5824
  break;
5508
5825
  }
5509
- return _context5.abrupt("return", {
5826
+ return _context6.abrupt("return", {
5510
5827
  newElementToSelect: (_this$boxPlannerGrid$ = this.boxPlannerGrid.getPlannerElementAtGridPos(newSelectedPos.col, newSelectedPos.row, newSelectedPos.backside)) === null || _this$boxPlannerGrid$ === void 0 ? void 0 : _this$boxPlannerGrid$.getElementId()
5511
5828
  });
5512
5829
  case 13:
5513
- return _context5.abrupt("return", {});
5830
+ return _context6.abrupt("return", {});
5514
5831
  case 14:
5515
5832
  case "end":
5516
- return _context5.stop();
5833
+ return _context6.stop();
5517
5834
  }
5518
- }, _callee5, this);
5835
+ }, _callee6, this);
5519
5836
  }));
5520
- function deletePlannerElement(_x8, _x9, _x10) {
5837
+ function deletePlannerElement(_x10, _x11, _x12) {
5521
5838
  return _deletePlannerElement.apply(this, arguments);
5522
5839
  }
5523
5840
  return deletePlannerElement;
@@ -5597,11 +5914,11 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5597
5914
  }, {
5598
5915
  key: "updatePlanner",
5599
5916
  value: (function () {
5600
- var _updatePlanner = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee6(changedOPT, targetElements) {
5917
+ var _updatePlanner = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee7(changedOPT, targetElements) {
5601
5918
  var _this2 = this;
5602
5919
  var message, cellPos, elemToCheck, copyIndex, allElementsToCopy, _allElementsToCopy, allElementsInBackGrid, _allElementsInBackGrid, _message;
5603
- return _regeneratorRuntime__default["default"].wrap(function _callee6$(_context6) {
5604
- while (1) switch (_context6.prev = _context6.next) {
5920
+ return _regeneratorRuntime__default["default"].wrap(function _callee7$(_context7) {
5921
+ while (1) switch (_context7.prev = _context7.next) {
5605
5922
  case 0:
5606
5923
  LOG.debug('BoxPlanner - configurationHasChanged ' + changedOPT);
5607
5924
  targetElements === null || targetElements === void 0 || targetElements.forEach(function (e) {
@@ -5609,28 +5926,28 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5609
5926
  return _this2.boxPlannerGrid.updateGridElementDimensions(e, (_this2$set$getArticle = _this2.set.getArticleByElementId(e)) === null || _this2$set$getArticle === void 0 ? void 0 : _this2$set$getArticle.plannerData);
5610
5927
  });
5611
5928
  if (!(changedOPT && targetElements && targetElements.length > 0 && changedOPT['OPTELEMENT'] && (changedOPT['OPTELEMENT'] == 'OPVECK_I' || changedOPT['OPTELEMENT'] == 'OPVECK_A'))) {
5612
- _context6.next = 19;
5929
+ _context7.next = 19;
5613
5930
  break;
5614
5931
  }
5615
5932
  if (!(targetElements.length > 1)) {
5616
- _context6.next = 10;
5933
+ _context7.next = 10;
5617
5934
  break;
5618
5935
  }
5619
- _context6.next = 6;
5936
+ _context7.next = 6;
5620
5937
  return this.constructionRulesHandler.updateOptionLogicBoxPlanner(this.boxPlannerGrid, changedOPT, targetElements, true);
5621
5938
  case 6:
5622
- message = _context6.sent;
5939
+ message = _context7.sent;
5623
5940
  if (!message) {
5624
- _context6.next = 9;
5941
+ _context7.next = 9;
5625
5942
  break;
5626
5943
  }
5627
- return _context6.abrupt("return", {
5944
+ return _context7.abrupt("return", {
5628
5945
  doDeleteBackGrid: false,
5629
5946
  elemIdsToDelete: [],
5630
5947
  viewMessageCodex: message
5631
5948
  });
5632
5949
  case 9:
5633
- return _context6.abrupt("return", {
5950
+ return _context7.abrupt("return", {
5634
5951
  doDeleteBackGrid: false,
5635
5952
  elemIdsToDelete: []
5636
5953
  });
@@ -5642,7 +5959,7 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5642
5959
  elemToCheck = this.boxPlannerGrid.getPlannerElementAtGridPos(cellPos.startColIndex, 0, false).getElementId();
5643
5960
  }
5644
5961
  if (!(!this.boxPlannerGrid.getElementHasLeftElement(elemToCheck) || !this.boxPlannerGrid.getElementHasRightElement(elemToCheck))) {
5645
- _context6.next = 19;
5962
+ _context7.next = 19;
5646
5963
  break;
5647
5964
  }
5648
5965
  //Someone has changed Eck innen or aussen. If the current eselected Element has no neighbor left or right copy neighbor
@@ -5663,7 +5980,7 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5663
5980
  copyIndex: copyIndex,
5664
5981
  copyType: 'BoxPlanner_COL'
5665
5982
  });
5666
- return _context6.abrupt("return", {
5983
+ return _context7.abrupt("return", {
5667
5984
  doDeleteBackGrid: false,
5668
5985
  elemIdsToDelete: [],
5669
5986
  elementIdToCopy: allElementsToCopy,
@@ -5674,15 +5991,15 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5674
5991
  });
5675
5992
  case 19:
5676
5993
  if (!(changedOPT && changedOPT['OPTDMOD'])) {
5677
- _context6.next = 34;
5994
+ _context7.next = 34;
5678
5995
  break;
5679
5996
  }
5680
- _context6.t0 = changedOPT['OPTDMOD'];
5681
- _context6.next = _context6.t0 === 'OPVD_EIN' ? 23 : _context6.t0 === 'OPVD_AUS' ? 27 : 32;
5997
+ _context7.t0 = changedOPT['OPTDMOD'];
5998
+ _context7.next = _context7.t0 === 'OPVD_EIN' ? 23 : _context7.t0 === 'OPVD_AUS' ? 27 : 32;
5682
5999
  break;
5683
6000
  case 23:
5684
6001
  if (this.boxPlannerGrid.getPlannerHasActiveBackside()) {
5685
- _context6.next = 26;
6002
+ _context7.next = 26;
5686
6003
  break;
5687
6004
  }
5688
6005
  _allElementsToCopy = this.getPlannerElementsInfluencedByCopy(-1, {
@@ -5693,7 +6010,7 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5693
6010
  },
5694
6011
  copyType: 'BoxPlanner_backside'
5695
6012
  });
5696
- return _context6.abrupt("return", {
6013
+ return _context7.abrupt("return", {
5697
6014
  doDeleteBackGrid: false,
5698
6015
  elemIdsToDelete: [],
5699
6016
  elementIdToCopy: _allElementsToCopy,
@@ -5701,18 +6018,18 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5701
6018
  changedOPT: changedOPT
5702
6019
  });
5703
6020
  case 26:
5704
- return _context6.abrupt("break", 32);
6021
+ return _context7.abrupt("break", 32);
5705
6022
  case 27:
5706
6023
  if (!this.boxPlannerGrid.getPlannerHasActiveBackside()) {
5707
- _context6.next = 31;
6024
+ _context7.next = 31;
5708
6025
  break;
5709
6026
  }
5710
6027
  allElementsInBackGrid = this.boxPlannerGrid.getAllElementsInBackGrid();
5711
6028
  if (!(allElementsInBackGrid.length > 0)) {
5712
- _context6.next = 31;
6029
+ _context7.next = 31;
5713
6030
  break;
5714
6031
  }
5715
- return _context6.abrupt("return", {
6032
+ return _context7.abrupt("return", {
5716
6033
  doDeleteBackGrid: true,
5717
6034
  elemIdsToDelete: allElementsInBackGrid.map(function (element) {
5718
6035
  return element.ElementId;
@@ -5721,22 +6038,22 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5721
6038
  changedOPT: changedOPT
5722
6039
  });
5723
6040
  case 31:
5724
- return _context6.abrupt("break", 32);
6041
+ return _context7.abrupt("break", 32);
5725
6042
  case 32:
5726
- _context6.next = 48;
6043
+ _context7.next = 48;
5727
6044
  break;
5728
6045
  case 34:
5729
6046
  if (!(changedOPT && changedOPT['OPTFARBE_RAHMEN'] && changedOPT['OPTFARBE_RAHMEN'] == 'OPVSCHWARZ_MATT' && this.boxPlannerGrid.getPlannerHasActiveBackside())) {
5730
- _context6.next = 40;
6047
+ _context7.next = 40;
5731
6048
  break;
5732
6049
  }
5733
6050
  //If the double modul is active but the color is changed to black - disable double modul
5734
6051
  _allElementsInBackGrid = this.boxPlannerGrid.getAllElementsInBackGrid();
5735
6052
  if (!(_allElementsInBackGrid.length > 0)) {
5736
- _context6.next = 38;
6053
+ _context7.next = 38;
5737
6054
  break;
5738
6055
  }
5739
- return _context6.abrupt("return", {
6056
+ return _context7.abrupt("return", {
5740
6057
  doDeleteBackGrid: true,
5741
6058
  elemIdsToDelete: _allElementsInBackGrid.map(function (element) {
5742
6059
  return element.ElementId;
@@ -5747,39 +6064,39 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5747
6064
  viewMessageCodex: 'BOXPLAN_BLACKFRAME_INCOMPATIBLE_ELEMENT_WARNING'
5748
6065
  });
5749
6066
  case 38:
5750
- _context6.next = 48;
6067
+ _context7.next = 48;
5751
6068
  break;
5752
6069
  case 40:
5753
- _context6.next = 42;
6070
+ _context7.next = 42;
5754
6071
  return this.constructionRulesHandler.updateOptionLogicBoxPlanner(this.boxPlannerGrid, changedOPT, targetElements);
5755
6072
  case 42:
5756
- _message = _context6.sent;
6073
+ _message = _context7.sent;
5757
6074
  if (!_message) {
5758
- _context6.next = 47;
6075
+ _context7.next = 47;
5759
6076
  break;
5760
6077
  }
5761
- return _context6.abrupt("return", {
6078
+ return _context7.abrupt("return", {
5762
6079
  doDeleteBackGrid: false,
5763
6080
  elemIdsToDelete: [],
5764
6081
  viewMessageCodex: _message
5765
6082
  });
5766
6083
  case 47:
5767
- return _context6.abrupt("return", {
6084
+ return _context7.abrupt("return", {
5768
6085
  doDeleteBackGrid: false,
5769
6086
  elemIdsToDelete: []
5770
6087
  });
5771
6088
  case 48:
5772
- return _context6.abrupt("return", {
6089
+ return _context7.abrupt("return", {
5773
6090
  doDeleteBackGrid: false,
5774
6091
  elemIdsToDelete: []
5775
6092
  });
5776
6093
  case 49:
5777
6094
  case "end":
5778
- return _context6.stop();
6095
+ return _context7.stop();
5779
6096
  }
5780
- }, _callee6, this);
6097
+ }, _callee7, this);
5781
6098
  }));
5782
- function updatePlanner(_x11, _x12) {
6099
+ function updatePlanner(_x13, _x14) {
5783
6100
  return _updatePlanner.apply(this, arguments);
5784
6101
  }
5785
6102
  return updatePlanner;
@@ -5908,7 +6225,7 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5908
6225
  }, {
5909
6226
  key: "getGeneralPlanningState",
5910
6227
  value: function getGeneralPlanningState(selectedElementId) {
5911
- return this.boxPlannerGrid.getGeneralPlanningState(selectedElementId);
6228
+ return this.boxPlannerGrid.getGeneralPlanningState(true, selectedElementId);
5912
6229
  }
5913
6230
  }]);
5914
6231
  }();