forked from MapComplete/MapComplete
		
	Fix loading of day-statistic files
This commit is contained in:
		
							parent
							
								
									5e291cda24
								
							
						
					
					
						commit
						640ff8e382
					
				
					 1 changed files with 56 additions and 13 deletions
				
			
		|  | @ -1,26 +1,27 @@ | ||||||
| /** | /** | ||||||
|  * The statistics-gui shows statistics from previous MapComplete-edits |  * The statistics-gui shows statistics from previous MapComplete-edits | ||||||
|  */ |  */ | ||||||
| import { UIEventSource } from "../Logic/UIEventSource" | import {UIEventSource} from "../Logic/UIEventSource" | ||||||
| import { VariableUiElement } from "./Base/VariableUIElement" | import {VariableUiElement} from "./Base/VariableUIElement" | ||||||
| import Loading from "./Base/Loading" | import Loading from "./Base/Loading" | ||||||
| import { Utils } from "../Utils" | import {Utils} from "../Utils" | ||||||
| import Combine from "./Base/Combine" | import Combine from "./Base/Combine" | ||||||
| import { StackedRenderingChart } from "./BigComponents/TagRenderingChart" | import {StackedRenderingChart} from "./BigComponents/TagRenderingChart" | ||||||
| import { LayerFilterPanel } from "./BigComponents/FilterView" | import {LayerFilterPanel} from "./BigComponents/FilterView" | ||||||
| import { AllKnownLayouts } from "../Customizations/AllKnownLayouts" | import {AllKnownLayouts} from "../Customizations/AllKnownLayouts" | ||||||
| import MapState from "../Logic/State/MapState" | import MapState from "../Logic/State/MapState" | ||||||
| import BaseUIElement from "./BaseUIElement" | import BaseUIElement from "./BaseUIElement" | ||||||
| import Title from "./Base/Title" | import Title from "./Base/Title" | ||||||
| import { FixedUiElement } from "./Base/FixedUiElement" | import { FixedUiElement } from "./Base/FixedUiElement" | ||||||
| import UserDetails from "../Logic/Osm/OsmConnection"; | import List from "./Base/List"; | ||||||
| 
 | 
 | ||||||
