@configuratorware/configurator-admingui 1.53.6 → 1.54.0

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 (29) hide show
  1. package/App/Data.js +32 -15
  2. package/App/Reducers/Entity/Actions.js +6 -1
  3. package/App/Translations.js +0 -2
  4. package/Components/DefaultConnectedForm.js +4 -1
  5. package/Components/DefaultForm.js +4 -2
  6. package/Components/Form.js +2 -1
  7. package/Components/FormFragments/InputArray.js +2 -1
  8. package/Components/FormFragments/NestedDataComponent.js +3 -1
  9. package/Components/FormHooks/useDataSchema.js +6 -3
  10. package/Screens/Creator/Components/OptionPriceEditor.js +4 -2
  11. package/Screens/Creator/Components/OptionclassificationEditor.js +5 -4
  12. package/Screens/Designer/SubScreens/DesignAreas/Components/FormArray.js +13 -9
  13. package/Screens/Designer/SubScreens/Visualization/Containers/Edit/Edit.js +11 -2
  14. package/Screens/Login/Reducers/Actions.js +29 -4
  15. package/Screens/Setting/Reducers/Reducer.js +2 -1
  16. package/Screens/index.js +0 -3
  17. package/package.json +3 -3
  18. package/Screens/Assemblypointeditor/Components/AssemblypointTable.js +0 -125
  19. package/Screens/Assemblypointeditor/Components/Assemblypointeditor.js +0 -741
  20. package/Screens/Assemblypointeditor/Components/Styles.scss +0 -58
  21. package/Screens/Assemblypointeditor/Components/fabric.min.js +0 -1
  22. package/Screens/Assemblypointeditor/Containers/Edit.js +0 -65
  23. package/Screens/Assemblypointeditor/Containers/List.js +0 -42
  24. package/Screens/Assemblypointeditor/Reducers/Actions.js +0 -56
  25. package/Screens/Assemblypointeditor/Reducers/Reducer.js +0 -139
  26. package/Screens/Assemblypointeditor/Screen.js +0 -34
  27. package/Screens/Assemblypointeditor/Styles.scss +0 -38
  28. package/Screens/Assemblypointeditor/Translations.js +0 -14
  29. package/Screens/Assemblypointeditor/index.js +0 -14
@@ -1,741 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.generateAssemblypointeditor = exports["default"] = void 0;
7
- var _react = _interopRequireWildcard(require("react"));
8
- var _lodash = _interopRequireDefault(require("lodash"));
9
- var _i18n = require("../../../App/i18n");
10
- var _RaisedButton = _interopRequireDefault(require("../../../UIComponents/RaisedButton"));
11
- var _IconButton = _interopRequireDefault(require("../../../UIComponents/IconButton"));
12
- var _ZoomResetIcon = _interopRequireDefault(require("../../../UIComponents/icons/ZoomResetIcon"));
13
- var _AssemblypointTable = _interopRequireDefault(require("./AssemblypointTable"));
14
- var _Select = _interopRequireDefault(require("../../../Components/FormFragments/Select"));
15
- var _network = _interopRequireDefault(require("../../../App/Config/network"));
16
- var _CopyPaste = _interopRequireDefault(require("../../../Components/CopyPaste"));
17
- require("./Styles.scss");
18
- require("./fabric.min.js");
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 _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
22
- 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); }
23
- 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; } } }; }
24
- 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; } }
25
- 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; }
26
- function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
27
- function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
28
- function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
29
- function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
30
- function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
31
- function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
32
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
33
- function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
34
- function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
35
- function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
36
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
37
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
38
- function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /* global fabric */
39
- var baseUrl = _network["default"].assemblyPointEditorBaseURL;
40
- var DEVICE_PIXEL_RATIO = window.devicePixelRatio || 1;
41
- /**
42
- * AssemblyImage fabric class that extends the fabric.Image, used to render the assembly points
43
- */
44
- var AssemblyImage = fabric.util.createClass(fabric.Image, {
45
- objectCaching: false,
46
- initialize: function initialize(options) {
47
- this.callSuper('initialize', options);
48
- this.originX = 'center';
49
- this.originY = 'center';
50
- this.borderColor = 'red';
51
- this.cornerColor = 'red';
52
- this.transparentCorners = false;
53
- this.lockUniScaling = true;
54
- this.lockScalingX = true;
55
- this.lockScalingY = true;
56
-
57
- // we just need the rotation control
58
- this.setControlsVisibility({
59
- bl: false,
60
- // bottom left
61
- br: false,
62
- // bottom right
63
- mb: false,
64
- // midle bottom
65
- ml: false,
66
- // middle left
67
- mr: false,
68
- // middle right
69
- mt: false,
70
- // middle top disable
71
- tl: false,
72
- // top left
73
- tr: false // top right
74
- });
75
- },
76
- /**
77
- * Set the identifier and the initial position by the AssemblyPoint
78
- * @param ap
79
- */
80
- setAssemblyPoint: function setAssemblyPoint(ap) {
81
- this.identifier = ap.identifier;
82
- this.left = parseInt(ap.x) || 0;
83
- this.top = parseInt(ap.y) || 0;
84
- this.angle = parseInt(ap.rotation) || 0;
85
- },
86
- setAsMain: function setAsMain() {
87
- this.isMain = true;
88
- this.top = 0;
89
- this.left = 0;
90
- this.selectable = false;
91
- this.evented = false;
92
- },
93
- _render: function _render(ctx) {
94
- // render the image
95
- this.callSuper('_render', ctx);
96
- if (this.isMain) {
97
- return; // nothing more to do...
98
- }
99
-
100
- // draw the crosshair
101
- var scale = this.canvas.getZoom() * DEVICE_PIXEL_RATIO;
102
- var size = 10;
103
- var viewportTransform = this.canvas.viewportTransform;
104
- ctx.save();
105
- ctx.beginPath();
106
- ctx.setTransform(1, 0, 0, 1, 0, 0); // resetTransform polyfill
107
- ctx.setTransform(1, 0, 0, 1, viewportTransform[4] * DEVICE_PIXEL_RATIO, viewportTransform[5] * DEVICE_PIXEL_RATIO);
108
- ctx.translate(this.left * scale, this.top * scale);
109
- ctx.lineWidth = 1;
110
- ctx.moveTo(-size, 0);
111
- ctx.lineTo(size, 0);
112
- ctx.moveTo(0, -size);
113
- ctx.lineTo(0, size);
114
- ctx.strokeStyle = '#FF0000';
115
- ctx.stroke();
116
- ctx.closePath();
117
- ctx.restore();
118
- }
119
- });
120
- /**
121
- * Loads the image from the given url and instantiates an AssemblyImage object
122
- * @param {string} url - The image to load
123
- * @param {function} callback - The callback function to call with the AssemblyImage object
124
- */
125
- AssemblyImage.fromURL = function (url, callback) {
126
- return fabric.util.loadImage(url, function (img) {
127
- var obj = new AssemblyImage(img);
128
- callback(obj);
129
- });
130
- };
131
- var Assemblypointeditor = exports["default"] = /*#__PURE__*/function (_Component) {
132
- function Assemblypointeditor(props) {
133
- var _this;
134
- _classCallCheck(this, Assemblypointeditor);
135
- _this = _callSuper(this, Assemblypointeditor, [props]);
136
-
137
- // the fabric canvas object
138
- /**
139
- * Lock or release objects (to make canvas draggable when clicking on active element)
140
- * @param {boolean} lock
141
- */
142
- _defineProperty(_this, "lockObjectMovement", function (lock) {
143
- var _iterator = _createForOfIteratorHelper(_this.canvas.getObjects()),
144
- _step;
145
- try {
146
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
147
- var o = _step.value;
148
- o.setOptions({
149
- lockMovementX: lock,
150
- lockMovementY: lock
151
- });
152
- }
153
- } catch (err) {
154
- _iterator.e(err);
155
- } finally {
156
- _iterator.f();
157
- }
158
- });
159
- /**
160
- * Modify the position of the active object (rerenders the canvas, updates related AssemblyPoints)
161
- * @param {('left'|'top')} positionProp
162
- * @param {number} value
163
- */
164
- _defineProperty(_this, "modifyPosition", function (positionProp, value) {
165
- var aobj = _this.canvas.getActiveObject() || _this.canvas.getActiveGroup();
166
- if (!aobj) {
167
- return;
168
- }
169
- aobj.set(positionProp, aobj[positionProp] + value);
170
- aobj.setCoords();
171
- var objs = aobj.identifier ? [aobj] : aobj.getObjects();
172
- var assemblyPoints = _this.state.assemblyPoints;
173
- var _iterator2 = _createForOfIteratorHelper(objs),
174
- _step2;
175
- try {
176
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
177
- var obj = _step2.value;
178
- if (obj.identifier) {
179
- var ap = _lodash["default"].find(assemblyPoints, {
180
- identifier: obj.identifier
181
- }),
182
- matrix = obj.calcTransformMatrix(),
183
- options = fabric.util.qrDecompose(matrix);
184
- ap.y = Math.round(options.translateY);
185
- ap.x = Math.round(options.translateX);
186
- ap.rotation = Math.round(options.angle);
187
- }
188
- }
189
- } catch (err) {
190
- _iterator2.e(err);
191
- } finally {
192
- _iterator2.f();
193
- }
194
- _this.onAssemblyPointChange(assemblyPoints);
195
- _this.canvas.renderAll();
196
- });
197
- /**
198
- * Wheel handler for zooming
199
- * @param {object} e - The mouse wheel event object
200
- */
201
- _defineProperty(_this, "wheelHandler", function (e) {
202
- var zoom = _this.state.zoom + (e.wheelDelta > 0 ? 1 : -1);
203
- if (zoom >= 0 && zoom < _this.zoomValues.length) {
204
- var zoomValue = _this.zoomValues[zoom];
205
- _this.canvas.zoomToPoint(_this.canvas.getPointer(e), _this.zoomBase * zoomValue / 100);
206
- _this.setState({
207
- zoom: zoom,
208
- zoomValue: zoomValue
209
- });
210
- }
211
- });
212
- /**
213
- * KeyDown handler to move the active object and drag the canvas
214
- * @param {object} e - The keydown event object
215
- */
216
- _defineProperty(_this, "keyDownHandler", function (e) {
217
- var value = e.ctrlKey ? 10 : 1; // move more when ctrlKey is down
218
- switch (e.keyCode) {
219
- case 37:
220
- // left arrow
221
- _this.modifyPosition('left', -value);
222
- break;
223
- case 38:
224
- // up arrow
225
- _this.modifyPosition('top', -value);
226
- break;
227
- case 39:
228
- // right arrow
229
- _this.modifyPosition('left', value);
230
- break;
231
- case 40:
232
- // down arrow
233
- _this.modifyPosition('top', value);
234
- break;
235
- case 32:
236
- // space
237
- _this._forceDragCanvas = true;
238
- break;
239
- }
240
- });
241
- /**
242
- * KeyUp handler to stop forced canvas dragging
243
- * @param {object} e - The keyup event object
244
- */
245
- _defineProperty(_this, "keyUpHandler", function (e) {
246
- switch (e.keyCode) {
247
- case 32:
248
- // space
249
- _this._forceDragCanvas = false;
250
- break;
251
- }
252
- });
253
- /**
254
- * Resize handler to adjust canvas width to the maximum available width
255
- */
256
- _defineProperty(_this, "resizeHandler", function () {
257
- if (_this.refs.canvasContainer) {
258
- _this.canvas.setWidth(_this.refs.canvasContainer.clientWidth);
259
- }
260
- });
261
- /**
262
- * Update assembly point data when modifying object on canvas
263
- * @param {object} target - The fabric object (or group)
264
- */
265
- _defineProperty(_this, "updateAssemblyPointData", function (_ref) {
266
- var target = _ref.target;
267
- var assemblyPoints = _this.state.assemblyPoints;
268
- var objs = target.identifier ? [target] : target.getObjects();
269
- var _iterator3 = _createForOfIteratorHelper(objs),
270
- _step3;
271
- try {
272
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
273
- var obj = _step3.value;
274
- if (obj.identifier) {
275
- var ap = _lodash["default"].find(assemblyPoints, {
276
- identifier: obj.identifier
277
- }),
278
- matrix = obj.calcTransformMatrix(),
279
- options = fabric.util.qrDecompose(matrix);
280
- ap.y = Math.round(options.translateY);
281
- ap.x = Math.round(options.translateX);
282
- ap.rotation = Math.round(options.angle);
283
- }
284
- }
285
- } catch (err) {
286
- _iterator3.e(err);
287
- } finally {
288
- _iterator3.f();
289
- }
290
- _this.onAssemblyPointChange(assemblyPoints);
291
- });
292
- /**
293
- * Update the related object on the canvas by the given AssemblyPoint data
294
- * @param {object} assemblyPoint - AssemblyPoint object
295
- * @param {boolean} [rerender=true] - rerender canvas after update element
296
- */
297
- _defineProperty(_this, "updateCanvasObject", function (assemblyPoint) {
298
- var rerender = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
299
- var element = _this.canvasObjects[assemblyPoint.identifier];
300
- if (!element) {
301
- // eslint-disable-next-line no-console
302
- console.warn('Canvas element is missing for identifier: ' + assemblyPoint.identifier);
303
- return;
304
- }
305
- element.setLeft(parseInt(assemblyPoint.x) || 0);
306
- element.setTop(parseInt(assemblyPoint.y) || 0);
307
- element.setAngle(parseInt(assemblyPoint.rotation) || 0);
308
- rerender && _this.canvas.renderAll();
309
- });
310
- /**
311
- * Update all the canvas objects by the current AssemblyPoint data
312
- */
313
- _defineProperty(_this, "updateAllCanvasObjects", function () {
314
- var aps = _this.state.assemblyPoints;
315
- if (_lodash["default"].size(_this.canvasObjects) !== aps.length) {
316
- // skipping, canvas objects are not added yet..
317
- // eslint-disable-next-line no-console
318
- console.log('skipping update, canvas objects are not added yet..');
319
- return;
320
- }
321
- var _loop = function _loop() {
322
- var ap = aps[api];
323
- if (!ap.product) {
324
- // if no product it cannot be displayed
325
- // eslint-disable-next-line no-console
326
- console.log('skipping update, no product for assembly point: ' + ap.identifier);
327
- return 1; // continue
328
- }
329
- if (ap.product !== _this._selectedElementLastState.assemblyPoints[api].product) {
330
- AssemblyImage.fromURL(baseUrl + ap.imageDirectory + '/' + ap.product + ap.imageSuffix + '.png', function (assemblyPart) {
331
- assemblyPart.setAssemblyPoint(ap);
332
- _this.canvas.add(assemblyPart).moveTo(assemblyPart, ap.imageSequenceNumber).setActiveObject(assemblyPart);
333
-
334
- // remove previous object
335
- _this.canvas.remove(_this.canvasObjects[ap.identifier]);
336
- // store object reference (key = assembly part identifier)
337
- _this.canvasObjects[ap.identifier] = assemblyPart;
338
- });
339
- } else {
340
- _this.updateCanvasObject(aps[api], false);
341
- }
342
- };
343
- for (var api in aps) {
344
- if (_loop()) continue;
345
- }
346
- _this.canvas.renderAll();
347
- });
348
- /**
349
- * Set activeAssemblyPoints by selection target
350
- * @param {object} target - Canvas selection event target
351
- */
352
- _defineProperty(_this, "updateSelection", function (_ref2) {
353
- var target = _ref2.target;
354
- var activeAssemblyPoints = target ? target.identifier ? [target.identifier] : target.getObjects().map(function (obj) {
355
- return obj.identifier;
356
- }) : [];
357
- _this.setState({
358
- activeAssemblyPoints: activeAssemblyPoints
359
- });
360
- });
361
- /**
362
- * Load and add AssemblyImage elements to the canvas (in initial phase)
363
- */
364
- _defineProperty(_this, "addElementsToCanvas", function () {
365
- var selectedElement = _this.state.selectedElement;
366
- _this.canvasObjects = {};
367
-
368
- // Load the main (parent) element
369
- AssemblyImage.fromURL(baseUrl + selectedElement.imageDirectory + '/' + selectedElement.imageName + '.png', function (assemblyPart) {
370
- assemblyPart.setAsMain();
371
-
372
- // set zoom and zoomValue to fit the main element within the canvas
373
- if (assemblyPart.height > _this.canvas.getHeight() || assemblyPart.width > _this.canvas.getWidth()) {
374
- _this.zoomBase = Math.min(_this.canvas.getHeight() / assemblyPart.height, _this.canvas.getWidth() / assemblyPart.width);
375
- var center = _this.canvas.getCenter();
376
- _this.canvas.zoomToPoint(new fabric.Point(center.left, center.top), _this.zoomBase);
377
- }
378
- _this.canvas.add(assemblyPart).moveTo(assemblyPart, selectedElement.imageSequenceNumber);
379
- });
380
-
381
- // Load all the other assembly points belonging to the main element
382
- var _iterator4 = _createForOfIteratorHelper(_this.state.assemblyPoints),
383
- _step4;
384
- try {
385
- var _loop2 = function _loop2() {
386
- var ap = _step4.value;
387
- AssemblyImage.fromURL(baseUrl + ap.imageDirectory + '/' + ap.product + ap.imageSuffix + '.png', function (assemblyPart) {
388
- assemblyPart.setAssemblyPoint(ap);
389
- _this.canvas.add(assemblyPart).moveTo(assemblyPart, ap.imageSequenceNumber);
390
-
391
- // store object reference (key = assembly part identifier)
392
- _this.canvasObjects[ap.identifier] = assemblyPart;
393
- });
394
- };
395
- for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
396
- _loop2();
397
- }
398
- } catch (err) {
399
- _iterator4.e(err);
400
- } finally {
401
- _iterator4.f();
402
- }
403
- });
404
- /**
405
- * Update redux state when AssemblyPoint data changes
406
- * @param {object} [assemblyPoint] - The AssemblyPoint object to update on canvas
407
- */
408
- _defineProperty(_this, "onAssemblyPointChange", function () {
409
- var setData = _this.props.setData;
410
- var elements = _this.state.elements;
411
- setData('visualizationdata', elements);
412
- });
413
- /**
414
- * Set the active AssemblyPoint from outside of the canvas (eg. with selecting it from the list)
415
- * @param {string} identifier - The AssemblyPoint identifier
416
- */
417
- _defineProperty(_this, "setActiveAssemblyPoint", function (identifier) {
418
- var obj = _this.canvasObjects[identifier];
419
- _this.canvas.deactivateAll().setActiveObject(obj);
420
- });
421
- _defineProperty(_this, "selectElement", function (name, index) {
422
- var selectedElementIndex = index;
423
- var selectedElement = _this.state.elements[index];
424
- if (!selectedElement) {
425
- throw new Error('Element does not exist at index: ' + index);
426
- }
427
- var assemblyPoints = _lodash["default"].get(selectedElement, 'assemblyPoints', []) || [];
428
- _this.setState({
429
- selectedElement: selectedElement,
430
- selectedElementIndex: selectedElementIndex,
431
- assemblyPoints: assemblyPoints
432
- }, function () {
433
- _this.canvas.clear();
434
- _this.addElementsToCanvas();
435
- });
436
- });
437
- _defineProperty(_this, "resetZoom", function () {
438
- var center = _this.canvas.getCenter();
439
- var viewportTransform = _this.canvas.viewportTransform;
440
- viewportTransform[4] = center.left;
441
- viewportTransform[5] = center.top;
442
- _this.canvas.setViewportTransform(viewportTransform);
443
- _this.canvas.zoomToPoint(new fabric.Point(center.left, center.top), _this.zoomBase);
444
- _this.setState({
445
- zoom: 0,
446
- zoomValue: _this.zoomValues[0]
447
- });
448
- });
449
- _defineProperty(_this, "pasteAssemblyPoints", function (assemblyPoints) {
450
- var _this$props = _this.props,
451
- entityState = _this$props.entityState,
452
- setData = _this$props.setData;
453
- var selectedElementIndex = _this.state.selectedElementIndex;
454
-
455
- // cloning elements to keep the state clean
456
- var elements = _lodash["default"].cloneDeep(_lodash["default"].get(entityState, 'data.visualizationdata.value', [])) || [];
457
- // make the first element selected by default
458
- var selectedElement = elements.length > 0 ? elements[selectedElementIndex] : null;
459
- // just a reference to the current assemblyPoints
460
- _lodash["default"].set(selectedElement, 'assemblyPoints', assemblyPoints);
461
- setData('visualizationdata', elements);
462
- });
463
- _this.canvas = null;
464
- // canvas object map (keys are AssemblyPoint identifiers)
465
- _this.canvasObjects = {};
466
-
467
- // drag canvas flag (currently dragging)
468
- _this._dragCanvas = false;
469
- // force drag flag (want to start dragging)
470
- _this._forceDragCanvas = false;
471
- // last position of dragging (helper in movement calculation)
472
- _this._position = {};
473
-
474
- // reference to the last state of the selected visualizationdata element
475
- _this._selectedElementLastState = null;
476
- _this.zoomValues = [100, 110, 125, 150, 175, 200, 250, 300, 500];
477
- _this.zoomBase = 1;
478
- _this.state = {
479
- zoom: 0,
480
- // the zoom level
481
- zoomValue: _this.zoomValues[0],
482
- // the zoom value (given by zoom level)
483
-
484
- elements: [],
485
- // visualizationdata elements
486
- selectedElement: null,
487
- // selected visualizationdata element
488
- selectedElementIndex: 0,
489
- // selected visualizationdata element index
490
- assemblyPoints: [],
491
- // assemblyPoints of selected visualizationdata element
492
- activeAssemblyPoints: [],
493
- // selected assemblyPoints (list of identifiers)
494
- sampleOptions: {}
495
- };
496
- return _this;
497
- }
498
- _inherits(Assemblypointeditor, _Component);
499
- return _createClass(Assemblypointeditor, [{
500
- key: "componentDidMount",
501
- value: function componentDidMount() {
502
- var _this2 = this;
503
- // register handlers
504
- this.refs.canvasContainer.addEventListener('wheel', this.wheelHandler);
505
- document.addEventListener('keydown', this.keyDownHandler);
506
- document.addEventListener('keyup', this.keyUpHandler);
507
- window.addEventListener('resize', this.resizeHandler);
508
- var canvasElement = this.refs.canvas;
509
-
510
- // the main canvas element
511
- this.canvas = new fabric.Canvas(canvasElement, {
512
- width: canvasElement.offsetWidth,
513
- height: canvasElement.offsetHeight,
514
- selection: false
515
- });
516
-
517
- // set (0,0) as the center
518
- var center = this.canvas.getCenter();
519
- var viewportTransform = this.canvas.viewportTransform;
520
- viewportTransform[4] = center.left;
521
- viewportTransform[5] = center.top;
522
- this.canvas.setViewportTransform(viewportTransform);
523
-
524
- // register mouse:down to detect start of dragging canvas
525
- this.canvas.on('mouse:down', function (e) {
526
- // ctrlKey forces it (canvas can be moved when object is selected)
527
- if (!e.target || !e.target.selectable || e.e.ctrlKey || _this2._forceDragCanvas) {
528
- _this2.lockObjectMovement(true);
529
- _this2._dragCanvas = true;
530
- _this2._position = {
531
- x: e.e.clientX,
532
- y: e.e.clientY
533
- };
534
- }
535
- });
536
- // register mouse:up to finish dragging
537
- this.canvas.on('mouse:up', function () {
538
- if (_this2._dragCanvas) {
539
- _this2._dragCanvas = false;
540
- _this2.lockObjectMovement(false);
541
- }
542
- });
543
- // register mouse:move to translate canvas when dragging
544
- this.canvas.on('mouse:move', function (e) {
545
- if (_this2._dragCanvas) {
546
- var _this2$_position = _this2._position,
547
- x = _this2$_position.x,
548
- y = _this2$_position.y;
549
- _this2._position = {
550
- x: e.e.clientX,
551
- y: e.e.clientY
552
- };
553
- var movement = {
554
- x: _this2._position.x - x,
555
- y: _this2._position.y - y
556
- };
557
-
558
- // translating viewport x and y
559
- var _viewportTransform = _this2.canvas.viewportTransform;
560
- _viewportTransform[4] += movement.x;
561
- _viewportTransform[5] += movement.y;
562
- _this2.canvas.setViewportTransform(_viewportTransform);
563
- }
564
- });
565
- // register canvas object and selection events
566
- this.canvas.on({
567
- 'object:moving': this.updateAssemblyPointData,
568
- 'object:rotating': this.updateAssemblyPointData,
569
- 'object:selected': this.updateSelection,
570
- 'selection:cleared': this.updateSelection
571
- });
572
- this._lastCanvasContainerWidth = this.refs.canvasContainer.clientWidth;
573
- this._resizeCheckInterval = setInterval(function () {
574
- if (_this2.refs.canvasContainer.clientWidth !== _this2._lastCanvasContainerWidth) {
575
- _this2._lastCanvasContainerWidth = _this2.refs.canvasContainer.clientWidth;
576
- _this2.canvas.setWidth(_this2._lastCanvasContainerWidth);
577
- }
578
- }, 500);
579
- this.handleProps({}, this.props);
580
- }
581
- }, {
582
- key: "componentWillUnmount",
583
- value: function componentWillUnmount() {
584
- // clean up listeners
585
- this.refs.canvasContainer.removeEventListener('wheel', this.wheelHandler);
586
- document.removeEventListener('keydown', this.keyDownHandler);
587
- document.removeEventListener('keyup', this.keyUpHandler);
588
- window.removeEventListener('resize', this.resizeHandler);
589
- clearInterval(this._resizeCheckInterval);
590
- }
591
- }, {
592
- key: "componentWillReceiveProps",
593
- value: function componentWillReceiveProps(props) {
594
- this.handleProps(this.props, props);
595
- }
596
- }, {
597
- key: "handleProps",
598
- value: function handleProps(prevProps, props) {
599
- var _this3 = this;
600
- var entityState = props.entityState;
601
- var selectedElementIndex = this.state.selectedElementIndex;
602
-
603
- // cloning elements to keep the state clean
604
- var elements = _lodash["default"].cloneDeep(_lodash["default"].get(entityState, 'data.visualizationdata.value', [])) || [];
605
- // make the first element selected by default
606
- var selectedElement = elements.length > 0 ? elements[selectedElementIndex] : null;
607
- // just a reference to the current assemblyPoints
608
- var assemblyPoints = _lodash["default"].get(selectedElement, 'assemblyPoints', []) || [];
609
- var sampleOptions = _lodash["default"].get(entityState, 'dataSources.sampleOptions', {});
610
-
611
- // init canvas when entity state becomes ready
612
- var initCanvas = !_lodash["default"].get(prevProps, 'entityState.isReady', false) && entityState.isReady;
613
- // setting a reference to the last state
614
- this._selectedElementLastState = _lodash["default"].get(this, "props.entityState.data.visualizationdata.value[".concat(selectedElementIndex, "]"));
615
- // update when element data has changed
616
- var updateElements = entityState.isReady && !_lodash["default"].isEqual(selectedElement, this._selectedElementLastState);
617
- var optionId = _lodash["default"].get(entityState, 'data.id.value');
618
- this.setState({
619
- elements: elements,
620
- selectedElement: selectedElement,
621
- assemblyPoints: assemblyPoints,
622
- sampleOptions: sampleOptions
623
- }, function () {
624
- if (initCanvas) {
625
- _this3.canvas.clear();
626
- _this3.props.fetchSampleOptions(assemblyPoints, optionId).then(function () {
627
- _this3.addElementsToCanvas();
628
- });
629
- } else if (updateElements) {
630
- _this3.updateAllCanvasObjects();
631
- }
632
- });
633
- }
634
- }, {
635
- key: "render",
636
- value: function render() {
637
- var _this$state = this.state,
638
- elements = _this$state.elements,
639
- selectedElement = _this$state.selectedElement,
640
- selectedElementIndex = _this$state.selectedElementIndex,
641
- assemblyPoints = _this$state.assemblyPoints,
642
- activeAssemblyPoints = _this$state.activeAssemblyPoints;
643
- var _this$props2 = this.props,
644
- postData = _this$props2.postData,
645
- hideDetails = _this$props2.hideDetails;
646
- return /*#__PURE__*/_react["default"].createElement("div", {
647
- style: {
648
- height: '100%',
649
- width: '100%'
650
- }
651
- }, elements.length > 0 && /*#__PURE__*/_react["default"].createElement("div", {
652
- className: "assembly-element"
653
- }, /*#__PURE__*/_react["default"].createElement("span", {
654
- className: "assembly-element-select-label"
655
- }, "Assemblypoint element: "), elements.length === 1 ? /*#__PURE__*/_react["default"].createElement("span", {
656
- className: "assembly-element-single-identifier"
657
- }, _lodash["default"].get(selectedElement, 'identifier')) : /*#__PURE__*/_react["default"].createElement("div", {
658
- className: "assembly-element-select"
659
- }, /*#__PURE__*/_react["default"].createElement(_Select["default"], {
660
- source: elements.map(function (_ref3, idx) {
661
- var identifier = _ref3.identifier;
662
- return {
663
- identifier: identifier,
664
- idx: idx
665
- };
666
- }),
667
- sourceConfig: {
668
- value: 'idx',
669
- text: 'identifier'
670
- },
671
- value: selectedElementIndex,
672
- onChange: this.selectElement
673
- }))), /*#__PURE__*/_react["default"].createElement("div", {
674
- className: 'assembly-editor-container' + (this.state.move ? ' move' : ''),
675
- ref: "canvasContainer",
676
- style: {
677
- height: '70%',
678
- width: '100%',
679
- border: '1px solid grey'
680
- }
681
- }, /*#__PURE__*/_react["default"].createElement("div", {
682
- className: "tools"
683
- }, /*#__PURE__*/_react["default"].createElement("div", {
684
- className: "zoom-reset"
685
- }, /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
686
- tooltip: (0, _i18n.T)('Reset zoom'),
687
- onClick: this.resetZoom
688
- }, /*#__PURE__*/_react["default"].createElement(_ZoomResetIcon["default"], null))), /*#__PURE__*/_react["default"].createElement("div", {
689
- className: "zoom-value"
690
- }, Math.round(this.state.zoomValue), "%")), /*#__PURE__*/_react["default"].createElement("canvas", {
691
- ref: "canvas",
692
- style: {
693
- height: '100%',
694
- width: '100%'
695
- }
696
- })), assemblyPoints.length > 0 && /*#__PURE__*/_react["default"].createElement("div", {
697
- className: "assemblypoints",
698
- style: {
699
- height: '30%',
700
- width: '100%',
701
- overflow: 'auto'
702
- }
703
- }, /*#__PURE__*/_react["default"].createElement(_AssemblypointTable["default"], {
704
- assemblyPoints: assemblyPoints,
705
- onSelect: this.setActiveAssemblyPoint,
706
- activeAssemblyPoints: activeAssemblyPoints,
707
- sampleOptions: this.state.sampleOptions,
708
- onChange: this.onAssemblyPointChange
709
- })), /*#__PURE__*/_react["default"].createElement("div", {
710
- className: "action-buttons"
711
- }, /*#__PURE__*/_react["default"].createElement(_CopyPaste["default"], {
712
- data: assemblyPoints,
713
- type: "assemblypoints",
714
- paste: this.pasteAssemblyPoints,
715
- style: {
716
- display: 'inline-block',
717
- "float": 'left'
718
- }
719
- }), postData && /*#__PURE__*/_react["default"].createElement(_RaisedButton["default"], {
720
- label: (0, _i18n.T)('Save'),
721
- primary: true,
722
- onClick: postData,
723
- id: "submit"
724
- }), hideDetails && /*#__PURE__*/_react["default"].createElement(_RaisedButton["default"], {
725
- label: (0, _i18n.T)('Back'),
726
- className: "full",
727
- primary: false,
728
- onClick: hideDetails,
729
- id: "back"
730
- })));
731
- }
732
- }]);
733
- }(_react.Component);
734
- var generateAssemblypointeditor = exports.generateAssemblypointeditor = function generateAssemblypointeditor() {
735
- var formFields = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
736
- return function (props) {
737
- return /*#__PURE__*/_react["default"].createElement(Assemblypointeditor, _extends({}, props, {
738
- formFields: formFields
739
- }));
740
- };
741
- };