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 @@