@configuratorware/configurator-admingui 1.56.4 → 1.57.2

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.
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.reportUnsavedEntity = exports.reportDeleteEntities = exports.releaseUnsavedEntity = exports.initUnsavedEntity = exports.generateListActions = exports.generateDeleteAction = exports.generateDefaultActions = exports.dataIsModified = exports.cancelUnsavedEntityDialog = exports.cancelDeleteEntitiesDialog = exports.UNMOUNT_ENTITY = exports.SHOW_DETAILS = exports.SET_VALIDATION_ERRORS = exports.SET_VALIDATED_DATA = exports.SET_DATA_SOURCE = exports.SET_DATA = exports.REPORT_UNSAVED_ENTITY = exports.REPORT_DELETE_ENTITIES = exports.RELEASE_UNSAVED_ENTITY = exports.MOUNT_NEXT = exports.MOUNT_ENTITY = exports.MODIFIED_UNSAVED_ENTITY = exports.INIT_UNSAVED_ENTITY = exports.HIDE_DETAILS = exports.ENTITY_WILL_UNMOUNT = exports.ENTITY_WILL_MOUNT = exports.CANCEL_UNSAVED_ENTITY_DIALOG = exports.CANCEL_DELETE_ENTITIES_DIALOG = void 0;
6
+ exports.reportUnsavedEntity = exports.reportDeleteEntities = exports.releaseUnsavedEntityBypassed = exports.releaseUnsavedEntity = exports.initUnsavedEntity = exports.generateListActions = exports.generateDeleteAction = exports.generateDefaultActions = exports.dataIsModified = exports.cancelUnsavedEntityDialog = exports.cancelDeleteEntitiesDialog = exports.UNMOUNT_ENTITY = exports.SHOW_DETAILS = exports.SET_VALIDATION_ERRORS = exports.SET_VALIDATED_DATA = exports.SET_DATA_SOURCE = exports.SET_DATA = exports.REPORT_UNSAVED_ENTITY = exports.REPORT_DELETE_ENTITIES = exports.RELEASE_UNSAVED_ENTITY = exports.MOUNT_NEXT = exports.MOUNT_ENTITY = exports.MODIFIED_UNSAVED_ENTITY = exports.INIT_UNSAVED_ENTITY = exports.HIDE_DETAILS = exports.ENTITY_WILL_UNMOUNT = exports.ENTITY_WILL_MOUNT = exports.CANCEL_UNSAVED_ENTITY_DIALOG = exports.CANCEL_DELETE_ENTITIES_DIALOG = void 0;
7
7
  var _Helpers = require("../Api/Helpers");
8
8
  var _get = _interopRequireDefault(require("lodash/get"));
9
9
  var _Actions = require("../Api/Actions");
@@ -55,6 +55,11 @@ var releaseUnsavedEntity = exports.releaseUnsavedEntity = function releaseUnsave
55
55
  });
56
56
  };
57
57
  };
58
+ var releaseUnsavedEntityBypassed = exports.releaseUnsavedEntityBypassed = function releaseUnsavedEntityBypassed() {
59
+ return {
60
+ type: RELEASE_UNSAVED_ENTITY
61
+ };
62
+ };
58
63
  var cancelUnsavedEntityDialog = exports.cancelUnsavedEntityDialog = function cancelUnsavedEntityDialog() {
59
64
  return {
60
65
  type: CANCEL_UNSAVED_ENTITY_DIALOG
@@ -358,8 +363,12 @@ var generateDefaultActions = exports.generateDefaultActions = function generateD
358
363
  };
359
364
  var detailsAction = function detailsAction(params) {
360
365
  return function (dispatch) {
366
+ var _keepMounted$params = _objectSpread({
367
+ keepMounted: false
368
+ }, params),
369
+ keepMounted = _keepMounted$params.keepMounted;
361
370
  return dispatch(triggerUnsavedEntity()).then(function () {
362
- dispatch(unmountEntity());
371
+ !keepMounted && dispatch(unmountEntity());
363
372
  dispatch(initUnsavedEntity(reducerName));
364
373
  dispatch((0, _Helpers.invalidateSource)(dataKey));
365
374
  return dispatch(loadEntity(params));
@@ -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
  });
@@ -76,11 +76,12 @@ var createEntity = function createEntity() {
76
76
  };
77
77
  };
78
78
  var postData = function postData() {
79
+ var hideDetails = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
79
80
  return function (dispatch, getState) {
80
81
  var _getState4 = getState(),
81
82
  designAreasData = _getState4.designAreasData;
82
83
  // to save uploaded images
83
- return dispatch(DesignAreaActions.postData(true)).then(function (res) {
84
+ return dispatch(DesignAreaActions.postData(hideDetails)).then(function (res) {
84
85
  var designAreaId = res.data.id;
85
86
  var files = designAreasData.data.designProductionMethods.value.map(function (dp) {
86
87
  return {
@@ -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);
@@ -69,7 +69,11 @@ var applyLinks = exports.applyLinks = function applyLinks(prevData, nextData) {
69
69
  _options$baseShapePad = options.baseShapePadding,
70
70
  baseShapePadding = _options$baseShapePad === void 0 ? _Constants.DEFAULT_BASE_SHAPE_PADDING : _options$baseShapePad,
71
71
  _options$recalculateP = options.recalculatePosition,
72
- recalculatePosition = _options$recalculateP === void 0 ? true : _options$recalculateP;
72
+ recalculatePosition = _options$recalculateP === void 0 ? true : _options$recalculateP,
73
+ _options$heightRatio = options.heightRatio,
74
+ heightRatio = _options$heightRatio === void 0 ? 1 : _options$heightRatio,
75
+ _options$widthRatio = options.widthRatio,
76
+ widthRatio = _options$widthRatio === void 0 ? 1 : _options$widthRatio;
73
77
 
74
78
  // set min value for area size
75
79
  if ((0, _get["default"])(nextData, 'position.width') <= sizeMin) {
@@ -85,6 +89,13 @@ var applyLinks = exports.applyLinks = function applyLinks(prevData, nextData) {
85
89
  });
86
90
  }
87
91
  });
92
+ if (positionRatio > 0 && Math.abs(nextData.position.width / nextData.position.height - positionRatio) > 0.01) {
93
+ if (Math.abs(heightRatio - 1) > Math.abs(widthRatio - 1)) {
94
+ (0, _set["default"])(nextData, 'position.height', Math.ceil(nextData.position.width / positionRatio));
95
+ } else {
96
+ (0, _set["default"])(nextData, 'position.width', Math.ceil(nextData.position.height * positionRatio));
97
+ }
98
+ }
88
99
  withRatio(prevData, nextData, 'baseShape.width', function (r) {
89
100
  calcPathValue(nextData, 'position.width', multiplyToPixel(r));
90
101
  }) || withRatio(prevData, nextData, 'baseShape.height', function (r) {
@@ -104,8 +115,8 @@ var applyLinks = exports.applyLinks = function applyLinks(prevData, nextData) {
104
115
  var _calculateBoundingBox = (0, _calculateBoundingBoxSize.calculateBoundingBoxSize)(nextData.position),
105
116
  width = _calculateBoundingBox.width,
106
117
  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);
118
+ (0, _set["default"])(nextData, 'baseShape.width', Math.ceil(width) + baseShapePadding * 2);
119
+ (0, _set["default"])(nextData, 'baseShape.height', Math.ceil(height) + baseShapePadding * 2);
109
120
 
110
121
  // set min value for base shape size
111
122
  if ((0, _get["default"])(nextData, 'baseShape.width') <= sizeMin) {
@@ -45,7 +45,10 @@ 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"));
51
+ var _Actions3 = require("../../../../../../App/Reducers/Entity/Actions");
49
52
  var _excluded = ["classes", "onChange", "value"];
50
53
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
51
54
  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 _t2 in e) "default" !== _t2 && {}.hasOwnProperty.call(e, _t2) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t2)) && (i.get || i.set) ? o(f, _t2, i) : f[_t2] = e[_t2]); return f; })(e, t); }
@@ -393,7 +396,9 @@ var VisualizationSettingsEdit = exports.VisualizationSettingsEdit = /*#__PURE__*
393
396
  height = _this$props$designAre.height;
394
397
  (0, _DataLinks.applyLinks)(previousData, nextData, {
395
398
  positionRatio: (width || 1) / (height || 1),
396
- recalculatePosition: isKindOf2D(_this.props.mode)
399
+ recalculatePosition: isKindOf2D(_this.props.mode),
400
+ heightRatio: customData.heightRatio,
401
+ widthRatio: customData.widthRatio
397
402
  });
398
403
  data.updateValues(nextData);
399
404
  if (data.validate()) {
@@ -427,6 +432,12 @@ var VisualizationSettingsEdit = exports.VisualizationSettingsEdit = /*#__PURE__*
427
432
  _defineProperty(_assertThisInitialized(_this), "cancel", function () {
428
433
  return _this.props.hideDetails();
429
434
  });
435
+ _defineProperty(_assertThisInitialized(_this), "saveDesignAreaDimensions", function (width, height) {
436
+ var _this$props = _this.props,
437
+ designArea = _this$props.designArea,
438
+ saveDesignAreaDimensions = _this$props.saveDesignAreaDimensions;
439
+ return saveDesignAreaDimensions(designArea.id, width, height);
440
+ });
430
441
  _defineProperty(_assertThisInitialized(_this), "areaEditorRef", /*#__PURE__*/_react["default"].createRef());
431
442
  return _this;
432
443
  }
@@ -465,6 +476,20 @@ var VisualizationSettingsEdit = exports.VisualizationSettingsEdit = /*#__PURE__*
465
476
  if (this.state.advancedMode !== prevState.advancedMode && this.baseShapeEditor) {
466
477
  this.baseShapeEditor.setAdvancedMode(this.state.advancedMode);
467
478
  }
479
+ if (prevProps.designArea && this.props.designArea !== prevProps.designArea) {
480
+ var _prevProps$designArea = prevProps.designArea,
481
+ prevWidth = _prevProps$designArea.width,
482
+ prevHeight = _prevProps$designArea.height;
483
+ var _this$props$designAre2 = this.props.designArea,
484
+ width = _this$props$designAre2.width,
485
+ height = _this$props$designAre2.height;
486
+ if (width !== prevWidth || height !== prevHeight) {
487
+ this.updateData({
488
+ heightRatio: height / prevHeight,
489
+ widthRatio: width / prevWidth
490
+ });
491
+ }
492
+ }
468
493
  }
469
494
  }, {
470
495
  key: "updateVisualization",
@@ -528,9 +553,9 @@ var VisualizationSettingsEdit = exports.VisualizationSettingsEdit = /*#__PURE__*
528
553
  }, {
529
554
  key: "getCurrentDesignAreaData",
530
555
  value: function getCurrentDesignAreaData() {
531
- var _this$props = this.props,
532
- designArea = _this$props.designArea,
533
- entityState = _this$props.entityState;
556
+ var _this$props2 = this.props,
557
+ designArea = _this$props2.designArea,
558
+ entityState = _this$props2.entityState;
534
559
  if (!designArea) {
535
560
  return null;
536
561
  }
@@ -626,9 +651,9 @@ var VisualizationSettingsEdit = exports.VisualizationSettingsEdit = /*#__PURE__*
626
651
  }, {
627
652
  key: "getCurrentMaskObject",
628
653
  value: function getCurrentMaskObject() {
629
- var _this$props2 = this.props,
630
- designArea = _this$props2.designArea,
631
- itemIdentifier = _this$props2.item.identifier;
654
+ var _this$props3 = this.props,
655
+ designArea = _this$props3.designArea,
656
+ itemIdentifier = _this$props3.item.identifier;
632
657
  var _designArea$this$getC = _objectSpread(_objectSpread({}, designArea), this.getCurrentDesignAreaData()),
633
658
  mask = _designArea$this$getC.mask,
634
659
  designAreaIdentifier = _designArea$this$getC.identifier;
@@ -658,11 +683,11 @@ var VisualizationSettingsEdit = exports.VisualizationSettingsEdit = /*#__PURE__*
658
683
  function () {
659
684
  var _loadModel = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
660
685
  var _this2 = this;
661
- var _this$props3, item, mode, variant, three;
686
+ var _this$props4, item, mode, variant, three;
662
687
  return _regeneratorRuntime().wrap(function _callee4$(_context4) {
663
688
  while (1) switch (_context4.prev = _context4.next) {
664
689
  case 0:
665
- _this$props3 = this.props, item = _this$props3.item, mode = _this$props3.mode;
690
+ _this$props4 = this.props, item = _this$props4.item, mode = _this$props4.mode;
666
691
  try {
667
692
  variant = (0, _get["default"])(item, 'children[0]', item);
668
693
  if (!item || !variant) {
@@ -792,10 +817,10 @@ var VisualizationSettingsEdit = exports.VisualizationSettingsEdit = /*#__PURE__*
792
817
  key: "renderHeader",
793
818
  value: function renderHeader(designAreaData) {
794
819
  var _this3 = this;
795
- var _this$props4 = this.props,
796
- designArea = _this$props4.designArea,
797
- classes = _this$props4.classes,
798
- mode = _this$props4.mode;
820
+ var _this$props5 = this.props,
821
+ designArea = _this$props5.designArea,
822
+ classes = _this$props5.classes,
823
+ mode = _this$props5.mode;
799
824
  var designProductionMethods = (designArea.designProductionMethods || []).map(function (dpm) {
800
825
  return dpm.title;
801
826
  }).join(', ');
@@ -810,9 +835,12 @@ var VisualizationSettingsEdit = exports.VisualizationSettingsEdit = /*#__PURE__*
810
835
  fallback: designArea.identifier || 'Title of the design area'
811
836
  })), /*#__PURE__*/_react["default"].createElement("div", {
812
837
  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"], {
838
+ }, designProductionMethods), /*#__PURE__*/_react["default"].createElement(_DesignAreaDimensionsEditor["default"], {
839
+ width: designArea.width,
840
+ height: designArea.height,
841
+ onSave: this.saveDesignAreaDimensions,
842
+ disabled: !designArea.id
843
+ }), this.state.cameraViews.length > 0 && /*#__PURE__*/_react["default"].createElement(_SelectField["default"], {
816
844
  onChange: this.onChangeCameraView,
817
845
  label: (0, _i18n.T)('designer.visualization.cameraPosition'),
818
846
  value: this.state.selectedCameraView,
@@ -852,9 +880,9 @@ var VisualizationSettingsEdit = exports.VisualizationSettingsEdit = /*#__PURE__*
852
880
  key: "renderVisualization",
853
881
  value: function renderVisualization(designAreaData) {
854
882
  var _this4 = this;
855
- var _this$props5 = this.props,
856
- mode = _this$props5.mode,
857
- classes = _this$props5.classes;
883
+ var _this$props6 = this.props,
884
+ mode = _this$props6.mode,
885
+ classes = _this$props6.classes;
858
886
  var three = this.three;
859
887
  if (isKindOf2D(mode)) {
860
888
  return /*#__PURE__*/_react["default"].createElement("div", {
@@ -910,7 +938,7 @@ var VisualizationSettingsEdit = exports.VisualizationSettingsEdit = /*#__PURE__*
910
938
  },
911
939
  label: (0, _i18n.T)('designer.productSizeControls.dimension'),
912
940
  disableUnderline: true,
913
- value: prodVisSize.dimension
941
+ value: (prodVisSize === null || prodVisSize === void 0 ? void 0 : prodVisSize.dimension) || 'width'
914
942
  }, /*#__PURE__*/_react["default"].createElement(_MenuItem["default"], {
915
943
  value: "width"
916
944
  }, (0, _i18n.T)('designer.productSizeControls.width')), /*#__PURE__*/_react["default"].createElement(_MenuItem["default"], {
@@ -918,10 +946,11 @@ var VisualizationSettingsEdit = exports.VisualizationSettingsEdit = /*#__PURE__*
918
946
  }, (0, _i18n.T)('designer.productSizeControls.height'))), /*#__PURE__*/_react["default"].createElement(NumberInput, {
919
947
  label: 'mm',
920
948
  name: "productSize",
921
- value: prodVisSize.value,
949
+ value: prodVisSize === null || prodVisSize === void 0 ? void 0 : prodVisSize.value,
922
950
  onChange: function onChange(evt) {
923
951
  _this5.setState({
924
952
  productVisualizationSize: _objectSpread(_objectSpread({}, prodVisSize), {}, {
953
+ dimension: (prodVisSize === null || prodVisSize === void 0 ? void 0 : prodVisSize.dimension) || 'width',
925
954
  value: evt.target.value
926
955
  })
927
956
  });
@@ -935,6 +964,7 @@ var VisualizationSettingsEdit = exports.VisualizationSettingsEdit = /*#__PURE__*
935
964
  }
936
965
  }), /*#__PURE__*/_react["default"].createElement(_RaisedButton["default"], {
937
966
  label: (0, _i18n.T)('designer.productSizeControls.apply'),
967
+ 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
968
  onClick: function onClick() {
939
969
  _this5.updateData({
940
970
  baseShape: _this5.calculateBaseShapeSize()
@@ -945,11 +975,11 @@ var VisualizationSettingsEdit = exports.VisualizationSettingsEdit = /*#__PURE__*
945
975
  }, {
946
976
  key: "render",
947
977
  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;
978
+ var _this$props7 = this.props,
979
+ designArea = _this$props7.designArea,
980
+ classes = _this$props7.classes,
981
+ mode = _this$props7.mode,
982
+ entityState = _this$props7.entityState;
953
983
  var three = this.three;
954
984
  if (!designArea || !entityState.showDetails) {
955
985
  return null;
@@ -1012,7 +1042,9 @@ _defineProperty(VisualizationSettingsEdit, "propTypes", {
1012
1042
  entityState: _propTypes["default"].object,
1013
1043
  classes: _propTypes["default"].object,
1014
1044
  setData: _propTypes["default"].func.isRequired,
1015
- postData: _propTypes["default"].func.isRequired
1045
+ postData: _propTypes["default"].func.isRequired,
1046
+ saveDesignAreaDimensions: _propTypes["default"].func.isRequired,
1047
+ setState: _propTypes["default"].func
1016
1048
  });
1017
1049
  _defineProperty(VisualizationSettingsEdit, "defaultProps", {
1018
1050
  classes: {}
@@ -1087,8 +1119,46 @@ var StyledVisualizationSettingsEdit = exports.StyledVisualizationSettingsEdit =
1087
1119
  };
1088
1120
  })(VisualizationSettingsEdit))));
1089
1121
  var ConnectedEdit = (0, _DefaultConnectedForm.connectDefault)(StyledVisualizationSettingsEdit, _Actions.REDUCER_NAME, _Actions["default"].setFieldData, _Actions["default"].postData, _Actions["default"].hideDetails);
1122
+ var _saveDesignAreaDimensions = function saveDesignAreaDimensions(designAreaId, width, height) {
1123
+ return function (dispatch, getState) {
1124
+ dispatch((0, _Actions3.releaseUnsavedEntityBypassed)());
1125
+ return dispatch(_Actions2["default"].detailsAction({
1126
+ id: designAreaId,
1127
+ showDetailsWhenLoaded: false
1128
+ })).then(function () {
1129
+ dispatch(_Actions2["default"].setFieldData('width', width));
1130
+ dispatch(_Actions2["default"].setFieldData('height', height));
1131
+ return dispatch(_Actions2["default"].postData(false));
1132
+ }).then(function () {
1133
+ var savedDesignArea = (0, _get["default"])(getState(), "dataBySource.".concat(_Actions2.DATA_KEY, ".data"));
1134
+ if (!savedDesignArea) {
1135
+ return Promise.reject(new Error('Failed to save design area dimensions'));
1136
+ }
1137
+ return savedDesignArea;
1138
+ });
1139
+ };
1140
+ };
1090
1141
  var _default = exports["default"] = (0, _reactRedux.connect)(function (state) {
1091
1142
  return {
1092
- allowUmlauts: !!(0, _get["default"])(state, 'settingData.data.allowUmlautsInIdentifiers.value', false)
1143
+ allowUmlauts: !!(0, _get["default"])(state, 'settingData.data.allowUmlautsInIdentifiers.value', false),
1144
+ designViewId: state[_Actions.REDUCER_NAME].data.id.value
1145
+ };
1146
+ }, function (dispatch) {
1147
+ return {
1148
+ saveDesignAreaDimensions: function saveDesignAreaDimensions(designAreaId, width, height) {
1149
+ return dispatch(_saveDesignAreaDimensions(designAreaId, width, height)).then(function (savedDesignArea) {
1150
+ dispatch(_Actions2["default"].invalidateList());
1151
+ dispatch(_Actions2["default"].listAction());
1152
+ dispatch(function (dispatch, getState) {
1153
+ var designViewId = getState()[_Actions.REDUCER_NAME].data.id.value;
1154
+ dispatch(_Actions["default"].detailsAction({
1155
+ id: designViewId,
1156
+ keepMounted: true
1157
+ }));
1158
+ dispatch((0, _Actions3.releaseUnsavedEntityBypassed)());
1159
+ });
1160
+ return savedDesignArea;
1161
+ });
1162
+ }
1093
1163
  };
1094
1164
  })(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.2",
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.2",
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.2",
33
33
  "redux": "^4.1.0",
34
34
  "redux-logger": "^3.0.6",
35
35
  "redux-persist": "^5.10.0",