Formatting and style tweaks
This commit is contained in:
parent
80533597c1
commit
dcfcc9a5d7
8 changed files with 100 additions and 41 deletions
|
@ -90,7 +90,7 @@ export default class DeleteWizard extends Toggle {
|
|||
config,
|
||||
state,
|
||||
{
|
||||
cancelButton: cancelButton,
|
||||
cancelButton,
|
||||
/*Using a custom save button constructor erases all logic to actually save, so we have to listen for the click!*/
|
||||
saveButtonConstr: (v) => DeleteWizard.constructConfirmButton(v).onClick(() => {
|
||||
doDelete(v.data)
|
||||
|
|
|
@ -71,7 +71,7 @@ export default class EditableTagRendering extends Toggle {
|
|||
{
|
||||
units: units,
|
||||
cancelButton: Translations.t.general.cancel.Clone()
|
||||
.SetClass("btn btn-secondary mr-3")
|
||||
.SetClass("btn btn-secondary")
|
||||
.onClick(() => {
|
||||
editMode.setData(false)
|
||||
}),
|
||||
|
|
|
@ -42,7 +42,7 @@ export default class QuestionBox extends VariableUiElement {
|
|||
skippedQuestions.ping();
|
||||
},
|
||||
cancelButton: Translations.t.general.skip.Clone()
|
||||
.SetClass("btn btn-secondary mr-3")
|
||||
.SetClass("btn btn-secondary")
|
||||
.onClick(() => {
|
||||
skippedQuestions.data.push(i);
|
||||
skippedQuestions.ping();
|
||||
|
|
|
@ -138,8 +138,8 @@ export default class TagRenderingQuestion extends Combine {
|
|||
super([
|
||||
question,
|
||||
inputElement,
|
||||
options.cancelButton,
|
||||
saveButton,
|
||||
new Combine([options.cancelButton,
|
||||
saveButton]).SetClass("flex w-full justify-end flex-wrap-reverse"),
|
||||
bottomTags,
|
||||
new Toggle(Translations.t.general.testing.SetClass("alert"), undefined, state.featureSwitchIsTesting)
|
||||
])
|
||||
|
|
|
@ -1260,6 +1260,10 @@ video {
|
|||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.flex-wrap-reverse {
|
||||
flex-wrap: wrap-reverse;
|
||||
}
|
||||
|
||||
.items-end {
|
||||
align-items: flex-end;
|
||||
}
|
||||
|
@ -1353,10 +1357,6 @@ video {
|
|||
border-radius: 1.5rem;
|
||||
}
|
||||
|
||||
.rounded-lg {
|
||||
border-radius: 0.5rem;
|
||||
}
|
||||
|
||||
.rounded {
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
|
@ -1365,6 +1365,10 @@ video {
|
|||
border-radius: 0.75rem;
|
||||
}
|
||||
|
||||
.rounded-lg {
|
||||
border-radius: 0.5rem;
|
||||
}
|
||||
|
||||
.rounded-sm {
|
||||
border-radius: 0.125rem;
|
||||
}
|
||||
|
@ -1809,23 +1813,38 @@ video {
|
|||
}
|
||||
|
||||
:root {
|
||||
/* The main colour scheme of mapcomplete is configured here.
|
||||
* For a custom styling, set 'customCss' in your layoutConfig and overwrite some of these.
|
||||
*/
|
||||
/* Main color of the application: the background and text colours */
|
||||
--background-color: white;
|
||||
/* Main text colour. Also styles some elements, such as the 'close popup'-button or 'back-arrow' (in mobile) */
|
||||
--foreground-color: black;
|
||||
/* A colour to indicate an error or warning */
|
||||
--alert-color: #fee4d1;
|
||||
/**
|
||||
* Base colour of interactive elements, mainly the 'subtle button'
|
||||
*
|
||||
*/
|
||||
--subtle-detail-color: #DBEAFE;
|
||||
--subtle-detail-color-contrast: black;
|
||||
--subtle-detail-color-light-contrast: lightgrey;
|
||||
/**
|
||||
* A stronger variant of the 'subtle-detail-colour'
|
||||
* Used as subtle button hover
|
||||
*/
|
||||
--unsubtle-detail-color: #BFDBFE;
|
||||
--unsubtle-detail-color-contrast: black;
|
||||
--catch-detail-color: #3a3aeb;
|
||||
--catch-detail-color-contrast: white;
|
||||
--alert-color: #fee4d1;
|
||||
--background-color: white;
|
||||
--foreground-color: black;
|
||||
--popup-border: white;
|
||||
--non-active-tab-svg: var(--foreground-color);
|
||||
--shadow-color: #00000066;
|
||||
--variable-title-height: 0px;
|
||||
/* Set by javascript */
|
||||
--return-to-the-map-height: 2em;
|
||||
--image-carousel-height: 350px;
|
||||
/* The border colour of the leaflet popup */
|
||||
--popup-border: white;
|
||||
/* Technical variable to make some dynamic behaviour possible; set by javascript. */
|
||||
--variable-title-height: 0px;
|
||||
}
|
||||
|
||||
html, body {
|
||||
|
@ -1902,8 +1921,6 @@ a {
|
|||
}
|
||||
|
||||
.btn {
|
||||
margin-top: 0.5rem;
|
||||
margin-right: 0.5rem;
|
||||
line-height: 1.25rem;
|
||||
--tw-text-opacity: 1;
|
||||
color: var(--catch-detail-color-contrast);
|
||||
|
@ -1917,6 +1934,7 @@ a {
|
|||
padding-right: 1.25rem;
|
||||
font-size: large;
|
||||
font-weight: bold;
|
||||
transition: 100ms;
|
||||
/*-- invisible border: rendered on hover*/
|
||||
border: 3px solid var(--unsubtle-detail-color);
|
||||
}
|
||||
|
@ -1927,11 +1945,12 @@ a {
|
|||
|
||||
.btn-secondary {
|
||||
background-color: var(--catch-detail-color);
|
||||
filter: saturate(0.8);
|
||||
filter: saturate(0.5);
|
||||
}
|
||||
|
||||
.btn-secondary:hover {
|
||||
background-color: var(--catch-detail-color);
|
||||
filter: unset;
|
||||
}
|
||||
|
||||
.btn-disabled {
|
||||
|
@ -2358,6 +2377,7 @@ input {
|
|||
.layer-filters {
|
||||
/* If needed, the panel which contains the extra filters for a layer */
|
||||
margin-bottom: 1rem;
|
||||
border-bottom: 2px solid var(--foreground-color);
|
||||
}
|
||||
|
||||
.filter-panel {
|
||||
|
|
45
index.css
45
index.css
|
@ -45,24 +45,49 @@
|
|||
|
||||
|
||||
:root {
|
||||
/* The main colour scheme of mapcomplete is configured here.
|
||||
* For a custom styling, set 'customCss' in your layoutConfig and overwrite some of these.
|
||||
*/
|
||||
|
||||
/* Main color of the application: the background and text colours */
|
||||
--background-color: white;
|
||||
/* Main text colour. Also styles some elements, such as the 'close popup'-button or 'back-arrow' (in mobile) */
|
||||
--foreground-color: black;
|
||||
|
||||
/* A colour to indicate an error or warning */
|
||||
--alert-color: #fee4d1;
|
||||
|
||||
/**
|
||||
* Base colour of interactive elements, mainly the 'subtle button'
|
||||
*
|
||||
*/
|
||||
--subtle-detail-color: #DBEAFE;
|
||||
--subtle-detail-color-contrast: black;
|
||||
--subtle-detail-color-light-contrast: lightgrey;
|
||||
|
||||
/**
|
||||
* A stronger variant of the 'subtle-detail-colour'
|
||||
* Used as subtle button hover
|
||||
*/
|
||||
--unsubtle-detail-color: #BFDBFE;
|
||||
--unsubtle-detail-color-contrast: black;
|
||||
|
||||
|
||||
--catch-detail-color: #3a3aeb;
|
||||
--catch-detail-color-contrast: white;
|
||||
--alert-color: #fee4d1;
|
||||
--background-color: white;
|
||||
--foreground-color: black;
|
||||
--popup-border: white;
|
||||
|
||||
|
||||
--non-active-tab-svg: var(--foreground-color);
|
||||
--shadow-color: #00000066;
|
||||
--variable-title-height: 0px; /* Set by javascript */
|
||||
--return-to-the-map-height: 2em;
|
||||
|
||||
--return-to-the-map-height: 2em;
|
||||
--image-carousel-height: 350px;
|
||||
|
||||
/* The border colour of the leaflet popup */
|
||||
--popup-border: white;
|
||||
|
||||
/* Technical variable to make some dynamic behaviour possible; set by javascript. */
|
||||
--variable-title-height: 0px;
|
||||
}
|
||||
|
||||
html, body {
|
||||
|
@ -139,8 +164,6 @@ a {
|
|||
}
|
||||
|
||||
.btn {
|
||||
margin-top: 0.5rem;
|
||||
margin-right: 0.5rem;
|
||||
line-height: 1.25rem;
|
||||
--tw-text-opacity: 1;
|
||||
color: var(--catch-detail-color-contrast);
|
||||
|
@ -154,6 +177,7 @@ a {
|
|||
padding-right: 1.25rem;
|
||||
font-size: large;
|
||||
font-weight: bold;
|
||||
transition: 100ms;
|
||||
/*-- invisible border: rendered on hover*/
|
||||
border: 3px solid var(--unsubtle-detail-color);
|
||||
}
|
||||
|
@ -164,11 +188,13 @@ a {
|
|||
|
||||
.btn-secondary {
|
||||
background-color: var(--catch-detail-color);
|
||||
filter: saturate(0.8);
|
||||
filter: saturate(0.5);
|
||||
|
||||
}
|
||||
|
||||
.btn-secondary:hover {
|
||||
background-color: var(--catch-detail-color);
|
||||
filter: unset;
|
||||
}
|
||||
|
||||
.btn-disabled {
|
||||
|
@ -549,6 +575,7 @@ input {
|
|||
.layer-filters {
|
||||
/* If needed, the panel which contains the extra filters for a layer */
|
||||
margin-bottom: 1rem;
|
||||
border-bottom: 2px solid var(--foreground-color);
|
||||
}
|
||||
|
||||
.filter-panel {
|
||||
|
|
|
@ -4,7 +4,7 @@ import * as licenses from "../assets/generated/license_info.json"
|
|||
import {LayoutConfigJson} from "../Models/ThemeConfig/Json/LayoutConfigJson";
|
||||
import {LayerConfigJson} from "../Models/ThemeConfig/Json/LayerConfigJson";
|
||||
import Constants from "../Models/Constants";
|
||||
import {ValidateLayer, ValidateThemeAndLayers} from "../Models/ThemeConfig/Conversion/LegacyJsonConvert";
|
||||
import {PrevalidateTheme, ValidateLayer, ValidateThemeAndLayers} from "../Models/ThemeConfig/Conversion/Validation";
|
||||
import {Translation} from "../UI/i18n/Translation";
|
||||
import {TagRenderingConfigJson} from "../Models/ThemeConfig/Json/TagRenderingConfigJson";
|
||||
import * as questions from "../assets/tagRenderings/questions.json";
|
||||
|
@ -174,6 +174,7 @@ class LayerOverviewUtils {
|
|||
let themeFile = themeInfo.parsed
|
||||
const themePath = themeInfo.path
|
||||
|
||||
new PrevalidateTheme().convertStrict(convertState, themeFile, themePath)
|
||||
themeFile = new PrepareTheme().convertStrict(convertState, themeFile, themePath)
|
||||
|
||||
new ValidateThemeAndLayers(knownImagePaths, themePath, true)
|
||||
|
@ -196,10 +197,4 @@ class LayerOverviewUtils {
|
|||
}
|
||||
}
|
||||
|
||||
try{
|
||||
new LayerOverviewUtils().main(process.argv)
|
||||
|
||||
}catch(e){
|
||||
console.error("ERROR WHILE GENERATING THE LAYERS:", e)
|
||||
console.log("If a weird error persists, 'npm run reset:layeroverview'")
|
||||
}
|
||||
|
|
|
@ -91,6 +91,14 @@ knownLicenses.set("na", {
|
|||
sources: []
|
||||
})
|
||||
|
||||
knownLicenses.set("tv", {
|
||||
authors: ["Toerisme Vlaanderen"],
|
||||
path: undefined,
|
||||
license: "CC0",
|
||||
sources: ["https://toerismevlaanderen.be/pinjepunt","https://mapcomplete.osm.be/toerisme_vlaanderenn"]
|
||||
})
|
||||
|
||||
|
||||
knownLicenses.set("twemoji", {
|
||||
authors: ["Twemoji"],
|
||||
path: undefined,
|
||||
|
@ -223,18 +231,29 @@ function createFullLicenseOverview(licensePaths) {
|
|||
}
|
||||
|
||||
console.log("Checking and compiling license info")
|
||||
const contents = ScriptUtils.readDirRecSync("./assets")
|
||||
.filter(entry => entry.indexOf("./assets/generated") != 0)
|
||||
const licensePaths = contents.filter(entry => entry.indexOf("license_info.json") >= 0)
|
||||
const licenseInfos = generateLicenseInfos(licensePaths);
|
||||
|
||||
if (!existsSync("./assets/generated")) {
|
||||
mkdirSync("./assets/generated")
|
||||
}
|
||||
|
||||
|
||||
let contents = ScriptUtils.readDirRecSync("./assets")
|
||||
.filter(entry => entry.indexOf("./assets/generated") != 0)
|
||||
let licensePaths = contents.filter(entry => entry.indexOf("license_info.json") >= 0)
|
||||
let licenseInfos = generateLicenseInfos(licensePaths);
|
||||
|
||||
|
||||
|
||||
const artwork = contents.filter(pth => pth.match(/(.svg|.png|.jpg)$/i) != null)
|
||||
const missingLicenses = missingLicenseInfos(licenseInfos, artwork)
|
||||
if (process.argv.indexOf("--prompt") >= 0 || process.argv.indexOf("--query") >= 0) {
|
||||
queryMissingLicenses(missingLicenses)
|
||||
contents = ScriptUtils.readDirRecSync("./assets")
|
||||
.filter(entry => entry.indexOf("./assets/generated") != 0)
|
||||
licensePaths = contents.filter(entry => entry.indexOf("license_info.json") >= 0)
|
||||
licenseInfos = generateLicenseInfos(licensePaths);
|
||||
}
|
||||
|
||||
const invalidLicenses = licenseInfos.filter(l => (l.license ?? "") === "").map(l => `License for artwork ${l.path} is empty string or undefined`)
|
||||
for (const licenseInfo of licenseInfos) {
|
||||
for (const source of licenseInfo.sources) {
|
||||
|
@ -248,9 +267,7 @@ for (const licenseInfo of licenseInfos) {
|
|||
}
|
||||
}
|
||||
}
|
||||
if (process.argv.indexOf("--prompt") >= 0 || process.argv.indexOf("--query") >= 0) {
|
||||
queryMissingLicenses(missingLicenses)
|
||||
}
|
||||
|
||||
if (missingLicenses.length > 0) {
|
||||
const msg = `There are ${missingLicenses.length} licenses missing and ${invalidLicenses.length} invalid licenses.`
|
||||
console.log(missingLicenses.concat(invalidLicenses).join("\n"))
|
||||
|
|
Loading…
Reference in a new issue