Themes(onwheels): statistics now don't show too much items, fix #2366

This commit is contained in:
Pieter Vander Vennet 2025-04-07 03:29:27 +02:00
parent 7b7c747fd6
commit 5adf43a335
2 changed files with 8 additions and 22 deletions

View file

@ -25,22 +25,8 @@ export default class GeoIndexedStore implements FeatureSource {
*/ */
public GetFeaturesWithin(bbox: BBox): Feature[] { public GetFeaturesWithin(bbox: BBox): Feature[] {
const bboxFeature = bbox.asGeojsonCached() const bboxFeature = bbox.asGeojsonCached()
return this.features.data.filter((f) => { return this.features.data.filter((f) =>
if (f.geometry.type === "Point") { GeoOperations.completelyWithin(f, bboxFeature))
return bbox.contains(<[number, number]>f.geometry.coordinates)
}
if (f.geometry.type === "LineString") {
const intersection = GeoOperations.intersect(
BBox.get(f).asGeojsonCached(),
bboxFeature
)
return intersection !== undefined
}
if (f.geometry.type === "Polygon" || f.geometry.type === "MultiPolygon") {
return GeoOperations.intersect(f, bboxFeature) !== undefined
}
return GeoOperations.intersect(f, bboxFeature) !== undefined
})
} }
} }

View file

@ -11,12 +11,12 @@
import { AccordionItem } from "flowbite-svelte" import { AccordionItem } from "flowbite-svelte"
import ThemeViewState from "../../Models/ThemeViewState" import ThemeViewState from "../../Models/ThemeViewState"
import DefaultIcon from "../Map/DefaultIcon.svelte" import DefaultIcon from "../Map/DefaultIcon.svelte"
import { Store } from "../../Logic/UIEventSource"
export let layer: LayerConfig export let layer: LayerConfig
export let state: ThemeViewState export let state: ThemeViewState
let bbox = state.mapProperties.bounds let bbox = state.mapProperties.bounds
let elements: Feature[] = state.perLayer.get(layer.id).GetFeaturesWithin($bbox) let elements: Store<Feature[]> = bbox.mapD(bbox => state.perLayer.get(layer.id).GetFeaturesWithin(bbox))
$: elements = state.perLayer.get(layer.id).GetFeaturesWithin($bbox)
let trs = layer.tagRenderings.filter((tr) => tr.question) let trs = layer.tagRenderings.filter((tr) => tr.question)
</script> </script>
@ -31,19 +31,19 @@
<DefaultIcon {layer} /> <DefaultIcon {layer} />
</div> </div>
<Tr t={layer.name} /> <Tr t={layer.name} />
({elements.length} elements in view) ({$elements.length} elements in view)
</div> </div>
{#if elements === undefined} {#if $elements === undefined}
<Loading /> <Loading />
{:else if elements.length === 0} {:else if $elements.length === 0}
No features in view No features in view
{:else} {:else}
<div class="flex w-full flex-wrap gap-x-4 gap-y-4"> <div class="flex w-full flex-wrap gap-x-4 gap-y-4">
{#each trs as tr} {#each trs as tr}
<ToSvelte <ToSvelte
construct={() => construct={() =>
new TagRenderingChart(elements, tr, { new TagRenderingChart($elements, tr, {
chartclasses: "w-full self-center", chartclasses: "w-full self-center",
includeTitle: true, includeTitle: true,
}).SetClass(tr.multiAnswer ? "w-128" : "w-96")} }).SetClass(tr.multiAnswer ? "w-128" : "w-96")}