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[] {
const bboxFeature = bbox.asGeojsonCached()
return this.features.data.filter((f) => {
if (f.geometry.type === "Point") {
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
})
return this.features.data.filter((f) =>
GeoOperations.completelyWithin(f, bboxFeature))
}
}

View file

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