@opengeoweb/workspace 21.0.0 → 21.1.0-nightly-20261106
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
|
@@ -2,7 +2,7 @@ import { createSlice, createEntityAdapter, createSelector, createListenerMiddlew
|
|
|
2
2
|
import { handleResponse, getHeaders, getQueryClient, QueryClientProviderWrapper, useAuthenticationContext as useAuthenticationContext$1, GEOWEB_ROLE_PRESETS_ADMIN as GEOWEB_ROLE_PRESETS_ADMIN$1 } from '@opengeoweb/api';
|
|
3
3
|
import { soundingsActions, SoundingsTypes, soundingsSelectors, soundingsReducer } from '@opengeoweb/soundings';
|
|
4
4
|
import { syncGroupsTypes, FEATURE_GROUP_PREFIX, syncGroupsActions, layerActions, mapActions, uiActions, genericActions, layerTypes, mapEnums, selectorMemoizationOptions, genericSelectors, mapSelectors, syncGroupsSelectors, routerActions, createViewObjectForNewMap, syncConstants, mapListener, serviceListener, layersListener, syncGroupsListener, openlayersListener, uiReducer, loadingIndicatorReducer, syncGroupsReducer, layerReducer, serviceReducer, mapReducer, uiTypes, isWarningsTimelineLinkSourceAllowed, getTakenWarningTimelineIds, linkComponentTypesConstants, constructSyncSourceDisplayName, uiSelectors, loadingIndicatorSelectors, pickList, pickRecord, pickEntities } from '@opengeoweb/store';
|
|
5
|
-
import { timeSeriesActions, TimeSeriesTypes, timeSeriesSelectors, timeSeriesReducer } from '@opengeoweb/time-series';
|
|
5
|
+
import { timeseriesTranslations, TIME_SERIES_NAMESPACE, timeSeriesActions, TimeSeriesTypes, timeSeriesSelectors, timeSeriesReducer, getUserAddedEDRServices, normalizeEdrServiceUrl, resolveEdrCollectionTarget, EdrCollectionTargetError } from '@opengeoweb/time-series';
|
|
6
6
|
import { chunk, cloneDeep, isEqual, isString } from 'lodash';
|
|
7
7
|
import { getLeaves, createBalancedTreeFromLeaves, MosaicContext, getAndAssertNodeAtPathExists, MosaicWindow, Mosaic } from 'react-mosaic-component';
|
|
8
8
|
import { queryOptions, useQueryClient, useQuery, useMutation, useIsMutating } from '@tanstack/react-query';
|
|
@@ -13,6 +13,7 @@ import { snackbarTypes, snackbarActions, snackbarListener, snackbarReducer, Snac
|
|
|
13
13
|
import i18n from 'i18next';
|
|
14
14
|
import { useTranslation, I18nextProvider } from 'react-i18next';
|
|
15
15
|
import { coreTranslations, CORE_NAMESPACE, LoadingIndicatorProgressBar } from '@opengeoweb/core';
|
|
16
|
+
import { dataExplorerTranslations, DATA_EXPLORER_NAMESPACE, DataExplorerConnect } from '@opengeoweb/data-explorer';
|
|
16
17
|
import { formFieldsTranslations, FORM_FIELDS_NAMESPACE, ReactHookFormHiddenInput, ReactHookFormTextField, ReactHookFormProvider, defaultFormOptions } from '@opengeoweb/form-fields';
|
|
17
18
|
import { webmapReactTranslations, WEBMAP_REACT_NAMESPACE } from '@opengeoweb/webmap-react';
|
|
18
19
|
import { isAxiosError as isAxiosError$1 } from 'axios';
|
|
@@ -21,10 +22,11 @@ import { Provider, useDispatch, useSelector, useStore, shallowEqual } from 'reac
|
|
|
21
22
|
import { AuthenticationProvider, useAuthenticationContext, GEOWEB_ROLE_PRESETS_ADMIN } from '@opengeoweb/authentication';
|
|
22
23
|
import { ThemeWrapper, lightTheme, Link, LinkOff, SplitHorizontal, SplitVertical, SplitHorizontalWithContent, SplitVerticalWithContent, Expand, UnExpand, ChevronDown, Close, ChevronUp, LockLocked, Star, StarOutline, Info, WorkspacePresetsSystemIcon, WorkspacePresetsPluginIcon, SharedPresetsMyUser, SharedPresetsOtherUsers, WorkspacePresetsMyIcon, BackdropStyle, Options, CloudLoading, CloudIdle, WebAssetOff, Exclamation } from '@opengeoweb/theme';
|
|
23
24
|
import React, { useEffect, useCallback } from 'react';
|
|
24
|
-
import { Menu, Typography, List, ListItem, ListItemButton, ListItemIcon, Checkbox, ListItemText, MenuItem, useTheme, Box, LinearProgress, Button, Stack, FormControlLabel, Chip, Popper, ClickAwayListener, Paper, IconButton, Collapse, Divider, Grid, TextField, ListSubheader, Tabs } from '@mui/material';
|
|
25
|
+
import { Menu, Typography, List, ListItem, ListItemButton, ListItemIcon, Checkbox, ListItemText, MenuItem, useTheme, Box, LinearProgress, Button, Stack, FormControlLabel, Chip, Popper, ClickAwayListener, Paper, IconButton, Collapse, Divider, Grid, TextField, ListSubheader, Tabs, Dialog, DialogTitle, DialogActions } from '@mui/material';
|
|
25
26
|
import 'react-mosaic-component/react-mosaic-component.css';
|
|
26
27
|
import { useFormContext, useWatch, useForm, FormProvider } from 'react-hook-form';
|
|
27
28
|
import { List as List$1 } from 'react-window';
|
|
29
|
+
import { v4 } from 'uuid';
|
|
28
30
|
import { http, HttpResponse, delay } from 'msw';
|
|
29
31
|
|
|
30
32
|
var en = {
|
|
@@ -666,6 +668,36 @@ function _asyncToGenerator(n) {
|
|
|
666
668
|
});
|
|
667
669
|
};
|
|
668
670
|
}
|
|
671
|
+
function _construct(t, e, r) {
|
|
672
|
+
if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);
|
|
673
|
+
var o = [null];
|
|
674
|
+
o.push.apply(o, e);
|
|
675
|
+
var p = new (t.bind.apply(t, o))();
|
|
676
|
+
return r && _setPrototypeOf(p, r.prototype), p;
|
|
677
|
+
}
|
|
678
|
+
function _getPrototypeOf(t) {
|
|
679
|
+
return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {
|
|
680
|
+
return t.__proto__ || Object.getPrototypeOf(t);
|
|
681
|
+
}, _getPrototypeOf(t);
|
|
682
|
+
}
|
|
683
|
+
function _inheritsLoose(t, o) {
|
|
684
|
+
t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o);
|
|
685
|
+
}
|
|
686
|
+
function _isNativeFunction(t) {
|
|
687
|
+
try {
|
|
688
|
+
return -1 !== Function.toString.call(t).indexOf("[native code]");
|
|
689
|
+
} catch (n) {
|
|
690
|
+
return "function" == typeof t;
|
|
691
|
+
}
|
|
692
|
+
}
|
|
693
|
+
function _isNativeReflectConstruct() {
|
|
694
|
+
try {
|
|
695
|
+
var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
|
|
696
|
+
} catch (t) {}
|
|
697
|
+
return (_isNativeReflectConstruct = function () {
|
|
698
|
+
return !!t;
|
|
699
|
+
})();
|
|
700
|
+
}
|
|
669
701
|
function _objectDestructuringEmpty(t) {
|
|
670
702
|
if (null == t) throw new TypeError("Cannot destructure " + t);
|
|
671
703
|
}
|
|
@@ -786,6 +818,33 @@ function _regeneratorDefine(e, r, n, t) {
|
|
|
786
818
|
}) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2));
|
|
787
819
|
}, _regeneratorDefine(e, r, n, t);
|
|
788
820
|
}
|
|
821
|
+
function _setPrototypeOf(t, e) {
|
|
822
|
+
return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
|
|
823
|
+
return t.__proto__ = e, t;
|
|
824
|
+
}, _setPrototypeOf(t, e);
|
|
825
|
+
}
|
|
826
|
+
function _wrapNativeSuper(t) {
|
|
827
|
+
var r = "function" == typeof Map ? new Map() : void 0;
|
|
828
|
+
return _wrapNativeSuper = function (t) {
|
|
829
|
+
if (null === t || !_isNativeFunction(t)) return t;
|
|
830
|
+
if ("function" != typeof t) throw new TypeError("Super expression must either be null or a function");
|
|
831
|
+
if (void 0 !== r) {
|
|
832
|
+
if (r.has(t)) return r.get(t);
|
|
833
|
+
r.set(t, Wrapper);
|
|
834
|
+
}
|
|
835
|
+
function Wrapper() {
|
|
836
|
+
return _construct(t, arguments, _getPrototypeOf(this).constructor);
|
|
837
|
+
}
|
|
838
|
+
return Wrapper.prototype = Object.create(t.prototype, {
|
|
839
|
+
constructor: {
|
|
840
|
+
value: Wrapper,
|
|
841
|
+
enumerable: false,
|
|
842
|
+
writable: true,
|
|
843
|
+
configurable: true
|
|
844
|
+
}
|
|
845
|
+
}), _setPrototypeOf(Wrapper, t);
|
|
846
|
+
}, _wrapNativeSuper(t);
|
|
847
|
+
}
|
|
789
848
|
|
|
790
849
|
/* *
|
|
791
850
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -1686,6 +1745,12 @@ var initWorkspaceTestI18n = function initWorkspaceTestI18n() {
|
|
|
1686
1745
|
}, {
|
|
1687
1746
|
ns: WARN_NAMESPACE,
|
|
1688
1747
|
translations: warningsTranslations
|
|
1748
|
+
}, {
|
|
1749
|
+
ns: TIME_SERIES_NAMESPACE,
|
|
1750
|
+
translations: timeseriesTranslations
|
|
1751
|
+
}, {
|
|
1752
|
+
ns: DATA_EXPLORER_NAMESPACE,
|
|
1753
|
+
translations: dataExplorerTranslations
|
|
1689
1754
|
}]);
|
|
1690
1755
|
};
|
|
1691
1756
|
var ns = [WORKSPACE_NAMESPACE, SHARED_NAMESPACE];
|
|
@@ -12266,6 +12331,351 @@ var WorkspaceDetail = function WorkspaceDetail(_ref) {
|
|
|
12266
12331
|
});
|
|
12267
12332
|
};
|
|
12268
12333
|
|
|
12334
|
+
/** Error whose message is already translated and can be shown to the user as is. */
|
|
12335
|
+
var TranslatedError = /*#__PURE__*/function (_Error) {
|
|
12336
|
+
function TranslatedError() {
|
|
12337
|
+
return _Error.apply(this, arguments) || this;
|
|
12338
|
+
}
|
|
12339
|
+
_inheritsLoose(TranslatedError, _Error);
|
|
12340
|
+
return TranslatedError;
|
|
12341
|
+
}(/*#__PURE__*/_wrapNativeSuper(Error));
|
|
12342
|
+
/**
|
|
12343
|
+
* Coordinates the Data Explorer with the workspace and Timeseries panels.
|
|
12344
|
+
* Data Explorer itself does not depend on workspace or Timeseries.
|
|
12345
|
+
*/
|
|
12346
|
+
var DataExplorerTimeseriesConnect = function DataExplorerTimeseriesConnect(_ref) {
|
|
12347
|
+
var productConfigKey = _ref.productConfigKey;
|
|
12348
|
+
var store = useStore();
|
|
12349
|
+
var _useTranslation = useTranslation([DATA_EXPLORER_NAMESPACE, SHARED_NAMESPACE]),
|
|
12350
|
+
t = _useTranslation.t;
|
|
12351
|
+
var _React$useState = React.useState(),
|
|
12352
|
+
choice = _React$useState[0],
|
|
12353
|
+
setChoice = _React$useState[1];
|
|
12354
|
+
var resolveChoice = React.useRef(undefined);
|
|
12355
|
+
var mounted = React.useRef(true);
|
|
12356
|
+
React.useEffect(function () {
|
|
12357
|
+
mounted.current = true;
|
|
12358
|
+
return function () {
|
|
12359
|
+
mounted.current = false;
|
|
12360
|
+
resolveChoice.current == null || resolveChoice.current(undefined);
|
|
12361
|
+
};
|
|
12362
|
+
}, []);
|
|
12363
|
+
var choose = React.useCallback(/*#__PURE__*/function () {
|
|
12364
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(nextChoice) {
|
|
12365
|
+
return _regenerator().w(function (_context) {
|
|
12366
|
+
while (1) switch (_context.n) {
|
|
12367
|
+
case 0:
|
|
12368
|
+
setChoice(nextChoice);
|
|
12369
|
+
return _context.a(2, new Promise(function (resolve) {
|
|
12370
|
+
resolveChoice.current = resolve;
|
|
12371
|
+
}));
|
|
12372
|
+
}
|
|
12373
|
+
}, _callee);
|
|
12374
|
+
}));
|
|
12375
|
+
return function (_x) {
|
|
12376
|
+
return _ref2.apply(this, arguments);
|
|
12377
|
+
};
|
|
12378
|
+
}(), []);
|
|
12379
|
+
var finishChoice = function finishChoice(id) {
|
|
12380
|
+
setChoice(undefined);
|
|
12381
|
+
resolveChoice.current == null || resolveChoice.current(id);
|
|
12382
|
+
resolveChoice.current = undefined;
|
|
12383
|
+
};
|
|
12384
|
+
var addTimeseriesToWorkspace = React.useCallback(/*#__PURE__*/function () {
|
|
12385
|
+
var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(_ref3) {
|
|
12386
|
+
var _store$getState$works, _state$workspace, _state$workspace2, _state$workspace3, _state$workspace4, _getViewById3, _timeSeriesSelectors$2;
|
|
12387
|
+
var title, collectionLinks, targetMapId, workspaceId, collectionUrl, target, state, panels, linkedPanels, candidates, panelId, existingService, service, plotId, isNewPanel, plotPreset, mosaicNode, _t;
|
|
12388
|
+
return _regenerator().w(function (_context2) {
|
|
12389
|
+
while (1) switch (_context2.n) {
|
|
12390
|
+
case 0:
|
|
12391
|
+
title = _ref3.title, collectionLinks = _ref3.collectionLinks, targetMapId = _ref3.targetMapId;
|
|
12392
|
+
workspaceId = (_store$getState$works = store.getState().workspace) == null ? void 0 : _store$getState$works.id;
|
|
12393
|
+
if (!(collectionLinks.length === 1)) {
|
|
12394
|
+
_context2.n = 1;
|
|
12395
|
+
break;
|
|
12396
|
+
}
|
|
12397
|
+
_t = collectionLinks[0].href;
|
|
12398
|
+
_context2.n = 3;
|
|
12399
|
+
break;
|
|
12400
|
+
case 1:
|
|
12401
|
+
_context2.n = 2;
|
|
12402
|
+
return choose({
|
|
12403
|
+
title: t('dataexplorer-select-data-link'),
|
|
12404
|
+
options: collectionLinks.map(function (link) {
|
|
12405
|
+
return {
|
|
12406
|
+
id: link.href,
|
|
12407
|
+
title: link.title || link.href
|
|
12408
|
+
};
|
|
12409
|
+
})
|
|
12410
|
+
});
|
|
12411
|
+
case 2:
|
|
12412
|
+
_t = _context2.v;
|
|
12413
|
+
case 3:
|
|
12414
|
+
collectionUrl = _t;
|
|
12415
|
+
if (!(!collectionUrl || !mounted.current)) {
|
|
12416
|
+
_context2.n = 4;
|
|
12417
|
+
break;
|
|
12418
|
+
}
|
|
12419
|
+
return _context2.a(2);
|
|
12420
|
+
case 4:
|
|
12421
|
+
_context2.n = 5;
|
|
12422
|
+
return resolveEdrCollectionTarget(collectionUrl);
|
|
12423
|
+
case 5:
|
|
12424
|
+
target = _context2.v;
|
|
12425
|
+
if (mounted.current) {
|
|
12426
|
+
_context2.n = 6;
|
|
12427
|
+
break;
|
|
12428
|
+
}
|
|
12429
|
+
return _context2.a(2);
|
|
12430
|
+
case 6:
|
|
12431
|
+
state = store.getState();
|
|
12432
|
+
if (!(((_state$workspace = state.workspace) == null ? void 0 : _state$workspace.id) !== workspaceId || (_state$workspace2 = state.workspace) != null && _state$workspace2.isLoading)) {
|
|
12433
|
+
_context2.n = 7;
|
|
12434
|
+
break;
|
|
12435
|
+
}
|
|
12436
|
+
throw new TranslatedError(t('dataexplorer-timeseries-error-workspace-changed'));
|
|
12437
|
+
case 7:
|
|
12438
|
+
panels = getViewIds(state).filter(function (id) {
|
|
12439
|
+
var _getViewById;
|
|
12440
|
+
return ((_getViewById = getViewById(state, id)) == null ? void 0 : _getViewById.componentType) === 'TimeSeries';
|
|
12441
|
+
});
|
|
12442
|
+
linkedPanels = targetMapId ? panels.filter(function (id) {
|
|
12443
|
+
var linkedMaps = genericSelectors.getLinkedTargetIds(state, id);
|
|
12444
|
+
return linkedMaps.length > 0 ? linkedMaps.includes(targetMapId) : timeSeriesSelectors.getMapId(state, id) === targetMapId;
|
|
12445
|
+
}) : [];
|
|
12446
|
+
candidates = linkedPanels.length > 0 ? linkedPanels : panels;
|
|
12447
|
+
panelId = candidates.length === 1 ? candidates[0] : undefined;
|
|
12448
|
+
if (!(candidates.length > 1)) {
|
|
12449
|
+
_context2.n = 9;
|
|
12450
|
+
break;
|
|
12451
|
+
}
|
|
12452
|
+
_context2.n = 8;
|
|
12453
|
+
return choose({
|
|
12454
|
+
title: t('dataexplorer-select-timeseries-panel'),
|
|
12455
|
+
options: candidates.map(function (id, index) {
|
|
12456
|
+
var _getViewById2, _timeSeriesSelectors$;
|
|
12457
|
+
return {
|
|
12458
|
+
id: id,
|
|
12459
|
+
title: ((_getViewById2 = getViewById(state, id)) == null ? void 0 : _getViewById2.title) || t('dataexplorer-timeseries-panel', {
|
|
12460
|
+
number: index + 1
|
|
12461
|
+
}),
|
|
12462
|
+
description: (_timeSeriesSelectors$ = timeSeriesSelectors.getPlotState(state, id)) == null ? void 0 : _timeSeriesSelectors$.plots.map(function (plot) {
|
|
12463
|
+
return plot.title;
|
|
12464
|
+
}).join(', ')
|
|
12465
|
+
};
|
|
12466
|
+
})
|
|
12467
|
+
});
|
|
12468
|
+
case 8:
|
|
12469
|
+
panelId = _context2.v;
|
|
12470
|
+
if (panelId) {
|
|
12471
|
+
_context2.n = 9;
|
|
12472
|
+
break;
|
|
12473
|
+
}
|
|
12474
|
+
return _context2.a(2);
|
|
12475
|
+
case 9:
|
|
12476
|
+
state = store.getState();
|
|
12477
|
+
if (mounted.current) {
|
|
12478
|
+
_context2.n = 10;
|
|
12479
|
+
break;
|
|
12480
|
+
}
|
|
12481
|
+
return _context2.a(2);
|
|
12482
|
+
case 10:
|
|
12483
|
+
if (!(((_state$workspace3 = state.workspace) == null ? void 0 : _state$workspace3.id) !== workspaceId || (_state$workspace4 = state.workspace) != null && _state$workspace4.isLoading || panelId && ((_getViewById3 = getViewById(state, panelId)) == null ? void 0 : _getViewById3.componentType) !== 'TimeSeries')) {
|
|
12484
|
+
_context2.n = 11;
|
|
12485
|
+
break;
|
|
12486
|
+
}
|
|
12487
|
+
throw new TranslatedError(t('dataexplorer-timeseries-error-workspace-changed'));
|
|
12488
|
+
case 11:
|
|
12489
|
+
// Saved services may not have loaded yet when creating the first panel.
|
|
12490
|
+
// Hydrate them before service actions persist the current service list.
|
|
12491
|
+
store.dispatch(timeSeriesActions.loadUserAddedTimeSeriesServices(getUserAddedEDRServices()));
|
|
12492
|
+
state = store.getState();
|
|
12493
|
+
existingService = (_timeSeriesSelectors$2 = timeSeriesSelectors.getServices(state)) == null ? void 0 : _timeSeriesSelectors$2.find(function (service) {
|
|
12494
|
+
return service.type === 'EDR' && normalizeEdrServiceUrl(service.url) === normalizeEdrServiceUrl(target.serviceUrl);
|
|
12495
|
+
});
|
|
12496
|
+
service = existingService != null ? existingService : {
|
|
12497
|
+
id: v4(),
|
|
12498
|
+
url: target.serviceUrl,
|
|
12499
|
+
type: 'EDR',
|
|
12500
|
+
name: target.serviceInformation.title || new URL(target.serviceUrl).hostname,
|
|
12501
|
+
description: target.serviceInformation.description || ''
|
|
12502
|
+
};
|
|
12503
|
+
plotId = v4();
|
|
12504
|
+
isNewPanel = !panelId;
|
|
12505
|
+
panelId != null ? panelId : panelId = v4();
|
|
12506
|
+
if (!(!isNewPanel && !timeSeriesSelectors.getPlotState(state, panelId))) {
|
|
12507
|
+
_context2.n = 12;
|
|
12508
|
+
break;
|
|
12509
|
+
}
|
|
12510
|
+
throw new TranslatedError(t('dataexplorer-timeseries-error-panel-loading'));
|
|
12511
|
+
case 12:
|
|
12512
|
+
if (!existingService) {
|
|
12513
|
+
store.dispatch(timeSeriesActions.upsertService(Object.assign({}, service, {
|
|
12514
|
+
panelId: panelId,
|
|
12515
|
+
isUpdate: false
|
|
12516
|
+
})));
|
|
12517
|
+
store.dispatch(snackbarActions.openSnackbar({
|
|
12518
|
+
type: snackbarTypes.SnackbarMessageType.VERBATIM_MESSAGE,
|
|
12519
|
+
message: t('dataexplorer-timeseries-service-added', {
|
|
12520
|
+
service: service.name,
|
|
12521
|
+
host: new URL(service.url).host
|
|
12522
|
+
})
|
|
12523
|
+
}));
|
|
12524
|
+
}
|
|
12525
|
+
if (isNewPanel) {
|
|
12526
|
+
plotPreset = {
|
|
12527
|
+
mapId: targetMapId || '',
|
|
12528
|
+
plots: [{
|
|
12529
|
+
plotId: plotId,
|
|
12530
|
+
title: title
|
|
12531
|
+
}],
|
|
12532
|
+
parameters: []
|
|
12533
|
+
};
|
|
12534
|
+
store.dispatch(workspaceActions.addWorkspaceView({
|
|
12535
|
+
id: panelId,
|
|
12536
|
+
componentType: 'TimeSeries',
|
|
12537
|
+
initialProps: {
|
|
12538
|
+
plotPreset: plotPreset,
|
|
12539
|
+
services: [],
|
|
12540
|
+
syncGroupsIds: []
|
|
12541
|
+
}
|
|
12542
|
+
}));
|
|
12543
|
+
store.dispatch(viewPresetActions.setViewPresetInline({
|
|
12544
|
+
panelId: panelId,
|
|
12545
|
+
isInline: true
|
|
12546
|
+
}));
|
|
12547
|
+
mosaicNode = getMosaicNode(store.getState());
|
|
12548
|
+
store.dispatch(workspaceActions.updateWorkspaceViews({
|
|
12549
|
+
mosaicNode: mosaicNode ? {
|
|
12550
|
+
direction: 'row',
|
|
12551
|
+
first: mosaicNode,
|
|
12552
|
+
second: panelId
|
|
12553
|
+
} : panelId
|
|
12554
|
+
}));
|
|
12555
|
+
// Use the same preset at mount time, so registration preserves this plot.
|
|
12556
|
+
store.dispatch(timeSeriesActions.registerTimeSeriesPreset({
|
|
12557
|
+
panelId: panelId,
|
|
12558
|
+
plotPreset: plotPreset
|
|
12559
|
+
}));
|
|
12560
|
+
if (targetMapId) {
|
|
12561
|
+
store.dispatch(syncGroupsActions.updateLinkedMap({
|
|
12562
|
+
panelId: panelId,
|
|
12563
|
+
mapIds: [targetMapId]
|
|
12564
|
+
}));
|
|
12565
|
+
}
|
|
12566
|
+
} else {
|
|
12567
|
+
store.dispatch(timeSeriesActions.addPlot({
|
|
12568
|
+
panelId: panelId,
|
|
12569
|
+
plotId: plotId,
|
|
12570
|
+
title: title,
|
|
12571
|
+
origin: 'dataExplorer'
|
|
12572
|
+
}));
|
|
12573
|
+
}
|
|
12574
|
+
store.dispatch(viewPresetActions.setViewPresetHasChanges({
|
|
12575
|
+
panelId: panelId,
|
|
12576
|
+
hasChanges: true
|
|
12577
|
+
}));
|
|
12578
|
+
store.dispatch(workspaceActions.markWorkspaceChanged());
|
|
12579
|
+
store.dispatch(timeSeriesActions.openCollectionSelection({
|
|
12580
|
+
panelId: panelId,
|
|
12581
|
+
plotId: plotId,
|
|
12582
|
+
serviceId: service.id,
|
|
12583
|
+
collectionId: target.collection.id
|
|
12584
|
+
}));
|
|
12585
|
+
store.dispatch(uiActions.setActiveWindowId({
|
|
12586
|
+
activeWindowId: panelId
|
|
12587
|
+
}));
|
|
12588
|
+
[uiTypes.DialogTypes.TimeSeriesManager, uiTypes.DialogTypes.TimeSeriesSelect].forEach(function (type) {
|
|
12589
|
+
return store.dispatch(uiActions.setToggleOpenDialog({
|
|
12590
|
+
type: type,
|
|
12591
|
+
setOpen: true,
|
|
12592
|
+
sourcePanelId: panelId
|
|
12593
|
+
}));
|
|
12594
|
+
});
|
|
12595
|
+
case 13:
|
|
12596
|
+
return _context2.a(2);
|
|
12597
|
+
}
|
|
12598
|
+
}, _callee2);
|
|
12599
|
+
}));
|
|
12600
|
+
return function (_x2) {
|
|
12601
|
+
return _ref4.apply(this, arguments);
|
|
12602
|
+
};
|
|
12603
|
+
}(), [choose, store, t]);
|
|
12604
|
+
var addTimeseries = React.useCallback(/*#__PURE__*/function () {
|
|
12605
|
+
var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(request) {
|
|
12606
|
+
var _t2;
|
|
12607
|
+
return _regenerator().w(function (_context3) {
|
|
12608
|
+
while (1) switch (_context3.p = _context3.n) {
|
|
12609
|
+
case 0:
|
|
12610
|
+
_context3.p = 0;
|
|
12611
|
+
_context3.n = 1;
|
|
12612
|
+
return addTimeseriesToWorkspace(request);
|
|
12613
|
+
case 1:
|
|
12614
|
+
_context3.n = 5;
|
|
12615
|
+
break;
|
|
12616
|
+
case 2:
|
|
12617
|
+
_context3.p = 2;
|
|
12618
|
+
_t2 = _context3.v;
|
|
12619
|
+
if (!(_t2 instanceof TranslatedError)) {
|
|
12620
|
+
_context3.n = 3;
|
|
12621
|
+
break;
|
|
12622
|
+
}
|
|
12623
|
+
throw _t2;
|
|
12624
|
+
case 3:
|
|
12625
|
+
if (!(_t2 instanceof EdrCollectionTargetError)) {
|
|
12626
|
+
_context3.n = 4;
|
|
12627
|
+
break;
|
|
12628
|
+
}
|
|
12629
|
+
throw new TranslatedError(t("dataexplorer-timeseries-error-" + _t2.code));
|
|
12630
|
+
case 4:
|
|
12631
|
+
console.error('Unable to add dataset as Timeseries: ', _t2);
|
|
12632
|
+
throw new TranslatedError(t('dataexplorer-timeseries-error-generic'));
|
|
12633
|
+
case 5:
|
|
12634
|
+
return _context3.a(2);
|
|
12635
|
+
}
|
|
12636
|
+
}, _callee3, null, [[0, 2]]);
|
|
12637
|
+
}));
|
|
12638
|
+
return function (_x3) {
|
|
12639
|
+
return _ref5.apply(this, arguments);
|
|
12640
|
+
};
|
|
12641
|
+
}(), [addTimeseriesToWorkspace, t]);
|
|
12642
|
+
return jsxs(Fragment, {
|
|
12643
|
+
children: [jsx(DataExplorerConnect, {
|
|
12644
|
+
onAddTimeseries: addTimeseries,
|
|
12645
|
+
productConfigKey: productConfigKey
|
|
12646
|
+
}), jsxs(Dialog, {
|
|
12647
|
+
onClose: function onClose() {
|
|
12648
|
+
return finishChoice();
|
|
12649
|
+
},
|
|
12650
|
+
open: !!choice,
|
|
12651
|
+
children: [jsx(DialogTitle, {
|
|
12652
|
+
children: choice == null ? void 0 : choice.title
|
|
12653
|
+
}), jsx(List, {
|
|
12654
|
+
children: choice == null ? void 0 : choice.options.map(function (option) {
|
|
12655
|
+
return jsx(ListItemButton, {
|
|
12656
|
+
onClick: function onClick() {
|
|
12657
|
+
return finishChoice(option.id);
|
|
12658
|
+
},
|
|
12659
|
+
children: jsx(ListItemText, {
|
|
12660
|
+
primary: option.title,
|
|
12661
|
+
secondary: option.description
|
|
12662
|
+
})
|
|
12663
|
+
}, option.id);
|
|
12664
|
+
})
|
|
12665
|
+
}), jsx(DialogActions, {
|
|
12666
|
+
children: jsx(Button, {
|
|
12667
|
+
onClick: function onClick() {
|
|
12668
|
+
return finishChoice();
|
|
12669
|
+
},
|
|
12670
|
+
children: t('shared-confirmation-cancel', {
|
|
12671
|
+
ns: SHARED_NAMESPACE
|
|
12672
|
+
})
|
|
12673
|
+
})
|
|
12674
|
+
})]
|
|
12675
|
+
})]
|
|
12676
|
+
});
|
|
12677
|
+
};
|
|
12678
|
+
|
|
12269
12679
|
/* *
|
|
12270
12680
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
12271
12681
|
* you may not use this file except in compliance with the License.
|
|
@@ -13906,4 +14316,4 @@ var workspaceEndpoints = [].concat(createUserPreferencesEndpoints(), [http.get(/
|
|
|
13906
14316
|
}, _callee6);
|
|
13907
14317
|
})))]);
|
|
13908
14318
|
|
|
13909
|
-
export { ALL_COMPONENT_TYPES, AVIATION_COMPONENT_TYPES, CAP_COMPONENT_TYPES, ComponentsLookUpWrapper, DemoWrapper, PresetAction, SUPPORTED_COMPONENT_TYPES, SUPPORTED_TIMESERIES_COMPONENT_TYPES, ViewPresetErrorComponent, ViewPresetErrorType, WARNING_LIST_COMPONENT_TYPES, WORKSPACE_NAMESPACE, WorkspaceDetail, WorkspaceErrorType, WorkspaceI18nProvider, WorkspacePresetAction, WorkspaceStoreWrapper, WorkspaceThemeProvider, WorkspaceTopBar, WorkspaceViewConnect, WorkspaceWrapperProviderWithStore, createBalancedMosaicNode, createCustomEmptyMapWorkspace, defaultAuthConfig, defaultViewPresetsFilters, getEmptyMapWorkspace, getWorkspaceRouteUrl, selectors$1 as selectors, templatePresetsFixture, viewPresetActions, viewPresetsListener, viewPresetsReducer, workspaceActions, workspaceEndpoints, workspaceListActions, workspaceListListener, workspaceListReducer, workspaceListener, workspaceMiddlewares, workspaceReducer, workspaceReducersMap, routes as workspaceRoutes, workspaceSentryStateMap, workspaceTranslations };
|
|
14319
|
+
export { ALL_COMPONENT_TYPES, AVIATION_COMPONENT_TYPES, CAP_COMPONENT_TYPES, ComponentsLookUpWrapper, DataExplorerTimeseriesConnect, DemoWrapper, PresetAction, SUPPORTED_COMPONENT_TYPES, SUPPORTED_TIMESERIES_COMPONENT_TYPES, ViewPresetErrorComponent, ViewPresetErrorType, WARNING_LIST_COMPONENT_TYPES, WORKSPACE_NAMESPACE, WorkspaceDetail, WorkspaceErrorType, WorkspaceI18nProvider, WorkspacePresetAction, WorkspaceStoreWrapper, WorkspaceThemeProvider, WorkspaceTopBar, WorkspaceViewConnect, WorkspaceWrapperProviderWithStore, createBalancedMosaicNode, createCustomEmptyMapWorkspace, defaultAuthConfig, defaultViewPresetsFilters, getEmptyMapWorkspace, getWorkspaceRouteUrl, selectors$1 as selectors, templatePresetsFixture, viewPresetActions, viewPresetsListener, viewPresetsReducer, workspaceActions, workspaceEndpoints, workspaceListActions, workspaceListListener, workspaceListReducer, workspaceListener, workspaceMiddlewares, workspaceReducer, workspaceReducersMap, routes as workspaceRoutes, workspaceSentryStateMap, workspaceTranslations };
|
package/dist/src/index.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export * from './lib/components/ComponentsLookUpWrapper';
|
|
|
14
14
|
export * from './lib/components/WorkspaceView';
|
|
15
15
|
export * from './lib/components/WorkspaceTopBar';
|
|
16
16
|
export * from './lib/components/WorkspaceDetail';
|
|
17
|
+
export { DataExplorerTimeseriesConnect } from './lib/components/DataExplorerTimeseriesConnect/DataExplorerTimeseriesConnect';
|
|
17
18
|
export { WORKSPACE_NAMESPACE } from './lib/utils/i18n';
|
|
18
19
|
export { workspaceTranslations };
|
|
19
20
|
export { routes as workspaceRoutes, getWorkspaceRouteUrl, } from './lib/utils/routes';
|
package/dist/src/lib/components/DataExplorerTimeseriesConnect/DataExplorerTimeseriesConnect.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Coordinates the Data Explorer with the workspace and Timeseries panels.
|
|
4
|
+
* Data Explorer itself does not depend on workspace or Timeseries.
|
|
5
|
+
*/
|
|
6
|
+
export declare const DataExplorerTimeseriesConnect: React.FC<{
|
|
7
|
+
productConfigKey: string;
|
|
8
|
+
}>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opengeoweb/workspace",
|
|
3
|
-
"version": "21.
|
|
3
|
+
"version": "21.1.0-nightly-20261106",
|
|
4
4
|
"description": "GeoWeb Workspace library for the opengeoweb project",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -21,33 +21,35 @@
|
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"react-redux": "^9.2.0",
|
|
24
|
-
"@opengeoweb/shared": "21.
|
|
25
|
-
"@opengeoweb/store": "21.
|
|
26
|
-
"@opengeoweb/api": "21.
|
|
24
|
+
"@opengeoweb/shared": "21.1.0-nightly-20261106",
|
|
25
|
+
"@opengeoweb/store": "21.1.0-nightly-20261106",
|
|
26
|
+
"@opengeoweb/api": "21.1.0-nightly-20261106",
|
|
27
27
|
"react-hook-form": "^7.50.1",
|
|
28
|
-
"@opengeoweb/theme": "21.
|
|
28
|
+
"@opengeoweb/theme": "21.1.0-nightly-20261106",
|
|
29
29
|
"@reduxjs/toolkit": "^2.6.1",
|
|
30
|
-
"@opengeoweb/snackbar": "21.
|
|
30
|
+
"@opengeoweb/snackbar": "21.1.0-nightly-20261106",
|
|
31
31
|
"react-window": "^2.2.6",
|
|
32
32
|
"lodash": "^4.18.1",
|
|
33
33
|
"axios": "^1.20.0",
|
|
34
34
|
"react-mosaic-component": "npm:react-mosaic-component-opengeoweb@^6.1.1-opengeoweb.1",
|
|
35
|
-
"@opengeoweb/form-fields": "21.
|
|
36
|
-
"@opengeoweb/time-series": "21.
|
|
37
|
-
"@opengeoweb/
|
|
38
|
-
"
|
|
39
|
-
"@opengeoweb/
|
|
40
|
-
"@opengeoweb/
|
|
41
|
-
"@opengeoweb/
|
|
42
|
-
"@opengeoweb/
|
|
43
|
-
"@opengeoweb/
|
|
35
|
+
"@opengeoweb/form-fields": "21.1.0-nightly-20261106",
|
|
36
|
+
"@opengeoweb/time-series": "21.1.0-nightly-20261106",
|
|
37
|
+
"@opengeoweb/data-explorer": "21.1.0-nightly-20261106",
|
|
38
|
+
"uuid": "^11.1.1",
|
|
39
|
+
"@opengeoweb/authentication": "21.1.0-nightly-20261106",
|
|
40
|
+
"@opengeoweb/plugins": "21.1.0-nightly-20261106",
|
|
41
|
+
"@opengeoweb/core": "21.1.0-nightly-20261106",
|
|
42
|
+
"@opengeoweb/taf": "21.1.0-nightly-20261106",
|
|
43
|
+
"@opengeoweb/sigmet-airmet": "21.1.0-nightly-20261106",
|
|
44
|
+
"@opengeoweb/warnings": "21.1.0-nightly-20261106",
|
|
45
|
+
"@opengeoweb/space-weather": "21.1.0-nightly-20261106",
|
|
44
46
|
"i18next": "^25.0.1",
|
|
45
47
|
"react-i18next": "^15.1.1",
|
|
46
48
|
"@mui/material": "^9.0.1",
|
|
47
|
-
"@opengeoweb/webmap-react": "21.
|
|
49
|
+
"@opengeoweb/webmap-react": "21.1.0-nightly-20261106",
|
|
48
50
|
"@tanstack/react-query": "^5.85.5",
|
|
49
|
-
"@opengeoweb/soundings": "21.
|
|
50
|
-
"@opengeoweb/knmi-components": "21.
|
|
51
|
+
"@opengeoweb/soundings": "21.1.0-nightly-20261106",
|
|
52
|
+
"@opengeoweb/knmi-components": "21.1.0-nightly-20261106",
|
|
51
53
|
"@mui/system": "^9.0.1"
|
|
52
54
|
},
|
|
53
55
|
"peerDependencies": {
|
|
@@ -56,7 +58,7 @@
|
|
|
56
58
|
"@emotion/styled": "*"
|
|
57
59
|
},
|
|
58
60
|
"devDependencies": {
|
|
59
|
-
"eslint-plugin-storybook": "10.3.3",
|
|
61
|
+
"eslint-plugin-storybook": "^10.3.3",
|
|
60
62
|
"msw": "^2.7.3"
|
|
61
63
|
},
|
|
62
64
|
"files": [
|