forked from MapComplete/MapComplete
Add imgur attribution
This commit is contained in:
parent
31a64887a1
commit
9e9a600488
5 changed files with 115 additions and 21 deletions
54
UI/Image/ImgurImage.ts
Normal file
54
UI/Image/ImgurImage.ts
Normal file
|
@ -0,0 +1,54 @@
|
|||
import {UIEventSource} from "../UIEventSource";
|
||||
import {UIElement} from "../UIElement";
|
||||
import {LicenseInfo} from "../../Logic/Wikimedia";
|
||||
import {Imgur} from "../../Logic/Imgur";
|
||||
|
||||
|
||||
export class ImgurImage extends UIElement {
|
||||
|
||||
|
||||
/***
|
||||
* Dictionary from url to alreayd known license info
|
||||
*/
|
||||
static allLicenseInfos: any = {};
|
||||
private _imageMeta: UIEventSource<LicenseInfo>;
|
||||
private _imageLocation: string;
|
||||
|
||||
constructor(source: string) {
|
||||
super(undefined)
|
||||
this._imageLocation = source;
|
||||
if (ImgurImage.allLicenseInfos[source] !== undefined) {
|
||||
this._imageMeta = ImgurImage.allLicenseInfos[source];
|
||||
} else {
|
||||
this._imageMeta = new UIEventSource<LicenseInfo>(null);
|
||||
ImgurImage.allLicenseInfos[source] = this._imageMeta;
|
||||
const self = this;
|
||||
Imgur.getDescriptionOfImage(source, (license) => {
|
||||
self._imageMeta.setData(license)
|
||||
})
|
||||
}
|
||||
|
||||
this.ListenTo(this._imageMeta);
|
||||
|
||||
}
|
||||
|
||||
protected InnerRender(): string {
|
||||
const image = "<img src='" + this._imageLocation + "' " + "alt='' >";
|
||||
|
||||
if(this._imageMeta.data === null){
|
||||
return image;
|
||||
}
|
||||
|
||||
const attribution =
|
||||
"<span class='attribution-author'><b>" + (this._imageMeta.data.artist ?? "") + "</b></span>" + " <span class='license'>" + (this._imageMeta.data.licenseShortName ?? "") + "</span>";
|
||||
|
||||
return "<div class='imgWithAttr'>" +
|
||||
image +
|
||||
"<div class='attribution'>" +
|
||||
attribution +
|
||||
"</div>" +
|
||||
"</div>";
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -18,14 +18,15 @@ export class WikimediaImage extends UIElement {
|
|||
} else {
|
||||
this._imageMeta = new UIEventSource<LicenseInfo>(new LicenseInfo());
|
||||
WikimediaImage.allLicenseInfos[source] = this._imageMeta;
|
||||
const self = this;
|
||||
Wikimedia.LicenseData(source, (info) => {
|
||||
self._imageMeta.setData(info);
|
||||
})
|
||||
}
|
||||
|
||||
this.ListenTo(this._imageMeta);
|
||||
|
||||
const self = this;
|
||||
Wikimedia.LicenseData(source, (info) => {
|
||||
self._imageMeta.setData(info);
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
protected InnerRender(): string {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue