Merge branch 'develop' into feature/station-map
This commit is contained in:
commit
9a557b0bd1
22 changed files with 37 additions and 57 deletions
BIN
Docs/Presentations/2022-11 Foss4G.odp
Normal file
BIN
Docs/Presentations/2022-11 Foss4G.odp
Normal file
Binary file not shown.
BIN
Docs/Presentations/2022-11 Foss4G.pdf
Normal file
BIN
Docs/Presentations/2022-11 Foss4G.pdf
Normal file
Binary file not shown.
12
Docs/Presentations/Foss4G.abstract.txt
Normal file
12
Docs/Presentations/Foss4G.abstract.txt
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
Timing: 25 minutes including questions -> about 15 minutes of presentation
|
||||||
|
|
||||||
|
10minutes questions
|
||||||
|
|
||||||
|
- One slide: What is OSM? Baserules
|
||||||
|
- The problem: WTF is this shit
|
||||||
|
|
||||||
|
- Enter Jos P. who wants to know where the charging stations for ebikes are
|
||||||
|
|
||||||
|
- Many topical maps which can be edited -> MapComplete
|
||||||
|
- Some examples: cyclofix, etymology, waste, benches
|
||||||
|
- Toerisme Vlaanderen
|
Binary file not shown.
|
@ -1,49 +0,0 @@
|
||||||
# What do I want to tell at SOTM '22?
|
|
||||||
|
|
||||||
4 main topics:
|
|
||||||
|
|
||||||
The MapComplete Editor:
|
|
||||||
|
|
||||||
- What is MapComplete? The vision
|
|
||||||
+ Simple to use viewer
|
|
||||||
+ Simple to contribute
|
|
||||||
+ Packed with features under the hood (where applicable)
|
|
||||||
+ Pareto frontier
|
|
||||||
- Projects
|
|
||||||
- some highlights from the stats (etymology, cyclofix)
|
|
||||||
- pin je punt
|
|
||||||
- Imports
|
|
||||||
+ STart with AEDs in Brugge
|
|
||||||
+ GRB
|
|
||||||
+ Pin je punt: map notes
|
|
||||||
- MapComplete and community
|
|
||||||
+ Little "drag" on older contributors (allthough they did a lot of cartographic work)
|
|
||||||
+ Pitfall: eternal september (themes must be good!)
|
|
||||||
+ Pitfall: "obligated mapping"
|
|
||||||
+ Pitfall: should not lose the ghost of OSM
|
|
||||||
+ Small but relatively active community around MC
|
|
||||||
- Build your own theme
|
|
||||||
- Future
|
|
||||||
+ More funded projects?
|
|
||||||
+ Donations welcome
|
|
||||||
+ Move to more traditional satnav?
|
|
||||||
|
|
||||||
MapComplete: introduction, retrospective, projects and community
|
|
||||||
|
|
||||||
## Introduction
|
|
||||||
|
|
||||||
MapComplete is a simple to use OSM-map viewer and map editor. This web-based application has seen a few successful projects and makes on-the-go mapping easy and accessible.
|
|
||||||
|
|
||||||
In this talk, the MapComplete developer will talk about the vision behind mapcomplete, do a retrospective of the first two years; highlight some successful projects (which included data imports) and the impact on the OSM-community in Belgium and beyond.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Building your own theme
|
|
||||||
|
|
||||||
## Intro
|
|
||||||
|
|
||||||
What does it take to build a successful and easy to use editor? How can phrasing, order of question, presenting filters, ... be used to prevent mapping errors?
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
["file-overview.json","missing_editor.json","stats.2020-10.json","stats.2020-11.json","stats.2020-12.json","stats.2020-5.json","stats.2020-6.json","stats.2020-7.json","stats.2020-8.json","stats.2020-9.json","stats.2021-1.json","stats.2021-10.json","stats.2021-11.json","stats.2021-12.json","stats.2021-2.json","stats.2021-3.json","stats.2021-4.json","stats.2021-5.json","stats.2021-6.json","stats.2021-7.json","stats.2021-8.json","stats.2021-9.json","stats.2022-1.json","stats.2022-10.json","stats.2022-11-01.day.json","stats.2022-11-02.day.json","stats.2022-11-03.day.json","stats.2022-11-04.day.json","stats.2022-11-05.day.json","stats.2022-11-06.day.json","stats.2022-11-07.day.json","stats.2022-11-08.day.json","stats.2022-2.json","stats.2022-3.json","stats.2022-4.json","stats.2022-5.json","stats.2022-6.json","stats.2022-7.json","stats.2022-8.json","stats.2022-9.json"]
|
["file-overview.json","missing_editor.json","stats.2020-10.json","stats.2020-11.json","stats.2020-12.json","stats.2020-5.json","stats.2020-6.json","stats.2020-7.json","stats.2020-8.json","stats.2020-9.json","stats.2021-1.json","stats.2021-10.json","stats.2021-11.json","stats.2021-12.json","stats.2021-2.json","stats.2021-3.json","stats.2021-4.json","stats.2021-5.json","stats.2021-6.json","stats.2021-7.json","stats.2021-8.json","stats.2021-9.json","stats.2022-1.json","stats.2022-10.json","stats.2022-11-01.day.json","stats.2022-11-02.day.json","stats.2022-11-03.day.json","stats.2022-11-04.day.json","stats.2022-11-05.day.json","stats.2022-11-06.day.json","stats.2022-11-07.day.json","stats.2022-11-08.day.json","stats.2022-11-09.day.json","stats.2022-11-10.day.json","stats.2022-11-11.day.json","stats.2022-11-12.day.json","stats.2022-11-13.day.json","stats.2022-11-14.day.json","stats.2022-11-15.day.json","stats.2022-11-16.day.json","stats.2022-11-17.day.json","stats.2022-11-18.day.json","stats.2022-11-19.day.json","stats.2022-11-20.day.json","stats.2022-11-21.day.json","stats.2022-11-22.day.json","stats.2022-2.json","stats.2022-3.json","stats.2022-4.json","stats.2022-5.json","stats.2022-6.json","stats.2022-7.json","stats.2022-8.json","stats.2022-9.json"]
|
1
Docs/Tools/stats/stats.2022-11-09.day.json
Normal file
1
Docs/Tools/stats/stats.2022-11-09.day.json
Normal file
File diff suppressed because one or more lines are too long
1
Docs/Tools/stats/stats.2022-11-10.day.json
Normal file
1
Docs/Tools/stats/stats.2022-11-10.day.json
Normal file
File diff suppressed because one or more lines are too long
1
Docs/Tools/stats/stats.2022-11-11.day.json
Normal file
1
Docs/Tools/stats/stats.2022-11-11.day.json
Normal file
File diff suppressed because one or more lines are too long
1
Docs/Tools/stats/stats.2022-11-12.day.json
Normal file
1
Docs/Tools/stats/stats.2022-11-12.day.json
Normal file
File diff suppressed because one or more lines are too long
1
Docs/Tools/stats/stats.2022-11-13.day.json
Normal file
1
Docs/Tools/stats/stats.2022-11-13.day.json
Normal file
File diff suppressed because one or more lines are too long
1
Docs/Tools/stats/stats.2022-11-14.day.json
Normal file
1
Docs/Tools/stats/stats.2022-11-14.day.json
Normal file
File diff suppressed because one or more lines are too long
1
Docs/Tools/stats/stats.2022-11-15.day.json
Normal file
1
Docs/Tools/stats/stats.2022-11-15.day.json
Normal file
File diff suppressed because one or more lines are too long
1
Docs/Tools/stats/stats.2022-11-16.day.json
Normal file
1
Docs/Tools/stats/stats.2022-11-16.day.json
Normal file
File diff suppressed because one or more lines are too long
1
Docs/Tools/stats/stats.2022-11-17.day.json
Normal file
1
Docs/Tools/stats/stats.2022-11-17.day.json
Normal file
File diff suppressed because one or more lines are too long
1
Docs/Tools/stats/stats.2022-11-18.day.json
Normal file
1
Docs/Tools/stats/stats.2022-11-18.day.json
Normal file
File diff suppressed because one or more lines are too long
1
Docs/Tools/stats/stats.2022-11-19.day.json
Normal file
1
Docs/Tools/stats/stats.2022-11-19.day.json
Normal file
File diff suppressed because one or more lines are too long
1
Docs/Tools/stats/stats.2022-11-20.day.json
Normal file
1
Docs/Tools/stats/stats.2022-11-20.day.json
Normal file
File diff suppressed because one or more lines are too long
1
Docs/Tools/stats/stats.2022-11-21.day.json
Normal file
1
Docs/Tools/stats/stats.2022-11-21.day.json
Normal file
File diff suppressed because one or more lines are too long
1
Docs/Tools/stats/stats.2022-11-22.day.json
Normal file
1
Docs/Tools/stats/stats.2022-11-22.day.json
Normal file
File diff suppressed because one or more lines are too long
|
@ -18,7 +18,7 @@ export default class FilteringFeatureSource implements FeatureSourceForLayer, Ti
|
||||||
private readonly state: {
|
private readonly state: {
|
||||||
locationControl: Store<{ zoom: number }>
|
locationControl: Store<{ zoom: number }>
|
||||||
selectedElement: Store<any>
|
selectedElement: Store<any>
|
||||||
globalFilters: Store<{ filter: FilterState }[]>
|
globalFilters?: Store<{ filter: FilterState }[]>
|
||||||
allElements: ElementStorage
|
allElements: ElementStorage
|
||||||
}
|
}
|
||||||
private readonly _alreadyRegistered = new Set<UIEventSource<any>>()
|
private readonly _alreadyRegistered = new Set<UIEventSource<any>>()
|
||||||
|
@ -30,7 +30,7 @@ export default class FilteringFeatureSource implements FeatureSourceForLayer, Ti
|
||||||
locationControl: Store<{ zoom: number }>
|
locationControl: Store<{ zoom: number }>
|
||||||
selectedElement: Store<any>
|
selectedElement: Store<any>
|
||||||
allElements: ElementStorage
|
allElements: ElementStorage
|
||||||
globalFilters: Store<{ filter: FilterState }[]>
|
globalFilters?: Store<{ filter: FilterState }[]>
|
||||||
},
|
},
|
||||||
tileIndex,
|
tileIndex,
|
||||||
upstream: FeatureSourceForLayer,
|
upstream: FeatureSourceForLayer,
|
||||||
|
@ -63,7 +63,7 @@ export default class FilteringFeatureSource implements FeatureSourceForLayer, Ti
|
||||||
self._is_dirty.setData(true)
|
self._is_dirty.setData(true)
|
||||||
})
|
})
|
||||||
|
|
||||||
state.globalFilters.addCallback((_) => {
|
state.globalFilters?.addCallback((_) => {
|
||||||
self.update()
|
self.update()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ export default class FilteringFeatureSource implements FeatureSourceForLayer, Ti
|
||||||
const features: { feature: OsmFeature; freshness: Date }[] =
|
const features: { feature: OsmFeature; freshness: Date }[] =
|
||||||
this.upstream.features.data ?? []
|
this.upstream.features.data ?? []
|
||||||
const includedFeatureIds = new Set<string>()
|
const includedFeatureIds = new Set<string>()
|
||||||
const globalFilters = self.state.globalFilters.data.map((f) => f.filter)
|
const globalFilters = self.state.globalFilters?.data?.map((f) => f.filter)
|
||||||
const newFeatures = (features ?? []).filter((f) => {
|
const newFeatures = (features ?? []).filter((f) => {
|
||||||
self.registerCallback(f.feature)
|
self.registerCallback(f.feature)
|
||||||
|
|
||||||
|
@ -98,7 +98,7 @@ export default class FilteringFeatureSource implements FeatureSourceForLayer, Ti
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const filter of globalFilters) {
|
for (const filter of (globalFilters ?? [])) {
|
||||||
const neededTags: TagsFilter = filter?.currentFilter
|
const neededTags: TagsFilter = filter?.currentFilter
|
||||||
if (
|
if (
|
||||||
neededTags !== undefined &&
|
neededTags !== undefined &&
|
||||||
|
|
|
@ -128,7 +128,7 @@ class MassAction extends Combine {
|
||||||
},
|
},
|
||||||
/*
|
/*
|
||||||
{
|
{
|
||||||
// This was a one-off for one of the first imports
|
// This was a one-off for one of the first imports
|
||||||
value:{
|
value:{
|
||||||
predicate: p => p.status === "open" && p.comments[0].text.split("\n").find(l => l.startsWith("note=")) !== undefined,
|
predicate: p => p.status === "open" && p.comments[0].text.split("\n").find(l => l.startsWith("note=")) !== undefined,
|
||||||
action: async p => {
|
action: async p => {
|
||||||
|
@ -440,7 +440,10 @@ class ImportInspector extends VariableUiElement {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
// We only care about the properties here
|
// We only care about the properties here
|
||||||
const props: NoteProperties[] = notes["success"].features.map((f) => f.properties)
|
let props: NoteProperties[] = notes["success"].features.map((f) => f.properties)
|
||||||
|
if(userDetails["uid"]){
|
||||||
|
props = props.filter(n => n.comments[0].uid === userDetails["uid"])
|
||||||
|
}
|
||||||
const perBatch: NoteState[][] = Array.from(
|
const perBatch: NoteState[][] = Array.from(
|
||||||
ImportInspector.SplitNotesIntoBatches(props).values()
|
ImportInspector.SplitNotesIntoBatches(props).values()
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue