forked from MapComplete/MapComplete
Reformat all files with prettier
This commit is contained in:
parent
e22d189376
commit
b541d3eab4
382 changed files with 50893 additions and 35566 deletions
|
@ -1,117 +1,128 @@
|
|||
import Combine from "../Base/Combine";
|
||||
import {FlowStep} from "./FlowStep";
|
||||
import {Store} from "../../Logic/UIEventSource";
|
||||
import ValidatedTextField from "../Input/ValidatedTextField";
|
||||
import {LocalStorageSource} from "../../Logic/Web/LocalStorageSource";
|
||||
import Title from "../Base/Title";
|
||||
import {VariableUiElement} from "../Base/VariableUIElement";
|
||||
import Translations from "../i18n/Translations";
|
||||
import {SubtleButton} from "../Base/SubtleButton";
|
||||
import Svg from "../../Svg";
|
||||
import {Utils} from "../../Utils";
|
||||
|
||||
export class AskMetadata extends Combine implements FlowStep<{
|
||||
features: any[],
|
||||
wikilink: string,
|
||||
intro: string,
|
||||
source: string,
|
||||
theme: string
|
||||
}> {
|
||||
import Combine from "../Base/Combine"
|
||||
import { FlowStep } from "./FlowStep"
|
||||
import { Store } from "../../Logic/UIEventSource"
|
||||
import ValidatedTextField from "../Input/ValidatedTextField"
|
||||
import { LocalStorageSource } from "../../Logic/Web/LocalStorageSource"
|
||||
import Title from "../Base/Title"
|
||||
import { VariableUiElement } from "../Base/VariableUIElement"
|
||||
import Translations from "../i18n/Translations"
|
||||
import { SubtleButton } from "../Base/SubtleButton"
|
||||
import Svg from "../../Svg"
|
||||
import { Utils } from "../../Utils"
|
||||
|
||||
export class AskMetadata
|
||||
extends Combine
|
||||
implements
|
||||
FlowStep<{
|
||||
features: any[]
|
||||
wikilink: string
|
||||
intro: string
|
||||
source: string
|
||||
theme: string
|
||||
}>
|
||||
{
|
||||
public readonly Value: Store<{
|
||||
features: any[],
|
||||
wikilink: string,
|
||||
intro: string,
|
||||
source: string,
|
||||
features: any[]
|
||||
wikilink: string
|
||||
intro: string
|
||||
source: string
|
||||
theme: string
|
||||
}>;
|
||||
public readonly IsValid: Store<boolean>;
|
||||
}>
|
||||
public readonly IsValid: Store<boolean>
|
||||
|
||||
constructor(params: ({ features: any[], theme: string })) {
|
||||
constructor(params: { features: any[]; theme: string }) {
|
||||
const t = Translations.t.importHelper.askMetadata
|
||||
const introduction = ValidatedTextField.ForType("text").ConstructInputElement({
|
||||
value: LocalStorageSource.Get("import-helper-introduction-text"),
|
||||
inputStyle: "width: 100%"
|
||||
inputStyle: "width: 100%",
|
||||
})
|
||||
|
||||
const wikilink = ValidatedTextField.ForType("url").ConstructInputElement({
|
||||
value: LocalStorageSource.Get("import-helper-wikilink-text"),
|
||||
inputStyle: "width: 100%"
|
||||
inputStyle: "width: 100%",
|
||||
})
|
||||
|
||||
const source = ValidatedTextField.ForType("string").ConstructInputElement({
|
||||
value: LocalStorageSource.Get("import-helper-source-text"),
|
||||
inputStyle: "width: 100%"
|
||||
inputStyle: "width: 100%",
|
||||
})
|
||||
|
||||
super([
|
||||
new Title(t.title),
|
||||
t.intro.Subs({count: params.features.length}),
|
||||
t.giveDescription,
|
||||
t.intro.Subs({ count: params.features.length }),
|
||||
t.giveDescription,
|
||||
introduction.SetClass("w-full border border-black"),
|
||||
t.giveSource,
|
||||
source.SetClass("w-full border border-black"),
|
||||
t.giveWikilink ,
|
||||
t.giveSource,
|
||||
source.SetClass("w-full border border-black"),
|
||||
t.giveWikilink,
|
||||
wikilink.SetClass("w-full border border-black"),
|
||||
new VariableUiElement(wikilink.GetValue().map(wikilink => {
|
||||
try{
|
||||
const url = new URL(wikilink)
|
||||
if(url.hostname.toLowerCase() !== "wiki.openstreetmap.org"){
|
||||
return t.shouldBeOsmWikilink.SetClass("alert");
|
||||
}
|
||||
new VariableUiElement(
|
||||
wikilink.GetValue().map((wikilink) => {
|
||||
try {
|
||||
const url = new URL(wikilink)
|
||||
if (url.hostname.toLowerCase() !== "wiki.openstreetmap.org") {
|
||||
return t.shouldBeOsmWikilink.SetClass("alert")
|
||||
}
|
||||
|
||||
if(url.pathname.toLowerCase() === "/wiki/main_page"){
|
||||
return t.shouldNotBeHomepage.SetClass("alert");
|
||||
if (url.pathname.toLowerCase() === "/wiki/main_page") {
|
||||
return t.shouldNotBeHomepage.SetClass("alert")
|
||||
}
|
||||
} catch (e) {
|
||||
return t.shouldBeUrl.SetClass("alert")
|
||||
}
|
||||
}catch(e){
|
||||
return t.shouldBeUrl.SetClass("alert")
|
||||
}
|
||||
})),
|
||||
t.orDownload,
|
||||
new SubtleButton(Svg.download_svg(), t.downloadGeojson).OnClickWithLoading("Preparing your download",
|
||||
async ( ) => {
|
||||
const geojson = {
|
||||
type:"FeatureCollection",
|
||||
features: params.features
|
||||
}
|
||||
Utils.offerContentsAsDownloadableFile(JSON.stringify(geojson), "prepared_import_"+params.theme+".geojson",{
|
||||
mimetype: "application/vnd.geo+json"
|
||||
})
|
||||
})
|
||||
]);
|
||||
),
|
||||
t.orDownload,
|
||||
new SubtleButton(Svg.download_svg(), t.downloadGeojson).OnClickWithLoading(
|
||||
"Preparing your download",
|
||||
async () => {
|
||||
const geojson = {
|
||||
type: "FeatureCollection",
|
||||
features: params.features,
|
||||
}
|
||||
Utils.offerContentsAsDownloadableFile(
|
||||
JSON.stringify(geojson),
|
||||
"prepared_import_" + params.theme + ".geojson",
|
||||
{
|
||||
mimetype: "application/vnd.geo+json",
|
||||
}
|
||||
)
|
||||
}
|
||||
),
|
||||
])
|
||||
this.SetClass("flex flex-col")
|
||||
|
||||
this.Value = introduction.GetValue().map(intro => {
|
||||
return {
|
||||
features: params.features,
|
||||
wikilink: wikilink.GetValue().data,
|
||||
intro,
|
||||
source: source.GetValue().data,
|
||||
theme: params.theme
|
||||
}
|
||||
}, [wikilink.GetValue(), source.GetValue()])
|
||||
|
||||
this.IsValid = this.Value.map(obj => {
|
||||
if (obj === undefined) {
|
||||
return false;
|
||||
}
|
||||
if ([ obj.features, obj.intro, obj.wikilink, obj.source].some(v => v === undefined)){
|
||||
return false;
|
||||
}
|
||||
|
||||
try{
|
||||
const url = new URL(obj.wikilink)
|
||||
if(url.hostname.toLowerCase() !== "wiki.openstreetmap.org"){
|
||||
return false;
|
||||
this.Value = introduction.GetValue().map(
|
||||
(intro) => {
|
||||
return {
|
||||
features: params.features,
|
||||
wikilink: wikilink.GetValue().data,
|
||||
intro,
|
||||
source: source.GetValue().data,
|
||||
theme: params.theme,
|
||||
}
|
||||
}catch(e){
|
||||
},
|
||||
[wikilink.GetValue(), source.GetValue()]
|
||||
)
|
||||
|
||||
this.IsValid = this.Value.map((obj) => {
|
||||
if (obj === undefined) {
|
||||
return false
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
if ([obj.features, obj.intro, obj.wikilink, obj.source].some((v) => v === undefined)) {
|
||||
return false
|
||||
}
|
||||
|
||||
try {
|
||||
const url = new URL(obj.wikilink)
|
||||
if (url.hostname.toLowerCase() !== "wiki.openstreetmap.org") {
|
||||
return false
|
||||
}
|
||||
} catch (e) {
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue