forked from MapComplete/MapComplete
		
	Themes(onwheels): statistics now don't show too much items, fix #2366
This commit is contained in:
		
							parent
							
								
									7b7c747fd6
								
							
						
					
					
						commit
						5adf43a335
					
				
					 2 changed files with 8 additions and 22 deletions
				
			
		| 
						 | 
					@ -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
 | 
					 | 
				
			||||||
        })
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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")}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue