From e1700608e4bf8f3af1a9bb576224ca14c9d06a5c Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Mon, 31 Jul 2017 18:34:17 +0200 Subject: [PATCH] link on element provides to search results on the map --- .../js/gui/leftPanel/PublicationListDialog.js | 101 ++++++++++-------- 1 file changed, 56 insertions(+), 45 deletions(-) diff --git a/frontend-js/src/main/js/gui/leftPanel/PublicationListDialog.js b/frontend-js/src/main/js/gui/leftPanel/PublicationListDialog.js index 6cd57ed65f..8288248455 100644 --- a/frontend-js/src/main/js/gui/leftPanel/PublicationListDialog.js +++ b/frontend-js/src/main/js/gui/leftPanel/PublicationListDialog.js @@ -64,51 +64,62 @@ PublicationListDialog.prototype._dataTableAjaxCall = function(data, callback) { sortColumn : self.getColumnsDefinition()[data.order[0].column].name, sortOrder : data.order[0].dir, search : data.search.value, - }) - .then( - function(publicationList) { - var out = []; - var allElements = []; - for (var i = 0; i < publicationList.data.length; i++) { - var publication = publicationList.data[i].publication.article; - var elements = publicationList.data[i].elements; - - var row = []; - row[0] = "<a href='" + publication.link + "'>" + publication.id + "</a>"; - row[1] = publication.title; - row[2] = publication.authors.join(); - row[3] = publication.journal; - row[4] = publication.year; - row[5] = "<div>"; - for (var j = 0; j < elements.length; j++) { - row[5] += "<a name='" + elements[j].id + "' href='#'>" + elements[j].type + ":" + elements[j].id - + "</a>, "; - allElements.push(new IdentifiedElement(elements[j])); - } - row[5] += "</div>"; - out.push(row); - } - callback({ - draw : data.draw, - recordsTotal : publicationList.totalSize, - recordsFiltered : publicationList.filteredSize, - data : out, - }); - var promises = []; - allElements.forEach(function(element) { - promises.push(self.getMap().getSubmapById(element.getModelId()).getModel().getByIdentifiedElement( - element, true).then(function(elementData) { - var name = null; - if (elementData instanceof Alias) { - name = elementData.getName(); - } else if (elementData instanceof Reaction) { - name = elementData.getReactionId(); - } - $("a[name=" + elementData.getId() + "]", $(self.getElement())).html(name); - })); - }); - return Promise.all(promises); - }); + }).then(function(publicationList) { + var out = []; + var allElements = []; + for (var i = 0; i < publicationList.data.length; i++) { + var publication = publicationList.data[i].publication.article; + var elements = publicationList.data[i].elements; + + var row = []; + row[0] = "<a href='" + publication.link + "'>" + publication.id + "</a>"; + row[1] = publication.title; + row[2] = publication.authors.join(); + row[3] = publication.journal; + row[4] = publication.year; + row[5] = "<div>"; + for (var j = 0; j < elements.length; j++) { + row[5] += "<a name='" + elements[j].id + "' href='#'>" + elements[j].type + ":" + elements[j].id + "</a>, "; + allElements.push(new IdentifiedElement(elements[j])); + } + row[5] += "</div>"; + out.push(row); + } + callback({ + draw : data.draw, + recordsTotal : publicationList.totalSize, + recordsFiltered : publicationList.filteredSize, + data : out, + }); + var promises = []; + allElements.forEach(function(element) { + var model = self.getMap().getSubmapById(element.getModelId()).getModel(); + promises.push(model.getByIdentifiedElement(element, true).then(function(elementData) { + var name = null; + if (elementData instanceof Alias) { + name = elementData.getName(); + } else if (elementData instanceof Reaction) { + name = elementData.getReactionId(); + } + $("a[name=" + elementData.getId() + "]", $(self.getElement())).html(name); + var onclick = function() { + var searchOverlay = self.getMap().getOverlayByName("search"); + var query; + if (element.getType() === "ALIAS") { + query = "element:" + element.getId(); + } else { + query = "reaction:" + element.getId(); + } + self.getMap().openSubmap(elementData.getModelId()); + return searchOverlay.searchByQuery(query, true, true).then(function() { + $(self.getElement()).dialog("close"); + }).then(null, GuiConnector.alert); + } + $("a[name=" + elementData.getId() + "]", $(self.getElement())).click(onclick); + })); + }); + return Promise.all(promises); + }); }; PublicationListDialog.prototype.show = function() { -- GitLab