forked from MapComplete/MapComplete
Fix: style issue, types
This commit is contained in:
parent
3c20d2ca8d
commit
5932dc7ad4
7 changed files with 71 additions and 73 deletions
|
@ -695,14 +695,6 @@ video {
|
||||||
left: 0px;
|
left: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.right-4 {
|
|
||||||
right: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.top-4 {
|
|
||||||
top: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.right-1\/3 {
|
.right-1\/3 {
|
||||||
right: 33.333333%;
|
right: 33.333333%;
|
||||||
}
|
}
|
||||||
|
@ -779,6 +771,10 @@ video {
|
||||||
top: 0.75rem;
|
top: 0.75rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.top-4 {
|
||||||
|
top: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
.top-1 {
|
.top-1 {
|
||||||
top: 0.25rem;
|
top: 0.25rem;
|
||||||
}
|
}
|
||||||
|
@ -927,10 +923,6 @@ video {
|
||||||
margin: 1.75rem;
|
margin: 1.75rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.m-px {
|
|
||||||
margin: 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mx-2 {
|
.mx-2 {
|
||||||
margin-left: 0.5rem;
|
margin-left: 0.5rem;
|
||||||
margin-right: 0.5rem;
|
margin-right: 0.5rem;
|
||||||
|
@ -1001,10 +993,6 @@ video {
|
||||||
margin-right: 4rem;
|
margin-right: 4rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mb-4 {
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mt-4 {
|
.mt-4 {
|
||||||
margin-top: 1rem;
|
margin-top: 1rem;
|
||||||
}
|
}
|
||||||
|
@ -1037,6 +1025,10 @@ video {
|
||||||
margin-right: 0.25rem;
|
margin-right: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mb-4 {
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
.ml-1 {
|
.ml-1 {
|
||||||
margin-left: 0.25rem;
|
margin-left: 0.25rem;
|
||||||
}
|
}
|
||||||
|
@ -1125,10 +1117,6 @@ video {
|
||||||
margin-top: 0.375rem;
|
margin-top: 0.375rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mr-12 {
|
|
||||||
margin-right: 3rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.box-border {
|
.box-border {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
@ -1538,6 +1526,10 @@ video {
|
||||||
width: 2.75rem;
|
width: 2.75rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.w-5 {
|
||||||
|
width: 1.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
.w-1\/2 {
|
.w-1\/2 {
|
||||||
width: 50%;
|
width: 50%;
|
||||||
}
|
}
|
||||||
|
@ -1551,10 +1543,6 @@ video {
|
||||||
width: auto;
|
width: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.w-5 {
|
|
||||||
width: 1.25rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.w-16 {
|
.w-16 {
|
||||||
width: 4rem;
|
width: 4rem;
|
||||||
}
|
}
|
||||||
|
@ -2031,8 +2019,8 @@ video {
|
||||||
row-gap: 0.5rem;
|
row-gap: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.gap-x-4 {
|
.gap-x-1 {
|
||||||
column-gap: 1rem;
|
column-gap: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.gap-x-0\.5 {
|
.gap-x-0\.5 {
|
||||||
|
@ -2043,10 +2031,6 @@ video {
|
||||||
column-gap: 0px;
|
column-gap: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.gap-x-1 {
|
|
||||||
column-gap: 0.25rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.gap-x-2 {
|
.gap-x-2 {
|
||||||
column-gap: 0.5rem;
|
column-gap: 0.5rem;
|
||||||
}
|
}
|
||||||
|
@ -2356,6 +2340,10 @@ video {
|
||||||
border-radius: 0.5rem;
|
border-radius: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.rounded-none {
|
||||||
|
border-radius: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
.\!rounded-md {
|
.\!rounded-md {
|
||||||
border-radius: 0.375rem !important;
|
border-radius: 0.375rem !important;
|
||||||
}
|
}
|
||||||
|
@ -2471,6 +2459,10 @@ video {
|
||||||
border-width: 2px;
|
border-width: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.border-0 {
|
||||||
|
border-width: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
.\!border-0 {
|
.\!border-0 {
|
||||||
border-width: 0px !important;
|
border-width: 0px !important;
|
||||||
}
|
}
|
||||||
|
@ -2491,10 +2483,6 @@ video {
|
||||||
border-width: 10px;
|
border-width: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.border-0 {
|
|
||||||
border-width: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.border-x {
|
.border-x {
|
||||||
border-left-width: 1px;
|
border-left-width: 1px;
|
||||||
border-right-width: 1px;
|
border-right-width: 1px;
|
||||||
|
@ -2505,14 +2493,14 @@ video {
|
||||||
border-bottom-width: 1px;
|
border-bottom-width: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.border-b {
|
|
||||||
border-bottom-width: 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.border-b-2 {
|
.border-b-2 {
|
||||||
border-bottom-width: 2px;
|
border-bottom-width: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.border-b {
|
||||||
|
border-bottom-width: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
.border-l-4 {
|
.border-l-4 {
|
||||||
border-left-width: 4px;
|
border-left-width: 4px;
|
||||||
}
|
}
|
||||||
|
@ -3465,14 +3453,6 @@ video {
|
||||||
padding-top: 0px;
|
padding-top: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pl-5 {
|
|
||||||
padding-left: 1.25rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.pr-3 {
|
|
||||||
padding-right: 0.75rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.pl-4 {
|
.pl-4 {
|
||||||
padding-left: 1rem;
|
padding-left: 1rem;
|
||||||
}
|
}
|
||||||
|
@ -3481,6 +3461,14 @@ video {
|
||||||
padding-right: 1rem;
|
padding-right: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.pl-5 {
|
||||||
|
padding-left: 1.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pr-3 {
|
||||||
|
padding-right: 0.75rem;
|
||||||
|
}
|
||||||
|
|
||||||
.pl-3 {
|
.pl-3 {
|
||||||
padding-left: 0.75rem;
|
padding-left: 0.75rem;
|
||||||
}
|
}
|
||||||
|
@ -3551,16 +3539,16 @@ video {
|
||||||
line-height: 1rem;
|
line-height: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.text-base {
|
|
||||||
font-size: 1rem;
|
|
||||||
line-height: 1.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.text-lg {
|
.text-lg {
|
||||||
font-size: 1.125rem;
|
font-size: 1.125rem;
|
||||||
line-height: 1.75rem;
|
line-height: 1.75rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.text-base {
|
||||||
|
font-size: 1rem;
|
||||||
|
line-height: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
.text-3xl {
|
.text-3xl {
|
||||||
font-size: 1.875rem;
|
font-size: 1.875rem;
|
||||||
line-height: 2.25rem;
|
line-height: 2.25rem;
|
||||||
|
@ -3606,6 +3594,10 @@ video {
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.font-bold {
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
.font-extrabold {
|
.font-extrabold {
|
||||||
font-weight: 800;
|
font-weight: 800;
|
||||||
}
|
}
|
||||||
|
@ -3614,10 +3606,6 @@ video {
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
|
|
||||||
.font-bold {
|
|
||||||
font-weight: 700;
|
|
||||||
}
|
|
||||||
|
|
||||||
.font-normal {
|
.font-normal {
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
}
|
}
|
||||||
|
@ -7255,10 +7243,6 @@ svg.apply-fill path {
|
||||||
border-radius: 0.5rem;
|
border-radius: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sm\:border-4 {
|
|
||||||
border-width: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sm\:p-1 {
|
.sm\:p-1 {
|
||||||
padding: 0.25rem;
|
padding: 0.25rem;
|
||||||
}
|
}
|
||||||
|
@ -7543,10 +7527,6 @@ svg.apply-fill path {
|
||||||
padding: 1.5rem;
|
padding: 1.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.md\:p-3 {
|
|
||||||
padding: 0.75rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.md\:p-5 {
|
.md\:p-5 {
|
||||||
padding: 1.25rem;
|
padding: 1.25rem;
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,7 +68,7 @@ export default abstract class ImageProvider {
|
||||||
|
|
||||||
public abstract ExtractUrls(key: string, value: string): Promise<Promise<ProvidedImage>[]>
|
public abstract ExtractUrls(key: string, value: string): Promise<Promise<ProvidedImage>[]>
|
||||||
|
|
||||||
public abstract DownloadAttribution(providedImage: ProvidedImage): Promise<LicenseInfo>
|
public abstract DownloadAttribution(providedImage: {url: string, id: string}): Promise<LicenseInfo>
|
||||||
|
|
||||||
public abstract apiUrls(): string[]
|
public abstract apiUrls(): string[]
|
||||||
}
|
}
|
||||||
|
|
|
@ -97,11 +97,11 @@ export class Imgur extends ImageProvider implements ImageUploader {
|
||||||
const hash = url.substr("https://i.imgur.com/".length).split(/\.jpe?g/i)[0]
|
const hash = url.substr("https://i.imgur.com/".length).split(/\.jpe?g/i)[0]
|
||||||
|
|
||||||
const apiUrl = "https://api.imgur.com/3/image/" + hash
|
const apiUrl = "https://api.imgur.com/3/image/" + hash
|
||||||
const response = await Utils.downloadJsonCached(apiUrl, 365 * 24 * 60 * 60, {
|
const response = await Utils.downloadJsonCached<{data: {description: string, datetime: string, views: number}}>(apiUrl, 365 * 24 * 60 * 60, {
|
||||||
Authorization: "Client-ID " + Constants.ImgurApiKey,
|
Authorization: "Client-ID " + Constants.ImgurApiKey,
|
||||||
})
|
})
|
||||||
|
|
||||||
const descr: string = response.data.description ?? ""
|
const descr = response.data.description ?? ""
|
||||||
const data: any = {}
|
const data: any = {}
|
||||||
const imgurData = response.data
|
const imgurData = response.data
|
||||||
|
|
||||||
|
|
|
@ -133,7 +133,7 @@ export class Mapillary extends ImageProvider {
|
||||||
return [this.PrepareUrlAsync(key, value)]
|
return [this.PrepareUrlAsync(key, value)]
|
||||||
}
|
}
|
||||||
|
|
||||||
public async DownloadAttribution(providedImage: ProvidedImage): Promise<LicenseInfo> {
|
public async DownloadAttribution(providedImage: {id: string}): Promise<LicenseInfo> {
|
||||||
const mapillaryId = providedImage.id
|
const mapillaryId = providedImage.id
|
||||||
const metadataUrl =
|
const metadataUrl =
|
||||||
"https://graph.mapillary.com/" +
|
"https://graph.mapillary.com/" +
|
||||||
|
|
|
@ -120,7 +120,7 @@ export class WikimediaImageProvider extends ImageProvider {
|
||||||
return [Promise.resolve(this.UrlForImage("File:" + value))]
|
return [Promise.resolve(this.UrlForImage("File:" + value))]
|
||||||
}
|
}
|
||||||
|
|
||||||
public async DownloadAttribution(img: ProvidedImage): Promise<LicenseInfo> {
|
public async DownloadAttribution(img: {url: string}): Promise<LicenseInfo> {
|
||||||
const filename = WikimediaImageProvider.ExtractFileName(img.url)
|
const filename = WikimediaImageProvider.ExtractFileName(img.url)
|
||||||
|
|
||||||
if (filename === "") {
|
if (filename === "") {
|
||||||
|
|
|
@ -215,6 +215,9 @@ class MapillaryFetcher implements ImageFetcher {
|
||||||
for (const img of response.data) {
|
for (const img of response.data) {
|
||||||
|
|
||||||
const c = img.computed_geometry.coordinates
|
const c = img.computed_geometry.coordinates
|
||||||
|
if(img.thumb_original_url === undefined){
|
||||||
|
continue
|
||||||
|
}
|
||||||
pics.push({
|
pics.push({
|
||||||
pictureUrl: img.thumb_original_url,
|
pictureUrl: img.thumb_original_url,
|
||||||
provider: "Mapillary",
|
provider: "Mapillary",
|
||||||
|
@ -269,7 +272,20 @@ export class CombinedFetcher {
|
||||||
if (src.data === undefined) {
|
if (src.data === undefined) {
|
||||||
src.setData(pics)
|
src.setData(pics)
|
||||||
} else {
|
} else {
|
||||||
const newList = [...src.data, ...pics]
|
const newList = []
|
||||||
|
const seenIds = new Set<string>()
|
||||||
|
for (const p4CPicture of [...src.data, ...pics]) {
|
||||||
|
const id = p4CPicture.pictureUrl
|
||||||
|
if(seenIds.has(id)){
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
newList.push(p4CPicture)
|
||||||
|
seenIds.add(id)
|
||||||
|
if(id === undefined){
|
||||||
|
|
||||||
|
console.log("Img:", p4CPicture)
|
||||||
|
}
|
||||||
|
}
|
||||||
NearbyImageUtils.sortByDistance(newList, lon, lat)
|
NearbyImageUtils.sortByDistance(newList, lon, lat)
|
||||||
src.setData(newList)
|
src.setData(newList)
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,17 +8,19 @@
|
||||||
/**
|
/**
|
||||||
* A small element showing the attribution of a single image
|
* A small element showing the attribution of a single image
|
||||||
*/
|
*/
|
||||||
export let image: ProvidedImage
|
export let image: Partial<ProvidedImage> & {id: string, url: string}
|
||||||
let license: Store<LicenseInfo> = UIEventSource.FromPromise(
|
let license: Store<LicenseInfo> = UIEventSource.FromPromise(
|
||||||
image.provider?.DownloadAttribution(image)
|
image.provider?.DownloadAttribution(image)
|
||||||
)
|
)
|
||||||
let icon = image.provider?.SourceIcon(image.id)?.SetClass("block h-8 w-8 pr-2")
|
let icon = image.provider?.SourceIcon(image.id)
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{#if $license !== undefined}
|
{#if $license !== undefined}
|
||||||
<div class="no-images flex rounded-lg bg-black p-0.5 pl-5 pr-3 text-sm text-white">
|
<div class="no-images flex rounded-lg bg-black p-0.5 pl-3 pr-3 text-sm text-white items-center">
|
||||||
{#if icon !== undefined}
|
{#if icon !== undefined}
|
||||||
<ToSvelte construct={icon} />
|
<div class="w-6 h-6 mr-2">
|
||||||
|
<ToSvelte construct={icon} />
|
||||||
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<div class="flex flex-col">
|
<div class="flex flex-col">
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue