@opengeoweb/workspace 12.1.2 → 12.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.esm.js +854 -613
- package/package.json +19 -19
- package/src/lib/api/viewpresets-api/api.d.ts +4 -0
- package/src/lib/api/workspace-api/api.d.ts +3 -3
- package/src/lib/api/workspace-api/hooks.d.ts +2 -2
- package/src/lib/components/ViewPresetsFormDialog/ViewPresetsFormDialogConnect.d.ts +2 -2
- package/src/lib/components/WorkspacePresetsFormDialog/WorkspacePresetsForm.d.ts +2 -2
- package/src/lib/components/WorkspacePresetsFormDialog/WorkspacePresetsFormDialog.d.ts +2 -2
- package/src/lib/components/WorkspaceSelectList/WorkspaceSelectList.d.ts +2 -2
- package/src/lib/components/WorkspaceView/WorkspaceTileConnect.d.ts +1 -1
- package/src/lib/components/WorkspaceView/helpers.d.ts +2 -2
- package/src/lib/hooks/useFetchViewPresets.d.ts +1 -0
- package/src/lib/store/store.d.ts +11 -11
- package/src/lib/store/viewPresets/listener.d.ts +4 -4
- package/src/lib/store/viewPresets/reducer.d.ts +1 -1
- package/src/lib/store/viewPresets/selectors.d.ts +511 -35
- package/src/lib/store/viewPresets/types.d.ts +12 -9
- package/src/lib/store/viewPresets/utils.d.ts +1 -1
- package/src/lib/store/viewPresetsList/reducer.d.ts +1 -1
- package/src/lib/store/viewPresetsList/selectors.d.ts +177 -4
- package/src/lib/store/viewPresetsList/types.d.ts +4 -3
- package/src/lib/store/workspace/listener.d.ts +3 -3
- package/src/lib/store/workspace/selectors.d.ts +1788 -68
- package/src/lib/store/workspace/types.d.ts +19 -9
- package/src/lib/store/workspace/utils.d.ts +2 -2
- package/src/lib/store/workspaceList/listener.d.ts +3 -3
- package/src/lib/store/workspaceList/reducer.d.ts +21 -3
- package/src/lib/store/workspaceList/selectors.d.ts +310 -76
- package/src/lib/store/workspaceList/types.d.ts +12 -11
- package/src/lib/store/workspaceList/utils.d.ts +4 -4
- package/src/lib/utils/api.d.ts +3 -3
- package/src/lib/utils/utils.d.ts +3 -2
package/index.esm.js
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
import { createEntityAdapter, createSlice, createSelector, createListenerMiddleware, combineReducers, configureStore } from '@reduxjs/toolkit';
|
|
2
|
-
import { syncGroupsTypes, syncGroupsActions, layerActions, mapActions, uiActions, genericActions, layerTypes, mapEnums, selectorMemoizationOptions, genericSelectors, mapSelectors, syncGroupsSelectors, routerActions, createViewObjectForNewMap, mapListener, serviceListener, layersListener, syncGroupsListener, openlayersListener,
|
|
3
|
-
import { createApiInstance, createNonAuthApiInstance, getApi, createFakeApiInstance, ApiProvider,
|
|
4
|
-
import { chunk, cloneDeep, pick, isEmpty, isEqual, isString } from 'lodash';
|
|
5
|
-
import { getLeaves, MosaicContext, getAndAssertNodeAtPathExists,
|
|
2
|
+
import { syncGroupsTypes, syncGroupsActions, layerActions, mapActions, uiActions, genericActions, layerTypes, mapEnums, selectorMemoizationOptions, genericSelectors, mapSelectors, syncGroupsSelectors, routerActions, createViewObjectForNewMap, mapListener, serviceListener, layersListener, syncGroupsListener, openlayersListener, uiReducer, loadingIndicatorReducer, syncGroupsReducer, layerReducer, serviceReducer, mapReducer, loadingIndicatorSelectors, uiTypes, linkComponentTypesConstants, uiSelectors } from '@opengeoweb/store';
|
|
3
|
+
import { createApiInstance, createNonAuthApiInstance, getApi, createFakeApiInstance, ApiProvider, getHeaders, handleResponse, useApiContext, useAuthenticationContext as useAuthenticationContext$1, GEOWEB_ROLE_PRESETS_ADMIN as GEOWEB_ROLE_PRESETS_ADMIN$1 } from '@opengeoweb/api';
|
|
4
|
+
import { chunk, cloneDeep, union, pick, isEmpty, isEqual, isString } from 'lodash';
|
|
5
|
+
import { getLeaves, createBalancedTreeFromLeaves, MosaicContext, getAndAssertNodeAtPathExists, MosaicWindow, Mosaic } from 'react-mosaic-component';
|
|
6
6
|
import { timeSeriesActions, TimeSeriesTypes, timeSeriesSelectors, timeSeriesReducer } from '@opengeoweb/timeseries';
|
|
7
|
-
import { publicWarningActions,
|
|
8
|
-
import {
|
|
7
|
+
import { publicWarningActions, warningsTranslations, WARN_NAMESPACE, publicWarningsSelectors } from '@opengeoweb/warnings';
|
|
8
|
+
import { PROJECTION, getAxiosErrorMessage, isAxiosAuthError, isAxiosError as isAxiosError$1, safelyInitI18nForTestsAndStories, sharedTranslations, SHARED_NAMESPACE, ConfirmationServiceProvider, usePrevious, AlertBanner, sessionStorageProvider, SystemScope, CustomTooltip, SearchHighlight, ToggleMenu, CustomIconButton, Filter, LastUpdateTime, renderCounter, CustomDialog, ToolContainer, CustomToggleButton, useConfirmationDialog, ConfirmationButtons } from '@opengeoweb/shared';
|
|
9
9
|
import { snackbarTypes, snackbarActions, snackbarListener, snackbarReducer, SnackbarWrapperConnect } from '@opengeoweb/snackbar';
|
|
10
10
|
import { isAxiosError } from 'axios';
|
|
11
11
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
12
|
-
import { ThemeWrapper, lightTheme,
|
|
12
|
+
import { ThemeWrapper, lightTheme, SharedPresetsMyUser, SharedPresetsOtherUsers, Delete, Preset, PresetWorkspace, PresetTiles, CloudLoading, CloudIdle, Link, LinkOff, SplitVertical, SplitHorizontal, Expand, UnExpand, Close, WebAssetOff, Exclamation } from '@opengeoweb/theme';
|
|
13
13
|
import { Provider, useDispatch, useSelector, useStore, shallowEqual } from 'react-redux';
|
|
14
|
-
import {
|
|
14
|
+
import { useTranslation, I18nextProvider } from 'react-i18next';
|
|
15
15
|
import { AuthenticationProvider, useAuthenticationContext, GEOWEB_ROLE_PRESETS_ADMIN } from '@opengeoweb/authentication';
|
|
16
16
|
import { QueryClient, QueryClientProvider, useMutation } from '@tanstack/react-query';
|
|
17
17
|
import i18n from 'i18next';
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
18
|
+
import { webmapReactTranslations, WEBMAP_REACT_NAMESPACE } from '@opengeoweb/webmap-react';
|
|
19
|
+
import { coreTranslations, CORE_NAMESPACE } from '@opengeoweb/core';
|
|
20
|
+
import { formFieldsTranslations, FORM_FIELDS_NAMESPACE, ReactHookFormTextField, ReactHookFormHiddenInput, ReactHookFormProvider, defaultFormOptions } from '@opengeoweb/form-fields';
|
|
21
21
|
import * as React from 'react';
|
|
22
22
|
import React__default, { useCallback, useEffect } from 'react';
|
|
23
|
-
import {
|
|
23
|
+
import { LinearProgress, Typography, styled, ListItemIcon, ListItem, ListItemButton, ListItemText, Grid, Box, Menu, ListSubheader, MenuItem, useTheme, List, Checkbox, FormGroup, FormControlLabel, Tabs } from '@mui/material';
|
|
24
24
|
import 'react-mosaic-component/react-mosaic-component.css';
|
|
25
25
|
import AutoSizer from 'react-virtualized-auto-sizer';
|
|
26
26
|
import { FixedSizeList } from 'react-window';
|
|
@@ -78,8 +78,11 @@ var en = {
|
|
|
78
78
|
"workspace-list-success-edit": "Workspace \"{{TITLE}}\" successfully edited",
|
|
79
79
|
"workspace-list-success-save": "Workspace \"{{TITLE}}\" successfully saved",
|
|
80
80
|
"workspace-list-success-reset": "Workspace \"{{TITLE}}\" has been reset succesfully",
|
|
81
|
+
"workspace-list-success-share": "Workspace \"{{TITLE}}\" succesfully shared",
|
|
82
|
+
"workspace-list-success-unshare": "Workspace \"{{TITLE}}\" succesfully unshared",
|
|
81
83
|
"workspace-save-error": "Failed to save workspace \"{{TITLE}}\"",
|
|
82
84
|
"workspace-error-generic": "Something went wrong, try again",
|
|
85
|
+
"workspace-error-auth": "Error related to authentication",
|
|
83
86
|
"workspace-viewpreset-success-delete": "Map preset \"{{TITLE}}\" successfully deleted",
|
|
84
87
|
"workspace-viewpreset-success-save-as": "New map preset \"{{TITLE}}\" successfully saved",
|
|
85
88
|
"workspace-viewpreset-success-edit": "Map preset \"{{TITLE}}\" successfully edited",
|
|
@@ -105,7 +108,9 @@ var en = {
|
|
|
105
108
|
"workspace-link-location-header": "Location",
|
|
106
109
|
"workspace-link": "Link",
|
|
107
110
|
"workspace-dialog-confirm-reset-view-message": "The view will be reset and all changes will be lost. Are you sure you want to continue?",
|
|
108
|
-
"workspace-viewpreset-success-reset": "View preset \"{{TITLE}}\" has been reset succesfully"
|
|
111
|
+
"workspace-viewpreset-success-reset": "View preset \"{{TITLE}}\" has been reset succesfully",
|
|
112
|
+
"workspace-viewpreset-success-share": "View preset \"{{TITLE}}\" has been successfully shared",
|
|
113
|
+
"workspace-viewpreset-success-unshare": "View preset \"{{TITLE}}\" has been successfully unshared"
|
|
109
114
|
};
|
|
110
115
|
var fi = {
|
|
111
116
|
"workspace-menu": "Workspace menu",
|
|
@@ -157,9 +162,11 @@ var fi = {
|
|
|
157
162
|
"workspace-list-success-duplicate": "Workspace \"{{TITLE}}\" tallennettu onnistuneesti",
|
|
158
163
|
"workspace-list-success-edit": "Workspacea \"{{TITLE}}\" muokattu onnistuneesti",
|
|
159
164
|
"workspace-list-success-reset": "ei käännetty",
|
|
165
|
+
"workspace-list-success-share": "ei kannetty",
|
|
160
166
|
"workspace-list-success-save": "Workspace \"{{TITLE}}\" tallennettu onnistuneesti",
|
|
161
167
|
"workspace-save-error": "Workspacen \"{{TITLE}}\" tallentaminen epäonnistui",
|
|
162
168
|
"workspace-error-generic": "Jotain meni mönkään. Yritä uudelleen.",
|
|
169
|
+
"workspace-error-auth": "ei kaannetty",
|
|
163
170
|
"workspace-viewpreset-success-delete": "Map preset \"{{TITLE}}\" poistettu onnistuneesti",
|
|
164
171
|
"workspace-viewpreset-success-save-as": "Uusi map preset \"{{TITLE}}\" tallennettu onnistuneesti",
|
|
165
172
|
"workspace-viewpreset-success-edit": "Map presettiä \"{{TITLE}}\" muokattu onnistuneesti",
|
|
@@ -183,7 +190,9 @@ var fi = {
|
|
|
183
190
|
"workspace-link-location-header": "Sijainti",
|
|
184
191
|
"workspace-link": "Link",
|
|
185
192
|
"workspace-dialog-confirm-reset-view-message": "ei käännetty",
|
|
186
|
-
"workspace-viewpreset-success-reset": "ei käännetty"
|
|
193
|
+
"workspace-viewpreset-success-reset": "ei käännetty",
|
|
194
|
+
"workspace-viewpreset-success-share": "ei käännetty",
|
|
195
|
+
"workspace-viewpreset-success-unshare": "ei käännetty"
|
|
187
196
|
};
|
|
188
197
|
var no = {
|
|
189
198
|
"workspace-menu": "Arbeidsflater",
|
|
@@ -197,7 +206,7 @@ var no = {
|
|
|
197
206
|
"workspace-save-as": "Lagre som",
|
|
198
207
|
"workspace-edit": "Endre (navn og sammendrag)",
|
|
199
208
|
"workspace-share": "Del",
|
|
200
|
-
"workspace-stop-share": "
|
|
209
|
+
"workspace-stop-share": "Stopp deling",
|
|
201
210
|
"geoweb-welcome": "Velkommen til GeoWeb. Åpne et forhåndsvalg for å åpne nye vinduer",
|
|
202
211
|
"workspace-modified-new": "modifisert",
|
|
203
212
|
"workspace-modified-existing": "ikke lagret",
|
|
@@ -234,10 +243,13 @@ var no = {
|
|
|
234
243
|
"workspace-list-success-delete": "Arbeidsflaten \"{{TITLE}}\" er slettet",
|
|
235
244
|
"workspace-list-success-duplicate": "Arbeidsflaten \"{{TITLE}}\" er lagret",
|
|
236
245
|
"workspace-list-success-edit": "Arbeidsflaten \"{{TITLE}}\" er endret",
|
|
237
|
-
"workspace-list-success-reset": "
|
|
246
|
+
"workspace-list-success-reset": "Arbeidsflaten \"{{TITLE}}\" er tilbakestilt",
|
|
247
|
+
"workspace-list-success-share": "Arbeidsflaten \"{{TITLE}}\" er delt",
|
|
248
|
+
"workspace-list-success-unshare": "Arbeidsflaten \"{{TITLE}}\" deles ikke lenger",
|
|
238
249
|
"workspace-list-success-save": "Arbeidsflaten \"{{TITLE}}\" er lagret",
|
|
239
250
|
"workspace-save-error": "Feilet i å lagre arbeidsflaten \"{{TITLE}}\"",
|
|
240
251
|
"workspace-error-generic": "Noe feilet, prøv igjen",
|
|
252
|
+
"workspace-error-auth": "Autentiseringsfeil",
|
|
241
253
|
"workspace-viewpreset-success-delete": "Snarvei \"{{TITLE}}\" er slettet",
|
|
242
254
|
"workspace-viewpreset-success-save-as": "Ny snarvei \"{{TITLE}}\" er lagret",
|
|
243
255
|
"workspace-viewpreset-success-edit": "Snarvei \"{{TITLE}}\" er endret",
|
|
@@ -260,8 +272,10 @@ var no = {
|
|
|
260
272
|
"workspace-dialog-confirm-delete-user": "Arbeidsflaten blir slettet, men alle vinduer som er brukt vil forbli intakte.",
|
|
261
273
|
"workspace-link-location-header": "Lokasjon",
|
|
262
274
|
"workspace-link": "Link",
|
|
263
|
-
"workspace-dialog-confirm-reset-view-message": "
|
|
264
|
-
"workspace-viewpreset-success-reset": "
|
|
275
|
+
"workspace-dialog-confirm-reset-view-message": "Endringer i dette vinduet blir tapt. Er du sikker på at du vil fortsette?",
|
|
276
|
+
"workspace-viewpreset-success-reset": "Vinduet er tilbakestilt",
|
|
277
|
+
"workspace-viewpreset-success-share": "Vinduet \"{{TITLE}}\" har blitt delt",
|
|
278
|
+
"workspace-viewpreset-success-unshare": "Vinduet \"{{TITLE}}\" deles ikke lenger"
|
|
265
279
|
};
|
|
266
280
|
var nl = {
|
|
267
281
|
"workspace-menu": "Workspace menu",
|
|
@@ -313,9 +327,11 @@ var nl = {
|
|
|
313
327
|
"workspace-list-success-duplicate": "Workspace \"{{TITLE}}\" succesvol opgeslagen",
|
|
314
328
|
"workspace-list-success-edit": "Workspace \"{{TITLE}}\" succesvol aangepast",
|
|
315
329
|
"workspace-list-success-reset": "Workspace\"{{TITLE}}\" succesvol hersteld naar origineel",
|
|
330
|
+
"workspace-list-success-share": "niet vertaald",
|
|
316
331
|
"workspace-list-success-save": "Workspace \"{{TITLE}}\" succesvol opgeslagen",
|
|
317
332
|
"workspace-save-error": "Workspace opslaan \"{{TITLE}}\" mislukt",
|
|
318
333
|
"workspace-error-generic": "Er is iets mis gegaan, probeer het opnieuw",
|
|
334
|
+
"workspace-error-auth": "niet vertaald",
|
|
319
335
|
"workspace-viewpreset-success-delete": "Map preset \"{{TITLE}}\" succesvol verwijderd",
|
|
320
336
|
"workspace-viewpreset-success-save-as": "Nieuwe map preset \"{{TITLE}}\" succesvol opgeslagen",
|
|
321
337
|
"workspace-viewpreset-success-edit": "Map preset \"{{TITLE}}\" succesvol aangepast",
|
|
@@ -342,7 +358,9 @@ var nl = {
|
|
|
342
358
|
"workspace-link-location-header": "Locatie",
|
|
343
359
|
"workspace-link": "Link",
|
|
344
360
|
"workspace-dialog-confirm-reset-view-message": "De viewpreset zal worden hersteld en alle aanpassing zullen worden verwijderd. Weet je zeker dat je door wilt gaan?",
|
|
345
|
-
"workspace-viewpreset-success-reset": "Viewpreset \"{{TITLE}}\" succesvol hersteld naar origineel"
|
|
361
|
+
"workspace-viewpreset-success-reset": "Viewpreset \"{{TITLE}}\" succesvol hersteld naar origineel",
|
|
362
|
+
"workspace-viewpreset-success-share": "niet vertaald",
|
|
363
|
+
"workspace-viewpreset-success-unshare": "niet vertaald"
|
|
346
364
|
};
|
|
347
365
|
var workspaceTranslations = {
|
|
348
366
|
en: en,
|
|
@@ -383,7 +401,7 @@ function _objectWithoutPropertiesLoose(r, e) {
|
|
|
383
401
|
if (null == r) return {};
|
|
384
402
|
var t = {};
|
|
385
403
|
for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
|
|
386
|
-
if (e.indexOf(n)
|
|
404
|
+
if (-1 !== e.indexOf(n)) continue;
|
|
387
405
|
t[n] = r[n];
|
|
388
406
|
}
|
|
389
407
|
return t;
|
|
@@ -406,9 +424,9 @@ function _regeneratorRuntime() {
|
|
|
406
424
|
function define(t, e, r) {
|
|
407
425
|
return Object.defineProperty(t, e, {
|
|
408
426
|
value: r,
|
|
409
|
-
enumerable:
|
|
410
|
-
configurable:
|
|
411
|
-
writable:
|
|
427
|
+
enumerable: true,
|
|
428
|
+
configurable: true,
|
|
429
|
+
writable: true
|
|
412
430
|
}), t[e];
|
|
413
431
|
}
|
|
414
432
|
try {
|
|
@@ -501,7 +519,7 @@ function _regeneratorRuntime() {
|
|
|
501
519
|
if ("throw" === i) throw a;
|
|
502
520
|
return {
|
|
503
521
|
value: t,
|
|
504
|
-
done:
|
|
522
|
+
done: true
|
|
505
523
|
};
|
|
506
524
|
}
|
|
507
525
|
for (n.method = i, n.arg = a;;) {
|
|
@@ -552,7 +570,7 @@ function _regeneratorRuntime() {
|
|
|
552
570
|
function Context(t) {
|
|
553
571
|
this.tryEntries = [{
|
|
554
572
|
tryLoc: "root"
|
|
555
|
-
}], t.forEach(pushTryEntry, this), this.reset(
|
|
573
|
+
}], t.forEach(pushTryEntry, this), this.reset(true);
|
|
556
574
|
}
|
|
557
575
|
function values(e) {
|
|
558
576
|
if (e || "" === e) {
|
|
@@ -562,8 +580,8 @@ function _regeneratorRuntime() {
|
|
|
562
580
|
if (!isNaN(e.length)) {
|
|
563
581
|
var o = -1,
|
|
564
582
|
i = function next() {
|
|
565
|
-
for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done =
|
|
566
|
-
return next.value = t, next.done =
|
|
583
|
+
for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = false, next;
|
|
584
|
+
return next.value = t, next.done = true, next;
|
|
567
585
|
};
|
|
568
586
|
return i.next = i;
|
|
569
587
|
}
|
|
@@ -572,10 +590,10 @@ function _regeneratorRuntime() {
|
|
|
572
590
|
}
|
|
573
591
|
return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", {
|
|
574
592
|
value: GeneratorFunctionPrototype,
|
|
575
|
-
configurable:
|
|
593
|
+
configurable: true
|
|
576
594
|
}), o(GeneratorFunctionPrototype, "constructor", {
|
|
577
595
|
value: GeneratorFunction,
|
|
578
|
-
configurable:
|
|
596
|
+
configurable: true
|
|
579
597
|
}), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) {
|
|
580
598
|
var e = "function" == typeof t && t.constructor;
|
|
581
599
|
return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name));
|
|
@@ -604,17 +622,17 @@ function _regeneratorRuntime() {
|
|
|
604
622
|
return r.reverse(), function next() {
|
|
605
623
|
for (; r.length;) {
|
|
606
624
|
var t = r.pop();
|
|
607
|
-
if (t in e) return next.value = t, next.done =
|
|
625
|
+
if (t in e) return next.value = t, next.done = false, next;
|
|
608
626
|
}
|
|
609
|
-
return next.done =
|
|
627
|
+
return next.done = true, next;
|
|
610
628
|
};
|
|
611
629
|
}, e.values = values, Context.prototype = {
|
|
612
630
|
constructor: Context,
|
|
613
631
|
reset: function (e) {
|
|
614
|
-
if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done =
|
|
632
|
+
if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = false, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);
|
|
615
633
|
},
|
|
616
634
|
stop: function () {
|
|
617
|
-
this.done =
|
|
635
|
+
this.done = true;
|
|
618
636
|
var t = this.tryEntries[0].completion;
|
|
619
637
|
if ("throw" === t.type) throw t.arg;
|
|
620
638
|
return this.rval;
|
|
@@ -633,10 +651,10 @@ function _regeneratorRuntime() {
|
|
|
633
651
|
var c = n.call(i, "catchLoc"),
|
|
634
652
|
u = n.call(i, "finallyLoc");
|
|
635
653
|
if (c && u) {
|
|
636
|
-
if (this.prev < i.catchLoc) return handle(i.catchLoc,
|
|
654
|
+
if (this.prev < i.catchLoc) return handle(i.catchLoc, true);
|
|
637
655
|
if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
|
|
638
656
|
} else if (c) {
|
|
639
|
-
if (this.prev < i.catchLoc) return handle(i.catchLoc,
|
|
657
|
+
if (this.prev < i.catchLoc) return handle(i.catchLoc, true);
|
|
640
658
|
} else {
|
|
641
659
|
if (!u) throw Error("try statement without catch or finally");
|
|
642
660
|
if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
|
|
@@ -956,22 +974,25 @@ var PresetFilterType;
|
|
|
956
974
|
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
957
975
|
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
958
976
|
* */
|
|
959
|
-
var
|
|
977
|
+
var personalFilterState = {
|
|
960
978
|
label: 'shared-filter-my-presets',
|
|
961
979
|
id: PresetFilterType.personal,
|
|
962
980
|
isSelected: true,
|
|
963
981
|
isDisabled: false
|
|
964
|
-
}
|
|
982
|
+
};
|
|
983
|
+
var systemFilterState = {
|
|
965
984
|
label: 'shared-filter-system-presets',
|
|
966
985
|
id: PresetFilterType.system,
|
|
967
986
|
isSelected: true,
|
|
968
987
|
isDisabled: false
|
|
969
|
-
}
|
|
988
|
+
};
|
|
989
|
+
var sharedFilterState = {
|
|
970
990
|
label: 'shared-filter-shared-presets',
|
|
971
991
|
id: PresetFilterType.shared,
|
|
972
992
|
isSelected: true,
|
|
973
993
|
isDisabled: false
|
|
974
|
-
}
|
|
994
|
+
};
|
|
995
|
+
var defaultPresetFilterState = [personalFilterState, systemFilterState, sharedFilterState];
|
|
975
996
|
var workspaceListAdapter = createEntityAdapter();
|
|
976
997
|
var initialState$3 = Object.assign({
|
|
977
998
|
isFetching: false,
|
|
@@ -979,7 +1000,7 @@ var initialState$3 = Object.assign({
|
|
|
979
1000
|
isWorkspaceListDialogOpen: false
|
|
980
1001
|
}, workspaceListAdapter.getInitialState(), {
|
|
981
1002
|
searchQuery: '',
|
|
982
|
-
workspaceListFilters:
|
|
1003
|
+
workspaceListFilters: defaultPresetFilterState
|
|
983
1004
|
});
|
|
984
1005
|
var slice$3 = createSlice({
|
|
985
1006
|
initialState: initialState$3,
|
|
@@ -1039,8 +1060,13 @@ var slice$3 = createSlice({
|
|
|
1039
1060
|
},
|
|
1040
1061
|
onErrorWorkspacePresetAction: function onErrorWorkspacePresetAction(draft, action) {
|
|
1041
1062
|
var error = action.payload.error;
|
|
1042
|
-
draft.workspaceActionDialog
|
|
1043
|
-
|
|
1063
|
+
if (draft.workspaceActionDialog) {
|
|
1064
|
+
draft.workspaceActionDialog.isFetching = false;
|
|
1065
|
+
draft.workspaceActionDialog.error = error;
|
|
1066
|
+
} else {
|
|
1067
|
+
// fallback if dialog isn't open (e.g. SHARE action)
|
|
1068
|
+
draft.error = error;
|
|
1069
|
+
}
|
|
1044
1070
|
},
|
|
1045
1071
|
toggleWorkspaceDialog: function toggleWorkspaceDialog(draft, action) {
|
|
1046
1072
|
var isListDialogOpen = action.payload.isWorkspaceListDialogOpen;
|
|
@@ -1144,21 +1170,19 @@ var PresetAction;
|
|
|
1144
1170
|
* */
|
|
1145
1171
|
var viewPresetsListFilterOptions = [{
|
|
1146
1172
|
label: 'shared-filter-my-presets',
|
|
1147
|
-
id:
|
|
1148
|
-
type: 'scope',
|
|
1173
|
+
id: PresetFilterType.personal,
|
|
1149
1174
|
isSelected: true,
|
|
1150
1175
|
isDisabled: false
|
|
1151
1176
|
}, {
|
|
1152
1177
|
label: 'shared-filter-system-presets',
|
|
1153
|
-
id:
|
|
1154
|
-
type: 'scope',
|
|
1178
|
+
id: PresetFilterType.system,
|
|
1155
1179
|
isSelected: true,
|
|
1156
1180
|
isDisabled: false
|
|
1157
1181
|
}, {
|
|
1158
1182
|
label: 'shared-filter-shared-presets',
|
|
1159
|
-
id:
|
|
1183
|
+
id: PresetFilterType.shared,
|
|
1160
1184
|
isSelected: true,
|
|
1161
|
-
isDisabled:
|
|
1185
|
+
isDisabled: false
|
|
1162
1186
|
}];
|
|
1163
1187
|
var viewPresetsAdapter = createEntityAdapter({
|
|
1164
1188
|
// we use panelId as id (panelId can be mapId or viewId)
|
|
@@ -1547,28 +1571,34 @@ var setDocumentTitle = function setDocumentTitle(workspaceTitle, appTitle) {
|
|
|
1547
1571
|
var fallbackAppTitle = appTitle || 'GeoWeb';
|
|
1548
1572
|
document.title = workspaceTitle ? workspaceTitle + " - " + fallbackAppTitle : fallbackAppTitle;
|
|
1549
1573
|
};
|
|
1550
|
-
var
|
|
1574
|
+
var filterAndSortPresets = function filterAndSortPresets(presets, selectedFilters, username) {
|
|
1551
1575
|
var isAllSelected = selectedFilters.every(function (filter) {
|
|
1552
1576
|
return filter.isSelected;
|
|
1553
1577
|
});
|
|
1554
|
-
if (isAllSelected) {
|
|
1555
|
-
return workspacePresets;
|
|
1556
|
-
}
|
|
1557
1578
|
var selectedIds = selectedFilters.filter(function (filter) {
|
|
1558
1579
|
return filter.isSelected;
|
|
1559
1580
|
}).map(function (filter) {
|
|
1560
1581
|
return filter.id;
|
|
1561
1582
|
});
|
|
1562
|
-
|
|
1563
|
-
return (
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1583
|
+
var filtered = isAllSelected ? presets : presets.filter(function (preset) {
|
|
1584
|
+
return selectedIds.includes(PresetFilterType.system) && preset.scope === 'system' || selectedIds.includes(PresetFilterType.personal) && preset.scope === 'user' && preset.username === username || selectedIds.includes(PresetFilterType.shared) && preset.username !== username && preset.is_shared;
|
|
1585
|
+
});
|
|
1586
|
+
var systemPresets = filtered.filter(function (preset) {
|
|
1587
|
+
return preset.scope === 'system';
|
|
1588
|
+
}).sort(function (a, b) {
|
|
1589
|
+
return a.title.localeCompare(b.title);
|
|
1590
|
+
});
|
|
1591
|
+
var personalPresets = filtered.filter(function (preset) {
|
|
1592
|
+
return preset.scope === 'user' && preset.username === username;
|
|
1593
|
+
}).sort(function (a, b) {
|
|
1594
|
+
return a.title.localeCompare(b.title);
|
|
1595
|
+
});
|
|
1596
|
+
var sharedPresets = filtered.filter(function (preset) {
|
|
1597
|
+
return preset.scope === 'user' && preset.username !== username;
|
|
1598
|
+
}).sort(function (a, b) {
|
|
1599
|
+
return a.title.localeCompare(b.title);
|
|
1571
1600
|
});
|
|
1601
|
+
return [].concat(systemPresets, personalPresets, sharedPresets);
|
|
1572
1602
|
};
|
|
1573
1603
|
|
|
1574
1604
|
/* *
|
|
@@ -1588,7 +1618,7 @@ var filterWorkspacePresets = function filterWorkspacePresets(workspacePresets, s
|
|
|
1588
1618
|
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
1589
1619
|
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
1590
1620
|
* */
|
|
1591
|
-
var getSnackbarMessage$1 = function getSnackbarMessage(action, title) {
|
|
1621
|
+
var getSnackbarMessage$1 = function getSnackbarMessage(action, title, is_shared) {
|
|
1592
1622
|
// Trim and add quotes
|
|
1593
1623
|
var trimmedTitle = "" + title.trim();
|
|
1594
1624
|
switch (action) {
|
|
@@ -1632,6 +1662,14 @@ var getSnackbarMessage$1 = function getSnackbarMessage(action, title) {
|
|
|
1632
1662
|
TITLE: trimmedTitle
|
|
1633
1663
|
}
|
|
1634
1664
|
};
|
|
1665
|
+
case WorkspacePresetAction.SHARE:
|
|
1666
|
+
return {
|
|
1667
|
+
type: snackbarTypes.SnackbarMessageType.TRANSLATABLE_MESSAGE,
|
|
1668
|
+
key: is_shared ? 'workspace-list-success-unshare' : 'workspace-list-success-share',
|
|
1669
|
+
params: {
|
|
1670
|
+
TITLE: trimmedTitle
|
|
1671
|
+
}
|
|
1672
|
+
};
|
|
1635
1673
|
default:
|
|
1636
1674
|
return {
|
|
1637
1675
|
type: snackbarTypes.SnackbarMessageType.TRANSLATABLE_MESSAGE,
|
|
@@ -1728,17 +1766,13 @@ var createCustomEmptyMapWorkspace = function createCustomEmptyMapWorkspace(empty
|
|
|
1728
1766
|
};
|
|
1729
1767
|
var constructFilterParams = function constructFilterParams(filters, searchQuery) {
|
|
1730
1768
|
// get filters
|
|
1731
|
-
var
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
}, {
|
|
1739
|
-
scope: []
|
|
1740
|
-
}),
|
|
1741
|
-
scope = _filters$reduce.scope;
|
|
1769
|
+
var scope = filters.reduce(function (scopeList, filter) {
|
|
1770
|
+
if (filter.isSelected) {
|
|
1771
|
+
var _scope = filter.id === PresetFilterType.system ? 'system' : 'user';
|
|
1772
|
+
return union(scopeList, [_scope]);
|
|
1773
|
+
}
|
|
1774
|
+
return scopeList;
|
|
1775
|
+
}, []);
|
|
1742
1776
|
// get search
|
|
1743
1777
|
var search = getCleanSearchQuery(searchQuery);
|
|
1744
1778
|
return Object.assign({}, scope.length && {
|
|
@@ -2113,9 +2147,7 @@ var getViewPresetListSearchQueryForView = createSelector(getViewPresetById, func
|
|
|
2113
2147
|
// To ensure you retrieve the view preset list specific for your view (incl and excl filters), use getFilteredViewPresetListForView
|
|
2114
2148
|
var getViewPresetListFilterResultsForView = createSelector(getViewPresetById, function (viewPresetById) {
|
|
2115
2149
|
var filteredResults = (viewPresetById == null ? void 0 : viewPresetById.filterResults) || {
|
|
2116
|
-
entities: {}
|
|
2117
|
-
ids: []
|
|
2118
|
-
};
|
|
2150
|
+
entities: {}};
|
|
2119
2151
|
return Object.values(filteredResults.entities);
|
|
2120
2152
|
}, selectorMemoizationOptions);
|
|
2121
2153
|
|
|
@@ -2136,7 +2168,7 @@ var getViewPresetListFilterResultsForView = createSelector(getViewPresetById, fu
|
|
|
2136
2168
|
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
2137
2169
|
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
2138
2170
|
* */
|
|
2139
|
-
var getSnackbarMessage = function getSnackbarMessage(action, title) {
|
|
2171
|
+
var getSnackbarMessage = function getSnackbarMessage(action, title, is_shared) {
|
|
2140
2172
|
// Trim and add quotes
|
|
2141
2173
|
var trimmedTitle = title.trim();
|
|
2142
2174
|
switch (action) {
|
|
@@ -2172,6 +2204,14 @@ var getSnackbarMessage = function getSnackbarMessage(action, title) {
|
|
|
2172
2204
|
TITLE: trimmedTitle
|
|
2173
2205
|
}
|
|
2174
2206
|
};
|
|
2207
|
+
case PresetAction.SHARE:
|
|
2208
|
+
return {
|
|
2209
|
+
type: snackbarTypes.SnackbarMessageType.TRANSLATABLE_MESSAGE,
|
|
2210
|
+
key: is_shared ? 'workspace-viewpreset-success-unshare' : 'workspace-viewpreset-success-share',
|
|
2211
|
+
params: {
|
|
2212
|
+
TITLE: trimmedTitle
|
|
2213
|
+
}
|
|
2214
|
+
};
|
|
2175
2215
|
default:
|
|
2176
2216
|
return {
|
|
2177
2217
|
key: 'workspace-viewpreset-success-save',
|
|
@@ -4472,7 +4512,8 @@ var workspacePresetsList = [
|
|
|
4472
4512
|
date: "2022-06-01T12:34:27.787184",
|
|
4473
4513
|
scope: "user",
|
|
4474
4514
|
abstract: "Some abstract",
|
|
4475
|
-
viewType: "singleWindow"
|
|
4515
|
+
viewType: "singleWindow",
|
|
4516
|
+
username: "user.name"
|
|
4476
4517
|
},
|
|
4477
4518
|
{
|
|
4478
4519
|
id: "screenConfigD",
|
|
@@ -5101,6 +5142,7 @@ workspaceListener.startListening({
|
|
|
5101
5142
|
actionCreator: workspaceActions.updateWorkspaceViews,
|
|
5102
5143
|
effect: function () {
|
|
5103
5144
|
var _effect9 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee12(_, listenerApi) {
|
|
5145
|
+
var viewIds;
|
|
5104
5146
|
return _regeneratorRuntime().wrap(function _callee12$(_context12) {
|
|
5105
5147
|
while (1) switch (_context12.prev = _context12.next) {
|
|
5106
5148
|
case 0:
|
|
@@ -5113,7 +5155,24 @@ workspaceListener.startListening({
|
|
|
5113
5155
|
/* This will trigger all maps and other components
|
|
5114
5156
|
to get the correct size after views are updated */
|
|
5115
5157
|
window.dispatchEvent(new Event('resize'));
|
|
5116
|
-
|
|
5158
|
+
// Adjust the bbox of the original view after the new map is added. This is a temporal solution until the OpenLayers ticket
|
|
5159
|
+
// https://github.com/openlayers/openlayers/issues/16572 is solved.
|
|
5160
|
+
_context12.next = 6;
|
|
5161
|
+
return listenerApi.delay(10);
|
|
5162
|
+
case 6:
|
|
5163
|
+
viewIds = getViewIds(listenerApi.getState());
|
|
5164
|
+
viewIds.forEach(function (viewId) {
|
|
5165
|
+
var bbox = mapSelectors.getBbox(listenerApi.getState(), viewId);
|
|
5166
|
+
var srs = mapSelectors.getSrs(listenerApi.getState(), viewId);
|
|
5167
|
+
if (bbox && bbox.left !== undefined && srs) {
|
|
5168
|
+
listenerApi.dispatch(mapActions.setBbox({
|
|
5169
|
+
mapId: viewId,
|
|
5170
|
+
bbox: bbox,
|
|
5171
|
+
srs: srs
|
|
5172
|
+
}));
|
|
5173
|
+
}
|
|
5174
|
+
});
|
|
5175
|
+
case 8:
|
|
5117
5176
|
case "end":
|
|
5118
5177
|
return _context12.stop();
|
|
5119
5178
|
}
|
|
@@ -5441,15 +5500,16 @@ viewPresetsListener.startListening({
|
|
|
5441
5500
|
actionCreator: viewPresetActions.onSuccessViewPresetAction,
|
|
5442
5501
|
effect: function () {
|
|
5443
5502
|
var _effect3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(_ref7, listenerApi) {
|
|
5444
|
-
var payload, action, viewPresetId, title, panelId, activeMapPresetId, hasChanges, viewPresetFilters, viewPresetSearchQuery;
|
|
5503
|
+
var payload, action, viewPresetId, title, panelId, is_shared, activeMapPresetId, hasChanges, viewPresetFilters, viewPresetSearchQuery;
|
|
5445
5504
|
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
5446
5505
|
while (1) switch (_context5.prev = _context5.next) {
|
|
5447
5506
|
case 0:
|
|
5448
5507
|
payload = _ref7.payload;
|
|
5449
5508
|
listenerApi.cancelActiveListeners();
|
|
5450
|
-
action = payload.action, viewPresetId = payload.viewPresetId, title = payload.title, panelId = payload.panelId;
|
|
5509
|
+
action = payload.action, viewPresetId = payload.viewPresetId, title = payload.title, panelId = payload.panelId; // eslint-disable-next-line @typescript-eslint/naming-convention
|
|
5510
|
+
is_shared = 'is_shared' in payload ? payload.is_shared : undefined;
|
|
5451
5511
|
try {
|
|
5452
|
-
listenerApi.dispatch(snackbarActions.openSnackbar(getSnackbarMessage(action, title)));
|
|
5512
|
+
listenerApi.dispatch(snackbarActions.openSnackbar(getSnackbarMessage(action, title, is_shared)));
|
|
5453
5513
|
activeMapPresetId = getViewPresetActiveId(listenerApi.getState(), panelId);
|
|
5454
5514
|
hasChanges = false; // if active preset has been deleted, select the empty new preset
|
|
5455
5515
|
if (action === PresetAction.DELETE && viewPresetId === activeMapPresetId) {
|
|
@@ -5481,7 +5541,7 @@ viewPresetsListener.startListening({
|
|
|
5481
5541
|
} catch (error) {
|
|
5482
5542
|
// TODO: use error handling of mapPreset https://gitlab.com/opengeoweb/opengeoweb/-/issues/3043
|
|
5483
5543
|
}
|
|
5484
|
-
case
|
|
5544
|
+
case 5:
|
|
5485
5545
|
case "end":
|
|
5486
5546
|
return _context5.stop();
|
|
5487
5547
|
}
|
|
@@ -5562,15 +5622,16 @@ workspaceListListener.startListening({
|
|
|
5562
5622
|
effect: function () {
|
|
5563
5623
|
var _effect2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(_ref2, listenerApi) {
|
|
5564
5624
|
var _listenerApi$getOrigi;
|
|
5565
|
-
var payload, currentWorkspaceId, action, workspaceId, title, workspaceFilters, searchQuery;
|
|
5625
|
+
var payload, currentWorkspaceId, action, workspaceId, title, is_shared, workspaceFilters, searchQuery;
|
|
5566
5626
|
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
5567
5627
|
while (1) switch (_context2.prev = _context2.next) {
|
|
5568
5628
|
case 0:
|
|
5569
5629
|
payload = _ref2.payload;
|
|
5570
5630
|
listenerApi.cancelActiveListeners();
|
|
5571
5631
|
currentWorkspaceId = (_listenerApi$getOrigi = listenerApi.getOriginalState().workspace) == null ? void 0 : _listenerApi$getOrigi.id;
|
|
5572
|
-
action = payload.action, workspaceId = payload.workspaceId, title = payload.title;
|
|
5573
|
-
|
|
5632
|
+
action = payload.action, workspaceId = payload.workspaceId, title = payload.title; // eslint-disable-next-line @typescript-eslint/naming-convention
|
|
5633
|
+
is_shared = 'is_shared' in payload ? payload.is_shared : undefined;
|
|
5634
|
+
listenerApi.dispatch(snackbarActions.openSnackbar(getSnackbarMessage$1(action, title, is_shared)));
|
|
5574
5635
|
// if active workspace has been deleted, empty out url
|
|
5575
5636
|
if ((action === WorkspacePresetAction.DELETE || action === WorkspacePresetAction.DELETE_SYSTEM_PRESET) && currentWorkspaceId && workspaceId === currentWorkspaceId) {
|
|
5576
5637
|
listenerApi.dispatch(routerActions.navigateToUrl({
|
|
@@ -5587,7 +5648,7 @@ workspaceListListener.startListening({
|
|
|
5587
5648
|
workspaceFilters = getWorkspaceListFilters(listenerApi.getState());
|
|
5588
5649
|
searchQuery = getWorkspaceListSearchQuery(listenerApi.getState());
|
|
5589
5650
|
listenerApi.dispatch(workspaceListActions.fetchWorkspaceList(constructFilterParams(workspaceFilters, searchQuery)));
|
|
5590
|
-
case
|
|
5651
|
+
case 11:
|
|
5591
5652
|
case "end":
|
|
5592
5653
|
return _context2.stop();
|
|
5593
5654
|
}
|
|
@@ -5603,7 +5664,7 @@ workspaceListListener.startListening({
|
|
|
5603
5664
|
actionCreator: workspaceListActions.submitFormWorkspaceActionDialogOptions,
|
|
5604
5665
|
effect: function () {
|
|
5605
5666
|
var _effect3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(_ref3, listenerApi) {
|
|
5606
|
-
var payload, workspaceApi, presetId, presetAction, data, emptyMapPresetTitle, emptyWorkspacePresetTitle, scope, _yield$workspaceApi$g2, originalData, workspaceDataNewTitle, isSaveWorkspaceAction, isSaveAsWorkspaceAction, hasWorkspaceAlreadyBeenSaved, workspaceId, viewPresetResults, hasError, workspaceData, newWorkspace, message, category;
|
|
5667
|
+
var payload, workspaceApi, presetId, presetAction, data, emptyMapPresetTitle, emptyWorkspacePresetTitle, scope, _yield$workspaceApi$g2, originalData, workspaceDataNewTitle, isSaveWorkspaceAction, isSaveAsWorkspaceAction, hasWorkspaceAlreadyBeenSaved, workspaceId, viewPresetResults, hasError, _hasError$message, errorMessage, workspaceData, newWorkspace, message, category;
|
|
5607
5668
|
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
5608
5669
|
while (1) switch (_context4.prev = _context4.next) {
|
|
5609
5670
|
case 0:
|
|
@@ -5645,7 +5706,7 @@ workspaceListListener.startListening({
|
|
|
5645
5706
|
isSaveWorkspaceAction = presetAction === WorkspacePresetAction.SAVE_SYSTEM_PRESET || presetAction === WorkspacePresetAction.SAVE;
|
|
5646
5707
|
isSaveAsWorkspaceAction = presetAction === WorkspacePresetAction.SAVE_SYSTEM_PRESET_AS || presetAction === WorkspacePresetAction.SAVE_AS;
|
|
5647
5708
|
if (!(isSaveWorkspaceAction || isSaveAsWorkspaceAction)) {
|
|
5648
|
-
_context4.next =
|
|
5709
|
+
_context4.next = 44;
|
|
5649
5710
|
break;
|
|
5650
5711
|
}
|
|
5651
5712
|
hasWorkspaceAlreadyBeenSaved = getWorkspaceDialogIsSaved(listenerApi.getState());
|
|
@@ -5730,15 +5791,20 @@ workspaceListListener.startListening({
|
|
|
5730
5791
|
return view.message;
|
|
5731
5792
|
});
|
|
5732
5793
|
if (!hasError) {
|
|
5733
|
-
_context4.next =
|
|
5794
|
+
_context4.next = 38;
|
|
5734
5795
|
break;
|
|
5735
5796
|
}
|
|
5736
5797
|
// maybe we can use another action, but this resets fetching of the form
|
|
5798
|
+
errorMessage = (_hasError$message = hasError == null ? void 0 : hasError.message) != null ? _hasError$message : 'An error occurred';
|
|
5737
5799
|
listenerApi.dispatch(workspaceListActions.onErrorWorkspacePresetAction({
|
|
5738
|
-
error:
|
|
5800
|
+
error: {
|
|
5801
|
+
type: WorkspaceListErrorType.VERBATIM_ERROR,
|
|
5802
|
+
message: errorMessage,
|
|
5803
|
+
category: WorkspaceListErrorCategory.GENERIC
|
|
5804
|
+
}
|
|
5739
5805
|
}));
|
|
5740
5806
|
return _context4.abrupt("return");
|
|
5741
|
-
case
|
|
5807
|
+
case 38:
|
|
5742
5808
|
workspaceData = getWorkspaceData(listenerApi.getState());
|
|
5743
5809
|
newWorkspace = Object.assign({}, workspaceData, {
|
|
5744
5810
|
id: workspaceId,
|
|
@@ -5746,9 +5812,9 @@ workspaceListListener.startListening({
|
|
|
5746
5812
|
"abstract": data["abstract"],
|
|
5747
5813
|
scope: scope
|
|
5748
5814
|
});
|
|
5749
|
-
_context4.next =
|
|
5815
|
+
_context4.next = 42;
|
|
5750
5816
|
return workspaceApi.saveWorkspacePreset(workspaceId, newWorkspace);
|
|
5751
|
-
case
|
|
5817
|
+
case 42:
|
|
5752
5818
|
listenerApi.dispatch(workspaceListActions.onSuccessWorkspacePresetAction({
|
|
5753
5819
|
action: presetAction,
|
|
5754
5820
|
workspaceId: workspaceId,
|
|
@@ -5759,7 +5825,7 @@ workspaceListListener.startListening({
|
|
|
5759
5825
|
listenerApi.dispatch(routerActions.navigateToUrl({
|
|
5760
5826
|
url: getWorkspaceRouteUrl(workspaceId)
|
|
5761
5827
|
}));
|
|
5762
|
-
case
|
|
5828
|
+
case 44:
|
|
5763
5829
|
// Reset
|
|
5764
5830
|
if (presetAction === WorkspacePresetAction.RESET) {
|
|
5765
5831
|
// In case we're resetting the `New workspace` preset
|
|
@@ -5782,10 +5848,10 @@ workspaceListListener.startListening({
|
|
|
5782
5848
|
scope: scope
|
|
5783
5849
|
}));
|
|
5784
5850
|
}
|
|
5785
|
-
_context4.next =
|
|
5851
|
+
_context4.next = 52;
|
|
5786
5852
|
break;
|
|
5787
|
-
case
|
|
5788
|
-
_context4.prev =
|
|
5853
|
+
case 47:
|
|
5854
|
+
_context4.prev = 47;
|
|
5789
5855
|
_context4.t0 = _context4["catch"](3);
|
|
5790
5856
|
message = isAxiosError$1(_context4.t0) ? getAxiosErrorMessage(_context4.t0) : _context4.t0.message;
|
|
5791
5857
|
category = isAxiosAuthError(_context4.t0) ? WorkspaceListErrorCategory.AUTH : WorkspaceListErrorCategory.GENERIC;
|
|
@@ -5796,11 +5862,11 @@ workspaceListListener.startListening({
|
|
|
5796
5862
|
message: message
|
|
5797
5863
|
}
|
|
5798
5864
|
}));
|
|
5799
|
-
case
|
|
5865
|
+
case 52:
|
|
5800
5866
|
case "end":
|
|
5801
5867
|
return _context4.stop();
|
|
5802
5868
|
}
|
|
5803
|
-
}, _callee4, null, [[3,
|
|
5869
|
+
}, _callee4, null, [[3, 47]]);
|
|
5804
5870
|
}));
|
|
5805
5871
|
function effect(_x5, _x6) {
|
|
5806
5872
|
return _effect3.apply(this, arguments);
|
|
@@ -5914,20 +5980,25 @@ var getFilteredViewPresetListForView = createSelector(getViewPresetsList, getVie
|
|
|
5914
5980
|
* */
|
|
5915
5981
|
var WORKSPACE_NAMESPACE = 'workspace';
|
|
5916
5982
|
var initWorkspaceTestI18n = function initWorkspaceTestI18n() {
|
|
5917
|
-
|
|
5918
|
-
void i18n.use(initReactI18next).init({
|
|
5919
|
-
lng: 'en',
|
|
5983
|
+
safelyInitI18nForTestsAndStories(i18n, WORKSPACE_NAMESPACE, [{
|
|
5920
5984
|
ns: WORKSPACE_NAMESPACE,
|
|
5921
|
-
|
|
5922
|
-
|
|
5923
|
-
|
|
5924
|
-
|
|
5925
|
-
|
|
5926
|
-
|
|
5927
|
-
|
|
5928
|
-
|
|
5929
|
-
|
|
5930
|
-
|
|
5985
|
+
translations: workspaceTranslations
|
|
5986
|
+
}, {
|
|
5987
|
+
ns: SHARED_NAMESPACE,
|
|
5988
|
+
translations: sharedTranslations
|
|
5989
|
+
}, {
|
|
5990
|
+
ns: CORE_NAMESPACE,
|
|
5991
|
+
translations: coreTranslations
|
|
5992
|
+
}, {
|
|
5993
|
+
ns: WEBMAP_REACT_NAMESPACE,
|
|
5994
|
+
translations: webmapReactTranslations
|
|
5995
|
+
}, {
|
|
5996
|
+
ns: FORM_FIELDS_NAMESPACE,
|
|
5997
|
+
translations: formFieldsTranslations
|
|
5998
|
+
}, {
|
|
5999
|
+
ns: WARN_NAMESPACE,
|
|
6000
|
+
translations: warningsTranslations
|
|
6001
|
+
}]);
|
|
5931
6002
|
};
|
|
5932
6003
|
var ns = [WORKSPACE_NAMESPACE, SHARED_NAMESPACE];
|
|
5933
6004
|
var useWorkspaceTranslation = function useWorkspaceTranslation() {
|
|
@@ -6108,291 +6179,112 @@ var ComponentsLookUpWrapper = function ComponentsLookUpWrapper(_ref) {
|
|
|
6108
6179
|
}, props));
|
|
6109
6180
|
};
|
|
6110
6181
|
|
|
6111
|
-
|
|
6112
|
-
|
|
6182
|
+
/* *
|
|
6183
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6184
|
+
* you may not use this file except in compliance with the License.
|
|
6185
|
+
* You may obtain a copy of the License at
|
|
6186
|
+
*
|
|
6187
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
6188
|
+
*
|
|
6189
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
6190
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
6191
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
6192
|
+
* See the License for the specific language governing permissions and
|
|
6193
|
+
* limitations under the License.
|
|
6194
|
+
*
|
|
6195
|
+
* Copyright 2025 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
6196
|
+
* Copyright 2025 - Finnish Meteorological Institute (FMI)
|
|
6197
|
+
* Copyright 2025 - The Norwegian Meteorological Institute (MET Norway)
|
|
6198
|
+
* */
|
|
6199
|
+
var useFetchViewPresets = function useFetchViewPresets(panelId) {
|
|
6113
6200
|
var dispatch = useDispatch();
|
|
6114
|
-
var
|
|
6115
|
-
|
|
6116
|
-
var
|
|
6117
|
-
|
|
6118
|
-
|
|
6119
|
-
|
|
6120
|
-
return mapSelectors.getAllMapIds(store);
|
|
6121
|
-
});
|
|
6122
|
-
var viewsById = useSelector(getViewsById);
|
|
6123
|
-
var selectedMapIds = useSelector(function (store) {
|
|
6124
|
-
return genericSelectors.getLinkedMaps(store, panelId);
|
|
6201
|
+
var _useAuthenticationCon = useAuthenticationContext(),
|
|
6202
|
+
currentRole = _useAuthenticationCon.currentRole;
|
|
6203
|
+
var isAdmin = (currentRole == null ? void 0 : currentRole.name) === GEOWEB_ROLE_PRESETS_ADMIN.name;
|
|
6204
|
+
var lastAdmin = usePrevious(isAdmin);
|
|
6205
|
+
var viewPresetListFilters = useSelector(function (store) {
|
|
6206
|
+
return getViewPresetListFiltersForView(store, panelId);
|
|
6125
6207
|
});
|
|
6126
|
-
var
|
|
6127
|
-
return
|
|
6208
|
+
var viewPresetListSearchQuery = useSelector(function (store) {
|
|
6209
|
+
return getViewPresetListSearchQueryForView(store, panelId);
|
|
6128
6210
|
});
|
|
6129
|
-
var
|
|
6130
|
-
|
|
6131
|
-
|
|
6132
|
-
|
|
6133
|
-
|
|
6134
|
-
|
|
6135
|
-
|
|
6136
|
-
|
|
6137
|
-
|
|
6138
|
-
|
|
6139
|
-
|
|
6140
|
-
|
|
6141
|
-
|
|
6142
|
-
|
|
6143
|
-
|
|
6211
|
+
var prevSearch = usePrevious(viewPresetListSearchQuery);
|
|
6212
|
+
var fetchViewPresets = useCallback(function (params) {
|
|
6213
|
+
dispatch(viewPresetActions.fetchViewPresets(params));
|
|
6214
|
+
}, [dispatch]);
|
|
6215
|
+
useEffect(function () {
|
|
6216
|
+
if (viewPresetListSearchQuery !== prevSearch || isAdmin !== lastAdmin || !!viewPresetListFilters) {
|
|
6217
|
+
var filterParams = constructFilterParams(viewPresetListFilters, viewPresetListSearchQuery);
|
|
6218
|
+
fetchViewPresets({
|
|
6219
|
+
filterParams: filterParams,
|
|
6220
|
+
panelId: panelId
|
|
6221
|
+
});
|
|
6222
|
+
}
|
|
6223
|
+
}, [fetchViewPresets, panelId, prevSearch, viewPresetListSearchQuery, viewPresetListFilters, isAdmin, lastAdmin]);
|
|
6224
|
+
useEffect(function () {
|
|
6225
|
+
if (isAdmin !== lastAdmin && lastAdmin !== undefined) {
|
|
6226
|
+
// reset list filter when user changes role
|
|
6227
|
+
var filters = [{
|
|
6228
|
+
id: PresetFilterType.system,
|
|
6229
|
+
isSelected: true
|
|
6230
|
+
}, {
|
|
6231
|
+
id: PresetFilterType.personal,
|
|
6232
|
+
isSelected: !isAdmin
|
|
6233
|
+
}, {
|
|
6234
|
+
id: PresetFilterType.shared,
|
|
6235
|
+
isSelected: !isAdmin
|
|
6236
|
+
}];
|
|
6237
|
+
dispatch(viewPresetActions.setFilterChips({
|
|
6238
|
+
panelId: panelId,
|
|
6239
|
+
filters: filters
|
|
6240
|
+
}));
|
|
6241
|
+
}
|
|
6242
|
+
}, [dispatch, isAdmin, lastAdmin, panelId]);
|
|
6243
|
+
};
|
|
6244
|
+
|
|
6245
|
+
var ViewLoading = function ViewLoading(_ref) {
|
|
6246
|
+
var viewPresetId = _ref.viewPresetId;
|
|
6247
|
+
var _useWorkspaceTranslat = useWorkspaceTranslation(),
|
|
6248
|
+
t = _useWorkspaceTranslat.t;
|
|
6144
6249
|
return jsxs(Fragment, {
|
|
6145
|
-
children: [
|
|
6146
|
-
|
|
6147
|
-
|
|
6148
|
-
tooltipTitle: "Link " + viewComponentType,
|
|
6250
|
+
children: [jsx(LinearProgress, {
|
|
6251
|
+
"data-testid": "loading-bar",
|
|
6252
|
+
color: "secondary",
|
|
6149
6253
|
sx: {
|
|
6150
|
-
|
|
6151
|
-
|
|
6254
|
+
position: 'absolute',
|
|
6255
|
+
width: '100%',
|
|
6256
|
+
top: 0
|
|
6257
|
+
}
|
|
6258
|
+
}), jsxs(Typography, {
|
|
6259
|
+
sx: {
|
|
6260
|
+
margin: 1
|
|
6152
6261
|
},
|
|
6153
|
-
children:
|
|
6154
|
-
"data-testid": "link-icon",
|
|
6155
|
-
style: {
|
|
6156
|
-
fill: anchorEl ? 'white' : undefined,
|
|
6157
|
-
backgroundColor: anchorEl ? '#186DFF' : undefined
|
|
6158
|
-
}
|
|
6159
|
-
}) : jsx(LinkOff, {
|
|
6160
|
-
"data-testid": "link-off-icon",
|
|
6161
|
-
style: {
|
|
6162
|
-
fill: anchorEl ? 'white' : undefined,
|
|
6163
|
-
backgroundColor: anchorEl ? '#186DFF' : undefined
|
|
6164
|
-
}
|
|
6165
|
-
})
|
|
6166
|
-
}), jsxs(Menu, {
|
|
6167
|
-
id: "map-select-menu",
|
|
6168
|
-
"data-testid": "map-select-menu",
|
|
6169
|
-
anchorEl: anchorEl,
|
|
6170
|
-
open: Boolean(anchorEl),
|
|
6171
|
-
onClose: handleMenuClose,
|
|
6172
|
-
keepMounted: true,
|
|
6173
|
-
children: [jsxs(Typography, {
|
|
6174
|
-
variant: "h6",
|
|
6175
|
-
style: {
|
|
6176
|
-
padding: '10px 15px 0',
|
|
6177
|
-
fontWeight: 'bold'
|
|
6178
|
-
},
|
|
6179
|
-
children: [t('workspace-link'), " - ", t('workspace-link-location-header')]
|
|
6180
|
-
}), jsx(List, {
|
|
6181
|
-
dense: true,
|
|
6182
|
-
children: maps.map(function (mapId) {
|
|
6183
|
-
var _viewsById$mapId;
|
|
6184
|
-
var labelId = "checkbox-link-label-" + mapId;
|
|
6185
|
-
return jsx(ListItem, {
|
|
6186
|
-
onClick: function onClick() {
|
|
6187
|
-
return handleMapSelect(mapId);
|
|
6188
|
-
},
|
|
6189
|
-
disablePadding: true,
|
|
6190
|
-
dense: true,
|
|
6191
|
-
divider: true,
|
|
6192
|
-
children: jsxs(ListItemButton, {
|
|
6193
|
-
role: "checkbox",
|
|
6194
|
-
dense: true,
|
|
6195
|
-
sx: {
|
|
6196
|
-
margin: 0,
|
|
6197
|
-
padding: '0 16px'
|
|
6198
|
-
},
|
|
6199
|
-
children: [jsx(ListItemIcon, {
|
|
6200
|
-
children: jsx(Checkbox, {
|
|
6201
|
-
edge: "start",
|
|
6202
|
-
tabIndex: -1,
|
|
6203
|
-
checked: selectedMapIds.includes(mapId),
|
|
6204
|
-
disableRipple: true,
|
|
6205
|
-
inputProps: {
|
|
6206
|
-
'aria-labelledby': labelId
|
|
6207
|
-
}
|
|
6208
|
-
})
|
|
6209
|
-
}), jsx(ListItemText, {
|
|
6210
|
-
id: labelId,
|
|
6211
|
-
primary: (_viewsById$mapId = viewsById[mapId]) == null ? void 0 : _viewsById$mapId.title,
|
|
6212
|
-
secondary: mapId
|
|
6213
|
-
})]
|
|
6214
|
-
})
|
|
6215
|
-
}, mapId);
|
|
6216
|
-
})
|
|
6217
|
-
})]
|
|
6262
|
+
children: [t('workspace-loading'), " ", viewPresetId]
|
|
6218
6263
|
})]
|
|
6219
6264
|
});
|
|
6220
6265
|
};
|
|
6221
|
-
|
|
6222
|
-
var
|
|
6223
|
-
|
|
6224
|
-
|
|
6225
|
-
|
|
6226
|
-
|
|
6227
|
-
var
|
|
6228
|
-
|
|
6229
|
-
|
|
6230
|
-
|
|
6231
|
-
|
|
6232
|
-
|
|
6233
|
-
|
|
6234
|
-
|
|
6235
|
-
|
|
6236
|
-
|
|
6237
|
-
|
|
6238
|
-
|
|
6239
|
-
|
|
6240
|
-
|
|
6241
|
-
|
|
6242
|
-
|
|
6243
|
-
var _React$useState2 = React.useState(mosaicNode),
|
|
6244
|
-
stateBeforeExpand = _React$useState2[0],
|
|
6245
|
-
setStateBeforeExpand = _React$useState2[1];
|
|
6246
|
-
var _React$useState3 = React.useState(false),
|
|
6247
|
-
enableUnexpand = _React$useState3[0],
|
|
6248
|
-
setEnableUnexpand = _React$useState3[1];
|
|
6249
|
-
React.useEffect(function () {
|
|
6250
|
-
if (enableUnexpand) {
|
|
6251
|
-
if (stateAfterExpand === undefined) {
|
|
6252
|
-
setStateAfterExpand(mosaicNode);
|
|
6253
|
-
return;
|
|
6254
|
-
}
|
|
6255
|
-
if (!isEqual(mosaicNode, stateAfterExpand)) {
|
|
6256
|
-
setEnableUnexpand(false);
|
|
6257
|
-
setStateAfterExpand(undefined);
|
|
6258
|
-
}
|
|
6259
|
-
}
|
|
6260
|
-
}, [enableUnexpand, mosaicNode, stateAfterExpand]);
|
|
6261
|
-
var onClose = /*#__PURE__*/function () {
|
|
6262
|
-
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
6263
|
-
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
6264
|
-
while (1) switch (_context.prev = _context.next) {
|
|
6265
|
-
case 0:
|
|
6266
|
-
if (!shouldPreventCloseView) {
|
|
6267
|
-
_context.next = 6;
|
|
6268
|
-
break;
|
|
6269
|
-
}
|
|
6270
|
-
_context.next = 3;
|
|
6271
|
-
return confirmDialog({
|
|
6272
|
-
title: t('workspace-control-close-message-title'),
|
|
6273
|
-
description: t('workspace-control-close-message-description'),
|
|
6274
|
-
confirmLabel: t('workspace-control-close')
|
|
6275
|
-
});
|
|
6276
|
-
case 3:
|
|
6277
|
-
actions.remove(path);
|
|
6278
|
-
_context.next = 7;
|
|
6279
|
-
break;
|
|
6280
|
-
case 6:
|
|
6281
|
-
actions.remove(path);
|
|
6282
|
-
case 7:
|
|
6283
|
-
case "end":
|
|
6284
|
-
return _context.stop();
|
|
6285
|
-
}
|
|
6286
|
-
}, _callee);
|
|
6287
|
-
}));
|
|
6288
|
-
return function onClose() {
|
|
6289
|
-
return _ref2.apply(this, arguments);
|
|
6290
|
-
};
|
|
6291
|
-
}();
|
|
6292
|
-
return jsxs(Fragment, {
|
|
6293
|
-
children: [jsx(LinkMenuConnect, {
|
|
6294
|
-
panelId: panelId
|
|
6295
|
-
}), jsx(CustomIconButton, {
|
|
6296
|
-
"data-testid": "split-horizontal-btn",
|
|
6297
|
-
sx: buttonStyle,
|
|
6298
|
-
onClick: function onClick() {
|
|
6299
|
-
var newNode = createNode();
|
|
6300
|
-
var previousNode = getAndAssertNodeAtPathExists(actions.getRoot(), path);
|
|
6301
|
-
actions.replaceWith(path, {
|
|
6302
|
-
direction: 'column',
|
|
6303
|
-
first: previousNode,
|
|
6304
|
-
second: newNode
|
|
6305
|
-
});
|
|
6306
|
-
},
|
|
6307
|
-
tooltipTitle: t('workspace-control-split-horizontal'),
|
|
6308
|
-
children: jsx(SplitVertical, {})
|
|
6309
|
-
}), jsx(CustomIconButton, {
|
|
6310
|
-
"data-testid": "split-vertical-btn",
|
|
6311
|
-
sx: buttonStyle,
|
|
6312
|
-
onClick: function onClick() {
|
|
6313
|
-
var newNode = createNode();
|
|
6314
|
-
var previousNode = getAndAssertNodeAtPathExists(actions.getRoot(), path);
|
|
6315
|
-
actions.replaceWith(path, {
|
|
6316
|
-
direction: 'row',
|
|
6317
|
-
first: previousNode,
|
|
6318
|
-
second: newNode
|
|
6319
|
-
});
|
|
6320
|
-
},
|
|
6321
|
-
tooltipTitle: t('workspace-control-split-vertical'),
|
|
6322
|
-
children: jsx(SplitHorizontal, {})
|
|
6323
|
-
}), !enableUnexpand || isString(mosaicNode) ? jsx(CustomIconButton, {
|
|
6324
|
-
"data-testid": "expand-btn",
|
|
6325
|
-
sx: buttonStyle,
|
|
6326
|
-
onClick: function onClick() {
|
|
6327
|
-
setStateBeforeExpand(mosaicNode);
|
|
6328
|
-
setEnableUnexpand(true);
|
|
6329
|
-
actions.expand(path, 70);
|
|
6330
|
-
},
|
|
6331
|
-
tooltipTitle: t('workspace-control-expand'),
|
|
6332
|
-
children: jsx(Expand, {})
|
|
6333
|
-
}) : jsx(CustomIconButton, {
|
|
6334
|
-
"data-testid": "unexpand-btn",
|
|
6335
|
-
sx: buttonStyle,
|
|
6336
|
-
onClick: function onClick() {
|
|
6337
|
-
var stateBeforeExpandCopy = isString(stateBeforeExpand) ? stateBeforeExpand : Object.assign({}, stateBeforeExpand);
|
|
6338
|
-
actions.replaceWith([], stateBeforeExpandCopy);
|
|
6339
|
-
},
|
|
6340
|
-
tooltipTitle: t('workspace-control-unexpand'),
|
|
6341
|
-
children: jsx(UnExpand, {})
|
|
6342
|
-
}), jsx(CustomIconButton, {
|
|
6343
|
-
"data-testid": "close-btn",
|
|
6344
|
-
sx: buttonStyle,
|
|
6345
|
-
onClick: onClose,
|
|
6346
|
-
tooltipTitle: t('workspace-control-close'),
|
|
6347
|
-
id: "close-window-button",
|
|
6348
|
-
children: jsx(Close, {})
|
|
6349
|
-
})]
|
|
6350
|
-
});
|
|
6351
|
-
};
|
|
6352
|
-
|
|
6353
|
-
var ViewLoading = function ViewLoading(_ref) {
|
|
6354
|
-
var viewPresetId = _ref.viewPresetId;
|
|
6355
|
-
var _useWorkspaceTranslat = useWorkspaceTranslation(),
|
|
6356
|
-
t = _useWorkspaceTranslat.t;
|
|
6357
|
-
return jsxs(Fragment, {
|
|
6358
|
-
children: [jsx(LinearProgress, {
|
|
6359
|
-
"data-testid": "loading-bar",
|
|
6360
|
-
color: "secondary",
|
|
6361
|
-
sx: {
|
|
6362
|
-
position: 'absolute',
|
|
6363
|
-
width: '100%',
|
|
6364
|
-
top: 0
|
|
6365
|
-
}
|
|
6366
|
-
}), jsxs(Typography, {
|
|
6367
|
-
sx: {
|
|
6368
|
-
margin: 1
|
|
6369
|
-
},
|
|
6370
|
-
children: [t('workspace-loading'), " ", viewPresetId]
|
|
6371
|
-
})]
|
|
6372
|
-
});
|
|
6373
|
-
};
|
|
6374
|
-
var ViewError = function ViewError(_ref2) {
|
|
6375
|
-
var viewPresetId = _ref2.viewPresetId,
|
|
6376
|
-
mosaicNodeId = _ref2.mosaicNodeId;
|
|
6377
|
-
var dispatch = useDispatch();
|
|
6378
|
-
var _useWorkspaceTranslat2 = useWorkspaceTranslation(),
|
|
6379
|
-
t = _useWorkspaceTranslat2.t;
|
|
6380
|
-
var fetchWorkspaceViewPreset = React.useCallback(function () {
|
|
6381
|
-
dispatch(workspaceActions.fetchWorkspaceViewPreset({
|
|
6382
|
-
viewPresetId: viewPresetId,
|
|
6383
|
-
mosaicNodeId: mosaicNodeId
|
|
6384
|
-
}));
|
|
6385
|
-
}, [dispatch, viewPresetId, mosaicNodeId]);
|
|
6386
|
-
return jsx(AlertBanner, {
|
|
6387
|
-
title: t('workspace-viewpresets-fail-fetch', {
|
|
6388
|
-
VIEWPRESET_ID: viewPresetId
|
|
6389
|
-
}),
|
|
6390
|
-
shouldClose: true,
|
|
6391
|
-
actionButtonProps: {
|
|
6392
|
-
title: t('workspace-retry'),
|
|
6393
|
-
onClick: fetchWorkspaceViewPreset
|
|
6394
|
-
}
|
|
6395
|
-
});
|
|
6266
|
+
var ViewError = function ViewError(_ref2) {
|
|
6267
|
+
var viewPresetId = _ref2.viewPresetId,
|
|
6268
|
+
mosaicNodeId = _ref2.mosaicNodeId;
|
|
6269
|
+
var dispatch = useDispatch();
|
|
6270
|
+
var _useWorkspaceTranslat2 = useWorkspaceTranslation(),
|
|
6271
|
+
t = _useWorkspaceTranslat2.t;
|
|
6272
|
+
var fetchWorkspaceViewPreset = React.useCallback(function () {
|
|
6273
|
+
dispatch(workspaceActions.fetchWorkspaceViewPreset({
|
|
6274
|
+
viewPresetId: viewPresetId,
|
|
6275
|
+
mosaicNodeId: mosaicNodeId
|
|
6276
|
+
}));
|
|
6277
|
+
}, [dispatch, viewPresetId, mosaicNodeId]);
|
|
6278
|
+
return jsx(AlertBanner, {
|
|
6279
|
+
title: t('workspace-viewpresets-fail-fetch', {
|
|
6280
|
+
VIEWPRESET_ID: viewPresetId
|
|
6281
|
+
}),
|
|
6282
|
+
shouldClose: true,
|
|
6283
|
+
actionButtonProps: {
|
|
6284
|
+
title: t('workspace-retry'),
|
|
6285
|
+
onClick: fetchWorkspaceViewPreset
|
|
6286
|
+
}
|
|
6287
|
+
});
|
|
6396
6288
|
};
|
|
6397
6289
|
var defaultComponentsLookUp = function defaultComponentsLookUp(_ref3) {
|
|
6398
6290
|
var componentType = _ref3.componentType,
|
|
@@ -6426,45 +6318,23 @@ var defaultComponentsLookUp = function defaultComponentsLookUp(_ref3) {
|
|
|
6426
6318
|
* See the License for the specific language governing permissions and
|
|
6427
6319
|
* limitations under the License.
|
|
6428
6320
|
*
|
|
6429
|
-
* Copyright
|
|
6430
|
-
* Copyright
|
|
6431
|
-
* Copyright
|
|
6321
|
+
* Copyright 2025 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
6322
|
+
* Copyright 2025 - Finnish Meteorological Institute (FMI)
|
|
6323
|
+
* Copyright 2025 - The Norwegian Meteorological Institute (MET Norway)
|
|
6432
6324
|
* */
|
|
6433
|
-
var
|
|
6434
|
-
|
|
6435
|
-
|
|
6436
|
-
|
|
6437
|
-
|
|
6438
|
-
|
|
6439
|
-
return getUniqueId(existingIds, count + 1);
|
|
6440
|
-
}
|
|
6441
|
-
return newId;
|
|
6442
|
-
};
|
|
6443
|
-
var createBalancedMosaicNode = function createBalancedMosaicNode(currentNode) {
|
|
6444
|
-
var leaves = getLeaves(currentNode);
|
|
6445
|
-
return createBalancedTreeFromLeaves(leaves);
|
|
6325
|
+
var config$1 = sessionStorageProvider.getConfig();
|
|
6326
|
+
var presetBaseUrl$1 = (config$1 == null ? void 0 : config$1.GW_PRESET_BACKEND_URL) || '';
|
|
6327
|
+
var getViewPreset = function getViewPreset(viewpresetId, auth) {
|
|
6328
|
+
return fetch(presetBaseUrl$1 + "/viewpreset/" + viewpresetId, {
|
|
6329
|
+
headers: getHeaders(auth)
|
|
6330
|
+
}).then(handleResponse);
|
|
6446
6331
|
};
|
|
6447
|
-
var
|
|
6448
|
-
|
|
6449
|
-
|
|
6450
|
-
|
|
6451
|
-
|
|
6452
|
-
|
|
6453
|
-
})) {
|
|
6454
|
-
dispatch(uiActions.setToggleOpenDialog({
|
|
6455
|
-
setOpen: false,
|
|
6456
|
-
type: uiTypes.DialogTypes.TimeSeriesManager
|
|
6457
|
-
}));
|
|
6458
|
-
dispatch(uiActions.setToggleOpenDialog({
|
|
6459
|
-
setOpen: false,
|
|
6460
|
-
type: uiTypes.DialogTypes.TimeSeriesSelect
|
|
6461
|
-
}));
|
|
6462
|
-
dispatch(uiActions.setToggleOpenDialog({
|
|
6463
|
-
setOpen: false,
|
|
6464
|
-
type: uiTypes.DialogTypes.TimeseriesInfo
|
|
6465
|
-
}));
|
|
6466
|
-
}
|
|
6467
|
-
}
|
|
6332
|
+
var updateViewPreset = function updateViewPreset(viewpresetId, data, auth) {
|
|
6333
|
+
return fetch(presetBaseUrl$1 + "/viewpreset/" + viewpresetId, {
|
|
6334
|
+
headers: getHeaders(auth),
|
|
6335
|
+
method: 'PUT',
|
|
6336
|
+
body: JSON.stringify(data)
|
|
6337
|
+
}).then(handleResponse);
|
|
6468
6338
|
};
|
|
6469
6339
|
|
|
6470
6340
|
var WORKSPACE_SELECT_LIST_ROW_HEIGHT = 46;
|
|
@@ -6528,19 +6398,25 @@ var WorkspaceSelectListRow = function WorkspaceSelectListRow(_ref) {
|
|
|
6528
6398
|
return _onClick(WorkspacePresetAction.DUPLICATE);
|
|
6529
6399
|
}
|
|
6530
6400
|
}];
|
|
6531
|
-
|
|
6532
|
-
|
|
6533
|
-
|
|
6534
|
-
|
|
6535
|
-
|
|
6536
|
-
|
|
6537
|
-
|
|
6538
|
-
|
|
6539
|
-
|
|
6540
|
-
|
|
6541
|
-
|
|
6542
|
-
|
|
6543
|
-
|
|
6401
|
+
// Show "Edit" if it's your own user-scoped preset OR you're an admin
|
|
6402
|
+
if (workspacePreset.scope === SystemScope.user && (auth == null ? void 0 : auth.username) === workspacePreset.username || isAdmin) {
|
|
6403
|
+
menuItems.push({
|
|
6404
|
+
text: t('workspace-edit'),
|
|
6405
|
+
action: function action() {
|
|
6406
|
+
return _onClick(WorkspacePresetAction.EDIT);
|
|
6407
|
+
}
|
|
6408
|
+
});
|
|
6409
|
+
}
|
|
6410
|
+
// Show "Share/Unshare" only if it's your own user-scoped preset
|
|
6411
|
+
if (workspacePreset.scope === SystemScope.user && (auth == null ? void 0 : auth.username) === workspacePreset.username) {
|
|
6412
|
+
menuItems.push({
|
|
6413
|
+
text: workspacePreset.is_shared ? t('workspace-stop-share') : t('workspace-share'),
|
|
6414
|
+
action: function action() {
|
|
6415
|
+
return _onClick(WorkspacePresetAction.SHARE);
|
|
6416
|
+
},
|
|
6417
|
+
isDisabled: false
|
|
6418
|
+
});
|
|
6419
|
+
}
|
|
6544
6420
|
return jsx(ListItem, {
|
|
6545
6421
|
disablePadding: true,
|
|
6546
6422
|
sx: {
|
|
@@ -6594,19 +6470,19 @@ var WorkspaceSelectListRow = function WorkspaceSelectListRow(_ref) {
|
|
|
6594
6470
|
margin: 0
|
|
6595
6471
|
}
|
|
6596
6472
|
})
|
|
6597
|
-
}), isEditable && jsx(
|
|
6473
|
+
}), isEditable && jsx(Grid, {
|
|
6598
6474
|
sx: {
|
|
6599
6475
|
minWidth: 56,
|
|
6600
6476
|
marginLeft: 2
|
|
6601
6477
|
},
|
|
6602
|
-
children: jsxs(
|
|
6478
|
+
children: jsxs(Grid, {
|
|
6603
6479
|
children: [jsx(ToggleMenu, {
|
|
6604
6480
|
buttonTestId: testIdPrefix + "-listOptionsButton",
|
|
6605
6481
|
menuPosition: "right",
|
|
6606
6482
|
menuItems: menuItems,
|
|
6607
6483
|
menuTitle: t('workspace-options'),
|
|
6608
6484
|
isDefaultOpen: isOptionsMenuOpen
|
|
6609
|
-
}), (workspacePreset.scope ===
|
|
6485
|
+
}), (workspacePreset.scope === SystemScope.user && (auth == null ? void 0 : auth.username) === workspacePreset.username || isAdmin) && workspacePreset.id && jsx(CustomIconButton, {
|
|
6610
6486
|
tooltipTitle: t('workspace-delete-tooltip'),
|
|
6611
6487
|
onClick: function onClick(event) {
|
|
6612
6488
|
event.stopPropagation();
|
|
@@ -6651,7 +6527,7 @@ var WorkspaceSelectList = function WorkspaceSelectList(_ref) {
|
|
|
6651
6527
|
return jsxs(Box, {
|
|
6652
6528
|
"data-testid": testIdPrefix + "-selectList",
|
|
6653
6529
|
sx: {
|
|
6654
|
-
height:
|
|
6530
|
+
height: '100%',
|
|
6655
6531
|
minHeight: MIN_HEIGHT_SCROLLABLE_LIST,
|
|
6656
6532
|
overflow: 'hidden'
|
|
6657
6533
|
},
|
|
@@ -6708,12 +6584,23 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
|
|
|
6708
6584
|
var dispatch = useDispatch();
|
|
6709
6585
|
var _useAuthenticationCon = useAuthenticationContext(),
|
|
6710
6586
|
currentRole = _useAuthenticationCon.currentRole,
|
|
6711
|
-
isLoggedIn = _useAuthenticationCon.isLoggedIn
|
|
6587
|
+
isLoggedIn = _useAuthenticationCon.isLoggedIn,
|
|
6588
|
+
auth = _useAuthenticationCon.auth;
|
|
6589
|
+
var username = (auth == null ? void 0 : auth.username) || '';
|
|
6712
6590
|
var isAdmin = (currentRole == null ? void 0 : currentRole.name) === GEOWEB_ROLE_PRESETS_ADMIN.name;
|
|
6713
6591
|
var scope = !isAdmin ? 'user' : 'system';
|
|
6714
6592
|
var viewPresets = useSelector(function (store) {
|
|
6715
6593
|
return getFilteredViewPresetListForView(store, panelId);
|
|
6716
6594
|
});
|
|
6595
|
+
var viewPresetListFilters = useSelector(function (store) {
|
|
6596
|
+
return getViewPresetListFiltersForView(store, panelId, scope);
|
|
6597
|
+
});
|
|
6598
|
+
var viewPresetListSearchQuery = useSelector(function (store) {
|
|
6599
|
+
return getViewPresetListSearchQueryForView(store, panelId);
|
|
6600
|
+
});
|
|
6601
|
+
var filteredPresets = React.useMemo(function () {
|
|
6602
|
+
return filterAndSortPresets(viewPresets, viewPresetListFilters, username);
|
|
6603
|
+
}, [viewPresets, viewPresetListFilters, username]);
|
|
6717
6604
|
var activeViewPresetId = useSelector(function (store) {
|
|
6718
6605
|
return getViewPresetActiveId(store, panelId);
|
|
6719
6606
|
});
|
|
@@ -6729,12 +6616,6 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
|
|
|
6729
6616
|
var currentWarningsPreset = useSelector(function (store) {
|
|
6730
6617
|
return publicWarningsSelectors.getWarningsPresetById(store, panelId);
|
|
6731
6618
|
});
|
|
6732
|
-
var viewPresetListFilters = useSelector(function (store) {
|
|
6733
|
-
return getViewPresetListFiltersForView(store, panelId, scope);
|
|
6734
|
-
});
|
|
6735
|
-
var viewPresetListSearchQuery = useSelector(function (store) {
|
|
6736
|
-
return getViewPresetListSearchQueryForView(store, panelId);
|
|
6737
|
-
});
|
|
6738
6619
|
var relatedSyncGroupIds = useSelector(function (store) {
|
|
6739
6620
|
return syncGroupsSelectors.getAllTargetGroupsForSource(store, {
|
|
6740
6621
|
sourceId: panelId
|
|
@@ -6811,6 +6692,26 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
|
|
|
6811
6692
|
});
|
|
6812
6693
|
break;
|
|
6813
6694
|
}
|
|
6695
|
+
case WorkspacePresetAction.SHARE:
|
|
6696
|
+
{
|
|
6697
|
+
void getViewPreset(presetId, auth).then(function (preset) {
|
|
6698
|
+
return void updateViewPreset(presetId, Object.assign({}, preset, {
|
|
6699
|
+
is_shared: !preset.is_shared
|
|
6700
|
+
}), auth).then(function () {
|
|
6701
|
+
dispatch(viewPresetActions.onSuccessViewPresetAction({
|
|
6702
|
+
panelId: panelId,
|
|
6703
|
+
viewPresetId: presetId,
|
|
6704
|
+
action: PresetAction.SHARE,
|
|
6705
|
+
title: preset.title,
|
|
6706
|
+
scope: scope,
|
|
6707
|
+
"abstract": preset["abstract"],
|
|
6708
|
+
is_shared: preset.is_shared
|
|
6709
|
+
}));
|
|
6710
|
+
fetchViewPresets();
|
|
6711
|
+
});
|
|
6712
|
+
});
|
|
6713
|
+
break;
|
|
6714
|
+
}
|
|
6814
6715
|
case WorkspacePresetAction.DELETE_SYSTEM_PRESET:
|
|
6815
6716
|
case WorkspacePresetAction.DELETE:
|
|
6816
6717
|
{
|
|
@@ -6845,13 +6746,13 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
|
|
|
6845
6746
|
panelId: panelId
|
|
6846
6747
|
}));
|
|
6847
6748
|
}, [dispatch, panelId]);
|
|
6848
|
-
var onClickFilterChip = function onClickFilterChip(id,
|
|
6749
|
+
var onClickFilterChip = function onClickFilterChip(id, selected) {
|
|
6849
6750
|
if (id === 'all') {
|
|
6850
|
-
if (
|
|
6751
|
+
if (selected) {
|
|
6851
6752
|
setSelectAllFilterChip();
|
|
6852
6753
|
}
|
|
6853
6754
|
} else {
|
|
6854
|
-
toggleSelectFilterChip(id,
|
|
6755
|
+
toggleSelectFilterChip(id, selected);
|
|
6855
6756
|
}
|
|
6856
6757
|
};
|
|
6857
6758
|
var isAllSelectedForFilters = viewPresetListFilters.every(function (filter) {
|
|
@@ -6882,28 +6783,66 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
|
|
|
6882
6783
|
}
|
|
6883
6784
|
})), jsxs(Box, {
|
|
6884
6785
|
sx: {
|
|
6786
|
+
display: 'flex',
|
|
6787
|
+
flexDirection: 'column',
|
|
6788
|
+
flexGrow: 1,
|
|
6789
|
+
minHeight: 0,
|
|
6885
6790
|
padding: 1,
|
|
6886
6791
|
height: '100%'
|
|
6887
6792
|
},
|
|
6888
|
-
children: [!error &&
|
|
6889
|
-
|
|
6890
|
-
|
|
6891
|
-
|
|
6892
|
-
|
|
6893
|
-
|
|
6894
|
-
|
|
6895
|
-
|
|
6896
|
-
|
|
6897
|
-
|
|
6898
|
-
|
|
6899
|
-
|
|
6900
|
-
|
|
6901
|
-
|
|
6902
|
-
|
|
6903
|
-
|
|
6904
|
-
|
|
6905
|
-
|
|
6906
|
-
|
|
6793
|
+
children: [!error && jsxs(Box, {
|
|
6794
|
+
sx: {
|
|
6795
|
+
flexShrink: 0,
|
|
6796
|
+
display: 'flex',
|
|
6797
|
+
flexDirection: 'column',
|
|
6798
|
+
gap: 1,
|
|
6799
|
+
marginBottom: 1
|
|
6800
|
+
},
|
|
6801
|
+
children: [jsx(Box, {
|
|
6802
|
+
sx: {
|
|
6803
|
+
display: 'flex',
|
|
6804
|
+
flexWrap: 'wrap',
|
|
6805
|
+
gap: 1,
|
|
6806
|
+
width: '100%'
|
|
6807
|
+
},
|
|
6808
|
+
children: jsx(Filter, {
|
|
6809
|
+
filters: viewPresetListFilters,
|
|
6810
|
+
onClickFilterChip: onClickFilterChip,
|
|
6811
|
+
isAllSelected: isAllSelectedForFilters,
|
|
6812
|
+
searchQuery: viewPresetListSearchQuery,
|
|
6813
|
+
onSearch: onSearchFilter
|
|
6814
|
+
})
|
|
6815
|
+
}), jsx(Box, {
|
|
6816
|
+
sx: {
|
|
6817
|
+
display: 'flex',
|
|
6818
|
+
justifyContent: 'flex-start'
|
|
6819
|
+
},
|
|
6820
|
+
children: jsx(LastUpdateTime, {
|
|
6821
|
+
onPressRefresh: function onPressRefresh() {
|
|
6822
|
+
return fetchViewPresets();
|
|
6823
|
+
},
|
|
6824
|
+
hideLabel: true
|
|
6825
|
+
})
|
|
6826
|
+
})]
|
|
6827
|
+
}), jsx(Box, {
|
|
6828
|
+
sx: {
|
|
6829
|
+
flexGrow: 1,
|
|
6830
|
+
minHeight: 0
|
|
6831
|
+
},
|
|
6832
|
+
children: jsx(WorkspaceSelectList, {
|
|
6833
|
+
workspacePresets: filteredPresets,
|
|
6834
|
+
currentSelectedId: activeViewPresetId || undefined,
|
|
6835
|
+
onClickWorkspacePreset: selectViewPreset,
|
|
6836
|
+
onClickWorkspacePresetOption: onClickViewPresetOption,
|
|
6837
|
+
newPreset: Object.assign({}, getEmptyWorkspaceListItem(t), {
|
|
6838
|
+
title: t('workspace-mappreset-new')
|
|
6839
|
+
}),
|
|
6840
|
+
hideNewWorkspace: shouldHideNewWorkspace,
|
|
6841
|
+
searchQuery: viewPresetListSearchQuery,
|
|
6842
|
+
testIdPrefix: "viewpreset",
|
|
6843
|
+
isAdmin: isAdmin,
|
|
6844
|
+
isEditable: isLoggedIn
|
|
6845
|
+
})
|
|
6907
6846
|
})]
|
|
6908
6847
|
})]
|
|
6909
6848
|
});
|
|
@@ -7246,118 +7185,372 @@ var WorkspaceViewTitleConnectNoMemo = function WorkspaceViewTitleConnectNoMemo(_
|
|
|
7246
7185
|
initialProps: constructInitialProps(),
|
|
7247
7186
|
"abstract": presetAbstract
|
|
7248
7187
|
}
|
|
7249
|
-
});
|
|
7250
|
-
}, [activeViewPresetId, constructInitialProps, openViewPresetsDialog, panelId, t, title, presetAbstract]);
|
|
7251
|
-
var onReset = React.useCallback(function () {
|
|
7252
|
-
openViewPresetsDialog({
|
|
7253
|
-
title: t('workspace-reset-title'),
|
|
7254
|
-
action: PresetAction.RESET,
|
|
7255
|
-
viewPresetId: activeViewPresetId,
|
|
7256
|
-
panelId: panelId,
|
|
7257
|
-
formValues: {
|
|
7258
|
-
title: title
|
|
7188
|
+
});
|
|
7189
|
+
}, [activeViewPresetId, constructInitialProps, openViewPresetsDialog, panelId, t, title, presetAbstract]);
|
|
7190
|
+
var onReset = React.useCallback(function () {
|
|
7191
|
+
openViewPresetsDialog({
|
|
7192
|
+
title: t('workspace-reset-title'),
|
|
7193
|
+
action: PresetAction.RESET,
|
|
7194
|
+
viewPresetId: activeViewPresetId,
|
|
7195
|
+
panelId: panelId,
|
|
7196
|
+
formValues: {
|
|
7197
|
+
title: title
|
|
7198
|
+
}
|
|
7199
|
+
});
|
|
7200
|
+
}, [activeViewPresetId, openViewPresetsDialog, panelId, t, title]);
|
|
7201
|
+
var toggleViewPresetDialog = React.useCallback(function (_ref3) {
|
|
7202
|
+
var panelId = _ref3.panelId,
|
|
7203
|
+
isViewPresetDialogOpen = _ref3.isViewPresetDialogOpen;
|
|
7204
|
+
dispatch(viewPresetActions.toggleViewPresetListDialog({
|
|
7205
|
+
panelId: panelId,
|
|
7206
|
+
isViewPresetListDialogOpen: isViewPresetDialogOpen
|
|
7207
|
+
}));
|
|
7208
|
+
}, [dispatch]);
|
|
7209
|
+
var onClickOpenViewPreset = React.useCallback(function () {
|
|
7210
|
+
toggleViewPresetDialog({
|
|
7211
|
+
panelId: panelId,
|
|
7212
|
+
isViewPresetDialogOpen: !isViewPresetDialogOpen
|
|
7213
|
+
});
|
|
7214
|
+
}, [isViewPresetDialogOpen, panelId, toggleViewPresetDialog]);
|
|
7215
|
+
var style = React.useMemo(function () {
|
|
7216
|
+
return customIconStyles(theme, isViewPresetDialogOpen);
|
|
7217
|
+
}, [isViewPresetDialogOpen, theme]);
|
|
7218
|
+
var presetIcon = React.useMemo(function () {
|
|
7219
|
+
return jsx(Preset, {});
|
|
7220
|
+
}, []);
|
|
7221
|
+
renderCounter.count(WorkspaceViewTitleConnectNoMemo.name);
|
|
7222
|
+
var currentViewScope = viewScope || 'system';
|
|
7223
|
+
var isEnabled = (currentViewScope === 'user' || isAdmin && currentViewScope === 'system') && activeViewPresetId !== '' && isLoggedIn;
|
|
7224
|
+
return jsxs(Fragment, {
|
|
7225
|
+
children: [jsx(CustomIconButton, {
|
|
7226
|
+
"data-testid": "open-viewpresets",
|
|
7227
|
+
sx: style,
|
|
7228
|
+
variant: "tool",
|
|
7229
|
+
onClick: onClickOpenViewPreset,
|
|
7230
|
+
tooltipTitle: t('workspace-viewpreset-menu'),
|
|
7231
|
+
isSelected: isViewPresetDialogOpen,
|
|
7232
|
+
children: presetIcon
|
|
7233
|
+
}), jsx(WorkspaceOptions, {
|
|
7234
|
+
panelId: panelId,
|
|
7235
|
+
title: fullTitle,
|
|
7236
|
+
hasChanges: hasViewPresetChanges || isNewActive,
|
|
7237
|
+
handleSave: isEnabled ? onSave : undefined,
|
|
7238
|
+
handleDelete: isEnabled ? onDelete : undefined,
|
|
7239
|
+
handleSaveAs: isLoggedIn ? onSaveAs : undefined,
|
|
7240
|
+
handleEdit: isEnabled ? onEdit : undefined,
|
|
7241
|
+
handleReset: onReset,
|
|
7242
|
+
id: viewPresetOptionId,
|
|
7243
|
+
isAdmin: isAdmin
|
|
7244
|
+
}), jsx(LoadingIndicatorConnect, {
|
|
7245
|
+
panelId: panelId
|
|
7246
|
+
})]
|
|
7247
|
+
});
|
|
7248
|
+
};
|
|
7249
|
+
var WorkspaceViewTitleConnect = /*#__PURE__*/React.memo(WorkspaceViewTitleConnectNoMemo);
|
|
7250
|
+
|
|
7251
|
+
/* *
|
|
7252
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7253
|
+
* you may not use this file except in compliance with the License.
|
|
7254
|
+
* You may obtain a copy of the License at
|
|
7255
|
+
*
|
|
7256
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
7257
|
+
*
|
|
7258
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
7259
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
7260
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
7261
|
+
* See the License for the specific language governing permissions and
|
|
7262
|
+
* limitations under the License.
|
|
7263
|
+
*
|
|
7264
|
+
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
7265
|
+
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
7266
|
+
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
7267
|
+
* */
|
|
7268
|
+
var getUniqueId = function getUniqueId(existingIds, count) {
|
|
7269
|
+
if (count === void 0) {
|
|
7270
|
+
count = 1;
|
|
7271
|
+
}
|
|
7272
|
+
var newId = count + "_screen";
|
|
7273
|
+
if (existingIds.indexOf(newId) !== -1) {
|
|
7274
|
+
return getUniqueId(existingIds, count + 1);
|
|
7275
|
+
}
|
|
7276
|
+
return newId;
|
|
7277
|
+
};
|
|
7278
|
+
var createBalancedMosaicNode = function createBalancedMosaicNode(currentNode) {
|
|
7279
|
+
var leaves = getLeaves(currentNode);
|
|
7280
|
+
return createBalancedTreeFromLeaves(leaves);
|
|
7281
|
+
};
|
|
7282
|
+
var closeTimeSeriesDialogsWhenChangingPreset = function closeTimeSeriesDialogsWhenChangingPreset(componentTypes, dispatch) {
|
|
7283
|
+
if (componentTypes) {
|
|
7284
|
+
if (componentTypes.length > 0 && !componentTypes.some(function (componentType) {
|
|
7285
|
+
return componentType.toLowerCase().includes('viewloading');
|
|
7286
|
+
}) && !componentTypes.some(function (componentType) {
|
|
7287
|
+
return componentType.toLowerCase().includes('timeseries');
|
|
7288
|
+
})) {
|
|
7289
|
+
dispatch(uiActions.setToggleOpenDialog({
|
|
7290
|
+
setOpen: false,
|
|
7291
|
+
type: uiTypes.DialogTypes.TimeSeriesManager
|
|
7292
|
+
}));
|
|
7293
|
+
dispatch(uiActions.setToggleOpenDialog({
|
|
7294
|
+
setOpen: false,
|
|
7295
|
+
type: uiTypes.DialogTypes.TimeSeriesSelect
|
|
7296
|
+
}));
|
|
7297
|
+
dispatch(uiActions.setToggleOpenDialog({
|
|
7298
|
+
setOpen: false,
|
|
7299
|
+
type: uiTypes.DialogTypes.TimeseriesInfo
|
|
7300
|
+
}));
|
|
7301
|
+
}
|
|
7302
|
+
}
|
|
7303
|
+
};
|
|
7304
|
+
|
|
7305
|
+
var LinkMenuConnect = function LinkMenuConnect(_ref) {
|
|
7306
|
+
var panelId = _ref.panelId;
|
|
7307
|
+
var dispatch = useDispatch();
|
|
7308
|
+
var _useWorkspaceTranslat = useWorkspaceTranslation(),
|
|
7309
|
+
t = _useWorkspaceTranslat.t;
|
|
7310
|
+
var _React$useState = React__default.useState(null),
|
|
7311
|
+
anchorEl = _React$useState[0],
|
|
7312
|
+
setAnchorEl = _React$useState[1];
|
|
7313
|
+
var maps = useSelector(function (store) {
|
|
7314
|
+
return mapSelectors.getAllMapIds(store);
|
|
7315
|
+
});
|
|
7316
|
+
var viewsById = useSelector(getViewsById);
|
|
7317
|
+
var selectedMapIds = useSelector(function (store) {
|
|
7318
|
+
return genericSelectors.getLinkedMaps(store, panelId);
|
|
7319
|
+
});
|
|
7320
|
+
var viewComponentType = useSelector(function (store) {
|
|
7321
|
+
return getViewComponentType(store, panelId);
|
|
7322
|
+
});
|
|
7323
|
+
var handleLinkViews = function handleLinkViews(event) {
|
|
7324
|
+
setAnchorEl(event.currentTarget);
|
|
7325
|
+
};
|
|
7326
|
+
var handleMenuClose = function handleMenuClose() {
|
|
7327
|
+
setAnchorEl(null);
|
|
7328
|
+
};
|
|
7329
|
+
var handleMapSelect = function handleMapSelect(mapId) {
|
|
7330
|
+
var updatedMapIds = selectedMapIds.includes(mapId) ? selectedMapIds.filter(function (id) {
|
|
7331
|
+
return id !== mapId;
|
|
7332
|
+
}) : [].concat(selectedMapIds, [mapId]);
|
|
7333
|
+
dispatch(genericActions.updateLinkedMap({
|
|
7334
|
+
panelId: panelId,
|
|
7335
|
+
mapIds: updatedMapIds
|
|
7336
|
+
}));
|
|
7337
|
+
};
|
|
7338
|
+
return jsxs(Fragment, {
|
|
7339
|
+
children: [linkComponentTypesConstants.supportedComponentTypesForLinking.includes(viewComponentType) && jsx(CustomIconButton, {
|
|
7340
|
+
onClick: handleLinkViews,
|
|
7341
|
+
"data-testid": "icon-button",
|
|
7342
|
+
tooltipTitle: "Link " + viewComponentType,
|
|
7343
|
+
sx: {
|
|
7344
|
+
marginLeft: 0.5,
|
|
7345
|
+
marginRight: 0.5
|
|
7346
|
+
},
|
|
7347
|
+
children: selectedMapIds.length > 0 ? jsx(Link, {
|
|
7348
|
+
"data-testid": "link-icon",
|
|
7349
|
+
style: {
|
|
7350
|
+
fill: anchorEl ? 'white' : undefined,
|
|
7351
|
+
backgroundColor: anchorEl ? '#186DFF' : undefined
|
|
7352
|
+
}
|
|
7353
|
+
}) : jsx(LinkOff, {
|
|
7354
|
+
"data-testid": "link-off-icon",
|
|
7355
|
+
style: {
|
|
7356
|
+
fill: anchorEl ? 'white' : undefined,
|
|
7357
|
+
backgroundColor: anchorEl ? '#186DFF' : undefined
|
|
7358
|
+
}
|
|
7359
|
+
})
|
|
7360
|
+
}), jsxs(Menu, {
|
|
7361
|
+
id: "map-select-menu",
|
|
7362
|
+
"data-testid": "map-select-menu",
|
|
7363
|
+
anchorEl: anchorEl,
|
|
7364
|
+
open: Boolean(anchorEl),
|
|
7365
|
+
onClose: handleMenuClose,
|
|
7366
|
+
keepMounted: true,
|
|
7367
|
+
children: [jsxs(Typography, {
|
|
7368
|
+
variant: "h6",
|
|
7369
|
+
style: {
|
|
7370
|
+
padding: '10px 15px 0',
|
|
7371
|
+
fontWeight: 'bold'
|
|
7372
|
+
},
|
|
7373
|
+
children: [t('workspace-link'), " - ", t('workspace-link-location-header')]
|
|
7374
|
+
}), jsx(List, {
|
|
7375
|
+
dense: true,
|
|
7376
|
+
children: maps.map(function (mapId) {
|
|
7377
|
+
var _viewsById$mapId;
|
|
7378
|
+
var labelId = "checkbox-link-label-" + mapId;
|
|
7379
|
+
return jsx(ListItem, {
|
|
7380
|
+
onClick: function onClick() {
|
|
7381
|
+
return handleMapSelect(mapId);
|
|
7382
|
+
},
|
|
7383
|
+
disablePadding: true,
|
|
7384
|
+
dense: true,
|
|
7385
|
+
divider: true,
|
|
7386
|
+
children: jsxs(ListItemButton, {
|
|
7387
|
+
role: "checkbox",
|
|
7388
|
+
dense: true,
|
|
7389
|
+
sx: {
|
|
7390
|
+
margin: 0,
|
|
7391
|
+
padding: '0 16px'
|
|
7392
|
+
},
|
|
7393
|
+
children: [jsx(ListItemIcon, {
|
|
7394
|
+
children: jsx(Checkbox, {
|
|
7395
|
+
edge: "start",
|
|
7396
|
+
tabIndex: -1,
|
|
7397
|
+
checked: selectedMapIds.includes(mapId),
|
|
7398
|
+
disableRipple: true,
|
|
7399
|
+
inputProps: {
|
|
7400
|
+
'aria-labelledby': labelId
|
|
7401
|
+
}
|
|
7402
|
+
})
|
|
7403
|
+
}), jsx(ListItemText, {
|
|
7404
|
+
id: labelId,
|
|
7405
|
+
primary: (_viewsById$mapId = viewsById[mapId]) == null ? void 0 : _viewsById$mapId.title,
|
|
7406
|
+
secondary: mapId
|
|
7407
|
+
})]
|
|
7408
|
+
})
|
|
7409
|
+
}, mapId);
|
|
7410
|
+
})
|
|
7411
|
+
})]
|
|
7412
|
+
})]
|
|
7413
|
+
});
|
|
7414
|
+
};
|
|
7415
|
+
|
|
7416
|
+
var buttonStyle = {
|
|
7417
|
+
marginLeft: 0.5,
|
|
7418
|
+
marginRight: 0.5
|
|
7419
|
+
};
|
|
7420
|
+
var WorkspaceControls = function WorkspaceControls(_ref) {
|
|
7421
|
+
var panelId = _ref.panelId,
|
|
7422
|
+
createNode = _ref.createNode,
|
|
7423
|
+
path = _ref.path,
|
|
7424
|
+
_ref$shouldPreventClo = _ref.shouldPreventCloseView,
|
|
7425
|
+
shouldPreventCloseView = _ref$shouldPreventClo === void 0 ? false : _ref$shouldPreventClo;
|
|
7426
|
+
var confirmDialog = useConfirmationDialog();
|
|
7427
|
+
var _React$useContext = React.useContext(MosaicContext),
|
|
7428
|
+
actions = _React$useContext.mosaicActions;
|
|
7429
|
+
var _useWorkspaceTranslat = useWorkspaceTranslation(),
|
|
7430
|
+
t = _useWorkspaceTranslat.t;
|
|
7431
|
+
var mosaicNode = useSelector(function (store) {
|
|
7432
|
+
return getMosaicNode(store);
|
|
7433
|
+
});
|
|
7434
|
+
var _React$useState = React.useState(),
|
|
7435
|
+
stateAfterExpand = _React$useState[0],
|
|
7436
|
+
setStateAfterExpand = _React$useState[1];
|
|
7437
|
+
var _React$useState2 = React.useState(mosaicNode),
|
|
7438
|
+
stateBeforeExpand = _React$useState2[0],
|
|
7439
|
+
setStateBeforeExpand = _React$useState2[1];
|
|
7440
|
+
var _React$useState3 = React.useState(false),
|
|
7441
|
+
enableUnexpand = _React$useState3[0],
|
|
7442
|
+
setEnableUnexpand = _React$useState3[1];
|
|
7443
|
+
React.useEffect(function () {
|
|
7444
|
+
if (enableUnexpand) {
|
|
7445
|
+
if (stateAfterExpand === undefined) {
|
|
7446
|
+
setStateAfterExpand(mosaicNode);
|
|
7447
|
+
return;
|
|
7448
|
+
}
|
|
7449
|
+
if (!isEqual(mosaicNode, stateAfterExpand)) {
|
|
7450
|
+
setEnableUnexpand(false);
|
|
7451
|
+
setStateAfterExpand(undefined);
|
|
7259
7452
|
}
|
|
7260
|
-
}
|
|
7261
|
-
}, [
|
|
7262
|
-
var
|
|
7263
|
-
var
|
|
7264
|
-
|
|
7265
|
-
|
|
7266
|
-
|
|
7267
|
-
|
|
7453
|
+
}
|
|
7454
|
+
}, [enableUnexpand, mosaicNode, stateAfterExpand]);
|
|
7455
|
+
var onClose = /*#__PURE__*/function () {
|
|
7456
|
+
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
7457
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
7458
|
+
while (1) switch (_context.prev = _context.next) {
|
|
7459
|
+
case 0:
|
|
7460
|
+
if (!shouldPreventCloseView) {
|
|
7461
|
+
_context.next = 6;
|
|
7462
|
+
break;
|
|
7463
|
+
}
|
|
7464
|
+
_context.next = 3;
|
|
7465
|
+
return confirmDialog({
|
|
7466
|
+
title: t('workspace-control-close-message-title'),
|
|
7467
|
+
description: t('workspace-control-close-message-description'),
|
|
7468
|
+
confirmLabel: t('workspace-control-close')
|
|
7469
|
+
});
|
|
7470
|
+
case 3:
|
|
7471
|
+
actions.remove(path);
|
|
7472
|
+
_context.next = 7;
|
|
7473
|
+
break;
|
|
7474
|
+
case 6:
|
|
7475
|
+
actions.remove(path);
|
|
7476
|
+
case 7:
|
|
7477
|
+
case "end":
|
|
7478
|
+
return _context.stop();
|
|
7479
|
+
}
|
|
7480
|
+
}, _callee);
|
|
7268
7481
|
}));
|
|
7269
|
-
|
|
7270
|
-
|
|
7271
|
-
|
|
7272
|
-
|
|
7273
|
-
isViewPresetDialogOpen: !isViewPresetDialogOpen
|
|
7274
|
-
});
|
|
7275
|
-
}, [isViewPresetDialogOpen, panelId, toggleViewPresetDialog]);
|
|
7276
|
-
var style = React.useMemo(function () {
|
|
7277
|
-
return customIconStyles(theme, isViewPresetDialogOpen);
|
|
7278
|
-
}, [isViewPresetDialogOpen, theme]);
|
|
7279
|
-
var presetIcon = React.useMemo(function () {
|
|
7280
|
-
return jsx(Preset, {});
|
|
7281
|
-
}, []);
|
|
7282
|
-
renderCounter.count(WorkspaceViewTitleConnectNoMemo.name);
|
|
7283
|
-
var currentViewScope = viewScope || 'system';
|
|
7284
|
-
var isEnabled = (currentViewScope === 'user' || isAdmin && currentViewScope === 'system') && activeViewPresetId !== '' && isLoggedIn;
|
|
7482
|
+
return function onClose() {
|
|
7483
|
+
return _ref2.apply(this, arguments);
|
|
7484
|
+
};
|
|
7485
|
+
}();
|
|
7285
7486
|
return jsxs(Fragment, {
|
|
7286
|
-
children: [jsx(
|
|
7287
|
-
"data-testid": "open-viewpresets",
|
|
7288
|
-
sx: style,
|
|
7289
|
-
variant: "tool",
|
|
7290
|
-
onClick: onClickOpenViewPreset,
|
|
7291
|
-
tooltipTitle: t('workspace-viewpreset-menu'),
|
|
7292
|
-
isSelected: isViewPresetDialogOpen,
|
|
7293
|
-
children: presetIcon
|
|
7294
|
-
}), jsx(WorkspaceOptions, {
|
|
7295
|
-
panelId: panelId,
|
|
7296
|
-
title: fullTitle,
|
|
7297
|
-
hasChanges: hasViewPresetChanges || isNewActive,
|
|
7298
|
-
handleSave: isEnabled ? onSave : undefined,
|
|
7299
|
-
handleDelete: isEnabled ? onDelete : undefined,
|
|
7300
|
-
handleSaveAs: isLoggedIn ? onSaveAs : undefined,
|
|
7301
|
-
handleEdit: isEnabled ? onEdit : undefined,
|
|
7302
|
-
handleReset: onReset,
|
|
7303
|
-
id: viewPresetOptionId,
|
|
7304
|
-
isAdmin: isAdmin
|
|
7305
|
-
}), jsx(LoadingIndicatorConnect, {
|
|
7487
|
+
children: [jsx(LinkMenuConnect, {
|
|
7306
7488
|
panelId: panelId
|
|
7489
|
+
}), jsx(CustomIconButton, {
|
|
7490
|
+
"data-testid": "split-horizontal-btn",
|
|
7491
|
+
sx: buttonStyle,
|
|
7492
|
+
onClick: function onClick() {
|
|
7493
|
+
var newNode = createNode();
|
|
7494
|
+
var previousNode = getAndAssertNodeAtPathExists(actions.getRoot(), path);
|
|
7495
|
+
actions.replaceWith(path, {
|
|
7496
|
+
direction: 'column',
|
|
7497
|
+
first: previousNode,
|
|
7498
|
+
second: newNode
|
|
7499
|
+
});
|
|
7500
|
+
},
|
|
7501
|
+
tooltipTitle: t('workspace-control-split-horizontal'),
|
|
7502
|
+
children: jsx(SplitVertical, {})
|
|
7503
|
+
}), jsx(CustomIconButton, {
|
|
7504
|
+
"data-testid": "split-vertical-btn",
|
|
7505
|
+
sx: buttonStyle,
|
|
7506
|
+
onClick: function onClick() {
|
|
7507
|
+
var newNode = createNode();
|
|
7508
|
+
var previousNode = getAndAssertNodeAtPathExists(actions.getRoot(), path);
|
|
7509
|
+
actions.replaceWith(path, {
|
|
7510
|
+
direction: 'row',
|
|
7511
|
+
first: previousNode,
|
|
7512
|
+
second: newNode
|
|
7513
|
+
});
|
|
7514
|
+
},
|
|
7515
|
+
tooltipTitle: t('workspace-control-split-vertical'),
|
|
7516
|
+
children: jsx(SplitHorizontal, {})
|
|
7517
|
+
}), !enableUnexpand || isString(mosaicNode) ? jsx(CustomIconButton, {
|
|
7518
|
+
"data-testid": "expand-btn",
|
|
7519
|
+
sx: buttonStyle,
|
|
7520
|
+
onClick: function onClick() {
|
|
7521
|
+
setStateBeforeExpand(mosaicNode);
|
|
7522
|
+
setEnableUnexpand(true);
|
|
7523
|
+
actions.expand(path, 70);
|
|
7524
|
+
},
|
|
7525
|
+
tooltipTitle: t('workspace-control-expand'),
|
|
7526
|
+
children: jsx(Expand, {})
|
|
7527
|
+
}) : jsx(CustomIconButton, {
|
|
7528
|
+
"data-testid": "unexpand-btn",
|
|
7529
|
+
sx: buttonStyle,
|
|
7530
|
+
onClick: function onClick() {
|
|
7531
|
+
var stateBeforeExpandCopy = isString(stateBeforeExpand) ? stateBeforeExpand : Object.assign({}, stateBeforeExpand);
|
|
7532
|
+
actions.replaceWith([], stateBeforeExpandCopy);
|
|
7533
|
+
},
|
|
7534
|
+
tooltipTitle: t('workspace-control-unexpand'),
|
|
7535
|
+
children: jsx(UnExpand, {})
|
|
7536
|
+
}), jsx(CustomIconButton, {
|
|
7537
|
+
"data-testid": "close-btn",
|
|
7538
|
+
sx: buttonStyle,
|
|
7539
|
+
onClick: onClose,
|
|
7540
|
+
tooltipTitle: t('workspace-control-close'),
|
|
7541
|
+
id: "close-window-button",
|
|
7542
|
+
children: jsx(Close, {})
|
|
7307
7543
|
})]
|
|
7308
7544
|
});
|
|
7309
7545
|
};
|
|
7310
|
-
var WorkspaceViewTitleConnect = /*#__PURE__*/React.memo(WorkspaceViewTitleConnectNoMemo);
|
|
7311
7546
|
|
|
7312
|
-
var
|
|
7313
|
-
var
|
|
7314
|
-
|
|
7315
|
-
|
|
7316
|
-
|
|
7317
|
-
var isAdmin = (currentRole == null ? void 0 : currentRole.name) === GEOWEB_ROLE_PRESETS_ADMIN.name;
|
|
7318
|
-
var scope = !isAdmin ? 'user' : 'system';
|
|
7319
|
-
var lastAdmin = usePrevious(isAdmin);
|
|
7320
|
-
var viewPresetListFilters = useSelector(function (store) {
|
|
7321
|
-
return getViewPresetListFiltersForView(store, panelId, scope);
|
|
7322
|
-
});
|
|
7323
|
-
var viewPresetListSearchQuery = useSelector(function (store) {
|
|
7324
|
-
return getViewPresetListSearchQueryForView(store, panelId);
|
|
7325
|
-
});
|
|
7326
|
-
var fetchViewPresets = React.useCallback(function (filterParams) {
|
|
7327
|
-
dispatch(viewPresetActions.fetchViewPresets({
|
|
7328
|
-
panelId: panelId,
|
|
7329
|
-
filterParams: filterParams
|
|
7330
|
-
}));
|
|
7331
|
-
}, [dispatch, panelId]);
|
|
7332
|
-
React.useEffect(function () {
|
|
7333
|
-
var filterParams = constructFilterParams(viewPresetListFilters, viewPresetListSearchQuery);
|
|
7334
|
-
fetchViewPresets(filterParams);
|
|
7335
|
-
}, [fetchViewPresets, viewPresetListFilters, viewPresetListSearchQuery]);
|
|
7336
|
-
React.useEffect(function () {
|
|
7337
|
-
if (isAdmin !== lastAdmin && lastAdmin !== undefined) {
|
|
7338
|
-
// reset list filter when user changes role
|
|
7339
|
-
var filters = [{
|
|
7340
|
-
id: 'system',
|
|
7341
|
-
isSelected: true
|
|
7342
|
-
}, {
|
|
7343
|
-
id: 'user',
|
|
7344
|
-
isSelected: !isAdmin
|
|
7345
|
-
}];
|
|
7346
|
-
dispatch(viewPresetActions.setFilterChips({
|
|
7347
|
-
panelId: panelId,
|
|
7348
|
-
filters: filters
|
|
7349
|
-
}));
|
|
7350
|
-
}
|
|
7351
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
7352
|
-
}, [isAdmin]);
|
|
7353
|
-
return null;
|
|
7354
|
-
};
|
|
7355
|
-
var WorkspaceTileConnect = /*#__PURE__*/React.memo(function (_ref2) {
|
|
7356
|
-
var _ref2$mosaicNodeId = _ref2.mosaicNodeId,
|
|
7357
|
-
mosaicNodeId = _ref2$mosaicNodeId === void 0 ? '' : _ref2$mosaicNodeId,
|
|
7358
|
-
path = _ref2.path,
|
|
7359
|
-
componentsLookUp = _ref2.componentsLookUp;
|
|
7547
|
+
var WorkspaceTileConnect = /*#__PURE__*/React.memo(function (_ref) {
|
|
7548
|
+
var _ref$mosaicNodeId = _ref.mosaicNodeId,
|
|
7549
|
+
mosaicNodeId = _ref$mosaicNodeId === void 0 ? '' : _ref$mosaicNodeId,
|
|
7550
|
+
path = _ref.path,
|
|
7551
|
+
componentsLookUp = _ref.componentsLookUp;
|
|
7360
7552
|
var dispatch = useDispatch();
|
|
7553
|
+
useFetchViewPresets(mosaicNodeId);
|
|
7361
7554
|
var view = useSelector(function (store) {
|
|
7362
7555
|
return getViewById(store, mosaicNodeId);
|
|
7363
7556
|
});
|
|
@@ -7379,23 +7572,23 @@ var WorkspaceTileConnect = /*#__PURE__*/React.memo(function (_ref2) {
|
|
|
7379
7572
|
var addView = React.useCallback(function (view) {
|
|
7380
7573
|
dispatch(workspaceActions.setNewWorkspaceView(view));
|
|
7381
7574
|
}, [dispatch]);
|
|
7382
|
-
var registerView = React.useCallback(function (
|
|
7383
|
-
var panelId =
|
|
7384
|
-
mapPresetId =
|
|
7575
|
+
var registerView = React.useCallback(function (_ref2) {
|
|
7576
|
+
var panelId = _ref2.panelId,
|
|
7577
|
+
mapPresetId = _ref2.mapPresetId;
|
|
7385
7578
|
dispatch(viewPresetActions.registerViewPreset({
|
|
7386
7579
|
panelId: panelId,
|
|
7387
7580
|
viewPresetId: mapPresetId
|
|
7388
7581
|
}));
|
|
7389
7582
|
}, [dispatch]);
|
|
7390
|
-
var unregisterView = React.useCallback(function (
|
|
7391
|
-
var panelId =
|
|
7583
|
+
var unregisterView = React.useCallback(function (_ref3) {
|
|
7584
|
+
var panelId = _ref3.panelId;
|
|
7392
7585
|
dispatch(viewPresetActions.unregisterViewPreset({
|
|
7393
7586
|
panelId: panelId
|
|
7394
7587
|
}));
|
|
7395
7588
|
}, [dispatch]);
|
|
7396
|
-
var toggleViewPresetDialog = React.useCallback(function (
|
|
7397
|
-
var panelId =
|
|
7398
|
-
isViewPresetDialogOpen =
|
|
7589
|
+
var toggleViewPresetDialog = React.useCallback(function (_ref4) {
|
|
7590
|
+
var panelId = _ref4.panelId,
|
|
7591
|
+
isViewPresetDialogOpen = _ref4.isViewPresetDialogOpen;
|
|
7399
7592
|
dispatch(viewPresetActions.toggleViewPresetListDialog({
|
|
7400
7593
|
panelId: panelId,
|
|
7401
7594
|
isViewPresetListDialogOpen: isViewPresetDialogOpen
|
|
@@ -7486,9 +7679,7 @@ var WorkspaceTileConnect = /*#__PURE__*/React.memo(function (_ref2) {
|
|
|
7486
7679
|
title: errorViewPreset,
|
|
7487
7680
|
shouldClose: true
|
|
7488
7681
|
})
|
|
7489
|
-
}), defaultComponentsLookupResult, genericComponentsLookupResult, jsx(
|
|
7490
|
-
panelId: mosaicNodeId
|
|
7491
|
-
}), jsx(ViewPresetMenu, {
|
|
7682
|
+
}), defaultComponentsLookupResult, genericComponentsLookupResult, jsx(ViewPresetMenu, {
|
|
7492
7683
|
panelId: mosaicNodeId,
|
|
7493
7684
|
closeMenu: function closeMenu() {
|
|
7494
7685
|
toggleViewPresetDialog({
|
|
@@ -7702,7 +7893,7 @@ var WorkspaceViewConnect = function WorkspaceViewConnect(_ref) {
|
|
|
7702
7893
|
* Copyright 2025 - Finnish Meteorological Institute (FMI)
|
|
7703
7894
|
* Copyright 2025 - The Norwegian Meteorological Institute (MET Norway)
|
|
7704
7895
|
* */
|
|
7705
|
-
var config = getConfig();
|
|
7896
|
+
var config = sessionStorageProvider.getConfig();
|
|
7706
7897
|
var presetBaseUrl = (config == null ? void 0 : config.GW_PRESET_BACKEND_URL) || '';
|
|
7707
7898
|
var getWorkspace = function getWorkspace(workspaceId, auth) {
|
|
7708
7899
|
return fetch(presetBaseUrl + "/workspacepreset/" + workspaceId, {
|
|
@@ -7731,6 +7922,7 @@ var createWorkspace = function createWorkspace(data, auth) {
|
|
|
7731
7922
|
};
|
|
7732
7923
|
|
|
7733
7924
|
var WorkspaceSelectListConnect = function WorkspaceSelectListConnect() {
|
|
7925
|
+
var _GENERIC$AUTH$error$c;
|
|
7734
7926
|
var _useAuthenticationCon = useAuthenticationContext(),
|
|
7735
7927
|
currentRole = _useAuthenticationCon.currentRole,
|
|
7736
7928
|
isLoggedIn = _useAuthenticationCon.isLoggedIn,
|
|
@@ -7741,7 +7933,7 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect() {
|
|
|
7741
7933
|
});
|
|
7742
7934
|
var selectedFilters = useSelector(getWorkspaceListFilters);
|
|
7743
7935
|
var filteredPresets = React.useMemo(function () {
|
|
7744
|
-
return
|
|
7936
|
+
return filterAndSortPresets(workspacePresets, selectedFilters, username);
|
|
7745
7937
|
}, [workspacePresets, selectedFilters, username]);
|
|
7746
7938
|
var isAdmin = (currentRole == null ? void 0 : currentRole.name) === GEOWEB_ROLE_PRESETS_ADMIN.name;
|
|
7747
7939
|
var scope = !isAdmin ? 'user' : 'system';
|
|
@@ -7869,13 +8061,27 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect() {
|
|
|
7869
8061
|
case WorkspacePresetAction.SHARE:
|
|
7870
8062
|
{
|
|
7871
8063
|
void getWorkspace(presetId, auth).then(function (preset) {
|
|
7872
|
-
return
|
|
8064
|
+
return updateWorkspace(presetId, Object.assign({}, preset, {
|
|
7873
8065
|
is_shared: !preset.is_shared
|
|
7874
8066
|
}), auth).then(function () {
|
|
8067
|
+
dispatch(workspaceListActions.onSuccessWorkspacePresetAction({
|
|
8068
|
+
workspaceId: presetId,
|
|
8069
|
+
action: WorkspacePresetAction.SHARE,
|
|
8070
|
+
title: presetTitle,
|
|
8071
|
+
scope: scope,
|
|
8072
|
+
is_shared: preset.is_shared
|
|
8073
|
+
}));
|
|
7875
8074
|
fetchWorkspaceList();
|
|
8075
|
+
})["catch"](function (error) {
|
|
8076
|
+
dispatch(workspaceListActions.onErrorWorkspacePresetAction({
|
|
8077
|
+
error: {
|
|
8078
|
+
message: "" + error,
|
|
8079
|
+
type: WorkspaceListErrorType.VERBATIM_ERROR,
|
|
8080
|
+
category: WorkspaceListErrorCategory.GENERIC
|
|
8081
|
+
}
|
|
8082
|
+
}));
|
|
7876
8083
|
});
|
|
7877
8084
|
});
|
|
7878
|
-
// TODO
|
|
7879
8085
|
break;
|
|
7880
8086
|
}
|
|
7881
8087
|
}
|
|
@@ -7887,8 +8093,9 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect() {
|
|
|
7887
8093
|
return jsxs(Box, {
|
|
7888
8094
|
"data-testid": "workspace-selectlist-connect",
|
|
7889
8095
|
style: {
|
|
7890
|
-
|
|
7891
|
-
|
|
8096
|
+
display: 'flex',
|
|
8097
|
+
flexDirection: 'column',
|
|
8098
|
+
height: '100%'
|
|
7892
8099
|
},
|
|
7893
8100
|
tabIndex: 0,
|
|
7894
8101
|
children: [isFetching && jsx(LinearProgress, {
|
|
@@ -7905,7 +8112,10 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect() {
|
|
|
7905
8112
|
whiteSpace: 'normal'
|
|
7906
8113
|
},
|
|
7907
8114
|
children: jsx(AlertBanner, Object.assign({
|
|
7908
|
-
title:
|
|
8115
|
+
title: (_GENERIC$AUTH$error$c = {
|
|
8116
|
+
GENERIC: '',
|
|
8117
|
+
AUTH: t('workspace-error-auth')
|
|
8118
|
+
}[error.category]) != null ? _GENERIC$AUTH$error$c : t('workspace-error-fetch'),
|
|
7909
8119
|
info: error.type === WorkspaceListErrorType.TRANSLATABLE_ERROR ? t(error.key, error.params) : error.message,
|
|
7910
8120
|
shouldClose: true
|
|
7911
8121
|
}, error.category === WorkspaceListErrorCategory.GENERIC && {
|
|
@@ -7918,24 +8128,55 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect() {
|
|
|
7918
8128
|
}))
|
|
7919
8129
|
}), jsxs(Box, {
|
|
7920
8130
|
sx: {
|
|
8131
|
+
display: 'flex',
|
|
8132
|
+
flexDirection: 'column',
|
|
8133
|
+
height: '100%',
|
|
7921
8134
|
padding: 1,
|
|
7922
|
-
|
|
8135
|
+
overflow: 'hidden'
|
|
7923
8136
|
},
|
|
7924
|
-
children: [!error &&
|
|
7925
|
-
|
|
7926
|
-
|
|
7927
|
-
|
|
7928
|
-
|
|
7929
|
-
|
|
7930
|
-
|
|
7931
|
-
|
|
7932
|
-
|
|
7933
|
-
|
|
7934
|
-
|
|
7935
|
-
|
|
7936
|
-
|
|
7937
|
-
|
|
7938
|
-
|
|
8137
|
+
children: [!error && jsxs(Box, {
|
|
8138
|
+
sx: {
|
|
8139
|
+
marginBottom: 1
|
|
8140
|
+
},
|
|
8141
|
+
children: [jsx(Box, {
|
|
8142
|
+
sx: {
|
|
8143
|
+
display: 'flex',
|
|
8144
|
+
width: '100%'
|
|
8145
|
+
},
|
|
8146
|
+
children: jsx(Filter, {
|
|
8147
|
+
filters: workspaceListFilters,
|
|
8148
|
+
onClickFilterChip: onClickFilterChip,
|
|
8149
|
+
isAllSelected: isAllSelected,
|
|
8150
|
+
searchQuery: workspaceSearchQuery,
|
|
8151
|
+
onSearch: searchFilter
|
|
8152
|
+
})
|
|
8153
|
+
}), jsx(Box, {
|
|
8154
|
+
sx: {
|
|
8155
|
+
display: 'flex',
|
|
8156
|
+
justifyContent: 'flex-start'
|
|
8157
|
+
},
|
|
8158
|
+
children: jsx(LastUpdateTime, {
|
|
8159
|
+
onPressRefresh: function onPressRefresh() {
|
|
8160
|
+
return fetchWorkspaceList();
|
|
8161
|
+
},
|
|
8162
|
+
hideLabel: true
|
|
8163
|
+
})
|
|
8164
|
+
})]
|
|
8165
|
+
}), jsx(Box, {
|
|
8166
|
+
sx: {
|
|
8167
|
+
flexGrow: 1,
|
|
8168
|
+
minHeight: 0
|
|
8169
|
+
},
|
|
8170
|
+
children: jsx(WorkspaceSelectList, {
|
|
8171
|
+
workspacePresets: filteredPresets,
|
|
8172
|
+
currentSelectedId: currentView.id || '',
|
|
8173
|
+
onClickWorkspacePreset: onClickWorkspacePreset,
|
|
8174
|
+
onClickWorkspacePresetOption: onClickWorkspacePresetOption,
|
|
8175
|
+
hideNewWorkspace: shouldHideNewWorkspace,
|
|
8176
|
+
isEditable: isLoggedIn,
|
|
8177
|
+
isAdmin: isAdmin,
|
|
8178
|
+
searchQuery: workspaceSearchQuery
|
|
8179
|
+
})
|
|
7939
8180
|
})]
|
|
7940
8181
|
})]
|
|
7941
8182
|
});
|
|
@@ -8070,13 +8311,13 @@ var useFetchWorkspacePresets = function useFetchWorkspacePresets() {
|
|
|
8070
8311
|
if (isAdmin !== lastAdmin && lastAdmin !== undefined) {
|
|
8071
8312
|
// reset list filter when user changes role
|
|
8072
8313
|
var filters = [{
|
|
8073
|
-
id:
|
|
8314
|
+
id: PresetFilterType.system,
|
|
8074
8315
|
isSelected: true
|
|
8075
8316
|
}, {
|
|
8076
|
-
id:
|
|
8317
|
+
id: PresetFilterType.personal,
|
|
8077
8318
|
isSelected: !isAdmin
|
|
8078
8319
|
}, {
|
|
8079
|
-
id:
|
|
8320
|
+
id: PresetFilterType.shared,
|
|
8080
8321
|
isSelected: !isAdmin
|
|
8081
8322
|
}];
|
|
8082
8323
|
dispatch(workspaceListActions.setFilterChips(filters));
|
|
@@ -8424,7 +8665,7 @@ var validateTitle$1 = function validateTitle(value) {
|
|
|
8424
8665
|
return !value.trim().length ? 'This field is required' : true;
|
|
8425
8666
|
};
|
|
8426
8667
|
var emptyWorkspacePreset = {
|
|
8427
|
-
scope:
|
|
8668
|
+
scope: SystemScope.user,
|
|
8428
8669
|
title: '',
|
|
8429
8670
|
"abstract": ''
|
|
8430
8671
|
};
|