| class StatisticsForOverviewFile extends Combine { | class StatisticsForOverviewFile extends Combine { | ||||||
|  | 
 | ||||||
|     constructor(homeUrl: string, paths: string[]) { |     constructor(homeUrl: string, paths: string[]) { | ||||||
|         paths = paths.filter(p => !p.endsWith("file-overview.json")) |         paths = paths.filter(p => !p.endsWith("file-overview.json")) | ||||||
|         const layer = AllKnownLayouts.allKnownLayouts.get("mapcomplete-changes").layers[0] |         const layer = AllKnownLayouts.allKnownLayouts.get("mapcomplete-changes").layers[0] | ||||||
|         const filteredLayer = MapState.InitializeFilteredLayers( |         const filteredLayer = MapState.InitializeFilteredLayers( | ||||||
|             { id: "statistics-view", layers: [layer] }, |             {id: "statistics-view", layers: [layer]}, | ||||||
|             undefined |             undefined | ||||||
|         )[0] |         )[0] | ||||||
|         const filterPanel = new LayerFilterPanel(undefined, filteredLayer) |         const filterPanel = new LayerFilterPanel(undefined, filteredLayer) | ||||||
|  | @ -33,14 +34,14 @@ class StatisticsForOverviewFile extends Combine { | ||||||
|                 continue |                 continue | ||||||
|             } |             } | ||||||
|             Utils.downloadJson(homeUrl + filepath).then((data) => { |             Utils.downloadJson(homeUrl + filepath).then((data) => { | ||||||
|                 if(data === undefined ){ |                 if (data === undefined) { | ||||||
|                     return |                     return | ||||||
|                 } |                 } | ||||||
|                 if(data.features === undefined){ |                 if (data.features === undefined) { | ||||||
|                     data.features = data |                     data.features = data | ||||||
|                 } |                 } | ||||||
|                 data?.features?.forEach((item) => { |                 data?.features?.forEach((item) => { | ||||||
|                     item.properties = { ...item.properties, ...item.properties.metadata } |                     item.properties = {...item.properties, ...item.properties.metadata} | ||||||
|                     delete item.properties.metadata |                     delete item.properties.metadata | ||||||
|                 }) |                 }) | ||||||
|                 downloaded.data.push(data) |                 downloaded.data.push(data) | ||||||
|  | @ -54,6 +55,7 @@ class StatisticsForOverviewFile extends Combine { | ||||||
|             ) |             ) | ||||||
|         ) |         ) | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|         super([ |         super([ | ||||||
|             filterPanel, |             filterPanel, | ||||||
|             new VariableUiElement( |             new VariableUiElement( | ||||||
|  | @ -94,7 +96,36 @@ class StatisticsForOverviewFile extends Combine { | ||||||
|                         const trs = layer.tagRenderings.filter( |                         const trs = layer.tagRenderings.filter( | ||||||
|                             (tr) => tr.mappings?.length > 0 || tr.freeform?.key !== undefined |                             (tr) => tr.mappings?.length > 0 || tr.freeform?.key !== undefined | ||||||
|                         ) |                         ) | ||||||
|                         const elements: BaseUIElement[] = [] | 
 | ||||||
|  |                         const allKeys = new Set<string>() | ||||||
|  |                         for (const cs of overview._meta) { | ||||||
|  |                             for (const propertiesKey in cs.properties) { | ||||||
|  |                                 allKeys.add(propertiesKey) | ||||||
|  |                             } | ||||||
|  |                         } | ||||||
|  |                         console.log("All keys:", allKeys) | ||||||
|  | 
 | ||||||
|  |                         const valuesToSum = [ | ||||||
|  |                             "answer", | ||||||
|  |                             "move", | ||||||
|  |                             "deletion", | ||||||
|  |                             "add-image", | ||||||
|  |                             "plantnet-ai-detection", | ||||||
|  |                             "import", | ||||||
|  |                             "conflation", | ||||||
|  |                             "link-image", | ||||||
|  |                             "soft-delete"] | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |                         const elements: BaseUIElement[] = [ | ||||||
|  |                             new Title("General statistics"), | ||||||
|  |                             new Combine([ | ||||||
|  |                                 overview._meta.length + " changesets match the filters", | ||||||
|  |                                 new List(valuesToSum.map(key => key + ": " + overview.sum(key))) | ||||||
|  |                             ]).SetClass("flex flex-col border rounded-xl"), | ||||||
|  | 
 | ||||||
|  |                             new Title("Breakdown") | ||||||
|  |                         ] | ||||||
|                         for (const tr of trs) { |                         for (const tr of trs) { | ||||||
|                             let total = undefined |                             let total = undefined | ||||||
|                             if (tr.freeform?.key !== undefined) { |                             if (tr.freeform?.key !== undefined) { | ||||||
|  | @ -197,6 +228,17 @@ class ChangesetsOverview { | ||||||
|         return new ChangesetsOverview(this._meta.filter(predicate)) |         return new ChangesetsOverview(this._meta.filter(predicate)) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     public sum(key: string): number { | ||||||
|  |         let s = 0 | ||||||
|  |         for (const feature of this._meta) { | ||||||
|  |             const parsed = Number(feature[key]) | ||||||
|  |             if (!isNaN(parsed)) { | ||||||
|  |                 s += parsed | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return s | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     private static cleanChangesetData(cs: ChangeSetData): ChangeSetData { |     private static cleanChangesetData(cs: ChangeSetData): ChangeSetData { | ||||||
|         if (cs === undefined) { |         if (cs === undefined) { | ||||||
|             return undefined |             return undefined | ||||||
|  | @ -222,7 +264,8 @@ class ChangesetsOverview { | ||||||
|         } |         } | ||||||
|         try { |         try { | ||||||
|             cs.properties.host = new URL(cs.properties.host).host |             cs.properties.host = new URL(cs.properties.host).host | ||||||
|         } catch (e) {} |         } catch (e) { | ||||||
|  |         } | ||||||
|         return cs |         return cs | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue