forked from MapComplete/MapComplete
Improve error messages which are reported upstream
This commit is contained in:
parent
fe57e12881
commit
94390f882b
3 changed files with 68 additions and 68 deletions
|
@ -523,18 +523,12 @@ export class Changes {
|
||||||
const osmObj = await downloader.DownloadObjectAsync(id, 0)
|
const osmObj = await downloader.DownloadObjectAsync(id, 0)
|
||||||
return { id, osmObj }
|
return { id, osmObj }
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this._reportError(
|
const msg = "Could not download OSM-object" +
|
||||||
"Could not download OSM-object" +
|
id +
|
||||||
id +
|
" dropping it from the changes (" +
|
||||||
" dropping it from the changes (" +
|
e +
|
||||||
e +
|
")"
|
||||||
")"
|
this._reportError(msg)
|
||||||
)
|
|
||||||
console.error(
|
|
||||||
"Could not download OSM-object",
|
|
||||||
id,
|
|
||||||
" dropping it from the changes (" + e + ")"
|
|
||||||
)
|
|
||||||
this.errors.data.push(e)
|
this.errors.data.push(e)
|
||||||
this.errors.ping()
|
this.errors.ping()
|
||||||
return undefined
|
return undefined
|
||||||
|
|
|
@ -158,7 +158,7 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
this.featureSwitches = new FeatureSwitchState(layout)
|
this.featureSwitches = new FeatureSwitchState(layout)
|
||||||
this.guistate = new MenuState(
|
this.guistate = new MenuState(
|
||||||
this.featureSwitches.featureSwitchWelcomeMessage.data,
|
this.featureSwitches.featureSwitchWelcomeMessage.data,
|
||||||
layout.id
|
layout.id,
|
||||||
)
|
)
|
||||||
this.map = new UIEventSource<MlMap>(undefined)
|
this.map = new UIEventSource<MlMap>(undefined)
|
||||||
const geolocationState = new GeoLocationState()
|
const geolocationState = new GeoLocationState()
|
||||||
|
@ -174,14 +174,14 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
oauth_token: QueryParameters.GetQueryParameter(
|
oauth_token: QueryParameters.GetQueryParameter(
|
||||||
"oauth_token",
|
"oauth_token",
|
||||||
undefined,
|
undefined,
|
||||||
"Used to complete the login"
|
"Used to complete the login",
|
||||||
),
|
),
|
||||||
})
|
})
|
||||||
this.userRelatedState = new UserRelatedState(
|
this.userRelatedState = new UserRelatedState(
|
||||||
this.osmConnection,
|
this.osmConnection,
|
||||||
layout,
|
layout,
|
||||||
this.featureSwitches,
|
this.featureSwitches,
|
||||||
this.mapProperties
|
this.mapProperties,
|
||||||
)
|
)
|
||||||
this.userRelatedState.fixateNorth.addCallbackAndRunD((fixated) => {
|
this.userRelatedState.fixateNorth.addCallbackAndRunD((fixated) => {
|
||||||
this.mapProperties.allowRotating.setData(fixated !== "yes")
|
this.mapProperties.allowRotating.setData(fixated !== "yes")
|
||||||
|
@ -192,13 +192,13 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
geolocationState,
|
geolocationState,
|
||||||
this.selectedElement,
|
this.selectedElement,
|
||||||
this.mapProperties,
|
this.mapProperties,
|
||||||
this.userRelatedState.gpsLocationHistoryRetentionTime
|
this.userRelatedState.gpsLocationHistoryRetentionTime,
|
||||||
)
|
)
|
||||||
this.geolocationControl = new GeolocationControlState(this.geolocation, this.mapProperties)
|
this.geolocationControl = new GeolocationControlState(this.geolocation, this.mapProperties)
|
||||||
|
|
||||||
this.availableLayers = AvailableRasterLayers.layersAvailableAt(
|
this.availableLayers = AvailableRasterLayers.layersAvailableAt(
|
||||||
this.mapProperties.location,
|
this.mapProperties.location,
|
||||||
this.osmConnection.isLoggedIn
|
this.osmConnection.isLoggedIn,
|
||||||
)
|
)
|
||||||
|
|
||||||
const self = this
|
const self = this
|
||||||
|
@ -210,7 +210,7 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
const isDisplayed = QueryParameters.GetBooleanQueryParameter(
|
const isDisplayed = QueryParameters.GetBooleanQueryParameter(
|
||||||
"overlay-" + rasterInfo.id,
|
"overlay-" + rasterInfo.id,
|
||||||
rasterInfo.defaultState ?? true,
|
rasterInfo.defaultState ?? true,
|
||||||
"Whether or not overlayer layer " + rasterInfo.id + " is shown"
|
"Whether or not overlay layer " + rasterInfo.id + " is shown",
|
||||||
)
|
)
|
||||||
const state = { isDisplayed }
|
const state = { isDisplayed }
|
||||||
overlayLayerStates.set(rasterInfo.id, state)
|
overlayLayerStates.set(rasterInfo.id, state)
|
||||||
|
@ -235,7 +235,7 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
this.osmConnection.Backend(),
|
this.osmConnection.Backend(),
|
||||||
(id) => self.layerState.filteredLayers.get(id).isDisplayed,
|
(id) => self.layerState.filteredLayers.get(id).isDisplayed,
|
||||||
mvtAvailableLayers,
|
mvtAvailableLayers,
|
||||||
this.fullNodeDatabase
|
this.fullNodeDatabase,
|
||||||
)
|
)
|
||||||
|
|
||||||
let currentViewIndex = 0
|
let currentViewIndex = 0
|
||||||
|
@ -253,7 +253,7 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
id: "current_view_" + currentViewIndex,
|
id: "current_view_" + currentViewIndex,
|
||||||
}),
|
}),
|
||||||
]
|
]
|
||||||
})
|
}),
|
||||||
)
|
)
|
||||||
this.featuresInView = new BBoxFeatureSource(layoutSource, this.mapProperties.bounds)
|
this.featuresInView = new BBoxFeatureSource(layoutSource, this.mapProperties.bounds)
|
||||||
|
|
||||||
|
@ -271,19 +271,19 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
featureSwitches: this.featureSwitches,
|
featureSwitches: this.featureSwitches,
|
||||||
},
|
},
|
||||||
layout?.isLeftRightSensitive() ?? false,
|
layout?.isLeftRightSensitive() ?? false,
|
||||||
(e) => this.reportError(e)
|
(e) => this.reportError(e),
|
||||||
)
|
)
|
||||||
this.historicalUserLocations = this.geolocation.historicalUserLocations
|
this.historicalUserLocations = this.geolocation.historicalUserLocations
|
||||||
this.newFeatures = new NewGeometryFromChangesFeatureSource(
|
this.newFeatures = new NewGeometryFromChangesFeatureSource(
|
||||||
this.changes,
|
this.changes,
|
||||||
layoutSource,
|
layoutSource,
|
||||||
this.featureProperties
|
this.featureProperties,
|
||||||
)
|
)
|
||||||
layoutSource.addSource(this.newFeatures)
|
layoutSource.addSource(this.newFeatures)
|
||||||
|
|
||||||
const perLayer = new PerLayerFeatureSourceSplitter(
|
const perLayer = new PerLayerFeatureSourceSplitter(
|
||||||
Array.from(this.layerState.filteredLayers.values()).filter(
|
Array.from(this.layerState.filteredLayers.values()).filter(
|
||||||
(l) => l.layerDef?.source !== null
|
(l) => l.layerDef?.source !== null,
|
||||||
),
|
),
|
||||||
new ChangeGeometryApplicator(this.indexedFeatures, this.changes),
|
new ChangeGeometryApplicator(this.indexedFeatures, this.changes),
|
||||||
{
|
{
|
||||||
|
@ -294,10 +294,10 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
"Got ",
|
"Got ",
|
||||||
features.length,
|
features.length,
|
||||||
"leftover features, such as",
|
"leftover features, such as",
|
||||||
features[0].properties
|
features[0].properties,
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
}
|
},
|
||||||
)
|
)
|
||||||
this.perLayer = perLayer.perLayer
|
this.perLayer = perLayer.perLayer
|
||||||
}
|
}
|
||||||
|
@ -337,12 +337,12 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
this.lastClickObject = new LastClickFeatureSource(
|
this.lastClickObject = new LastClickFeatureSource(
|
||||||
this.layout,
|
this.layout,
|
||||||
this.mapProperties.lastClickLocation,
|
this.mapProperties.lastClickLocation,
|
||||||
this.userRelatedState.addNewFeatureMode
|
this.userRelatedState.addNewFeatureMode,
|
||||||
)
|
)
|
||||||
|
|
||||||
this.osmObjectDownloader = new OsmObjectDownloader(
|
this.osmObjectDownloader = new OsmObjectDownloader(
|
||||||
this.osmConnection.Backend(),
|
this.osmConnection.Backend(),
|
||||||
this.changes
|
this.changes,
|
||||||
)
|
)
|
||||||
|
|
||||||
this.perLayerFiltered = this.showNormalDataOn(this.map)
|
this.perLayerFiltered = this.showNormalDataOn(this.map)
|
||||||
|
@ -353,7 +353,7 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
currentZoom: this.mapProperties.zoom,
|
currentZoom: this.mapProperties.zoom,
|
||||||
layerState: this.layerState,
|
layerState: this.layerState,
|
||||||
bounds: this.visualFeedbackViewportBounds,
|
bounds: this.visualFeedbackViewportBounds,
|
||||||
}
|
},
|
||||||
)
|
)
|
||||||
this.hasDataInView = new NoElementsInViewDetector(this).hasFeatureInView
|
this.hasDataInView = new NoElementsInViewDetector(this).hasFeatureInView
|
||||||
this.imageUploadManager = new ImageUploadManager(
|
this.imageUploadManager = new ImageUploadManager(
|
||||||
|
@ -361,11 +361,11 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
Imgur.singleton,
|
Imgur.singleton,
|
||||||
this.featureProperties,
|
this.featureProperties,
|
||||||
this.osmConnection,
|
this.osmConnection,
|
||||||
this.changes
|
this.changes,
|
||||||
)
|
)
|
||||||
this.favourites = new FavouritesFeatureSource(this)
|
this.favourites = new FavouritesFeatureSource(this)
|
||||||
|
|
||||||
this.featureSummary = this.setupSummaryLayer(new LayerConfig(<LayerConfigJson> summaryLayer, "summaryLayer", true))
|
this.featureSummary = this.setupSummaryLayer(new LayerConfig(<LayerConfigJson>summaryLayer, "summaryLayer", true))
|
||||||
this.toCacheSavers = this.initSaveToLocalStorage()
|
this.toCacheSavers = this.initSaveToLocalStorage()
|
||||||
this.initActors()
|
this.initActors()
|
||||||
this.drawSpecialLayers()
|
this.drawSpecialLayers()
|
||||||
|
@ -404,7 +404,7 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
LayoutSource.fromCacheZoomLevel,
|
LayoutSource.fromCacheZoomLevel,
|
||||||
fs,
|
fs,
|
||||||
this.featureProperties,
|
this.featureProperties,
|
||||||
fs.layer.layerDef.maxAgeOfCache
|
fs.layer.layerDef.maxAgeOfCache,
|
||||||
)
|
)
|
||||||
toLocalStorage.set(layerId, storage)
|
toLocalStorage.set(layerId, storage)
|
||||||
})
|
})
|
||||||
|
@ -417,7 +417,7 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
const doShowLayer = this.mapProperties.zoom.map(
|
const doShowLayer = this.mapProperties.zoom.map(
|
||||||
(z) =>
|
(z) =>
|
||||||
(fs.layer.isDisplayed?.data ?? true) && z >= (fs.layer.layerDef?.minzoom ?? 0),
|
(fs.layer.isDisplayed?.data ?? true) && z >= (fs.layer.layerDef?.minzoom ?? 0),
|
||||||
[fs.layer.isDisplayed]
|
[fs.layer.isDisplayed],
|
||||||
)
|
)
|
||||||
|
|
||||||
if (!doShowLayer.data && this.featureSwitches.featureSwitchFilter.data === false) {
|
if (!doShowLayer.data && this.featureSwitches.featureSwitchFilter.data === false) {
|
||||||
|
@ -434,7 +434,7 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
fs.layer,
|
fs.layer,
|
||||||
fs,
|
fs,
|
||||||
(id) => this.featureProperties.getStore(id),
|
(id) => this.featureProperties.getStore(id),
|
||||||
this.layerState.globalFilters
|
this.layerState.globalFilters,
|
||||||
)
|
)
|
||||||
filteringFeatureSource.set(layerName, filtered)
|
filteringFeatureSource.set(layerName, filtered)
|
||||||
|
|
||||||
|
@ -575,7 +575,7 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
this.selectClosestAtCenter(0)
|
this.selectClosestAtCenter(0)
|
||||||
}
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
for (let i = 1; i < 9; i++) {
|
for (let i = 1; i < 9; i++) {
|
||||||
|
@ -593,7 +593,7 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
onUp: true,
|
onUp: true,
|
||||||
},
|
},
|
||||||
doc,
|
doc,
|
||||||
() => this.selectClosestAtCenter(i - 1)
|
() => this.selectClosestAtCenter(i - 1),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -610,7 +610,7 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
if (this.featureSwitches.featureSwitchBackgroundSelection.data) {
|
if (this.featureSwitches.featureSwitchBackgroundSelection.data) {
|
||||||
this.guistate.backgroundLayerSelectionIsOpened.setData(true)
|
this.guistate.backgroundLayerSelectionIsOpened.setData(true)
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
)
|
)
|
||||||
Hotkeys.RegisterHotkey(
|
Hotkeys.RegisterHotkey(
|
||||||
{
|
{
|
||||||
|
@ -622,14 +622,14 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
if (this.featureSwitches.featureSwitchFilter.data) {
|
if (this.featureSwitches.featureSwitchFilter.data) {
|
||||||
this.guistate.openFilterView()
|
this.guistate.openFilterView()
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
)
|
)
|
||||||
Hotkeys.RegisterHotkey(
|
Hotkeys.RegisterHotkey(
|
||||||
{ shift: "O" },
|
{ shift: "O" },
|
||||||
Translations.t.hotkeyDocumentation.selectMapnik,
|
Translations.t.hotkeyDocumentation.selectMapnik,
|
||||||
() => {
|
() => {
|
||||||
this.mapProperties.rasterLayer.setData(AvailableRasterLayers.osmCarto)
|
this.mapProperties.rasterLayer.setData(AvailableRasterLayers.osmCarto)
|
||||||
}
|
},
|
||||||
)
|
)
|
||||||
const setLayerCategory = (category: EliCategory) => {
|
const setLayerCategory = (category: EliCategory) => {
|
||||||
const available = this.availableLayers.data
|
const available = this.availableLayers.data
|
||||||
|
@ -637,7 +637,7 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
const best = RasterLayerUtils.SelectBestLayerAccordingTo(
|
const best = RasterLayerUtils.SelectBestLayerAccordingTo(
|
||||||
available,
|
available,
|
||||||
category,
|
category,
|
||||||
current.data
|
current.data,
|
||||||
)
|
)
|
||||||
console.log("Best layer for category", category, "is", best.properties.id)
|
console.log("Best layer for category", category, "is", best.properties.id)
|
||||||
current.setData(best)
|
current.setData(best)
|
||||||
|
@ -646,26 +646,26 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
Hotkeys.RegisterHotkey(
|
Hotkeys.RegisterHotkey(
|
||||||
{ nomod: "O" },
|
{ nomod: "O" },
|
||||||
Translations.t.hotkeyDocumentation.selectOsmbasedmap,
|
Translations.t.hotkeyDocumentation.selectOsmbasedmap,
|
||||||
() => setLayerCategory("osmbasedmap")
|
() => setLayerCategory("osmbasedmap"),
|
||||||
)
|
)
|
||||||
|
|
||||||
Hotkeys.RegisterHotkey(
|
Hotkeys.RegisterHotkey(
|
||||||
{ nomod: "M" },
|
{ nomod: "M" },
|
||||||
Translations.t.hotkeyDocumentation.selectMap,
|
Translations.t.hotkeyDocumentation.selectMap,
|
||||||
() => setLayerCategory("map")
|
() => setLayerCategory("map"),
|
||||||
)
|
)
|
||||||
|
|
||||||
Hotkeys.RegisterHotkey(
|
Hotkeys.RegisterHotkey(
|
||||||
{ nomod: "P" },
|
{ nomod: "P" },
|
||||||
Translations.t.hotkeyDocumentation.selectAerial,
|
Translations.t.hotkeyDocumentation.selectAerial,
|
||||||
() => setLayerCategory("photo")
|
() => setLayerCategory("photo"),
|
||||||
)
|
)
|
||||||
Hotkeys.RegisterHotkey(
|
Hotkeys.RegisterHotkey(
|
||||||
{ nomod: "L" },
|
{ nomod: "L" },
|
||||||
Translations.t.hotkeyDocumentation.geolocate,
|
Translations.t.hotkeyDocumentation.geolocate,
|
||||||
() => {
|
() => {
|
||||||
this.geolocationControl.handleClick()
|
this.geolocationControl.handleClick()
|
||||||
}
|
},
|
||||||
)
|
)
|
||||||
return true
|
return true
|
||||||
})
|
})
|
||||||
|
@ -677,7 +677,7 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
Translations.t.hotkeyDocumentation.translationMode,
|
Translations.t.hotkeyDocumentation.translationMode,
|
||||||
() => {
|
() => {
|
||||||
Locale.showLinkToWeblate.setData(!Locale.showLinkToWeblate.data)
|
Locale.showLinkToWeblate.setData(!Locale.showLinkToWeblate.data)
|
||||||
}
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -688,7 +688,7 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
const normalLayers = this.layout.layers.filter(
|
const normalLayers = this.layout.layers.filter(
|
||||||
(l) =>
|
(l) =>
|
||||||
Constants.priviliged_layers.indexOf(<any>l.id) < 0 &&
|
Constants.priviliged_layers.indexOf(<any>l.id) < 0 &&
|
||||||
!l.id.startsWith("note_import")
|
!l.id.startsWith("note_import"),
|
||||||
)
|
)
|
||||||
const maxzoom = Math.min(...normalLayers.map((l) => l.minzoom))
|
const maxzoom = Math.min(...normalLayers.map((l) => l.minzoom))
|
||||||
|
|
||||||
|
@ -696,7 +696,7 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
(l) =>
|
(l) =>
|
||||||
Constants.priviliged_layers.indexOf(<any>l.id) < 0 &&
|
Constants.priviliged_layers.indexOf(<any>l.id) < 0 &&
|
||||||
l.source.geojsonSource === undefined &&
|
l.source.geojsonSource === undefined &&
|
||||||
l.doCount
|
l.doCount,
|
||||||
)
|
)
|
||||||
const summaryTileSource = new SummaryTileSource(
|
const summaryTileSource = new SummaryTileSource(
|
||||||
Constants.SummaryServer,
|
Constants.SummaryServer,
|
||||||
|
@ -705,10 +705,10 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
this.mapProperties,
|
this.mapProperties,
|
||||||
{
|
{
|
||||||
isActive: this.mapProperties.zoom.map((z) => z < maxzoom),
|
isActive: this.mapProperties.zoom.map((z) => z < maxzoom),
|
||||||
}
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
const src =new SummaryTileSourceRewriter(summaryTileSource, this.layerState.filteredLayers)
|
const src = new SummaryTileSourceRewriter(summaryTileSource, this.layerState.filteredLayers)
|
||||||
return src
|
return src
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -727,12 +727,12 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
gps_location_history: this.geolocation.historicalUserLocations,
|
gps_location_history: this.geolocation.historicalUserLocations,
|
||||||
gps_track: this.geolocation.historicalUserLocationsTrack,
|
gps_track: this.geolocation.historicalUserLocationsTrack,
|
||||||
selected_element: new StaticFeatureSource(
|
selected_element: new StaticFeatureSource(
|
||||||
this.selectedElement.map((f) => (f === undefined ? empty : [f]))
|
this.selectedElement.map((f) => (f === undefined ? empty : [f])),
|
||||||
),
|
),
|
||||||
range: new StaticFeatureSource(
|
range: new StaticFeatureSource(
|
||||||
this.mapProperties.maxbounds.map((bbox) =>
|
this.mapProperties.maxbounds.map((bbox) =>
|
||||||
bbox === undefined ? empty : <Feature[]>[bbox.asGeoJson({ id: "range" })]
|
bbox === undefined ? empty : <Feature[]>[bbox.asGeoJson({ id: "range" })],
|
||||||
)
|
),
|
||||||
),
|
),
|
||||||
current_view: this.currentView,
|
current_view: this.currentView,
|
||||||
favourite: this.favourites,
|
favourite: this.favourites,
|
||||||
|
@ -747,7 +747,7 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
ShowDataLayer.showRange(
|
ShowDataLayer.showRange(
|
||||||
this.map,
|
this.map,
|
||||||
new StaticFeatureSource([bbox.asGeoJson({ id: "range" })]),
|
new StaticFeatureSource([bbox.asGeoJson({ id: "range" })]),
|
||||||
this.featureSwitches.featureSwitchIsTesting
|
this.featureSwitches.featureSwitchIsTesting,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
const currentViewLayer = this.layout.layers.find((l) => l.id === "current_view")
|
const currentViewLayer = this.layout.layers.find((l) => l.id === "current_view")
|
||||||
|
@ -761,7 +761,7 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
currentViewLayer,
|
currentViewLayer,
|
||||||
this.layout,
|
this.layout,
|
||||||
this.osmObjectDownloader,
|
this.osmObjectDownloader,
|
||||||
this.featureProperties
|
this.featureProperties,
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -795,7 +795,7 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
selectedElement: this.selectedElement,
|
selectedElement: this.selectedElement,
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
const summaryLayerConfig = new LayerConfig(<LayerConfigJson>summaryLayer, "summaryLayer")
|
const summaryLayerConfig = new LayerConfig(<LayerConfigJson>summaryLayer, "summaryLayer")
|
||||||
new ShowDataLayer(this.map, {
|
new ShowDataLayer(this.map, {
|
||||||
features: specialLayers.summary,
|
features: specialLayers.summary,
|
||||||
layer: summaryLayerConfig,
|
layer: summaryLayerConfig,
|
||||||
|
@ -805,20 +805,20 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
|
|
||||||
const lastClickLayerConfig = new LayerConfig(
|
const lastClickLayerConfig = new LayerConfig(
|
||||||
<LayerConfigJson>last_click_layerconfig,
|
<LayerConfigJson>last_click_layerconfig,
|
||||||
"last_click"
|
"last_click",
|
||||||
)
|
)
|
||||||
const lastClickFiltered =
|
const lastClickFiltered =
|
||||||
lastClickLayerConfig.isShown === undefined
|
lastClickLayerConfig.isShown === undefined
|
||||||
? specialLayers.last_click
|
? specialLayers.last_click
|
||||||
: specialLayers.last_click.features.mapD((fs) =>
|
: specialLayers.last_click.features.mapD((fs) =>
|
||||||
fs.filter((f) => {
|
fs.filter((f) => {
|
||||||
const matches = lastClickLayerConfig.isShown.matchesProperties(
|
const matches = lastClickLayerConfig.isShown.matchesProperties(
|
||||||
f.properties
|
f.properties,
|
||||||
)
|
)
|
||||||
console.log("LastClick ", f, "matches", matches)
|
console.debug("LastClick ", f, "matches", matches)
|
||||||
return matches
|
return matches
|
||||||
})
|
}),
|
||||||
)
|
)
|
||||||
new ShowDataLayer(this.map, {
|
new ShowDataLayer(this.map, {
|
||||||
features: new StaticFeatureSource(lastClickFiltered),
|
features: new StaticFeatureSource(lastClickFiltered),
|
||||||
layer: lastClickLayerConfig,
|
layer: lastClickLayerConfig,
|
||||||
|
@ -863,7 +863,7 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
this.mapProperties.rasterLayer,
|
this.mapProperties.rasterLayer,
|
||||||
this.availableLayers,
|
this.availableLayers,
|
||||||
this.featureSwitches.backgroundLayerId,
|
this.featureSwitches.backgroundLayerId,
|
||||||
this.userRelatedState.preferredBackgroundLayer
|
this.userRelatedState.preferredBackgroundLayer,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -872,8 +872,14 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
||||||
this.selectedElement.setData(this.currentView.features?.data?.[0])
|
this.selectedElement.setData(this.currentView.features?.data?.[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
public async reportError(message: string | Error) {
|
public async reportError(message: string | Error | XMLHttpRequest) {
|
||||||
console.log(">>> Reporting error to", Constants.ErrorReportServer, message)
|
console.log(">>> Reporting error to", Constants.ErrorReportServer, message)
|
||||||
|
|
||||||
|
if ("" + message === "[object XMLHttpRequest]") {
|
||||||
|
const req = <XMLHttpRequest>message
|
||||||
|
message = "XMLHttpRequest with status code " + req.status + ", " + req.statusText
|
||||||
|
}
|
||||||
|
|
||||||
let stacktrace: string = new Error().stack
|
let stacktrace: string = new Error().stack
|
||||||
|
|
||||||
await fetch(Constants.ErrorReportServer, {
|
await fetch(Constants.ErrorReportServer, {
|
||||||
|
|
|
@ -976,7 +976,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
xhr.send(content)
|
xhr.send(content)
|
||||||
xhr.onerror = reject
|
xhr.onerror = (ev: ProgressEvent<EventTarget>) => reject("Could not get "+url+", xhr status code is "+xhr.status+" ("+xhr.statusText+")")
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1069,8 +1069,8 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be
|
||||||
): Promise<{ content: T } | { error: string; url: string; statuscode?: number }> {
|
): Promise<{ content: T } | { error: string; url: string; statuscode?: number }> {
|
||||||
const injected = Utils.injectedDownloads[url]
|
const injected = Utils.injectedDownloads[url]
|
||||||
if (injected !== undefined) {
|
if (injected !== undefined) {
|
||||||
console.log("Using injected resource for test for URL", url)
|
console.debug("Using injected resource for test for URL", url)
|
||||||
return new Promise((resolve) => resolve({ content: injected }))
|
return {content: injected}
|
||||||
}
|
}
|
||||||
const result = await Utils.downloadAdvanced(
|
const result = await Utils.downloadAdvanced(
|
||||||
url,
|
url,
|
||||||
|
|
Loading…
Reference in a new issue