From 33569da7a2dd869988bc2e8fd767a76b21596b9d Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Fri, 28 Sep 2018 10:45:53 +0200 Subject: [PATCH] default plugin list contains name and version --- frontend-js/src/main/js/gui/PluginDialog.js | 40 +++++++---- .../src/test/js/gui/PluginDialog-test.js | 70 +++++++++++++++++++ 2 files changed, 95 insertions(+), 15 deletions(-) create mode 100644 frontend-js/src/test/js/gui/PluginDialog-test.js diff --git a/frontend-js/src/main/js/gui/PluginDialog.js b/frontend-js/src/main/js/gui/PluginDialog.js index ef54a43fcf..19a0b2488a 100644 --- a/frontend-js/src/main/js/gui/PluginDialog.js +++ b/frontend-js/src/main/js/gui/PluginDialog.js @@ -13,6 +13,7 @@ var Promise = require('bluebird'); * @param {CustomMap} params.customMap * @param {Configuration} params.configuration * @param {Project} params.project + * @param {PluginManager} params.pluginManager * @param {ServerConnector} [params.serverConnector] * * @constructor @@ -23,6 +24,7 @@ function PluginDialog(params) { AbstractGuiElement.call(this, params); var self = this; self.setPluginManager(params.pluginManager); + // @type {PluginData[]} self._knownPlugins = []; } @@ -86,16 +88,19 @@ PluginDialog.prototype._createPluginGui = function () { for (i = 0; i < self._knownPlugins.length; i++) { var pluginData = self._knownPlugins[i]; - var url = pluginData.url; - var pluginUrl = Functions.createElement({ - type: "input", - value: url, - style: "color:#999999" - }); - pluginUrl.readOnly = true; - var button; - if (!loadedPlugins[url]) { + if (!loadedPlugins[pluginData.getUrls()[0]]) { + var pluginUrl = Functions.createElement({ + type: "input", + value: pluginData.getUrls()[0], + style: "color:#999999" + }); + var pluginName = Functions.createElement({ + type: "span", + content: pluginData.getName() + " (" + pluginData.getVersion() + ")" + }); + pluginUrl.readOnly = true; + var button; button = Functions.createElement({ type: "button", content: "LOAD", @@ -105,10 +110,10 @@ PluginDialog.prototype._createPluginGui = function () { }).then(null, GuiConnector.alert); } }); - } - $(button).data("url", url); + $(button).data("url", pluginData.getUrls()[0]); - pluginFormTab.appendChild(guiUtils.createTableRow([Functions.createElement({type: "span"}), pluginUrl, button])); + pluginFormTab.appendChild(guiUtils.createTableRow([pluginName, pluginUrl, button])); + } } for (i = 0; i < plugins.length; i++) { var plugin = plugins[i]; @@ -122,9 +127,14 @@ PluginDialog.prototype._createPluginGui = function () { })(); pluginUrl = Functions.createElement({ type: "input", - value: plugins[i].getOptions().url, + value: plugin.getOptions().url, style: "color:#999999" }); + pluginName = Functions.createElement({ + type: "span", + content: plugin.getName() + " (" + plugin.getVersion() + ")" + }); + pluginUrl.readOnly = true; button = Functions.createElement({ type: "button", @@ -132,7 +142,7 @@ PluginDialog.prototype._createPluginGui = function () { onclick: removePlugin }); - pluginFormTab.appendChild(guiUtils.createTableRow([Functions.createElement({type: "span"}), pluginUrl, button])); + pluginFormTab.appendChild(guiUtils.createTableRow([pluginName, pluginUrl, button])); } }; @@ -147,7 +157,7 @@ PluginDialog.prototype.init = function () { for (var i = 0; i < pluginsData.length; i++) { var pluginData = pluginsData[i]; if (pluginData.isPublic()) { - self._knownPlugins.push({url: self.getServerConnector().getServerBaseUrl() + pluginData.getUrls()[0]}); + self._knownPlugins.push(pluginData); } } }); diff --git a/frontend-js/src/test/js/gui/PluginDialog-test.js b/frontend-js/src/test/js/gui/PluginDialog-test.js new file mode 100644 index 0000000000..8523d0a49e --- /dev/null +++ b/frontend-js/src/test/js/gui/PluginDialog-test.js @@ -0,0 +1,70 @@ +"use strict"; + +require("../mocha-config.js"); +var ServerConnector = require('../ServerConnector-mock'); + +var CustomMap = require('../../../main/js/map/CustomMap'); +var PluginData = require('../../../main/js/map/data/PluginData'); +var PluginDialog = require('../../../main/js/gui/PluginDialog'); +var PluginManager= require('../../../main/js/plugin/PluginManager'); + +var chai = require('chai'); +var assert = chai.assert; +var logger = require('../logger'); + +describe('PluginDialog', function () { + + it('init', function () { + var pluginDialog; + return ServerConnector.getProject().then(function (project) { + var map = helper.createCustomMap(project); + + pluginDialog = new PluginDialog({ + element: testDiv, + customMap: map, + pluginManager: new PluginManager({ + project: project, + customMap: map, + element: testDiv, + configuration: helper.getConfiguration() + }), + configuration: helper.getConfiguration() + }); + return pluginDialog.init(); + }).then(function(){ + return pluginDialog.destroy(); + }); + }); + + it('open', function () { + var pluginDialog; + return ServerConnector.getProject().then(function (project) { + var map = helper.createCustomMap(project); + + pluginDialog = new PluginDialog({ + element: testDiv, + customMap: map, + pluginManager: new PluginManager({ + project: project, + customMap: map, + element: testDiv, + configuration: helper.getConfiguration() + }), + configuration: helper.getConfiguration() + }); + return pluginDialog.init(); + }).then(function(){ + pluginDialog._knownPlugins.push(new PluginData({ + urls: [], + name: "x", + hash: "8f2112859d40de86dacc1994a224ea3d", + version: "0.0.1", + isPublic:"true" + })); + return pluginDialog.open(); + }).then(function(){ + return pluginDialog.destroy(); + }); + }); + +}); -- GitLab