@opengeoweb/core 4.6.0 → 4.6.1
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 +599 -128
- package/index.umd.js +622 -127
- package/lib/components/ConfigurableMap/ConfigurableMapConnect.d.ts +1 -0
- package/lib/components/FeatureInfo/GetFeatureInfoButtonConnect.d.ts +8 -0
- package/lib/components/FeatureInfo/GetFeatureInfoButtonConnect.spec.d.ts +1 -0
- package/lib/components/FeatureInfo/GetFeatureInfoConnect.d.ts +8 -0
- package/lib/components/FeatureInfo/GetFeatureInfoConnect.spec.d.ts +1 -0
- package/lib/components/FeatureInfo/GetFeatureInfoDialog.d.ts +16 -0
- package/lib/components/FeatureInfo/GetFeatureInfoDialog.spec.d.ts +1 -0
- package/lib/components/FeatureInfo/index.d.ts +3 -0
- package/lib/components/FeatureInfo/utils.d.ts +17 -0
- package/lib/components/FeatureInfo/utils.spec.d.ts +1 -0
- package/lib/components/LayerManager/LayerSelect/LayerSelectUtils.d.ts +2 -2
- package/lib/components/LayerManager/LayerSelect/ServiceList/ServiceList.d.ts +2 -2
- package/lib/components/LayerManager/LayerSelect/ServiceOptionsDialog/ServiceOptionsDialog.d.ts +2 -2
- package/lib/components/LayerManager/LayerSelect/ServicePopup/ServicePopup.d.ts +2 -2
- package/lib/components/LayerManager/LayerSelect/ServicePopup/utils.d.ts +3 -3
- package/lib/store/layerSelect/reducer.d.ts +3 -1
- package/lib/store/layerSelect/selectors.d.ts +6 -39
- package/lib/store/layerSelect/types.d.ts +12 -20
- package/lib/store/layerSelect/utils.d.ts +5 -0
- package/lib/store/layerSelect/utils.spec.d.ts +1 -0
- package/lib/store/ui/types.d.ts +2 -1
- package/package.json +10 -9
package/index.umd.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@reduxjs/toolkit'), require('immer'), require('moment'), require('react'), require('lodash'), require('redux-saga/effects'), require('react-redux'), require('@opengeoweb/shared'), require('@opengeoweb/theme'), require('@mui/material'), require('@opengeoweb/webmap'), require('react-sortablejs'), require('sortablejs'), require('@opengeoweb/form-fields'), require('react-hook-form'), require('react-window'), require('@mui/material/Box'), require('@mui/material/Typography'), require('@mui/material/Grid'), require('@mui/system'), require('throttle-debounce'), require('lodash.clonedeep'), require('proj4'), require('@turf/turf'), require('react-draggable'), require('re-resizable'), require('@redux-eggs/redux-toolkit'), require('@redux-eggs/saga-extension')) :
|
|
3
|
-
typeof define === 'function' && define.amd ? define(['exports', '@reduxjs/toolkit', 'immer', 'moment', 'react', 'lodash', 'redux-saga/effects', 'react-redux', '@opengeoweb/shared', '@opengeoweb/theme', '@mui/material', '@opengeoweb/webmap', 'react-sortablejs', 'sortablejs', '@opengeoweb/form-fields', 'react-hook-form', 'react-window', '@mui/material/Box', '@mui/material/Typography', '@mui/material/Grid', '@mui/system', 'throttle-debounce', 'lodash.clonedeep', 'proj4', '@turf/turf', 'react-draggable', 're-resizable', '@redux-eggs/redux-toolkit', '@redux-eggs/saga-extension'], factory) :
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Core = {}, global.toolkit, global.produce, global.moment, global.React, global._, global.effects, global.reactRedux, global.shared, global.theme, global.material, global.webmap, global.reactSortablejs, global.Sortable, global.formFields, global.reactHookForm, global.reactWindow, global.Box, global.Typography, global.Grid, global.system, global.throttleDebounce, global.cloneDeep, global.proj4, global.turf, global.Draggable, global.reResizable, global.reduxToolkit, global.sagaExtension));
|
|
5
|
-
})(this, (function (exports, toolkit, produce, moment, React, _, effects, reactRedux, shared, theme, material, webmap, reactSortablejs, Sortable, formFields, reactHookForm, reactWindow, Box, Typography, Grid, system, throttleDebounce, cloneDeep, proj4, turf, Draggable, reResizable, reduxToolkit, sagaExtension) { 'use strict';
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@reduxjs/toolkit'), require('immer'), require('moment'), require('react'), require('lodash'), require('redux-saga/effects'), require('react-redux'), require('@opengeoweb/shared'), require('@opengeoweb/theme'), require('@mui/material'), require('@opengeoweb/webmap'), require('react-sortablejs'), require('sortablejs'), require('@opengeoweb/form-fields'), require('react-hook-form'), require('react-window'), require('@mui/material/Box'), require('@mui/material/Typography'), require('@mui/material/Grid'), require('@mui/system'), require('throttle-debounce'), require('lodash.clonedeep'), require('proj4'), require('@turf/turf'), require('react-draggable'), require('re-resizable'), require('axios'), require('@opengeoweb/api'), require('@redux-eggs/redux-toolkit'), require('@redux-eggs/saga-extension')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define(['exports', '@reduxjs/toolkit', 'immer', 'moment', 'react', 'lodash', 'redux-saga/effects', 'react-redux', '@opengeoweb/shared', '@opengeoweb/theme', '@mui/material', '@opengeoweb/webmap', 'react-sortablejs', 'sortablejs', '@opengeoweb/form-fields', 'react-hook-form', 'react-window', '@mui/material/Box', '@mui/material/Typography', '@mui/material/Grid', '@mui/system', 'throttle-debounce', 'lodash.clonedeep', 'proj4', '@turf/turf', 'react-draggable', 're-resizable', 'axios', '@opengeoweb/api', '@redux-eggs/redux-toolkit', '@redux-eggs/saga-extension'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Core = {}, global.toolkit, global.produce, global.moment, global.React, global._, global.effects, global.reactRedux, global.shared, global.theme, global.material, global.webmap, global.reactSortablejs, global.Sortable, global.formFields, global.reactHookForm, global.reactWindow, global.Box, global.Typography, global.Grid, global.system, global.throttleDebounce, global.cloneDeep, global.proj4, global.turf, global.Draggable, global.reResizable, global.axios, global.api, global.reduxToolkit, global.sagaExtension));
|
|
5
|
+
})(this, (function (exports, toolkit, produce, moment, React, _, effects, reactRedux, shared, theme, material, webmap, reactSortablejs, Sortable, formFields, reactHookForm, reactWindow, Box, Typography, Grid, system, throttleDebounce, cloneDeep, proj4, turf, Draggable, reResizable, axios, api, reduxToolkit, sagaExtension) { 'use strict';
|
|
6
6
|
|
|
7
7
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
8
8
|
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
var proj4__default = /*#__PURE__*/_interopDefaultLegacy(proj4);
|
|
38
38
|
var turf__namespace = /*#__PURE__*/_interopNamespace(turf);
|
|
39
39
|
var Draggable__default = /*#__PURE__*/_interopDefaultLegacy(Draggable);
|
|
40
|
+
var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
|
|
40
41
|
|
|
41
42
|
/*! *****************************************************************************
|
|
42
43
|
Copyright (c) Microsoft Corporation.
|
|
@@ -4332,6 +4333,47 @@
|
|
|
4332
4333
|
FilterType["Group"] = "groups";
|
|
4333
4334
|
})(FilterType || (FilterType = {}));
|
|
4334
4335
|
|
|
4336
|
+
/* *
|
|
4337
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4338
|
+
* you may not use this file except in compliance with the License.
|
|
4339
|
+
* You may obtain a copy of the License at
|
|
4340
|
+
*
|
|
4341
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
4342
|
+
*
|
|
4343
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
4344
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
4345
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
4346
|
+
* See the License for the specific language governing permissions and
|
|
4347
|
+
* limitations under the License.
|
|
4348
|
+
*
|
|
4349
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
4350
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
4351
|
+
* */
|
|
4352
|
+
var getFilterId = function getFilterId(filterType, filterName) {
|
|
4353
|
+
return filterType + "-" + filterName;
|
|
4354
|
+
};
|
|
4355
|
+
var produceFilters = function produceFilters(filterNames, filterType, draft, layerSelectFilterAdapter) {
|
|
4356
|
+
filterNames.forEach(function (filterName) {
|
|
4357
|
+
var id = getFilterId(filterType, filterName);
|
|
4358
|
+
|
|
4359
|
+
if (!draft.filters.filters.entities[id]) {
|
|
4360
|
+
// If this filter doesn't exit yet, add it
|
|
4361
|
+
layerSelectFilterAdapter.addOne(draft.filters.filters, {
|
|
4362
|
+
id: id,
|
|
4363
|
+
name: filterName,
|
|
4364
|
+
amount: 1,
|
|
4365
|
+
amountVisible: 1,
|
|
4366
|
+
checked: true,
|
|
4367
|
+
type: filterType
|
|
4368
|
+
});
|
|
4369
|
+
} else {
|
|
4370
|
+
// If it exists already, up the amounts
|
|
4371
|
+
draft.filters.filters.entities[id].amount += 1;
|
|
4372
|
+
draft.filters.filters.entities[id].amountVisible += 1;
|
|
4373
|
+
}
|
|
4374
|
+
});
|
|
4375
|
+
};
|
|
4376
|
+
|
|
4335
4377
|
/* *
|
|
4336
4378
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4337
4379
|
* you may not use this file except in compliance with the License.
|
|
@@ -4348,17 +4390,13 @@
|
|
|
4348
4390
|
* Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
4349
4391
|
* Copyright 2021 - Finnish Meteorological Institute (FMI)
|
|
4350
4392
|
* */
|
|
4393
|
+
var layerSelectFilterAdapter = toolkit.createEntityAdapter();
|
|
4394
|
+
var layerSelectActiveServicesAdapter = toolkit.createEntityAdapter();
|
|
4351
4395
|
var initialState$1 = {
|
|
4352
4396
|
filters: {
|
|
4353
4397
|
searchFilter: '',
|
|
4354
|
-
activeServices:
|
|
4355
|
-
|
|
4356
|
-
allIds: []
|
|
4357
|
-
},
|
|
4358
|
-
filters: {
|
|
4359
|
-
byId: {},
|
|
4360
|
-
allIds: []
|
|
4361
|
-
}
|
|
4398
|
+
activeServices: layerSelectActiveServicesAdapter.getInitialState(),
|
|
4399
|
+
filters: layerSelectFilterAdapter.getInitialState()
|
|
4362
4400
|
},
|
|
4363
4401
|
allServicesEnabled: true,
|
|
4364
4402
|
activeLayerInfo: {
|
|
@@ -4382,66 +4420,68 @@
|
|
|
4382
4420
|
draft.allServicesEnabled = allServicesEnabled;
|
|
4383
4421
|
},
|
|
4384
4422
|
addFiltersAndActiveServices: function addFiltersAndActiveServices(draft, action) {
|
|
4385
|
-
var _a
|
|
4386
|
-
|
|
4387
|
-
|
|
4388
|
-
|
|
4389
|
-
|
|
4390
|
-
|
|
4391
|
-
|
|
4392
|
-
|
|
4393
|
-
|
|
4394
|
-
|
|
4395
|
-
|
|
4396
|
-
|
|
4397
|
-
|
|
4398
|
-
|
|
4399
|
-
|
|
4400
|
-
|
|
4401
|
-
|
|
4402
|
-
|
|
4403
|
-
|
|
4404
|
-
|
|
4405
|
-
|
|
4406
|
-
|
|
4407
|
-
|
|
4408
|
-
type: filterType
|
|
4409
|
-
};
|
|
4410
|
-
draft.filters.filters.allIds.push(id);
|
|
4411
|
-
} else {
|
|
4412
|
-
draft.filters.filters.byId[id].amount += 1;
|
|
4413
|
-
draft.filters.filters.byId[id].amountVisible += 1;
|
|
4414
|
-
}
|
|
4415
|
-
});
|
|
4423
|
+
var _a, _b;
|
|
4424
|
+
|
|
4425
|
+
var _c = action.payload,
|
|
4426
|
+
serviceId = _c.serviceId,
|
|
4427
|
+
serviceName = _c.serviceName,
|
|
4428
|
+
serviceUrl = _c.serviceUrl,
|
|
4429
|
+
_abstract = _c["abstract"],
|
|
4430
|
+
keywords = _c.keywords,
|
|
4431
|
+
scope = _c.scope,
|
|
4432
|
+
groups = _c.groups,
|
|
4433
|
+
isLoading = _c.isLoading;
|
|
4434
|
+
|
|
4435
|
+
if (isLoading) {
|
|
4436
|
+
// If service is still loading, add without filters
|
|
4437
|
+
draft.filters.activeServices.entities[serviceId] = {
|
|
4438
|
+
serviceId: serviceId,
|
|
4439
|
+
enabled: draft.allServicesEnabled,
|
|
4440
|
+
filterIds: [],
|
|
4441
|
+
scope: scope,
|
|
4442
|
+
serviceName: serviceName,
|
|
4443
|
+
serviceUrl: serviceUrl,
|
|
4444
|
+
"abstract": _abstract,
|
|
4445
|
+
isLoading: isLoading
|
|
4416
4446
|
};
|
|
4447
|
+
}
|
|
4417
4448
|
|
|
4418
|
-
|
|
4419
|
-
|
|
4449
|
+
if (!isLoading) {
|
|
4450
|
+
// If service is done loading, add with filters
|
|
4451
|
+
if (!((_b = (_a = draft.filters.activeServices.entities[serviceId]) === null || _a === void 0 ? void 0 : _a.filterIds) === null || _b === void 0 ? void 0 : _b.length)) {
|
|
4452
|
+
// If the service has no filters yet, add them
|
|
4453
|
+
produceFilters(groups, FilterType.Group, draft, layerSelectFilterAdapter);
|
|
4454
|
+
produceFilters(keywords, FilterType.Keyword, draft, layerSelectFilterAdapter);
|
|
4455
|
+
}
|
|
4456
|
+
|
|
4457
|
+
var filterIds = groups.map(function (group) {
|
|
4458
|
+
return getFilterId(FilterType.Group, group);
|
|
4459
|
+
}).concat(keywords.map(function (keyword) {
|
|
4460
|
+
return getFilterId(FilterType.Keyword, keyword);
|
|
4461
|
+
}));
|
|
4462
|
+
draft.filters.activeServices.entities[serviceId] = {
|
|
4463
|
+
serviceId: serviceId,
|
|
4464
|
+
enabled: draft.allServicesEnabled,
|
|
4465
|
+
filterIds: filterIds,
|
|
4466
|
+
scope: scope,
|
|
4467
|
+
serviceName: serviceName,
|
|
4468
|
+
serviceUrl: serviceUrl,
|
|
4469
|
+
"abstract": _abstract,
|
|
4470
|
+
isLoading: isLoading
|
|
4471
|
+
};
|
|
4420
4472
|
}
|
|
4421
4473
|
|
|
4422
|
-
|
|
4423
|
-
|
|
4424
|
-
}
|
|
4425
|
-
return FilterType.Keyword + "-" + keyword;
|
|
4426
|
-
}));
|
|
4427
|
-
draft.filters.activeServices.byId[serviceId] = {
|
|
4428
|
-
serviceId: serviceId,
|
|
4429
|
-
enabled: draft.allServicesEnabled,
|
|
4430
|
-
filterIds: filterIds,
|
|
4431
|
-
scope: scope,
|
|
4432
|
-
serviceName: serviceName,
|
|
4433
|
-
serviceUrl: serviceUrl,
|
|
4434
|
-
"abstract": _abstract
|
|
4435
|
-
};
|
|
4436
|
-
if (!draft.filters.activeServices.allIds.includes(serviceId)) draft.filters.activeServices.allIds.push(serviceId);
|
|
4474
|
+
if (!draft.filters.activeServices.ids.includes(serviceId)) {
|
|
4475
|
+
draft.filters.activeServices.ids.push(serviceId);
|
|
4476
|
+
}
|
|
4437
4477
|
},
|
|
4438
4478
|
layerSelectRemoveService: function layerSelectRemoveService(draft, action) {
|
|
4439
4479
|
var serviceId = action.payload.serviceId; // 1. Find a service that is to be removed
|
|
4440
4480
|
|
|
4441
|
-
var foundService = draft.filters.activeServices.
|
|
4481
|
+
var foundService = draft.filters.activeServices.entities[serviceId]; // 2. Go through all keywords for removed service, and decrement the amount of all found keywords
|
|
4442
4482
|
|
|
4443
4483
|
foundService.filterIds.forEach(function (filterId) {
|
|
4444
|
-
var foundObject = draft.filters.filters.
|
|
4484
|
+
var foundObject = draft.filters.filters.entities[filterId];
|
|
4445
4485
|
|
|
4446
4486
|
if (foundObject && foundObject.amount) {
|
|
4447
4487
|
foundObject.amount -= 1;
|
|
@@ -4449,17 +4489,14 @@
|
|
|
4449
4489
|
}
|
|
4450
4490
|
|
|
4451
4491
|
if (foundObject && foundObject.amount === 0) {
|
|
4452
|
-
delete draft.filters.filters.
|
|
4453
|
-
draft.filters.filters.
|
|
4492
|
+
delete draft.filters.filters.entities[filterId];
|
|
4493
|
+
draft.filters.filters.ids = draft.filters.filters.ids.filter(function (serviceId) {
|
|
4454
4494
|
return serviceId !== filterId;
|
|
4455
4495
|
});
|
|
4456
4496
|
}
|
|
4457
4497
|
}); // Finally remove object from activeServices, so if the service is added again later on, new object and keywords will be re-added
|
|
4458
4498
|
|
|
4459
|
-
|
|
4460
|
-
draft.filters.activeServices.allIds = draft.filters.activeServices.allIds.filter(function (id) {
|
|
4461
|
-
return id !== serviceId;
|
|
4462
|
-
});
|
|
4499
|
+
layerSelectActiveServicesAdapter.removeOne(draft.filters.activeServices, serviceId);
|
|
4463
4500
|
},
|
|
4464
4501
|
enableActiveService: function enableActiveService(draft, action) {
|
|
4465
4502
|
var e_1, _a;
|
|
@@ -4467,12 +4504,12 @@
|
|
|
4467
4504
|
var _b = action.payload,
|
|
4468
4505
|
serviceId = _b.serviceId,
|
|
4469
4506
|
keywords = _b.filters;
|
|
4470
|
-
draft.filters.activeServices.
|
|
4507
|
+
draft.filters.activeServices.entities[serviceId].enabled = true;
|
|
4471
4508
|
|
|
4472
4509
|
try {
|
|
4473
4510
|
for (var keywords_1 = __values(keywords), keywords_1_1 = keywords_1.next(); !keywords_1_1.done; keywords_1_1 = keywords_1.next()) {
|
|
4474
4511
|
var keyword = keywords_1_1.value;
|
|
4475
|
-
draft.filters.filters.
|
|
4512
|
+
draft.filters.filters.entities[keyword].amountVisible += 1;
|
|
4476
4513
|
}
|
|
4477
4514
|
} catch (e_1_1) {
|
|
4478
4515
|
e_1 = {
|
|
@@ -4492,12 +4529,12 @@
|
|
|
4492
4529
|
var _b = action.payload,
|
|
4493
4530
|
serviceId = _b.serviceId,
|
|
4494
4531
|
keywords = _b.filters;
|
|
4495
|
-
draft.filters.activeServices.
|
|
4532
|
+
draft.filters.activeServices.entities[serviceId].enabled = false;
|
|
4496
4533
|
|
|
4497
4534
|
try {
|
|
4498
4535
|
for (var keywords_2 = __values(keywords), keywords_2_1 = keywords_2.next(); !keywords_2_1.done; keywords_2_1 = keywords_2.next()) {
|
|
4499
4536
|
var keyword = keywords_2_1.value;
|
|
4500
|
-
draft.filters.filters.
|
|
4537
|
+
draft.filters.filters.entities[keyword].amountVisible -= 1;
|
|
4501
4538
|
}
|
|
4502
4539
|
} catch (e_2_1) {
|
|
4503
4540
|
e_2 = {
|
|
@@ -4514,15 +4551,15 @@
|
|
|
4514
4551
|
toggleFilter: function toggleFilter(draft, action) {
|
|
4515
4552
|
var filterIds = action.payload.filterIds;
|
|
4516
4553
|
filterIds.forEach(function (filterId) {
|
|
4517
|
-
draft.filters.filters.
|
|
4554
|
+
draft.filters.filters.entities[filterId].checked = !draft.filters.filters.entities[filterId].checked;
|
|
4518
4555
|
});
|
|
4519
4556
|
},
|
|
4520
4557
|
enableOnlyOneFilter: function enableOnlyOneFilter(draft, action) {
|
|
4521
4558
|
var filterId = action.payload.filterId;
|
|
4522
|
-
draft.filters.filters.
|
|
4523
|
-
draft.filters.filters.
|
|
4559
|
+
draft.filters.filters.ids.forEach(function (filterId) {
|
|
4560
|
+
draft.filters.filters.entities[filterId].checked = false;
|
|
4524
4561
|
});
|
|
4525
|
-
draft.filters.filters.
|
|
4562
|
+
draft.filters.filters.entities[filterId].checked = true;
|
|
4526
4563
|
},
|
|
4527
4564
|
setActiveLayerInfo: function setActiveLayerInfo(draft, action) {
|
|
4528
4565
|
var layer = action.payload.layer;
|
|
@@ -4618,21 +4655,30 @@
|
|
|
4618
4655
|
|
|
4619
4656
|
|
|
4620
4657
|
var getSearchFilter = toolkit.createSelector(layerSelectStore, function (store) {
|
|
4621
|
-
|
|
4658
|
+
var _a;
|
|
4659
|
+
|
|
4660
|
+
return ((_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.searchFilter) || '';
|
|
4622
4661
|
});
|
|
4623
4662
|
/**
|
|
4624
4663
|
* Returns active services array
|
|
4625
4664
|
*
|
|
4626
4665
|
* Example getActiveServices(store);
|
|
4627
4666
|
* @param {object} store store: object - store object
|
|
4628
|
-
* @returns {
|
|
4667
|
+
* @returns {ActiveServiceObjectEntities} returnType: ActiveServiceObjectEntitiesobject of active services
|
|
4629
4668
|
*/
|
|
4669
|
+
// cast to usable type - selectEntities returns Dictionary<ActiveServiceObject> which is not usable inside of the code
|
|
4630
4670
|
|
|
4631
|
-
var getActiveServices =
|
|
4632
|
-
|
|
4671
|
+
var getActiveServices = function getActiveServices(store) {
|
|
4672
|
+
return getActiveServicesDictionary(store);
|
|
4673
|
+
};
|
|
4674
|
+
var getActiveServicesDictionary = layerSelectActiveServicesAdapter.getSelectors(function (store) {
|
|
4675
|
+
var _a, _b;
|
|
4633
4676
|
|
|
4634
|
-
return
|
|
4635
|
-
|
|
4677
|
+
return ((_b = (_a = store === null || store === void 0 ? void 0 : store.layerSelect) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.activeServices) || {
|
|
4678
|
+
entities: {},
|
|
4679
|
+
ids: []
|
|
4680
|
+
};
|
|
4681
|
+
}).selectEntities;
|
|
4636
4682
|
/**
|
|
4637
4683
|
* Returns active services by id
|
|
4638
4684
|
*
|
|
@@ -4643,9 +4689,9 @@
|
|
|
4643
4689
|
*/
|
|
4644
4690
|
|
|
4645
4691
|
var getActiveServiceById = function getActiveServiceById(store, serviceId) {
|
|
4646
|
-
var _a, _b;
|
|
4692
|
+
var _a, _b, _c;
|
|
4647
4693
|
|
|
4648
|
-
var enabledServices = ((_b = (_a = store === null || store === void 0 ? void 0 : store.layerSelect) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.activeServices.
|
|
4694
|
+
var enabledServices = ((_c = (_b = (_a = store === null || store === void 0 ? void 0 : store.layerSelect) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.activeServices) === null || _c === void 0 ? void 0 : _c.entities[serviceId]) || {};
|
|
4649
4695
|
return enabledServices;
|
|
4650
4696
|
};
|
|
4651
4697
|
/**
|
|
@@ -4659,10 +4705,10 @@
|
|
|
4659
4705
|
var getEnabledServiceIds = toolkit.createSelector(layerSelectStore, function (store) {
|
|
4660
4706
|
var _a, _b;
|
|
4661
4707
|
|
|
4662
|
-
var enabledServices = (_b = (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.activeServices.
|
|
4663
|
-
var _a;
|
|
4708
|
+
var enabledServices = (_b = (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.activeServices.ids.filter(function (serviceId) {
|
|
4709
|
+
var _a, _b, _c;
|
|
4664
4710
|
|
|
4665
|
-
return (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.activeServices.
|
|
4711
|
+
return (_c = (_b = (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.activeServices) === null || _b === void 0 ? void 0 : _b.entities[serviceId]) === null || _c === void 0 ? void 0 : _c.enabled;
|
|
4666
4712
|
})) !== null && _b !== void 0 ? _b : [];
|
|
4667
4713
|
return enabledServices;
|
|
4668
4714
|
}, selectorMemoizationOptions);
|
|
@@ -4675,17 +4721,17 @@
|
|
|
4675
4721
|
*/
|
|
4676
4722
|
|
|
4677
4723
|
var getCheckedFilterIds = toolkit.createSelector(layerSelectStore, function (store) {
|
|
4678
|
-
var _a, _b;
|
|
4724
|
+
var _a, _b, _c;
|
|
4679
4725
|
|
|
4680
|
-
var checkedFilters = (_b = (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.filters.
|
|
4681
|
-
var _a, _b;
|
|
4726
|
+
var checkedFilters = (_c = (_b = (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.ids.filter(function (filterId) {
|
|
4727
|
+
var _a, _b, _c;
|
|
4682
4728
|
|
|
4683
|
-
return (_b = (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.filters.
|
|
4684
|
-
})) !== null &&
|
|
4729
|
+
return (_c = (_b = (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.entities[filterId]) === null || _c === void 0 ? void 0 : _c.checked;
|
|
4730
|
+
})) !== null && _c !== void 0 ? _c : [];
|
|
4685
4731
|
return checkedFilters.map(function (filterId) {
|
|
4686
|
-
var _a;
|
|
4732
|
+
var _a, _b, _c;
|
|
4687
4733
|
|
|
4688
|
-
return (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.filters.
|
|
4734
|
+
return (_c = (_b = (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.entities[filterId]) === null || _c === void 0 ? void 0 : _c.id;
|
|
4689
4735
|
});
|
|
4690
4736
|
}, selectorMemoizationOptions);
|
|
4691
4737
|
/**
|
|
@@ -4695,12 +4741,19 @@
|
|
|
4695
4741
|
* @param {object} store store: object - store object
|
|
4696
4742
|
* @returns {array} returnType: array of all keyword ids
|
|
4697
4743
|
*/
|
|
4744
|
+
// cast to usable type - selectIds returns EntityId[] which is not usable inside of the code
|
|
4698
4745
|
|
|
4699
|
-
var getAllFilterIds =
|
|
4746
|
+
var getAllFilterIds = function getAllFilterIds(store) {
|
|
4747
|
+
return getAllFilterIdsEntity(store);
|
|
4748
|
+
};
|
|
4749
|
+
var getAllFilterIdsEntity = layerSelectFilterAdapter.getSelectors(function (store) {
|
|
4700
4750
|
var _a, _b;
|
|
4701
4751
|
|
|
4702
|
-
return (_b = (_a = store === null || store === void 0 ? void 0 : store.
|
|
4703
|
-
|
|
4752
|
+
return ((_b = (_a = store === null || store === void 0 ? void 0 : store.layerSelect) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.filters) || {
|
|
4753
|
+
entities: {},
|
|
4754
|
+
ids: []
|
|
4755
|
+
};
|
|
4756
|
+
}).selectIds;
|
|
4704
4757
|
/**
|
|
4705
4758
|
* Returns all filters
|
|
4706
4759
|
*
|
|
@@ -4709,15 +4762,14 @@
|
|
|
4709
4762
|
* @returns {array} returnType: array of all filters
|
|
4710
4763
|
*/
|
|
4711
4764
|
|
|
4712
|
-
var getAllFilters =
|
|
4713
|
-
var
|
|
4714
|
-
|
|
4715
|
-
if (filters) {
|
|
4716
|
-
return Object.values(filters);
|
|
4717
|
-
}
|
|
4765
|
+
var getAllFilters = layerSelectFilterAdapter.getSelectors(function (store) {
|
|
4766
|
+
var _a, _b;
|
|
4718
4767
|
|
|
4719
|
-
return
|
|
4720
|
-
|
|
4768
|
+
return ((_b = (_a = store === null || store === void 0 ? void 0 : store.layerSelect) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.filters) || {
|
|
4769
|
+
entities: {},
|
|
4770
|
+
ids: []
|
|
4771
|
+
};
|
|
4772
|
+
}).selectAll;
|
|
4721
4773
|
/**
|
|
4722
4774
|
* Returns if all keywords are checked
|
|
4723
4775
|
*
|
|
@@ -4729,12 +4781,29 @@
|
|
|
4729
4781
|
var isAllFiltersChecked = toolkit.createSelector(layerSelectStore, function (store) {
|
|
4730
4782
|
var _a, _b;
|
|
4731
4783
|
|
|
4732
|
-
return (_b = (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.
|
|
4784
|
+
return (_b = (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.ids.every(function (filterId) {
|
|
4733
4785
|
var _a, _b, _c;
|
|
4734
4786
|
|
|
4735
|
-
return (_c = (_b = (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.
|
|
4787
|
+
return (_c = (_b = (_a = store === null || store === void 0 ? void 0 : store.filters) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.entities[filterId]) === null || _c === void 0 ? void 0 : _c.checked;
|
|
4736
4788
|
});
|
|
4737
4789
|
});
|
|
4790
|
+
/**
|
|
4791
|
+
* Gets a KeywordObject by its id
|
|
4792
|
+
*
|
|
4793
|
+
* Example: keywordObject = getKeywordObjectById(store, 'keywordId')
|
|
4794
|
+
* @param {object} store object from which the keyword state will be extracted
|
|
4795
|
+
* @param {string} filterId Id of the keyword
|
|
4796
|
+
* @returns {object} object containing keyword information (id, amount, amountVisible, checked)
|
|
4797
|
+
*/
|
|
4798
|
+
|
|
4799
|
+
layerSelectFilterAdapter.getSelectors(function (store) {
|
|
4800
|
+
var _a, _b;
|
|
4801
|
+
|
|
4802
|
+
return ((_b = (_a = store === null || store === void 0 ? void 0 : store.layerSelect) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.filters) || {
|
|
4803
|
+
entities: {},
|
|
4804
|
+
ids: []
|
|
4805
|
+
};
|
|
4806
|
+
}).selectById;
|
|
4738
4807
|
/**
|
|
4739
4808
|
* Returns the active layer info
|
|
4740
4809
|
*
|
|
@@ -8716,7 +8785,8 @@
|
|
|
8716
8785
|
keywords: keywords,
|
|
8717
8786
|
scope: scope,
|
|
8718
8787
|
groups: groups,
|
|
8719
|
-
"abstract": _abstract
|
|
8788
|
+
"abstract": _abstract,
|
|
8789
|
+
isLoading: false
|
|
8720
8790
|
}))];
|
|
8721
8791
|
|
|
8722
8792
|
case 1:
|
|
@@ -8868,7 +8938,7 @@
|
|
|
8868
8938
|
results = _a.sent();
|
|
8869
8939
|
services = results;
|
|
8870
8940
|
servicesEnabled = Object.values(services).find(function (service) {
|
|
8871
|
-
return service.enabled;
|
|
8941
|
+
return service === null || service === void 0 ? void 0 : service.enabled;
|
|
8872
8942
|
});
|
|
8873
8943
|
if (!(servicesEnabled === undefined)) return [3
|
|
8874
8944
|
/*break*/
|
|
@@ -8882,7 +8952,7 @@
|
|
|
8882
8952
|
|
|
8883
8953
|
return effects.put(layerSelectActions.enableActiveService({
|
|
8884
8954
|
serviceId: serviceId,
|
|
8885
|
-
filters: service.filterIds
|
|
8955
|
+
filters: service === null || service === void 0 ? void 0 : service.filterIds
|
|
8886
8956
|
}));
|
|
8887
8957
|
}))];
|
|
8888
8958
|
|
|
@@ -12557,18 +12627,36 @@
|
|
|
12557
12627
|
var serviceSetLayers = React__namespace.useCallback(function (payload) {
|
|
12558
12628
|
dispatch(serviceActions.serviceSetLayers(payload));
|
|
12559
12629
|
}, [dispatch]);
|
|
12630
|
+
var addFiltersAndActiveServices = React__namespace.useCallback(function (payload) {
|
|
12631
|
+
dispatch(layerSelectActions.addFiltersAndActiveServices(payload));
|
|
12632
|
+
}, [dispatch]);
|
|
12560
12633
|
React__namespace.useEffect(function () {
|
|
12561
12634
|
if (isOpenInStore && preloadedServices && preloadedServices.length > 0) {
|
|
12562
12635
|
mergePresetsAndUserAddedServices(preloadedServices, getUserAddedServices()).forEach(function (service) {
|
|
12636
|
+
var wmService = webmap.WMGetServiceFromStore(service.url);
|
|
12637
|
+
var scope = service.scope ? service.scope : 'system';
|
|
12638
|
+
|
|
12639
|
+
if (isMounted.current) {
|
|
12640
|
+
addFiltersAndActiveServices({
|
|
12641
|
+
serviceId: wmService.id,
|
|
12642
|
+
serviceName: service.name,
|
|
12643
|
+
serviceUrl: service.url,
|
|
12644
|
+
keywords: [],
|
|
12645
|
+
scope: scope,
|
|
12646
|
+
groups: [],
|
|
12647
|
+
"abstract": service["abstract"] || wmService["abstract"],
|
|
12648
|
+
isLoading: true
|
|
12649
|
+
});
|
|
12650
|
+
}
|
|
12651
|
+
|
|
12563
12652
|
getLayersFlattenedFromService(service.url).then(function (layers) {
|
|
12564
12653
|
if (isMounted.current) {
|
|
12565
|
-
var wmService = webmap.WMGetServiceFromStore(service.url);
|
|
12566
12654
|
serviceSetLayers({
|
|
12567
12655
|
id: wmService.id,
|
|
12568
12656
|
name: service.name,
|
|
12569
12657
|
serviceUrl: service.url,
|
|
12570
12658
|
layers: layers,
|
|
12571
|
-
scope:
|
|
12659
|
+
scope: scope,
|
|
12572
12660
|
// first try to load the user abstract, otherwise the service abstract
|
|
12573
12661
|
"abstract": service["abstract"] || wmService["abstract"]
|
|
12574
12662
|
});
|
|
@@ -12577,9 +12665,8 @@
|
|
|
12577
12665
|
return null;
|
|
12578
12666
|
});
|
|
12579
12667
|
});
|
|
12580
|
-
}
|
|
12581
|
-
|
|
12582
|
-
}, [isOpenInStore, preloadedServices, serviceSetLayers]);
|
|
12668
|
+
}
|
|
12669
|
+
}, [addFiltersAndActiveServices, isMounted, isOpenInStore, preloadedServices, serviceSetLayers]);
|
|
12583
12670
|
};
|
|
12584
12671
|
var mergePresetsAndUserAddedServices = function mergePresetsAndUserAddedServices(presets, userAddedServices) {
|
|
12585
12672
|
return Object.values(__assign(__assign({}, presets.reduce(function (byUrl, preset) {
|
|
@@ -12886,7 +12973,9 @@
|
|
|
12886
12973
|
|
|
12887
12974
|
var serviceName = value === null || value === void 0 ? void 0 : value.toLowerCase();
|
|
12888
12975
|
var foundName = Object.keys(services).find(function (serviceId) {
|
|
12889
|
-
|
|
12976
|
+
var _a;
|
|
12977
|
+
|
|
12978
|
+
return ((_a = services[serviceId]) === null || _a === void 0 ? void 0 : _a.serviceName.toLowerCase()) === serviceName && serviceName !== ownServiceName.toLocaleLowerCase();
|
|
12890
12979
|
});
|
|
12891
12980
|
return foundName === undefined ? true : VALIDATIONS_NAME_EXISTING;
|
|
12892
12981
|
};
|
|
@@ -12916,7 +13005,9 @@
|
|
|
12916
13005
|
|
|
12917
13006
|
|
|
12918
13007
|
var foundUrl = Object.keys(services).find(function (serviceId) {
|
|
12919
|
-
|
|
13008
|
+
var _a;
|
|
13009
|
+
|
|
13010
|
+
return ((_a = services[serviceId]) === null || _a === void 0 ? void 0 : _a.serviceUrl) === serviceUrl;
|
|
12920
13011
|
});
|
|
12921
13012
|
|
|
12922
13013
|
if (foundUrl) {
|
|
@@ -14163,7 +14254,7 @@
|
|
|
14163
14254
|
var _d = __read(_b, 2),
|
|
14164
14255
|
b = _d[1];
|
|
14165
14256
|
|
|
14166
|
-
return a.serviceName.localeCompare(b.serviceName);
|
|
14257
|
+
return a.serviceName.localeCompare(b === null || b === void 0 ? void 0 : b.serviceName);
|
|
14167
14258
|
}).reduce(function (r, _a) {
|
|
14168
14259
|
var _b;
|
|
14169
14260
|
|
|
@@ -14487,7 +14578,7 @@
|
|
|
14487
14578
|
var chip = all ? 'all' : service && service.serviceUrl;
|
|
14488
14579
|
return /*#__PURE__*/React__namespace.createElement(shared.CustomTooltip, {
|
|
14489
14580
|
title: (service === null || service === void 0 ? void 0 : service["abstract"]) ? "Abstract: " + service["abstract"] : ''
|
|
14490
|
-
}, /*#__PURE__*/React__namespace.createElement(shared.CustomToggleButton, {
|
|
14581
|
+
}, /*#__PURE__*/React__namespace.createElement("span", null, /*#__PURE__*/React__namespace.createElement(shared.CustomToggleButton, {
|
|
14491
14582
|
variant: "boxed",
|
|
14492
14583
|
selected: isSelected,
|
|
14493
14584
|
tabIndex: 0,
|
|
@@ -14500,7 +14591,7 @@
|
|
|
14500
14591
|
},
|
|
14501
14592
|
disabled: isDisabled,
|
|
14502
14593
|
sx: style
|
|
14503
|
-
}, service ? service.serviceName : 'All'));
|
|
14594
|
+
}, service ? service.serviceName : 'All')));
|
|
14504
14595
|
};
|
|
14505
14596
|
|
|
14506
14597
|
/* *
|
|
@@ -14674,7 +14765,7 @@
|
|
|
14674
14765
|
all: true,
|
|
14675
14766
|
isSelected: isAllSelected
|
|
14676
14767
|
}), Object.keys(activeServices).map(function (serviceId) {
|
|
14677
|
-
var _a;
|
|
14768
|
+
var _a, _b;
|
|
14678
14769
|
|
|
14679
14770
|
var service = activeServices[serviceId];
|
|
14680
14771
|
return /*#__PURE__*/React__namespace.createElement(ServiceChipConnect, {
|
|
@@ -14683,7 +14774,7 @@
|
|
|
14683
14774
|
service: service,
|
|
14684
14775
|
isSelected: (_a = activeServices[serviceId]) === null || _a === void 0 ? void 0 : _a.enabled,
|
|
14685
14776
|
isAllSelected: isAllSelected,
|
|
14686
|
-
isDisabled: activeServices[serviceId] === undefined
|
|
14777
|
+
isDisabled: activeServices[serviceId] === undefined || ((_b = activeServices[serviceId]) === null || _b === void 0 ? void 0 : _b.isLoading) === true
|
|
14687
14778
|
});
|
|
14688
14779
|
})));
|
|
14689
14780
|
};
|
|
@@ -14953,7 +15044,9 @@
|
|
|
14953
15044
|
var getService = function getService(services, serviceUrl) {
|
|
14954
15045
|
var serviceIds = Object.keys(services);
|
|
14955
15046
|
var serviceIndex = serviceIds.findIndex(function (serviceId) {
|
|
14956
|
-
|
|
15047
|
+
var _a;
|
|
15048
|
+
|
|
15049
|
+
return ((_a = services[serviceId]) === null || _a === void 0 ? void 0 : _a.serviceUrl) === serviceUrl;
|
|
14957
15050
|
});
|
|
14958
15051
|
if (serviceIndex < 0) return null;
|
|
14959
15052
|
return services[serviceIds[serviceIndex]];
|
|
@@ -15852,7 +15945,8 @@
|
|
|
15852
15945
|
left: 0,
|
|
15853
15946
|
margin: 1,
|
|
15854
15947
|
zIndex: 50,
|
|
15855
|
-
top: '96px'
|
|
15948
|
+
top: '96px',
|
|
15949
|
+
userSelect: 'none'
|
|
15856
15950
|
}
|
|
15857
15951
|
}, props), /*#__PURE__*/React__namespace.createElement(material.Grid, {
|
|
15858
15952
|
sx: {
|
|
@@ -24714,6 +24808,398 @@
|
|
|
24714
24808
|
});
|
|
24715
24809
|
};
|
|
24716
24810
|
|
|
24811
|
+
/* *
|
|
24812
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
24813
|
+
* you may not use this file except in compliance with the License.
|
|
24814
|
+
* You may obtain a copy of the License at
|
|
24815
|
+
*
|
|
24816
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
24817
|
+
*
|
|
24818
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
24819
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
24820
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
24821
|
+
* See the License for the specific language governing permissions and
|
|
24822
|
+
* limitations under the License.
|
|
24823
|
+
*
|
|
24824
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
24825
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
24826
|
+
* */
|
|
24827
|
+
/**
|
|
24828
|
+
* Get the title for this WMS layer based on its layerId. If not defined, layerId is used instead.
|
|
24829
|
+
* @param layerId
|
|
24830
|
+
* @returns Title for the layer
|
|
24831
|
+
*/
|
|
24832
|
+
|
|
24833
|
+
var getTitle = function getTitle(layerId) {
|
|
24834
|
+
var wmjsLayer = getWMLayerById(layerId);
|
|
24835
|
+
return wmjsLayer ? wmjsLayer.title || wmjsLayer.name : layerId;
|
|
24836
|
+
};
|
|
24837
|
+
/**
|
|
24838
|
+
* Make a list of GFI Layers to display.
|
|
24839
|
+
* @param layers
|
|
24840
|
+
* @param mapId
|
|
24841
|
+
* @returns
|
|
24842
|
+
*/
|
|
24843
|
+
|
|
24844
|
+
|
|
24845
|
+
var getLayersToUpdate = function getLayersToUpdate(layers, mapId) {
|
|
24846
|
+
var wmjsMap = getWMJSMapById(mapId);
|
|
24847
|
+
if (!wmjsMap || !layers || layers.length === 0) return [];
|
|
24848
|
+
return layers.filter(function (layer) {
|
|
24849
|
+
return layer && layer.enabled && !!getWMLayerById(layer.id);
|
|
24850
|
+
}).map(function (layer) {
|
|
24851
|
+
/*
|
|
24852
|
+
We need a wmjsLayer to build the getfeatureinfo url (getWMSGetFeatureInfoRequestURL function).
|
|
24853
|
+
But it seems that its dimension are lazely updated (by ReactMapView).
|
|
24854
|
+
Therefore make a clone of this layer and set its dimensions based on the layer object.
|
|
24855
|
+
Otherwise we risk making a getfeatureinfo call with outdated dimension values.
|
|
24856
|
+
*/
|
|
24857
|
+
var wmjsLayer = getWMLayerById(layer.id).cloneLayer();
|
|
24858
|
+
layer.dimensions && layer.dimensions.forEach(function (dim) {
|
|
24859
|
+
var wmDim = wmjsLayer.getDimension(dim.name);
|
|
24860
|
+
|
|
24861
|
+
if (wmDim && wmDim.getValue() !== dim.currentValue) {
|
|
24862
|
+
wmDim.setValue(dim.currentValue);
|
|
24863
|
+
}
|
|
24864
|
+
});
|
|
24865
|
+
return {
|
|
24866
|
+
layerId: layer.id,
|
|
24867
|
+
url: wmjsMap.getWMSGetFeatureInfoRequestURL(wmjsLayer, "" + wmjsMap.getMapPin().getXY().x, "" + wmjsMap.getMapPin().getXY().y, 'text/html'),
|
|
24868
|
+
title: getTitle(layer.id)
|
|
24869
|
+
};
|
|
24870
|
+
});
|
|
24871
|
+
};
|
|
24872
|
+
|
|
24873
|
+
/* *
|
|
24874
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
24875
|
+
* you may not use this file except in compliance with the License.
|
|
24876
|
+
* You may obtain a copy of the License at
|
|
24877
|
+
*
|
|
24878
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
24879
|
+
*
|
|
24880
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
24881
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
24882
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
24883
|
+
* See the License for the specific language governing permissions and
|
|
24884
|
+
* limitations under the License.
|
|
24885
|
+
*
|
|
24886
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
24887
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
24888
|
+
* */
|
|
24889
|
+
|
|
24890
|
+
var GetFeatureInfoDialog = function GetFeatureInfoDialog(_a) {
|
|
24891
|
+
var layers = _a.layers,
|
|
24892
|
+
isOpen = _a.isOpen,
|
|
24893
|
+
onClose = _a.onClose,
|
|
24894
|
+
_b = _a.onMouseDown,
|
|
24895
|
+
onMouseDown = _b === void 0 ? function () {} : _b,
|
|
24896
|
+
mapId = _a.mapId,
|
|
24897
|
+
_c = _a.showMapId,
|
|
24898
|
+
showMapId = _c === void 0 ? false : _c,
|
|
24899
|
+
_d = _a.order,
|
|
24900
|
+
order = _d === void 0 ? 0 : _d,
|
|
24901
|
+
_e = _a.source,
|
|
24902
|
+
source = _e === void 0 ? 'app' : _e,
|
|
24903
|
+
mapPinLocation = _a.mapPinLocation;
|
|
24904
|
+
/* Ref and state for maplocation */
|
|
24905
|
+
|
|
24906
|
+
var mapLocationWasChanged = React__default["default"].useRef(false);
|
|
24907
|
+
|
|
24908
|
+
var _f = __read(React__default["default"].useState(false), 2),
|
|
24909
|
+
isInitialMapLocationChanged = _f[0],
|
|
24910
|
+
setInitialMapLocationIsChanged = _f[1];
|
|
24911
|
+
/* Ref, state and update function for results per layer map */
|
|
24912
|
+
|
|
24913
|
+
|
|
24914
|
+
var gfiResultMap = React__default["default"].useRef(new Map()).current;
|
|
24915
|
+
|
|
24916
|
+
var _g = __read(React__default["default"].useState(), 2),
|
|
24917
|
+
triggerRerender = _g[1];
|
|
24918
|
+
|
|
24919
|
+
var updateLayerResult = function updateLayerResult(_a) {
|
|
24920
|
+
var layerId = _a.layerId,
|
|
24921
|
+
data = _a.data,
|
|
24922
|
+
isLoading = _a.isLoading;
|
|
24923
|
+
gfiResultMap.set(layerId, {
|
|
24924
|
+
data: data,
|
|
24925
|
+
isLoading: isLoading
|
|
24926
|
+
});
|
|
24927
|
+
triggerRerender("" + layerId + isLoading);
|
|
24928
|
+
};
|
|
24929
|
+
/* Build a layerlist array with a set of arguments per layer to do the query for */
|
|
24930
|
+
|
|
24931
|
+
|
|
24932
|
+
var layerToUpdateList = getLayersToUpdate(layers, mapId);
|
|
24933
|
+
/*
|
|
24934
|
+
Build a string based on the GFI urls. If this changes for whatever reason we need to update.
|
|
24935
|
+
These strings can change very often, therefore they need to be debounced and only use the most recent result must be used.
|
|
24936
|
+
*/
|
|
24937
|
+
|
|
24938
|
+
var debouncedlayerListString = api.useDebounce(layerToUpdateList.map(function (layer) {
|
|
24939
|
+
return layer.url;
|
|
24940
|
+
}).join(','), 100);
|
|
24941
|
+
/* Do a GFI call to the server and use the updateLayerResult to provide the results. */
|
|
24942
|
+
|
|
24943
|
+
var fetchLayerInfo = function fetchLayerInfo(url, layerId) {
|
|
24944
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
24945
|
+
var data, error_1, errorMessage;
|
|
24946
|
+
return __generator(this, function (_a) {
|
|
24947
|
+
switch (_a.label) {
|
|
24948
|
+
case 0:
|
|
24949
|
+
_a.trys.push([0, 2,, 3]);
|
|
24950
|
+
|
|
24951
|
+
updateLayerResult({
|
|
24952
|
+
layerId: layerId,
|
|
24953
|
+
data: '',
|
|
24954
|
+
isLoading: true
|
|
24955
|
+
});
|
|
24956
|
+
return [4
|
|
24957
|
+
/*yield*/
|
|
24958
|
+
, axios__default["default"].get(url)];
|
|
24959
|
+
|
|
24960
|
+
case 1:
|
|
24961
|
+
data = _a.sent().data;
|
|
24962
|
+
updateLayerResult({
|
|
24963
|
+
layerId: layerId,
|
|
24964
|
+
data: data,
|
|
24965
|
+
isLoading: false
|
|
24966
|
+
});
|
|
24967
|
+
return [3
|
|
24968
|
+
/*break*/
|
|
24969
|
+
, 3];
|
|
24970
|
+
|
|
24971
|
+
case 2:
|
|
24972
|
+
error_1 = _a.sent();
|
|
24973
|
+
errorMessage = error_1.message();
|
|
24974
|
+
updateLayerResult({
|
|
24975
|
+
layerId: layerId,
|
|
24976
|
+
data: errorMessage,
|
|
24977
|
+
isLoading: false
|
|
24978
|
+
});
|
|
24979
|
+
return [3
|
|
24980
|
+
/*break*/
|
|
24981
|
+
, 3];
|
|
24982
|
+
|
|
24983
|
+
case 3:
|
|
24984
|
+
return [2
|
|
24985
|
+
/*return*/
|
|
24986
|
+
];
|
|
24987
|
+
}
|
|
24988
|
+
});
|
|
24989
|
+
});
|
|
24990
|
+
};
|
|
24991
|
+
/* Wait till the user has clicked the map. */
|
|
24992
|
+
|
|
24993
|
+
|
|
24994
|
+
React__default["default"].useEffect(function () {
|
|
24995
|
+
if (mapLocationWasChanged.current !== false) {
|
|
24996
|
+
setInitialMapLocationIsChanged(true);
|
|
24997
|
+
}
|
|
24998
|
+
|
|
24999
|
+
mapLocationWasChanged.current = true;
|
|
25000
|
+
}, [mapPinLocation]);
|
|
25001
|
+
/* For each changed getfeature url string, load new data using WMS GetFeatureInfo */
|
|
25002
|
+
|
|
25003
|
+
React__default["default"].useEffect(function () {
|
|
25004
|
+
if (isInitialMapLocationChanged && isOpen) {
|
|
25005
|
+
layerToUpdateList.forEach(function (_a) {
|
|
25006
|
+
var url = _a.url,
|
|
25007
|
+
layerId = _a.layerId;
|
|
25008
|
+
fetchLayerInfo(url, layerId);
|
|
25009
|
+
});
|
|
25010
|
+
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
25011
|
+
|
|
25012
|
+
}, [debouncedlayerListString]);
|
|
25013
|
+
var hasLayers = layers && layers.length > 0;
|
|
25014
|
+
return /*#__PURE__*/React__default["default"].createElement(shared.ToolContainerDraggable, {
|
|
25015
|
+
startPosition: {
|
|
25016
|
+
right: 10,
|
|
25017
|
+
top: 80
|
|
25018
|
+
},
|
|
25019
|
+
minWidth: 300,
|
|
25020
|
+
onClose: onClose,
|
|
25021
|
+
title: showMapId ? "Event marker info " + mapId : 'Event marker info',
|
|
25022
|
+
headerSize: "small",
|
|
25023
|
+
initialMaxHeight: 440,
|
|
25024
|
+
isOpen: isOpen,
|
|
25025
|
+
"data-testid": "moveable-getfeatureinfo",
|
|
25026
|
+
bounds: "parent",
|
|
25027
|
+
onMouseDown: onMouseDown,
|
|
25028
|
+
order: order,
|
|
25029
|
+
source: source
|
|
25030
|
+
}, /*#__PURE__*/React__default["default"].createElement(material.Box, {
|
|
25031
|
+
sx: {
|
|
25032
|
+
padding: 0
|
|
25033
|
+
}
|
|
25034
|
+
}, isOpen && hasLayers && isInitialMapLocationChanged && /*#__PURE__*/React__default["default"].createElement(material.Box, {
|
|
25035
|
+
"data-testid": "GetFeatureInfoList"
|
|
25036
|
+
}, layerToUpdateList.map(function (layer) {
|
|
25037
|
+
var layerId = layer.layerId,
|
|
25038
|
+
title = layer.title,
|
|
25039
|
+
url = layer.url;
|
|
25040
|
+
var result = gfiResultMap.get(layerId);
|
|
25041
|
+
if (!result) return null;
|
|
25042
|
+
return /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
25043
|
+
key: layerId,
|
|
25044
|
+
sx: {
|
|
25045
|
+
margin: '4px 6px 4px 6px',
|
|
25046
|
+
padding: '6px',
|
|
25047
|
+
backgroundColor: 'geowebColors.cards.cardContainer',
|
|
25048
|
+
border: 'solid 1px',
|
|
25049
|
+
borderColor: 'geowebColors.cards.cardContainerBorder'
|
|
25050
|
+
}
|
|
25051
|
+
}, /*#__PURE__*/React__default["default"].createElement(material.Typography, {
|
|
25052
|
+
variant: "subtitle1"
|
|
25053
|
+
}, title, "\xA0", /*#__PURE__*/React__default["default"].createElement(material.IconButton, {
|
|
25054
|
+
sx: {
|
|
25055
|
+
"float": 'right'
|
|
25056
|
+
},
|
|
25057
|
+
size: "small",
|
|
25058
|
+
"aria-label": "Open layer featureinfo in another page",
|
|
25059
|
+
onClick: function onClick() {
|
|
25060
|
+
window.open(url);
|
|
25061
|
+
}
|
|
25062
|
+
}, /*#__PURE__*/React__default["default"].createElement(theme.ExitDomain, null))), !result.isLoading ? /*#__PURE__*/React__default["default"].createElement("div", {
|
|
25063
|
+
style: {
|
|
25064
|
+
fontSize: '11px',
|
|
25065
|
+
padding: '6px',
|
|
25066
|
+
margin: '0',
|
|
25067
|
+
fontFamily: 'Roboto,Helvetica,Arial,sans-serif',
|
|
25068
|
+
fontWeight: '400',
|
|
25069
|
+
lineHeight: '1.75',
|
|
25070
|
+
letterSpacing: '0.25px'
|
|
25071
|
+
},
|
|
25072
|
+
"data-testid": "layer-result-ready-" + layerId,
|
|
25073
|
+
// eslint-disable-next-line react/no-danger
|
|
25074
|
+
dangerouslySetInnerHTML: {
|
|
25075
|
+
__html: result.data.replace(/<hr\/>/g, '')
|
|
25076
|
+
}
|
|
25077
|
+
}) : /*#__PURE__*/React__default["default"].createElement("div", {
|
|
25078
|
+
"data-testid": "layer-result-loading-" + layerId
|
|
25079
|
+
}, /*#__PURE__*/React__default["default"].createElement(material.CircularProgress, {
|
|
25080
|
+
"data-testid": "spinner",
|
|
25081
|
+
color: "inherit"
|
|
25082
|
+
})));
|
|
25083
|
+
})), hasLayers && !isInitialMapLocationChanged && /*#__PURE__*/React__default["default"].createElement(material.Typography, {
|
|
25084
|
+
"data-testid": "click-on-map-for-info",
|
|
25085
|
+
variant: "subtitle1",
|
|
25086
|
+
sx: {
|
|
25087
|
+
padding: '10px'
|
|
25088
|
+
}
|
|
25089
|
+
}, "Click on the map for info."), !hasLayers && /*#__PURE__*/React__default["default"].createElement(material.Typography, {
|
|
25090
|
+
"data-testid": "NoLayers",
|
|
25091
|
+
variant: "subtitle1",
|
|
25092
|
+
sx: {
|
|
25093
|
+
padding: '10px'
|
|
25094
|
+
}
|
|
25095
|
+
}, "No layers added to the map.")));
|
|
25096
|
+
};
|
|
25097
|
+
|
|
25098
|
+
/* *
|
|
25099
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
25100
|
+
* you may not use this file except in compliance with the License.
|
|
25101
|
+
* You may obtain a copy of the License at
|
|
25102
|
+
*
|
|
25103
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
25104
|
+
*
|
|
25105
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
25106
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
25107
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
25108
|
+
* See the License for the specific language governing permissions and
|
|
25109
|
+
* limitations under the License.
|
|
25110
|
+
*
|
|
25111
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
25112
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
25113
|
+
* */
|
|
25114
|
+
|
|
25115
|
+
var GetFeatureInfoConnect = function GetFeatureInfoConnect(_a) {
|
|
25116
|
+
var _b = _a.showMapId,
|
|
25117
|
+
showMapId = _b === void 0 ? false : _b,
|
|
25118
|
+
mapId = _a.mapId;
|
|
25119
|
+
var dispatch = reactRedux.useDispatch();
|
|
25120
|
+
var getFeatureInfoType = "getfeatureinfo-" + mapId;
|
|
25121
|
+
var isMapPinVisible = reactRedux.useSelector(function (store) {
|
|
25122
|
+
return getDisplayMapPin(store, mapId);
|
|
25123
|
+
});
|
|
25124
|
+
var mapPinLocation = reactRedux.useSelector(function (store) {
|
|
25125
|
+
return getPinLocation(store, mapId);
|
|
25126
|
+
});
|
|
25127
|
+
var toggleMapPinIsVisible = React__namespace.useCallback(function (displayMapPin) {
|
|
25128
|
+
dispatch(mapActions$1.toggleMapPinIsVisible({
|
|
25129
|
+
mapId: mapId,
|
|
25130
|
+
displayMapPin: displayMapPin
|
|
25131
|
+
}));
|
|
25132
|
+
}, [dispatch, mapId]);
|
|
25133
|
+
var mapLayers = reactRedux.useSelector(function (store) {
|
|
25134
|
+
return getMapLayers(store, mapId);
|
|
25135
|
+
});
|
|
25136
|
+
|
|
25137
|
+
var _c = useSetupDialog(getFeatureInfoType),
|
|
25138
|
+
dialogOrder = _c.dialogOrder,
|
|
25139
|
+
isDialogOpen = _c.isDialogOpen,
|
|
25140
|
+
uiSource = _c.uiSource,
|
|
25141
|
+
setDialogOrder = _c.setDialogOrder,
|
|
25142
|
+
onCloseDialog = _c.onCloseDialog;
|
|
25143
|
+
|
|
25144
|
+
React__namespace.useEffect(function () {
|
|
25145
|
+
toggleMapPinIsVisible(isDialogOpen);
|
|
25146
|
+
}, [isDialogOpen, toggleMapPinIsVisible, isMapPinVisible]);
|
|
25147
|
+
return /*#__PURE__*/React__namespace.createElement(GetFeatureInfoDialog, {
|
|
25148
|
+
layers: mapLayers,
|
|
25149
|
+
isOpen: isDialogOpen,
|
|
25150
|
+
onClose: onCloseDialog,
|
|
25151
|
+
mapId: mapId,
|
|
25152
|
+
showMapId: showMapId,
|
|
25153
|
+
onMouseDown: setDialogOrder,
|
|
25154
|
+
order: dialogOrder,
|
|
25155
|
+
source: uiSource,
|
|
25156
|
+
mapPinLocation: mapPinLocation
|
|
25157
|
+
});
|
|
25158
|
+
};
|
|
25159
|
+
|
|
25160
|
+
/* *
|
|
25161
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
25162
|
+
* you may not use this file except in compliance with the License.
|
|
25163
|
+
* You may obtain a copy of the License at
|
|
25164
|
+
*
|
|
25165
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
25166
|
+
*
|
|
25167
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
25168
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
25169
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
25170
|
+
* See the License for the specific language governing permissions and
|
|
25171
|
+
* limitations under the License.
|
|
25172
|
+
*
|
|
25173
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
25174
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
25175
|
+
* */
|
|
25176
|
+
|
|
25177
|
+
var GetFeatureInfoButtonConnect = function GetFeatureInfoButtonConnect(_a) {
|
|
25178
|
+
var mapId = _a.mapId,
|
|
25179
|
+
_b = _a.source,
|
|
25180
|
+
source = _b === void 0 ? 'app' : _b;
|
|
25181
|
+
var dispatch = reactRedux.useDispatch();
|
|
25182
|
+
var gfiType = "getfeatureinfo-" + mapId;
|
|
25183
|
+
var isOpenInStore = reactRedux.useSelector(function (store) {
|
|
25184
|
+
return getisDialogOpen(store, gfiType);
|
|
25185
|
+
});
|
|
25186
|
+
var openGfiDialog = React__namespace.useCallback(function () {
|
|
25187
|
+
dispatch(uiActions.setActiveMapIdForDialog({
|
|
25188
|
+
type: gfiType,
|
|
25189
|
+
mapId: mapId,
|
|
25190
|
+
setOpen: !isOpenInStore,
|
|
25191
|
+
source: source,
|
|
25192
|
+
origin: MapActionOrigin.map
|
|
25193
|
+
}));
|
|
25194
|
+
}, [mapId, dispatch, isOpenInStore, source, gfiType]);
|
|
25195
|
+
return /*#__PURE__*/React__namespace.createElement(MapControlButton, {
|
|
25196
|
+
title: "Get information for a specific location",
|
|
25197
|
+
"data-testid": "open-getfeatureinfo",
|
|
25198
|
+
onClick: openGfiDialog,
|
|
25199
|
+
isActive: isOpenInStore
|
|
25200
|
+
}, /*#__PURE__*/React__namespace.createElement(theme.Info, null));
|
|
25201
|
+
};
|
|
25202
|
+
|
|
24717
25203
|
/* *
|
|
24718
25204
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
24719
25205
|
* you may not use this file except in compliance with the License.
|
|
@@ -24737,7 +25223,8 @@
|
|
|
24737
25223
|
padding: '5px',
|
|
24738
25224
|
zIndex: 50,
|
|
24739
25225
|
color: theme.palette.common.black,
|
|
24740
|
-
whiteSpace: 'nowrap'
|
|
25226
|
+
whiteSpace: 'nowrap',
|
|
25227
|
+
userSelect: 'none'
|
|
24741
25228
|
};
|
|
24742
25229
|
};
|
|
24743
25230
|
|
|
@@ -24782,8 +25269,10 @@
|
|
|
24782
25269
|
shouldShowLayerManager = _a.shouldShowLayerManager,
|
|
24783
25270
|
_q = _a.showClock,
|
|
24784
25271
|
showClock = _q === void 0 ? true : _q,
|
|
25272
|
+
_r = _a.displayGetFeatureInfoButtonInMap,
|
|
25273
|
+
displayGetFeatureInfoButtonInMap = _r === void 0 ? false : _r,
|
|
24785
25274
|
children = _a.children,
|
|
24786
|
-
props = __rest(_a, ["id", "title", "layers", "shouldAutoUpdate", "shouldAnimate", "bbox", "srs", "shouldShowZoomControls", "displayMapPin", "showTimeSlider", "disableTimeSlider", "displayTimeInMap", "displayLayerManagerAndLegendButtonInMap", "displayDimensionSelectButtonInMap", "multiLegend", "shouldShowLayerManager", "showClock", "children"]);
|
|
25275
|
+
props = __rest(_a, ["id", "title", "layers", "shouldAutoUpdate", "shouldAnimate", "bbox", "srs", "shouldShowZoomControls", "displayMapPin", "showTimeSlider", "disableTimeSlider", "displayTimeInMap", "displayLayerManagerAndLegendButtonInMap", "displayDimensionSelectButtonInMap", "multiLegend", "shouldShowLayerManager", "showClock", "displayGetFeatureInfoButtonInMap", "children"]);
|
|
24787
25276
|
|
|
24788
25277
|
var dispatch = reactRedux.useDispatch();
|
|
24789
25278
|
var mapId = React__default["default"].useRef(id || generateMapId()).current;
|
|
@@ -24851,6 +25340,8 @@
|
|
|
24851
25340
|
multiLegend: multiLegend
|
|
24852
25341
|
}), displayDimensionSelectButtonInMap && /*#__PURE__*/React__default["default"].createElement(MultiDimensionSelectMapButtonsConnect, {
|
|
24853
25342
|
mapId: mapId
|
|
25343
|
+
}), displayGetFeatureInfoButtonInMap && /*#__PURE__*/React__default["default"].createElement(GetFeatureInfoButtonConnect, {
|
|
25344
|
+
mapId: mapId
|
|
24854
25345
|
})), !disableTimeSlider && /*#__PURE__*/React__default["default"].createElement(material.Box, {
|
|
24855
25346
|
sx: {
|
|
24856
25347
|
position: 'absolute',
|
|
@@ -24873,6 +25364,9 @@
|
|
|
24873
25364
|
multiLegend: multiLegend
|
|
24874
25365
|
}), showClock && /*#__PURE__*/React__default["default"].createElement(TimeSliderClockConnect, {
|
|
24875
25366
|
mapId: mapId
|
|
25367
|
+
}), displayGetFeatureInfoButtonInMap && /*#__PURE__*/React__default["default"].createElement(GetFeatureInfoConnect, {
|
|
25368
|
+
showMapId: true,
|
|
25369
|
+
mapId: mapId
|
|
24876
25370
|
}), /*#__PURE__*/React__default["default"].createElement(DockedLayerManagerConnect, {
|
|
24877
25371
|
mapId: mapId,
|
|
24878
25372
|
bounds: "parent"
|
|
@@ -25242,7 +25736,8 @@
|
|
|
25242
25736
|
var mapPreset = initialProps.mapPreset;
|
|
25243
25737
|
return /*#__PURE__*/React__default["default"].createElement(ConfigurableMapConnect, __assign({}, mapPreset, {
|
|
25244
25738
|
id: id,
|
|
25245
|
-
"data-testid": "coreConfigurableMapConnect"
|
|
25739
|
+
"data-testid": "coreConfigurableMapConnect",
|
|
25740
|
+
displayGetFeatureInfoButtonInMap: true
|
|
25246
25741
|
}));
|
|
25247
25742
|
}
|
|
25248
25743
|
|