Skip to content
Snippets Groups Projects
Verified Commit 7b8c7d22 authored by Timm Fitschen's avatar Timm Fitschen
Browse files

WIP: map resolve-reference

parent d3b5883c
No related branches found
No related tags found
No related merge requests found
Pipeline #22609 failed
......@@ -601,9 +601,17 @@ var caosdb_map = new function () {
* @returns {HTMLElement} a popup element.
*/
this._make_map_popup = function (entity, datamodel, lat, lng) {
const id = getEntityID(entity);
const role_label = $(entity).find(
".label.caosdb-f-entity-role").first().clone();
".badge.caosdb-f-entity-role").first().clone();
const parent_list = caosdb_map.make_parent_labels(entity);
const entity_on_page = $(`#${id}`).length > 0;
const href = entity_on_page ? `#${id}` : connection.getBasePath() + `Entity/${id}`
const link_title = entity_on_page ? "Jump to this entity." : "Browse to this entity.";
const link = $(`<a class="float-end" title="${link_title}" href="${href}"/>`)
.append(`<i class="bi bi-box-arrow-up-right"></i></a>`);
const name = caosdb_map.make_entity_name_label(entity);
const dms_lat = L.NumberFormatter.toDMS(lat);
const dms_lng = L.NumberFormatter.toDMS(lng);
......@@ -617,6 +625,7 @@ var caosdb_map = new function () {
const ret = $('<div/>')
.append(role_label)
.append(parent_list)
.append(link)
.append(name)
.append(loc);
return ret[0];
......@@ -1498,23 +1507,22 @@ var caosdb_map = new function () {
*/
this.make_entity_name_label = function (entity) {
const name = getEntityName(entity);
const id = getEntityID(entity);
const entity_on_page = $(`#${id}`).length > 0;
const href = entity_on_page ? `#${id}` : connection.getBasePath() + `Entity/${id}`
const link_title = entity_on_page ? "Jump to this entity." : "Browse to this entity.";
const link = $(`<a title="${link_title}" href="${href}"/>`)
.addClass("pull-right")
.append(`<i class="bi bi-box-arrow-up-right"></i></a>`);
const name_label = $('<div/>')
const name_label = $('<div class=""/>')
// TODO move to global css
.css({
"margin-top": "4px",
"margin-bottom": "4px"
})
.text(name)
.append(link);
const id = getEntityID(entity);
resolve_references.resolve_reference(id).then(reference_info => {
name_label.append(reference_info.text);
if(reference_info.callback) {
name_label.append(reference_info.callback(reference_info.data));
}
});
return name_label[0];
}
......
......@@ -299,6 +299,8 @@ var resolve_references = new function () {
* understood and used by the `callback` function.
*/
this._cache = {};
/**
* Return a reference_info for an entity.
*
......@@ -318,40 +320,49 @@ var resolve_references = new function () {
* the entity which is to be resolved. @return {reference_info}
*/
this.resolve_reference = async function (id) {
const custom_reference_resolver = window["${BUILD_EXT_REFERENCES_CUSTOM_RESOLVER}"];
if (custom_reference_resolver && typeof custom_reference_resolver.resolve === "function") {
// try custom_reference_resolver and fall-back to standard implementation
var ret = await custom_reference_resolver.resolve(id);
if (ret) {
return ret;
}
}
if(!resolve_references._cache[id]) {
resolve_references._cache[id] = resolve_references
._resolve_reference_no_cache(id);
}
const entity = (await resolve_references.retrieve(id))[0];
// TODO handle multiple parents
const par = resolve_references.getParents(entity)[0] || {};
var ret = {
"text": id
};
if (getEntityHeadingAttribute(entity, "path") !==
undefined || par.name == "Image") {
// show file name
var pths = getEntityHeadingAttribute(entity, "path")
.split("/");
ret["text"] = pths[pths.length - 1];
} else if (par.name === "TestReferenced" && typeof resolve_references.test_resolver === "function") {
// this is a test case, initialized by the test suite.
ret = resolve_references.test_resolver(entity);
} else {
var name = getEntityName(entity);
if (typeof name !== "undefined" && name.length > 0) {
ret["text"] = name;
}
}
return await resolve_references._cache[id];
}
return ret;
this._resolve_reference_no_cache = async function (id) {
const custom_reference_resolver = window["${BUILD_EXT_REFERENCES_CUSTOM_RESOLVER}"];
if (custom_reference_resolver && typeof custom_reference_resolver.resolve === "function") {
// try custom_reference_resolver and fall-back to standard implementation
var ret = await custom_reference_resolver.resolve(id);
if (ret) {
return ret;
}
}
const entity = (await resolve_references.retrieve(id))[0];
// TODO handle multiple parents
const par = resolve_references.getParents(entity)[0] || {};
var ret = {
"text": id
};
if (getEntityHeadingAttribute(entity, "path") !==
undefined || par.name == "Image") {
// show file name
var pths = getEntityHeadingAttribute(entity, "path")
.split("/");
ret["text"] = pths[pths.length - 1];
} else if (par.name === "TestReferenced" && typeof resolve_references.test_resolver === "function") {
// this is a test case, initialized by the test suite.
ret = resolve_references.test_resolver(entity);
} else {
var name = getEntityName(entity);
if (typeof name !== "undefined" && name.length > 0) {
ret["text"] = name;
}
}
return ret;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment