@configuratorware/configurator-admingui 1.56.4 → 1.57.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.
@@ -7,6 +7,7 @@ exports.designProductionMethodsData = exports["default"] = void 0;
7
7
  var _Actions = require("./Actions");
8
8
  var _Reducer = require("../../../App/Reducers/Entity/Reducer");
9
9
  var _FeatureReducers = require("../../../App/FeatureReducers");
10
+ var _ActionHelpers = require("../../Item/DataStructures/Prices/ActionHelpers");
10
11
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
11
12
  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; }
12
13
  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(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; }
@@ -153,6 +154,7 @@ var initialState = _objectSpread({}, (0, _Reducer.getDefaultEntityState)({
153
154
  var designProductionMethodsData = exports.designProductionMethodsData = (0, _FeatureReducers.createFeatureReducer)(_Actions.REDUCER_NAME, function () {
154
155
  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
155
156
  var action = arguments.length > 1 ? arguments[1] : undefined;
157
+ (0, _ActionHelpers.removeInvalidPriceEntries)(state, action);
156
158
  state = (0, _Reducer.defaultEntityReducer)(state, action, initialState);
157
159
  return state;
158
160
  });
@@ -16,6 +16,7 @@ var _Typography = _interopRequireDefault(require("../../../../../UIComponents/Ty
16
16
  var _FormControlLabel = _interopRequireDefault(require("../../../../../UIComponents/FormControlLabel"));
17
17
  var _RadioButton = require("../../../../../UIComponents/RadioButton");
18
18
  var _Checkbox = _interopRequireDefault(require("../../../../../UIComponents/Checkbox"));
19
+ var _Constants = require("../Containers/Edit/Constants");
19
20
  var _excluded = ["classes", "onChange", "value"];
20
21
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
21
22
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
@@ -144,6 +145,18 @@ var AdvancedShapeEditor = exports.AdvancedShapeEditor = (0, _styles.withStyles)(
144
145
  var formatter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : formatters.number;
145
146
  return formatter(toNumber((0, _get["default"])(designAreaData, path)));
146
147
  };
148
+
149
+ // special handler for position values to add the base shape padding
150
+ var positionChangeHandler = function positionChangeHandler(evt) {
151
+ if (evt.target.value) {
152
+ onChange(evt.target.name, toNumber(evt.target.value) + _Constants.DEFAULT_BASE_SHAPE_PADDING);
153
+ }
154
+ };
155
+
156
+ // special formatter for position values to subtract the base shape padding
157
+ var formatPosition = function formatPosition(path) {
158
+ return formatters.number(toNumber((0, _get["default"])(designAreaData, path)) - _Constants.DEFAULT_BASE_SHAPE_PADDING);
159
+ };
147
160
  return /*#__PURE__*/_react["default"].createElement("div", {
148
161
  className: className
149
162
  }, /*#__PURE__*/_react["default"].createElement(_RaisedButton["default"], {
@@ -250,13 +263,13 @@ var AdvancedShapeEditor = exports.AdvancedShapeEditor = (0, _styles.withStyles)(
250
263
  }, (0, _i18n.t)('designer.advancedEditor.positioning')), /*#__PURE__*/_react["default"].createElement(NumberInput, {
251
264
  name: 'position.x',
252
265
  label: 'x',
253
- onChange: numberChangeHandler,
254
- value: format('position.x')
266
+ onChange: positionChangeHandler,
267
+ value: formatPosition('position.x')
255
268
  }), /*#__PURE__*/_react["default"].createElement(NumberInput, {
256
269
  name: 'position.y',
257
270
  label: 'y',
258
- onChange: numberChangeHandler,
259
- value: format('position.y')
271
+ onChange: positionChangeHandler,
272
+ value: formatPosition('position.y')
260
273
  }))));
261
274
  });
262
275
  var _default = exports["default"] = AdvancedShapeEditor;
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = exports.DesignAreaDimensionsEditor = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _withStyles = _interopRequireDefault(require("@material-ui/core/styles/withStyles"));
11
+ var _Edit = _interopRequireDefault(require("@material-ui/icons/Edit"));
12
+ var _TextField = _interopRequireDefault(require("@material-ui/core/TextField"));
13
+ var _CircularProgress = _interopRequireDefault(require("@material-ui/core/CircularProgress"));
14
+ var _Button = _interopRequireDefault(require("../../../../../UIComponents/Button"));
15
+ var _Tooltip = _interopRequireDefault(require("../../../../../UIComponents/Tooltip"));
16
+ var _CheckmarkIcon = _interopRequireDefault(require("../../../../../UIComponents/icons/CheckmarkIcon"));
17
+ var _CloseIcon = _interopRequireDefault(require("../../../../../UIComponents/icons/CloseIcon"));
18
+ var _i18n = require("../../../../../App/i18n");
19
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
20
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
21
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
22
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
23
+ 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; } }
24
+ 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; }
25
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
26
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
27
+ var styles = function styles(theme) {
28
+ return {
29
+ root: {
30
+ display: 'flex',
31
+ flexDirection: 'row',
32
+ alignItems: 'center',
33
+ flexWrap: 'wrap'
34
+ },
35
+ data: {
36
+ padding: 0,
37
+ marginBottom: theme.spacing.unit,
38
+ marginTop: 0,
39
+ listStyle: 'none',
40
+ '& li': {
41
+ display: 'inline-flex',
42
+ alignItems: 'center',
43
+ marginRight: 2 * theme.spacing.unit
44
+ }
45
+ },
46
+ dimensionInput: {
47
+ maxWidth: 60,
48
+ margin: 0,
49
+ marginRight: theme.spacing.unit / 2
50
+ },
51
+ dimensionInputRoot: {
52
+ font: 'inherit',
53
+ color: 'inherit'
54
+ },
55
+ dimensionInputField: {
56
+ padding: 0,
57
+ textAlign: 'right'
58
+ },
59
+ actions: {
60
+ display: 'inline-flex',
61
+ alignItems: 'center',
62
+ verticalAlign: 'middle'
63
+ },
64
+ actionButton: {
65
+ minWidth: 'auto',
66
+ padding: theme.spacing.unit / 2
67
+ }
68
+ };
69
+ };
70
+ var toNumber = function toNumber(value) {
71
+ var parsed = Number(value);
72
+ return Number.isFinite(parsed) ? parsed : null;
73
+ };
74
+ var DesignAreaDimensionsEditor = exports.DesignAreaDimensionsEditor = (0, _withStyles["default"])(styles)(function (_ref) {
75
+ var classes = _ref.classes,
76
+ width = _ref.width,
77
+ height = _ref.height,
78
+ onSave = _ref.onSave,
79
+ disabled = _ref.disabled;
80
+ var _useState = (0, _react.useState)(false),
81
+ _useState2 = _slicedToArray(_useState, 2),
82
+ editing = _useState2[0],
83
+ setEditing = _useState2[1];
84
+ var _useState3 = (0, _react.useState)(String(width !== null && width !== void 0 ? width : '')),
85
+ _useState4 = _slicedToArray(_useState3, 2),
86
+ draftWidth = _useState4[0],
87
+ setDraftWidth = _useState4[1];
88
+ var _useState5 = (0, _react.useState)(String(height !== null && height !== void 0 ? height : '')),
89
+ _useState6 = _slicedToArray(_useState5, 2),
90
+ draftHeight = _useState6[0],
91
+ setDraftHeight = _useState6[1];
92
+ var _useState7 = (0, _react.useState)(false),
93
+ _useState8 = _slicedToArray(_useState7, 2),
94
+ saving = _useState8[0],
95
+ setSaving = _useState8[1];
96
+ (0, _react.useEffect)(function () {
97
+ if (!editing) {
98
+ setDraftWidth(String(width !== null && width !== void 0 ? width : ''));
99
+ setDraftHeight(String(height !== null && height !== void 0 ? height : ''));
100
+ }
101
+ }, [width, height, editing]);
102
+ var startEditing = function startEditing() {
103
+ setDraftWidth(String(width !== null && width !== void 0 ? width : ''));
104
+ setDraftHeight(String(height !== null && height !== void 0 ? height : ''));
105
+ setEditing(true);
106
+ };
107
+ var cancelEditing = function cancelEditing() {
108
+ setDraftWidth(String(width !== null && width !== void 0 ? width : ''));
109
+ setDraftHeight(String(height !== null && height !== void 0 ? height : ''));
110
+ setEditing(false);
111
+ };
112
+ var save = function save() {
113
+ var nextWidth = toNumber(draftWidth);
114
+ var nextHeight = toNumber(draftHeight);
115
+ if (!nextWidth || !nextHeight || nextWidth <= 0 || nextHeight <= 0) {
116
+ return;
117
+ }
118
+ setSaving(true);
119
+ onSave(nextWidth, nextHeight).then(function () {
120
+ return setEditing(false);
121
+ })["finally"](function () {
122
+ return setSaving(false);
123
+ });
124
+ };
125
+ var dimensionInputProps = {
126
+ disableUnderline: true,
127
+ classes: {
128
+ root: classes.dimensionInputRoot,
129
+ input: classes.dimensionInputField
130
+ }
131
+ };
132
+ return /*#__PURE__*/_react["default"].createElement("div", {
133
+ className: classes.root
134
+ }, /*#__PURE__*/_react["default"].createElement("ul", {
135
+ className: classes.data
136
+ }, /*#__PURE__*/_react["default"].createElement("li", null, (0, _i18n.T)('designer.visualization.width'), ":", ' ', editing ? /*#__PURE__*/_react["default"].createElement(_TextField["default"], {
137
+ type: "number",
138
+ className: classes.dimensionInput,
139
+ value: draftWidth,
140
+ onChange: function onChange(evt) {
141
+ return setDraftWidth(evt.target.value);
142
+ },
143
+ disabled: saving || disabled,
144
+ inputProps: {
145
+ min: 0,
146
+ step: 'any'
147
+ },
148
+ InputProps: dimensionInputProps
149
+ }) : width, ' ', "mm"), /*#__PURE__*/_react["default"].createElement("li", null, (0, _i18n.T)('designer.visualization.height'), ":", ' ', editing ? /*#__PURE__*/_react["default"].createElement(_TextField["default"], {
150
+ type: "number",
151
+ className: classes.dimensionInput,
152
+ value: draftHeight,
153
+ onChange: function onChange(evt) {
154
+ return setDraftHeight(evt.target.value);
155
+ },
156
+ disabled: saving || disabled,
157
+ inputProps: {
158
+ min: 0,
159
+ step: 'any'
160
+ },
161
+ InputProps: dimensionInputProps
162
+ }) : height, ' ', "mm")), /*#__PURE__*/_react["default"].createElement("span", {
163
+ className: classes.actions
164
+ }, saving ? /*#__PURE__*/_react["default"].createElement(_CircularProgress["default"], {
165
+ size: 20
166
+ }) : editing ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
167
+ className: classes.actionButton,
168
+ "aria-label": (0, _i18n.T)('Ok'),
169
+ onClick: save,
170
+ disabled: disabled,
171
+ size: "small"
172
+ }, /*#__PURE__*/_react["default"].createElement(_CheckmarkIcon["default"], null)), /*#__PURE__*/_react["default"].createElement(_Button["default"], {
173
+ className: classes.actionButton,
174
+ "aria-label": (0, _i18n.T)('Cancel'),
175
+ onClick: cancelEditing,
176
+ disabled: disabled,
177
+ size: "small"
178
+ }, /*#__PURE__*/_react["default"].createElement(_CloseIcon["default"], null))) : /*#__PURE__*/_react["default"].createElement(_Tooltip["default"], {
179
+ title: (0, _i18n.T)('designer.visualization.editDimensions'),
180
+ placement: "right"
181
+ }, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
182
+ className: classes.actionButton,
183
+ "aria-label": (0, _i18n.T)('designer.visualization.editDimensions'),
184
+ onClick: startEditing,
185
+ disabled: disabled,
186
+ size: "small"
187
+ }, /*#__PURE__*/_react["default"].createElement(_Edit["default"], null)))));
188
+ });
189
+ DesignAreaDimensionsEditor.propTypes = {
190
+ width: _propTypes["default"].number,
191
+ height: _propTypes["default"].number,
192
+ onSave: _propTypes["default"].func.isRequired,
193
+ disabled: _propTypes["default"].bool
194
+ };
195
+ DesignAreaDimensionsEditor.defaultProps = {
196
+ disabled: false
197
+ };
198
+ var _default = exports["default"] = DesignAreaDimensionsEditor;
@@ -244,6 +244,11 @@ var createThree2DEditor = exports.createThree2DEditor = /*#__PURE__*/function ()
244
244
  group.position.copy(obj.position);
245
245
  group.rotation.copy(obj.rotation);
246
246
  var geometry = obj.geometry;
247
+ if (!geometry) {
248
+ return {
249
+ update: function update() {}
250
+ };
251
+ }
247
252
  geometry.computeBoundingBox();
248
253
  var boundingBox = geometry.boundingBox;
249
254
  obj.rotation.set(0, 0, 0);
@@ -85,6 +85,9 @@ var applyLinks = exports.applyLinks = function applyLinks(prevData, nextData) {
85
85
  });
86
86
  }
87
87
  });
88
+ if (positionRatio > 0 && Math.abs(nextData.baseShape.width / nextData.baseShape.height - positionRatio) > 0.01) {
89
+ calcPathValue(nextData, 'baseShape.width', multiplyToPixel(positionRatio));
90
+ }
88
91
  withRatio(prevData, nextData, 'baseShape.width', function (r) {
89
92
  calcPathValue(nextData, 'position.width', multiplyToPixel(r));
90
93
  }) || withRatio(prevData, nextData, 'baseShape.height', function (r) {
@@ -104,8 +107,8 @@ var applyLinks = exports.applyLinks = function applyLinks(prevData, nextData) {
104
107
  var _calculateBoundingBox = (0, _calculateBoundingBoxSize.calculateBoundingBoxSize)(nextData.position),
105
108
  width = _calculateBoundingBox.width,
106
109
  height = _calculateBoundingBox.height;
107
- (0, _set["default"])(nextData, 'baseShape.width', Math.round(width) + baseShapePadding);
108
- (0, _set["default"])(nextData, 'baseShape.height', Math.round(height) + baseShapePadding);
110
+ (0, _set["default"])(nextData, 'baseShape.width', Math.ceil(width) + baseShapePadding * 2);
111
+ (0, _set["default"])(nextData, 'baseShape.height', Math.ceil(height) + baseShapePadding * 2);
109
112
 
110
113
  // set min value for base shape size
111
114
  if ((0, _get["default"])(nextData, 'baseShape.width') <= sizeMin) {
@@ -45,6 +45,8 @@ var _FormControlLabel = _interopRequireDefault(require("../../../../../../UIComp
45
45
  var _sendMessage = require("../../../../../../Utils/Function/sendMessage");
46
46
  var _CircularProgress = _interopRequireDefault(require("@material-ui/core/CircularProgress"));
47
47
  var _AreaEditorForm = _interopRequireDefault(require("../../Components/AreaEditorForm"));
48
+ var _DesignAreaDimensionsEditor = _interopRequireDefault(require("../../Components/DesignAreaDimensionsEditor"));
49
+ var _Actions2 = _interopRequireWildcard(require("../../../DesignAreas/Reducers/Actions"));
48
50
  var _TextField = _interopRequireDefault(require("@material-ui/core/TextField"));
49
51
  var _excluded = ["classes", "onChange", "value"];
50
52
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
@@ -427,6 +429,12 @@ var VisualizationSettingsEdit = exports.VisualizationSettingsEdit = /*#__PURE__*
427
429
  _defineProperty(_assertThisInitialized(_this), "cancel", function () {
428
430
  return _this.props.hideDetails();
429
431
  });
432
+ _defineProperty(_assertThisInitialized(_this), "saveDesignAreaDimensions", function (width, height) {
433
+ var _this$props = _this.props,
434
+ designArea = _this$props.designArea,
435
+ saveDesignAreaDimensions = _this$props.saveDesignAreaDimensions;
436
+ return saveDesignAreaDimensions(designArea.id, width, height);
437
+ });
430
438
  _defineProperty(_assertThisInitialized(_this), "areaEditorRef", /*#__PURE__*/_react["default"].createRef());
431
439
  return _this;
432
440
  }
@@ -528,9 +536,9 @@ var VisualizationSettingsEdit = exports.VisualizationSettingsEdit = /*#__PURE__*
528
536
  }, {
529
537
  key: "getCurrentDesignAreaData",
530
538
  value: function getCurrentDesignAreaData() {
531
- var _this$props = this.props,
532
- designArea = _this$props.designArea,
533
- entityState = _this$props.entityState;
539
+ var _this$props2 = this.props,
540
+ designArea = _this$props2.designArea,
541
+ entityState = _this$props2.entityState;
534
542
  if (!designArea) {
535
543
  return null;
536
544
  }
@@ -626,9 +634,9 @@ var VisualizationSettingsEdit = exports.VisualizationSettingsEdit = /*#__PURE__*
626
634
  }, {
627
635
  key: "getCurrentMaskObject",
628
636
  value: function getCurrentMaskObject() {
629
- var _this$props2 = this.props,
630
- designArea = _this$props2.designArea,
631
- itemIdentifier = _this$props2.item.identifier;
637
+ var _this$props3 = this.props,
638
+ designArea = _this$props3.designArea,
639
+ itemIdentifier = _this$props3.item.identifier;
632
640
  var _designArea$this$getC = _objectSpread(_objectSpread({}, designArea), this.getCurrentDesignAreaData()),
633
641
  mask = _designArea$this$getC.mask,
634
642
  designAreaIdentifier = _designArea$this$getC.identifier;
@@ -658,11 +666,11 @@ var VisualizationSettingsEdit = exports.VisualizationSettingsEdit = /*#__PURE__*
658
666
  function () {
659
667
  var _loadModel = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
660
668
  var _this2 = this;
661
- var _this$props3, item, mode, variant, three;
669
+ var _this$props4, item, mode, variant, three;
662
670
  return _regeneratorRuntime().wrap(function _callee4$(_context4) {
663
671
  while (1) switch (_context4.prev = _context4.next) {
664
672
  case 0:
665
- _this$props3 = this.props, item = _this$props3.item, mode = _this$props3.mode;
673
+ _this$props4 = this.props, item = _this$props4.item, mode = _this$props4.mode;
666
674
  try {
667
675
  variant = (0, _get["default"])(item, 'children[0]', item);
668
676
  if (!item || !variant) {
@@ -792,10 +800,10 @@ var VisualizationSettingsEdit = exports.VisualizationSettingsEdit = /*#__PURE__*
792
800
  key: "renderHeader",
793
801
  value: function renderHeader(designAreaData) {
794
802
  var _this3 = this;
795
- var _this$props4 = this.props,
796
- designArea = _this$props4.designArea,
797
- classes = _this$props4.classes,
798
- mode = _this$props4.mode;
803
+ var _this$props5 = this.props,
804
+ designArea = _this$props5.designArea,
805
+ classes = _this$props5.classes,
806
+ mode = _this$props5.mode;
799
807
  var designProductionMethods = (designArea.designProductionMethods || []).map(function (dpm) {
800
808
  return dpm.title;
801
809
  }).join(', ');
@@ -810,9 +818,12 @@ var VisualizationSettingsEdit = exports.VisualizationSettingsEdit = /*#__PURE__*
810
818
  fallback: designArea.identifier || 'Title of the design area'
811
819
  })), /*#__PURE__*/_react["default"].createElement("div", {
812
820
  className: classes.data
813
- }, designProductionMethods), /*#__PURE__*/_react["default"].createElement("ul", {
814
- className: classes.data
815
- }, /*#__PURE__*/_react["default"].createElement("li", null, (0, _i18n.T)('designer.visualization.width'), ": ", designArea.width, " mm"), /*#__PURE__*/_react["default"].createElement("li", null, (0, _i18n.T)('designer.visualization.height'), ": ", designArea.height, " mm")), this.state.cameraViews.length > 0 && /*#__PURE__*/_react["default"].createElement(_SelectField["default"], {
821
+ }, designProductionMethods), /*#__PURE__*/_react["default"].createElement(_DesignAreaDimensionsEditor["default"], {
822
+ width: designArea.width,
823
+ height: designArea.height,
824
+ onSave: this.saveDesignAreaDimensions,
825
+ disabled: !designArea.id
826
+ }), this.state.cameraViews.length > 0 && /*#__PURE__*/_react["default"].createElement(_SelectField["default"], {
816
827
  onChange: this.onChangeCameraView,
817
828
  label: (0, _i18n.T)('designer.visualization.cameraPosition'),
818
829
  value: this.state.selectedCameraView,
@@ -852,9 +863,9 @@ var VisualizationSettingsEdit = exports.VisualizationSettingsEdit = /*#__PURE__*
852
863
  key: "renderVisualization",
853
864
  value: function renderVisualization(designAreaData) {
854
865
  var _this4 = this;
855
- var _this$props5 = this.props,
856
- mode = _this$props5.mode,
857
- classes = _this$props5.classes;
866
+ var _this$props6 = this.props,
867
+ mode = _this$props6.mode,
868
+ classes = _this$props6.classes;
858
869
  var three = this.three;
859
870
  if (isKindOf2D(mode)) {
860
871
  return /*#__PURE__*/_react["default"].createElement("div", {
@@ -910,7 +921,7 @@ var VisualizationSettingsEdit = exports.VisualizationSettingsEdit = /*#__PURE__*
910
921
  },
911
922
  label: (0, _i18n.T)('designer.productSizeControls.dimension'),
912
923
  disableUnderline: true,
913
- value: prodVisSize.dimension
924
+ value: (prodVisSize === null || prodVisSize === void 0 ? void 0 : prodVisSize.dimension) || 'width'
914
925
  }, /*#__PURE__*/_react["default"].createElement(_MenuItem["default"], {
915
926
  value: "width"
916
927
  }, (0, _i18n.T)('designer.productSizeControls.width')), /*#__PURE__*/_react["default"].createElement(_MenuItem["default"], {
@@ -918,10 +929,11 @@ var VisualizationSettingsEdit = exports.VisualizationSettingsEdit = /*#__PURE__*
918
929
  }, (0, _i18n.T)('designer.productSizeControls.height'))), /*#__PURE__*/_react["default"].createElement(NumberInput, {
919
930
  label: 'mm',
920
931
  name: "productSize",
921
- value: prodVisSize.value,
932
+ value: prodVisSize === null || prodVisSize === void 0 ? void 0 : prodVisSize.value,
922
933
  onChange: function onChange(evt) {
923
934
  _this5.setState({
924
935
  productVisualizationSize: _objectSpread(_objectSpread({}, prodVisSize), {}, {
936
+ dimension: (prodVisSize === null || prodVisSize === void 0 ? void 0 : prodVisSize.dimension) || 'width',
925
937
  value: evt.target.value
926
938
  })
927
939
  });
@@ -935,6 +947,7 @@ var VisualizationSettingsEdit = exports.VisualizationSettingsEdit = /*#__PURE__*
935
947
  }
936
948
  }), /*#__PURE__*/_react["default"].createElement(_RaisedButton["default"], {
937
949
  label: (0, _i18n.T)('designer.productSizeControls.apply'),
950
+ disabled: !(prodVisSize !== null && prodVisSize !== void 0 && prodVisSize.value) || !(prodVisSize !== null && prodVisSize !== void 0 && prodVisSize.dimension) || (prodVisSize === null || prodVisSize === void 0 ? void 0 : prodVisSize.value) <= 0,
938
951
  onClick: function onClick() {
939
952
  _this5.updateData({
940
953
  baseShape: _this5.calculateBaseShapeSize()
@@ -945,11 +958,11 @@ var VisualizationSettingsEdit = exports.VisualizationSettingsEdit = /*#__PURE__*
945
958
  }, {
946
959
  key: "render",
947
960
  value: function render() {
948
- var _this$props6 = this.props,
949
- designArea = _this$props6.designArea,
950
- classes = _this$props6.classes,
951
- mode = _this$props6.mode,
952
- entityState = _this$props6.entityState;
961
+ var _this$props7 = this.props,
962
+ designArea = _this$props7.designArea,
963
+ classes = _this$props7.classes,
964
+ mode = _this$props7.mode,
965
+ entityState = _this$props7.entityState;
953
966
  var three = this.three;
954
967
  if (!designArea || !entityState.showDetails) {
955
968
  return null;
@@ -1012,7 +1025,9 @@ _defineProperty(VisualizationSettingsEdit, "propTypes", {
1012
1025
  entityState: _propTypes["default"].object,
1013
1026
  classes: _propTypes["default"].object,
1014
1027
  setData: _propTypes["default"].func.isRequired,
1015
- postData: _propTypes["default"].func.isRequired
1028
+ postData: _propTypes["default"].func.isRequired,
1029
+ saveDesignAreaDimensions: _propTypes["default"].func.isRequired,
1030
+ setState: _propTypes["default"].func
1016
1031
  });
1017
1032
  _defineProperty(VisualizationSettingsEdit, "defaultProps", {
1018
1033
  classes: {}
@@ -1087,8 +1102,42 @@ var StyledVisualizationSettingsEdit = exports.StyledVisualizationSettingsEdit =
1087
1102
  };
1088
1103
  })(VisualizationSettingsEdit))));
1089
1104
  var ConnectedEdit = (0, _DefaultConnectedForm.connectDefault)(StyledVisualizationSettingsEdit, _Actions.REDUCER_NAME, _Actions["default"].setFieldData, _Actions["default"].postData, _Actions["default"].hideDetails);
1105
+ var _saveDesignAreaDimensions = function saveDesignAreaDimensions(designAreaId, width, height) {
1106
+ return function (dispatch, getState) {
1107
+ return dispatch(_Actions2["default"].detailsAction({
1108
+ id: designAreaId
1109
+ })).then(function () {
1110
+ dispatch(_Actions2["default"].setFieldData('width', width));
1111
+ dispatch(_Actions2["default"].setFieldData('height', height));
1112
+ return dispatch(_Actions2["default"].postData(true));
1113
+ }).then(function () {
1114
+ var savedDesignArea = (0, _get["default"])(getState(), "dataBySource.".concat(_Actions2.DATA_KEY, ".data"));
1115
+ if (!savedDesignArea) {
1116
+ return Promise.reject(new Error('Failed to save design area dimensions'));
1117
+ }
1118
+ return savedDesignArea;
1119
+ });
1120
+ };
1121
+ };
1090
1122
  var _default = exports["default"] = (0, _reactRedux.connect)(function (state) {
1091
1123
  return {
1092
- allowUmlauts: !!(0, _get["default"])(state, 'settingData.data.allowUmlautsInIdentifiers.value', false)
1124
+ allowUmlauts: !!(0, _get["default"])(state, 'settingData.data.allowUmlautsInIdentifiers.value', false),
1125
+ designViewId: state[_Actions.REDUCER_NAME].data.id.value
1126
+ };
1127
+ }, function (dispatch) {
1128
+ return {
1129
+ saveDesignAreaDimensions: function saveDesignAreaDimensions(designAreaId, width, height) {
1130
+ return dispatch(_saveDesignAreaDimensions(designAreaId, width, height)).then(function (savedDesignArea) {
1131
+ dispatch(_Actions2["default"].invalidateList());
1132
+ dispatch(_Actions2["default"].listAction());
1133
+ dispatch(function (dispatch, getState) {
1134
+ var designViewId = getState()[_Actions.REDUCER_NAME].data.id.value;
1135
+ dispatch(_Actions["default"].detailsAction({
1136
+ id: designViewId
1137
+ }));
1138
+ });
1139
+ return savedDesignArea;
1140
+ });
1141
+ }
1093
1142
  };
1094
1143
  })(ConnectedEdit);
@@ -50,6 +50,19 @@ var VisualizationSettings = /*#__PURE__*/function (_React$Component) {
50
50
  if (didInvalidate && didInvalidate !== prevProps.didInvalidate) {
51
51
  loadList({});
52
52
  }
53
+ var prevDesignAreaList = (0, _get["default"])(prevProps, 'designAreaList.data.data');
54
+ var designAreaList = (0, _get["default"])(this.props, 'designAreaList.data.data');
55
+ var selectedDesignArea = this.props.designArea;
56
+ if (selectedDesignArea !== null && selectedDesignArea !== void 0 && selectedDesignArea.identifier && (designAreaList === null || designAreaList === void 0 ? void 0 : designAreaList.length) > 0 && designAreaList !== prevDesignAreaList) {
57
+ var newDesignArea = designAreaList.find(function (designArea) {
58
+ return designArea.identifier === selectedDesignArea.identifier;
59
+ });
60
+ if (newDesignArea) {
61
+ this.props.setState({
62
+ designArea: newDesignArea
63
+ });
64
+ }
65
+ }
53
66
  }
54
67
  }, {
55
68
  key: "renderDesignAreaList",
@@ -15,6 +15,7 @@ require("../../../../App/i18n").use({
15
15
  },
16
16
  width: 'Breite',
17
17
  height: 'Höhe',
18
+ editDimensions: 'Breite und Höhe editieren',
18
19
  cameraPosition: 'Kameraposition',
19
20
  mode: 'Visualization mode'
20
21
  },
@@ -63,6 +64,7 @@ require("../../../../App/i18n").use({
63
64
  },
64
65
  width: 'Width',
65
66
  height: 'Height',
67
+ editDimensions: 'Edit width and height',
66
68
  cameraPosition: 'Camera position',
67
69
  mode: 'Visualization mode'
68
70
  },
@@ -9,6 +9,7 @@ var _Reducer = require("../../../App/Reducers/Entity/Reducer");
9
9
  var _Actions2 = require("../../../App/Reducers/Entity/Actions");
10
10
  var _FeatureReducers = require("../../../App/FeatureReducers");
11
11
  var _Reducer2 = _interopRequireDefault(require("../../ImageGallery/ImageTags/Reducer"));
12
+ var _ActionHelpers = require("../../Item/DataStructures/Prices/ActionHelpers");
12
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
13
14
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
14
15
  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; }
@@ -68,6 +69,7 @@ var initialState = _objectSpread(_objectSpread({}, (0, _Reducer.getDefaultEntity
68
69
  var imagegalleryimageData = exports.imagegalleryimageData = (0, _FeatureReducers.createFeatureReducer)(_Actions.IMAGE_GALLERY_REDUCER_NAME, function () {
69
70
  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
70
71
  var action = arguments.length > 1 ? arguments[1] : undefined;
72
+ (0, _ActionHelpers.removeInvalidPriceEntries)(state, action);
71
73
  if (action.key === _Actions.IMAGE_GALLERY_DATA_KEY) {
72
74
  if (action.type === _Actions2.SET_DATA) {
73
75
  if (action.field === 'imageUrl') {
@@ -12,7 +12,7 @@ var _Dialog = _interopRequireDefault(require("../../../UIComponents/Dialog"));
12
12
  var _FlatButton = _interopRequireDefault(require("../../../UIComponents/FlatButton"));
13
13
  var _IconButton = _interopRequireDefault(require("../../../UIComponents/IconButton"));
14
14
  var _Tooltip = _interopRequireDefault(require("../../../UIComponents/Tooltip"));
15
- var _CloudDownload = _interopRequireDefault(require("@material-ui/icons/CloudDownload"));
15
+ var _Publish = _interopRequireDefault(require("@material-ui/icons/Publish"));
16
16
  var _Actions = _interopRequireDefault(require("../Reducers/Actions"));
17
17
  var _Actions2 = require("../../../App/Reducers/Frame/Actions");
18
18
  var _FormControlLabel = _interopRequireDefault(require("../../../UIComponents/FormControlLabel"));
@@ -128,7 +128,7 @@ var ExportCreatorItemDialog = function ExportCreatorItemDialog(_ref) {
128
128
  onClick: function onClick() {
129
129
  return setShowEditor(true);
130
130
  }
131
- }, /*#__PURE__*/_react["default"].createElement(_CloudDownload["default"], null))), /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
131
+ }, /*#__PURE__*/_react["default"].createElement(_Publish["default"], null))), /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
132
132
  title: title,
133
133
  actions: /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_FlatButton["default"], {
134
134
  label: (0, _i18n.t)('cancel'),
@@ -11,7 +11,7 @@ var _Dialog = _interopRequireDefault(require("../../../UIComponents/Dialog"));
11
11
  var _FlatButton = _interopRequireDefault(require("../../../UIComponents/FlatButton"));
12
12
  var _IconButton = _interopRequireDefault(require("../../../UIComponents/IconButton"));
13
13
  var _Tooltip = _interopRequireDefault(require("../../../UIComponents/Tooltip"));
14
- var _CloudUpload = _interopRequireDefault(require("@material-ui/icons/CloudUpload"));
14
+ var _GetApp = _interopRequireDefault(require("@material-ui/icons/GetApp"));
15
15
  var _Api = _interopRequireDefault(require("../../../App/Api"));
16
16
  var _hasCredentialFor = _interopRequireDefault(require("../../../App/Selectors/Credentials/hasCredentialFor"));
17
17
  var _Actions = require("../../../App/Reducers/Frame/Actions");
@@ -190,7 +190,7 @@ var ImportItemDialog = function ImportItemDialog(_ref) {
190
190
  onClick: function onClick() {
191
191
  return setOpen(true);
192
192
  }
193
- }, /*#__PURE__*/_react["default"].createElement(_CloudUpload["default"], null))), /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
193
+ }, /*#__PURE__*/_react["default"].createElement(_GetApp["default"], null))), /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
194
194
  title: title,
195
195
  open: open,
196
196
  onClose: onClose,
@@ -8,10 +8,24 @@ var _Actions = require("../../../../App/Reducers/Entity/Actions");
8
8
  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; } } }; }
9
9
  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; } }
10
10
  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; }
11
+ var hasPriceValue = function hasPriceValue(value) {
12
+ if (value === null || value === undefined) {
13
+ return false;
14
+ }
15
+ if (typeof value === 'string') {
16
+ var trimmedValue = value.trim();
17
+ return trimmedValue !== '' && Number(trimmedValue) !== 0;
18
+ }
19
+ if (typeof value === 'number') {
20
+ return value !== 0;
21
+ }
22
+ return !!value;
23
+ };
11
24
  var filterInvalidPriceItem = function filterInvalidPriceItem(_ref) {
12
25
  var price = _ref.price,
13
- priceNet = _ref.priceNet;
14
- return price || priceNet;
26
+ priceNet = _ref.priceNet,
27
+ price_net = _ref.price_net;
28
+ return hasPriceValue(price) || hasPriceValue(priceNet) || hasPriceValue(price_net);
15
29
  };
16
30
  var removeInvalidPriceEntriesRecursive = function removeInvalidPriceEntriesRecursive(arr) {
17
31
  if (arr instanceof Array) {
@@ -7,6 +7,7 @@ exports.designerGlobalCalculationTypes = exports["default"] = void 0;
7
7
  var _Actions = require("./Actions");
8
8
  var _Reducer = require("../../../App/Reducers/Entity/Reducer");
9
9
  var _FeatureReducers = require("../../../App/FeatureReducers");
10
+ var _ActionHelpers = require("../../Item/DataStructures/Prices/ActionHelpers");
10
11
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
11
12
  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; }
12
13
  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(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; }
@@ -77,6 +78,7 @@ var initialState = _objectSpread({}, (0, _Reducer.getDefaultEntityState)({
77
78
  var designerGlobalCalculationTypes = exports.designerGlobalCalculationTypes = (0, _FeatureReducers.createFeatureReducer)(_Actions.REDUCER_NAME, function () {
78
79
  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
79
80
  var action = arguments.length > 1 ? arguments[1] : undefined;
81
+ (0, _ActionHelpers.removeInvalidPriceEntries)(state, action);
80
82
  return (0, _Reducer.defaultEntityReducer)(state, action, initialState);
81
83
  });
82
84
  var _default = exports["default"] = designerGlobalCalculationTypes;
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@configuratorware/configurator-admingui",
3
- "version": "1.56.4",
3
+ "version": "1.57.1",
4
4
  "license": "UNLICENSED",
5
5
  "private": false,
6
6
  "dependencies": {
7
7
  "@babel/polyfill": "^7.12.1",
8
- "@configuratorware/scripts": "1.56.4",
8
+ "@configuratorware/scripts": "1.57.1",
9
9
  "@material-ui/core": "^3.9.4",
10
10
  "@material-ui/icons": "^3.0.2",
11
11
  "@tweenjs/tween.js": "^17.6.0",
@@ -29,7 +29,7 @@
29
29
  "react-redux-i18n": "^1.9.3",
30
30
  "react-router": "^3.2.6",
31
31
  "react-sortable-hoc": "^1.11.0",
32
- "redhotmagma-visualization": "1.56.4",
32
+ "redhotmagma-visualization": "1.57.1",
33
33
  "redux": "^4.1.0",
34
34
  "redux-logger": "^3.0.6",
35
35
  "redux-persist": "^5.10.0",