forked from MapComplete/MapComplete
Fix typescript warnings
This commit is contained in:
parent
b1b4e6acba
commit
8743fa6192
2 changed files with 55 additions and 48 deletions
|
@ -1,44 +1,45 @@
|
|||
<script lang="ts">
|
||||
import { Store, UIEventSource } from "../../Logic/UIEventSource";
|
||||
import { Tiles } from "../../Models/TileRange";
|
||||
import { Utils } from "../../Utils";
|
||||
import global_community from "../../assets/community_index_global_resources.json";
|
||||
import ContactLink from "./ContactLink.svelte";
|
||||
import { GeoOperations } from "../../Logic/GeoOperations";
|
||||
import Translations from "../i18n/Translations";
|
||||
import ToSvelte from "../Base/ToSvelte.svelte";
|
||||
import { ImmutableStore } from "../../Logic/UIEventSource.js";
|
||||
import { Store, UIEventSource } from "../../Logic/UIEventSource"
|
||||
import { Tiles } from "../../Models/TileRange"
|
||||
import { Utils } from "../../Utils"
|
||||
import global_community from "../../assets/community_index_global_resources.json"
|
||||
import ContactLink from "./ContactLink.svelte"
|
||||
import { GeoOperations } from "../../Logic/GeoOperations"
|
||||
import Translations from "../i18n/Translations"
|
||||
import ToSvelte from "../Base/ToSvelte.svelte"
|
||||
import { Feature, Geometry, GeometryCollection } from "@turf/turf"
|
||||
|
||||
export let locationControl: Store<{ lat: number, lon: number }>;
|
||||
const tileToFetch: Store<string> = locationControl.mapD(l => {
|
||||
const t = Tiles.embedded_tile(l.lat, l.lon, 6);
|
||||
return `https://raw.githubusercontent.com/pietervdvn/MapComplete-data/main/community_index/tile_${t.z}_${t.x}_${t.y}.geojson`;
|
||||
});
|
||||
export let locationControl: Store<{ lat: number; lon: number }>
|
||||
const tileToFetch: Store<string> = locationControl.mapD((l) => {
|
||||
const t = Tiles.embedded_tile(l.lat, l.lon, 6)
|
||||
return `https://raw.githubusercontent.com/pietervdvn/MapComplete-data/main/community_index/tile_${t.z}_${t.x}_${t.y}.geojson`
|
||||
})
|
||||
const t = Translations.t.communityIndex
|
||||
const resources = new UIEventSource<[]>([]);
|
||||
const resources = new UIEventSource<
|
||||
Feature<Geometry | GeometryCollection, { resources; nameEn: string }>[]
|
||||
>([])
|
||||
|
||||
tileToFetch.addCallbackAndRun(async url => {
|
||||
const data = await Utils.downloadJsonCached(url, 24 * 60 * 60);
|
||||
if (data === undefined) {
|
||||
return;
|
||||
}
|
||||
resources.setData(data.features);
|
||||
tileToFetch.addCallbackAndRun(async (url) => {
|
||||
const data = await Utils.downloadJsonCached(url, 24 * 60 * 60)
|
||||
if (data === undefined) {
|
||||
return
|
||||
}
|
||||
);
|
||||
|
||||
const filteredResources = resources.map(features => features.filter(f => {
|
||||
return GeoOperations.inside([locationControl.data.lon, locationControl.data.lat], f)
|
||||
}),
|
||||
[locationControl]);
|
||||
|
||||
resources.setData(data.features)
|
||||
})
|
||||
|
||||
const filteredResources = resources.map(
|
||||
(features) =>
|
||||
features.filter((f) => {
|
||||
return GeoOperations.inside([locationControl.data.lon, locationControl.data.lat], f)
|
||||
}),
|
||||
[locationControl]
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
<div>
|
||||
<ToSvelte construct={t.intro} />
|
||||
{#each $filteredResources as feature}
|
||||
<ContactLink country={feature.properties} />
|
||||
{/each}
|
||||
<ContactLink country={{resources:global_community, nameEn: "Global resources"}} />
|
||||
<ContactLink country={{ resources: global_community, nameEn: "Global resources" }} />
|
||||
</div>
|
||||
|
|
|
@ -1,20 +1,27 @@
|
|||
<script lang="ts">
|
||||
// A contact link indicates how a mapper can contact their local community
|
||||
// A contact link indicates how a mapper can contact their local community
|
||||
// The _properties_ of a community feature
|
||||
import Locale from "../i18n/Locale.js";
|
||||
import Translations from "../i18n/Translations";
|
||||
import ToSvelte from "../Base/ToSvelte.svelte";
|
||||
import * as native from "../../assets/language_native.json";
|
||||
import { TypedTranslation } from "../i18n/Translation";
|
||||
import Locale from "../i18n/Locale.js"
|
||||
import Translations from "../i18n/Translations"
|
||||
import ToSvelte from "../Base/ToSvelte.svelte"
|
||||
import * as native from "../../assets/language_native.json"
|
||||
import { TypedTranslation } from "../i18n/Translation"
|
||||
|
||||
const availableTranslationTyped: TypedTranslation<{ native: string }> = Translations.t.communityIndex.available;
|
||||
const availableTranslation = availableTranslationTyped.OnEveryLanguage((s, ln) => s.replace("{native}", native[ln] ?? ln));
|
||||
export let country: { resources; nameEn: string };
|
||||
let resources: { id: string, resolved: Record<string, string>, languageCodes: string[] }[] = []
|
||||
$: resources = Array.from(Object.values(country?.resources ?? {}));
|
||||
|
||||
const language = Locale.language;
|
||||
const availableTranslationTyped: TypedTranslation<{ native: string }> =
|
||||
Translations.t.communityIndex.available
|
||||
const availableTranslation = availableTranslationTyped.OnEveryLanguage((s, ln) =>
|
||||
s.replace("{native}", native[ln] ?? ln)
|
||||
)
|
||||
export let country: { resources; nameEn: string }
|
||||
let resources: {
|
||||
id: string
|
||||
resolved: Record<string, string>
|
||||
languageCodes: string[]
|
||||
type: string
|
||||
}[] = []
|
||||
$: resources = Array.from(Object.values(country?.resources ?? {}))
|
||||
|
||||
const language = Locale.language
|
||||
</script>
|
||||
|
||||
<div>
|
||||
|
@ -26,20 +33,19 @@
|
|||
<img
|
||||
class="w-8 h-8 m-2"
|
||||
src={"https://raw.githubusercontent.com/osmlab/osm-community-index/main/dist/img/" +
|
||||
resource.type +
|
||||
".svg"}
|
||||
resource.type +
|
||||
".svg"}
|
||||
/>
|
||||
<div class="flex flex-col">
|
||||
<a href={resource.resolved.url} target="_blank" rel="noreferrer nofollow" class="font-bold">
|
||||
{resource.resolved.name ?? resource.resolved.url}
|
||||
</a>
|
||||
{resource.resolved?.description}
|
||||
{#if (resource.languageCodes?.indexOf($language) >= 0)}
|
||||
{#if resource.languageCodes?.indexOf($language) >= 0}
|
||||
<span class="border-2 rounded-full border-lime-500 text-sm w-fit px-2">
|
||||
<ToSvelte construct={() => availableTranslation.Clone()} />
|
||||
<ToSvelte construct={() => availableTranslation.Clone()} />
|
||||
</span>
|
||||
{/if}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{/each}
|
||||
|
|
Loading…
Reference in a new issue