forked from MapComplete/MapComplete
More validation and fixes
This commit is contained in:
parent
f10e7f008f
commit
4766f8bbde
13 changed files with 192 additions and 207 deletions
|
|
@ -34,7 +34,6 @@ export default class AttributionPanel extends Combine {
|
|||
}
|
||||
|
||||
private static IconAttribution(iconPath: string) {
|
||||
console.log("Attribution panel for ", iconPath)
|
||||
if (iconPath.startsWith("http")) {
|
||||
iconPath = "." + new URL(iconPath).pathname;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -85,16 +85,12 @@ export default class MoreScreen extends UIElement {
|
|||
|
||||
const linkButton: UIElement[] = []
|
||||
|
||||
for (const k in AllKnownLayouts.allSets) {
|
||||
const layout: LayoutConfig = AllKnownLayouts.allSets[k];
|
||||
if (k === personal.id) {
|
||||
for (const layout of AllKnownLayouts.layoutsList) {
|
||||
if (layout.id === personal.id) {
|
||||
if (State.state.osmConnection.userDetails.data.csCount < Constants.userJourney.personalLayoutUnlock) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (layout.id !== k) {
|
||||
continue; // This layout was added multiple time due to an uppercase
|
||||
}
|
||||
linkButton.push(this.createLinkButton(layout));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -19,6 +19,9 @@ export class Translation extends UIElement {
|
|||
let count = 0;
|
||||
for (const translationsKey in translations) {
|
||||
count++;
|
||||
if(typeof(translations[translationsKey]) != "string"){
|
||||
throw "Error in an object depicting a translation: a non-string object was found. ("+context+")\n You probably put some other section accidentally in the translation"
|
||||
}
|
||||
}
|
||||
this.translations = translations;
|
||||
if (count === 0) {
|
||||
|
|
@ -134,12 +137,17 @@ export class Translation extends UIElement {
|
|||
} else {
|
||||
// We are running this in ts-node (~= nodejs), and can not access document
|
||||
// So, we fallback to simple regex
|
||||
const matches = render.match(/<img[^>]+>/g)
|
||||
if (matches != null) {
|
||||
const sources = matches.map(img => img.match(/src=("[^"]+"|'[^']+'|[^/ ]+)/))
|
||||
.filter(match => match != null)
|
||||
.map(match => match[1].trim().replace(/^['"]/, '').replace(/['"]$/, ''));
|
||||
allIcons.push(...sources)
|
||||
try {
|
||||
const matches = render.match(/<img[^>]+>/g)
|
||||
if (matches != null) {
|
||||
const sources = matches.map(img => img.match(/src=("[^"]+"|'[^']+'|[^/ ]+)/))
|
||||
.filter(match => match != null)
|
||||
.map(match => match[1].trim().replace(/^['"]/, '').replace(/['"]$/, ''));
|
||||
allIcons.push(...sources)
|
||||
}
|
||||
}catch(e){
|
||||
console.error("Could not search for images: ", render, this.txt)
|
||||
throw e
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue