Keep national coverage selection available
This commit is contained in:
@@ -66,6 +66,9 @@
|
|||||||
properties exposed by the live NGI GeoPackage.
|
properties exposed by the live NGI GeoPackage.
|
||||||
- Hardened shared AOI geometry normalization to persist valid 2D polygons when
|
- Hardened shared AOI geometry normalization to persist valid 2D polygons when
|
||||||
an authoritative source supplies harmless zero-valued Z coordinates.
|
an authoritative source supplies harmless zero-valued Z coordinates.
|
||||||
|
- Kept map rectangle and full-area selection available for coverage inspection
|
||||||
|
when a selected national theme has not yet been materialized, without
|
||||||
|
querying an unrelated active dataset.
|
||||||
|
|
||||||
## Sprint 240 Operational forest, agriculture, nature and soil themes (2026-07-17)
|
## Sprint 240 Operational forest, agriculture, nature and soil themes (2026-07-17)
|
||||||
|
|
||||||
|
|||||||
@@ -210,3 +210,5 @@ def test_frontend_prefers_materialized_national_workspace_and_resolves_drawn_bbo
|
|||||||
assert "externalApi.resolveCoverage" in coverage_hook
|
assert "externalApi.resolveCoverage" in coverage_hook
|
||||||
assert "coverage.outside_supported_scope" in map_workspace
|
assert "coverage.outside_supported_scope" in map_workspace
|
||||||
assert "coverageStatusLabel" in map_workspace
|
assert "coverageStatusLabel" in map_workspace
|
||||||
|
assert "coverageSelectionAvailable" in map_workspace
|
||||||
|
assert "activeThemeAvailable && !regionalPartitionedThemeActive" in map_workspace
|
||||||
|
|||||||
@@ -35,6 +35,11 @@
|
|||||||
a separate live-only PostGIS constraint: AdminVector AOI boundaries carry a
|
a separate live-only PostGIS constraint: AdminVector AOI boundaries carry a
|
||||||
zero-valued Z coordinate while `areas.geometry` is intentionally 2D.
|
zero-valued Z coordinate while `areas.geometry` is intentionally 2D.
|
||||||
Shared AOI normalization now removes Z before validation and persistence.
|
Shared AOI normalization now removes Z before validation and persistence.
|
||||||
|
- Live API persistence subsequently completed with one national workspace,
|
||||||
|
eight scope areas and six ready authoritative datasets. A second operator
|
||||||
|
run reused the same project and dataset identifiers. Browser acceptance then
|
||||||
|
exposed and closed a map guard that had prevented coverage-only selection
|
||||||
|
when the chosen theme was honestly unavailable.
|
||||||
|
|
||||||
- Froze the RC geography as all Belgian land plus the separately labelled
|
- Froze the RC geography as all Belgian land plus the separately labelled
|
||||||
territorial sea, EEZ and continental shelf.
|
territorial sea, EEZ and continental shelf.
|
||||||
|
|||||||
@@ -974,6 +974,7 @@ export function MapWorkspace({
|
|||||||
const onDemandThemeActive = analysisMode === 'current' && Boolean(activeOnDemandMapProduct)
|
const onDemandThemeActive = analysisMode === 'current' && Boolean(activeOnDemandMapProduct)
|
||||||
const regionalOnDemandThemeActive = regionalScopeSelected && onDemandThemeActive
|
const regionalOnDemandThemeActive = regionalScopeSelected && onDemandThemeActive
|
||||||
const activeThemeAvailable = Boolean(activeThemeDataset) || onDemandThemeActive
|
const activeThemeAvailable = Boolean(activeThemeDataset) || onDemandThemeActive
|
||||||
|
const coverageSelectionAvailable = analysisMode === 'current' && Boolean(selectedProjectId && selectedMapArea)
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (
|
if (
|
||||||
@@ -1525,7 +1526,7 @@ export function MapWorkspace({
|
|||||||
const analyzeSelection = async (bbox: VectorSelectionBBox, areaId?: string) => {
|
const analyzeSelection = async (bbox: VectorSelectionBBox, areaId?: string) => {
|
||||||
setSelectionBbox(bbox)
|
setSelectionBbox(bbox)
|
||||||
const tasks: Array<Promise<unknown>> = [loadAllThemeResults(bbox, areaId)]
|
const tasks: Array<Promise<unknown>> = [loadAllThemeResults(bbox, areaId)]
|
||||||
if (!regionalPartitionedThemeActive && !onDemandThemeActive) {
|
if (activeThemeAvailable && !regionalPartitionedThemeActive && !onDemandThemeActive) {
|
||||||
tasks.push(onRunMapSelectionExtract(bbox, areaId))
|
tasks.push(onRunMapSelectionExtract(bbox, areaId))
|
||||||
}
|
}
|
||||||
if (analysisMode === 'evolution' && earlierDatasetId && laterDatasetId) {
|
if (analysisMode === 'evolution' && earlierDatasetId && laterDatasetId) {
|
||||||
@@ -1914,6 +1915,8 @@ export function MapWorkspace({
|
|||||||
<p>
|
<p>
|
||||||
{bboxSelectionMode
|
{bboxSelectionMode
|
||||||
? 'Sleep nu een rechthoek op de kaart.'
|
? 'Sleep nu een rechthoek op de kaart.'
|
||||||
|
: !activeThemeAvailable
|
||||||
|
? 'Teken een rechthoek om de databeschikbaarheid voor dit gebied te controleren.'
|
||||||
: regionalRasterThemeActive
|
: regionalRasterThemeActive
|
||||||
? 'Teken een rechthoek; de juiste gemeentelijke rasters worden automatisch gecombineerd.'
|
? 'Teken een rechthoek; de juiste gemeentelijke rasters worden automatisch gecombineerd.'
|
||||||
: onDemandThemeActive
|
: onDemandThemeActive
|
||||||
@@ -1927,7 +1930,7 @@ export function MapWorkspace({
|
|||||||
<div className="geo-map-actions">
|
<div className="geo-map-actions">
|
||||||
<button
|
<button
|
||||||
className={bboxSelectionMode ? 'primary-action geo-draw-active' : 'primary-action'}
|
className={bboxSelectionMode ? 'primary-action geo-draw-active' : 'primary-action'}
|
||||||
disabled={!activeThemeAvailable || (analysisMode === 'evolution' && activeTemporalSeries.length < 2) || mapSelectionLoading || themeResultsLoading}
|
disabled={(!activeThemeAvailable && !coverageSelectionAvailable) || (analysisMode === 'evolution' && activeTemporalSeries.length < 2) || mapSelectionLoading || themeResultsLoading}
|
||||||
type="button"
|
type="button"
|
||||||
onClick={startBboxSelection}
|
onClick={startBboxSelection}
|
||||||
>
|
>
|
||||||
@@ -1935,7 +1938,7 @@ export function MapWorkspace({
|
|||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
className="secondary-action"
|
className="secondary-action"
|
||||||
disabled={!activeThemeAvailable || regionalRasterThemeActive || regionalOnDemandThemeActive || (analysisMode === 'evolution' && activeTemporalSeries.length < 2) || !selectedAreaBbox || mapSelectionLoading || themeResultsLoading}
|
disabled={(!activeThemeAvailable && !coverageSelectionAvailable) || regionalRasterThemeActive || regionalOnDemandThemeActive || (analysisMode === 'evolution' && activeTemporalSeries.length < 2) || !selectedAreaBbox || mapSelectionLoading || themeResultsLoading}
|
||||||
type="button"
|
type="button"
|
||||||
title={
|
title={
|
||||||
regionalRasterThemeActive || regionalOnDemandThemeActive
|
regionalRasterThemeActive || regionalOnDemandThemeActive
|
||||||
|
|||||||
Reference in New Issue
Block a user