Rewordings on etymology theme, fix bug where data doesn't load

This commit is contained in:
pietervdvn 2021-10-18 18:54:36 +02:00
parent 69254800bc
commit c1d21fcbe5
6 changed files with 20 additions and 16 deletions

View file

@ -28,6 +28,17 @@ import {Tiles} from "../../Models/TileRange";
import TileFreshnessCalculator from "./TileFreshnessCalculator"; import TileFreshnessCalculator from "./TileFreshnessCalculator";
/**
* The features pipeline ties together a myriad of various datasources:
*
* - The Overpass-API
* - The OSM-API
* - Third-party geojson files, either sliced or directly.
*
* In order to truly understand this class, please have a look at the following diagram: https://cdn-images-1.medium.com/fit/c/800/618/1*qTK1iCtyJUr4zOyw4IFD7A.jpeg
*
*
*/
export default class FeaturePipeline { export default class FeaturePipeline {
public readonly sufficientlyZoomed: UIEventSource<boolean>; public readonly sufficientlyZoomed: UIEventSource<boolean>;
@ -110,7 +121,7 @@ export default class FeaturePipeline {
handleFeatureSource(srcFiltered) handleFeatureSource(srcFiltered)
self.somethingLoaded.setData(true) self.somethingLoaded.setData(true)
self.freshnesses.get(src.layer.layerDef.id).addTileLoad(src.tileIndex, new Date()) // We do not mark as visited here, this is the responsability of the code near the actual loader (e.g. overpassLoader and OSMApiFeatureLoader)
}; };
@ -190,6 +201,7 @@ export default class FeaturePipeline {
markTileVisited: (tileId) => markTileVisited: (tileId) =>
state.filteredLayers.data.forEach(flayer => { state.filteredLayers.data.forEach(flayer => {
SaveTileToLocalStorageActor.MarkVisited(flayer.layerDef.id, tileId, new Date()) SaveTileToLocalStorageActor.MarkVisited(flayer.layerDef.id, tileId, new Date())
self.freshnesses.get(flayer.layerDef.id).addTileLoad(tileId, new Date())
}) })
}) })
@ -277,7 +289,6 @@ export default class FeaturePipeline {
private getNeededTilesFromOsm(isSufficientlyZoomed: UIEventSource<boolean>): UIEventSource<number[]> { private getNeededTilesFromOsm(isSufficientlyZoomed: UIEventSource<boolean>): UIEventSource<number[]> {
const self = this const self = this
return this.state.currentBounds.map(bbox => { return this.state.currentBounds.map(bbox => {
console.log("Current bbox is", bbox)
if (bbox === undefined) { if (bbox === undefined) {
return [] return []
} }
@ -320,18 +331,14 @@ export default class FeaturePipeline {
} }
let zoom = state.locationControl.data.zoom let zoom = state.locationControl.data.zoom
if (zoom < minzoom) { if (zoom < minzoom) {
// We are zoomed out over the zoomlevel of any layer
return false; return false;
} }
if (zoom > 16) {
zoom = 16
}
if (zoom < 8) {
zoom = zoom + 2
}
const range = bbox.containingTileRange(zoom) const range = bbox.containingTileRange(zoom)
if (range.total >= 5000) { if (range.total >= 5000) {
return false // Let's assume we don't have so much data cached
return true
} }
const self = this; const self = this;
const allFreshnesses = Tiles.MapRange(range, (x, y) => self.freshnessForVisibleLayers(zoom, x, y)) const allFreshnesses = Tiles.MapRange(range, (x, y) => self.freshnessForVisibleLayers(zoom, x, y))

View file

@ -19,7 +19,6 @@ export default class TileFreshnessCalculator {
return; return;
} }
this.freshnesses.set(tileId, freshness) this.freshnesses.set(tileId, freshness)
// Do we have freshness for the neighbouring tiles? If so, we can mark the tile above as loaded too! // Do we have freshness for the neighbouring tiles? If so, we can mark the tile above as loaded too!
let [z, x, y] = Tiles.tile_from_index(tileId) let [z, x, y] = Tiles.tile_from_index(tileId)

View file

@ -1,7 +1,6 @@
import {Utils} from "../../Utils"; import {Utils} from "../../Utils";
import {UIEventSource} from "../UIEventSource"; import {UIEventSource} from "../UIEventSource";
export class WikidataResponse { export class WikidataResponse {
public readonly id: string public readonly id: string
public readonly labels: Map<string, string> public readonly labels: Map<string, string>
@ -61,7 +60,6 @@ export class WikidataResponse {
commons commons
) )
} }
static extractClaims(claimsJson: any): Map<string, Set<string>> { static extractClaims(claimsJson: any): Map<string, Set<string>> {

View file

@ -9,8 +9,8 @@
"nl": "Wat is de oorsprong van een plaatsnaam?" "nl": "Wat is de oorsprong van een plaatsnaam?"
}, },
"description": { "description": {
"en": "On this map, you can see what an object is named after. The streets, buildings, ... come from OpenStreetMap which got linked with Wikidata. The information comes from Wpikipedia.", "en": "On this map, you can see what an object is named after. The streets, buildings, ... come from OpenStreetMap which got linked with Wikidata. In the popup, you'll see the Wikipedia article (if it exists) or a wikidata box of what the object is named after. If the object itself has a wikipedia page, that'll be shown too.<br/><br/><b>You can help contribute too!</b>Zoom in enough and <i>all</i> streets will show up. You can click one and a Wikidata-search box will popup. With a few clicks, you can add an etymology link. Note that you need a free OpenStreetMap account to do this.",
"nl": "Op deze kaart zie je waar een plaats naar is vernoemd. De straten, gebouwen, ... komen uit OpenStreetMap, waar een link naar Wikidata werd gelegd. De informatie komt uit wikipedia." "nl": "Op deze kaart zie je waar een plaats naar is vernoemd. De straten, gebouwen, ... komen uit OpenStreetMap, waar een link naar Wikidata werd gelegd. In de popup zie je het Wikipedia-artikel van hetgeen naarwaar het vernoemd is of de Wikidata-box.<br/><br/><b>Je kan zelf ook meehelpen!</b>Als je ver inzoomt, krijg je alle straten te zien. Klik je een straat aan, dan krijg je een zoekfunctie waarmee je snel een nieuwe link kan leggen. Je hebt hiervoor een gratis OpenStreetMap account nodig."
}, },
"language": [ "language": [
"en", "en",

View file

@ -669,7 +669,7 @@
"title": "Drinking Water" "title": "Drinking Water"
}, },
"etymology": { "etymology": {
"description": "On this map, you can see what an object is named after. The streets, buildings, ... come from OpenStreetMap which got linked with Wikidata. The information comes from Wpikipedia.", "description": "On this map, you can see what an object is named after. The streets, buildings, ... come from OpenStreetMap which got linked with Wikidata. In the popup, you'll see the Wikipedia article (if it exists) or a wikidata box of what the object is named after. If the object itself has a wikipedia page, that'll be shown too.<br/><br/><b>You can help contribute too!</b>Zoom in enough and <i>all</i> streets will show up. You can click one and a Wikidata-search box will popup. With a few clicks, you can add an etymology link. Note that you need a free OpenStreetMap account to do this.",
"layers": { "layers": {
"1": { "1": {
"override": { "override": {

View file

@ -550,7 +550,7 @@
"title": "Drinkwaterpunten" "title": "Drinkwaterpunten"
}, },
"etymology": { "etymology": {
"description": "Op deze kaart zie je waar een plaats naar is vernoemd. De straten, gebouwen, ... komen uit OpenStreetMap, waar een link naar Wikidata werd gelegd. De informatie komt uit wikipedia.", "description": "Op deze kaart zie je waar een plaats naar is vernoemd. De straten, gebouwen, ... komen uit OpenStreetMap, waar een link naar Wikidata werd gelegd. In de popup zie je het Wikipedia-artikel van hetgeen naarwaar het vernoemd is of de Wikidata-box.<br/><br/><b>Je kan zelf ook meehelpen!</b>Als je ver inzoomt, krijg je alle straten te zien. Klik je een straat aan, dan krijg je een zoekfunctie waarmee je snel een nieuwe link kan leggen. Je hebt hiervoor een gratis OpenStreetMap account nodig.",
"layers": { "layers": {
"1": { "1": {
"override": { "override": {