Small tweaks to attribution panel
This commit is contained in:
parent
c78f8f6cdc
commit
d072552043
7 changed files with 27 additions and 56 deletions
|
@ -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 = [];
|
||||||
|
|
|
@ -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?
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -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");
|
||||||
|
|
58
README.md
58
README.md
|
@ -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/
|
|
|
@ -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 |
|
@ -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)
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in a new issue