From 47b4cd752fed7e9149497aa60f4b476df0dabe32 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Tue, 11 Apr 2017 11:30:37 +0200 Subject: [PATCH] publication list uses data from api --- .../src/main/js/gui/PublicationListDialog.js | 55 ++++++++++++++----- .../test/js/gui/PublicationListDialog-test.js | 49 +++++++++++++++++ 2 files changed, 89 insertions(+), 15 deletions(-) create mode 100644 frontend-js/src/test/js/gui/PublicationListDialog-test.js diff --git a/frontend-js/src/main/js/gui/PublicationListDialog.js b/frontend-js/src/main/js/gui/PublicationListDialog.js index c986af6825..e77cde3e39 100644 --- a/frontend-js/src/main/js/gui/PublicationListDialog.js +++ b/frontend-js/src/main/js/gui/PublicationListDialog.js @@ -25,11 +25,16 @@ PublicationListDialog.prototype.createPublicationListDialogGui = function() { var self = this; var head = Functions.createElement({ type : "thead", - content : "<tr><th>Pubmed ID</th></tr>" + content : "<tr>" + "<th>Pubmed ID</th>" + // + "<th>Title</th>" + // + "<th>Authors</th>" + // + "<th>Journal</th>" + // + "<th>Year</th>" + // + "<th>Elements on map</th>" + // + "</tr>"// }); var body = Functions.createElement({ type : "tbody", - content : "<tr><td>1234</td></tr><tr><td>2</td></tr><tr><td>4</td></tr>" }); var tableElement = Functions.createElement({ type : "table", @@ -42,6 +47,38 @@ PublicationListDialog.prototype.createPublicationListDialogGui = function() { self.tableElement = tableElement; self.getElement().appendChild(tableElement); }; + +PublicationListDialog.prototype._dataTableAjaxCall = function(data, callback, settings) { + logger.debug(data); + return ServerConnector.getPublications({ + start : data.start, + length : data.length + }).then(function(publicationList) { + var out = []; + console.log(publicationList); + for (var i=0;i<publicationList.data.length;i++) { + var publication = publicationList.data[i].publication; + + 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] = "xxx"; + out.push(row); + } + logger.debug(out); + callback({ + draw : data.draw, + recordsTotal : publicationList.totalSize, + recordsFiltered : publicationList.totalSize, + data : out, + }); + return null; + }); +}; + PublicationListDialog.prototype.show = function() { var self = this; $(self.getElement()).dialog("open"); @@ -52,19 +89,7 @@ PublicationListDialog.prototype.show = function() { ordering : false, searching : false, ajax : function(data, callback, settings) { - var out = []; - for (var i = data.start, ien = data.start + data.length; i < ien; i++) { - out.push([ i + '-1' ]); - } - ServerConnector.getPublications({start: data.start, length:data.length}).then(function(publicationList){ - console.log(publicationList); - callback({ - draw : data.draw, - recordsTotal : data.totalSize, - recordsFiltered : data.totalSize, - data : out, - }); - }) + self._dataTableAjaxCall(data, callback, settings); }, }); } diff --git a/frontend-js/src/test/js/gui/PublicationListDialog-test.js b/frontend-js/src/test/js/gui/PublicationListDialog-test.js new file mode 100644 index 0000000000..da0de3e546 --- /dev/null +++ b/frontend-js/src/test/js/gui/PublicationListDialog-test.js @@ -0,0 +1,49 @@ +"use strict"; + +var Helper = require('../helper'); + +require("../mocha-config.js"); + +var PublicationListDialog = require('../../../main/js/gui/PublicationListDialog'); + +var chai = require('chai'); +var assert = chai.assert; +var logger = require('../logger'); + +describe('PublicationListDialog', function() { + + var helper; + before(function() { + helper = new Helper(); + }); + + it('contructor', function() { + var div = testDiv; + + var map = helper.createCustomMap(); + + var dialog = new PublicationListDialog({ + element : div, + customMap : map + }); + assert.equal(logger.getWarnings().length, 0); + + dialog.destroy(); + }); + + it('_dataTableAjaxCall', function() { + var div = testDiv; + var dialog = new PublicationListDialog({ + element : div, + customMap : helper.createCustomMap(), + }); + return dialog._dataTableAjaxCall({ + start : 0, + length : 10 + }, function() { + }, {}).then(function(){ + dialog.destroy(); + }); + }); + +}); -- GitLab