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