forked from MapComplete/MapComplete
		
	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, |                 config, | ||||||
|                 state, |                 state, | ||||||
|                 { |                 { | ||||||
|                     cancelButton: cancelButton, |                     cancelButton, | ||||||
|                     /*Using a custom save button constructor erases all logic to actually save, so we have to listen for the click!*/ |                     /*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(() => { |                     saveButtonConstr: (v) => DeleteWizard.constructConfirmButton(v).onClick(() => { | ||||||
|                         doDelete(v.data) |                         doDelete(v.data) | ||||||
|  |  | ||||||
|  | @ -71,7 +71,7 @@ export default class EditableTagRendering extends Toggle { | ||||||
|                     { |                     { | ||||||
|                         units: units, |                         units: units, | ||||||
|                         cancelButton: Translations.t.general.cancel.Clone() |                         cancelButton: Translations.t.general.cancel.Clone() | ||||||
|                             .SetClass("btn btn-secondary mr-3") |                             .SetClass("btn btn-secondary") | ||||||
|                             .onClick(() => { |                             .onClick(() => { | ||||||
|                                 editMode.setData(false) |                                 editMode.setData(false) | ||||||
|                             }), |                             }), | ||||||
|  |  | ||||||
|  | @ -42,7 +42,7 @@ export default class QuestionBox extends VariableUiElement { | ||||||
|                             skippedQuestions.ping(); |                             skippedQuestions.ping(); | ||||||
|                         }, |                         }, | ||||||
|                         cancelButton: Translations.t.general.skip.Clone() |                         cancelButton: Translations.t.general.skip.Clone() | ||||||
|                             .SetClass("btn btn-secondary mr-3") |                             .SetClass("btn btn-secondary") | ||||||
|                             .onClick(() => { |                             .onClick(() => { | ||||||
|                                 skippedQuestions.data.push(i); |                                 skippedQuestions.data.push(i); | ||||||
|                                 skippedQuestions.ping(); |                                 skippedQuestions.ping(); | ||||||
|  |  | ||||||
|  | @ -138,8 +138,8 @@ export default class TagRenderingQuestion extends Combine { | ||||||
|         super([ |         super([ | ||||||
|             question, |             question, | ||||||
|             inputElement, |             inputElement, | ||||||
|             options.cancelButton, |             new Combine([options.cancelButton, | ||||||
|             saveButton, |             saveButton]).SetClass("flex w-full justify-end flex-wrap-reverse"), | ||||||
|             bottomTags, |             bottomTags, | ||||||
|             new Toggle(Translations.t.general.testing.SetClass("alert"), undefined, state.featureSwitchIsTesting) |             new Toggle(Translations.t.general.testing.SetClass("alert"), undefined, state.featureSwitchIsTesting) | ||||||
|             ]) |             ]) | ||||||
|  |  | ||||||
|  | @ -1260,6 +1260,10 @@ video { | ||||||
|   flex-wrap: wrap; |   flex-wrap: wrap; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | .flex-wrap-reverse { | ||||||
|  |   flex-wrap: wrap-reverse; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| .items-end { | .items-end { | ||||||
|   align-items: flex-end; |   align-items: flex-end; | ||||||
| } | } | ||||||
|  | @ -1353,10 +1357,6 @@ video { | ||||||
|   border-radius: 1.5rem; |   border-radius: 1.5rem; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .rounded-lg { |  | ||||||
|   border-radius: 0.5rem; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .rounded { | .rounded { | ||||||
|   border-radius: 0.25rem; |   border-radius: 0.25rem; | ||||||
| } | } | ||||||
|  | @ -1365,6 +1365,10 @@ video { | ||||||
|   border-radius: 0.75rem; |   border-radius: 0.75rem; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | .rounded-lg { | ||||||
|  |   border-radius: 0.5rem; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| .rounded-sm { | .rounded-sm { | ||||||
|   border-radius: 0.125rem; |   border-radius: 0.125rem; | ||||||
| } | } | ||||||
|  | @ -1809,23 +1813,38 @@ video { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| :root { | :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: #DBEAFE; | ||||||
|   --subtle-detail-color-contrast: black; |   --subtle-detail-color-contrast: black; | ||||||
|   --subtle-detail-color-light-contrast: lightgrey; |   --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: #BFDBFE; | ||||||
|   --unsubtle-detail-color-contrast: black; |   --unsubtle-detail-color-contrast: black; | ||||||
|   --catch-detail-color: #3a3aeb; |   --catch-detail-color: #3a3aeb; | ||||||
|   --catch-detail-color-contrast: white; |   --catch-detail-color-contrast: white; | ||||||
|   --alert-color: #fee4d1; |  | ||||||
|   --background-color: white; |  | ||||||
|   --foreground-color: black; |  | ||||||
|   --popup-border: white; |  | ||||||
|   --non-active-tab-svg: var(--foreground-color); |   --non-active-tab-svg: var(--foreground-color); | ||||||
|   --shadow-color: #00000066; |   --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; |   --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 { | html, body { | ||||||
|  | @ -1902,8 +1921,6 @@ a { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .btn { | .btn { | ||||||
|   margin-top: 0.5rem; |  | ||||||
|   margin-right: 0.5rem; |  | ||||||
|   line-height: 1.25rem; |   line-height: 1.25rem; | ||||||
|   --tw-text-opacity: 1; |   --tw-text-opacity: 1; | ||||||
|   color: var(--catch-detail-color-contrast); |   color: var(--catch-detail-color-contrast); | ||||||
|  | @ -1917,6 +1934,7 @@ a { | ||||||
|   padding-right: 1.25rem; |   padding-right: 1.25rem; | ||||||
|   font-size: large; |   font-size: large; | ||||||
|   font-weight: bold; |   font-weight: bold; | ||||||
|  |   transition: 100ms; | ||||||
|   /*-- invisible border: rendered on hover*/ |   /*-- invisible border: rendered on hover*/ | ||||||
|   border: 3px solid var(--unsubtle-detail-color); |   border: 3px solid var(--unsubtle-detail-color); | ||||||
| } | } | ||||||
|  | @ -1927,11 +1945,12 @@ a { | ||||||
| 
 | 
 | ||||||
| .btn-secondary { | .btn-secondary { | ||||||
|   background-color: var(--catch-detail-color); |   background-color: var(--catch-detail-color); | ||||||
|   filter: saturate(0.8); |   filter: saturate(0.5); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .btn-secondary:hover { | .btn-secondary:hover { | ||||||
|   background-color: var(--catch-detail-color); |   background-color: var(--catch-detail-color); | ||||||
|  |   filter: unset; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .btn-disabled { | .btn-disabled { | ||||||
|  | @ -2358,6 +2377,7 @@ input { | ||||||
| .layer-filters { | .layer-filters { | ||||||
|   /* If needed, the panel which contains the extra filters for a layer */ |   /* If needed, the panel which contains the extra filters for a layer */ | ||||||
|   margin-bottom: 1rem; |   margin-bottom: 1rem; | ||||||
|  |   border-bottom: 2px solid var(--foreground-color); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .filter-panel { | .filter-panel { | ||||||
|  |  | ||||||
							
								
								
									
										45
									
								
								index.css
									
										
									
									
									
								
							
							
						
						
									
										45
									
								
								index.css
									
										
									
									
									
								
							|  | @ -45,24 +45,49 @@ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| :root { | :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: #DBEAFE; | ||||||
|     --subtle-detail-color-contrast: black; |     --subtle-detail-color-contrast: black; | ||||||
|     --subtle-detail-color-light-contrast: lightgrey; |     --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: #BFDBFE; | ||||||
|     --unsubtle-detail-color-contrast: black; |     --unsubtle-detail-color-contrast: black; | ||||||
|  |      | ||||||
|  |      | ||||||
|     --catch-detail-color: #3a3aeb; |     --catch-detail-color: #3a3aeb; | ||||||
|     --catch-detail-color-contrast: white; |     --catch-detail-color-contrast: white; | ||||||
|     --alert-color: #fee4d1; | 
 | ||||||
|     --background-color: white; |      | ||||||
|     --foreground-color: black; |  | ||||||
|     --popup-border: white; |  | ||||||
|     --non-active-tab-svg: var(--foreground-color); |     --non-active-tab-svg: var(--foreground-color); | ||||||
|     --shadow-color: #00000066; |     --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; |     --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 { | html, body { | ||||||
|  | @ -139,8 +164,6 @@ a { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .btn { | .btn { | ||||||
|     margin-top: 0.5rem; |  | ||||||
|     margin-right: 0.5rem; |  | ||||||
|     line-height: 1.25rem; |     line-height: 1.25rem; | ||||||
|     --tw-text-opacity: 1; |     --tw-text-opacity: 1; | ||||||
|     color: var(--catch-detail-color-contrast); |     color: var(--catch-detail-color-contrast); | ||||||
|  | @ -154,6 +177,7 @@ a { | ||||||
|     padding-right: 1.25rem; |     padding-right: 1.25rem; | ||||||
|     font-size: large; |     font-size: large; | ||||||
|     font-weight: bold; |     font-weight: bold; | ||||||
|  |     transition: 100ms; | ||||||
|     /*-- invisible border: rendered on hover*/ |     /*-- invisible border: rendered on hover*/ | ||||||
|     border: 3px solid var(--unsubtle-detail-color); |     border: 3px solid var(--unsubtle-detail-color); | ||||||
| } | } | ||||||
|  | @ -164,11 +188,13 @@ a { | ||||||
| 
 | 
 | ||||||
| .btn-secondary { | .btn-secondary { | ||||||
|     background-color: var(--catch-detail-color); |     background-color: var(--catch-detail-color); | ||||||
|     filter: saturate(0.8); |     filter: saturate(0.5); | ||||||
|  |      | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .btn-secondary:hover { | .btn-secondary:hover { | ||||||
|     background-color: var(--catch-detail-color); |     background-color: var(--catch-detail-color); | ||||||
|  |     filter: unset; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .btn-disabled { | .btn-disabled { | ||||||
|  | @ -549,6 +575,7 @@ input { | ||||||
| .layer-filters { | .layer-filters { | ||||||
|     /* If needed, the panel which contains the extra filters for a layer */ |     /* If needed, the panel which contains the extra filters for a layer */ | ||||||
|     margin-bottom: 1rem; |     margin-bottom: 1rem; | ||||||
|  |     border-bottom: 2px solid var(--foreground-color); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .filter-panel { | .filter-panel { | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ import * as licenses from "../assets/generated/license_info.json" | ||||||
| import {LayoutConfigJson} from "../Models/ThemeConfig/Json/LayoutConfigJson"; | import {LayoutConfigJson} from "../Models/ThemeConfig/Json/LayoutConfigJson"; | ||||||
| import {LayerConfigJson} from "../Models/ThemeConfig/Json/LayerConfigJson"; | import {LayerConfigJson} from "../Models/ThemeConfig/Json/LayerConfigJson"; | ||||||
| import Constants from "../Models/Constants"; | 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 {Translation} from "../UI/i18n/Translation"; | ||||||
| import {TagRenderingConfigJson} from "../Models/ThemeConfig/Json/TagRenderingConfigJson"; | import {TagRenderingConfigJson} from "../Models/ThemeConfig/Json/TagRenderingConfigJson"; | ||||||
| import * as questions from "../assets/tagRenderings/questions.json"; | import * as questions from "../assets/tagRenderings/questions.json"; | ||||||
|  | @ -174,6 +174,7 @@ class LayerOverviewUtils { | ||||||
|             let themeFile = themeInfo.parsed |             let themeFile = themeInfo.parsed | ||||||
|             const themePath = themeInfo.path |             const themePath = themeInfo.path | ||||||
| 
 | 
 | ||||||
|  |             new PrevalidateTheme().convertStrict(convertState, themeFile, themePath) | ||||||
|             themeFile = new PrepareTheme().convertStrict(convertState, themeFile, themePath) |             themeFile = new PrepareTheme().convertStrict(convertState, themeFile, themePath) | ||||||
| 
 | 
 | ||||||
|             new ValidateThemeAndLayers(knownImagePaths, themePath, true) |             new ValidateThemeAndLayers(knownImagePaths, themePath, true) | ||||||
|  | @ -196,10 +197,4 @@ class LayerOverviewUtils { | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| try{ |  | ||||||
| new LayerOverviewUtils().main(process.argv) | 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: [] |     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", { | knownLicenses.set("twemoji", { | ||||||
|     authors: ["Twemoji"], |     authors: ["Twemoji"], | ||||||
|     path: undefined, |     path: undefined, | ||||||
|  | @ -223,18 +231,29 @@ function createFullLicenseOverview(licensePaths) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| console.log("Checking and compiling license info") | 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")) { | if (!existsSync("./assets/generated")) { | ||||||
|     mkdirSync("./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 artwork = contents.filter(pth => pth.match(/(.svg|.png|.jpg)$/i) != null) | ||||||
| const missingLicenses = missingLicenseInfos(licenseInfos, artwork) | 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`) | 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 licenseInfo of licenseInfos) { | ||||||
|     for (const source of licenseInfo.sources) { |     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) { | if (missingLicenses.length > 0) { | ||||||
|     const msg = `There are ${missingLicenses.length} licenses missing and ${invalidLicenses.length} invalid licenses.` |     const msg = `There are ${missingLicenses.length} licenses missing and ${invalidLicenses.length} invalid licenses.` | ||||||
|     console.log(missingLicenses.concat(invalidLicenses).join("\n")) |     console.log(missingLicenses.concat(invalidLicenses).join("\n")) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue