@dexteel/mesf-core 2.1.8

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 (44) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/dist/MESFMain.d.ts +4 -0
  3. package/dist/account/AuthProvider.d.ts +19 -0
  4. package/dist/account/account.d.ts +2 -0
  5. package/dist/account/changePassword.d.ts +2 -0
  6. package/dist/account/index.d.ts +6 -0
  7. package/dist/account/login-strategies/LoginAsGuest.d.ts +2 -0
  8. package/dist/account/login-strategies/LoginWithEmailAndPassword.d.ts +2 -0
  9. package/dist/account/login-strategies/azure-ad/AzureADAuthConfig.d.ts +37 -0
  10. package/dist/account/login-strategies/azure-ad/LoginWithAzureAD.d.ts +5 -0
  11. package/dist/account/login-strategies/azure-ad/LoginWithAzureADForm.d.ts +2 -0
  12. package/dist/account/login.d.ts +9 -0
  13. package/dist/account/logout.d.ts +8 -0
  14. package/dist/account/models/login.models.d.ts +15 -0
  15. package/dist/account/useToken.d.ts +10 -0
  16. package/dist/components/home/home.d.ts +3 -0
  17. package/dist/components/navigation/Header.d.ts +2 -0
  18. package/dist/components/navigation/MainContainer.d.ts +3 -0
  19. package/dist/components/navigation/Navigation.d.ts +3 -0
  20. package/dist/configuration/JobConfig.d.ts +2 -0
  21. package/dist/configuration/LogConfig.d.ts +2 -0
  22. package/dist/configuration/configuration.d.ts +6 -0
  23. package/dist/configuration/formatters.d.ts +7 -0
  24. package/dist/configuration/index.d.ts +8 -0
  25. package/dist/configuration/profileManager.d.ts +2 -0
  26. package/dist/configuration/shiftCrew.d.ts +2 -0
  27. package/dist/configuration/stylesGetters.d.ts +14 -0
  28. package/dist/configuration/usersManagment.d.ts +2 -0
  29. package/dist/configurationMenu.d.ts +17 -0
  30. package/dist/controls/charts/genericChart.d.ts +10 -0
  31. package/dist/controls/filters/dialogFilter.d.ts +12 -0
  32. package/dist/controls/filters/filters.d.ts +71 -0
  33. package/dist/controls/index.d.ts +6 -0
  34. package/dist/controls/panels.d.ts +62 -0
  35. package/dist/controls/tables/GenericTable.d.ts +5 -0
  36. package/dist/controls/tables/dataGrid.d.ts +10 -0
  37. package/dist/globalContext.d.ts +6 -0
  38. package/dist/index.cjs.js +3268 -0
  39. package/dist/index.d.ts +6 -0
  40. package/dist/routes/MESFMainRouter.d.ts +3 -0
  41. package/dist/services/ApiService.d.ts +36 -0
  42. package/dist/services/index.d.ts +1 -0
  43. package/dist/utils.d.ts +21 -0
  44. package/package.json +96 -0
@@ -0,0 +1,3268 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var moment = require('moment');
6
+ var React = require('react');
7
+ var core = require('@material-ui/core');
8
+ var reactBootstrap = require('react-bootstrap');
9
+ var PropTypes = require('prop-types');
10
+ var bar = require('@nivo/bar');
11
+ var styles = require('@material-ui/core/styles');
12
+ var DatePicker = require('react-datepicker');
13
+ var Button = require('@material-ui/core/Button');
14
+ var DialogTitle = require('@material-ui/core/DialogTitle');
15
+ var DialogContent = require('@material-ui/core/DialogContent');
16
+ var DialogActions = require('@material-ui/core/DialogActions');
17
+ var Dialog = require('@material-ui/core/Dialog');
18
+ var TreeView = require('@material-ui/lab/TreeView');
19
+ var SvgIcon = require('@material-ui/core/SvgIcon');
20
+ var TreeItem = require('@material-ui/lab/TreeItem');
21
+ var Collapse = require('@material-ui/core/Collapse');
22
+ var Code = require('@material-ui/icons/Code');
23
+ var Folder = require('@material-ui/icons/Folder');
24
+ var reactSpring = require('react-spring');
25
+ var Select = require('@material-ui/core/Select');
26
+ var MenuItem = require('@material-ui/core/MenuItem');
27
+ var dataGrid = require('@material-ui/data-grid');
28
+ var Card = require('@material-ui/core/Card');
29
+ var CardActions = require('@material-ui/core/CardActions');
30
+ var CardContent = require('@material-ui/core/CardContent');
31
+ var Typography = require('@material-ui/core/Typography');
32
+ var lodashEs = require('lodash-es');
33
+ var msalReact = require('@azure/msal-react');
34
+ var msalBrowser = require('@azure/msal-browser');
35
+ var reactRouterDom = require('react-router-dom');
36
+ var MenuList = require('@material-ui/core/MenuList');
37
+
38
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
39
+
40
+ var moment__default = /*#__PURE__*/_interopDefaultLegacy(moment);
41
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
42
+ var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
43
+ var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker);
44
+ var Button__default = /*#__PURE__*/_interopDefaultLegacy(Button);
45
+ var DialogTitle__default = /*#__PURE__*/_interopDefaultLegacy(DialogTitle);
46
+ var DialogContent__default = /*#__PURE__*/_interopDefaultLegacy(DialogContent);
47
+ var DialogActions__default = /*#__PURE__*/_interopDefaultLegacy(DialogActions);
48
+ var Dialog__default = /*#__PURE__*/_interopDefaultLegacy(Dialog);
49
+ var TreeView__default = /*#__PURE__*/_interopDefaultLegacy(TreeView);
50
+ var SvgIcon__default = /*#__PURE__*/_interopDefaultLegacy(SvgIcon);
51
+ var TreeItem__default = /*#__PURE__*/_interopDefaultLegacy(TreeItem);
52
+ var Collapse__default = /*#__PURE__*/_interopDefaultLegacy(Collapse);
53
+ var Code__default = /*#__PURE__*/_interopDefaultLegacy(Code);
54
+ var Folder__default = /*#__PURE__*/_interopDefaultLegacy(Folder);
55
+ var Select__default = /*#__PURE__*/_interopDefaultLegacy(Select);
56
+ var MenuItem__default = /*#__PURE__*/_interopDefaultLegacy(MenuItem);
57
+ var Card__default = /*#__PURE__*/_interopDefaultLegacy(Card);
58
+ var CardActions__default = /*#__PURE__*/_interopDefaultLegacy(CardActions);
59
+ var CardContent__default = /*#__PURE__*/_interopDefaultLegacy(CardContent);
60
+ var Typography__default = /*#__PURE__*/_interopDefaultLegacy(Typography);
61
+ var MenuList__default = /*#__PURE__*/_interopDefaultLegacy(MenuList);
62
+
63
+ /******************************************************************************
64
+ Copyright (c) Microsoft Corporation.
65
+
66
+ Permission to use, copy, modify, and/or distribute this software for any
67
+ purpose with or without fee is hereby granted.
68
+
69
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
70
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
71
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
72
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
73
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
74
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
75
+ PERFORMANCE OF THIS SOFTWARE.
76
+ ***************************************************************************** */
77
+ /* global Reflect, Promise */
78
+
79
+ var extendStatics = function(d, b) {
80
+ extendStatics = Object.setPrototypeOf ||
81
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
82
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
83
+ return extendStatics(d, b);
84
+ };
85
+
86
+ function __extends(d, b) {
87
+ if (typeof b !== "function" && b !== null)
88
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
89
+ extendStatics(d, b);
90
+ function __() { this.constructor = d; }
91
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
92
+ }
93
+
94
+ var __assign = function() {
95
+ __assign = Object.assign || function __assign(t) {
96
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
97
+ s = arguments[i];
98
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
99
+ }
100
+ return t;
101
+ };
102
+ return __assign.apply(this, arguments);
103
+ };
104
+
105
+ function __rest(s, e) {
106
+ var t = {};
107
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
108
+ t[p] = s[p];
109
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
110
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
111
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
112
+ t[p[i]] = s[p[i]];
113
+ }
114
+ return t;
115
+ }
116
+
117
+ function __awaiter(thisArg, _arguments, P, generator) {
118
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
119
+ return new (P || (P = Promise))(function (resolve, reject) {
120
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
121
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
122
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
123
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
124
+ });
125
+ }
126
+
127
+ function __generator(thisArg, body) {
128
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
129
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
130
+ function verb(n) { return function (v) { return step([n, v]); }; }
131
+ function step(op) {
132
+ if (f) throw new TypeError("Generator is already executing.");
133
+ while (_) try {
134
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
135
+ if (y = 0, t) op = [op[0] & 2, t.value];
136
+ switch (op[0]) {
137
+ case 0: case 1: t = op; break;
138
+ case 4: _.label++; return { value: op[1], done: false };
139
+ case 5: _.label++; y = op[1]; op = [0]; continue;
140
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
141
+ default:
142
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
143
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
144
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
145
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
146
+ if (t[2]) _.ops.pop();
147
+ _.trys.pop(); continue;
148
+ }
149
+ op = body.call(thisArg, _);
150
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
151
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
152
+ }
153
+ }
154
+
155
+ function __spreadArray(to, from, pack) {
156
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
157
+ if (ar || !(i in from)) {
158
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
159
+ ar[i] = from[i];
160
+ }
161
+ }
162
+ return to.concat(ar || Array.prototype.slice.call(from));
163
+ }
164
+
165
+ var MESSAGE_API = {
166
+ ERROR_MESSAGE: 'There was an error to connect to server.',
167
+ ERROR_EMPTY_SEARCH: "Empty rows"
168
+ };
169
+ var MESSAGE_ERRORS = {
170
+ ERROR_TITLE: 'There was an error',
171
+ ERROR_EMPTY_SEARCH: "Empty rows",
172
+ ERROR_USER_API: "Error on fetching data",
173
+ ERROR_USER_DEFAULT: "Unknow error",
174
+ ERROR_SAVE_DATA: "Error on saving data",
175
+ SUCCESS_SAVE_DATA: "Data was saved successfully"
176
+ };
177
+ var USER_LABELS = {
178
+ CHOOSE_OPTION: 'Choose an option'
179
+ };
180
+ var FetchError = /** @class */ (function (_super) {
181
+ __extends(FetchError, _super);
182
+ function FetchError(message, status, internalError) {
183
+ var _this = _super.call(this, message) || this;
184
+ _this.getMessageUser = function () {
185
+ if (_this.name === 'FetchError')
186
+ return MESSAGE_ERRORS.ERROR_USER_API;
187
+ return MESSAGE_ERRORS.ERROR_USER_DEFAULT;
188
+ };
189
+ _this.name = 'FetchError';
190
+ _this.message = message || 'Error al procesar la solicitud';
191
+ _this.status = status;
192
+ _this.internalError = internalError;
193
+ _this.stack = _this.stack || '';
194
+ return _this;
195
+ }
196
+ return FetchError;
197
+ }(Error));
198
+
199
+ var BarChartControl = function (props) {
200
+ var height = props.height, minWidth = props.minWidth, data = props.data, keys = props.keys, indexBy = props.indexBy, legendX = props.legendX, legendY = props.legendY, colors = props.colors, other = __rest(props, ["height", "minWidth", "data", "keys", "indexBy", "legendX", "legendY", "colors"]);
201
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
202
+ React__default["default"].createElement("div", { className: "container-fluid my-2 p-2", style: { "height": height, "minWidth": minWidth } },
203
+ React__default["default"].createElement(bar.ResponsiveBar, __assign({ data: data, keys: keys, indexBy: indexBy, margin: { top: 50, right: 130, bottom: 50, left: 60 }, padding: 0.3, valueScale: { type: 'linear' }, indexScale: { type: 'band', round: true }, colors: colors === undefined ? { scheme: 'nivo' } : colors, defs: [
204
+ {
205
+ id: 'dots',
206
+ type: 'patternDots',
207
+ background: 'inherit',
208
+ color: '#38bcb2',
209
+ size: 4,
210
+ padding: 1,
211
+ stagger: true
212
+ },
213
+ {
214
+ id: 'lines',
215
+ type: 'patternLines',
216
+ background: 'inherit',
217
+ color: '#eed312',
218
+ rotation: -45,
219
+ lineWidth: 6,
220
+ spacing: 10
221
+ }
222
+ ], fill: [
223
+ {
224
+ match: {
225
+ id: 'fries'
226
+ },
227
+ id: 'dots'
228
+ },
229
+ {
230
+ match: {
231
+ id: 'sandwich'
232
+ },
233
+ id: 'lines'
234
+ }
235
+ ], borderColor: { from: 'color', modifiers: [['darker', 1.6]] }, axisTop: null, axisRight: null, axisBottom: {
236
+ tickSize: 5,
237
+ tickPadding: 5,
238
+ tickRotation: 0,
239
+ legend: (legendX === undefined ? '' : legendX),
240
+ legendPosition: 'middle',
241
+ legendOffset: 32
242
+ }, axisLeft: {
243
+ tickSize: 5,
244
+ tickPadding: 5,
245
+ tickRotation: 0,
246
+ legend: (legendY === undefined ? '' : legendY),
247
+ legendPosition: 'middle',
248
+ legendOffset: -40
249
+ }, labelSkipWidth: 12, labelSkipHeight: 12, labelTextColor: { from: 'color', modifiers: [['darker', 1.6]] },
250
+ // legends={[
251
+ // {
252
+ // dataFrom: 'keys',
253
+ // anchor: 'bottom-right',
254
+ // direction: 'column',
255
+ // justify: false,
256
+ // translateX: 120,
257
+ // translateY: 0,
258
+ // itemsSpacing: 2,
259
+ // itemWidth: 100,
260
+ // itemHeight: 20,
261
+ // itemDirection: 'left-to-right',
262
+ // itemOpacity: 0.85,
263
+ // symbolSize: 20,
264
+ // effects: [
265
+ // {
266
+ // on: 'hover',
267
+ // style: {
268
+ // itemOpacity: 1
269
+ // }
270
+ // }
271
+ // ]
272
+ // }
273
+ // ]}
274
+ animate: true, motionStiffness: 90, motionDamping: 15 }, other)))));
275
+ };
276
+ BarChartControl.propTypes = {
277
+ data: PropTypes__default["default"].array,
278
+ keys: PropTypes__default["default"].array
279
+ };
280
+
281
+ /**********************MATERIAL UI STYLES********************** */
282
+ /*************************************************************** */
283
+ function MinusSquare(props) {
284
+ return (React__default["default"].createElement(SvgIcon__default["default"], __assign({ fontSize: "inherit", style: { width: 14, height: 14 } }, props),
285
+ React__default["default"].createElement("path", { d: "M22.047 22.074v0 0-20.147 0h-20.12v0 20.147 0h20.12zM22.047 24h-20.12q-.803 0-1.365-.562t-.562-1.365v-20.147q0-.776.562-1.351t1.365-.575h20.147q.776 0 1.351.575t.575 1.351v20.147q0 .803-.575 1.365t-1.378.562v0zM17.873 11.023h-11.826q-.375 0-.669.281t-.294.682v0q0 .401.294 .682t.669.281h11.826q.375 0 .669-.281t.294-.682v0q0-.401-.294-.682t-.669-.281z" })));
286
+ }
287
+ function PlusSquare(props) {
288
+ return (React__default["default"].createElement(SvgIcon__default["default"], __assign({ fontSize: "inherit", style: { width: 14, height: 14 } }, props),
289
+ React__default["default"].createElement("path", { d: "M22.047 22.074v0 0-20.147 0h-20.12v0 20.147 0h20.12zM22.047 24h-20.12q-.803 0-1.365-.562t-.562-1.365v-20.147q0-.776.562-1.351t1.365-.575h20.147q.776 0 1.351.575t.575 1.351v20.147q0 .803-.575 1.365t-1.378.562v0zM17.873 12.977h-4.923v4.896q0 .401-.281.682t-.682.281v0q-.375 0-.669-.281t-.294-.682v-4.896h-4.923q-.401 0-.682-.294t-.281-.669v0q0-.401.281-.682t.682-.281h4.923v-4.896q0-.401.294-.682t.669-.281v0q.401 0 .682.281t.281.682v4.896h4.923q.401 0 .682.281t.281.682v0q0 .375-.281.669t-.682.294z" })));
290
+ }
291
+ function TransitionComponent(props) {
292
+ var style = reactSpring.useSpring({
293
+ from: { opacity: 0, transform: 'translate3d(20px,0,0)' },
294
+ to: { opacity: props["in"] ? 1 : 0, transform: "translate3d(".concat(props["in"] ? 0 : 20, "px,0,0)") }
295
+ });
296
+ return (React__default["default"].createElement(reactSpring.animated.div, { style: style },
297
+ React__default["default"].createElement(Collapse__default["default"], __assign({}, props))));
298
+ }
299
+ TransitionComponent.propTypes = {
300
+ /**
301
+ * Show the component; triggers the enter or exit states
302
+ */
303
+ "in": PropTypes__default["default"].bool
304
+ };
305
+ var StyledTreeItem = styles.withStyles(function (theme) { return ({
306
+ iconContainer: {
307
+ '& .close': {
308
+ opacity: 0.3
309
+ }
310
+ },
311
+ group: {
312
+ marginLeft: 7,
313
+ paddingLeft: 18,
314
+ borderLeft: "1px dashed ".concat(styles.alpha(theme.palette.text.primary, 0.4))
315
+ }
316
+ }); })(function (props) { return (
317
+ /* @ts-ignore */
318
+ React__default["default"].createElement(TreeItem__default["default"], __assign({}, props, { TransitionComponent: TransitionComponent }))); });
319
+ var useTreviewStyle = styles.makeStyles(function (theme) { return ({
320
+ root: {
321
+ "min-height": 264,
322
+ flexGrow: 1,
323
+ maxWidth: 400
324
+ },
325
+ treLabelIcon: {
326
+ marginRight: theme.spacing(1)
327
+ },
328
+ treeLabelRoot: {
329
+ display: 'flex',
330
+ alignItems: 'center',
331
+ padding: theme.spacing(0.5, 0)
332
+ },
333
+ treeLabelText: {
334
+ fontWeight: 'inherit',
335
+ flexGrow: 1
336
+ },
337
+ treeLabelInactive: {
338
+ textDecoration: 'line-through',
339
+ textDecorationColor: 'red'
340
+ }
341
+ }); });
342
+ var ModalTreeFilterControl = function (props) {
343
+ var onClose = props.onClose, valueProp = props.value, open = props.open, title = props.title, data = props.data, selectBranch = props.selectBranch, selectActive = props.selectActive, selectInternal = props.selectInternal, other = __rest(props, ["onClose", "value", "open", "title", "data", "selectBranch", "selectActive", "selectInternal"]);
344
+ var _a = React__default["default"].useState(valueProp), value = _a[0], setValue = _a[1];
345
+ var _b = React__default["default"].useState([]), expanded = _b[0], setExpanded = _b[1];
346
+ var treeRef = React__default["default"].useRef(null);
347
+ React__default["default"].useEffect(function () {
348
+ if (!open) {
349
+ setValue(valueProp);
350
+ }
351
+ else {
352
+ if (valueProp !== undefined)
353
+ expandNode(valueProp);
354
+ }
355
+ }, [valueProp, open]); // eslint-disable-line react-hooks/exhaustive-deps
356
+ React__default["default"].useEffect(function () {
357
+ if (open) {
358
+ var findNode = getNodeData(data, parseInt(value));
359
+ if (findNode === null)
360
+ findNode = {};
361
+ var activeFilter = (selectActive && findNode.isActive) || selectActive !== true;
362
+ var internalFilter = (selectInternal && findNode.isInternal) || selectInternal !== true;
363
+ if (findNode.isLeaf) {
364
+ if (activeFilter && internalFilter)
365
+ onClose(value, findNode.name, findNode);
366
+ }
367
+ }
368
+ }, [value]); // eslint-disable-line react-hooks/exhaustive-deps
369
+ var handleEntering = function () {
370
+ if (treeRef.current != null) {
371
+ treeRef.current.focus();
372
+ }
373
+ };
374
+ var handleCancel = function () {
375
+ onClose();
376
+ };
377
+ var handleOk = function () {
378
+ var findNode = getNodeData(data, parseInt(value));
379
+ if (findNode === null)
380
+ findNode = {};
381
+ var activeFilter = (selectActive && findNode.isActive) || selectActive !== true;
382
+ var internalFilter = (selectInternal && findNode.isInternal) || selectInternal !== true;
383
+ var branchFilter = (selectBranch && !findNode.isLeaf);
384
+ if (findNode.isLeaf) {
385
+ if (activeFilter && internalFilter)
386
+ onClose(value, findNode.name, findNode);
387
+ }
388
+ else {
389
+ if (branchFilter)
390
+ onClose(value, findNode.name, findNode);
391
+ }
392
+ };
393
+ var expandNode = function (node, same) {
394
+ var expandedNode = getNodeParent(data, node, []);
395
+ expandedNode.push(node.toString());
396
+ setExpanded(expandedNode);
397
+ };
398
+ var handleChange = function (event, node) {
399
+ setValue(node);
400
+ };
401
+ var handleToogle = function (event, nodes) {
402
+ setExpanded(nodes);
403
+ };
404
+ var getNodeData = function (node, id) {
405
+ if (id === undefined)
406
+ return null;
407
+ if (node.id === id)
408
+ return node;
409
+ if (Array.isArray(node.children)) {
410
+ var i;
411
+ var result = null;
412
+ for (i = 0; result == null && i < node.children.length; i++) {
413
+ result = getNodeData(node.children[i], id);
414
+ }
415
+ return result;
416
+ }
417
+ return null;
418
+ };
419
+ var classes = useTreviewStyle();
420
+ var renderTree = function (nodes) { return (
421
+ /* @ts-ignore */
422
+ React__default["default"].createElement(StyledTreeItem, { key: nodes.id, nodeId: nodes.id.toString(), label: React__default["default"].createElement("div", { className: classes.treeLabelRoot },
423
+ nodes.isCode === true &&
424
+ React__default["default"].createElement(Code__default["default"], { className: classes.treeLabelIcon, htmlColor: "#1ABC9C" }),
425
+ nodes.isCode === false &&
426
+ React__default["default"].createElement(Folder__default["default"], { className: classes.treeLabelIcon, htmlColor: '#F1C40F' }),
427
+ React__default["default"].createElement(core.Typography, { variant: "body2", className: [classes.treeLabelText, (nodes.isActive ? '' : classes.treeLabelInactive)].join(' ') },
428
+ React__default["default"].createElement("span", null,
429
+ nodes.isCode &&
430
+ React__default["default"].createElement("i", { className: "fas fa-square mr-2", style: { "color": (nodes.delayCategoryColor || '#FFFFFF') } }),
431
+ nodes.name))), className: "delay-item-node", id: nodes.id, "data-isbranch": !nodes.isCode }, Array.isArray(nodes.children) ? nodes.children.map(function (node) { return renderTree(node); }) : null)); };
432
+ var getNodeParent = function (node, id, chain) {
433
+ if (id === undefined)
434
+ return [];
435
+ if (node.id.toString() === id.toString())
436
+ return chain;
437
+ if (Array.isArray(node.children)) {
438
+ var i;
439
+ var result = null;
440
+ chain.push(node.id.toString());
441
+ for (i = 0; result == null && i < node.children.length; i++) {
442
+ result = getNodeParent(node.children[i], id, chain);
443
+ }
444
+ return result;
445
+ }
446
+ return null;
447
+ };
448
+ return (React__default["default"].createElement(Dialog__default["default"], __assign({ onClose: function (event, reason) { return null; }, "aria-label": title, maxWidth: "xs", TransitionProps: { onEntering: handleEntering }, "aria-labelledby": "confirmation-dialog-title", open: open }, other),
449
+ React__default["default"].createElement(DialogTitle__default["default"], { id: "confirmation-dialog-title" }, title),
450
+ React__default["default"].createElement(DialogContent__default["default"], { dividers: true },
451
+ React__default["default"].createElement(TreeView__default["default"], { className: classes.root, defaultCollapseIcon: React__default["default"].createElement(MinusSquare, null), defaultExpandIcon: React__default["default"].createElement(PlusSquare, null), ref: treeRef, selected: value === undefined ? "" : value.toString(), expanded: expanded,
452
+ /* @ts-ignore */
453
+ onNodeSelect: handleChange, onNodeToggle: handleToogle }, data.id !== undefined &&
454
+ renderTree(data))),
455
+ React__default["default"].createElement(DialogActions__default["default"], null,
456
+ React__default["default"].createElement(Button__default["default"], { autoFocus: true, onClick: handleCancel, color: "primary" }, "Cancel"),
457
+ React__default["default"].createElement(Button__default["default"], { onClick: handleOk, color: "primary" }, "Ok"))));
458
+ };
459
+ ModalTreeFilterControl.propTypes = {
460
+ onClose: PropTypes__default["default"].func.isRequired,
461
+ open: PropTypes__default["default"].bool.isRequired,
462
+ title: PropTypes__default["default"].string.isRequired,
463
+ data: PropTypes__default["default"].object.isRequired
464
+ };
465
+
466
+ var TreePickerControl = function (props) {
467
+ var useStyles = styles.makeStyles(function (theme) { return ({
468
+ root: {
469
+ width: '100%',
470
+ maxWidth: 600,
471
+ backgroundColor: theme.palette.background.paper
472
+ },
473
+ paper: {
474
+ width: '80%',
475
+ maxWidth: 600,
476
+ maxHeight: 600
477
+ }
478
+ }); });
479
+ var classes = useStyles();
480
+ var onSelect = props.onSelect, value = props.value, styleLabel = props.styleLabel, dataSource = props.dataSource, other = __rest(props, ["onSelect", "value", "styleLabel", "dataSource"]);
481
+ //const [description, setDescription] = React.useState(props.descriptionOld);
482
+ var _a = React__default["default"].useState(false), open = _a[0], setOpen = _a[1];
483
+ var handleClickListItem = function () {
484
+ setOpen(true);
485
+ };
486
+ var handleClose = function (newValue, newDescription, findNode) {
487
+ setOpen(false);
488
+ if (newValue) {
489
+ if (onSelect !== undefined)
490
+ onSelect(newValue, newDescription, findNode);
491
+ //setDescription(newDescription)
492
+ }
493
+ };
494
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
495
+ React__default["default"].createElement("div", { className: "input-group" },
496
+ React__default["default"].createElement("div", { className: "input-group-prepend" },
497
+ React__default["default"].createElement("span", { className: "input-group-text", style: (styleLabel || {}) }, "Code")),
498
+ React__default["default"].createElement("input", { type: "hidden", value: value || '' }),
499
+ React__default["default"].createElement("input", { type: "text", className: "form-control mes-selectable", onClick: handleClickListItem, placeholder: props.title, value: props.description, readOnly: true }),
500
+ React__default["default"].createElement("div", { className: "input-group-append" },
501
+ React__default["default"].createElement("button", { className: "input-group-text", onClick: handleClickListItem },
502
+ React__default["default"].createElement("i", { className: "fa fa-search" })))),
503
+ React__default["default"].createElement(ModalTreeFilterControl, __assign({ classes: {
504
+ paper: classes.paper
505
+ }, id: "modal-treeview-filter", title: props.title, keepMounted: true, open: open, onClose: handleClose, value: value, data: dataSource }, other))));
506
+ };
507
+ function DateControl(_a) {
508
+ var value = _a.value, onChange = _a.onChange, title = _a.title, styleGeneral = _a.styleGeneral, styleLabel = _a.styleLabel;
509
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
510
+ React__default["default"].createElement("div", { className: "input-group row", style: (styleGeneral || {}) },
511
+ React__default["default"].createElement("div", { className: "input-group-prepend col-sm-3" },
512
+ React__default["default"].createElement("span", { className: "input-group-text", style: (styleLabel || {}) }, title)),
513
+ React__default["default"].createElement("div", { className: "col-sm-9" },
514
+ React__default["default"].createElement(DatePicker__default["default"], { className: "form-control mes-filter-datepicker", selected: value, onChange: function (date) { return onChange(date); } })))));
515
+ }
516
+ var DateTimeControl = function (props) {
517
+ var value = props.value, title = props.title, styleLabel = props.styleLabel, readOnly = props.readOnly, styleTextTimeBox = props.styleTextTimeBox, onChange = props.onChange, name = props.name;
518
+ var formatTime = function () {
519
+ var date = moment__default["default"](value);
520
+ if (!date.isValid())
521
+ return '';
522
+ return date.format('HH:mm:ss');
523
+ };
524
+ var _a = React__default["default"].useState(formatTime()), formattedTimeValue = _a[0], setFormattedTimeValue = _a[1];
525
+ var changeDate = function (e) {
526
+ setFormattedTimeValue(e.target.value);
527
+ };
528
+ var blurDate = function (e) {
529
+ var date = moment__default["default"](e.target.value, 'hh:mm:ss');
530
+ if (date.isValid() && moment__default["default"](value).isValid()) {
531
+ var newDate = (moment__default["default"](value)).set('hour', date.hour()).set('minute', date.minute()).set('second', date.second());
532
+ onChange(newDate.toDate(), name || '');
533
+ }
534
+ else {
535
+ setFormattedTimeValue(formatTime());
536
+ }
537
+ };
538
+ React__default["default"].useEffect(function () {
539
+ setFormattedTimeValue(formatTime());
540
+ }, [value]); // eslint-disable-line react-hooks/exhaustive-deps
541
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
542
+ React__default["default"].createElement("div", { className: "input-group" },
543
+ React__default["default"].createElement("div", { className: "input-group-prepend" },
544
+ React__default["default"].createElement("span", { className: "input-group-text", style: (styleLabel || {}) }, title)),
545
+ React__default["default"].createElement(DatePicker__default["default"], { className: "form-control mes-filter-datepicker mes-not-rounded", selected: value, onChange: function (date) { return onChange(date, name || ''); }, readOnly: readOnly || false }),
546
+ React__default["default"].createElement("input", { type: "text", className: "form-control input-group-append mes-filter-datetimepicker", placeholder: "time", value: formattedTimeValue || '', readOnly: readOnly || false, style: styleTextTimeBox || {}, onBlur: function (e) { return blurDate(e); }, onChange: function (e) { return changeDate(e); } }))));
547
+ };
548
+ var SimpleTimeControl = function (props) {
549
+ var value = props.value, title = props.title, styleLabel = props.styleLabel, readOnly = props.readOnly, styleTextBox = props.styleTextBox, onChange = props.onChange, name = props.name;
550
+ var formatDate = function () {
551
+ var date = moment__default["default"](value);
552
+ if (!date.isValid())
553
+ return 'INVALID TIME';
554
+ return date.format('HH:mm:ss');
555
+ };
556
+ var _a = React__default["default"].useState(formatDate()), formattedValue = _a[0], setFormattedValue = _a[1];
557
+ React__default["default"].useEffect(function () {
558
+ setFormattedValue(formatDate());
559
+ }, [value]); // eslint-disable-line react-hooks/exhaustive-deps
560
+ var blurDate = function (e) {
561
+ var date = moment__default["default"](e.target.value, 'hh:mm:ss');
562
+ if (date.isValid() && moment__default["default"](value).isValid()) {
563
+ var newDate = (moment__default["default"](value)).set('hour', date.hour()).set('minute', date.minute()).set('second', date.second());
564
+ onChange(newDate.toDate(), name || '');
565
+ }
566
+ else {
567
+ setFormattedValue(formatDate());
568
+ }
569
+ };
570
+ var changeDate = function (e) {
571
+ setFormattedValue(e.target.value);
572
+ };
573
+ return (React__default["default"].createElement("div", { className: "input-group" },
574
+ React__default["default"].createElement("div", { className: "input-group-prepend" },
575
+ React__default["default"].createElement("span", { className: "input-group-text", style: (styleLabel || {}) }, title)),
576
+ React__default["default"].createElement("input", { type: "text", className: "form-control", placeholder: title, readOnly: readOnly || false, value: formattedValue || '', onBlur: function (e) { return blurDate(e); }, onChange: function (e) { return changeDate(e); }, style: styleTextBox || {} })));
577
+ };
578
+ function SimpleInputSearchControl(_a) {
579
+ var title = _a.title, styleLabel = _a.styleLabel, isNumeric = _a.isNumeric, readOnly = _a.readOnly, value = _a.value, onChange = _a.onChange, name = _a.name, styleTextBox = _a.styleTextBox, onKeyDown = _a.onKeyDown, lengthCharacters = _a.lengthCharacters;
580
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
581
+ React__default["default"].createElement("div", { className: "input-group" },
582
+ React__default["default"].createElement("div", { className: "input-group-prepend" },
583
+ React__default["default"].createElement("span", { className: "input-group-text", style: (styleLabel || {}) }, title)),
584
+ React__default["default"].createElement("input", { type: "text", className: "form-control " + (isNumeric ? 'mes-numeric' : ''), placeholder: title, readOnly: readOnly, value: value || '', onChange: function (e) { return onChange(e.target.value, name || ''); }, style: (styleTextBox || {}), onKeyDown: function (e) { return onKeyDown(e); }, maxLength: lengthCharacters || '' }))));
585
+ }
586
+ var TimeControl = /** @class */ (function (_super) {
587
+ __extends(TimeControl, _super);
588
+ function TimeControl() {
589
+ return _super !== null && _super.apply(this, arguments) || this;
590
+ }
591
+ TimeControl.prototype.render = function () {
592
+ var _this = this;
593
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
594
+ React__default["default"].createElement("div", { className: "input-group" },
595
+ React__default["default"].createElement("div", { className: "input-group-prepend" },
596
+ React__default["default"].createElement("span", { className: "input-group-text", style: (this.props.styleLabel || {}) }, this.props.title)),
597
+ React__default["default"].createElement(DatePicker__default["default"], { className: "form-control mes-filter-datepicker", selected: this.props.value, onChange: function (date) { return _this.props.onChange(date, _this.props.name || ''); }, showTimeSelect: this.props.showSelector || false, showTimeSelectOnly: true, timeIntervals: 15, timeCaption: "Time", dateFormat: "HH:mm:ss", timeFormat: "HH:mm", readOnly: this.props.readOnly || false }))));
598
+ };
599
+ return TimeControl;
600
+ }(React.Component));
601
+ var SimpleTextControl = /** @class */ (function (_super) {
602
+ __extends(SimpleTextControl, _super);
603
+ function SimpleTextControl() {
604
+ return _super !== null && _super.apply(this, arguments) || this;
605
+ }
606
+ SimpleTextControl.prototype.render = function () {
607
+ var _this = this;
608
+ return (React__default["default"].createElement("div", { className: "input-group" },
609
+ React__default["default"].createElement("div", { className: "input-group-prepend" },
610
+ React__default["default"].createElement("span", { className: "input-group-text", style: (this.props.styleLabel || {}) }, this.props.title)),
611
+ React__default["default"].createElement("input", { type: "text", className: "form-control " + (this.props.isNumeric ? 'mes-numeric' : ''), placeholder: this.props.title, readOnly: this.props.readOnly, value: this.props.value || '', onChange: function (e) { return _this.props.onChange(e.target.value, _this.props.name || ''); }, style: (this.props.styleTextBox || {}), maxLength: this.props.lengthCharacters || '' })));
612
+ };
613
+ return SimpleTextControl;
614
+ }(React.Component));
615
+ var SimplePasswordControl = /** @class */ (function (_super) {
616
+ __extends(SimplePasswordControl, _super);
617
+ function SimplePasswordControl() {
618
+ return _super !== null && _super.apply(this, arguments) || this;
619
+ }
620
+ SimplePasswordControl.prototype.render = function () {
621
+ var _this = this;
622
+ return (React__default["default"].createElement("div", { className: "input-group" },
623
+ React__default["default"].createElement("div", { className: "input-group-prepend" },
624
+ React__default["default"].createElement("span", { className: "input-group-text", style: (this.props.styleLabel || {}) }, this.props.title)),
625
+ React__default["default"].createElement("input", { className: "form-control ", type: "password", placeholder: this.props.title, readOnly: this.props.readOnly, value: this.props.value || '', onChange: function (e) { return _this.props.onChange(e.target.value, _this.props.name || ''); }, style: (this.props.styleTextBox || {}), maxLength: this.props.lengthCharacters || '' })));
626
+ };
627
+ return SimplePasswordControl;
628
+ }(React.Component));
629
+ var formatNumber = function (value) {
630
+ var number = Number(value);
631
+ if (Number.isNaN(number))
632
+ return '';
633
+ return number.toString();
634
+ };
635
+ var NumericTextControl = function (props) {
636
+ var value = props.value, title = props.title, styleLabel = props.styleLabel, readOnly = props.readOnly, styleTextBox = props.styleTextBox, onChange = props.onChange, name = props.name, typeNumber = props.typeNumber; //typeNumber 1 = real, 2 = integer, 3 = natural
637
+ var _a = React__default["default"].useState(formatNumber(value)), formattedValue = _a[0], setFormattedValue = _a[1];
638
+ var changedValue = function (e) {
639
+ setFormattedValue(e.target.value);
640
+ };
641
+ var valueBlured = function (inputValue) {
642
+ var number = Number(inputValue);
643
+ if (Number.isNaN(number))
644
+ setFormattedValue(formatNumber(value));
645
+ else if (typeNumber === 2 && !Number.isInteger(number))
646
+ setFormattedValue(formatNumber(value));
647
+ else if (typeNumber === 3 && (!Number.isInteger(number) || number < 0))
648
+ setFormattedValue(formatNumber(value));
649
+ else
650
+ onChange(number, name || '');
651
+ };
652
+ React__default["default"].useEffect(function () {
653
+ setFormattedValue(formatNumber(value));
654
+ }, [value]); // eslint-disable-line react-hooks/exhaustive-deps
655
+ return (React__default["default"].createElement("div", { className: "input-group" },
656
+ React__default["default"].createElement("div", { className: "input-group-prepend" },
657
+ React__default["default"].createElement("span", { className: "input-group-text", style: (styleLabel || {}) }, title)),
658
+ React__default["default"].createElement("input", { type: "text", className: "form-control mes-numeric", placeholder: title, readOnly: readOnly, value: formattedValue || '', onChange: function (e) { return changedValue(e); }, onBlur: function (e) { return valueBlured(e.target.value); }, style: (styleTextBox || {}) })));
659
+ };
660
+ var HorizontalTextControl = /** @class */ (function (_super) {
661
+ __extends(HorizontalTextControl, _super);
662
+ function HorizontalTextControl() {
663
+ return _super !== null && _super.apply(this, arguments) || this;
664
+ }
665
+ HorizontalTextControl.prototype.render = function () {
666
+ var _this = this;
667
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
668
+ React__default["default"].createElement("div", { className: "input-group" },
669
+ React__default["default"].createElement("div", { className: "input-group-prepend" },
670
+ React__default["default"].createElement("span", { className: "input-group-text", style: (this.props.styleLabel || {}) }, this.props.title)),
671
+ React__default["default"].createElement("input", { type: "text", className: "form-control " + (this.props.isNumeric ? 'mes-numeric' : ''), placeholder: this.props.title, readOnly: this.props.readOnly, value: this.props.value || '', style: (this.props.styleText || {}), onChange: function (e) { return _this.props.onChange(e.target.value, _this.props.name || ''); } }),
672
+ React__default["default"].createElement("div", { className: "input-group-append" },
673
+ React__default["default"].createElement("span", { className: "input-group-text", style: (this.props.styleSubLabel || {}) }, this.props.subTitle || '')))));
674
+ };
675
+ return HorizontalTextControl;
676
+ }(React.Component));
677
+ var SimpleTextAreaControl = /** @class */ (function (_super) {
678
+ __extends(SimpleTextAreaControl, _super);
679
+ function SimpleTextAreaControl() {
680
+ return _super !== null && _super.apply(this, arguments) || this;
681
+ }
682
+ SimpleTextAreaControl.prototype.render = function () {
683
+ var _this = this;
684
+ return (React__default["default"].createElement("div", { className: "input-group" },
685
+ React__default["default"].createElement("div", { className: "input-group-prepend" },
686
+ React__default["default"].createElement("span", { className: "input-group-text", style: (this.props.styleLabel || {}) }, this.props.title)),
687
+ React__default["default"].createElement("textarea", { className: "form-control", placeholder: this.props.title, value: this.props.value || '', onChange: function (e) { return _this.props.onChange(e.target.value, _this.props.name || ''); }, style: (this.props.styleText || {}), disabled: !!(this.props.disabled) })));
688
+ };
689
+ return SimpleTextAreaControl;
690
+ }(React.Component));
691
+ function SimpleSelectorControl(_a) {
692
+ var title = _a.title, dataSource = _a.dataSource, selectedValue = _a.selectedValue, onChange = _a.onChange, showColor = _a.showColor, styleLabel = _a.styleLabel, styleList = _a.styleList, hasChoose = _a.hasChoose;
693
+ var options = dataSource.map(function (item, index) {
694
+ return React__default["default"].createElement(MenuItem__default["default"], { value: item.id.toString(), key: index },
695
+ showColor === true &&
696
+ React__default["default"].createElement("i", { className: "fas fa-square mr-2", style: { "color": (item.color || '#FFFFFF') } }),
697
+ React__default["default"].createElement("span", null, item.description));
698
+ });
699
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
700
+ React__default["default"].createElement("div", { className: "input-group" },
701
+ React__default["default"].createElement("div", { className: "input-group-prepend" },
702
+ React__default["default"].createElement("span", { className: "input-group-text", style: (styleLabel || {}) }, title)),
703
+ React__default["default"].createElement(Select__default["default"], { className: "custom-select mes-custom-select", onChange: function (e) { return onChange(e.target.value === 'DEFAULT' ? '' : e.target.value); }, value: selectedValue || "DEFAULT", style: (styleList || {}) },
704
+ (hasChoose && React__default["default"].createElement(MenuItem__default["default"], { value: "DEFAULT" }, "Choose " + title)),
705
+ options))));
706
+ }
707
+ var MultipleSelectorControl = function (props) {
708
+ var options = (props.dataSource || []).map(function (item, index) {
709
+ return React__default["default"].createElement("option", { value: item[props.valueField], key: index, className: "p-1" }, item[props.textField]);
710
+ });
711
+ return (React__default["default"].createElement("div", { className: "card" },
712
+ React__default["default"].createElement("div", { className: "card-header" }, props.title || ''),
713
+ React__default["default"].createElement("div", { className: "card-body p-0" },
714
+ React__default["default"].createElement("select", { className: "form-select col-md-12 p-0 mes-no-border", multiple: true, "aria-label": props.title || '', value: props.value || [], onChange: function (e) { var value = Array.from(e.target.selectedOptions, function (option) { return option.value; }); props.onChange(value); }, onDoubleClick: props.onDoubleClick || undefined }, options))));
715
+ };
716
+ var CheckBoxControl = function (props) {
717
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
718
+ React__default["default"].createElement("div", { className: "input-group" },
719
+ React__default["default"].createElement("div", { className: "input-group-prepend" },
720
+ React__default["default"].createElement("div", { className: "input-group-text" },
721
+ React__default["default"].createElement("input", { type: "checkbox", checked: props.value, onChange: function (e) { props.onCheck(e.target.checked); }, disabled: props.disabled }))),
722
+ React__default["default"].createElement("input", { type: "text", className: "form-control", "aria-label": props.title, value: props.title, readOnly: true, style: (props.styleTextBox || []) }))));
723
+ };
724
+ var UploadFileControl = function (props) {
725
+ var FileChanged = function (e) {
726
+ props.onChange(e.target.files[0]);
727
+ };
728
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
729
+ React__default["default"].createElement("div", { className: "input-group mes-upload-control" },
730
+ React__default["default"].createElement("div", { className: "input-group-prepend" },
731
+ React__default["default"].createElement("div", { className: "input-group-text p-0 file-box" },
732
+ React__default["default"].createElement("div", { className: "file-detail", style: {} },
733
+ props.selectedFile &&
734
+ React__default["default"].createElement(React__default["default"].Fragment, null,
735
+ React__default["default"].createElement("h5", null, "File Details:"),
736
+ React__default["default"].createElement("table", null,
737
+ React__default["default"].createElement("tbody", null,
738
+ React__default["default"].createElement("tr", null,
739
+ React__default["default"].createElement("td", null,
740
+ "File Name: ",
741
+ props.selectedFile.name)),
742
+ React__default["default"].createElement("tr", null,
743
+ React__default["default"].createElement("td", null,
744
+ "File Type: ",
745
+ props.selectedFile.type)),
746
+ React__default["default"].createElement("tr", null,
747
+ React__default["default"].createElement("td", null,
748
+ "Last Modified: ",
749
+ props.selectedFile.lastModifiedDate.toDateString()))))),
750
+ props.selectedFile === undefined &&
751
+ React__default["default"].createElement("div", { className: "pt-4" },
752
+ React__default["default"].createElement(core.Typography, null, "Select or drag a file"))),
753
+ React__default["default"].createElement("input", { id: "myFile", type: "file", className: "formcontrol", style: {}, onChange: FileChanged, accept: props.acceptFile || '*.*' }))),
754
+ React__default["default"].createElement("div", { className: "input-group-append" },
755
+ React__default["default"].createElement("button", { className: "btn btn-primary mes-button-primary", disabled: props.selectedFile === undefined, onClick: props.onUpload },
756
+ React__default["default"].createElement("i", { className: "fas fa-upload pr-2" }),
757
+ React__default["default"].createElement("span", null, "Upload"))))));
758
+ };
759
+
760
+ function GenericRow(props) {
761
+ var cells = props.row.map(function (cell, index) {
762
+ return React__default["default"].createElement("td", { key: index }, cell);
763
+ });
764
+ return (React__default["default"].createElement("tr", null, cells));
765
+ }
766
+ var GenericTable = /** @class */ (function (_super) {
767
+ __extends(GenericTable, _super);
768
+ function GenericTable() {
769
+ return _super !== null && _super.apply(this, arguments) || this;
770
+ }
771
+ GenericTable.prototype.render = function () {
772
+ var theads = (this.props.columns.map(function (column, index) {
773
+ return React__default["default"].createElement("th", { scope: "col", key: index }, column);
774
+ }));
775
+ var tbody = (this.props.data.map(function (row, index) {
776
+ return React__default["default"].createElement(GenericRow, { row: row, key: index });
777
+ }));
778
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
779
+ React__default["default"].createElement("div", { className: "container-fluid my-3" },
780
+ React__default["default"].createElement("div", { className: "table-responsive-md" },
781
+ React__default["default"].createElement("table", { className: "table table-hover table-striped table-sm" },
782
+ React__default["default"].createElement("thead", null,
783
+ React__default["default"].createElement("tr", null, theads)),
784
+ React__default["default"].createElement("tbody", null, tbody))))));
785
+ };
786
+ return GenericTable;
787
+ }(React.Component));
788
+
789
+ var useStylesForOverlay = styles.makeStyles(function (theme) { return ({
790
+ root: {
791
+ flexDirection: 'column',
792
+ '& .ant-empty-img-1': {
793
+ fill: theme.palette.type === 'light' ? '#aeb8c2' : '#262626'
794
+ },
795
+ '& .ant-empty-img-2': {
796
+ fill: theme.palette.type === 'light' ? '#f5f5f7' : '#595959'
797
+ },
798
+ '& .ant-empty-img-3': {
799
+ fill: theme.palette.type === 'light' ? '#dce0e6' : '#434343'
800
+ },
801
+ '& .ant-empty-img-4': {
802
+ fill: theme.palette.type === 'light' ? '#fff' : '#1c1c1c'
803
+ },
804
+ '& .ant-empty-img-5': {
805
+ fillOpacity: theme.palette.type === 'light' ? '0.8' : '0.08',
806
+ fill: theme.palette.type === 'light' ? '#f5f5f5' : '#fff'
807
+ }
808
+ },
809
+ label: {
810
+ marginTop: theme.spacing(1)
811
+ }
812
+ }); });
813
+ function CustomNoRowsOverlay() {
814
+ var classes = useStylesForOverlay();
815
+ return (React__default["default"].createElement(dataGrid.GridOverlay, { className: classes.root },
816
+ React__default["default"].createElement("svg", { width: "120", height: "100", viewBox: "0 0 184 152", "aria-hidden": true, focusable: "false" },
817
+ React__default["default"].createElement("g", { fill: "none", fillRule: "evenodd" },
818
+ React__default["default"].createElement("g", { transform: "translate(24 31.67)" },
819
+ React__default["default"].createElement("ellipse", { className: "ant-empty-img-5", cx: "67.797", cy: "106.89", rx: "67.797", ry: "12.668" }),
820
+ React__default["default"].createElement("path", { className: "ant-empty-img-1", d: "M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z" }),
821
+ React__default["default"].createElement("path", { className: "ant-empty-img-2", d: "M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z" }),
822
+ React__default["default"].createElement("path", { className: "ant-empty-img-3", d: "M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z" })),
823
+ React__default["default"].createElement("path", { className: "ant-empty-img-3", d: "M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z" }),
824
+ React__default["default"].createElement("g", { className: "ant-empty-img-4", transform: "translate(149.65 15.383)" },
825
+ React__default["default"].createElement("ellipse", { cx: "20.654", cy: "3.167", rx: "2.849", ry: "2.815" }),
826
+ React__default["default"].createElement("path", { d: "M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z" })))),
827
+ React__default["default"].createElement("div", { className: classes.label }, "No Rows")));
828
+ }
829
+ var DataGridControl = function (props) {
830
+ var columns = props.columns, rows = props.rows, other = __rest(props, ["columns", "rows"]);
831
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
832
+ React__default["default"].createElement("div", { className: "container-fluid my-3" },
833
+ React__default["default"].createElement(dataGrid.DataGrid, __assign({ components: {
834
+ NoRowsOverlay: CustomNoRowsOverlay
835
+ }, rows: rows, columns: columns || [], autoHeight: true, rowHeight: 25 }, other)))));
836
+ };
837
+ DataGridControl.propTypes = {
838
+ columns: PropTypes__default["default"].array,
839
+ rows: PropTypes__default["default"].array
840
+ };
841
+
842
+ /********************MATERIAL UI STYLES********************************** */
843
+ /************************************************************************* */
844
+ var GenericPanel = function (_a) {
845
+ var title = _a.title, description = _a.description, _b = _a.showPromptSuccess, showPromptSuccess = _b === void 0 ? false : _b, _c = _a.showPromptError, showPromptError = _c === void 0 ? false : _c, _d = _a.onDismissSuccess, onDismissSuccess = _d === void 0 ? function () { return null; } : _d, _e = _a.onDismissError, onDismissError = _e === void 0 ? function () { return null; } : _e, successMessage = _a.successMessage, error = _a.error, children = _a.children;
846
+ return (React__default["default"].createElement("div", { className: "content-wrapper" },
847
+ React__default["default"].createElement("div", { className: "row" },
848
+ React__default["default"].createElement("div", { className: "col-lg-12" },
849
+ React__default["default"].createElement(reactBootstrap.Alert, { show: showPromptError, variant: "danger", dismissible: true, onClose: onDismissError },
850
+ React__default["default"].createElement("strong", null, "There was an error"),
851
+ React__default["default"].createElement("p", null, error === undefined ? 'There was an error' :
852
+ (error.internalError.message === undefined ? error.internalError : error.internalError.message))),
853
+ React__default["default"].createElement(reactBootstrap.Alert, { show: showPromptSuccess, variant: "success", onClose: onDismissSuccess },
854
+ React__default["default"].createElement("p", null, successMessage || 'Operation was success')))),
855
+ React__default["default"].createElement("h3", null,
856
+ title,
857
+ React__default["default"].createElement("small", null, description)),
858
+ children));
859
+ };
860
+ var MasterDetailPanel = /** @class */ (function (_super) {
861
+ __extends(MasterDetailPanel, _super);
862
+ function MasterDetailPanel() {
863
+ return _super !== null && _super.apply(this, arguments) || this;
864
+ }
865
+ MasterDetailPanel.prototype.useStyles = function () {
866
+ return styles.makeStyles(function (theme) { return ({
867
+ root: {
868
+ '& > *': {
869
+ margin: theme.spacing(1)
870
+ },
871
+ marginBottom: theme.spacing(1)
872
+ }
873
+ }); });
874
+ };
875
+ MasterDetailPanel.prototype.render = function () {
876
+ return (React__default["default"].createElement("div", { className: "pb-2" },
877
+ React__default["default"].createElement(Card__default["default"], { variant: "outlined" },
878
+ React__default["default"].createElement(CardContent__default["default"], null,
879
+ React__default["default"].createElement(Typography__default["default"], { gutterBottom: true, variant: "h5", component: "h2" }, this.props.title || ''),
880
+ this.props.children),
881
+ React__default["default"].createElement(CardActions__default["default"], { className: "px-3 " },
882
+ React__default["default"].createElement("button", { className: "btn btn-danger", onClick: this.props.onCancel, disabled: !this.props.saveStatus }, "Cancel"),
883
+ (this.props.showSave === undefined || this.props.showSave) &&
884
+ React__default["default"].createElement("button", { className: "btn btn-primary mes-button-primary", onClick: this.props.onSave, disabled: !this.props.saveStatus }, "Save"),
885
+ this.props.showDelete &&
886
+ React__default["default"].createElement("button", { className: "btn btn-primary mes-button-primary", onClick: this.props.onDelete, disabled: !this.props.deleteStatus }, "Delete")))));
887
+ };
888
+ return MasterDetailPanel;
889
+ }(React.Component));
890
+ var FilterPanel = /** @class */ (function (_super) {
891
+ __extends(FilterPanel, _super);
892
+ function FilterPanel(props) {
893
+ var _this = _super.call(this, props) || this;
894
+ _this.state = {};
895
+ _this.onClickGo = _this.GetFilterValues.bind(_this);
896
+ _this.onClickReset = _this.ResetFilterValues.bind(_this);
897
+ _this.onClickExport = _this.ExportData.bind(_this);
898
+ return _this;
899
+ }
900
+ FilterPanel.prototype.ExportData = function () {
901
+ if (this.props.onClickExport !== undefined)
902
+ this.props.onClickExport();
903
+ };
904
+ FilterPanel.prototype.ResetFilterValues = function () {
905
+ if (this.props.onClickReset !== undefined)
906
+ this.props.onClickReset();
907
+ };
908
+ FilterPanel.prototype.GetFilterValues = function () {
909
+ if (this.props.OnClickGo !== undefined)
910
+ this.props.OnClickGo();
911
+ };
912
+ FilterPanel.prototype.render = function () {
913
+ var buttonList = this.props.extraButtons === undefined ? [] : this.props.extraButtons;
914
+ var extraButtons = buttonList.map(function (button, index) {
915
+ return React__default["default"].createElement("button", { type: "button", className: "btn btn-primary btn-sm mr-2", onClick: button.onClick, key: index }, button.name);
916
+ });
917
+ return (React__default["default"].createElement("div", { className: "container-fluid" },
918
+ React__default["default"].createElement("div", { className: "row" },
919
+ React__default["default"].createElement("div", { className: "col-md-12" },
920
+ React__default["default"].createElement("div", { className: "row" },
921
+ this.props.children,
922
+ React__default["default"].createElement("div", { className: "me-auto" },
923
+ !!this.props.showButtons &&
924
+ React__default["default"].createElement(React__default["default"].Fragment, null,
925
+ React__default["default"].createElement("div", { className: "pt-2" },
926
+ React__default["default"].createElement("button", { type: "button", className: "btn btn-primary btn mr-2", onClick: this.onClickGo }, "Go"),
927
+ React__default["default"].createElement("button", { type: "button", className: "btn btn-danger btn-sm mr-2", onClick: this.onClickReset }, "Reset"))),
928
+ extraButtons,
929
+ !!this.props.showExport &&
930
+ React__default["default"].createElement("div", { className: "pt-2" },
931
+ React__default["default"].createElement("button", { type: "button", className: "btn btn-success", onClick: this.onClickExport },
932
+ React__default["default"].createElement("i", { className: "fa fa-download" }),
933
+ "Excel"))))))));
934
+ };
935
+ return FilterPanel;
936
+ }(React.Component));
937
+ var LongFilterPanel = /** @class */ (function (_super) {
938
+ __extends(LongFilterPanel, _super);
939
+ function LongFilterPanel(props) {
940
+ var _this = _super.call(this, props) || this;
941
+ _this.state = {};
942
+ _this.onClickGo = _this.GetFilterValues.bind(_this);
943
+ _this.onClickReset = _this.ResetFilterValues.bind(_this);
944
+ _this.onClickExport = _this.ExportData.bind(_this);
945
+ return _this;
946
+ }
947
+ LongFilterPanel.prototype.ExportData = function () {
948
+ if (this.props.onClickExport !== undefined)
949
+ this.props.onClickExport();
950
+ };
951
+ LongFilterPanel.prototype.ResetFilterValues = function () {
952
+ if (this.props.onClickReset !== undefined)
953
+ this.props.onClickReset();
954
+ };
955
+ LongFilterPanel.prototype.GetFilterValues = function () {
956
+ if (this.props.OnClickGo !== undefined)
957
+ this.props.OnClickGo();
958
+ };
959
+ LongFilterPanel.prototype.render = function () {
960
+ var buttonList = this.props.extraButtons === undefined ? [] : this.props.extraButtons;
961
+ var extraButtons = buttonList.map(function (button, index) {
962
+ return React__default["default"].createElement("button", { type: "button", className: "btn btn-primary btn-sm mr-2", onClick: button.onClick, key: index }, button.name);
963
+ });
964
+ return (React__default["default"].createElement("div", { className: "container-fluid" },
965
+ React__default["default"].createElement("div", { className: "row" },
966
+ React__default["default"].createElement("div", { className: "col-md-12" },
967
+ this.props.children,
968
+ React__default["default"].createElement("div", { className: "me-auto" }, !!this.props.showButtons &&
969
+ React__default["default"].createElement("div", { className: "container-fluid" },
970
+ React__default["default"].createElement("div", { className: "col-md-10" },
971
+ React__default["default"].createElement("div", { className: "pt-2" },
972
+ React__default["default"].createElement("button", { type: "button", className: "btn btn-primary btn mr-2", onClick: this.onClickGo }, "Go"),
973
+ React__default["default"].createElement("button", { type: "button", className: "btn btn-danger btn-sm mr-2", onClick: this.onClickReset }, "Reset"),
974
+ !!this.props.showExport &&
975
+ React__default["default"].createElement("button", { type: "button", className: "btn btn-success", onClick: this.onClickExport },
976
+ React__default["default"].createElement("i", { className: "fa fa-download" }),
977
+ "Excel"),
978
+ extraButtons))))))));
979
+ };
980
+ return LongFilterPanel;
981
+ }(React.Component));
982
+
983
+ function JobConfig() {
984
+ var _a = React__default["default"].useState(false), showError = _a[0], setShowError = _a[1];
985
+ var _b = React__default["default"].useState(undefined), error = _b[0], setError = _b[1];
986
+ var _c = React__default["default"].useState(false), messageLoading = _c[0], setMessageLoading = _c[1];
987
+ var _d = React__default["default"].useState(false), messageSuccesful = _d[0], setMessageSuccesful = _d[1];
988
+ var _e = React__default["default"].useState(0), pageSel = _e[0], setPageSel = _e[1];
989
+ var _f = React__default["default"].useState([]), rows = _f[0], setRows = _f[1];
990
+ var _g = React__default["default"].useState(false), loading = _g[0], setLoading = _g[1];
991
+ var _h = React__default["default"].useState(false), blockButtons = _h[0], setBlockButtons = _h[1];
992
+ var formatTime = function (nowTime) {
993
+ return ((nowTime.toLocaleDateString() + ' ' + nowTime.toLocaleTimeString()));
994
+ };
995
+ var columns = [
996
+ { field: 'sProcedure', headerName: 'Procedure', width: 200, type: 'string' },
997
+ { field: 'Running', headerName: 'Status', width: 150, valueFormatter: function (_a) {
998
+ var value = _a.value;
999
+ return (value ? 'running' : 'inactive');
1000
+ } },
1001
+ { field: 'LastStarted', headerName: 'Started', width: 150, valueFormatter: function (_a) {
1002
+ var value = _a.value;
1003
+ return (value === null ? 'NULL' : formatTime(value));
1004
+ } },
1005
+ { field: 'LastCounter', headerName: 'Last Seen', width: 150, valueFormatter: function (_a) {
1006
+ var value = _a.value;
1007
+ return (value === null ? 'NULL' : formatTime(value));
1008
+ } },
1009
+ { field: 'Enabled', headerName: 'Enabled', width: 110, valueFormatter: function (_a) {
1010
+ var value = _a.value;
1011
+ return (!value ? 'N' : 'Y');
1012
+ } },
1013
+ { field: 'RestartAfterFailure', headerName: 'AutoRecover', width: 140, valueFormatter: function (_a) {
1014
+ var value = _a.value;
1015
+ return (!value ? 'N' : 'Y');
1016
+ } },
1017
+ { field: 'Enable', headerName: 'Enable', width: 110, renderCell: function (e) { return renderButtonEnable(e); } },
1018
+ { field: 'Disable', headerName: 'Disable', width: 110, renderCell: function (e) { return renderButtonDisable(e); } },
1019
+ { field: 'Reset', headerName: 'Reset', width: 110, renderCell: function (e) { return renderButtonReset(e); } }
1020
+ ];
1021
+ var renderButtonEnable = function (e) {
1022
+ var isDisabled = (e.row.Enabled) || (blockButtons);
1023
+ return (React__default["default"].createElement("button", { onClick: function () { onEnable(e); }, disabled: isDisabled }, "Enable"));
1024
+ };
1025
+ var renderButtonDisable = function (e) {
1026
+ var isDisabled = (!e.row.Enabled) || (blockButtons);
1027
+ return (React__default["default"].createElement("button", { onClick: function () { onEnable(e); }, disabled: isDisabled }, "Disable"));
1028
+ };
1029
+ var renderButtonReset = function (e) {
1030
+ var isDisabled = (!e.row.Enabled) || (blockButtons);
1031
+ return (React__default["default"].createElement("button", { onClick: function () { onReset(e); }, disabled: isDisabled }, "Reset"));
1032
+ };
1033
+ var onEnable = function (e) {
1034
+ var enParameters = [];
1035
+ var apiService = new MESApiService();
1036
+ enParameters.push({ name: "@sProcedure", value: e.row.sProcedure });
1037
+ enParameters.push({ name: "@Enable", value: (!e.row.Enabled) });
1038
+ apiService.call('SYSTEM.SetJobEnable', enParameters)
1039
+ .then(function () {
1040
+ if (apiService.hasErrors) {
1041
+ setShowError(true);
1042
+ setError(apiService.error);
1043
+ }
1044
+ searchData();
1045
+ });
1046
+ };
1047
+ var onReset = function (e) {
1048
+ var enParameters = [];
1049
+ var apiService = new MESApiService();
1050
+ enParameters.push({ name: "@sProcedure", value: e.row.sProcedure });
1051
+ apiService.call('SYSTEM.RestartJob', enParameters)
1052
+ .then(function () {
1053
+ if (apiService.hasErrors) {
1054
+ setShowError(true);
1055
+ setError(apiService.error);
1056
+ }
1057
+ setMessageLoading(false);
1058
+ setMessageSuccesful(true);
1059
+ searchData();
1060
+ setBlockButtons(false);
1061
+ });
1062
+ setMessageLoading(true);
1063
+ setBlockButtons(true);
1064
+ searchData();
1065
+ };
1066
+ var searchData = function () {
1067
+ setRows([]);
1068
+ setLoading(true);
1069
+ var apiService = new MESApiService();
1070
+ apiService.call('SYSTEM.GetJobsStatus', [])
1071
+ .then(function (response) {
1072
+ if (apiService.hasErrors) {
1073
+ setShowError(true);
1074
+ setError(apiService.error);
1075
+ }
1076
+ if (response !== undefined && response.tables !== undefined && response.tables[0] !== undefined) {
1077
+ var rowsSource = response.tables[0].rows;
1078
+ // TODO: add typing
1079
+ rowsSource.forEach(function (row) {
1080
+ row.id = row.JobId;
1081
+ row.LastStarted = row.LastStarted === null ? null : new Date(row.LastStarted);
1082
+ row.LastContact = row.LastContact === null ? null : new Date(row.LastContact);
1083
+ row.LastCounter = row.LastCounter === null ? null : new Date(row.LastCounter);
1084
+ });
1085
+ setRows(rowsSource);
1086
+ }
1087
+ setLoading(false);
1088
+ });
1089
+ };
1090
+ React__default["default"].useEffect(searchData, []);
1091
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
1092
+ React__default["default"].createElement(reactBootstrap.Alert, { show: showError, variant: "danger", dismissible: true, onClose: function () { setShowError(false); setError(undefined); } },
1093
+ React__default["default"].createElement("strong", null, "There was an error"),
1094
+ React__default["default"].createElement("p", null,
1095
+ " ",
1096
+ error === undefined ? 'There was an error' :
1097
+ (error.internalError.message === undefined ? error.internalError : error.internalError.message))),
1098
+ React__default["default"].createElement(reactBootstrap.Alert, { show: messageLoading, variant: "warning", dismissible: true, onClose: function () { setMessageLoading(false); } },
1099
+ React__default["default"].createElement("p", null, 'Waiting to reset')),
1100
+ React__default["default"].createElement(reactBootstrap.Alert, { show: messageSuccesful, variant: "success", dismissible: true, onClose: function () { setMessageSuccesful(false); } },
1101
+ React__default["default"].createElement("p", null, 'Reset was succesful')),
1102
+ React__default["default"].createElement("div", { className: "row" },
1103
+ React__default["default"].createElement(core.Typography, { className: "mx-2 mt-0 mb-2 font-weight-bold" }, "System Jobs")),
1104
+ React__default["default"].createElement("div", { className: "row" },
1105
+ React__default["default"].createElement(DataGridControl, __assign({ columns: columns, rows: rows, pageSize: 10, rowHeight: 30, loading: loading, rowsPerPageOptions: [10], page: pageSel, onPageChange: setPageSel }, {})))));
1106
+ }
1107
+
1108
+ function LogConfig() {
1109
+ var _a = React__default["default"].useState(false), showError = _a[0], setShowError = _a[1];
1110
+ var _b = React__default["default"].useState(undefined), error = _b[0], setError = _b[1];
1111
+ var _c = React__default["default"].useState(moment__default["default"]().add(-2, 'days').hour(0).minute(0).second(0).toDate()), startDate = _c[0], setStartDate = _c[1];
1112
+ var _d = React__default["default"].useState(moment__default["default"]().hour(23).minute(59).second(59).toDate()), endDate = _d[0], setEndDate = _d[1];
1113
+ var _e = React__default["default"].useState(0), pageSel = _e[0], setPageSel = _e[1];
1114
+ var _f = React__default["default"].useState([]), rows = _f[0], setRows = _f[1];
1115
+ var _g = React__default["default"].useState(""), search = _g[0], setSearch = _g[1];
1116
+ var _h = React__default["default"].useState(null), logCodeId = _h[0], setlogCodeId = _h[1];
1117
+ var _j = React__default["default"].useState(false), loading = _j[0], setLoading = _j[1];
1118
+ var _k = React__default["default"].useState([]), logCodes = _k[0], setlogCodes = _k[1];
1119
+ //state of row
1120
+ var _l = React__default["default"].useState(undefined), selectedLog = _l[0], setSelectedLog = _l[1];
1121
+ var formatTime = function (nowTime) {
1122
+ return ((nowTime.toLocaleDateString() + ' ' + nowTime.toLocaleTimeString()));
1123
+ };
1124
+ var formatUser = function (nowUser) {
1125
+ return (nowUser === null ? 'NULL' : nowUser);
1126
+ };
1127
+ var columns = [
1128
+ { field: 'Timestamp', headerName: 'Time', width: 200, valueFormatter: function (_a) {
1129
+ var value = _a.value;
1130
+ return (value === null ? '' : formatTime(value));
1131
+ } },
1132
+ { field: 'Source', headerName: 'Source', width: 150, type: 'string' },
1133
+ { field: 'Message', headerName: 'Message', width: 550, type: 'string' },
1134
+ { field: 'LogTypeCode', headerName: 'Type', width: 100 },
1135
+ { field: 'User', headerName: 'User', width: 150, type: 'string', valueFormatter: function (_a) {
1136
+ var value = _a.value;
1137
+ return (formatUser(value));
1138
+ } }
1139
+ ];
1140
+ var resetFilter = function () {
1141
+ setStartDate(moment__default["default"]().hour(0).minute(0).second(0).toDate());
1142
+ setEndDate(moment__default["default"]().hour(23).minute(59).second(59).toDate());
1143
+ setSearch("");
1144
+ setlogCodeId(1);
1145
+ setRows([]);
1146
+ setSelectedLog(undefined);
1147
+ };
1148
+ var rowClicked = function (rowClickedEvent) {
1149
+ var data = rowClickedEvent.row;
1150
+ if (data === undefined)
1151
+ return;
1152
+ setSelectedLog(data);
1153
+ };
1154
+ var searchData = function () {
1155
+ setRows([]);
1156
+ var apiService = new MESApiService();
1157
+ setLoading(true);
1158
+ var parameters = [];
1159
+ parameters.push({ name: "@Start", value: startDate });
1160
+ parameters.push({ name: "@End", value: endDate });
1161
+ parameters.push({ name: "@Search", value: search });
1162
+ if (logCodeId !== "A") {
1163
+ parameters.push({ name: "@LogTypeCode", value: logCodeId });
1164
+ }
1165
+ else {
1166
+ parameters.push({ name: "@LogTypeCode", value: null });
1167
+ }
1168
+ apiService.call('MES.GetLogs', parameters)
1169
+ .then(function (response) {
1170
+ if (apiService.hasErrors) {
1171
+ setShowError(true);
1172
+ setError(apiService.error);
1173
+ }
1174
+ if (response !== undefined && response.tables !== undefined && response.tables[0] !== undefined) {
1175
+ var rowsSource = response.tables[0].rows;
1176
+ rowsSource.forEach(function (row, index) {
1177
+ row.id = index;
1178
+ row.Timestamp = row.Timestamp === null ? null : new Date(row.Timestamp);
1179
+ });
1180
+ setRows(rowsSource);
1181
+ }
1182
+ setLoading(false);
1183
+ });
1184
+ };
1185
+ var loadFilter = function () {
1186
+ var listlogCode = [
1187
+ { 'id': "A", 'description': "All" }, { 'id': "I", 'description': "Info" }, { 'id': "E", 'description': "Error" }
1188
+ ];
1189
+ setlogCodes(listlogCode);
1190
+ setlogCodeId("A");
1191
+ };
1192
+ React__default["default"].useEffect(loadFilter, []);
1193
+ React__default["default"].useEffect(searchData, []);
1194
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
1195
+ React__default["default"].createElement(reactBootstrap.Alert, { show: showError, variant: "danger", dismissible: true, onClose: function () { setShowError(false); setError(undefined); } },
1196
+ React__default["default"].createElement("strong", null, "There was an error"),
1197
+ React__default["default"].createElement("p", null,
1198
+ " ",
1199
+ error === undefined ? 'There was an error' :
1200
+ (error.internalError.message === undefined ? error.internalError : error.internalError.message))),
1201
+ React__default["default"].createElement("div", { className: "row" },
1202
+ React__default["default"].createElement(core.Typography, { className: "mx-2 mt-0 mb-2 font-weight-bold" }, "MES and System Logs")),
1203
+ React__default["default"].createElement(FilterPanel, { showExport: false, showButtons: true, OnClickGo: searchData, onClickReset: resetFilter },
1204
+ React__default["default"].createElement("div", null,
1205
+ React__default["default"].createElement(DateControl, { value: startDate, onChange: setStartDate, title: "Start" })),
1206
+ React__default["default"].createElement("div", { className: "mx-2" },
1207
+ React__default["default"].createElement(DateControl, { value: endDate, onChange: setEndDate, title: "End" })),
1208
+ React__default["default"].createElement("div", { className: "col-md-3" },
1209
+ React__default["default"].createElement(SimpleTextControl, { value: search, onChange: setSearch, title: "Search" })),
1210
+ React__default["default"].createElement("div", { className: "col-md-2" },
1211
+ React__default["default"].createElement(SimpleSelectorControl, { title: "Code", dataSource: logCodes, selectedValue: logCodeId, onChange: setlogCodeId, showColor: false }))),
1212
+ React__default["default"].createElement("div", { className: "row" },
1213
+ React__default["default"].createElement(DataGridControl, { columns: columns, rows: rows, pageSize: 10, rowHeight: 30, loading: loading, rowsPerPageOptions: [10, 20, 50, 100], page: pageSel, onPageChange: setPageSel, onRowClick: rowClicked })),
1214
+ ((selectedLog !== undefined) &&
1215
+ React__default["default"].createElement("div", { className: "white-panel" },
1216
+ React__default["default"].createElement("div", { className: "row" },
1217
+ React__default["default"].createElement("div", { className: "col-md-12" },
1218
+ React__default["default"].createElement("h4", null, "Log Details"))),
1219
+ React__default["default"].createElement("div", { className: "row" },
1220
+ React__default["default"].createElement("div", { className: "col-md-3", style: { "display": "flex" } },
1221
+ React__default["default"].createElement("h5", null, "Time: "),
1222
+ React__default["default"].createElement("h5", { className: "mx-1", style: { "opacity": "0.7" } }, formatTime(selectedLog.Timestamp))),
1223
+ React__default["default"].createElement("div", { className: "col-md-3", style: { "display": "flex" } },
1224
+ React__default["default"].createElement("h5", null, "Source: "),
1225
+ React__default["default"].createElement("h5", { className: "mx-1", style: { "opacity": "0.7" } }, selectedLog.Source)),
1226
+ React__default["default"].createElement("div", { className: "col-md-2", style: { "display": "flex" } },
1227
+ React__default["default"].createElement("h5", null, "Type: "),
1228
+ React__default["default"].createElement("h5", { className: "mx-1", style: { "opacity": "0.7" } }, selectedLog.LogTypeCode)),
1229
+ React__default["default"].createElement("div", { className: "col-md-3", style: { "display": "flex" } },
1230
+ React__default["default"].createElement("h5", null, "User: "),
1231
+ React__default["default"].createElement("h5", { className: "mx-1", style: { "opacity": "0.7" } }, formatUser(selectedLog.User)))),
1232
+ React__default["default"].createElement("div", { className: "row" },
1233
+ React__default["default"].createElement("div", { className: "col-md-10", style: { "display": "flex" } },
1234
+ React__default["default"].createElement("h5", null, "Message: "),
1235
+ React__default["default"].createElement("h5", { style: { "opacity": "0.7" } }, selectedLog.Message)))))));
1236
+ }
1237
+
1238
+ function ProfileManagement() {
1239
+ // variables
1240
+ var columns = [
1241
+ { field: 'ProfileName', headerName: 'Profile', flex: 1, type: 'string' }
1242
+ ];
1243
+ //states
1244
+ var _a = React__default["default"].useState(undefined), profileId = _a[0], setProfileId = _a[1];
1245
+ var _b = React__default["default"].useState(''), profileName = _b[0], setProfileName = _b[1];
1246
+ var _c = React__default["default"].useState([]), selectedProfile = _c[0], setSelectedProfile = _c[1];
1247
+ var _d = React__default["default"].useState([]), selectedOtherProfile = _d[0], setSelectedOtherProfile = _d[1];
1248
+ var _e = React__default["default"].useState([]), selectedPermission = _e[0], setSelectedPermission = _e[1];
1249
+ var _f = React__default["default"].useState([]), selectedOtherPermission = _f[0], setSelectedOtherPermission = _f[1];
1250
+ var _g = React__default["default"].useState(0), page = _g[0], setPage = _g[1];
1251
+ var _h = React__default["default"].useState(false), loading = _h[0], setLoading = _h[1];
1252
+ var _j = React__default["default"].useState([]), dataSource = _j[0], setDataSource = _j[1];
1253
+ var _k = React__default["default"].useState(false), showError = _k[0], setShowError = _k[1];
1254
+ var _l = React__default["default"].useState(undefined), error = _l[0], setError = _l[1];
1255
+ var _m = React__default["default"].useState(false), showSuccess = _m[0], setShowSuccess = _m[1];
1256
+ var _o = React__default["default"].useState(''), successMessage = _o[0], setSuccessMessage = _o[1];
1257
+ var _p = React__default["default"].useState(''), title = _p[0], setTitle = _p[1];
1258
+ var _q = React__default["default"].useState([]), profiles = _q[0], setProfiles = _q[1];
1259
+ var _r = React__default["default"].useState([]), permissions = _r[0], setPermissions = _r[1];
1260
+ var _s = React__default["default"].useState([]), assignProfiles = _s[0], setAssignProfiles = _s[1];
1261
+ var _t = React__default["default"].useState([]), assignPermissions = _t[0], setAssignPermissions = _t[1];
1262
+ var _u = React__default["default"].useState([]), otherProfiles = _u[0], setOtherProfiles = _u[1];
1263
+ var _v = React__default["default"].useState([]), otherPermissions = _v[0], setOtherPermissions = _v[1];
1264
+ //functiuons
1265
+ var loadComponent = function () {
1266
+ var apiService = new MESApiService();
1267
+ setLoading(true);
1268
+ apiService.call('SEC.GetProfiles', [])
1269
+ .then(function (response) {
1270
+ if (apiService.hasErrors) {
1271
+ setShowError(true);
1272
+ setError(apiService.error);
1273
+ }
1274
+ if (response !== undefined && response.tables !== undefined && response.tables[0] !== undefined) {
1275
+ var mydataSource_1 = [];
1276
+ var rows = response.tables[0].rows;
1277
+ rows.forEach(function (row, index) {
1278
+ row.id = row.ProfileId;
1279
+ mydataSource_1 = __spreadArray(__spreadArray([], mydataSource_1, true), [row], false);
1280
+ });
1281
+ setDataSource(mydataSource_1);
1282
+ setProfiles(mydataSource_1);
1283
+ }
1284
+ setLoading(false);
1285
+ });
1286
+ var apiServcePermission = new MESApiService();
1287
+ apiServcePermission.call('SEC.GetPermissions', [])
1288
+ .then(function (response) {
1289
+ if (apiServcePermission.hasErrors) {
1290
+ setShowError(true);
1291
+ setError(apiService.error);
1292
+ }
1293
+ if (response !== undefined && response.tables !== undefined && response.tables[0] !== undefined) {
1294
+ var mydataSource_2 = [];
1295
+ var rows = response.tables[0].rows;
1296
+ rows.forEach(function (row) {
1297
+ mydataSource_2 = __spreadArray(__spreadArray([], mydataSource_2, true), [row], false);
1298
+ });
1299
+ setPermissions(mydataSource_2);
1300
+ }
1301
+ });
1302
+ };
1303
+ var setDefaultValues = function () {
1304
+ setTitle('');
1305
+ setProfileId(undefined);
1306
+ setProfileName('');
1307
+ setAssignPermissions([]);
1308
+ setAssignProfiles([]);
1309
+ setOtherProfiles([]);
1310
+ setOtherPermissions([]);
1311
+ setSelectedProfile([]);
1312
+ setSelectedOtherProfile([]);
1313
+ setSelectedPermission([]);
1314
+ setSelectedOtherPermission([]);
1315
+ };
1316
+ var newProfile = function () {
1317
+ setDefaultValues();
1318
+ setTitle('New Profile');
1319
+ setProfileId(0);
1320
+ setAssignPermissions([]);
1321
+ setAssignProfiles([]);
1322
+ setOtherProfiles(profiles);
1323
+ setOtherPermissions(permissions);
1324
+ setSelectedProfile([]);
1325
+ setSelectedOtherProfile([]);
1326
+ setSelectedPermission([]);
1327
+ setSelectedOtherPermission([]);
1328
+ };
1329
+ var cancelDetail = function () {
1330
+ setDefaultValues();
1331
+ };
1332
+ var saveDetail = function () {
1333
+ if (profileId >= 0) {
1334
+ var parameters = [];
1335
+ parameters.push({ name: "@ProfileId", value: (profileId === 0 ? null : profileId || null) });
1336
+ parameters.push({ name: "@ProfileName", value: (profileName === '' ? null : profileName) });
1337
+ var apiService_1 = new MESApiService();
1338
+ apiService_1.call('SEC.UpsertProfile', parameters)
1339
+ .then(function (response) {
1340
+ if (apiService_1.hasErrors) {
1341
+ setShowError(true);
1342
+ setError(apiService_1.error);
1343
+ return 0;
1344
+ }
1345
+ else {
1346
+ if (response !== undefined && response.tables !== undefined && response.tables[0] !== undefined) {
1347
+ var id = response.tables[0].rows[0] === undefined ? null : response.tables[0].rows[0].ProfileId || null;
1348
+ return id;
1349
+ }
1350
+ else {
1351
+ return 0;
1352
+ }
1353
+ }
1354
+ })
1355
+ .then(function (newProfileId) {
1356
+ if (newProfileId === 0)
1357
+ return newProfileId;
1358
+ var profileParam = '';
1359
+ assignProfiles.forEach(function (element) {
1360
+ profileParam = profileParam + element.ProfileId + ',';
1361
+ });
1362
+ var parametersProfile = [];
1363
+ parametersProfile.push({ name: "@ProfileId", value: (newProfileId === 0 ? null : newProfileId || null) });
1364
+ parametersProfile.push({ name: "@HasProfileIds", value: profileParam });
1365
+ var apiServiceProfile = new MESApiService();
1366
+ apiServiceProfile.call('SEC.SetProfilesToProfile', parametersProfile)
1367
+ .then(function (responseP) {
1368
+ if (apiServiceProfile.hasErrors) {
1369
+ setShowError(true);
1370
+ setError(apiServiceProfile.error);
1371
+ }
1372
+ });
1373
+ return newProfileId;
1374
+ })
1375
+ .then(function (newProfileId) {
1376
+ if (newProfileId === 0)
1377
+ return newProfileId;
1378
+ var permissionParam = '';
1379
+ assignPermissions.forEach(function (element) {
1380
+ permissionParam = permissionParam + element.PermissionId + ',';
1381
+ });
1382
+ var parametersPermission = [];
1383
+ parametersPermission.push({ name: "@ProfileId", value: (newProfileId === 0 ? null : newProfileId || null) });
1384
+ parametersPermission.push({ name: "@PermissionIds", value: permissionParam });
1385
+ var apiServicePermission = new MESApiService();
1386
+ apiServicePermission.call('SEC.SetPermissionsToProfile', parametersPermission)
1387
+ .then(function (responsePe) {
1388
+ if (apiServicePermission.hasErrors) {
1389
+ setShowError(true);
1390
+ setError(apiServicePermission.error);
1391
+ }
1392
+ setShowSuccess(true);
1393
+ setSuccessMessage('Profile was ' + (profileId === 0 ? ' created.' : ' updated.'));
1394
+ setDefaultValues();
1395
+ loadComponent();
1396
+ });
1397
+ })
1398
+ .then(function (newProfileId) {
1399
+ if (newProfileId === 0) {
1400
+ setShowSuccess(true);
1401
+ setSuccessMessage('Profile was ' + (profileId === 0 ? ' created.' : ' updated.'));
1402
+ setDefaultValues();
1403
+ loadComponent();
1404
+ }
1405
+ });
1406
+ }
1407
+ };
1408
+ var deleteDetail = function () {
1409
+ if (profileId && profileId > 0) {
1410
+ var parameters = [];
1411
+ parameters.push({ name: "@ProfileId", value: (profileId === 0 ? null : profileId || null) });
1412
+ var apiService_2 = new MESApiService();
1413
+ apiService_2.call('SEC.DeleteProfile', parameters)
1414
+ .then(function (response) {
1415
+ if (apiService_2.hasErrors) {
1416
+ setShowError(true);
1417
+ setError(apiService_2.error);
1418
+ }
1419
+ else {
1420
+ setShowSuccess(true);
1421
+ setSuccessMessage('Profile was deleted.');
1422
+ loadComponent();
1423
+ setDefaultValues();
1424
+ }
1425
+ });
1426
+ }
1427
+ };
1428
+ var rowClicked = function (rowClickedEvent) {
1429
+ var data = rowClickedEvent.row;
1430
+ if (data === undefined)
1431
+ return;
1432
+ if (data.id === profileId)
1433
+ return;
1434
+ setProfileId(data.ProfileId);
1435
+ setTitle(data.ProfileName || '');
1436
+ setProfileName(data.ProfileName || '');
1437
+ //permissions
1438
+ var permissionsId = (data.PermissionsId || '').split(',').filter(function (el) { return el.length; });
1439
+ var myPermissions = [];
1440
+ var restPermissions = [];
1441
+ permissions.forEach(function (element) {
1442
+ var permissionFound = permissionsId.find(function (permission) { return permission === element.PermissionId.toString(); });
1443
+ if (permissionFound === undefined)
1444
+ restPermissions.push(element);
1445
+ else
1446
+ myPermissions.push(element);
1447
+ });
1448
+ setAssignPermissions(myPermissions);
1449
+ setOtherPermissions(restPermissions);
1450
+ setSelectedOtherPermission([]);
1451
+ setSelectedPermission([]);
1452
+ //profiles
1453
+ var profilesId = (data.HasProfilesId || '').split(',').filter(function (el) { return el.length; });
1454
+ var myProfiles = [];
1455
+ var restProfiles = [];
1456
+ profiles.forEach(function (element) {
1457
+ var profileFound = profilesId.find(function (profile) { return profile === element.ProfileId.toString(); });
1458
+ if (profileFound === undefined)
1459
+ restProfiles.push(element);
1460
+ else
1461
+ myProfiles.push(element);
1462
+ });
1463
+ setAssignProfiles(myProfiles);
1464
+ setOtherProfiles(restProfiles);
1465
+ setSelectedOtherProfile([]);
1466
+ setSelectedProfile([]);
1467
+ };
1468
+ var addProfiles = function () {
1469
+ var myProfiles = assignProfiles || [];
1470
+ selectedOtherProfile.forEach(function (element) {
1471
+ var profileFound = profiles.find(function (profile) { return profile.ProfileId.toString() === element; });
1472
+ if (profileFound !== undefined) {
1473
+ myProfiles.push(profileFound);
1474
+ }
1475
+ });
1476
+ updateListProfiles(myProfiles);
1477
+ };
1478
+ var removeProfiles = function () {
1479
+ var myProfiles = assignProfiles || [];
1480
+ selectedProfile.forEach(function (element) {
1481
+ myProfiles = myProfiles.filter(function (item) {
1482
+ return item.ProfileId.toString() !== element;
1483
+ });
1484
+ });
1485
+ updateListProfiles(myProfiles);
1486
+ };
1487
+ var updateListProfiles = function (selectedProfiles) {
1488
+ var myProfiles = [];
1489
+ var restProfiles = [];
1490
+ profiles.forEach(function (element) {
1491
+ var profileFound = selectedProfiles.find(function (profile) { return profile.ProfileId === element.ProfileId; });
1492
+ if (profileFound === undefined)
1493
+ restProfiles.push(element);
1494
+ else
1495
+ myProfiles.push(element);
1496
+ });
1497
+ setAssignProfiles(myProfiles);
1498
+ setOtherProfiles(restProfiles);
1499
+ setSelectedProfile([]);
1500
+ setSelectedOtherProfile([]);
1501
+ };
1502
+ var addPermissions = function () {
1503
+ var myPermissions = assignPermissions || [];
1504
+ selectedOtherPermission.forEach(function (element) {
1505
+ var permissionFound = permissions.find(function (permission) { return permission.PermissionId.toString() === element; });
1506
+ if (permissionFound !== undefined) {
1507
+ myPermissions.push(permissionFound);
1508
+ }
1509
+ });
1510
+ updateListPermission(myPermissions);
1511
+ };
1512
+ var removePermissions = function () {
1513
+ var myPermissions = assignPermissions || [];
1514
+ selectedPermission.forEach(function (element) {
1515
+ myPermissions = myPermissions.filter(function (item) {
1516
+ return item.PermissionId.toString() !== element;
1517
+ });
1518
+ });
1519
+ updateListPermission(myPermissions);
1520
+ };
1521
+ var updateListPermission = function (selectedPermissions) {
1522
+ var myPermissions = [];
1523
+ var restPermissions = [];
1524
+ permissions.forEach(function (element) {
1525
+ var permissionFound = selectedPermissions.find(function (permission) { return permission.PermissionId === element.PermissionId; });
1526
+ if (permissionFound === undefined)
1527
+ restPermissions.push(element);
1528
+ else
1529
+ myPermissions.push(element);
1530
+ });
1531
+ setAssignPermissions(myPermissions);
1532
+ setOtherPermissions(restPermissions);
1533
+ setSelectedPermission([]);
1534
+ setSelectedOtherPermission([]);
1535
+ };
1536
+ var closeMessage = function () {
1537
+ setTimeout(function () {
1538
+ setShowSuccess(false);
1539
+ setSuccessMessage('');
1540
+ }, 2000);
1541
+ };
1542
+ // effects
1543
+ React__default["default"].useEffect(function () {
1544
+ loadComponent();
1545
+ }, []);
1546
+ React__default["default"].useEffect(function () {
1547
+ if (showSuccess) {
1548
+ closeMessage();
1549
+ }
1550
+ }, [showSuccess]); // eslint-disable-line react-hooks/exhaustive-deps
1551
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
1552
+ React__default["default"].createElement(reactBootstrap.Alert, { show: showError, variant: "danger", dismissible: true, onClose: function () { setShowError(false); setError(undefined); } },
1553
+ React__default["default"].createElement("strong", null, "There was an error"),
1554
+ React__default["default"].createElement("p", null,
1555
+ " ",
1556
+ error === undefined ? 'There was an error' :
1557
+ (error.internalError.message === undefined ? error.internalError : error.internalError.message))),
1558
+ React__default["default"].createElement(reactBootstrap.Alert, { show: showSuccess, variant: "success" },
1559
+ React__default["default"].createElement("p", null, successMessage || 'Operation was success')),
1560
+ React__default["default"].createElement("div", { className: "row" },
1561
+ React__default["default"].createElement(core.Typography, { className: "mx-2 mt-0 mb-2 font-weight-bold" }, "Profile Management")),
1562
+ React__default["default"].createElement("div", { className: "row" },
1563
+ React__default["default"].createElement("div", { className: "col-md-6" },
1564
+ React__default["default"].createElement("div", { className: "text-right" },
1565
+ React__default["default"].createElement("button", { className: "btn btn-success", onClick: newProfile, disabled: profileId === 0 }, "New")),
1566
+ React__default["default"].createElement(DataGridControl, { columns: columns, rows: dataSource, pageSize: 20, rowHeight: 30, loading: loading, rowsPerPageOptions: [10, 20, 50, 100], page: page, className: "mes-selectable-datagrid", onRowClick: rowClicked, onPageChange: function (params) { setPage(params.page); } })),
1567
+ React__default["default"].createElement("div", { className: "col-md-6" }, (profileId && profileId >= 0) &&
1568
+ /* @ts-ignore */
1569
+ React__default["default"].createElement(MasterDetailPanel, { title: title, saveStatus: true, showDelete: true, deleteStatus: profileId > 0, onCancel: cancelDetail, onSave: saveDetail, onDelete: deleteDetail },
1570
+ React__default["default"].createElement("div", { className: "row" },
1571
+ React__default["default"].createElement("div", { className: "col-md-6 px-3 py-1" },
1572
+ React__default["default"].createElement(SimpleTextControl, { title: "Name", styleLabel: { 'minWidth': '150px' }, onChange: setProfileName, name: 'profileName', value: profileName }))),
1573
+ React__default["default"].createElement("div", { className: "row" }),
1574
+ React__default["default"].createElement("div", { className: "row" },
1575
+ React__default["default"].createElement(core.Typography, { gutterBottom: true, variant: "h5", component: "h2", className: "ml-3 pt-1" }, "Permissions")),
1576
+ React__default["default"].createElement("div", { className: "row" },
1577
+ React__default["default"].createElement("div", { className: "col-md-5" },
1578
+ React__default["default"].createElement(MultipleSelectorControl, { title: "Available", value: selectedOtherPermission, onChange: setSelectedOtherPermission, onDoubleClick: addPermissions, dataSource: otherPermissions, valueField: "PermissionId", textField: "PermissionName" })),
1579
+ React__default["default"].createElement("div", { className: "col-md-2 d-flex flex-column align-items-center m-auto" },
1580
+ React__default["default"].createElement("button", { className: "btn btn-primary mes-button-primary my-2", title: "Assign", disabled: (selectedOtherPermission || []).length === 0, onClick: addPermissions },
1581
+ React__default["default"].createElement("i", { className: "fas fa-angle-right" })),
1582
+ React__default["default"].createElement("button", { className: "btn btn-primary mes-button-primary my-2", title: "Remove", disabled: (selectedPermission || []).length === 0, onClick: removePermissions },
1583
+ React__default["default"].createElement("i", { className: "fas fa-angle-left" }))),
1584
+ React__default["default"].createElement("div", { className: "col-md-5" },
1585
+ React__default["default"].createElement(MultipleSelectorControl, { title: "Assigned", value: selectedPermission, onChange: setSelectedPermission, onDoubleClick: removePermissions, dataSource: assignPermissions, valueField: "PermissionId", textField: "PermissionName" }))),
1586
+ React__default["default"].createElement("div", { className: "row" },
1587
+ React__default["default"].createElement(core.Typography, { gutterBottom: true, variant: "h5", component: "h2", className: "ml-3 pt-1" }, "Profiles")),
1588
+ React__default["default"].createElement("div", { className: "row" },
1589
+ React__default["default"].createElement("div", { className: "col-md-5" },
1590
+ React__default["default"].createElement(MultipleSelectorControl, { title: "Available", value: selectedOtherProfile, onChange: setSelectedOtherProfile, onDoubleClick: addProfiles, dataSource: otherProfiles, valueField: "ProfileId", textField: "ProfileName" })),
1591
+ React__default["default"].createElement("div", { className: "col-md-2 d-flex flex-column align-items-center m-auto" },
1592
+ React__default["default"].createElement("button", { className: "btn btn-primary mes-button-primary my-2", title: "Assign", disabled: (selectedOtherProfile || []).length === 0, onClick: addProfiles },
1593
+ React__default["default"].createElement("i", { className: "fas fa-angle-right" })),
1594
+ React__default["default"].createElement("button", { className: "btn btn-primary mes-button-primary my-2", title: "Remove", disabled: (selectedProfile || []).length === 0, onClick: removeProfiles },
1595
+ React__default["default"].createElement("i", { className: "fas fa-angle-left" }))),
1596
+ React__default["default"].createElement("div", { className: "col-md-5" },
1597
+ React__default["default"].createElement(MultipleSelectorControl, { title: "Assigned", value: selectedProfile, onChange: setSelectedProfile, onDoubleClick: removeProfiles, dataSource: assignProfiles, valueField: "ProfileId", textField: "ProfileName" }))))))));
1598
+ }
1599
+
1600
+ var CurrencyFormatter = new Intl.NumberFormat('en-US', {
1601
+ style: 'currency',
1602
+ currency: 'USD'
1603
+ });
1604
+ var NumberFormatter = new Intl.NumberFormat('en-US', {
1605
+ style: 'currency',
1606
+ currency: 'USD'
1607
+ });
1608
+ var IntegerFormatter = new Intl.NumberFormat('en-US', {});
1609
+ var DateTimeFormatter = new Intl.DateTimeFormat('en-US-u-hc-h23', {
1610
+ year: 'numeric',
1611
+ month: '2-digit',
1612
+ day: '2-digit',
1613
+ hour: 'numeric',
1614
+ minute: 'numeric',
1615
+ second: 'numeric',
1616
+ hour12: false
1617
+ });
1618
+ var DateFormatter = new Intl.DateTimeFormat('en-US', {
1619
+ year: 'numeric',
1620
+ month: '2-digit',
1621
+ day: '2-digit'
1622
+ });
1623
+ var TimeFormatter = new Intl.DateTimeFormat('en-US-u-hc-h23', {
1624
+ hour: '2-digit',
1625
+ minute: 'numeric',
1626
+ second: 'numeric',
1627
+ hour12: false
1628
+ });
1629
+
1630
+ function ShiftCrew() {
1631
+ var columns = [
1632
+ { field: 'PatternStart', headerName: 'Pattern Start', width: 200, type: 'string', valueFormatter: function (_a) {
1633
+ var value = _a.value;
1634
+ return DateTimeFormatter.format(value);
1635
+ } },
1636
+ { field: 'ShiftCodes', headerName: 'Shift Codes', width: 150, type: 'string' },
1637
+ { field: 'Crews', headerName: 'Crews', width: 200, type: 'string' },
1638
+ { field: 'PatternDays', headerName: 'Pattern Days', flex: 1, type: 'number' },
1639
+ ];
1640
+ var _a = React__default["default"].useState([]), dataSource = _a[0], setDataSource = _a[1];
1641
+ var _b = React__default["default"].useState(false), showError = _b[0], setShowError = _b[1];
1642
+ var _c = React__default["default"].useState(false), loading = _c[0], setLoading = _c[1];
1643
+ var _d = React__default["default"].useState(0), page = _d[0], setPage = _d[1];
1644
+ var _e = React__default["default"].useState(undefined), error = _e[0], setError = _e[1];
1645
+ var _f = React__default["default"].useState(false), showSuccess = _f[0], setShowSuccess = _f[1];
1646
+ var _g = React__default["default"].useState(''), successMessage = _g[0], setSuccessMessage = _g[1];
1647
+ var _h = React__default["default"].useState(new Date()), startDate = _h[0], setStartDate = _h[1];
1648
+ var _j = React__default["default"].useState(0), shiftDay = _j[0], changeShiftDay = _j[1];
1649
+ var _k = React__default["default"].useState(''), shiftId = _k[0], changeShiftId = _k[1];
1650
+ var _l = React__default["default"].useState(0), crewNumber = _l[0], setCrewNumber = _l[1];
1651
+ var _m = React__default["default"].useState(''), crewId = _m[0], setCrewId = _m[1];
1652
+ var _o = React__default["default"].useState(''), comment = _o[0], setCommment = _o[1];
1653
+ var _p = React__default["default"].useState(0), rotationNumber = _p[0], setRotationNumber = _p[1];
1654
+ var _q = React__default["default"].useState(0), rotationCrewNumber = _q[0], setRotationCrewNumber = _q[1];
1655
+ var _r = React__default["default"].useState(''), rotationCrew = _r[0], setRotationCrew = _r[1];
1656
+ var _s = React__default["default"].useState(-1), dataId = _s[0], setDataId = _s[1];
1657
+ var _t = React__default["default"].useState(false), canEdit = _t[0], setCanEdit = _t[1];
1658
+ var _u = React__default["default"].useState(false), canView = _u[0], setCanView = _u[1];
1659
+ var _v = React__default["default"].useState(''), title = _v[0], setTitle = _v[1];
1660
+ //functions
1661
+ var loadComponent = function () {
1662
+ var apiService = new MESApiService();
1663
+ setLoading(true);
1664
+ apiService.call('MES.GetShiftParameters', [])
1665
+ .then(function (response) {
1666
+ if (apiService.hasErrors) {
1667
+ setShowError(true);
1668
+ setError(apiService.error);
1669
+ }
1670
+ if (response !== undefined && response.tables !== undefined && response.tables[0] !== undefined) {
1671
+ var mydataSource_1 = [];
1672
+ var rows = response.tables[0].rows;
1673
+ rows.forEach(function (row, index) {
1674
+ row.id = index;
1675
+ row.PatternStart = row.PatternStart === null ? null : new Date(row.PatternStart);
1676
+ mydataSource_1 = __spreadArray(__spreadArray([], mydataSource_1, true), [row], false);
1677
+ });
1678
+ setDataSource(mydataSource_1);
1679
+ }
1680
+ setLoading(false);
1681
+ });
1682
+ };
1683
+ var changeData = function (value, name) {
1684
+ if (name === 'shiftDay') {
1685
+ changeShiftDay(value);
1686
+ }
1687
+ else if (name === 'shiftId') {
1688
+ changeShiftId(value.toString().toUpperCase());
1689
+ }
1690
+ else if (name === 'crewNumber') {
1691
+ setCrewNumber(value);
1692
+ }
1693
+ else if (name === 'crewId') {
1694
+ setCrewId(value.toString().toUpperCase());
1695
+ }
1696
+ else if (name === 'rotationNumber') {
1697
+ setRotationNumber(value);
1698
+ }
1699
+ else if (name === 'rotationCrew') {
1700
+ var valueCharacters = Array.from(value.toString());
1701
+ var isValid_1 = true;
1702
+ valueCharacters.forEach(function (element) {
1703
+ var indexOf = crewId.indexOf(element.toUpperCase());
1704
+ if (indexOf === -1)
1705
+ isValid_1 = false;
1706
+ });
1707
+ if (isValid_1)
1708
+ setRotationCrew(value.toString().toUpperCase());
1709
+ }
1710
+ };
1711
+ var newParameter = function () {
1712
+ setTitle('New Shift/Crew');
1713
+ setCanEdit(true);
1714
+ setDefaultValues();
1715
+ };
1716
+ var cancelDetail = function () {
1717
+ setTitle('');
1718
+ setCanEdit(false);
1719
+ setCanView(false);
1720
+ setDefaultValues();
1721
+ };
1722
+ var setDefaultValues = function () {
1723
+ setStartDate(new Date());
1724
+ changeShiftDay(0);
1725
+ changeShiftId('');
1726
+ setCrewNumber(0);
1727
+ setCrewId('');
1728
+ setRotationNumber(0);
1729
+ setRotationCrewNumber(0);
1730
+ setRotationCrew('');
1731
+ setDataId(-1);
1732
+ setCommment('');
1733
+ setTitle('');
1734
+ };
1735
+ var rowClicked = function (rowClickedEvent) {
1736
+ var data = rowClickedEvent.row;
1737
+ if (data === undefined)
1738
+ return;
1739
+ if (data.id === dataId)
1740
+ return;
1741
+ setStartDate(data.PatternStart);
1742
+ changeShiftDay(data.ShiftCodes.length);
1743
+ changeShiftId(data.ShiftCodes);
1744
+ setCrewNumber(data.Crews.length);
1745
+ setCrewId(data.Crews);
1746
+ setRotationNumber(data.PatternDays);
1747
+ // setRotationCrewNumber(row.data.PatternStart);
1748
+ setRotationCrew(data.CrewRotation);
1749
+ setDataId(data.id);
1750
+ setCommment(data.Comments);
1751
+ if (data.CanEdit === true)
1752
+ setCanEdit(true);
1753
+ else
1754
+ setCanView(true);
1755
+ };
1756
+ var deleteDetail = function () {
1757
+ if (canEdit && dataId >= 0) {
1758
+ var parameters = [];
1759
+ parameters.push({ name: "@PatternStart", value: JSON.parse(JSON.stringify(startDate)) });
1760
+ var apiService_1 = new MESApiService();
1761
+ apiService_1.call('MES.DeleteShiftParameters', parameters)
1762
+ .then(function (response) {
1763
+ if (apiService_1.hasErrors) {
1764
+ setShowError(true);
1765
+ setError(apiService_1.error);
1766
+ }
1767
+ else {
1768
+ setShowSuccess(true);
1769
+ setSuccessMessage('Shift code was deleted');
1770
+ loadComponent();
1771
+ setDefaultValues();
1772
+ setCanEdit(false);
1773
+ setCanView(false);
1774
+ }
1775
+ });
1776
+ }
1777
+ };
1778
+ var saveDetail = function () {
1779
+ if (canEdit) {
1780
+ var parameters = [];
1781
+ parameters.push({ name: "@PatternStart", value: JSON.parse(JSON.stringify(startDate)) });
1782
+ parameters.push({ name: "@ShiftCodes", value: (shiftId === '' ? null : shiftId) });
1783
+ parameters.push({ name: "@Crews", value: (crewId === '' ? null : crewId) });
1784
+ parameters.push({ name: "@CrewRotation", value: (rotationCrew === '' ? null : rotationCrew) });
1785
+ parameters.push({ name: "@Comments", value: (comment === '' ? null : comment) });
1786
+ var apiService_2 = new MESApiService();
1787
+ apiService_2.call('MES.UpsertShiftParameters', parameters)
1788
+ .then(function (response) {
1789
+ if (apiService_2.hasErrors) {
1790
+ setShowError(true);
1791
+ setError(apiService_2.error);
1792
+ }
1793
+ else {
1794
+ loadComponent();
1795
+ setDefaultValues();
1796
+ setShowSuccess(true);
1797
+ setSuccessMessage('Shift code was updated');
1798
+ setCanEdit(false);
1799
+ setCanView(false);
1800
+ }
1801
+ });
1802
+ }
1803
+ };
1804
+ var closeMessage = function () {
1805
+ setTimeout(function () {
1806
+ setShowSuccess(false);
1807
+ setSuccessMessage('');
1808
+ }, 2000);
1809
+ };
1810
+ //efects
1811
+ React__default["default"].useEffect(function () {
1812
+ setRotationCrewNumber(shiftDay * rotationNumber);
1813
+ }, [rotationNumber]); // eslint-disable-line react-hooks/exhaustive-deps
1814
+ React__default["default"].useEffect(function () {
1815
+ changeShiftId(shiftId.substring(0, shiftDay));
1816
+ setRotationCrewNumber(shiftDay * rotationNumber);
1817
+ }, [shiftDay]); // eslint-disable-line react-hooks/exhaustive-deps
1818
+ React__default["default"].useEffect(function () {
1819
+ setCrewId(crewId.substring(0, crewNumber));
1820
+ // setRotationCrew('');
1821
+ }, [crewNumber]); // eslint-disable-line react-hooks/exhaustive-deps
1822
+ React__default["default"].useEffect(function () {
1823
+ //setRotationCrew('');
1824
+ }, [crewId]);
1825
+ React__default["default"].useEffect(function () {
1826
+ // setRotationCrew(rotationCrew.substring(0,rotationCrewNumber));
1827
+ }, [rotationCrewNumber]);
1828
+ React__default["default"].useEffect(function () {
1829
+ if (showSuccess) {
1830
+ closeMessage();
1831
+ }
1832
+ }, [showSuccess]); // eslint-disable-line react-hooks/exhaustive-deps
1833
+ React__default["default"].useEffect(loadComponent, []);
1834
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
1835
+ React__default["default"].createElement(reactBootstrap.Alert, { show: showError, variant: "danger", dismissible: true, onClose: function () { setShowError(false); setError(undefined); } },
1836
+ React__default["default"].createElement("strong", null, "There was an error"),
1837
+ React__default["default"].createElement("p", null,
1838
+ " ",
1839
+ error === undefined ? 'There was an error' :
1840
+ (error.internalError.message === undefined ? error.internalError : error.internalError.message))),
1841
+ React__default["default"].createElement(reactBootstrap.Alert, { show: showSuccess, variant: "success" },
1842
+ React__default["default"].createElement("p", null, successMessage || 'Operation was success')),
1843
+ React__default["default"].createElement("div", { className: "row" },
1844
+ React__default["default"].createElement(core.Typography, { className: "mx-2 mt-0 mb-2 font-weight-bold" }, "Shift / Crew")),
1845
+ React__default["default"].createElement("div", { className: "row" },
1846
+ React__default["default"].createElement("div", { className: "col-md-6" },
1847
+ React__default["default"].createElement("div", { className: "text-right" },
1848
+ React__default["default"].createElement("button", { className: "btn btn-success", onClick: newParameter, disabled: canEdit }, "New")),
1849
+ React__default["default"].createElement(DataGridControl, { columns: columns, rows: dataSource, pageSize: 20, rowHeight: 30, loading: loading, rowsPerPageOptions: [10, 20, 50, 100], page: page, className: "mes-selectable-datagrid", onRowClick: rowClicked, onPageChange: function (params) { setPage(params.page); } })),
1850
+ React__default["default"].createElement("div", { className: "col-md-6" }, (canView || canEdit) &&
1851
+ /* @ts-ignore */
1852
+ React__default["default"].createElement(MasterDetailPanel, { title: title, saveStatus: canEdit, showDelete: true, deleteStatus: dataId >= 0, onCancel: cancelDetail, onSave: saveDetail, onDelete: deleteDetail },
1853
+ React__default["default"].createElement("div", { className: "row" },
1854
+ React__default["default"].createElement("div", { className: "col-md-8 px-3 py-1" },
1855
+ React__default["default"].createElement(DateTimeControl, { value: startDate, onChange: setStartDate, styleLabel: { 'minWidth': '150px' }, title: "Start", name: startDate }))),
1856
+ React__default["default"].createElement("div", { className: "row" },
1857
+ React__default["default"].createElement("div", { className: "col-md-6 px-3 py-1" },
1858
+ React__default["default"].createElement(NumericTextControl, { styleLabel: { 'minWidth': '150px' }, title: "# Shift per day", onChange: changeData, value: shiftDay, name: "shiftDay", isNumeric: true, typeNumber: 3 })),
1859
+ React__default["default"].createElement("div", { className: "col-md-6 px-3 py-1" },
1860
+ React__default["default"].createElement(SimpleTextControl, { styleLabel: { 'minWidth': '150px' }, title: "Shift IDs", onChange: changeData, name: 'shiftId', value: shiftId, readOnly: (shiftDay === 0), lengthCharacters: shiftDay }))),
1861
+ React__default["default"].createElement("div", { className: "row" },
1862
+ React__default["default"].createElement("div", { className: "col-md-6 px-3 py-1" },
1863
+ React__default["default"].createElement(NumericTextControl, { styleLabel: { 'minWidth': '150px' }, title: "# Crews", onChange: changeData, name: "crewNumber", value: crewNumber, isNumeric: true, typeNumber: 3 })),
1864
+ React__default["default"].createElement("div", { className: "col-md-6 px-3 py-1" },
1865
+ React__default["default"].createElement(SimpleTextControl, { styleLabel: { 'minWidth': '150px' }, title: "Crew IDs", onChange: changeData, name: 'crewId', value: crewId, readOnly: (crewNumber === 0), lengthCharacters: crewNumber }))),
1866
+ React__default["default"].createElement("div", { className: "row" },
1867
+ React__default["default"].createElement("div", { className: "col-md-6 px-3 py-1" },
1868
+ React__default["default"].createElement(NumericTextControl, { styleLabel: { 'minWidth': '150px' }, title: "Rotation Pattern", onChange: changeData, name: "rotationNumber", value: rotationNumber, isNumeric: true, typeNumber: 3 }))),
1869
+ React__default["default"].createElement("div", { className: "row" },
1870
+ React__default["default"].createElement("div", { className: "col-md-12 px-3 py-1" },
1871
+ React__default["default"].createElement(SimpleTextControl, { title: "Crew rotation", styleLabel: { 'minWidth': '150px' }, onChange: changeData, name: 'rotationCrew', value: rotationCrew, readOnly: rotationCrewNumber === 0, lengthCharacters: rotationCrewNumber }))),
1872
+ React__default["default"].createElement("div", { className: "row" },
1873
+ React__default["default"].createElement("div", { className: "col-md-12 px-3 pt-5" },
1874
+ React__default["default"].createElement(SimpleTextAreaControl, { value: comment, onChange: setCommment, title: "Comments", name: "Comments", styleLabel: { 'minWidth': '150px' } }))))))));
1875
+ }
1876
+
1877
+ function ChangePassword(props) {
1878
+ var onClose = props.onClose, userId = props.userId, open = props.open;
1879
+ //states
1880
+ var _a = React__default["default"].useState(''), password = _a[0], setPassword = _a[1];
1881
+ var _b = React__default["default"].useState(''), confirmPassword = _b[0], setConfirmPassword = _b[1];
1882
+ var _c = React__default["default"].useState(false), canChange = _c[0], setCanChange = _c[1];
1883
+ var _d = React__default["default"].useState(false), showError = _d[0], setShowError = _d[1];
1884
+ var _e = React__default["default"].useState(undefined), error = _e[0], setError = _e[1];
1885
+ //functions
1886
+ var handleCancel = function () {
1887
+ onClose(false);
1888
+ };
1889
+ var handleOk = function () {
1890
+ if (userId >= 0) {
1891
+ var apiService_1 = new MESApiService();
1892
+ apiService_1.changePassword(userId, password)
1893
+ .then(function (response) {
1894
+ if (apiService_1.hasErrors) {
1895
+ setShowError(true);
1896
+ setError(apiService_1.error);
1897
+ }
1898
+ else {
1899
+ onClose(true);
1900
+ }
1901
+ });
1902
+ }
1903
+ else {
1904
+ onClose(false);
1905
+ }
1906
+ };
1907
+ //efects
1908
+ React__default["default"].useEffect(function () {
1909
+ setCanChange((password === confirmPassword) && password.length > 0);
1910
+ }, [password, confirmPassword]);
1911
+ React__default["default"].useEffect(function () {
1912
+ setPassword('');
1913
+ setConfirmPassword('');
1914
+ }, [userId, open]);
1915
+ return (React__default["default"].createElement(Dialog__default["default"], { onClose: function (event, reason) { return null; }, "aria-label": "Change Password", maxWidth: "xs", "aria-labelledby": "confirmation-dialog-title", open: open },
1916
+ React__default["default"].createElement(DialogTitle__default["default"], { id: "confirmation-dialog-title" }, "Change Password"),
1917
+ React__default["default"].createElement(DialogContent__default["default"], { dividers: true },
1918
+ React__default["default"].createElement(reactBootstrap.Alert, { show: showError, variant: "danger", dismissible: true, onClose: function () { setShowError(false); setError(undefined); } },
1919
+ React__default["default"].createElement("strong", null, "There was an error"),
1920
+ React__default["default"].createElement("p", null,
1921
+ " ",
1922
+ error === undefined ? 'There was an error' :
1923
+ (error.internalError.message === undefined ? error.internalError : error.internalError.message))),
1924
+ React__default["default"].createElement("div", { className: "row" },
1925
+ React__default["default"].createElement("div", { className: "col-md-12 px-3 py-1" },
1926
+ React__default["default"].createElement(SimplePasswordControl, { title: "Password", styleLabel: { 'minWidth': '150px' }, onChange: setPassword, name: 'password', value: password }))),
1927
+ React__default["default"].createElement("div", { className: "row" },
1928
+ React__default["default"].createElement("div", { className: "col-md-12 px-3 py-1" },
1929
+ React__default["default"].createElement(SimplePasswordControl, { title: "Confirm Password", styleLabel: { 'minWidth': '150px' }, onChange: setConfirmPassword, name: 'confirmPassword', value: confirmPassword })))),
1930
+ React__default["default"].createElement(DialogActions__default["default"], null,
1931
+ React__default["default"].createElement(Button__default["default"], { autoFocus: true, onClick: handleCancel, color: "primary" }, "Cancel"),
1932
+ React__default["default"].createElement(Button__default["default"], { onClick: handleOk, color: "primary", disabled: !canChange }, "Change Password"))));
1933
+ }
1934
+
1935
+ function UserManagment() {
1936
+ // variables
1937
+ var columns = [
1938
+ { field: 'UserName', headerName: 'Username', width: 200, type: 'string' },
1939
+ { field: 'FirstName', headerName: 'Name', width: 150, type: 'string' },
1940
+ { field: 'LastName', headerName: 'Lastname', width: 200, type: 'string' },
1941
+ ];
1942
+ //states
1943
+ var _a = React__default["default"].useState(undefined), userId = _a[0], setUserId = _a[1];
1944
+ var _b = React__default["default"].useState(''), userName = _b[0], setUserName = _b[1];
1945
+ var _c = React__default["default"].useState(''), userFirstName = _c[0], setUserFirstName = _c[1];
1946
+ var _d = React__default["default"].useState(''), userLastName = _d[0], setUserLastName = _d[1];
1947
+ var _e = React__default["default"].useState(false), userIsActive = _e[0], setUserIsActive = _e[1];
1948
+ var _f = React__default["default"].useState(false), userIsDomain = _f[0], setUserIsDomain = _f[1];
1949
+ var _g = React__default["default"].useState([]), selectedUserProfile = _g[0], setSelectedUserProfile = _g[1];
1950
+ var _h = React__default["default"].useState([]), selectedProfile = _h[0], setSelectedProfile = _h[1];
1951
+ var _j = React__default["default"].useState(''), title = _j[0], setTitle = _j[1];
1952
+ var _k = React__default["default"].useState(false), showError = _k[0], setShowError = _k[1];
1953
+ var _l = React__default["default"].useState(undefined), error = _l[0], setError = _l[1];
1954
+ var _m = React__default["default"].useState(false), showSuccess = _m[0], setShowSuccess = _m[1];
1955
+ var _o = React__default["default"].useState(''), successMessage = _o[0], setSuccessMessage = _o[1];
1956
+ var _p = React__default["default"].useState(0), page = _p[0], setPage = _p[1];
1957
+ var _q = React__default["default"].useState(false), loading = _q[0], setLoading = _q[1];
1958
+ var _r = React__default["default"].useState([]), dataSource = _r[0], setDataSource = _r[1];
1959
+ var _s = React__default["default"].useState(false), open = _s[0], setOpen = _s[1];
1960
+ var _t = React__default["default"].useState([]), profiles = _t[0], setProfiles = _t[1];
1961
+ var _u = React__default["default"].useState([]), userProfiles = _u[0], setUserProfiles = _u[1];
1962
+ var _v = React__default["default"].useState([]), otherProfiles = _v[0], setOtherProfiles = _v[1];
1963
+ //functions
1964
+ var loadComponent = function () {
1965
+ var apiService = new MESApiService();
1966
+ setLoading(true);
1967
+ apiService.call('SEC.GetUsers', [])
1968
+ .then(function (response) {
1969
+ if (apiService.hasErrors) {
1970
+ setShowError(true);
1971
+ setError(apiService.error);
1972
+ }
1973
+ if (response !== undefined && response.tables !== undefined && response.tables[0] !== undefined) {
1974
+ var mydataSource_1 = [];
1975
+ var rows = response.tables[0].rows;
1976
+ rows.forEach(function (row) {
1977
+ row.id = row.UserId;
1978
+ mydataSource_1 = __spreadArray(__spreadArray([], mydataSource_1, true), [row], false);
1979
+ });
1980
+ setDataSource(mydataSource_1);
1981
+ }
1982
+ setLoading(false);
1983
+ });
1984
+ var apiServceProfiles = new MESApiService();
1985
+ apiServceProfiles.call('SEC.GetProfiles', [])
1986
+ .then(function (response) {
1987
+ if (apiService.hasErrors) {
1988
+ setShowError(true);
1989
+ setError(apiService.error);
1990
+ }
1991
+ if (response !== undefined && response.tables !== undefined && response.tables[0] !== undefined) {
1992
+ var mydataSource_2 = [];
1993
+ var rows = response.tables[0].rows;
1994
+ rows.forEach(function (row) {
1995
+ mydataSource_2 = __spreadArray(__spreadArray([], mydataSource_2, true), [row], false);
1996
+ });
1997
+ setProfiles(mydataSource_2);
1998
+ }
1999
+ });
2000
+ };
2001
+ var rowClicked = function (rowClickedEvent) {
2002
+ var data = rowClickedEvent.row;
2003
+ if (data === undefined)
2004
+ return;
2005
+ if (data.id === userId)
2006
+ return;
2007
+ setTitle(data.UserName || '');
2008
+ setUserId(data.UserId);
2009
+ setUserName(data.UserName || '');
2010
+ setUserFirstName(data.FirstName || '');
2011
+ setUserLastName(data.LastName || '');
2012
+ setUserIsActive(data.IsActive || false);
2013
+ setUserIsDomain(data.IsDomainUser || false);
2014
+ var profilesId = (data.ProfilesId || '').split(',').filter(function (el) { return el.length !== 0; });
2015
+ var myProfiles = [];
2016
+ var restProfiles = [];
2017
+ profiles.forEach(function (element) {
2018
+ var profileFound = profilesId.find(function (profile) { return profile === element.ProfileId.toString(); });
2019
+ if (profileFound === undefined)
2020
+ restProfiles.push(element);
2021
+ else
2022
+ myProfiles.push(element);
2023
+ });
2024
+ setUserProfiles(myProfiles);
2025
+ setOtherProfiles(restProfiles);
2026
+ setSelectedUserProfile([]);
2027
+ setSelectedProfile([]);
2028
+ };
2029
+ var setDefaultValues = function () {
2030
+ setTitle('');
2031
+ setUserId(undefined);
2032
+ setUserName('');
2033
+ setUserFirstName('');
2034
+ setUserLastName('');
2035
+ setUserIsActive(false);
2036
+ setUserIsDomain(false);
2037
+ setUserProfiles([]);
2038
+ setOtherProfiles([]);
2039
+ setSelectedUserProfile([]);
2040
+ setSelectedProfile([]);
2041
+ };
2042
+ var cancelDetail = function () {
2043
+ setDefaultValues();
2044
+ };
2045
+ var deleteDetail = function () {
2046
+ if (userId && userId > 0) {
2047
+ var parameters = [];
2048
+ parameters.push({ name: "@UserId", value: (userId === 0 ? null : userId || null) });
2049
+ var apiService_1 = new MESApiService();
2050
+ apiService_1.call('SEC.DeleteUser', parameters)
2051
+ .then(function (response) {
2052
+ if (apiService_1.hasErrors) {
2053
+ setShowError(true);
2054
+ setError(apiService_1.error);
2055
+ }
2056
+ else {
2057
+ setShowSuccess(true);
2058
+ setSuccessMessage('User was deleted.');
2059
+ loadComponent();
2060
+ setDefaultValues();
2061
+ }
2062
+ });
2063
+ }
2064
+ };
2065
+ var saveDetail = function () {
2066
+ // @ts-ignore
2067
+ if (userId >= 0) {
2068
+ var parameters = [];
2069
+ parameters.push({ name: "@UserId", value: (userId === 0 ? null : userId || null) });
2070
+ parameters.push({ name: "@UserName", value: (userName === '' ? null : userName) });
2071
+ parameters.push({ name: "@Name", value: (userFirstName === '' ? null : userFirstName) });
2072
+ parameters.push({ name: "@LastName", value: (userLastName === '' ? null : userLastName) });
2073
+ parameters.push({ name: "@IsDomainUser", value: userIsDomain });
2074
+ parameters.push({ name: "@IsActive", value: userIsActive });
2075
+ var apiService_2 = new MESApiService();
2076
+ apiService_2.call('SEC.UpsertUser', parameters)
2077
+ .then(function (response) {
2078
+ if (apiService_2.hasErrors) {
2079
+ setShowError(true);
2080
+ setError(apiService_2.error);
2081
+ }
2082
+ else {
2083
+ if (response !== undefined && response.tables !== undefined && response.tables[0] !== undefined) {
2084
+ var idUser = response.tables[0].rows[0] === undefined ? null : response.tables[0].rows[0].UserId || null;
2085
+ if ((userProfiles || []).length === 0) {
2086
+ loadComponent();
2087
+ setDefaultValues();
2088
+ setShowSuccess(true);
2089
+ setSuccessMessage('User was ' + (userId === 0 ? ' created.' : ' updated.'));
2090
+ return;
2091
+ }
2092
+ var profileParam_1 = '';
2093
+ userProfiles.forEach(function (element) {
2094
+ profileParam_1 = profileParam_1 + element.ProfileId + ',';
2095
+ });
2096
+ var parametersProfile = [];
2097
+ parametersProfile.push({ name: "@UserId", value: (idUser === 0 ? null : idUser || null) });
2098
+ parametersProfile.push({ name: "@ProfileIds", value: profileParam_1 });
2099
+ var apiServiceProfile_1 = new MESApiService();
2100
+ apiServiceProfile_1.call('SEC.SetProfilesToUser', parametersProfile)
2101
+ .then(function (responseP) {
2102
+ if (apiServiceProfile_1.hasErrors) {
2103
+ setShowError(true);
2104
+ setError(apiServiceProfile_1.error);
2105
+ }
2106
+ setShowSuccess(true);
2107
+ setSuccessMessage('User was ' + (userId === 0 ? ' created.' : ' updated.'));
2108
+ loadComponent();
2109
+ setDefaultValues();
2110
+ });
2111
+ }
2112
+ else {
2113
+ loadComponent();
2114
+ setDefaultValues();
2115
+ }
2116
+ }
2117
+ });
2118
+ }
2119
+ };
2120
+ var newUser = function () {
2121
+ setDefaultValues();
2122
+ setTitle('New User');
2123
+ setUserId(0);
2124
+ setUserProfiles([]);
2125
+ setOtherProfiles(profiles);
2126
+ setSelectedUserProfile([]);
2127
+ setSelectedProfile([]);
2128
+ };
2129
+ var changePassword = function () {
2130
+ setOpen(true);
2131
+ };
2132
+ var closeChangePassword = function (flag) {
2133
+ if (flag) {
2134
+ setShowSuccess(true);
2135
+ setSuccessMessage('Password was changed.');
2136
+ }
2137
+ setOpen(false);
2138
+ };
2139
+ var addProfiles = function () {
2140
+ var myProfiles = userProfiles || [];
2141
+ selectedProfile.forEach(function (element) {
2142
+ var profileFound = profiles.find(function (profile) { return profile.ProfileId.toString() === element; });
2143
+ if (profileFound !== undefined) {
2144
+ myProfiles.push(profileFound);
2145
+ }
2146
+ });
2147
+ updateListProfiles(myProfiles);
2148
+ };
2149
+ var removeProfiles = function () {
2150
+ var myProfiles = userProfiles || [];
2151
+ selectedUserProfile.forEach(function (element) {
2152
+ myProfiles = myProfiles.filter(function (item) {
2153
+ return item.ProfileId.toString() !== element;
2154
+ });
2155
+ });
2156
+ updateListProfiles(myProfiles);
2157
+ };
2158
+ var updateListProfiles = function (selectedProfiles) {
2159
+ var myProfiles = [];
2160
+ var restProfiles = [];
2161
+ profiles.forEach(function (element) {
2162
+ var profileFound = selectedProfiles.find(function (profile) { return profile.ProfileId === element.ProfileId; });
2163
+ if (profileFound === undefined)
2164
+ restProfiles.push(element);
2165
+ else
2166
+ myProfiles.push(element);
2167
+ });
2168
+ setUserProfiles(myProfiles);
2169
+ setOtherProfiles(restProfiles);
2170
+ setSelectedUserProfile([]);
2171
+ setSelectedProfile([]);
2172
+ };
2173
+ var closeMessage = function () {
2174
+ setTimeout(function () {
2175
+ setShowSuccess(false);
2176
+ setSuccessMessage('');
2177
+ }, 2000);
2178
+ };
2179
+ // effects
2180
+ React__default["default"].useEffect(loadComponent, []);
2181
+ React__default["default"].useEffect(function () {
2182
+ if (showSuccess) {
2183
+ closeMessage();
2184
+ }
2185
+ }, [showSuccess]); // eslint-disable-line react-hooks/exhaustive-deps
2186
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
2187
+ React__default["default"].createElement(reactBootstrap.Alert, { show: showError, variant: "danger", dismissible: true, onClose: function () { setShowError(false); setError(undefined); } },
2188
+ React__default["default"].createElement("strong", null, "There was an error"),
2189
+ React__default["default"].createElement("p", null,
2190
+ " ",
2191
+ error === undefined ? 'There was an error' :
2192
+ (error.internalError.message === undefined ? error.internalError : error.internalError.message))),
2193
+ React__default["default"].createElement(reactBootstrap.Alert, { show: showSuccess, variant: "success" },
2194
+ React__default["default"].createElement("p", null, successMessage || 'Operation was success')),
2195
+ React__default["default"].createElement("div", { className: "row" },
2196
+ React__default["default"].createElement(core.Typography, { className: "mx-2 mt-0 mb-2 font-weight-bold" }, "User Management")),
2197
+ React__default["default"].createElement("div", { className: "row" },
2198
+ React__default["default"].createElement("div", { className: "col-md-6" },
2199
+ React__default["default"].createElement("div", { className: "text-right" },
2200
+ React__default["default"].createElement("button", { className: "btn btn-success", onClick: newUser, disabled: userId === 0 }, "New")),
2201
+ React__default["default"].createElement(DataGridControl, { columns: columns, rows: dataSource, pageSize: 20, rowHeight: 30, loading: loading, rowsPerPageOptions: [10, 20, 50, 100], page: page, className: "mes-selectable-datagrid", onRowClick: rowClicked, onPageChange: function (params) { setPage(params.page); } })),
2202
+ React__default["default"].createElement("div", { className: "col-md-6" }, (userId >= 0) &&
2203
+ // @ts-ignore
2204
+ React__default["default"].createElement(MasterDetailPanel, { title: title, saveStatus: true, showDelete: true, deleteStatus: userId > 0, onCancel: cancelDetail, onSave: saveDetail, onDelete: deleteDetail },
2205
+ React__default["default"].createElement("div", { className: "row" },
2206
+ React__default["default"].createElement("div", { className: "col-md-6 px-3 py-1" },
2207
+ React__default["default"].createElement(SimpleTextControl, { title: "Username", styleLabel: { 'minWidth': '150px' }, onChange: setUserName, name: 'userName', value: userName })),
2208
+ React__default["default"].createElement("div", { className: "col-md-6 px-3 py-1" }, (userId > 0) &&
2209
+ React__default["default"].createElement(React__default["default"].Fragment, null,
2210
+ React__default["default"].createElement("button", { className: "btn btn-primary mes-button-primary", onClick: changePassword },
2211
+ React__default["default"].createElement("i", { className: "fas fa-lock pr-1" }),
2212
+ "Change Password"),
2213
+ React__default["default"].createElement(ChangePassword, { open: open, onClose: closeChangePassword, userId: userId })))),
2214
+ React__default["default"].createElement("div", { className: "row" },
2215
+ React__default["default"].createElement("div", { className: "col-md-6 px-3 py-1" },
2216
+ React__default["default"].createElement(SimpleTextControl, { title: "Name", styleLabel: { 'minWidth': '150px' }, onChange: setUserFirstName, name: 'firstName', value: userFirstName })),
2217
+ React__default["default"].createElement("div", { className: "col-md-6 px-3 py-1" },
2218
+ React__default["default"].createElement(SimpleTextControl, { title: "Lastname", styleLabel: { 'minWidth': '150px' }, onChange: setUserLastName, name: 'lastName', value: userLastName }))),
2219
+ React__default["default"].createElement("div", { className: "row" },
2220
+ React__default["default"].createElement("div", { className: "col-md-6 px-3 py-1" },
2221
+ React__default["default"].createElement(CheckBoxControl, { value: userIsDomain, onCheck: setUserIsDomain, title: "Domain User" })),
2222
+ React__default["default"].createElement("div", { className: "col-md-6 px-3 py-1" },
2223
+ React__default["default"].createElement(CheckBoxControl, { value: userIsActive, onCheck: setUserIsActive, title: "Active" }))),
2224
+ React__default["default"].createElement("div", { className: "row" },
2225
+ React__default["default"].createElement(core.Typography, { gutterBottom: true, variant: "h5", component: "h2", className: "ml-3 pt-1" }, "Profiles")),
2226
+ React__default["default"].createElement("div", { className: "row" },
2227
+ React__default["default"].createElement("div", { className: "col-md-5" },
2228
+ React__default["default"].createElement(MultipleSelectorControl, { title: "Available", value: selectedProfile, onChange: setSelectedProfile, onDoubleClick: addProfiles, dataSource: otherProfiles, valueField: "ProfileId", textField: "ProfileName" })),
2229
+ React__default["default"].createElement("div", { className: "col-md-2 d-flex flex-column align-items-center m-auto" },
2230
+ React__default["default"].createElement("button", { className: "btn btn-primary mes-button-primary my-2", title: "Assign", disabled: (selectedProfile || []).length === 0, onClick: addProfiles },
2231
+ React__default["default"].createElement("i", { className: "fas fa-angle-right" })),
2232
+ React__default["default"].createElement("button", { className: "btn btn-primary mes-button-primary my-2", title: "Remove", disabled: (selectedUserProfile || []).length === 0, onClick: removeProfiles },
2233
+ React__default["default"].createElement("i", { className: "fas fa-angle-left" }))),
2234
+ React__default["default"].createElement("div", { className: "col-md-5" },
2235
+ React__default["default"].createElement(MultipleSelectorControl, { title: "Assigned", value: selectedUserProfile, onChange: setSelectedUserProfile, onDoubleClick: removeProfiles, dataSource: userProfiles, valueField: "ProfileId", textField: "ProfileName" }))))
2236
+ // </div>
2237
+ ))));
2238
+ }
2239
+
2240
+ var getShiftStyle = function (shift) {
2241
+ if (shift === 'D') {
2242
+ return { 'color': '#52a8b7' };
2243
+ }
2244
+ else if (shift === 'N') {
2245
+ return { 'color': '#A5A5A5' };
2246
+ }
2247
+ else {
2248
+ return {};
2249
+ }
2250
+ };
2251
+ var getCrewStyle = function (crew) {
2252
+ if (crew === 'A') {
2253
+ return { 'color': '#0070C0' };
2254
+ }
2255
+ else if (crew === 'B') {
2256
+ return { 'color': '#FFD24A' };
2257
+ }
2258
+ else if (crew === 'C') {
2259
+ return { 'color': '#FD8359' };
2260
+ }
2261
+ else if (crew === 'D') {
2262
+ return { 'color': '#00B050' };
2263
+ }
2264
+ else {
2265
+ return {};
2266
+ }
2267
+ };
2268
+ var GetShiftColor = function (props) {
2269
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
2270
+ React__default["default"].createElement("i", { className: "fas fa-square mr-2", style: getShiftStyle(props.value) })));
2271
+ };
2272
+ var GetCrewColor = function (props) {
2273
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
2274
+ React__default["default"].createElement("i", { className: "fas fa-square mr-2", style: getCrewStyle(props.value) })));
2275
+ };
2276
+
2277
+ var Configuration$1 = /** @class */ (function () {
2278
+ function Configuration() {
2279
+ var _a;
2280
+ this.API_PROCEDURE_URL = "/backend";
2281
+ this.API_AUTH_URL = "/authentication";
2282
+ this.TOKEN = ((_a = JSON.parse(localStorage.getItem('userMESData'))) === null || _a === void 0 ? void 0 : _a.token) || '';
2283
+ }
2284
+ return Configuration;
2285
+ }());
2286
+
2287
+ var MESApiService = /** @class */ (function () {
2288
+ function MESApiService() {
2289
+ this.config = new Configuration$1();
2290
+ this.hasErrors = false;
2291
+ this.error = undefined;
2292
+ this.TOKEN = this.config.TOKEN;
2293
+ }
2294
+ MESApiService.prototype.prepareCall = function () {
2295
+ this.hasErrors = false;
2296
+ this.error = undefined;
2297
+ };
2298
+ MESApiService.prototype.changePassword = function (userId, password) {
2299
+ return __awaiter(this, void 0, void 0, function () {
2300
+ var isError, data;
2301
+ var _this = this;
2302
+ return __generator(this, function (_a) {
2303
+ this.prepareCall();
2304
+ isError = { ok: true };
2305
+ data = {};
2306
+ data.userId = userId;
2307
+ data.password = password;
2308
+ return [2 /*return*/, fetch(this.config.API_AUTH_URL + '/ChangePassword', {
2309
+ method: "POST",
2310
+ mode: "cors",
2311
+ headers: {
2312
+ "Content-Type": "application/json",
2313
+ 'Authorization': 'Bearer ' + this.TOKEN
2314
+ },
2315
+ body: JSON.stringify(data)
2316
+ })["catch"](function (errorMsg) {
2317
+ throw new FetchError(errorMsg.message, 404, "ERR_CONNECTION_REFUSED");
2318
+ })
2319
+ .then(function (response) {
2320
+ isError = { ok: response.ok, status: response.status, statusText: response.statusText };
2321
+ return response.json();
2322
+ })
2323
+ .then(function (object) {
2324
+ if (!isError.ok)
2325
+ throw new FetchError(isError.statusText, isError.status, object);
2326
+ return object;
2327
+ })["catch"](function (err) {
2328
+ _this.hasErrors = true;
2329
+ _this.error = err;
2330
+ return {
2331
+ hasErrors: true,
2332
+ error: err
2333
+ };
2334
+ })];
2335
+ });
2336
+ });
2337
+ };
2338
+ MESApiService.prototype.authenticate = function (userName, password) {
2339
+ return __awaiter(this, void 0, void 0, function () {
2340
+ var isError, data;
2341
+ var _this = this;
2342
+ return __generator(this, function (_a) {
2343
+ this.prepareCall();
2344
+ isError = { ok: true };
2345
+ data = {};
2346
+ data.userName = userName;
2347
+ data.password = password;
2348
+ return [2 /*return*/, fetch(this.config.API_AUTH_URL + '/Authenticate', {
2349
+ method: "POST",
2350
+ mode: "cors",
2351
+ headers: {
2352
+ "Content-Type": "application/json"
2353
+ },
2354
+ body: JSON.stringify(data)
2355
+ })["catch"](function (errorMsg) {
2356
+ throw new FetchError(errorMsg.message, 404, "ERR_CONNECTION_REFUSED");
2357
+ })
2358
+ .then(function (response) {
2359
+ isError = { ok: response.ok, status: response.status, statusText: response.statusText };
2360
+ return response.json();
2361
+ })
2362
+ .then(function (object) {
2363
+ if (!isError.ok)
2364
+ throw new FetchError(isError.statusText, isError.status, object);
2365
+ return object;
2366
+ })["catch"](function (err) {
2367
+ _this.hasErrors = true;
2368
+ _this.error = err;
2369
+ return {
2370
+ hasErrors: true,
2371
+ error: err
2372
+ };
2373
+ })];
2374
+ });
2375
+ });
2376
+ };
2377
+ MESApiService.prototype.loginWithAzureAD = function (accessToken) {
2378
+ return __awaiter(this, void 0, void 0, function () {
2379
+ var isError, data;
2380
+ var _this = this;
2381
+ return __generator(this, function (_a) {
2382
+ this.prepareCall();
2383
+ isError = { ok: true };
2384
+ data = {};
2385
+ data.AccessToken = accessToken;
2386
+ return [2 /*return*/, fetch(this.config.API_AUTH_URL + '/authenticate-with-azure-ad', {
2387
+ method: "POST",
2388
+ mode: "cors",
2389
+ headers: {
2390
+ "Content-Type": "application/json"
2391
+ },
2392
+ body: JSON.stringify(data)
2393
+ })["catch"](function (errorMsg) {
2394
+ throw new FetchError(errorMsg.message, 404, "ERR_CONNECTION_REFUSED");
2395
+ })
2396
+ .then(function (response) {
2397
+ isError = { ok: response.ok, status: response.status, statusText: response.statusText };
2398
+ return response.json();
2399
+ })
2400
+ .then(function (object) {
2401
+ if (!isError.ok)
2402
+ throw new FetchError(isError.statusText, isError.status, object);
2403
+ return object;
2404
+ })["catch"](function (err) {
2405
+ _this.hasErrors = true;
2406
+ _this.error = err;
2407
+ return {
2408
+ hasErrors: true,
2409
+ error: err
2410
+ };
2411
+ })];
2412
+ });
2413
+ });
2414
+ };
2415
+ MESApiService.prototype.call = function (procedure, parameters, database) {
2416
+ if (database === void 0) { database = ''; }
2417
+ return __awaiter(this, void 0, void 0, function () {
2418
+ var data, formattedParameters, isError;
2419
+ var _this = this;
2420
+ return __generator(this, function (_a) {
2421
+ data = {};
2422
+ formattedParameters = [];
2423
+ parameters.forEach(function (element) {
2424
+ var formattedParameter = {};
2425
+ formattedParameter.name = element.name;
2426
+ if (element.value === null || element.value === undefined)
2427
+ formattedParameter.value = null;
2428
+ else
2429
+ formattedParameter.value = element.value;
2430
+ formattedParameters.push(formattedParameter);
2431
+ });
2432
+ data.method = procedure;
2433
+ data.dataBaseName = database;
2434
+ data.parameters = formattedParameters;
2435
+ Date.prototype.toJSON = function () { return moment__default["default"](this).format('YYYY-MM-DDTHH:mm:ss'); }; // eslint-disable-line
2436
+ isError = { ok: true };
2437
+ return [2 /*return*/, fetch(this.config.API_PROCEDURE_URL + '/Execute', {
2438
+ method: "POST",
2439
+ mode: "cors",
2440
+ headers: {
2441
+ "Content-Type": "application/json",
2442
+ 'Authorization': 'Bearer ' + this.TOKEN
2443
+ },
2444
+ body: JSON.stringify(data)
2445
+ })["catch"](function (errorMsg) {
2446
+ throw new FetchError(errorMsg.message, 404, "ERR_CONNECTION_REFUSED");
2447
+ })
2448
+ .then(function (response) {
2449
+ isError = { ok: response.ok, status: response.status, statusText: response.statusText };
2450
+ return response.json();
2451
+ })
2452
+ .then(function (object) {
2453
+ if (!isError.ok)
2454
+ throw new FetchError(isError.statusText, isError.status, object);
2455
+ return object;
2456
+ })["catch"](function (err) {
2457
+ _this.hasErrors = true;
2458
+ _this.error = err;
2459
+ return;
2460
+ })];
2461
+ });
2462
+ });
2463
+ };
2464
+ MESApiService.prototype["import"] = function (procedure, parameters, files, uniqueFile, database) {
2465
+ if (database === void 0) { database = ''; }
2466
+ return __awaiter(this, void 0, void 0, function () {
2467
+ var formData, formattedParameters, isError;
2468
+ var _this = this;
2469
+ return __generator(this, function (_a) {
2470
+ formData = new FormData();
2471
+ formattedParameters = [];
2472
+ parameters.forEach(function (element) {
2473
+ var formattedParameter = {};
2474
+ formattedParameter.name = element.name;
2475
+ if (element.value === null || element.value === undefined)
2476
+ formattedParameter.value = null;
2477
+ else
2478
+ formattedParameter.value = element.value;
2479
+ formattedParameters.push(formattedParameter);
2480
+ });
2481
+ Date.prototype.toJSON = function () { return moment__default["default"](this).format('YYYY-MM-DDTHH:mm:ss'); }; // eslint-disable-line
2482
+ isError = { ok: true };
2483
+ files.forEach(function (element) {
2484
+ formData.append('formFiles', element);
2485
+ });
2486
+ formData.append('method', procedure);
2487
+ formData.append('dataBaseName', database);
2488
+ formData.append('processFirstFile', uniqueFile);
2489
+ formData.append('parameters', JSON.stringify(formattedParameters));
2490
+ return [2 /*return*/, fetch(this.config.API_PROCEDURE_URL + '/Import', {
2491
+ method: "POST",
2492
+ mode: "cors",
2493
+ headers: {
2494
+ 'Authorization': 'Bearer ' + this.TOKEN
2495
+ },
2496
+ body: formData
2497
+ })["catch"](function (errorMsg) {
2498
+ throw new FetchError(errorMsg.message, 404, "ERR_CONNECTION_REFUSED");
2499
+ })
2500
+ .then(function (response) {
2501
+ isError = { ok: response.ok, status: response.status, statusText: response.statusText };
2502
+ return response.json();
2503
+ })
2504
+ .then(function (object) {
2505
+ if (!isError.ok)
2506
+ throw new FetchError(isError.statusText, isError.status, object);
2507
+ return object;
2508
+ })["catch"](function (err) {
2509
+ _this.hasErrors = true;
2510
+ _this.error = err;
2511
+ return;
2512
+ })];
2513
+ });
2514
+ });
2515
+ };
2516
+ MESApiService.prototype["export"] = function (procedure, parameters, fileName, database) {
2517
+ if (database === void 0) { database = ''; }
2518
+ return __awaiter(this, void 0, void 0, function () {
2519
+ var data, formattedParameters, isError;
2520
+ var _this = this;
2521
+ return __generator(this, function (_a) {
2522
+ data = {};
2523
+ formattedParameters = [];
2524
+ parameters.forEach(function (element) {
2525
+ var formattedParameter = {};
2526
+ formattedParameter.name = element.name;
2527
+ if (element.value === null || element.value === undefined)
2528
+ formattedParameter.value = null;
2529
+ else
2530
+ formattedParameter.value = element.value;
2531
+ formattedParameters.push(formattedParameter);
2532
+ });
2533
+ data.method = procedure;
2534
+ data.dataBaseName = database;
2535
+ data.parameters = formattedParameters;
2536
+ data.fileName = fileName || 'Default.xlsx';
2537
+ Date.prototype.toJSON = function () { return moment__default["default"](this).format('YYYY-MM-DDTHH:mm:ss'); }; // eslint-disable-line
2538
+ isError = { ok: true };
2539
+ return [2 /*return*/, fetch(this.config.API_PROCEDURE_URL + '/Export', {
2540
+ method: "POST",
2541
+ mode: "cors",
2542
+ headers: {
2543
+ "Content-Type": "application/json",
2544
+ 'Authorization': 'Bearer ' + this.TOKEN
2545
+ },
2546
+ body: JSON.stringify(data)
2547
+ })["catch"](function (errorMsg) {
2548
+ throw new FetchError(errorMsg.message, 404, "ERR_CONNECTION_REFUSED");
2549
+ })
2550
+ .then(function (response) {
2551
+ isError = { ok: response.ok, status: response.status, statusText: response.statusText };
2552
+ if (!isError.ok)
2553
+ return response.json();
2554
+ else
2555
+ return response.blob();
2556
+ })
2557
+ .then(function (blob) {
2558
+ if (!isError.ok)
2559
+ throw new FetchError(isError.statusText, isError.status, blob);
2560
+ var url = window.URL.createObjectURL(blob);
2561
+ var a = document.createElement('a');
2562
+ a.href = url;
2563
+ a.download = fileName || 'Default.xlsx';
2564
+ document.body.appendChild(a); // we need to append the element to the dom -> otherwise it will not work in firefox
2565
+ a.click();
2566
+ a.remove(); //afterwards we remove the element again
2567
+ return 'ok';
2568
+ })["catch"](function (err) {
2569
+ _this.hasErrors = true;
2570
+ _this.error = err;
2571
+ return;
2572
+ })];
2573
+ });
2574
+ });
2575
+ };
2576
+ MESApiService.prototype.exportExcel = function (procedure, parameters, fileName, excelStructure, database) {
2577
+ if (database === void 0) { database = ''; }
2578
+ return __awaiter(this, void 0, void 0, function () {
2579
+ var data, formattedParameters, isError;
2580
+ var _this = this;
2581
+ return __generator(this, function (_a) {
2582
+ data = {};
2583
+ formattedParameters = [];
2584
+ parameters.forEach(function (element) {
2585
+ var formattedParameter = {};
2586
+ formattedParameter.name = element.name;
2587
+ if (element.value === null || element.value === undefined)
2588
+ formattedParameter.value = null;
2589
+ else
2590
+ formattedParameter.value = element.value;
2591
+ formattedParameters.push(formattedParameter);
2592
+ });
2593
+ /******* Excel Structure *******/
2594
+ if (excelStructure.showAllSheets !== undefined && excelStructure.showAllSheets !== null)
2595
+ data.showAllSheets = excelStructure.showAllSheets;
2596
+ if (excelStructure.sheets !== undefined && excelStructure.sheets !== null)
2597
+ data.sheets = excelStructure.sheets;
2598
+ /******* Other Parameter *******/
2599
+ data.method = procedure;
2600
+ data.dataBaseName = database;
2601
+ data.parameters = formattedParameters;
2602
+ data.fileName = fileName || 'Default.xlsx';
2603
+ Date.prototype.toJSON = function () { return moment__default["default"](this).format('YYYY-MM-DDTHH:mm:ss'); }; // eslint-disable-line
2604
+ isError = { ok: true };
2605
+ return [2 /*return*/, fetch(this.config.API_PROCEDURE_URL + '/ExportExcel', {
2606
+ method: "POST",
2607
+ mode: "cors",
2608
+ headers: {
2609
+ "Content-Type": "application/json",
2610
+ 'Authorization': 'Bearer ' + this.TOKEN
2611
+ },
2612
+ body: JSON.stringify(data)
2613
+ })["catch"](function (errorMsg) {
2614
+ throw new FetchError(errorMsg.message, 404, "ERR_CONNECTION_REFUSED");
2615
+ })
2616
+ .then(function (response) {
2617
+ isError = { ok: response.ok, status: response.status, statusText: response.statusText };
2618
+ if (!isError.ok)
2619
+ return response.json();
2620
+ else
2621
+ return response.blob();
2622
+ })
2623
+ .then(function (blob) {
2624
+ if (!isError.ok)
2625
+ throw new FetchError(isError.statusText, isError.status, blob);
2626
+ var url = window.URL.createObjectURL(blob);
2627
+ var a = document.createElement('a');
2628
+ a.href = url;
2629
+ a.download = fileName || 'Default.xlsx';
2630
+ document.body.appendChild(a); // we need to append the element to the dom -> otherwise it will not work in firefox
2631
+ a.click();
2632
+ a.remove(); //afterwards we remove the element again
2633
+ return 'ok';
2634
+ })["catch"](function (err) {
2635
+ _this.hasErrors = true;
2636
+ _this.error = err;
2637
+ return;
2638
+ })];
2639
+ });
2640
+ });
2641
+ };
2642
+ return MESApiService;
2643
+ }());
2644
+
2645
+ function useToken() {
2646
+ var getToken = function () {
2647
+ var tokenString = localStorage.getItem('userMESData');
2648
+ var userToken = JSON.parse(tokenString);
2649
+ return userToken === null || userToken === void 0 ? void 0 : userToken.token;
2650
+ };
2651
+ var _a = React.useState(getToken()), token = _a[0], setToken = _a[1];
2652
+ // TODO: userToken typings
2653
+ var saveToken = function (userToken) {
2654
+ localStorage.setItem('userMESData', JSON.stringify(userToken));
2655
+ setToken(userToken.token);
2656
+ };
2657
+ var clearUserData = function () {
2658
+ localStorage.removeItem('userMESData');
2659
+ setToken(undefined);
2660
+ };
2661
+ var getUserName = function () {
2662
+ var sessionData = localStorage.getItem('userMESData');
2663
+ var userData = JSON.parse(sessionData);
2664
+ return ((userData || {}).lastName || '') + ', ' + ((userData || {}).firstName || '');
2665
+ };
2666
+ var getFirstName = function () {
2667
+ var sessionData = localStorage.getItem('userMESData');
2668
+ var userData = JSON.parse(sessionData);
2669
+ return ((userData || {}).firstName || '');
2670
+ };
2671
+ var getLastName = function () {
2672
+ var sessionData = localStorage.getItem('userMESData');
2673
+ var userData = JSON.parse(sessionData);
2674
+ return ((userData || {}).lastName || '');
2675
+ };
2676
+ var getUserId = function () {
2677
+ var sessionData = localStorage.getItem('userMESData');
2678
+ var userData = JSON.parse(sessionData);
2679
+ return ((userData || {}).id || (-1));
2680
+ };
2681
+ var hasPermission = function (permissionId) {
2682
+ var sessionData = localStorage.getItem('userMESData');
2683
+ if (sessionData === undefined)
2684
+ return false;
2685
+ var userData = JSON.parse(sessionData);
2686
+ var permissions = userData.permissions || [];
2687
+ return permissions.indexOf(permissionId) > -1; //case sensitve
2688
+ };
2689
+ return {
2690
+ getUserName: getUserName,
2691
+ setToken: saveToken,
2692
+ clearToken: clearUserData,
2693
+ getFirstName: getFirstName,
2694
+ getLastName: getLastName,
2695
+ getUserId: getUserId,
2696
+ hasPermission: hasPermission,
2697
+ token: token
2698
+ };
2699
+ }
2700
+
2701
+ function Account() {
2702
+ var _a = useToken(), getUserName = _a.getUserName, getUserId = _a.getUserId;
2703
+ var _b = React__default["default"].useState(false), showError = _b[0], setShowError = _b[1];
2704
+ var _c = React__default["default"].useState(undefined), error = _c[0], setError = _c[1];
2705
+ var _d = React__default["default"].useState(""), userLastName = _d[0], setUserLastName = _d[1];
2706
+ var _e = React__default["default"].useState(""), userFirstName = _e[0], setUserFirstName = _e[1];
2707
+ var userId = React__default["default"].useState(getUserId)[0];
2708
+ var userParam = React__default["default"].useState(getUserName)[0];
2709
+ var _f = React__default["default"].useState(''), userName = _f[0], setUserName = _f[1];
2710
+ var _g = React__default["default"].useState(false), userIsDomain = _g[0], setUserIsDomain = _g[1];
2711
+ var _h = React__default["default"].useState(false), userIsActive = _h[0], setUserIsActive = _h[1];
2712
+ var _j = React__default["default"].useState(''), userProfiles = _j[0], setUserProfiles = _j[1];
2713
+ var _k = React__default["default"].useState(''), userPermissions = _k[0], setUserPermissions = _k[1];
2714
+ var _l = React__default["default"].useState(''), userProcedures = _l[0], setUserProcedures = _l[1];
2715
+ var _m = React__default["default"].useState(false), open = _m[0], setOpen = _m[1];
2716
+ var _o = React__default["default"].useState(false), showSuccess = _o[0], setShowSuccess = _o[1];
2717
+ var _p = React__default["default"].useState(''), successMessage = _p[0], setSuccessMessage = _p[1];
2718
+ var changePassword = function () {
2719
+ setOpen(true);
2720
+ };
2721
+ var closeChangePassword = function (flag) {
2722
+ if (flag) {
2723
+ setShowSuccess(true);
2724
+ setSuccessMessage('Password was changed successfully.');
2725
+ }
2726
+ setOpen(false);
2727
+ };
2728
+ var stringToList = function (s) {
2729
+ s = s.replace(/,/g, '\n');
2730
+ s = s.replace(/ *\([^)]*\) */g, "");
2731
+ return s;
2732
+ };
2733
+ var loadUserData = function () {
2734
+ var apiService = new MESApiService();
2735
+ var parameters = [];
2736
+ parameters.push({ name: "@UserId", value: userId });
2737
+ parameters.push({ name: "@UserName", value: userParam });
2738
+ apiService.call('SEC.GetUser', parameters)
2739
+ .then(function (response) {
2740
+ if (apiService.hasErrors) {
2741
+ setShowError(true);
2742
+ setError(apiService.error);
2743
+ }
2744
+ if (response !== undefined && response.tables !== undefined && response.tables[0] !== undefined) {
2745
+ var userData = response.tables[0].rows[0];
2746
+ setUserName(userData.UserName);
2747
+ setUserLastName(userData.LastName);
2748
+ setUserFirstName(userData.FirstName);
2749
+ setUserIsDomain(userData.IsDomainUser);
2750
+ setUserIsActive(userData.IsActive);
2751
+ setUserProfiles(stringToList((userData.Profiles || '')));
2752
+ setUserProcedures(stringToList((userData.Procedures || '')));
2753
+ setUserPermissions(stringToList((userData.Permissions || '')));
2754
+ }
2755
+ });
2756
+ };
2757
+ var closeMessage = function () {
2758
+ setTimeout(function () {
2759
+ setShowSuccess(false);
2760
+ setSuccessMessage('');
2761
+ }, 2000);
2762
+ };
2763
+ React__default["default"].useEffect(loadUserData, []);
2764
+ React__default["default"].useEffect(function () {
2765
+ if (showSuccess === true) {
2766
+ closeMessage();
2767
+ }
2768
+ }, [showSuccess]);
2769
+ return (
2770
+ /* @ts-ignore */
2771
+ React__default["default"].createElement(GenericPanel, { title: "Account Configuration", showPromptError: showError, error: error, showPromptSuccess: showSuccess, successMessage: successMessage },
2772
+ React__default["default"].createElement("div", { className: "row" },
2773
+ React__default["default"].createElement("div", { className: "col-md-3 px-3 py-1" },
2774
+ React__default["default"].createElement(SimpleTextControl, { title: "Username", styleLabel: { 'minWidth': '110px' }, styleTextBox: { 'maxWidth': '200px', 'minWidth': '100px' }, readOnly: true, name: 'userName', value: userName, styleGeneral: { 'display': 'flex' } })),
2775
+ React__default["default"].createElement("div", { className: "col-md-4 px-3 py-1" },
2776
+ React__default["default"].createElement("button", { className: "btn btn-primary mes-button-primary", onClick: changePassword },
2777
+ React__default["default"].createElement("i", { className: "fas fa-lock pr-1" }),
2778
+ "Change Password"),
2779
+ React__default["default"].createElement(ChangePassword, { open: open, onClose: closeChangePassword, userId: userId }))),
2780
+ React__default["default"].createElement("div", { className: "row" },
2781
+ React__default["default"].createElement("div", { className: "col-md-3 px-3 py-1" },
2782
+ React__default["default"].createElement(SimpleTextControl, { title: "Name", styleLabel: { 'minWidth': '110px' }, styleTextBox: { 'maxWidth': '200px', 'minWidth': '100px' }, readOnly: true, name: 'firstName', value: userFirstName, styleGeneral: { 'display': 'flex' } })),
2783
+ React__default["default"].createElement("div", { className: "col-md-3 px-3 py-1" },
2784
+ React__default["default"].createElement(SimpleTextControl, { title: "Lastname", styleLabel: { 'minWidth': '110px' }, styleTextBox: { 'maxWidth': '200px', 'minWidth': '100px' }, readOnly: true, name: 'lastName', value: userLastName, styleGeneral: { 'display': 'flex' } }))),
2785
+ React__default["default"].createElement("div", { className: "row" },
2786
+ React__default["default"].createElement("div", { className: "col-md-3 px-3 py-1" },
2787
+ React__default["default"].createElement(CheckBoxControl, { value: userIsDomain, title: "Domain User", readOnly: true, styleTextBox: { 'maxWidth': '300px' }, disabled: true })),
2788
+ React__default["default"].createElement("div", { className: "col-md-3 px-3 py-1" },
2789
+ React__default["default"].createElement(CheckBoxControl, { value: userIsActive, title: "Active", readOnly: true, styleTextBox: { 'maxWidth': '300px' }, disabled: true }))),
2790
+ React__default["default"].createElement("div", { className: "row" },
2791
+ React__default["default"].createElement("div", { className: "col-md-4" },
2792
+ React__default["default"].createElement(core.Typography, { gutterBottom: true, variant: "h5", component: "h2", className: "pt-1" }, "Profiles"),
2793
+ React__default["default"].createElement("textarea", { className: "form-control", placeholder: userProfiles, readOnly: true, style: { "height": "50vh" } })),
2794
+ React__default["default"].createElement("div", { className: "col-md-4" },
2795
+ React__default["default"].createElement(core.Typography, { gutterBottom: true, variant: "h5", component: "h2", className: "pt-1" }, "Permissions"),
2796
+ React__default["default"].createElement("textarea", { className: "form-control", placeholder: userPermissions, readOnly: true, style: { "height": "50vh" } })),
2797
+ React__default["default"].createElement("div", { className: "col-md-4" },
2798
+ React__default["default"].createElement(core.Typography, { gutterBottom: true, variant: "h5", component: "h2", className: "pt-1" }, "Procedures"),
2799
+ React__default["default"].createElement("textarea", { className: "form-control", placeholder: userProcedures, readOnly: true, style: { "height": "50vh" } })))));
2800
+ }
2801
+
2802
+ var AuthContext = React__default["default"].createContext({});
2803
+ var AuthProvider = function (_a) {
2804
+ var children = _a.children, authConfig = _a.authConfig;
2805
+ var useTokenHook = useToken();
2806
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
2807
+ React__default["default"].createElement(AuthContext.Provider, { value: useTokenHook },
2808
+ !!useTokenHook.token && React__default["default"].createElement(Authenticated, null, children),
2809
+ !useTokenHook.token && React__default["default"].createElement(Unauthenticated, { authConfig: authConfig }))));
2810
+ };
2811
+ var Authenticated = function (_a) {
2812
+ var children = _a.children;
2813
+ return (React__default["default"].createElement(React__default["default"].Fragment, null, children));
2814
+ };
2815
+ var Unauthenticated = function (_a) {
2816
+ var authConfig = _a.authConfig;
2817
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
2818
+ React__default["default"].createElement(Login, { authConfig: authConfig })));
2819
+ };
2820
+
2821
+ var LoginWithEmailAndPassword = function () {
2822
+ var _a = React.useState(''), username = _a[0], setUserName = _a[1];
2823
+ var _b = React.useState(''), password = _b[0], setPassword = _b[1];
2824
+ var _c = React__default["default"].useState(false), showError = _c[0], setShowError = _c[1];
2825
+ var _d = React__default["default"].useState(undefined), error = _d[0], setError = _d[1];
2826
+ var setToken = React__default["default"].useContext(AuthContext).setToken;
2827
+ var apiService = new MESApiService();
2828
+ var login = function (e) { return __awaiter(void 0, void 0, void 0, function () {
2829
+ var response;
2830
+ return __generator(this, function (_a) {
2831
+ switch (_a.label) {
2832
+ case 0:
2833
+ e.preventDefault();
2834
+ return [4 /*yield*/, apiService.authenticate(username, password)];
2835
+ case 1:
2836
+ response = _a.sent();
2837
+ if (apiService.hasErrors) {
2838
+ setShowError(true);
2839
+ setError(apiService.error);
2840
+ }
2841
+ else {
2842
+ setToken(response);
2843
+ }
2844
+ return [2 /*return*/];
2845
+ }
2846
+ });
2847
+ }); };
2848
+ var handleKeypress = function (e) {
2849
+ if (e.charCode === 13) {
2850
+ login(e);
2851
+ }
2852
+ };
2853
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
2854
+ React__default["default"].createElement("form", { onSubmit: login },
2855
+ React__default["default"].createElement(reactBootstrap.Alert, { show: showError, variant: "danger", dismissible: true, onClose: function () {
2856
+ setShowError(false);
2857
+ setError(undefined);
2858
+ } },
2859
+ React__default["default"].createElement("strong", null, "Bad credentials"),
2860
+ React__default["default"].createElement("p", null,
2861
+ " ",
2862
+ error === undefined ? 'There was an error' :
2863
+ (error.internalError.message === undefined ? error.internalError : error.internalError.message))),
2864
+ React__default["default"].createElement("div", { className: "form-group row" },
2865
+ React__default["default"].createElement("input", { id: "txtUserName", placeholder: "User", name: "userName", onChange: function (e) { return setUserName(e.target.value); }, type: "text", autoComplete: "off", className: "form-control" })),
2866
+ React__default["default"].createElement("div", { className: "form-group row" },
2867
+ React__default["default"].createElement("input", { id: "txtPassword", placeholder: "Password", name: "password", onChange: function (e) { return setPassword(e.target.value); }, onKeyPress: handleKeypress, type: "password", className: "form-control" })),
2868
+ React__default["default"].createElement("div", { className: "row" },
2869
+ React__default["default"].createElement("button", { className: "btn btn-primary mes-button-primary mx-auto col-md-12 mt-3 ", type: "submit", disabled: password.length === 0 || username.length === 0 }, "Login")))));
2870
+ };
2871
+
2872
+ /*
2873
+ * Copyright (c) Microsoft Corporation. All rights reserved.
2874
+ * Licensed under the MIT License.
2875
+ */
2876
+ /**
2877
+ * Configuration object to be passed to MSAL instance on creation.
2878
+ * For a full list of MSAL.js configuration parameters, visit:
2879
+ * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/configuration.md
2880
+ */
2881
+ var msalConfig = {
2882
+ auth: {
2883
+ clientId: "7c77d607-51e0-4e03-bd50-d7aa18a7163g",
2884
+ authority: "https://login.microsoftonline.com/common",
2885
+ redirectUri: "http://localhost:5000/"
2886
+ },
2887
+ cache: {
2888
+ cacheLocation: "sessionStorage",
2889
+ storeAuthStateInCookie: false
2890
+ },
2891
+ system: {
2892
+ loggerOptions: {
2893
+ loggerCallback: function (level, message, containsPii) {
2894
+ if (containsPii) {
2895
+ return;
2896
+ }
2897
+ switch (level) {
2898
+ case msalBrowser.LogLevel.Error:
2899
+ console.error(message);
2900
+ return;
2901
+ case msalBrowser.LogLevel.Info:
2902
+ console.info(message);
2903
+ return;
2904
+ case msalBrowser.LogLevel.Verbose:
2905
+ console.debug(message);
2906
+ return;
2907
+ case msalBrowser.LogLevel.Warning:
2908
+ console.warn(message);
2909
+ return;
2910
+ }
2911
+ }
2912
+ }
2913
+ }
2914
+ };
2915
+ /**
2916
+ * Scopes you add here will be prompted for user consent during sign-in.
2917
+ * By default, MSAL.js will add OIDC scopes (openid, profile, email) to any login request.
2918
+ * For more information about OIDC scopes, visit:
2919
+ * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent#openid-connect-scopes
2920
+ */
2921
+ var loginRequest = {
2922
+ scopes: ["User.Read"]
2923
+ };
2924
+
2925
+ var LoginWithAzureADForm = function () {
2926
+ var setToken = React__default["default"].useContext(AuthContext).setToken;
2927
+ var instance = msalReact.useMsal().instance;
2928
+ var login = function (e) { return __awaiter(void 0, void 0, void 0, function () {
2929
+ var result, api, loginResponse, e_1, e_2;
2930
+ return __generator(this, function (_a) {
2931
+ switch (_a.label) {
2932
+ case 0:
2933
+ e.preventDefault();
2934
+ _a.label = 1;
2935
+ case 1:
2936
+ _a.trys.push([1, 7, , 8]);
2937
+ return [4 /*yield*/, instance.loginPopup(loginRequest)];
2938
+ case 2:
2939
+ result = _a.sent();
2940
+ api = new MESApiService();
2941
+ _a.label = 3;
2942
+ case 3:
2943
+ _a.trys.push([3, 5, , 6]);
2944
+ return [4 /*yield*/, api.loginWithAzureAD(result.accessToken)];
2945
+ case 4:
2946
+ loginResponse = _a.sent();
2947
+ setToken(loginResponse);
2948
+ return [3 /*break*/, 6];
2949
+ case 5:
2950
+ e_1 = _a.sent();
2951
+ console.log(e_1);
2952
+ return [3 /*break*/, 6];
2953
+ case 6: return [3 /*break*/, 8];
2954
+ case 7:
2955
+ e_2 = _a.sent();
2956
+ console.log({ e: e_2 });
2957
+ return [3 /*break*/, 8];
2958
+ case 8: return [2 /*return*/];
2959
+ }
2960
+ });
2961
+ }); };
2962
+ return (React__default["default"].createElement("form", { onSubmit: login },
2963
+ React__default["default"].createElement("div", { className: "row" },
2964
+ React__default["default"].createElement("button", { className: "btn btn-primary mes-button-primary mx-auto col-md-12 mt-3 ", type: "submit" }, "Login with Active Directory"))));
2965
+ };
2966
+
2967
+ var LoginWithAzureAD = function (_a) {
2968
+ var config = _a.config;
2969
+ var msalInstance = new msalBrowser.PublicClientApplication(__assign(__assign({}, msalConfig), {
2970
+ auth: __assign({}, config)
2971
+ }));
2972
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
2973
+ React__default["default"].createElement(msalReact.MsalProvider, { instance: msalInstance },
2974
+ React__default["default"].createElement(LoginWithAzureADForm, null))));
2975
+ };
2976
+
2977
+ var LoginAsGuest = function () {
2978
+ var _a = React__default["default"].useState(false), showError = _a[0], setShowError = _a[1];
2979
+ var _b = React__default["default"].useState(undefined), error = _b[0], setError = _b[1];
2980
+ var setToken = React__default["default"].useContext(AuthContext).setToken;
2981
+ var apiService = new MESApiService();
2982
+ var loginAsGuest = function (e) { return __awaiter(void 0, void 0, void 0, function () {
2983
+ var response;
2984
+ return __generator(this, function (_a) {
2985
+ switch (_a.label) {
2986
+ case 0:
2987
+ e.preventDefault();
2988
+ return [4 /*yield*/, apiService.authenticate('public', 'public')];
2989
+ case 1:
2990
+ response = _a.sent();
2991
+ if (apiService.hasErrors) {
2992
+ setShowError(true);
2993
+ setError(apiService.error);
2994
+ }
2995
+ else {
2996
+ setToken(response);
2997
+ }
2998
+ return [2 /*return*/];
2999
+ }
3000
+ });
3001
+ }); };
3002
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
3003
+ React__default["default"].createElement(reactBootstrap.Alert, { show: showError, variant: "danger", dismissible: true, onClose: function () {
3004
+ setShowError(false);
3005
+ setError(undefined);
3006
+ } },
3007
+ React__default["default"].createElement("strong", null, "Bad credentials"),
3008
+ React__default["default"].createElement("p", null,
3009
+ " ",
3010
+ error === undefined ? 'There was an error' :
3011
+ (error.internalError.message === undefined ? error.internalError : error.internalError.message))),
3012
+ React__default["default"].createElement("div", { className: "row" },
3013
+ React__default["default"].createElement("button", { className: "btn btn-primary mes-button-primary mx-auto col-md-12 mt-3 ", role: "button", onClick: loginAsGuest }, "Guest"))));
3014
+ };
3015
+
3016
+ function Login(_a) {
3017
+ var authConfig = _a.authConfig;
3018
+ var useEmailAndPassword = lodashEs.get(authConfig, 'useEmailAndPassword', true);
3019
+ var useAzureAD = lodashEs.get(authConfig, 'useAzureAD', false);
3020
+ var guestIsEnabled = lodashEs.get(authConfig, 'guestIsEnabled', false);
3021
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
3022
+ React__default["default"].createElement("header", null,
3023
+ React__default["default"].createElement(reactBootstrap.Navbar, { variant: "dark", expand: "lg", className: "mes-primary-color mes-menu-top" },
3024
+ React__default["default"].createElement(reactBootstrap.Navbar.Brand, { href: "/" }, "MESF"))),
3025
+ React__default["default"].createElement("div", { className: "container-fluid" },
3026
+ React__default["default"].createElement("div", { className: "row" },
3027
+ React__default["default"].createElement("div", { className: "col-md-3 mx-auto my-5" },
3028
+ React__default["default"].createElement("div", { className: "card" },
3029
+ React__default["default"].createElement("div", { className: "card-header text-center" }, "Login"),
3030
+ React__default["default"].createElement("div", { className: "card-body m-3" },
3031
+ useEmailAndPassword && React__default["default"].createElement(LoginWithEmailAndPassword, null),
3032
+ useAzureAD && React__default["default"].createElement(LoginWithAzureAD, { config: authConfig.AzureConfig }),
3033
+ guestIsEnabled && React__default["default"].createElement(LoginAsGuest, null))))))));
3034
+ }
3035
+ Login.propTypes = {
3036
+ setToken: PropTypes__default["default"].func
3037
+ };
3038
+
3039
+ function Logout() {
3040
+ var _this = this;
3041
+ var clearToken = React.useContext(AuthContext).clearToken;
3042
+ var navigate = reactRouterDom.useNavigate();
3043
+ var logout = function () { return __awaiter(_this, void 0, void 0, function () {
3044
+ return __generator(this, function (_a) {
3045
+ clearToken();
3046
+ navigate("/");
3047
+ return [2 /*return*/];
3048
+ });
3049
+ }); };
3050
+ React.useEffect(function () {
3051
+ logout();
3052
+ }, []);
3053
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
3054
+ React__default["default"].createElement("div", null, "logging out!!!")));
3055
+ }
3056
+ Logout.propTypes = {
3057
+ clearEvent: PropTypes__default["default"].func
3058
+ };
3059
+
3060
+ var RouterContext = React__default["default"].createContext(function () { return React__default["default"].createElement(React__default["default"].Fragment, null); });
3061
+ var ConfigurationContext = React__default["default"].createContext([
3062
+ [],
3063
+ function () { return (React__default["default"].createElement(React__default["default"].Fragment, null)); }
3064
+ ]);
3065
+ var NavbarContext = React__default["default"].createContext(function () { return React__default["default"].createElement(React__default["default"].Fragment, null); });
3066
+
3067
+ function Header() {
3068
+ var getUserName = useToken().getUserName;
3069
+ var _a = React__default["default"].useState(new Date()), date = _a[0], setDate = _a[1];
3070
+ var userName = React__default["default"].useState(getUserName())[0];
3071
+ var CustomNavbar = React.useContext(NavbarContext);
3072
+ var tick = function () {
3073
+ setDate(new Date());
3074
+ };
3075
+ React__default["default"].useEffect(function () {
3076
+ var timerID = setTimeout(function () {
3077
+ tick();
3078
+ }, 1000);
3079
+ return function () {
3080
+ clearTimeout(timerID);
3081
+ };
3082
+ });
3083
+ return (React__default["default"].createElement(reactBootstrap.Navbar, { variant: "dark", expand: "lg", className: "mes-primary-color mes-menu-top" },
3084
+ React__default["default"].createElement(reactBootstrap.Container, { fluid: true },
3085
+ React__default["default"].createElement(reactBootstrap.Navbar.Brand, { href: "/" }, "MESF"),
3086
+ React__default["default"].createElement(reactBootstrap.Navbar.Toggle, { "aria-controls": "basic-navbar-nav" }),
3087
+ React__default["default"].createElement(reactBootstrap.Navbar.Collapse, { id: "basic-navbar-nav" },
3088
+ React__default["default"].createElement(reactBootstrap.Nav, { className: "me-auto" },
3089
+ React__default["default"].createElement(reactBootstrap.Nav.Link, { href: "/" }, "Home"),
3090
+ React__default["default"].createElement(CustomNavbar, null)),
3091
+ React__default["default"].createElement(reactBootstrap.Nav, { className: "ml-auto" },
3092
+ React__default["default"].createElement(reactBootstrap.Nav, null,
3093
+ React__default["default"].createElement("span", { className: "navbar-text" }, date.toLocaleTimeString())),
3094
+ React__default["default"].createElement(reactBootstrap.Nav, { className: "mx-2" },
3095
+ React__default["default"].createElement(reactBootstrap.Nav.Link, { href: "configuration" },
3096
+ React__default["default"].createElement("i", { className: "fas fa-cog" }))),
3097
+ React__default["default"].createElement(reactBootstrap.NavDropdown, { title: React__default["default"].createElement(React__default["default"].Fragment, null,
3098
+ React__default["default"].createElement("i", { className: "fas fa-language mx-2" }),
3099
+ "EN"), id: "languages-menu" },
3100
+ React__default["default"].createElement(reactBootstrap.NavDropdown.Item, { href: "#" }, "EN"),
3101
+ React__default["default"].createElement(reactBootstrap.NavDropdown.Item, { href: "#" }, "ES"),
3102
+ React__default["default"].createElement(reactBootstrap.NavDropdown.Item, { href: "#" }, "PT")),
3103
+ React__default["default"].createElement(reactBootstrap.NavDropdown, { id: "user-menu", title: React__default["default"].createElement(React__default["default"].Fragment, null,
3104
+ React__default["default"].createElement("i", { className: "fas fa-user mx-2" }),
3105
+ userName), className: "mx-2" },
3106
+ React__default["default"].createElement(reactBootstrap.NavDropdown.Item, { href: "account" }, "Account"),
3107
+ React__default["default"].createElement(reactBootstrap.NavDropdown.Item, { href: "logout" }, "Logout")))))));
3108
+ }
3109
+
3110
+ function Configuration() {
3111
+ var option = reactRouterDom.useParams().option;
3112
+ var _a = React.useContext(ConfigurationContext), customConfiguration = _a[0], CustomSidebar = _a[1];
3113
+ var routes = __spreadArray(__spreadArray([
3114
+ {
3115
+ path: "/",
3116
+ sidebar: function () { return React__default["default"].createElement("div", null, "configuration"); },
3117
+ main: function () { return React__default["default"].createElement(reactRouterDom.Navigate, { to: "users" }); }
3118
+ },
3119
+ {
3120
+ path: "shifts",
3121
+ sidebar: function () { return React__default["default"].createElement("div", null, "shifts"); },
3122
+ main: function () { return React__default["default"].createElement(ShiftCrew, null); }
3123
+ },
3124
+ {
3125
+ path: "users",
3126
+ sidebar: function () { return React__default["default"].createElement("div", null, "users"); },
3127
+ main: function () { return React__default["default"].createElement(UserManagment, null); }
3128
+ },
3129
+ {
3130
+ path: "profiles",
3131
+ sidebar: function () { return React__default["default"].createElement("div", null, "profiles"); },
3132
+ main: function () { return React__default["default"].createElement(ProfileManagement, null); }
3133
+ }
3134
+ ], customConfiguration, true), [
3135
+ {
3136
+ path: "logs",
3137
+ sidebar: function () { return React__default["default"].createElement("div", null, "logs"); },
3138
+ main: function () { return React__default["default"].createElement(LogConfig, null); }
3139
+ },
3140
+ {
3141
+ path: "jobs",
3142
+ sidebar: function () { return React__default["default"].createElement("div", null, "jobs"); },
3143
+ main: function () { return React__default["default"].createElement(JobConfig, null); }
3144
+ }
3145
+ ], false);
3146
+ return (React__default["default"].createElement(GenericPanel, { title: "Configuration", description: "" },
3147
+ React__default["default"].createElement("div", { className: "row" },
3148
+ React__default["default"].createElement("div", { className: "col-md-2 mt-3 pt-0 pr-0 mes-div-submenu" },
3149
+ React__default["default"].createElement("h3", { className: "mes-menu-group" }, "Plant"),
3150
+ React__default["default"].createElement(MenuList__default["default"], { className: "mes-submenu" },
3151
+ React__default["default"].createElement(MenuItem__default["default"], { selected: option === 'shifts', className: "p-0" },
3152
+ React__default["default"].createElement(reactRouterDom.Link, { to: "/configuration/shifts", className: "nav-link" }, "Shift / Crews"))),
3153
+ React__default["default"].createElement("h3", { className: "mes-menu-group" }, "Security"),
3154
+ React__default["default"].createElement(MenuList__default["default"], { className: "mes-submenu" },
3155
+ React__default["default"].createElement(MenuItem__default["default"], { selected: option === 'users', className: "p-0" },
3156
+ React__default["default"].createElement(reactRouterDom.Link, { to: "/configuration/users", className: "nav-link" }, "Users")),
3157
+ React__default["default"].createElement(MenuItem__default["default"], { selected: option === 'profiles', className: "p-0" },
3158
+ React__default["default"].createElement(reactRouterDom.Link, { to: "/configuration/profiles", className: "nav-link" }, "Profiles"))),
3159
+ React__default["default"].createElement(CustomSidebar, { option: option }),
3160
+ React__default["default"].createElement("h3", { className: "mes-menu-group" }, "Maintenance"),
3161
+ React__default["default"].createElement(MenuList__default["default"], { className: "mes-submenu" },
3162
+ React__default["default"].createElement(MenuItem__default["default"], { selected: option === 'logs', className: "p-0" },
3163
+ React__default["default"].createElement(reactRouterDom.Link, { to: "/configuration/logs", className: "nav-link" }, "Logs")),
3164
+ React__default["default"].createElement(MenuItem__default["default"], { selected: option === 'jobs', className: "p-0" },
3165
+ React__default["default"].createElement(reactRouterDom.Link, { to: "/configuration/jobs", className: "nav-link" }, "Jobs")))),
3166
+ React__default["default"].createElement("div", { className: "col-md-9 m-3" },
3167
+ React__default["default"].createElement(reactRouterDom.Routes, null, routes.map(function (route, index) { return (React__default["default"].createElement(reactRouterDom.Route, { key: index, path: route.path, element: React__default["default"].createElement(route.main, null) })); }))))));
3168
+ }
3169
+
3170
+ var Home = function () { return (React__default["default"].createElement("div", { style: {
3171
+ backgroundImage: "url(\"/home.jpg\")",
3172
+ backgroundPosition: 'center',
3173
+ backgroundSize: 'cover',
3174
+ backgroundRepeat: 'no-repeat',
3175
+ minHeight: '100%',
3176
+ height: '100vh',
3177
+ width: '100%',
3178
+ position: 'absolute'
3179
+ } })); };
3180
+
3181
+ var MESFMainRouter = function () {
3182
+ var CustomRoutes = React.useContext(RouterContext);
3183
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
3184
+ React__default["default"].createElement(reactRouterDom.Routes, null,
3185
+ React__default["default"].createElement(reactRouterDom.Route, { path: "/", element: React__default["default"].createElement(reactRouterDom.Navigate, { replace: true, to: "/home" }) }),
3186
+ React__default["default"].createElement(reactRouterDom.Route, { path: "/configuration/*", element: React__default["default"].createElement(Configuration, null) }),
3187
+ React__default["default"].createElement(reactRouterDom.Route, { path: "/account", element: React__default["default"].createElement(Account, null) }),
3188
+ React__default["default"].createElement(reactRouterDom.Route, { path: "/home", element: React__default["default"].createElement(Home, null) })),
3189
+ React__default["default"].createElement(CustomRoutes, null)));
3190
+ };
3191
+
3192
+ var MESFMainContainer = function () { return (React__default["default"].createElement("div", { id: "mainSection", className: "container-fluid container-fluid-main" },
3193
+ React__default["default"].createElement(MESFMainRouter, null))); };
3194
+
3195
+ var Navigation = function () { return (React__default["default"].createElement(React__default["default"].Fragment, null,
3196
+ React__default["default"].createElement("div", { className: "wrapper" },
3197
+ React__default["default"].createElement(Header, null),
3198
+ React__default["default"].createElement(MESFMainContainer, null)))); };
3199
+
3200
+ var e=[],t=[];function n(n,r){if(n&&"undefined"!=typeof document){var a,s=!0===r.prepend?"prepend":"append",d=!0===r.singleTag,i="string"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName("head")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t[u]={}),a=t[u]&&t[u][s]?t[u][s]:t[u][s]=c();}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n));}function c(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a="prepend"===s?"afterbegin":"beforeend";return i.insertAdjacentElement(a,e),e}}
3201
+
3202
+ var css = "body {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n background-color: #fafbfc !important;\n}\n.container-fluid-main{\n padding-right: 0px !important; \n padding-left: 0px !important;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',\n monospace;\n}\n\n.mes-primary-color {\n background-color: #479dc4 !important;\n}\n.mes-button-primary{\n background-color: #479dc4 !important;\n border-color: #479dc4 !important;\n}\n\n.mes-selectable-datagrid .MuiDataGrid-row{\n cursor: pointer;\n}\n\n.mes-menu-top .navbar-brand{\n color: #FFFF !important;\n}\n.mes-menu-top .nav-link {\n color: #FFFF !important;\n}\n.mes-menu-top .navbar-toggler {\n color: #FFFF !important;\n}\n.mes-menu-top .navbar-text {\n color: #FFFF !important;\n}\n.mes-footer-login{\n position: absolute;\n bottom: 0;\n width: 100%;\n height: 10em;\n line-height: 60px;\n text-align:center;\n}\n.mes-filter-datepicker{\n padding: unset !important;\n border-top-left-radius: 0 !important;\n border-bottom-left-radius: 0 !important;\n padding-top: 0.375rem !important;\n padding-bottom: 0.375rem !important;\n padding-left: 0.75rem !important;\n cursor: pointer !important;\n max-width: 120px;\n}\n.mes-filter-datetimepicker{\n max-width: 97px;\n}\n.mes-not-rounded{\n border-radius: unset !important;\n}\n\n.mes-numeric{\n text-align: right;\n}\n.mes-drag-over{\n border: 3px dotted #666;\n background-color: #479dc4 !important;\n}\n.mes-drag-start{\n border: 3px solid #666;\n}\n\n.mes-selectable{\n cursor: pointer !important;\n}\n\n.mes-custom-select{\n width: auto !important;\n padding: 0.375rem 0 0.375rem 0 !important;\n background: unset !important;\n font-family: inherit !important;\n}\n.mes-custom-select .MuiSelect-select{\n padding-left: 14px;\n}\n\n.mes-custom-select::before{\n border-bottom: unset !important;\n}\n.mes-custom-select::after{\n border-bottom: unset !important;\n}\n.mes-no-border{\n border: unset;\n}\n.mes-no-border:focus-visible {\n outline: unset;\n}\n.mes-div-submenu{\n border-right: 1px solid #cfdbe2; \n}\n.mes-submenu a{\n width: 100% !important;\n /* color: rgba(0, 0, 0, 0.87); */\n color: #479dc4\n}\n.mes-submenu .Mui-selected{\n border-right: 3px solid #479dc4; \n}\n.mes-menu-group{\n font-size: 20px;\n line-height: 1.1;\n color: #929292; \n font-weight: normal; \n}\n\n/********************MUI DATAGRID*****************************/\n.Mui-selected{\n font-weight: bolder !important;\n opacity: 1 !important;\n}\n\n.mes-upload-control{\n\n}\n.mes-upload-control .file-box{\n /* border : 1px solid black; */\n height : 100px;\n position: relative; \n}\n.mes-upload-control .file-detail{\n position: absolute;\n left: 0px;\n top: 0px; \n z-index: 1;\n height: 100%;\n width: 100%;\n}\n\n.mes-upload-control input[type=file]{\n left: 0px;\n top: 0px;\n opacity: 0;\n z-index: 10000;\n height: 100%;\n cursor: pointer;\n}\n.mes-upload-control table{\n width: 100%;\n}\n.mes-upload-control td{\n font-size: 0.8rem !important;\n max-width:0;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;\n}\n\n\n.input-group-text{\n background-color: #ced2cc !important;\n /* border: 1px solid #ced4da !important; */\n /* color: #000000 !important; */\n}\n\n\n\n\n.content-wrapper {\n padding: 15px;\n width: 100%;\n border-top: 1px solid rgba(0, 0, 0, 0.15);\n margin-top: -1px;\n}\n.content-wrapper > .unwrap {\n margin: -15px;\n}\n@media only screen and (min-width: 768px) {\n .content-wrapper > .unwrap {\n margin: -20px;\n }\n}\n.content-wrapper > h3,\n.content-wrapper > .content-heading {\n font-size: 24px;\n line-height: 1.1;\n color: #929292;\n margin: -15px;\n margin-bottom: 20px;\n padding: 15px;\n font-weight: normal;\n background-color: #fafbfc;\n border-bottom: 1px solid #cfdbe2;\n}\n.content-wrapper > h3 > small,\n.content-wrapper > .content-heading > small {\n display: block;\n font-size: 12px;\n color: #909fa7;\n}\n.content-wrapper > button,\n.content-wrapper > .btn {\n margin: 10px 10px 0 0;\n}\n.content-wrapper .container,\n.content-wrapper .container-fluid {\n padding-left: 0;\n padding-right: 0;\n}\n@media only screen and (min-width: 768px) {\n .content-wrapper {\n padding: 20px;\n }\n .content-wrapper > h3,\n .content-wrapper > .content-heading {\n margin: -20px;\n margin-bottom: 5px;\n padding: 15px;\n }\n .content-wrapper > button,\n .content-wrapper > .btn {\n margin: 0;\n }\n}\n\n @media print {\n .sidebar,\n .topnavbar,\n .offsidebar,\n .btn {\n display: none !important;\n width: 0 !important;\n height: 0 !important;\n }\n .wrapper,\n .wrapper > section,\n .content-wrapper {\n margin: 0 !important;\n /* remove margin used for sidebar and expand the content */\n padding: 0 !important;\n width: 100% !important;\n }\n .content-wrapper {\n overflow: hidden !important;\n }\n }\n ";
3203
+ n(css,{});
3204
+
3205
+ function MESFMain(props) {
3206
+ return (React__default["default"].createElement(AuthProvider, { authConfig: props.authentication },
3207
+ React__default["default"].createElement(RouterContext.Provider, { value: props.routes },
3208
+ React__default["default"].createElement(NavbarContext.Provider, { value: props.navbar },
3209
+ React__default["default"].createElement(ConfigurationContext.Provider, { value: props.configurations },
3210
+ React__default["default"].createElement(reactRouterDom.BrowserRouter, null,
3211
+ React__default["default"].createElement(reactRouterDom.Routes, null,
3212
+ React__default["default"].createElement(reactRouterDom.Route, { path: "/logout", element: React__default["default"].createElement(Logout, null) })),
3213
+ React__default["default"].createElement(Navigation, null)))))));
3214
+ }
3215
+
3216
+ exports.Account = Account;
3217
+ exports.AuthContext = AuthContext;
3218
+ exports.AuthProvider = AuthProvider;
3219
+ exports.BarChartControl = BarChartControl;
3220
+ exports.ChangePassword = ChangePassword;
3221
+ exports.CheckBoxControl = CheckBoxControl;
3222
+ exports.Configuration = Configuration$1;
3223
+ exports.CurrencyFormatter = CurrencyFormatter;
3224
+ exports.DataGridControl = DataGridControl;
3225
+ exports.DateControl = DateControl;
3226
+ exports.DateFormatter = DateFormatter;
3227
+ exports.DateTimeControl = DateTimeControl;
3228
+ exports.DateTimeFormatter = DateTimeFormatter;
3229
+ exports.FetchError = FetchError;
3230
+ exports.FilterPanel = FilterPanel;
3231
+ exports.GenericPanel = GenericPanel;
3232
+ exports.GenericTable = GenericTable;
3233
+ exports.GetCrewColor = GetCrewColor;
3234
+ exports.GetShiftColor = GetShiftColor;
3235
+ exports.HorizontalTextControl = HorizontalTextControl;
3236
+ exports.IntegerFormatter = IntegerFormatter;
3237
+ exports.JobConfig = JobConfig;
3238
+ exports.LogConfig = LogConfig;
3239
+ exports.Login = Login;
3240
+ exports.Logout = Logout;
3241
+ exports.LongFilterPanel = LongFilterPanel;
3242
+ exports.MESApiService = MESApiService;
3243
+ exports.MESFMain = MESFMain;
3244
+ exports.MESSAGE_API = MESSAGE_API;
3245
+ exports.MESSAGE_ERRORS = MESSAGE_ERRORS;
3246
+ exports.MasterDetailPanel = MasterDetailPanel;
3247
+ exports.ModalTreeFilterControl = ModalTreeFilterControl;
3248
+ exports.MultipleSelectorControl = MultipleSelectorControl;
3249
+ exports.NumberFormatter = NumberFormatter;
3250
+ exports.NumericTextControl = NumericTextControl;
3251
+ exports.ProfileManagement = ProfileManagement;
3252
+ exports.ShiftCrew = ShiftCrew;
3253
+ exports.SimpleInputSearchControl = SimpleInputSearchControl;
3254
+ exports.SimplePasswordControl = SimplePasswordControl;
3255
+ exports.SimpleSelectorControl = SimpleSelectorControl;
3256
+ exports.SimpleTextAreaControl = SimpleTextAreaControl;
3257
+ exports.SimpleTextControl = SimpleTextControl;
3258
+ exports.SimpleTimeControl = SimpleTimeControl;
3259
+ exports.TimeControl = TimeControl;
3260
+ exports.TimeFormatter = TimeFormatter;
3261
+ exports.TreePickerControl = TreePickerControl;
3262
+ exports.USER_LABELS = USER_LABELS;
3263
+ exports.UploadFileControl = UploadFileControl;
3264
+ exports.UserManagment = UserManagment;
3265
+ exports.formatNumber = formatNumber;
3266
+ exports.getCrewStyle = getCrewStyle;
3267
+ exports.getShiftStyle = getShiftStyle;
3268
+ exports.useToken = useToken;