forked from MapComplete/MapComplete
Add statistics download button
This commit is contained in:
parent
16784270ce
commit
cd867bf2d1
2 changed files with 27 additions and 4 deletions
|
@ -345,11 +345,18 @@ export class GeoOperations {
|
||||||
return <any>way
|
return <any>way
|
||||||
}
|
}
|
||||||
|
|
||||||
public static toCSV(features: Feature[] | FeatureCollection): string {
|
public static toCSV(features: Feature[] | FeatureCollection, options?: {
|
||||||
|
ignoreTags?: RegExp
|
||||||
|
}): string {
|
||||||
const headerValuesSeen = new Set<string>()
|
const headerValuesSeen = new Set<string>()
|
||||||
const headerValuesOrdered: string[] = []
|
const headerValuesOrdered: string[] = []
|
||||||
|
|
||||||
function addH(key) {
|
function addH(key: string) {
|
||||||
|
if(options?.ignoreTags){
|
||||||
|
if(key.match(options.ignoreTags)){
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
if (!headerValuesSeen.has(key)) {
|
if (!headerValuesSeen.has(key)) {
|
||||||
headerValuesSeen.add(key)
|
headerValuesSeen.add(key)
|
||||||
headerValuesOrdered.push(key)
|
headerValuesOrdered.push(key)
|
||||||
|
|
|
@ -16,6 +16,11 @@ import mcChanges from "../../src/assets/generated/themes/mapcomplete-changes.jso
|
||||||
import SvelteUIElement from "./Base/SvelteUIElement"
|
import SvelteUIElement from "./Base/SvelteUIElement"
|
||||||
import Filterview from "./BigComponents/Filterview.svelte"
|
import Filterview from "./BigComponents/Filterview.svelte"
|
||||||
import FilteredLayer from "../Models/FilteredLayer"
|
import FilteredLayer from "../Models/FilteredLayer"
|
||||||
|
import DownloadButton from "./DownloadFlow/DownloadButton.svelte"
|
||||||
|
import { SubtleButton } from "./Base/SubtleButton"
|
||||||
|
import { GeoOperations } from "../Logic/GeoOperations"
|
||||||
|
import { Polygon } from "geojson"
|
||||||
|
import { Feature } from "geojson"
|
||||||
|
|
||||||
class StatsticsForOverviewFile extends Combine {
|
class StatsticsForOverviewFile extends Combine {
|
||||||
constructor(homeUrl: string, paths: string[]) {
|
constructor(homeUrl: string, paths: string[]) {
|
||||||
|
@ -185,6 +190,17 @@ class StatsticsForOverviewFile extends Combine {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
elements.push(new SubtleButton(
|
||||||
|
undefined, "Download as csv"
|
||||||
|
).onClick(() => {
|
||||||
|
const data = GeoOperations.toCSV(overview._meta,
|
||||||
|
{
|
||||||
|
ignoreTags: /^((deletion:node)|(import:node)|(move:node)|(soft-delete:))/
|
||||||
|
})
|
||||||
|
Utils.offerContentsAsDownloadableFile(data , "statistics.csv", {mimetype: "text/csv"})
|
||||||
|
}))
|
||||||
|
|
||||||
return new Combine(elements)
|
return new Combine(elements)
|
||||||
},
|
},
|
||||||
[filteredLayer.currentFilter]
|
[filteredLayer.currentFilter]
|
||||||
|
@ -249,7 +265,7 @@ class ChangesetsOverview {
|
||||||
this._meta = Utils.NoNull(meta)
|
this._meta = Utils.NoNull(meta)
|
||||||
}
|
}
|
||||||
|
|
||||||
public static fromDirtyData(meta: ChangeSetData[]) {
|
public static fromDirtyData(meta: ChangeSetData[]): ChangesetsOverview {
|
||||||
return new ChangesetsOverview(meta?.map((cs) => ChangesetsOverview.cleanChangesetData(cs)))
|
return new ChangesetsOverview(meta?.map((cs) => ChangesetsOverview.cleanChangesetData(cs)))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -301,7 +317,7 @@ class ChangesetsOverview {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
interface ChangeSetData {
|
interface ChangeSetData extends Feature<Polygon> {
|
||||||
id: number
|
id: number
|
||||||
type: "Feature"
|
type: "Feature"
|
||||||
geometry: {
|
geometry: {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue