90 lines
3.9 KiB
JavaScript
90 lines
3.9 KiB
JavaScript
|
"use strict";
|
||
|
var __extends = (this && this.__extends) || (function () {
|
||
|
var extendStatics = function (d, b) {
|
||
|
extendStatics = Object.setPrototypeOf ||
|
||
|
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||
|
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
||
|
return extendStatics(d, b);
|
||
|
};
|
||
|
return function (d, b) {
|
||
|
extendStatics(d, b);
|
||
|
function __() { this.constructor = d; }
|
||
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||
|
};
|
||
|
})();
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
exports.FeatureInfoBox = void 0;
|
||
|
var UIElement_1 = require("./UIElement");
|
||
|
var VerticalCombine_1 = require("./Base/VerticalCombine");
|
||
|
var TagRendering_1 = require("../Customizations/TagRendering");
|
||
|
var OsmLink_1 = require("../Customizations/Questions/OsmLink");
|
||
|
var WikipediaLink_1 = require("../Customizations/Questions/WikipediaLink");
|
||
|
var TagsFilter_1 = require("../Logic/TagsFilter");
|
||
|
var FeatureInfoBox = /** @class */ (function (_super) {
|
||
|
__extends(FeatureInfoBox, _super);
|
||
|
function FeatureInfoBox(tagsES, title, elementsToShow, changes, userDetails) {
|
||
|
var _this = _super.call(this, tagsES) || this;
|
||
|
_this._tagsES = tagsES;
|
||
|
_this._changes = changes;
|
||
|
_this._userDetails = userDetails;
|
||
|
_this.ListenTo(userDetails);
|
||
|
var deps = { tags: _this._tagsES, changes: _this._changes };
|
||
|
_this._infoboxes = [];
|
||
|
elementsToShow = elementsToShow !== null && elementsToShow !== void 0 ? elementsToShow : [];
|
||
|
for (var _i = 0, elementsToShow_1 = elementsToShow; _i < elementsToShow_1.length; _i++) {
|
||
|
var tagRenderingOption = elementsToShow_1[_i];
|
||
|
_this._infoboxes.push(tagRenderingOption.construct(deps));
|
||
|
}
|
||
|
title = title !== null && title !== void 0 ? title : new TagRendering_1.TagRenderingOptions({
|
||
|
mappings: [{ k: new TagsFilter_1.And([]), txt: "" }]
|
||
|
});
|
||
|
_this._title = new TagRendering_1.TagRenderingOptions(title.options).construct(deps);
|
||
|
_this._osmLink = new OsmLink_1.OsmLink().construct(deps);
|
||
|
_this._wikipedialink = new WikipediaLink_1.WikipediaLink().construct(deps);
|
||
|
return _this;
|
||
|
}
|
||
|
FeatureInfoBox.prototype.InnerRender = function () {
|
||
|
var info = [];
|
||
|
var questions = [];
|
||
|
for (var _i = 0, _a = this._infoboxes; _i < _a.length; _i++) {
|
||
|
var infobox = _a[_i];
|
||
|
if (infobox.IsKnown()) {
|
||
|
info.push(infobox);
|
||
|
}
|
||
|
else if (infobox.IsQuestioning()) {
|
||
|
questions.push(infobox);
|
||
|
}
|
||
|
}
|
||
|
var questionsHtml = "";
|
||
|
if (this._userDetails.data.loggedIn && questions.length > 0) {
|
||
|
// We select the most important question and render that one
|
||
|
var mostImportantQuestion = void 0;
|
||
|
var score = -1000;
|
||
|
for (var _b = 0, questions_1 = questions; _b < questions_1.length; _b++) {
|
||
|
var question = questions_1[_b];
|
||
|
if (mostImportantQuestion === undefined || question.Priority() > score) {
|
||
|
mostImportantQuestion = question;
|
||
|
score = question.Priority();
|
||
|
}
|
||
|
}
|
||
|
questionsHtml = mostImportantQuestion.Render();
|
||
|
}
|
||
|
return "<div class='featureinfobox'>" +
|
||
|
"<div class='featureinfoboxtitle'>" +
|
||
|
"<span>" +
|
||
|
this._title.Render() +
|
||
|
"</span>" +
|
||
|
this._wikipedialink.Render() +
|
||
|
this._osmLink.Render() +
|
||
|
"</div>" +
|
||
|
"<div class='infoboxcontents'>" +
|
||
|
new VerticalCombine_1.VerticalCombine(info, "infobox-information ").Render() +
|
||
|
questionsHtml +
|
||
|
"</div>" +
|
||
|
"" +
|
||
|
"</div>";
|
||
|
};
|
||
|
return FeatureInfoBox;
|
||
|
}(UIElement_1.UIElement));
|
||
|
exports.FeatureInfoBox = FeatureInfoBox;
|