@dexteel/mesf-core 4.7.7 → 4.7.9

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.
package/dist/index.esm.js CHANGED
@@ -35,6 +35,9 @@ import Popover from '@material-ui/core/Popover';
35
35
  import ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';
36
36
  import FolderIcon from '@material-ui/icons/Folder';
37
37
  import InsertDriveFileIcon from '@material-ui/icons/InsertDriveFile';
38
+ import CreateIcon from '@material-ui/icons/Create';
39
+ import DeleteIcon from '@material-ui/icons/Delete';
40
+ import LockIcon from '@material-ui/icons/Lock';
38
41
  import { ArrowRight, ChevronLeft, ChevronRight } from '@material-ui/icons';
39
42
  import { Line } from 'react-chartjs-2';
40
43
  import PersonPinCircleIcon from '@material-ui/icons/PersonPinCircle';
@@ -63,7 +66,6 @@ import { MuiPickersUtilsProvider, KeyboardDatePicker, KeyboardTimePicker } from
63
66
  import MomentUtils from '@date-io/moment';
64
67
  import InputLabel from '@material-ui/core/InputLabel';
65
68
  import DialogContentText$1 from '@material-ui/core/DialogContentText';
66
- import DeleteIcon from '@material-ui/icons/Delete';
67
69
  import EditIcon from '@material-ui/icons/Edit';
68
70
  import 'ag-grid-enterprise/styles/ag-grid.css';
69
71
  import 'ag-grid-enterprise/styles/ag-theme-balham.min.css';
@@ -1329,7 +1331,8 @@ var DialogTitle = withStyles(styles)(function (props) {
1329
1331
  var DialogContent = withStyles(function (theme) { return ({
1330
1332
  root: {
1331
1333
  padding: theme.spacing(2),
1332
- minWidth: 600
1334
+ minWidth: 600,
1335
+ overflow: 'hidden'
1333
1336
  }
1334
1337
  }); })(DialogContent$1);
1335
1338
  var DialogActions = withStyles(function (theme) { return ({
@@ -10193,6 +10196,21 @@ var upsertView = function (ViewId, ViewName, isPublic) { return __awaiter(void 0
10193
10196
  }
10194
10197
  });
10195
10198
  }); };
10199
+ var deleteView = function (ViewId) { return __awaiter(void 0, void 0, void 0, function () {
10200
+ var apiService, parameters, resp;
10201
+ return __generator(this, function (_a) {
10202
+ switch (_a.label) {
10203
+ case 0:
10204
+ apiService = new MESApiService();
10205
+ parameters = [];
10206
+ parameters.push({ name: "ViewId", value: ViewId });
10207
+ return [4 /*yield*/, apiService.callV2("[mssql2022].[IH_100020].[ih].[DeleteView]", parameters)];
10208
+ case 1:
10209
+ resp = _a.sent();
10210
+ return [2 /*return*/, resp];
10211
+ }
10212
+ });
10213
+ }); };
10196
10214
  //viewTags
10197
10215
  var getViewTags = function (ViewId) { return __awaiter(void 0, void 0, void 0, function () {
10198
10216
  var apiService, parameters, resp;
@@ -10247,47 +10265,6 @@ var deleteViewTag = function (ViewId, TagId) { return __awaiter(void 0, void 0,
10247
10265
  });
10248
10266
  }); };
10249
10267
 
10250
- var LoadViewModal = function (_a) {
10251
- var open = _a.open, handleClose = _a.handleClose;
10252
- var _b = useTrendingContext(), _c = _b.state, views = _c.views, viewSelected = _c.viewSelected, _d = _b.actions; _d.setViews; var setViewTags = _d.setViewTags, setViewSelected = _d.setViewSelected;
10253
- var _e = useState(false), isLoading = _e[0], setIsLoading = _e[1];
10254
- var _f = useState(''), error = _f[0], setError = _f[1];
10255
- var handleSelect = function () { return __awaiter(void 0, void 0, void 0, function () {
10256
- var viewTagsResp;
10257
- return __generator(this, function (_a) {
10258
- switch (_a.label) {
10259
- case 0:
10260
- if (!viewSelected) return [3 /*break*/, 2];
10261
- setIsLoading(true);
10262
- return [4 /*yield*/, getViewTags(viewSelected.ViewId)];
10263
- case 1:
10264
- viewTagsResp = _a.sent();
10265
- if (viewTagsResp.ok) {
10266
- setViewTags(viewTagsResp.data.tables[0].rows);
10267
- }
10268
- else {
10269
- setError(viewTagsResp.message);
10270
- }
10271
- setIsLoading(false);
10272
- handleClose(true);
10273
- _a.label = 2;
10274
- case 2: return [2 /*return*/];
10275
- }
10276
- });
10277
- }); };
10278
- return (React__default.createElement("div", null,
10279
- React__default.createElement(MesfModal, { open: open, handleClose: function () { return handleClose(false); }, maxWidth: "xl", "aria-labelledby": "modal-modal-title", "aria-describedby": "modal-modal-description", title: 'Tags' },
10280
- React__default.createElement(MesfModal.Content, null,
10281
- React__default.createElement(Grid$1, { container: true },
10282
- React__default.createElement(Grid$1, { item: true, md: 12 }, views.length ? (React__default.createElement(Autocomplete, { size: 'small', id: "list-of-views", options: views, getOptionLabel: function (option) { return option.ViewName; }, onChange: function (ev, val) { return setViewSelected(val); }, style: { width: "100%" }, renderInput: function (params) { return React__default.createElement(TextField, __assign({}, params, { label: "Views", variant: "outlined" })); } })) :
10283
- (React__default.createElement("div", null, "No tag views detected, please add one"))))),
10284
- React__default.createElement(MesfModal.Actions, null,
10285
- React__default.createElement("div", { style: { paddingTop: "1rem" } },
10286
- React__default.createElement(Button$1, { variant: 'outlined', style: { marginRight: "1rem" }, color: 'secondary', onClick: function () { return handleClose(false); } }, "Cancel"),
10287
- React__default.createElement(ButtonWithLoading, { onClick: handleSelect, variant: 'contained', color: 'primary', isLoading: isLoading, style: { marginRight: "1rem" } }, "Apply")))),
10288
- React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(''); } })));
10289
- };
10290
-
10291
10268
  var useTrendingStyles = makeStyles$1(function (theme) { return ({
10292
10269
  datetimePicker: {
10293
10270
  alignItems: "center",
@@ -10364,26 +10341,261 @@ var useTrendingStyles = makeStyles$1(function (theme) { return ({
10364
10341
  }
10365
10342
  },
10366
10343
  color: 'black'
10344
+ },
10345
+ iconContainer: {
10346
+ display: 'flex',
10347
+ justifyContent: 'flex-end',
10348
+ alignItems: 'center',
10349
+ flex: 1
10350
+ },
10351
+ optionContainer: {
10352
+ display: 'flex',
10353
+ justifyContent: 'flex-start',
10354
+ alignItems: 'center',
10355
+ width: '100%'
10356
+ },
10357
+ optionLabel: {
10358
+ flexGrow: 1
10359
+ },
10360
+ inputCustom: {
10361
+ color: 'rgba(0, 0, 0, 0.87)',
10362
+ cursor: 'text',
10363
+ fontSize: '0.7rem',
10364
+ boxSizing: 'border-box',
10365
+ fontFamily: '"Roboto", "Helvetica", "Arial", sans-serif',
10366
+ fontWeight: 400,
10367
+ lineHeight: 1.1876,
10368
+ letterSpacing: '0.00938em',
10369
+ '& .MuiOutlinedInput-input': {
10370
+ padding: '10px 10px'
10371
+ }
10367
10372
  }
10368
10373
  }); });
10369
10374
 
10375
+ var DeleteViewModal = function (_a) {
10376
+ var open = _a.open, handleClose = _a.handleClose, view = _a.view;
10377
+ var _b = useState(false), isLoading = _b[0], setIsLoading = _b[1];
10378
+ var _c = useState(''), error = _c[0], setError = _c[1];
10379
+ var handleSubmit = function () { return __awaiter(void 0, void 0, void 0, function () {
10380
+ var resp;
10381
+ return __generator(this, function (_a) {
10382
+ switch (_a.label) {
10383
+ case 0:
10384
+ setIsLoading(true);
10385
+ if (!!isNil$1(view)) return [3 /*break*/, 2];
10386
+ return [4 /*yield*/, deleteView(view.ViewId)];
10387
+ case 1:
10388
+ resp = _a.sent();
10389
+ if (!resp.ok) {
10390
+ setError(resp.message);
10391
+ }
10392
+ else {
10393
+ handleClose(true);
10394
+ }
10395
+ _a.label = 2;
10396
+ case 2:
10397
+ setIsLoading(false);
10398
+ return [2 /*return*/];
10399
+ }
10400
+ });
10401
+ }); };
10402
+ return (React__default.createElement(React__default.Fragment, null,
10403
+ React__default.createElement(MesfModal, { open: open, handleClose: function () { return handleClose(false); }, maxWidth: "xl", "aria-labelledby": "modal-modal-title", "aria-describedby": "modal-modal-description", title: 'Delete View' },
10404
+ React__default.createElement(Divider, null),
10405
+ React__default.createElement(MesfModal.Content, null, !isNil$1(view) ?
10406
+ (React__default.createElement(Grid$1, { container: true, spacing: 5, style: { padding: "2rem" } },
10407
+ React__default.createElement(Grid$1, { item: true, md: 12, xs: 12, style: { padding: "10px", width: "100%" } },
10408
+ React__default.createElement(Typography, null,
10409
+ "Are yu sure you want to delete ",
10410
+ React__default.createElement("strong", null, view === null || view === void 0 ? void 0 : view.ViewName),
10411
+ " ?")))) :
10412
+ (React__default.createElement(Typography, null, "ERROR: No view detected, please select one"))),
10413
+ React__default.createElement(Divider, null),
10414
+ React__default.createElement(MesfModal.Actions, null,
10415
+ React__default.createElement(Grid$1, { container: true, spacing: 1, style: { display: 'flex', alignItems: 'flex-end', justifyContent: 'flex-end' } },
10416
+ React__default.createElement(Grid$1, { item: true },
10417
+ React__default.createElement(Button$1, { variant: 'outlined', color: 'secondary', onClick: function () { return handleClose(false); } }, "Cancel")),
10418
+ React__default.createElement(Grid$1, { item: true }, !isNil$1(view) ?
10419
+ React__default.createElement(ButtonWithLoading, { variant: 'contained', color: 'secondary', onClick: handleSubmit, isLoading: isLoading }, "Delete")
10420
+ : (React__default.createElement(Button$1, { variant: 'contained', style: { marginRight: "1rem" }, color: 'primary', onClick: function () { return handleClose(false); } }, "Ok")))))),
10421
+ React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(''); } })));
10422
+ };
10423
+
10424
+ var EditViewModal = function (_a) {
10425
+ var open = _a.open, handleClose = _a.handleClose, view = _a.view;
10426
+ var classes = useTrendingStyles();
10427
+ var _b = useState(''), newName = _b[0], setNewName = _b[1];
10428
+ var _c = useState(true), isPublic = _c[0], setIsPublic = _c[1];
10429
+ var _d = useState(false), isLoading = _d[0], setIsLoading = _d[1];
10430
+ var _e = useState(''), error = _e[0], setError = _e[1];
10431
+ var handleSubmit = function () { return __awaiter(void 0, void 0, void 0, function () {
10432
+ var resp;
10433
+ return __generator(this, function (_a) {
10434
+ switch (_a.label) {
10435
+ case 0:
10436
+ setIsLoading(true);
10437
+ if (!!isNil$1(view)) return [3 /*break*/, 2];
10438
+ return [4 /*yield*/, upsertView(view.ViewId, newName, isPublic)];
10439
+ case 1:
10440
+ resp = _a.sent();
10441
+ if (!resp.ok) {
10442
+ setError(resp.message);
10443
+ }
10444
+ else {
10445
+ handleClose(true);
10446
+ }
10447
+ _a.label = 2;
10448
+ case 2:
10449
+ setIsLoading(false);
10450
+ return [2 /*return*/];
10451
+ }
10452
+ });
10453
+ }); };
10454
+ var handleChangeInput = function (e) {
10455
+ e.preventDefault();
10456
+ var name = e.target.value;
10457
+ setNewName(name);
10458
+ };
10459
+ var handleCheck = function () { return setIsPublic(!isPublic); };
10460
+ useEffect(function () {
10461
+ if (view) {
10462
+ setIsPublic(view.IsPublic);
10463
+ setNewName(view.ViewName);
10464
+ }
10465
+ }, [view]);
10466
+ return (React__default.createElement(React__default.Fragment, null,
10467
+ React__default.createElement(MesfModal, { open: open, handleClose: function () { return handleClose(false); }, maxWidth: "xl", "aria-labelledby": "modal-modal-title", "aria-describedby": "modal-modal-description", title: 'Update View' },
10468
+ React__default.createElement(Divider, null),
10469
+ React__default.createElement(MesfModal.Content, null, !isNil$1(view) ?
10470
+ (React__default.createElement(Grid$1, { container: true, spacing: 5, style: { padding: "2rem" } },
10471
+ React__default.createElement(Grid$1, { item: true, md: 12, xs: 12, style: { padding: "10px", width: "100%" } },
10472
+ React__default.createElement(TextField, { required: true, className: classes.inputCustom, id: "viewName", label: "Name", variant: "outlined", onChange: handleChangeInput, value: newName })),
10473
+ React__default.createElement(Grid$1, { item: true, md: 12, xs: 12, style: { paddingTop: "2rem" }, className: classes.isPublicCheckbox },
10474
+ React__default.createElement("label", null,
10475
+ React__default.createElement("input", { type: "checkbox", checked: isPublic, onChange: handleCheck }),
10476
+ React__default.createElement(Typography, null, "Public"))))) :
10477
+ (React__default.createElement(Typography, null, "ERROR: No view detected, please select one"))),
10478
+ React__default.createElement(Divider, null),
10479
+ React__default.createElement(MesfModal.Actions, null,
10480
+ React__default.createElement(Grid$1, { container: true, spacing: 1, style: { display: 'flex', alignItems: 'flex-end', justifyContent: 'flex-end' } },
10481
+ React__default.createElement(Grid$1, { item: true },
10482
+ React__default.createElement(Button$1, { variant: 'outlined', color: 'secondary', onClick: function () { return handleClose(false); } }, "Cancel")),
10483
+ React__default.createElement(Grid$1, { item: true }, !isNil$1(view) ?
10484
+ React__default.createElement(ButtonWithLoading, { variant: 'contained', color: 'primary', onClick: handleSubmit, isLoading: isLoading }, "Update")
10485
+ : (React__default.createElement(Button$1, { variant: 'contained', style: { marginRight: "1rem" }, color: 'primary', onClick: function () { return handleClose(false); } }, "Ok")))))),
10486
+ React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(''); } })));
10487
+ };
10488
+
10489
+ var LoadViewModal = function (_a) {
10490
+ var open = _a.open, handleClose = _a.handleClose, getTagsFromAPI = _a.getTagsFromAPI;
10491
+ var _b = useTrendingContext(), _c = _b.state, views = _c.views, viewSelected = _c.viewSelected, _d = _b.actions; _d.setViews; var setViewTags = _d.setViewTags, setViewSelected = _d.setViewSelected;
10492
+ var classes = useTrendingStyles();
10493
+ var _e = useState(null), viewForDelete = _e[0], setViewForDelete = _e[1];
10494
+ var _f = useState(null), viewForEdit = _f[0], setViewForEdit = _f[1];
10495
+ var _g = useState(false), deleteViewModalOpen = _g[0], setDeleteViewModalOpen = _g[1];
10496
+ var _h = useState(false), editViewModalOpen = _h[0], setEditViewModalOpen = _h[1];
10497
+ var _j = useState(false), allViewsChecked = _j[0], setAllViewsChecked = _j[1];
10498
+ var _k = useState(false), isLoading = _k[0], setIsLoading = _k[1];
10499
+ var _l = useState(''), error = _l[0], setError = _l[1];
10500
+ var handleSelect = function () { return __awaiter(void 0, void 0, void 0, function () {
10501
+ var viewTagsResp;
10502
+ return __generator(this, function (_a) {
10503
+ switch (_a.label) {
10504
+ case 0:
10505
+ if (!viewSelected) return [3 /*break*/, 2];
10506
+ setIsLoading(true);
10507
+ return [4 /*yield*/, getViewTags(viewSelected.ViewId)];
10508
+ case 1:
10509
+ viewTagsResp = _a.sent();
10510
+ if (viewTagsResp.ok) {
10511
+ setViewTags(viewTagsResp.data.tables[0].rows);
10512
+ }
10513
+ else {
10514
+ setError(viewTagsResp.message);
10515
+ }
10516
+ setIsLoading(false);
10517
+ handleClose(true);
10518
+ _a.label = 2;
10519
+ case 2: return [2 /*return*/];
10520
+ }
10521
+ });
10522
+ }); };
10523
+ var handleDeleteView = function (view, e) { return __awaiter(void 0, void 0, void 0, function () {
10524
+ return __generator(this, function (_a) {
10525
+ e.stopPropagation();
10526
+ setViewForDelete(view);
10527
+ setDeleteViewModalOpen(true);
10528
+ return [2 /*return*/];
10529
+ });
10530
+ }); };
10531
+ var handleEditView = function (view, e) { return __awaiter(void 0, void 0, void 0, function () {
10532
+ return __generator(this, function (_a) {
10533
+ setViewForEdit(view);
10534
+ setEditViewModalOpen(true);
10535
+ return [2 /*return*/];
10536
+ });
10537
+ }); };
10538
+ var handleAllViewsCheckbox = function () {
10539
+ setAllViewsChecked(function (prev) { return !prev; });
10540
+ };
10541
+ var privateViews = useMemo(function () {
10542
+ return views.filter(function (v) { return v.IsPublic === false; });
10543
+ }, [views, allViewsChecked]);
10544
+ return (React__default.createElement("div", null,
10545
+ React__default.createElement(MesfModal, { open: open, handleClose: function () { return handleClose(false); }, maxWidth: "xl", "aria-labelledby": "modal-modal-title", "aria-describedby": "modal-modal-description", title: 'Views' },
10546
+ React__default.createElement(MesfModal.Content, null,
10547
+ React__default.createElement(Grid$1, { container: true }, views.length ? (React__default.createElement(React__default.Fragment, null,
10548
+ React__default.createElement(Grid$1, { item: true, md: 12 },
10549
+ React__default.createElement("div", { className: classes.isPublicCheckbox, style: { paddingBottom: '1rem' } },
10550
+ React__default.createElement("label", { htmlFor: "" },
10551
+ React__default.createElement("input", { type: "checkbox", checked: allViewsChecked, onChange: handleAllViewsCheckbox }),
10552
+ React__default.createElement(Typography, null, "All Views")))),
10553
+ React__default.createElement(Grid$1, { item: true, md: 12 },
10554
+ React__default.createElement(Autocomplete, { size: 'small', id: "list-of-views", options: allViewsChecked ? views : privateViews, getOptionLabel: function (option) { return option.ViewName; }, onChange: function (ev, val) { return setViewSelected(val); }, style: { width: "100%" }, renderOption: function (option) { return (React__default.createElement("div", { className: classes.optionContainer },
10555
+ React__default.createElement("div", { className: classes.optionLabel }, option.ViewName),
10556
+ React__default.createElement("div", { className: classes.iconContainer },
10557
+ option.IsPublic ? '' :
10558
+ React__default.createElement(React__default.Fragment, null,
10559
+ React__default.createElement(Tooltip, { title: "Private", arrow: true },
10560
+ React__default.createElement(LockIcon, { fontSize: 'small', style: { color: 'black', height: "18px", width: '18px', cursor: 'auto' } }))),
10561
+ React__default.createElement(IconButton$1, { onClick: function (e) { return handleEditView(option); } },
10562
+ React__default.createElement(CreateIcon, { fontSize: 'small', color: 'primary', style: { height: "18px", width: '18px', cursor: 'pointer' } })),
10563
+ React__default.createElement(IconButton$1, { onClick: function (e) { return handleDeleteView(option, e); } },
10564
+ React__default.createElement(DeleteIcon, { fontSize: 'small', color: 'secondary', style: { height: "18px", width: '18px', cursor: 'pointer' } }))))); }, renderInput: function (params) { return React__default.createElement(TextField, __assign({}, params, { label: "Views", variant: "outlined" })); } })))) :
10565
+ (React__default.createElement(Typography, null, "No tag views detected, please add one")))),
10566
+ React__default.createElement(MesfModal.Actions, null,
10567
+ React__default.createElement("div", { style: { paddingTop: "1rem" } },
10568
+ React__default.createElement(Button$1, { variant: 'outlined', style: { marginRight: "1rem" }, color: 'secondary', onClick: function () { return handleClose(false); } }, "Cancel"),
10569
+ views.length ? (React__default.createElement(ButtonWithLoading, { onClick: handleSelect, variant: 'contained', color: 'primary', isLoading: isLoading, style: { marginRight: "1rem" } }, "Apply")) : (React__default.createElement(Button$1, { variant: 'contained', style: { marginRight: "1rem" }, color: 'primary', onClick: function () { return handleClose(false); } }, "Ok"))))),
10570
+ React__default.createElement(DeleteViewModal, { open: deleteViewModalOpen, view: viewForDelete, handleClose: function (shouldUpdate) {
10571
+ setDeleteViewModalOpen(false);
10572
+ if (shouldUpdate)
10573
+ getTagsFromAPI().then(function () { });
10574
+ } }),
10575
+ React__default.createElement(EditViewModal, { open: editViewModalOpen, view: viewForEdit, handleClose: function (shouldUpdate) {
10576
+ setEditViewModalOpen(false);
10577
+ if (shouldUpdate)
10578
+ getTagsFromAPI().then(function () { });
10579
+ } }),
10580
+ React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(''); } })));
10581
+ };
10582
+
10370
10583
  var SaveAsViewModal = function (_a) {
10371
10584
  var open = _a.open, handleClose = _a.handleClose;
10372
10585
  var classes = useTrendingStyles();
10373
10586
  var _b = useState(false), isLoading = _b[0], setIsLoading = _b[1];
10374
10587
  var _c = useState(''), error = _c[0], setError = _c[1];
10375
- var viewTags = useTrendingContext().state.viewTags;
10376
- var _d = useState(true), isPublic = _d[0], setIsPublic = _d[1];
10377
- var _e = useState(''), viewName = _e[0], setViewName = _e[1];
10588
+ var _d = useTrendingContext(), _e = _d.state, viewTags = _e.viewTags, views = _e.views, viewSelected = _e.viewSelected, _f = _d.actions, setViewSelected = _f.setViewSelected; _f.setViewTags;
10589
+ var _g = useState(true), isPublic = _g[0], setIsPublic = _g[1];
10590
+ var _h = useState(''), newView = _h[0], setNewView = _h[1];
10378
10591
  var handleCheck = function () { return setIsPublic(!isPublic); };
10379
- var handleInputChange = function (e) { return setViewName(e.target.value); };
10380
10592
  var handleSubmit = function () { return __awaiter(void 0, void 0, void 0, function () {
10381
10593
  var resp, ViewId_1, results;
10382
10594
  return __generator(this, function (_a) {
10383
10595
  switch (_a.label) {
10384
10596
  case 0:
10385
10597
  setIsLoading(true);
10386
- return [4 /*yield*/, upsertView(null, viewName, isPublic)];
10598
+ return [4 /*yield*/, upsertView(null, newView, isPublic)];
10387
10599
  case 1:
10388
10600
  resp = _a.sent();
10389
10601
  if (!resp.ok) return [3 /*break*/, 3];
@@ -10418,12 +10630,22 @@ var SaveAsViewModal = function (_a) {
10418
10630
  });
10419
10631
  }); };
10420
10632
  return (React__default.createElement(React__default.Fragment, null,
10421
- React__default.createElement(MesfModal, { open: open, handleClose: function () { return handleClose(false); }, maxWidth: "xl", "aria-labelledby": "modal-modal-title", "aria-describedby": "modal-modal-description", title: 'Tags' },
10633
+ React__default.createElement(MesfModal, { open: open, handleClose: function () { return handleClose(false); }, maxWidth: "xl", "aria-labelledby": "modal-modal-title", "aria-describedby": "modal-modal-description", title: 'Save View As' },
10422
10634
  React__default.createElement(Divider, null),
10423
10635
  React__default.createElement(MesfModal.Content, null,
10424
10636
  React__default.createElement(Grid$1, { container: true, spacing: 5, style: { padding: "1rem" } },
10425
- React__default.createElement(Grid$1, { item: true, md: 12, xs: 12, style: { padding: "10px", width: "100%" } },
10426
- React__default.createElement(TextField, { size: 'small', id: "outlined-basic", label: "View Name", variant: "outlined", value: viewName, onChange: handleInputChange, style: { width: "100%" } }))),
10637
+ React__default.createElement(Grid$1, { item: true, md: 12, xs: 12, style: { padding: "10px", width: "100%" } }, views.length && viewSelected ? (React__default.createElement(Autocomplete, { size: 'small', id: "list-of-views", options: views, defaultValue: viewSelected, getOptionLabel: function (option) { return option.ViewName; }, freeSolo: true, onChange: function (ev, val) {
10638
+ setViewSelected(val);
10639
+ if (val) {
10640
+ setNewView("");
10641
+ }
10642
+ }, onInputChange: function (event, newInputValue) {
10643
+ var isValueInViews = views.some(function (view) { return view.ViewName === newInputValue; });
10644
+ if (!isValueInViews) {
10645
+ setNewView(newInputValue);
10646
+ }
10647
+ }, style: { width: "100%" }, renderInput: function (params) { return React__default.createElement(TextField, __assign({}, params, { label: "Views", variant: "outlined" })); } })) :
10648
+ (React__default.createElement("div", null, "No tag views detected, please add one")))),
10427
10649
  React__default.createElement(Grid$1, { item: true, md: 12, xs: 12, style: { paddingTop: "2rem" }, className: classes.isPublicCheckbox },
10428
10650
  React__default.createElement("label", null,
10429
10651
  "Public",
@@ -10570,76 +10792,12 @@ var timeDifference = function (start, end) {
10570
10792
  return "".concat(hours, "h ").concat(remainingMinutes, "m ").concat(remainingSeconds, "s");
10571
10793
  };
10572
10794
 
10573
- var SaveViewModal = function (_a) {
10574
- var open = _a.open, handleClose = _a.handleClose;
10575
- var _b = useState(false), isLoading = _b[0], setIsLoading = _b[1];
10576
- var _c = useState(''), error = _c[0], setError = _c[1];
10577
- var _d = useTrendingContext().state, viewTags = _d.viewTags, viewSelected = _d.viewSelected;
10578
- var handleSubmit = function () { return __awaiter(void 0, void 0, void 0, function () {
10579
- var resp, results;
10580
- return __generator(this, function (_a) {
10581
- switch (_a.label) {
10582
- case 0:
10583
- setIsLoading(true);
10584
- if (!(viewSelected === null || viewSelected === void 0 ? void 0 : viewSelected.ViewId)) return [3 /*break*/, 4];
10585
- return [4 /*yield*/, upsertView(viewSelected === null || viewSelected === void 0 ? void 0 : viewSelected.ViewId, viewSelected.ViewName, viewSelected.IsPublic)];
10586
- case 1:
10587
- resp = _a.sent();
10588
- if (!resp.ok) return [3 /*break*/, 3];
10589
- return [4 /*yield*/, Promise.allSettled(viewTags.map(function (_a) {
10590
- var TagId = _a.TagId, Color = _a.Color, MinScale = _a.MinScale, MaxScale = _a.MaxScale, IsAutoScale = _a.IsAutoScale, IsVisible = _a.IsVisible;
10591
- upsertViewTag(viewSelected === null || viewSelected === void 0 ? void 0 : viewSelected.ViewId, TagId, Color, MinScale, MaxScale, IsVisible, IsAutoScale)
10592
- .then(function (r) {
10593
- if (!r.ok) {
10594
- setError(r.message);
10595
- }
10596
- });
10597
- }))];
10598
- case 2:
10599
- results = _a.sent();
10600
- results.forEach(function (result, index) {
10601
- if (result.status === "rejected") {
10602
- setError("Tag ".concat(index, " failed with reason: ").concat(result.reason));
10603
- }
10604
- else {
10605
- handleClose(true);
10606
- }
10607
- });
10608
- return [3 /*break*/, 4];
10609
- case 3:
10610
- setError(resp.message);
10611
- _a.label = 4;
10612
- case 4:
10613
- setIsLoading(false);
10614
- return [2 /*return*/];
10615
- }
10616
- });
10617
- }); };
10618
- return (React__default.createElement(React__default.Fragment, null,
10619
- React__default.createElement(MesfModal, { open: open, handleClose: function () { return handleClose(false); }, maxWidth: "xl", "aria-labelledby": "modal-modal-title", "aria-describedby": "modal-modal-description", title: 'Tags' },
10620
- React__default.createElement(Divider, null),
10621
- React__default.createElement(MesfModal.Content, null,
10622
- React__default.createElement(Grid$1, { container: true, spacing: 5, style: { padding: "1rem" } },
10623
- React__default.createElement(Grid$1, { item: true, md: 12, xs: 12, style: { padding: "10px", width: "100%" } },
10624
- React__default.createElement(Typography, null,
10625
- "Do you want to save changes on ",
10626
- React__default.createElement("strong", null, viewSelected === null || viewSelected === void 0 ? void 0 : viewSelected.ViewName),
10627
- " ?")))),
10628
- React__default.createElement(Divider, null),
10629
- React__default.createElement(MesfModal.Actions, null,
10630
- React__default.createElement(Grid$1, { container: true, spacing: 1, style: { display: 'flex', alignItems: 'flex-end', justifyContent: 'flex-end' } },
10631
- React__default.createElement(Grid$1, { item: true },
10632
- React__default.createElement(Button$1, { variant: 'outlined', color: 'secondary', onClick: function () { return handleClose(false); } }, "Cancel")),
10633
- React__default.createElement(Grid$1, { item: true },
10634
- React__default.createElement(ButtonWithLoading, { variant: 'contained', color: 'primary', onClick: handleSubmit, isLoading: isLoading }, "Save"))))),
10635
- React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(''); } })));
10636
- };
10637
-
10638
10795
  var TableComponent = function (_a) {
10639
10796
  var chartData = _a.chartData, cursorData = _a.cursorData, getTagsFromAPI = _a.getTagsFromAPI;
10640
10797
  var classes = useTagsTableStyles();
10641
- var _b = useTrendingContext(), _c = _b.state, viewTags = _c.viewTags, viewSelected = _c.viewSelected, _d = _b.actions, setViewTags = _d.setViewTags, setGraphShouldUpdate = _d.setGraphShouldUpdate;
10798
+ var _b = useTrendingContext(), _c = _b.state, viewTags = _c.viewTags, viewSelected = _c.viewSelected, _d = _b.actions, setViewTags = _d.setViewTags, setGraphShouldUpdate = _d.setGraphShouldUpdate; _d.setViewSelected;
10642
10799
  var _e = useState(''), error = _e[0], setError = _e[1];
10800
+ var _f = useState(false); _f[0]; var setIsLoading = _f[1];
10643
10801
  var dataTable = useTagsDataTable({ viewTags: viewTags, chartData: chartData, cursorData: cursorData });
10644
10802
  var handleChange = function (tagId, value, property) {
10645
10803
  var newTags = viewTags.map(function (tag) {
@@ -10685,11 +10843,11 @@ var TableComponent = function (_a) {
10685
10843
  handleAutoScaleChange(tagId, checked);
10686
10844
  }
10687
10845
  };
10688
- var _f = useState(null), selectedRowIndex = _f[0], setSelectedRowIndex = _f[1];
10689
- var _g = useState(false), addTagModalOpen = _g[0], setAddTagModalOpen = _g[1];
10690
- var _h = useState(false), saveViewModalOpen = _h[0], setSaveViewModalOpen = _h[1];
10846
+ var _g = useState(null), selectedRowIndex = _g[0], setSelectedRowIndex = _g[1];
10847
+ var _h = useState(false), addTagModalOpen = _h[0], setAddTagModalOpen = _h[1];
10691
10848
  var _j = useState(false), saveAsViewModalOpen = _j[0], setSaveAsViewModalOpen = _j[1];
10692
10849
  var _k = useState(false), loadViewOpen = _k[0], setLoadViewOpen = _k[1];
10850
+ var _l = useState(''), snackbarMessage = _l[0], setSnackbarMessage = _l[1];
10693
10851
  var handleClose = function () { return setAddTagModalOpen(false); };
10694
10852
  var ContextMenu = function (_a) {
10695
10853
  var x = _a.x, y = _a.y, options = _a.options;
@@ -10700,12 +10858,12 @@ var TableComponent = function (_a) {
10700
10858
  React__default.createElement("ul", null, options.map(function (option) { return (React__default.createElement("li", { key: option.id, onClick: option.onClick }, option.label)); }))));
10701
10859
  };
10702
10860
  // Position state for the context menu
10703
- var _l = useState({ x: 0, y: 0 }), contextMenuPosition = _l[0], setContextMenuPosition = _l[1];
10861
+ var _m = useState({ x: 0, y: 0 }), contextMenuPosition = _m[0], setContextMenuPosition = _m[1];
10704
10862
  var contextMenuOptions = [
10705
10863
  { id: 'delete', label: 'Remove Tag', onClick: function () { return handleDelete(); } },
10706
10864
  { id: 'add', label: 'Add Tag', onClick: function () { return setAddTagModalOpen(true); } },
10707
10865
  { id: 'saveDefault', label: 'Save Default To Tag', onClick: function () { return handleSaveDefaultToTag(); } },
10708
- { id: 'saveView', label: 'Save View', onClick: function () { setSaveViewModalOpen(true); } },
10866
+ { id: 'saveView', label: 'Save View', onClick: function () { return handleSaveView(); } },
10709
10867
  { id: 'saveViewAs', label: 'Save View as', onClick: function () { return setSaveAsViewModalOpen(true); } },
10710
10868
  { id: 'loadView', label: 'Load View', onClick: function () { return setLoadViewOpen(true); } },
10711
10869
  ];
@@ -10737,6 +10895,53 @@ var TableComponent = function (_a) {
10737
10895
  }
10738
10896
  });
10739
10897
  }); };
10898
+ var handleSaveView = function () { return __awaiter(void 0, void 0, void 0, function () {
10899
+ var resp, results;
10900
+ return __generator(this, function (_a) {
10901
+ switch (_a.label) {
10902
+ case 0:
10903
+ setIsLoading(true);
10904
+ if (!(viewSelected === null || viewSelected === void 0 ? void 0 : viewSelected.ViewId)) return [3 /*break*/, 4];
10905
+ return [4 /*yield*/, upsertView(viewSelected === null || viewSelected === void 0 ? void 0 : viewSelected.ViewId, viewSelected.ViewName, viewSelected.IsPublic)];
10906
+ case 1:
10907
+ resp = _a.sent();
10908
+ if (!resp.ok) return [3 /*break*/, 3];
10909
+ return [4 /*yield*/, Promise.allSettled(viewTags.map(function (_a) {
10910
+ var TagId = _a.TagId, Color = _a.Color, MinScale = _a.MinScale, MaxScale = _a.MaxScale, IsAutoScale = _a.IsAutoScale, IsVisible = _a.IsVisible;
10911
+ upsertViewTag(viewSelected === null || viewSelected === void 0 ? void 0 : viewSelected.ViewId, TagId, Color, MinScale, MaxScale, IsVisible, IsAutoScale)
10912
+ .then(function (r) {
10913
+ if (!r.ok) {
10914
+ setError(r.message);
10915
+ }
10916
+ });
10917
+ }))];
10918
+ case 2:
10919
+ results = _a.sent();
10920
+ results.forEach(function (result, index) {
10921
+ if (result.status === "rejected") {
10922
+ setError("Tag ".concat(index, " failed with reason: ").concat(result.reason));
10923
+ }
10924
+ else {
10925
+ setSelectedRowIndex(null);
10926
+ setSnackbarMessage('View saved successfully');
10927
+ }
10928
+ });
10929
+ return [3 /*break*/, 4];
10930
+ case 3:
10931
+ setError(resp.message);
10932
+ _a.label = 4;
10933
+ case 4:
10934
+ setIsLoading(false);
10935
+ return [2 /*return*/];
10936
+ }
10937
+ });
10938
+ }); };
10939
+ var handleCloseSnackbar = function (event, reason) {
10940
+ if (reason === 'clickaway') {
10941
+ return;
10942
+ }
10943
+ setSnackbarMessage('');
10944
+ };
10740
10945
  useEffect(function () {
10741
10946
  var handleGlobalClick = function (e) {
10742
10947
  if (selectedRowIndex !== null) {
@@ -10933,20 +11138,17 @@ var TableComponent = function (_a) {
10933
11138
  React__default.createElement(Button$1, { onClick: function () { return setLoadViewOpen(true); }, variant: 'outlined', color: 'primary' }, " Load view"))))))),
10934
11139
  selectedRowIndex !== null && (React__default.createElement(ContextMenu, { x: contextMenuPosition.x, y: contextMenuPosition.y, options: contextMenuOptions })),
10935
11140
  React__default.createElement(AddTagModal, { open: addTagModalOpen, handleClose: handleClose, onTagSelect: handleTagSelect }),
10936
- React__default.createElement(SaveViewModal, { open: saveViewModalOpen, handleClose: function (shouldUpdate) {
10937
- setSaveViewModalOpen(false);
10938
- if (shouldUpdate)
10939
- getTagsFromAPI().then(function () { });
10940
- } }),
10941
11141
  React__default.createElement(SaveAsViewModal, { open: saveAsViewModalOpen, handleClose: function (shouldUpdate) {
10942
11142
  setSaveAsViewModalOpen(false);
10943
11143
  if (shouldUpdate)
10944
- getTagsFromAPI().then(function () { });
11144
+ getTagsFromAPI(true).then(function () { });
10945
11145
  } }),
10946
- React__default.createElement(LoadViewModal, { open: loadViewOpen, handleClose: function (shouldUpdate) {
11146
+ React__default.createElement(LoadViewModal, { open: loadViewOpen, getTagsFromAPI: getTagsFromAPI, handleClose: function (shouldUpdate) {
10947
11147
  setLoadViewOpen(false);
10948
11148
  } })),
10949
- React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(''); } })));
11149
+ React__default.createElement(ErrorModal, { error: error, onHide: function () { return setError(''); } }),
11150
+ React__default.createElement(Snackbar$1, { open: !!snackbarMessage, autoHideDuration: 800, onClose: handleCloseSnackbar },
11151
+ React__default.createElement(Alert$3, { onClose: handleCloseSnackbar, severity: "success" }, snackbarMessage))));
10950
11152
  };
10951
11153
 
10952
11154
  var formatDateTimeToString = function (date) {
@@ -11551,41 +11753,44 @@ var Trending = function (_a) {
11551
11753
  var TrendingsPage = function (props) {
11552
11754
  var _a = useState(''), error = _a[0], setError = _a[1];
11553
11755
  var _b = useTrendingContext(), viewSelected = _b.state.viewSelected, _c = _b.actions, setViews = _c.setViews, setViewTags = _c.setViewTags, setViewSelected = _c.setViewSelected;
11554
- var getTagsFromAPI = function () { return __awaiter(void 0, void 0, void 0, function () {
11555
- var viewsResp, lastCreated, viewTagsResp;
11556
- return __generator(this, function (_a) {
11557
- switch (_a.label) {
11558
- case 0: return [4 /*yield*/, getViews(null)];
11559
- case 1:
11560
- viewsResp = _a.sent();
11561
- if (!viewsResp.ok) return [3 /*break*/, 3];
11562
- setViews(viewsResp.data.tables[0].rows);
11563
- lastCreated = void 0;
11564
- if (!viewSelected) {
11565
- lastCreated = viewsResp.data.tables[0].rows.reduce(function (prev, current) { return (prev.ViewId > current.ViewId) ? prev : current; });
11566
- //viewSelected
11567
- setViewSelected(lastCreated);
11568
- }
11569
- else {
11570
- lastCreated = viewSelected;
11571
- }
11572
- return [4 /*yield*/, getViewTags(lastCreated.ViewId)];
11573
- case 2:
11574
- viewTagsResp = _a.sent();
11575
- if (viewTagsResp.ok) {
11576
- setViewTags(viewTagsResp.data.tables[0].rows);
11577
- }
11578
- else {
11579
- setError(viewTagsResp.message);
11580
- }
11581
- return [3 /*break*/, 4];
11582
- case 3:
11583
- setError(viewsResp.message);
11584
- _a.label = 4;
11585
- case 4: return [2 /*return*/];
11586
- }
11756
+ var getTagsFromAPI = function (forceReload) {
11757
+ if (forceReload === void 0) { forceReload = false; }
11758
+ return __awaiter(void 0, void 0, void 0, function () {
11759
+ var viewsResp, lastCreated, viewTagsResp;
11760
+ return __generator(this, function (_a) {
11761
+ switch (_a.label) {
11762
+ case 0: return [4 /*yield*/, getViews(null)];
11763
+ case 1:
11764
+ viewsResp = _a.sent();
11765
+ if (!viewsResp.ok) return [3 /*break*/, 3];
11766
+ setViews(viewsResp.data.tables[0].rows);
11767
+ lastCreated = void 0;
11768
+ if (!viewSelected || forceReload) {
11769
+ lastCreated = viewsResp.data.tables[0].rows.reduce(function (prev, current) { return (prev.ViewId > current.ViewId) ? prev : current; });
11770
+ //viewSelected
11771
+ setViewSelected(lastCreated);
11772
+ }
11773
+ else {
11774
+ lastCreated = viewSelected;
11775
+ }
11776
+ return [4 /*yield*/, getViewTags(lastCreated.ViewId)];
11777
+ case 2:
11778
+ viewTagsResp = _a.sent();
11779
+ if (viewTagsResp.ok) {
11780
+ setViewTags(viewTagsResp.data.tables[0].rows);
11781
+ }
11782
+ else {
11783
+ setError(viewTagsResp.message);
11784
+ }
11785
+ return [3 /*break*/, 4];
11786
+ case 3:
11787
+ setError(viewsResp.message);
11788
+ _a.label = 4;
11789
+ case 4: return [2 /*return*/];
11790
+ }
11791
+ });
11587
11792
  });
11588
- }); };
11793
+ };
11589
11794
  useEffect(function () {
11590
11795
  getTagsFromAPI();
11591
11796
  }, []);