kitchen-simulator 5.0.0-test.18 → 5.0.0-test.19

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 (179) hide show
  1. package/package.json +8 -26
  2. package/src/@history.js +3 -0
  3. package/src/CrossSignOn.jsx +94 -0
  4. package/src/KitchenConfigurator.jsx +1526 -0
  5. package/src/KitchenConfiguratorApp.jsx +1 -1
  6. package/src/_KitchenConfigurator.jsx +3 -3
  7. package/src/components/catalog-view/catalog-breadcrumb.jsx +53 -0
  8. package/src/components/catalog-view/catalog-item.jsx +229 -0
  9. package/src/components/catalog-view/catalog-list.jsx +173 -0
  10. package/src/components/catalog-view/catalog-page-item.jsx +110 -0
  11. package/src/components/catalog-view/catalog-turn-back-page-item.jsx +80 -0
  12. package/src/components/configurator/custom-configurator.jsx +77 -0
  13. package/src/components/configurator/project-configurator.jsx +120 -0
  14. package/src/components/export.js +36 -0
  15. package/src/components/firstsetting/button/styles.js +223 -0
  16. package/src/components/firstsetting/export.js +9 -0
  17. package/src/components/firstsetting/firstsetting-content-button.jsx +198 -0
  18. package/src/components/firstsetting/firstsetting-toggle-button.jsx +101 -0
  19. package/src/components/firstsetting/firstsetting.jsx +814 -0
  20. package/src/components/footerbar/button/ControlButton.jsx +43 -0
  21. package/src/components/footerbar/button/DirectionButton.jsx +54 -0
  22. package/src/components/footerbar/button/DirectionPanSpinButton.jsx +36 -0
  23. package/src/components/footerbar/button/ToggleButton.jsx +58 -0
  24. package/src/components/footerbar/button/ToggleConvertButton.jsx +48 -0
  25. package/src/components/footerbar/button/ToggleMeasureButton.jsx +33 -0
  26. package/src/components/footerbar/button/styles.js +217 -0
  27. package/src/components/footerbar/export.js +9 -0
  28. package/src/components/footerbar/footer-content-button.jsx +198 -0
  29. package/src/components/footerbar/footer-toggle-button.jsx +101 -0
  30. package/src/components/footerbar/footerbar.jsx +1103 -0
  31. package/src/components/footerbar/styles.js +263 -0
  32. package/src/components/header/button/MenuButton.jsx +46 -0
  33. package/src/components/header/button/SaveButton.jsx +54 -0
  34. package/src/components/header/button/styles.js +181 -0
  35. package/src/components/header/export.js +5 -0
  36. package/src/components/header/header.jsx +631 -0
  37. package/src/components/header/header.style.css +47 -0
  38. package/src/components/header/styles.js +320 -0
  39. package/src/components/login/Login.js +77 -0
  40. package/src/components/login/LoginForm/index.js +108 -0
  41. package/src/components/login/Register.js +82 -0
  42. package/src/components/login/RegisterForm/index.js +171 -0
  43. package/src/components/login/jwtService.js +201 -0
  44. package/src/components/login/style.css +158 -0
  45. package/src/components/login/style.scss +260 -0
  46. package/src/components/myprojects/export.js +5 -0
  47. package/src/components/myprojects/index.jsx +445 -0
  48. package/src/components/myprojects/styles.js +241 -0
  49. package/src/components/sidebar/custom-accordion.jsx +48 -0
  50. package/src/components/sidebar/export.js +15 -0
  51. package/src/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.jsx +73 -0
  52. package/src/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.jsx +101 -0
  53. package/src/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.jsx +149 -0
  54. package/src/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.jsx +316 -0
  55. package/src/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.jsx +108 -0
  56. package/src/components/sidebar/panel-element-editor/element-editor.jsx +1070 -0
  57. package/src/components/sidebar/panel-element-editor/multi-elements-editor.jsx +0 -0
  58. package/src/components/sidebar/panel-element-editor/panel-element-editor.jsx +104 -0
  59. package/src/components/sidebar/panel-element-editor/panel-multi-elements-editor.jsx +155 -0
  60. package/src/components/sidebar/panel-group-editor.jsx +272 -0
  61. package/src/components/sidebar/panel-groups.jsx +310 -0
  62. package/src/components/sidebar/panel-guides.jsx +192 -0
  63. package/src/components/sidebar/panel-layer-elements.jsx +298 -0
  64. package/src/components/sidebar/panel-layers.jsx +381 -0
  65. package/src/components/sidebar/panel.jsx +71 -0
  66. package/src/components/sidebar/sidebar.jsx +106 -0
  67. package/src/components/sidebar/toolbar-panel.jsx +139 -0
  68. package/src/components/sign/export.js +7 -0
  69. package/src/components/sign/main/index.jsx +523 -0
  70. package/src/components/sign/main/styles.js +163 -0
  71. package/src/components/toolbar/button/ControlButton.jsx +41 -0
  72. package/src/components/toolbar/button/DirectionButton.jsx +34 -0
  73. package/src/components/toolbar/button/RightButton.jsx +103 -0
  74. package/src/components/toolbar/button/ToggleButton.jsx +41 -0
  75. package/src/components/toolbar/button/index.jsx +55 -0
  76. package/src/components/toolbar/button/styles.js +127 -0
  77. package/src/components/toolbar/components/DoorStyleMenu.jsx +103 -0
  78. package/src/components/toolbar/components/Pricing.jsx +126 -0
  79. package/src/components/toolbar/components/ReviewForQuote.jsx +635 -0
  80. package/src/components/toolbar/export.js +21 -0
  81. package/src/components/toolbar/main/Alert.js +122 -0
  82. package/src/components/toolbar/main/TakePictureModal.jsx +104 -0
  83. package/src/components/toolbar/main/confirm-popup.jsx +99 -0
  84. package/src/components/toolbar/main/index.jsx +5627 -0
  85. package/src/components/toolbar/main/lShaped.json +311 -0
  86. package/src/components/toolbar/main/longNarrow.json +238 -0
  87. package/src/components/toolbar/main/myComponents.js +123 -0
  88. package/src/components/toolbar/main/oRectangle.json +220 -0
  89. package/src/components/toolbar/main/rectangle.json +238 -0
  90. package/src/components/toolbar/main/style.css +107 -0
  91. package/src/components/toolbar/main/styles.js +696 -0
  92. package/src/components/toolbar/plugin-item.jsx +123 -0
  93. package/src/components/toolbar/popup/appliance/appliance-category/index.jsx +73 -0
  94. package/src/components/toolbar/popup/appliance/choose-appliance/index.jsx +102 -0
  95. package/src/components/toolbar/popup/appliance/index.jsx +83 -0
  96. package/src/components/toolbar/popup/autosaveprompt/index.jsx +150 -0
  97. package/src/components/toolbar/popup/autosaveprompt/styles.css +64 -0
  98. package/src/components/toolbar/popup/autosaveprompt/styles.js +40 -0
  99. package/src/components/toolbar/popup/cabinet/cabinet-category/index.jsx +73 -0
  100. package/src/components/toolbar/popup/cabinet/choose-product/index.jsx +119 -0
  101. package/src/components/toolbar/popup/cabinet/index.jsx +85 -0
  102. package/src/components/toolbar/popup/doorStyle/choose-style/index.jsx +63 -0
  103. package/src/components/toolbar/popup/doorStyle/index.jsx +71 -0
  104. package/src/components/toolbar/popup/doorStyle/style-category/index.jsx +139 -0
  105. package/src/components/toolbar/popup/downloadsummary/downloadSummaryContext.js +2 -0
  106. package/src/components/toolbar/popup/downloadsummary/downloadSummaryTemp.jsx +157 -0
  107. package/src/components/toolbar/popup/downloadsummary/index.jsx +643 -0
  108. package/src/components/toolbar/popup/downloadsummary/show2D/show2DView.jsx +51 -0
  109. package/src/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.jsx +175 -0
  110. package/src/components/toolbar/popup/downloadsummary/show3D/show3DView.jsx +283 -0
  111. package/src/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.jsx +2257 -0
  112. package/src/components/toolbar/popup/downloadsummary/showCabinetInfo.js +93 -0
  113. package/src/components/toolbar/popup/downloadsummary/showElevation/showElevationView.jsx +132 -0
  114. package/src/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.jsx +2198 -0
  115. package/src/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.jsx +152 -0
  116. package/src/components/toolbar/popup/downloadsummary/showWarranty.jsx +149 -0
  117. package/src/components/toolbar/popup/downloadsummary/styles.css +177 -0
  118. package/src/components/toolbar/popup/downloadsummary/styles.js +453 -0
  119. package/src/components/toolbar/popup/finishingtouch/category/index.jsx +34 -0
  120. package/src/components/toolbar/popup/finishingtouch/index.jsx +58 -0
  121. package/src/components/toolbar/popup/finishingtouch/material-edit.jsx +112 -0
  122. package/src/components/toolbar/popup/finishingtouch/product/index.jsx +116 -0
  123. package/src/components/toolbar/popup/floorplan/choose-floor/confirm-popup.jsx +101 -0
  124. package/src/components/toolbar/popup/floorplan/choose-floor/index.jsx +254 -0
  125. package/src/components/toolbar/popup/floorplan/choose-floor/lShaped.json +311 -0
  126. package/src/components/toolbar/popup/floorplan/choose-floor/longNarrow.json +238 -0
  127. package/src/components/toolbar/popup/floorplan/choose-floor/oRectangle.json +220 -0
  128. package/src/components/toolbar/popup/floorplan/choose-floor/rectangle.json +238 -0
  129. package/src/components/toolbar/popup/floorplan/choose-floor/styles.js +86 -0
  130. package/src/components/toolbar/popup/floorplan/floor-category/index.jsx +109 -0
  131. package/src/components/toolbar/popup/floorplan/index.jsx +60 -0
  132. package/src/components/toolbar/popup/index.jsx +241 -0
  133. package/src/components/toolbar/popup/newproject/index.jsx +59 -0
  134. package/src/components/toolbar/popup/newproject/styles.css +64 -0
  135. package/src/components/toolbar/popup/newproject/styles.js +41 -0
  136. package/src/components/toolbar/popup/product/appliance.jsx +54 -0
  137. package/src/components/toolbar/popup/product/cabinetproduct.jsx +15 -0
  138. package/src/components/toolbar/popup/product/doorstyle.jsx +58 -0
  139. package/src/components/toolbar/popup/product/doorstyleproduct.jsx +47 -0
  140. package/src/components/toolbar/popup/product/floor.jsx +36 -0
  141. package/src/components/toolbar/popup/product/floorproduct.jsx +42 -0
  142. package/src/components/toolbar/popup/product/index.jsx +36 -0
  143. package/src/components/toolbar/popup/product/primary.jsx +77 -0
  144. package/src/components/toolbar/popup/product/productline.jsx +93 -0
  145. package/src/components/toolbar/popup/product/reviewItem.jsx +427 -0
  146. package/src/components/toolbar/popup/product/reviewMolding.jsx +310 -0
  147. package/src/components/toolbar/popup/product/style.css +54 -0
  148. package/src/components/toolbar/popup/product/styles.js +260 -0
  149. package/src/components/toolbar/popup/savedesign/FullPictureForm.jsx +146 -0
  150. package/src/components/toolbar/popup/savedesign/index.jsx +495 -0
  151. package/src/components/toolbar/popup/savedesign/savedesign.style.css +16 -0
  152. package/src/components/toolbar/popup/savedesign/styles.js +151 -0
  153. package/src/components/toolbar/popup/setDoorStyleOption/index.jsx +87 -0
  154. package/src/components/toolbar/popup/styles.js +909 -0
  155. package/src/components/toolbar/popup/submitforquote/AddToCartOptions.jsx +192 -0
  156. package/src/components/toolbar/popup/submitforquote/CustomerRequestsForm.jsx +96 -0
  157. package/src/components/toolbar/popup/submitforquote/SkipDesignerReview.jsx +54 -0
  158. package/src/components/toolbar/popup/submitforquote/StepDots.jsx +25 -0
  159. package/src/components/toolbar/popup/submitforquote/cart-choice.jsx +116 -0
  160. package/src/components/toolbar/popup/submitforquote/doorstyle-menus.js +38 -0
  161. package/src/components/toolbar/popup/submitforquote/index.jsx +698 -0
  162. package/src/components/toolbar/popup/submitforquote/styles.css +105 -0
  163. package/src/components/toolbar/popup/submitforquote/styles.js +294 -0
  164. package/src/components/toolbar/popup/submitprompt/index.jsx +89 -0
  165. package/src/components/toolbar/popup/submitprompt/styles.css +64 -0
  166. package/src/components/toolbar/popup/submitprompt/styles.js +42 -0
  167. package/src/components/toolbar/toolbar-button.jsx +90 -0
  168. package/src/components/toolbar/toolbar-load-button.jsx +36 -0
  169. package/src/components/toolbar/toolbar-save-button.jsx +32 -0
  170. package/src/components/wizardstep/button/styles.js +677 -0
  171. package/src/components/wizardstep/export.js +5 -0
  172. package/src/components/wizardstep/index.jsx +1372 -0
  173. package/src/components/wizardstep/styles.js +688 -0
  174. package/src/components/wizardstep/wizardstep-content-button.jsx +198 -0
  175. package/src/components/wizardstep/wizardstep-toggle-button.jsx +101 -0
  176. package/src/{_index.js → index.js} +4 -4
  177. package/src/renderer.jsx +466 -0
  178. package/src/actions/_export.js +0 -35
  179. package/src/components/_export.js +0 -11
@@ -22,7 +22,7 @@ import {
22
22
  Models as PlannerModels,
23
23
  Plugins as PlannerPlugins,
24
24
  reducer as PlannerReducer
25
- } from '../src/_index';
25
+ } from '../src/index';
26
26
  import { Map } from 'immutable';
27
27
  import ReactGA from 'react-ga4';
28
28
  import { hotjar } from 'react-hotjar';
@@ -1,6 +1,6 @@
1
1
  import axios from 'axios';
2
2
  import convert from 'convert-units';
3
- import { Plugins as PlannerPlugins } from './_index';
3
+ import { Plugins as PlannerPlugins } from './index';
4
4
  import PropTypes from 'prop-types';
5
5
  import React, { Component } from 'react';
6
6
  import ReactGA from 'react-ga4';
@@ -9,9 +9,9 @@ import { connect } from 'react-redux';
9
9
  import { bindActionCreators } from 'redux';
10
10
  import * as constants from './constants';
11
11
  import { base64Decode, getPath } from './utils/helper';
12
- import actions from './actions/_export';
12
+ import actions from './actions/export';
13
13
  import Catalog from './catalog/catalog';
14
- import { Content } from './components/_export';
14
+ import { Content } from './components/export';
15
15
  import Translator from './translator/translator';
16
16
  import { objectsMap } from './utils/objects-utils';
17
17
  import { VERSION } from './version';
@@ -0,0 +1,53 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { MdArrowBack as Arrow } from 'react-icons/md';
4
+ import * as SharedStyle from '../../shared-style';
5
+
6
+ const breadcrumbStyle = {
7
+ margin: '1.5em',
8
+ display: 'flex'
9
+ };
10
+
11
+ const breadcrumbTextStyle = {
12
+ fontSize: '20px',
13
+ cursor: 'pointer'
14
+ };
15
+
16
+ const breadcrumbLastTextStyle = {
17
+ ...breadcrumbTextStyle,
18
+ fontWeight: 'bolder',
19
+ color: SharedStyle.SECONDARY_COLOR.main
20
+ };
21
+
22
+ const breadcrumbTabStyle = {
23
+ fill: SharedStyle.COLORS.black,
24
+ fontSize: '24px',
25
+ marginLeft: '10px',
26
+ marginRight: '10px'
27
+ };
28
+
29
+ const CatalogBreadcrumb = ({ names }) => {
30
+ let labelNames = names.map((name, ind) => {
31
+ let lastElement = ind === names.length - 1;
32
+
33
+ return (
34
+ <div key={ind} style={{ display: 'flex' }}>
35
+ <div
36
+ style={!lastElement ? breadcrumbTextStyle : breadcrumbLastTextStyle}
37
+ onClick={name.action || null}
38
+ >
39
+ {name.name}
40
+ </div>
41
+ {!lastElement ? <Arrow style={breadcrumbTabStyle} /> : null}
42
+ </div>
43
+ );
44
+ });
45
+
46
+ return <div style={breadcrumbStyle}>{labelNames}</div>;
47
+ };
48
+
49
+ CatalogBreadcrumb.propTypes = {
50
+ names: PropTypes.arrayOf(PropTypes.object).isRequired
51
+ };
52
+
53
+ export default CatalogBreadcrumb;
@@ -0,0 +1,229 @@
1
+ import React, { Component } from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { FaPlusCircle as IconAdd } from 'react-icons/fa';
4
+ import * as SharedStyle from '../../shared-style';
5
+ import { API_SERVER_URL, MODE, MODE_IDLE } from '../../constants';
6
+ import browserHistory from '../../@history';
7
+ import axios from 'axios';
8
+ import SnackBar from '../atoms/Snackbar/index';
9
+ const AWS = require('aws-sdk');
10
+
11
+ const s3 = new AWS.S3({
12
+ accessKeyId: process.env.REACT_APP_AWS_ID,
13
+ secretAccessKey: process.env.REACT_APP_AWS_SECRET
14
+ });
15
+
16
+ const STYLE_BOX = {
17
+ width: '14em',
18
+ height: '14em',
19
+ padding: '0.625em',
20
+ background: '#f7f7f9',
21
+ border: '1px solid #e1e1e8',
22
+ cursor: 'pointer',
23
+ position: 'relative',
24
+ boxShadow: '0 1px 6px 0 rgba(0, 0, 0, 0.11), 0 1px 4px 0 rgba(0, 0, 0, 0.11)',
25
+ borderRadius: '2px',
26
+ transition: 'all .15s ease-in-out',
27
+ WebkitTransition: 'all .15s ease-in-out',
28
+ alignSelf: 'center',
29
+ justifySelf: 'center'
30
+ };
31
+
32
+ const STYLE_BOX_HOVER = {
33
+ ...STYLE_BOX,
34
+ background: SharedStyle.SECONDARY_COLOR.main
35
+ };
36
+
37
+ const STYLE_TITLE = {
38
+ width: '100%',
39
+ textAlign: 'center',
40
+ display: 'block',
41
+ marginBottom: '.5em',
42
+ textTransform: 'capitalize'
43
+ };
44
+
45
+ const STYLE_TITLE_HOVER = {
46
+ ...STYLE_TITLE,
47
+ color: SharedStyle.COLORS.white
48
+ };
49
+
50
+ const STYLE_IMAGE_CONTAINER = {
51
+ width: '100%',
52
+ height: '8em',
53
+ position: 'relative',
54
+ overflow: 'hidden',
55
+ border: 'solid 1px #e6e6e6',
56
+ padding: 0,
57
+ margin: 0,
58
+ marginBottom: '5px'
59
+ };
60
+
61
+ const STYLE_IMAGE = {
62
+ position: 'absolute',
63
+ background: '#222',
64
+ width: '100%',
65
+ height: '100%',
66
+ backgroundSize: 'contain',
67
+ backgroundPosition: '50% 50%',
68
+ backgroundColor: SharedStyle.COLORS.white,
69
+ backgroundRepeat: 'no-repeat',
70
+ transition: 'all .2s ease-in-out'
71
+ };
72
+
73
+ const STYLE_IMAGE_HOVER = {
74
+ ...STYLE_IMAGE,
75
+ transform: 'scale(1.2)'
76
+ };
77
+
78
+ const STYLE_PLUS_HOVER = {
79
+ marginTop: '1.5em',
80
+ color: SharedStyle.SECONDARY_COLOR.main,
81
+ fontSize: '2em',
82
+ opacity: '0.7',
83
+ width: '100%'
84
+ };
85
+
86
+ const STYLE_DESCRIPTION = {
87
+ display: 'block',
88
+ display: '-webkit-box',
89
+ height: '2em',
90
+ margin: '0 auto',
91
+ fontSize: '0.75em',
92
+ fontStyle: 'italic',
93
+ lineHeight: '1em',
94
+ WebkitLineClamp: '2',
95
+ WebkitBoxOrient: 'vertical',
96
+ overflow: 'hidden',
97
+ textOverflow: 'ellipsis'
98
+ };
99
+
100
+ const STYLE_TAGS = {
101
+ listStyle: 'none',
102
+ margin: '0px',
103
+ padding: '0px',
104
+ fontSize: '11px',
105
+ marginBottom: '3px'
106
+ };
107
+
108
+ const STYLE_TAG = {
109
+ display: 'inline-block',
110
+ background: '#337ab7',
111
+ color: SharedStyle.COLORS.white,
112
+ padding: '1px 4px',
113
+ marginRight: '3px',
114
+ borderRadius: '3px'
115
+ };
116
+
117
+ const STYLE_ASSIGN_TAG = {
118
+ display: 'inline-block',
119
+ background: '#33b768',
120
+ color: SharedStyle.COLORS.white,
121
+ padding: '1px 4px',
122
+ marginRight: '3px',
123
+ borderRadius: '3px'
124
+ };
125
+
126
+ export default class CatalogItem extends Component {
127
+ constructor(props) {
128
+ super(props);
129
+ this.state = { hover: false, snackBarMessage: '', isSnackBarOpen: '' };
130
+ }
131
+
132
+ select(element) {
133
+ sessionStorage.setItem('projectTitle', element.title);
134
+ this.context.projectActions.rename(element.title);
135
+ sessionStorage.setItem('projectId', element.id);
136
+ sessionStorage.setItem('email', element.email);
137
+ const _self = this;
138
+ if (MODE === 'production') {
139
+ s3.getObject(
140
+ {
141
+ Bucket: process.env.REACT_APP_AWS_BUCKET_NAME,
142
+ Key: element.data
143
+ },
144
+ function (err, data) {
145
+ if (err !== null) {
146
+ console.log(err);
147
+ this.setState({
148
+ snackBarMessage: 'Something went wrong.',
149
+ isSnackBarOpen: true
150
+ });
151
+ return;
152
+ }
153
+ var fileData = data.Body.toString('utf-8');
154
+ const jsonData = JSON.parse(fileData);
155
+ _self.context.projectActions.loadProject(
156
+ jsonData,
157
+ this.props.categoryData
158
+ );
159
+ }
160
+ );
161
+ } else {
162
+ axios
163
+ .post(`${API_SERVER_URL}/api/project/loadPidData`, {
164
+ pid: element.id
165
+ })
166
+ .then(response => {
167
+ const jsonData = JSON.parse(response.data.data);
168
+ this.context.projectActions.loadProject(
169
+ jsonData,
170
+ this.props.categoryData
171
+ );
172
+ });
173
+ }
174
+ this.context.projectActions.setMode(MODE_IDLE);
175
+ const visualizerName = sessionStorage.getItem('visualizerName');
176
+ browserHistory.push({
177
+ pathname: `/${visualizerName}/project/${
178
+ element.role
179
+ }/${sessionStorage.getItem('jwt_access_token')}/${element.id}`
180
+ });
181
+ }
182
+
183
+ render() {
184
+ let element = this.props.element;
185
+ let hover = this.state.hover;
186
+ return (
187
+ <div
188
+ style={hover ? STYLE_BOX_HOVER : STYLE_BOX}
189
+ onClick={e => {
190
+ e.preventDefault(), this.select(element);
191
+ }}
192
+ onMouseEnter={e => this.setState({ hover: true })}
193
+ onMouseLeave={e => this.setState({ hover: false })}
194
+ >
195
+ <SnackBar
196
+ isOpen={this.state.isSnackBarOpen}
197
+ message={this.state.snackBarMessage}
198
+ handleClose={() =>
199
+ this.setState({ isSnackBarOpen: false, snackBarMessage: '' })
200
+ }
201
+ />
202
+ <b style={STYLE_TITLE}>{element.title}</b>
203
+ <div style={STYLE_IMAGE_CONTAINER}>
204
+ <div style={{ ...STYLE_IMAGE }}>
205
+ {hover ? <IconAdd style={STYLE_PLUS_HOVER} /> : null}
206
+ </div>
207
+ </div>
208
+ <ul style={STYLE_TAGS}>
209
+ {element.is_assistance_requested === 1 ? (
210
+ <li style={STYLE_ASSIGN_TAG}>Assign</li>
211
+ ) : null}
212
+ <li style={STYLE_TAG}>{element.saved_at}</li>
213
+ </ul>
214
+ {/* <div style={STYLE_DESCRIPTION}>{element.info.description}</div> */}
215
+ </div>
216
+ );
217
+ }
218
+ }
219
+
220
+ CatalogItem.propTypes = {
221
+ element: PropTypes.object.isRequired
222
+ };
223
+
224
+ CatalogItem.contextTypes = {
225
+ itemsActions: PropTypes.object.isRequired,
226
+ linesActions: PropTypes.object.isRequired,
227
+ holesActions: PropTypes.object.isRequired,
228
+ projectActions: PropTypes.object.isRequired
229
+ };
@@ -0,0 +1,173 @@
1
+ import React, { Component } from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import CatalogItem from './catalog-item';
4
+ import CatalogBreadcrumb from './catalog-breadcrumb';
5
+ import CatalogPageItem from './catalog-page-item';
6
+ import CatalogTurnBackPageItem from './catalog-turn-back-page-item';
7
+ import ContentContainer from '../style/content-container';
8
+ import { API_SERVER_URL } from '../../constants';
9
+ import ContentTitle from '../style/content-title';
10
+ import * as SharedStyle from '../../shared-style';
11
+ import axios from 'axios';
12
+ import SnackBar from '../atoms/Snackbar/index';
13
+
14
+ const containerStyle = {
15
+ position: 'fixed',
16
+ width: 'calc( 100% - 94px)',
17
+ height: 'calc( 100% - 71px)',
18
+ backgroundColor: '#FFF',
19
+ padding: '1em',
20
+ left: 90,
21
+ top: 70,
22
+ overflowY: 'auto',
23
+ overflowX: 'hidden',
24
+ zIndex: 10
25
+ };
26
+
27
+ const itemsStyle = {
28
+ display: 'flex',
29
+ gridTemplateColumns: 'repeat(auto-fit, minmax(14em, 1fr))',
30
+ gridGap: '10px',
31
+ marginTop: '1em'
32
+ };
33
+
34
+ const searchContainer = {
35
+ width: '100%',
36
+ height: '3em',
37
+ padding: '0.625em',
38
+ background: '#f7f7f9',
39
+ border: '1px solid #e1e1e8',
40
+ cursor: 'pointer',
41
+ position: 'relative',
42
+ boxShadow: '0 1px 6px 0 rgba(0, 0, 0, 0.11), 0 1px 4px 0 rgba(0, 0, 0, 0.11)',
43
+ borderRadius: '2px',
44
+ transition: 'all .2s ease-in-out',
45
+ WebkitTransition: 'all .2s ease-in-out',
46
+ marginBottom: '1em'
47
+ };
48
+
49
+ const searchText = {
50
+ width: '8em',
51
+ display: 'inline-block'
52
+ };
53
+
54
+ const searchInput = {
55
+ width: 'calc( 100% - 10em )',
56
+ height: '2em',
57
+ margin: '0',
58
+ padding: '0 1em',
59
+ border: '1px solid #EEE'
60
+ };
61
+
62
+ const historyContainer = {
63
+ ...searchContainer,
64
+ padding: '0.2em 0.625em'
65
+ };
66
+
67
+ const historyElementStyle = {
68
+ width: 'auto',
69
+ height: '2em',
70
+ lineHeight: '2em',
71
+ textAlign: 'center',
72
+ borderRadius: '1em',
73
+ display: 'inline-block',
74
+ cursor: 'pointer',
75
+ backgroundColor: SharedStyle.PRIMARY_COLOR.alt,
76
+ color: SharedStyle.PRIMARY_COLOR.text_main,
77
+ textTransform: 'capitalize',
78
+ margin: '0.25em',
79
+ padding: '0 1em'
80
+ };
81
+
82
+ export default class CatalogList extends Component {
83
+ constructor(props, context) {
84
+ super(props);
85
+
86
+ this.state = {
87
+ elementsToDisplay: [],
88
+ matchString: '',
89
+ matchedElements: [],
90
+ snackBarMessage: '',
91
+ isSnackBarOpen: false
92
+ };
93
+ }
94
+
95
+ componentDidMount() {
96
+ const self = this;
97
+ const user = self.props.param.params;
98
+ axios
99
+ .post(`${API_SERVER_URL}/api/project/loadProject`, {
100
+ userrole: user.role,
101
+ access_token: user.token,
102
+ env: 'front'
103
+ })
104
+ .then(response => {
105
+ const { success } = response.data;
106
+ if (success === true) {
107
+ const { projectElement } = response.data;
108
+ self.setState({ elementsToDisplay: projectElement });
109
+ } else
110
+ this.setState({
111
+ snackBarMessage: 'Loading project failed.',
112
+ isSnackBarOpen: true
113
+ });
114
+ });
115
+ }
116
+
117
+ render() {
118
+ let turnBackButton = <CatalogTurnBackPageItem key="back" />;
119
+ return (
120
+ <ContentContainer
121
+ width={this.props.width}
122
+ height={this.props.height}
123
+ style={{ ...containerStyle, ...this.props.style }}
124
+ >
125
+ <SnackBar
126
+ isOpen={this.state.isSnackBarOpen}
127
+ message={this.state.snackBarMessage}
128
+ handleClose={() =>
129
+ this.setState({ isSnackBarOpen: false, snackBarMessage: '' })
130
+ }
131
+ />
132
+ <ContentTitle>My Project Library</ContentTitle>
133
+ <div style={itemsStyle}>
134
+ {this.state.matchString === ''
135
+ ? [
136
+ turnBackButton,
137
+ // categoriesToDisplay.map(cat => <CatalogPageItem key={cat.name} page={cat} oldPage={currentCategory}/>),
138
+ this.state.elementsToDisplay.map(elem => (
139
+ <CatalogItem
140
+ key={elem.id}
141
+ element={elem}
142
+ categoryData={this.props.categoryData}
143
+ />
144
+ ))
145
+ ]
146
+ : this.state.matchedElements.map(elem => (
147
+ <CatalogItem
148
+ key={elem.id}
149
+ element={elem}
150
+ categoryData={this.props.categoryData}
151
+ />
152
+ ))}
153
+ </div>
154
+ </ContentContainer>
155
+ );
156
+ }
157
+ }
158
+
159
+ CatalogList.propTypes = {
160
+ state: PropTypes.object.isRequired,
161
+ width: PropTypes.number.isRequired,
162
+ height: PropTypes.number.isRequired,
163
+ style: PropTypes.object
164
+ };
165
+
166
+ CatalogList.contextTypes = {
167
+ catalog: PropTypes.object.isRequired,
168
+ translator: PropTypes.object.isRequired,
169
+ itemsActions: PropTypes.object.isRequired,
170
+ linesActions: PropTypes.object.isRequired,
171
+ holesActions: PropTypes.object.isRequired,
172
+ projectActions: PropTypes.object.isRequired
173
+ };
@@ -0,0 +1,110 @@
1
+ import React, { Component } from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { MdNavigateNext } from 'react-icons/md';
4
+ import * as SharedStyle from '../../shared-style';
5
+
6
+ const STYLE_BOX = {
7
+ width: '14em',
8
+ height: '14em',
9
+ padding: '0.625em',
10
+ background: '#f7f7f9',
11
+ border: '1px solid #e1e1e8',
12
+ cursor: 'pointer',
13
+ position: 'relative',
14
+ boxShadow: '0 1px 6px 0 rgba(0, 0, 0, 0.11), 0 1px 4px 0 rgba(0, 0, 0, 0.11)',
15
+ borderRadius: '2px',
16
+ transition: 'all .2s ease-in-out',
17
+ WebkitTransition: 'all .2s ease-in-out',
18
+ alignSelf: 'center',
19
+ justifySelf: 'center'
20
+ };
21
+
22
+ const STYLE_BOX_HOVER = {
23
+ ...STYLE_BOX,
24
+ background: SharedStyle.SECONDARY_COLOR.main
25
+ };
26
+
27
+ const STYLE_TITLE = {
28
+ width: '100%',
29
+ position: 'absolute',
30
+ textAlign: 'center',
31
+ display: 'block',
32
+ marginBottom: '.5em',
33
+ padding: '1em',
34
+ textTransform: 'capitalize',
35
+ WebkitTransition: 'all .15s ease-in-out'
36
+ };
37
+
38
+ const STYLE_TITLE_HOVERED = {
39
+ ...STYLE_TITLE,
40
+ fontSize: '1.4em',
41
+ transform: 'translateY(-60px)',
42
+ color: 'rgb(28, 166, 252)',
43
+ marginTop: '0.5em'
44
+ };
45
+
46
+ const STYLE_NEXT_HOVER = {
47
+ position: 'absolute',
48
+ color: SharedStyle.SECONDARY_COLOR.main,
49
+ fontSize: '5em',
50
+ width: '100%'
51
+ };
52
+
53
+ const CONTAINER_DIV = {
54
+ background: SharedStyle.COLORS.white,
55
+ marginBottom: '5px',
56
+ border: 'solid 1px #EEE',
57
+ width: '100%',
58
+ height: '100%',
59
+ display: 'flex',
60
+ alignItems: 'center',
61
+ justifyContent: 'center'
62
+ };
63
+
64
+ export default class CatalogPageItem extends Component {
65
+ constructor(props) {
66
+ super(props);
67
+ this.state = { hover: false };
68
+ }
69
+
70
+ changePage(newPage) {
71
+ this.context.projectActions.changeCatalogPage(
72
+ newPage,
73
+ this.props.oldPage.name
74
+ );
75
+ }
76
+
77
+ render() {
78
+ let page = this.props.page;
79
+ let hover = this.state.hover;
80
+
81
+ return (
82
+ <div
83
+ style={hover ? STYLE_BOX_HOVER : STYLE_BOX}
84
+ onClick={e => this.changePage(page.name)}
85
+ onMouseEnter={e => this.setState({ hover: true })}
86
+ onMouseLeave={e => this.setState({ hover: false })}
87
+ >
88
+ {hover ? (
89
+ <div style={CONTAINER_DIV}>
90
+ <b style={STYLE_TITLE_HOVERED}>{page.label}</b>
91
+ <MdNavigateNext style={STYLE_NEXT_HOVER} />
92
+ </div>
93
+ ) : (
94
+ <div style={CONTAINER_DIV}>
95
+ <b style={STYLE_TITLE}>{page.label}</b>
96
+ </div>
97
+ )}
98
+ </div>
99
+ );
100
+ }
101
+ }
102
+
103
+ CatalogPageItem.propTypes = {
104
+ page: PropTypes.object.isRequired,
105
+ oldPage: PropTypes.object.isRequired
106
+ };
107
+
108
+ CatalogPageItem.contextTypes = {
109
+ projectActions: PropTypes.object.isRequired
110
+ };
@@ -0,0 +1,80 @@
1
+ import React, { Component } from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { MdNavigateBefore } from 'react-icons/md';
4
+ import * as SharedStyle from '../../shared-style';
5
+ import { MODE_IDLE } from '../../constants';
6
+
7
+ const STYLE_BOX = {
8
+ width: '14em',
9
+ height: '14em',
10
+ padding: '0.625em',
11
+ background: '#f7f7f9',
12
+ border: '1px solid #e1e1e8',
13
+ margin: '0.3em',
14
+ cursor: 'pointer',
15
+ position: 'relative',
16
+ boxShadow: '0 1px 6px 0 rgba(0, 0, 0, 0.11), 0 1px 4px 0 rgba(0, 0, 0, 0.11)',
17
+ borderRadius: '2px',
18
+ transition: 'all .2s ease-in-out',
19
+ WebkitTransition: 'all .2s ease-in-out'
20
+ };
21
+
22
+ const STYLE_BOX_HOVER = {
23
+ ...STYLE_BOX,
24
+ background: SharedStyle.SECONDARY_COLOR.main
25
+ };
26
+
27
+ const STYLE_BACK = {
28
+ position: 'absolute',
29
+ color: SharedStyle.COLORS.black,
30
+ fontSize: '5em',
31
+ width: '100%'
32
+ };
33
+
34
+ const STYLE_BACK_HOVER = {
35
+ ...STYLE_BACK,
36
+ color: SharedStyle.SECONDARY_COLOR.main
37
+ };
38
+
39
+ const CONTAINER_DIV = {
40
+ background: SharedStyle.COLORS.white,
41
+ marginBottom: '5px',
42
+ border: 'solid 1px #e6e6e6',
43
+ width: '100%',
44
+ height: '100%',
45
+ display: 'flex',
46
+ alignItems: 'center',
47
+ justifyContent: 'center'
48
+ };
49
+
50
+ export default class CatalogTurnBackPageItem extends Component {
51
+ constructor(props) {
52
+ super(props);
53
+ this.state = { hover: false };
54
+ }
55
+
56
+ changePage() {
57
+ this.context.projectActions.setMode(MODE_IDLE);
58
+ }
59
+
60
+ render() {
61
+ let hover = this.state.hover;
62
+
63
+ return (
64
+ <div
65
+ style={hover ? STYLE_BOX_HOVER : STYLE_BOX}
66
+ onClick={e => this.changePage()}
67
+ onMouseEnter={e => this.setState({ hover: true })}
68
+ onMouseLeave={e => this.setState({ hover: false })}
69
+ >
70
+ <div style={CONTAINER_DIV}>
71
+ <MdNavigateBefore style={!hover ? STYLE_BACK : STYLE_BACK_HOVER} />
72
+ </div>
73
+ </div>
74
+ );
75
+ }
76
+ }
77
+
78
+ CatalogTurnBackPageItem.contextTypes = {
79
+ projectActions: PropTypes.object.isRequired
80
+ };