diff --git a/src/main/webapp/js/detail/metadata.js b/src/main/webapp/js/detail/metadata.js index 2aa39f9e..47170dd8 100644 --- a/src/main/webapp/js/detail/metadata.js +++ b/src/main/webapp/js/detail/metadata.js @@ -265,22 +265,38 @@ var Metadata = (function (_self) { function createMainLinkTable() { //create external links for known link types - var typeIndex = $('thead tr th',$("#link-list")).map(function(i,v) {if ( $(v).text().toLowerCase()==='type') return i;}).filter(isFinite)[0]; + const typeIndex = $('thead tr th',$("#link-list")).map(function(i,v) {if ( $(v).text().toLowerCase()==='type') return i;}).filter(isFinite)[0]; $("tr",$("#link-list")).each( function (i,row) { - if (i==0) return; - var type = $($('td',row)[typeIndex]).text().toLowerCase(); - var name = $($('td',row)[0]).text(); - var url = getURL(name, type); + if (i === 0) return; + const type = $($('td', row)[typeIndex]).text().toLowerCase(); + const name = $($('td', row)[0]).text(); + let url = getURL(name, type); if (url) { - $($('td',row)[0]).wrapInner(''); + $($('td', row)[0]).wrapInner(''); } else { - $.getJSON( 'https://resolver.api.identifiers.org/'+type+':'+name , function (data) { - if (data && data.payload && data.payload.resolvedResources) { - var ebiResources = data.payload.resolvedResources.filter(function(o){return o?.providerCode==='ebi'}); - var url = (ebiResources.length ? ebiResources : data.payload.resolvedResources)[0].compactIdentifierResolvedUrl; - $($('td',row)[0]).wrapInner(''); - } - }) + url = 'https://resolver.api.identifiers.org/' + type + ':' + name; + const nsURL = 'https://registry.api.identifiers.org/restApi/namespaces/search/findByPrefix?prefix=' + type; + $.getJSON(nsURL, (data) => { + let embedded = false; + if (data["namespaceEmbeddedInLui"]) { + url = 'https://resolver.api.identifiers.org/' + name; + embedded = true; + } + $.getJSON(url, function (data) { + if (data && data.payload && data.payload.resolvedResources) { + const ebiResources = data.payload.resolvedResources.filter(function(o){return o?.providerCode==='ebi'}); + let id_org_url = "https://identifiers.org/" + (embedded ? name : type+":"+name); + // fallback: id_org_url = (data.payload.resolvedResources)[0].compactIdentifierResolvedUrl; + url = ebiResources.length ? ebiResources[0]["compactIdentifierResolvedUrl"] : id_org_url; + $($('td',row)[0]).wrapInner(''); + } + }).done(() => { + console.log(`Fetched successfully: ${url}`); + }).fail(() => { + console.log("namespaceEmbeddedInLui: ", embedded, "URL: ", url, ". This resource might not" + + " use the attribute namespaceEmbeddedInLui"); + }) + }); } $($('td',row)[0]).addClass("overflow-name-column"); });