Small tweaks to attribution panel

This commit is contained in:
pietervdvn 2021-04-09 17:56:13 +02:00
parent c78f8f6cdc
commit d072552043
7 changed files with 27 additions and 56 deletions

View file

@ -9,6 +9,7 @@ import {Utils} from "../../Utils";
export default class LayoutConfig { export default class LayoutConfig {
public readonly id: string; public readonly id: string;
public readonly maintainer: string; public readonly maintainer: string;
public readonly credits?: string;
public readonly changesetmessage?: string; public readonly changesetmessage?: string;
public readonly version: string; public readonly version: string;
public readonly language: string[]; public readonly language: string[];
@ -48,6 +49,7 @@ export default class LayoutConfig {
this.id = json.id; this.id = json.id;
context = (context ?? "") + "." + this.id; context = (context ?? "") + "." + this.id;
this.maintainer = json.maintainer; this.maintainer = json.maintainer;
this.credits = json.credits;
this.changesetmessage = json.changesetmessage; this.changesetmessage = json.changesetmessage;
this.version = json.version; this.version = json.version;
this.language = []; this.language = [];

View file

@ -24,6 +24,12 @@ export interface LayoutConfigJson {
* 'cyclestreets' which become 'cyclestreets.html' * 'cyclestreets' which become 'cyclestreets.html'
*/ */
id: string; id: string;
/**
* Who helped to create this theme and should be attributed?
*/
credits?: string;
/** /**
* Who does maintian this preset? * Who does maintian this preset?
*/ */

View file

@ -297,7 +297,7 @@ export class InitUiElements {
copyrightNotice, copyrightNotice,
new MapControlButton(Svg.osm_copyright_svg()), new MapControlButton(Svg.osm_copyright_svg()),
copyrightNotice.isShown copyrightNotice.isShown
).SetClass("p-0.5 md:hidden") ).SetClass("p-0.5")
new Combine([copyrightButton, checkbox]) new Combine([copyrightButton, checkbox])
.AttachTo("bottom-left"); .AttachTo("bottom-left");

View file

@ -142,49 +142,9 @@ Whenever a change is made -even adding a single tag- the change is uploaded into
Note that changesets are closed automatically after one hour of inactivity, so we don't have to worry about closing them. Note that changesets are closed automatically after one hour of inactivity, so we don't have to worry about closing them.
### Query parameters # Documentation
By adding extra query parameters, more options are available to influence: All documentation can be found in [here](Docs/)
**test**: If true, 'dryrun' mode is activated. The app will behave as normal, except that changes to OSM will be printed onto the console instead of actually uploaded to osm.org (default value: _false_)
**layout**: The layout to load into MapComplete (default value: _bookcases_)
**userlayout**: undefined (default value: _false_)
**layer-control-toggle**: Wether or not the layer control is shown (default value: _false_)
**tab**: The tab that is shown in the welcome-message. 0 = the explanation of the theme,1 = OSM-credits, 2 = sharescreen, 3 = more themes, 4 = about mapcomplete (user must be logged in and have >200 changesets) (default value: _0_)
**z**: The initial/current zoom level (default value: _1_)
**lat**: The initial/current latitude (default value: _0_)
**lon**: The initial/current longitude of the app (default value: _0_)
**fs-userbadge**: Disables/Enables the userbadge (and thus disables login capabilities) (default value: _true_)
**fs-search**: Disables/Enables the search bar (default value: _true_)
**fs-layers**: Disables/Enables the layer control (default value: _true_)
**fs-add-new**: Disables/Enables the 'add new feature'-popup. (A theme without presets might not have it in the first place) (default value: _true_)
**fs-welcome-message**: undefined (default value: _true_)
**fs-iframe**: Disables/Enables the iframe-popup (default value: _false_)
**fs-more-quests**: Disables/Enables the 'More Quests'-tab in the welcome message (default value: _true_)
**fs-share-screen**: Disables/Enables the 'Share-screen'-tab in the welcome message (default value: _true_)
**fs-geolocation**: Disables/Enables the geolocation button (default value: _true_)
**oauth_token**: Used to complete the login (default value: _undefined_)
**background**: The id of the background layer to start with (default value: _undefined_)
**layer-bookcases**: Wehter or not layer bookcases is shown (default value: _true_) index.ts:104:8
# Privacy # Privacy
@ -195,12 +155,16 @@ Geolocation is available on mobile only throught hte device's GPS location (so n
TODO: erase cookies of third party websites and API's TODO: erase cookies of third party websites and API's
# Attributions # Attribution
Data from OpenStreetMap Data from OpenStreetMap
Background layer selection: curated by https://github.com/osmlab/editor-layer-index Background layer selection: curated by https://github.com/osmlab/editor-layer-index
Icons are attributed in various 'license_info.json'-files and can be found in the app.
https://commons.wikimedia.org/wiki/File:Camera_font_awesome.svg https://commons.wikimedia.org/wiki/File:Camera_font_awesome.svg
Camera Icon, Dave Gandy, CC-BY-SA 3.0 Camera Icon, Dave Gandy, CC-BY-SA 3.0
@ -212,11 +176,5 @@ Bicycle logo, Scott de Jonge
Park icon via http://www.onlinewebfonts.com/icon/425974, CC BY 3.0 (@sterankofrank) Park icon via http://www.onlinewebfonts.com/icon/425974, CC BY 3.0 (@sterankofrank)
Forest icon via https://www.onlinewebfonts.com/icon/498112, CC BY
Shower icon (used in 'bike_cleaning.svg'): Shower icon (used in 'bike_cleaning.svg'):
https://commons.wikimedia.org/wiki/File:Shower_symbol.svg https://commons.wikimedia.org/wiki/File:Shower_symbol.svg
Bench icons from StreetComplete: https://github.com/westnordost/StreetComplete/tree/v25.0-beta1/res/graphics/quest%20icons, GPLv3.0
Urinal icon: https://thenounproject.com/term/urinal/1307984/

View file

@ -21,7 +21,9 @@ export default class AttributionPanel extends Combine {
constructor(layoutToUse: UIEventSource<LayoutConfig>) { constructor(layoutToUse: UIEventSource<LayoutConfig>) {
super([ super([
Translations.t.general.attribution.attributionContent, Translations.t.general.attribution.attributionContent,
Translations.t.general.attribution.themeBy.Subs({author: layoutToUse.data.maintainer}),
((layoutToUse.data.maintainer ?? "") == "") ? "" : Translations.t.general.attribution.themeBy.Subs({author: layoutToUse.data.maintainer}),
layoutToUse.data.credits ,
"<br/>", "<br/>",
new Attribution(undefined, undefined, State.state.layoutToUse, undefined), new Attribution(undefined, undefined, State.state.layoutToUse, undefined),
"<br/>", "<br/>",
@ -50,7 +52,7 @@ export default class AttributionPanel extends Combine {
new Combine([ new Combine([
new FixedUiElement(license.authors.join("; ")).SetClass("font-bold"), new FixedUiElement(license.authors.join("; ")).SetClass("font-bold"),
new Combine([license.license, license.sources.length > 0 ? " - " : "", new Combine([license.license, license.sources.length > 0 ? " - " : "",
...license.sources.map(link => `<a href='${link}'>${new URL(link).hostname}</a> `)]).SetClass("block") ...license.sources.map(link => `<a href='${link}' target="_blank">${new URL(link).hostname}</a> `)]).SetClass("block")
]).SetClass("flex flex-col") ]).SetClass("flex flex-col")
]).SetClass("flex") ]).SetClass("flex")
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 175 KiB

View file

@ -28,7 +28,6 @@ function readDirRecSync(path): string[] {
function generateLicenseInfos(paths: string[]): SmallLicense[] { function generateLicenseInfos(paths: string[]): SmallLicense[] {
const licenses = [] const licenses = []
for (const path of paths) { for (const path of paths) {
console.log("Reading info from " + path)
const parsed = JSON.parse(readFileSync(path, "UTF-8")) const parsed = JSON.parse(readFileSync(path, "UTF-8"))
if (Array.isArray(parsed)) { if (Array.isArray(parsed)) {
const l: SmallLicense[] = parsed const l: SmallLicense[] = parsed
@ -166,7 +165,7 @@ writeFileSync("./assets/generated/license_info.json", JSON.stringify(licenseInfo
const artwork = contents.filter(pth => pth.match(/(.svg|.png|.jpg)$/i) != null) const artwork = contents.filter(pth => pth.match(/(.svg|.png|.jpg)$/i) != null)
const missingLicenses = missingLicenseInfos(licenseInfos, artwork) const missingLicenses = missingLicenseInfos(licenseInfos, artwork)
console.log(`There are ${missingLicenses.length} licenses missing.`) console.log(`There are ${missingLicenses.length} licenses missing.`, missingLicenses)
// shuffle(missingLicenses) // shuffle(missingLicenses)
@ -178,6 +177,10 @@ process.on('SIGINT', function() {
let i = 1; let i = 1;
for (const missingLicens of missingLicenses) { for (const missingLicens of missingLicenses) {
console.log(i + " / " + missingLicenses.length) console.log(i + " / " + missingLicenses.length)
createLicenseInfoFor(missingLicens)
i++; i++;
if(i < missingLicenses.length - 5){
// continue
}
createLicenseInfoFor(missingLicens)
} }