diff --git a/packages/web/src/celldata/MapCellView.svelte b/packages/web/src/celldata/MapCellView.svelte
index 824a080dc..e0d080c5f 100644
--- a/packages/web/src/celldata/MapCellView.svelte
+++ b/packages/web/src/celldata/MapCellView.svelte
@@ -1,152 +1,7 @@
-
{
- await tick();
- map.invalidateSize();
- }}
-/>
+
diff --git a/packages/web/src/datagrid/DataGridCore.svelte b/packages/web/src/datagrid/DataGridCore.svelte
index f2406e4e5..607533ce0 100644
--- a/packages/web/src/datagrid/DataGridCore.svelte
+++ b/packages/web/src/datagrid/DataGridCore.svelte
@@ -112,6 +112,14 @@
onClick: () => getCurrentDataGrid().editJsonDocument(),
});
+ registerCommand({
+ id: 'dataGrid.openSelectionInMap',
+ category: 'Data grid',
+ name: 'Open selection in map',
+ testEnabled: () => getCurrentDataGrid() != null, // ?.openSelectionInMapEnabled(),
+ onClick: () => getCurrentDataGrid().openSelectionInMap(),
+ });
+
registerCommand({
id: 'dataGrid.viewJsonDocument',
category: 'Data grid',
@@ -306,6 +314,8 @@
import { apiCall } from '../utility/api';
import getElectron from '../utility/getElectron';
import { isCtrlOrCommandKey, isMac } from '../utility/common';
+ import { selectionCouldBeShownOnMap } from '../elements/MapView.svelte';
+ import ErrorMessageModal from '../modals/ErrorMessageModal.svelte';
export let onLoadNextData = undefined;
export let grider = undefined;
@@ -530,6 +540,23 @@
openJsonDocument(json);
}
+ export function openSelectionInMap() {
+ const selection = getCellsPublished(selectedCells);
+ if (!selectionCouldBeShownOnMap(selection)) {
+ showModal(ErrorMessageModal, { message: 'There is nothing to be shown on map' });
+ return;
+ }
+ openNewTab({
+ title: 'Map',
+ icon: 'img map',
+ tabComponent: 'MapTab',
+ props: {
+ selection,
+ },
+ });
+ return;
+ }
+
function getSelectedExportableCell() {
const electron = getElectron();
if (electron && selectedCells.length == 1) {
@@ -1426,6 +1453,7 @@
{ command: 'dataGrid.generateSqlFromData' },
{ command: 'dataGrid.openFreeTable' },
{ command: 'dataGrid.openChartFromSelection' },
+ { command: 'dataGrid.openSelectionInMap', hideDisabled: true },
{ placeTag: 'chart' }
);
diff --git a/packages/web/src/elements/MapView.svelte b/packages/web/src/elements/MapView.svelte
new file mode 100644
index 000000000..9a27766d4
--- /dev/null
+++ b/packages/web/src/elements/MapView.svelte
@@ -0,0 +1,164 @@
+
+
+
+
+
{
+ await tick();
+ map.invalidateSize();
+ }}
+/>
diff --git a/packages/web/src/icons/FontIcon.svelte b/packages/web/src/icons/FontIcon.svelte
index f599e019e..c7ac644d5 100644
--- a/packages/web/src/icons/FontIcon.svelte
+++ b/packages/web/src/icons/FontIcon.svelte
@@ -165,6 +165,7 @@
'img sort-asc': 'mdi mdi-sort-alphabetical-ascending color-icon-green',
'img sort-desc': 'mdi mdi-sort-alphabetical-descending color-icon-green',
+ 'img map': 'mdi mdi-map color-icon-blue',
'img reference': 'mdi mdi-link-box',
'img link': 'mdi mdi-link',
diff --git a/packages/web/src/tabs/MapTab.svelte b/packages/web/src/tabs/MapTab.svelte
new file mode 100644
index 000000000..0c21add56
--- /dev/null
+++ b/packages/web/src/tabs/MapTab.svelte
@@ -0,0 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/packages/web/src/tabs/index.js b/packages/web/src/tabs/index.js
index e629a1fbf..ae85d6635 100644
--- a/packages/web/src/tabs/index.js
+++ b/packages/web/src/tabs/index.js
@@ -24,6 +24,7 @@ import * as DiagramTab from './DiagramTab.svelte';
import * as DbKeyDetailTab from './DbKeyDetailTab.svelte';
import * as QueryDataTab from './QueryDataTab.svelte';
import * as ConnectionTab from './ConnectionTab.svelte';
+import * as MapTab from './MapTab.svelte';
export default {
TableDataTab,
@@ -52,4 +53,5 @@ export default {
DbKeyDetailTab,
QueryDataTab,
ConnectionTab,
+ MapTab,
};
diff --git a/packages/web/src/widgets/CellDataWidget.svelte b/packages/web/src/widgets/CellDataWidget.svelte
index 78bc1550b..4d7b9c0a0 100644
--- a/packages/web/src/widgets/CellDataWidget.svelte
+++ b/packages/web/src/widgets/CellDataWidget.svelte
@@ -1,5 +1,5 @@