Fix typescript warnings

This commit is contained in:
wjtje 2023-02-03 15:13:05 +01:00 committed by Pieter Vander Vennet
parent b1b4e6acba
commit 8743fa6192
2 changed files with 55 additions and 48 deletions

View file

@ -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>

View file

@ -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}