Skip to content
Snippets Groups Projects
Commit 6e6ccdad authored by Piotr Gawron's avatar Piotr Gawron
Browse files

when user has no access to edit map he cannot click edit/remove button

parent 81aa3dd8
No related branches found
No related tags found
1 merge request!333Resolve "User privileges"
...@@ -34,6 +34,7 @@ function Admin(options) { ...@@ -34,6 +34,7 @@ function Admin(options) {
self.setElement(options.getElement()); self.setElement(options.getElement());
self.setConfiguration(options.getConfiguration()); self.setConfiguration(options.getConfiguration());
self.setServerConnector(options.getServerConnector());
self.setGuiUtils(new GuiUtils()); self.setGuiUtils(new GuiUtils());
self._createGui(); self._createGui();
} }
...@@ -116,7 +117,8 @@ Admin.prototype.addTab = function (params, navElement, contentElement) { ...@@ -116,7 +117,8 @@ Admin.prototype.addTab = function (params, navElement, contentElement) {
element: contentDiv, element: contentDiv,
name: params.name, name: params.name,
project: self.getProject(), project: self.getProject(),
configuration: self.getConfiguration() configuration: self.getConfiguration(),
serverConnector: self.getServerConnector()
})); }));
}; };
...@@ -169,4 +171,21 @@ Admin.prototype.destroy = function () { ...@@ -169,4 +171,21 @@ Admin.prototype.destroy = function () {
return Promise.all(promises); return Promise.all(promises);
}; };
/**
*
* @param {ServerConnector} serverConnector
*/
Admin.prototype.setServerConnector = function (serverConnector) {
this._serverConnector = serverConnector;
};
/**
*
* @returns {ServerConnector}
*/
Admin.prototype.getServerConnector = function () {
return this._serverConnector;
};
module.exports = Admin; module.exports = Admin;
...@@ -20,6 +20,7 @@ var xss = require('xss'); ...@@ -20,6 +20,7 @@ var xss = require('xss');
* @param {string} params.panelName * @param {string} params.panelName
* @param {boolean} params.scrollable * @param {boolean} params.scrollable
* @param {string} [params.helpTip] * @param {string} [params.helpTip]
* @param {ServerConnector} [params.serverConnector]
* @param params.parent * @param params.parent
* *
* @constructor * @constructor
...@@ -32,6 +33,7 @@ function Panel(params) { ...@@ -32,6 +33,7 @@ function Panel(params) {
var self = this; var self = this;
self.setParent(params.parent); self.setParent(params.parent);
self.setServerConnector(params.serverConnector);
var configuration = params.configuration; var configuration = params.configuration;
if (params.configuration === undefined) { if (params.configuration === undefined) {
configuration = self.getMap().getConfiguration(); configuration = self.getMap().getConfiguration();
...@@ -303,8 +305,19 @@ Panel.prototype.destroy = function () { ...@@ -303,8 +305,19 @@ Panel.prototype.destroy = function () {
* @returns {ServerConnector} * @returns {ServerConnector}
*/ */
Panel.prototype.getServerConnector = function () { Panel.prototype.getServerConnector = function () {
if (this._serverConnector !== undefined) {
return this._serverConnector;
}
return this.getMap().getServerConnector(); return this.getMap().getServerConnector();
}; };
/**
*
* @param {ServerConnector} serverConnector
*/
Panel.prototype.setServerConnector = function (serverConnector) {
this._serverConnector = serverConnector;
};
module.exports = Panel; module.exports = Panel;
...@@ -152,14 +152,25 @@ MapsAdminPanel.prototype._createProjectTableRow = function () { ...@@ -152,14 +152,25 @@ MapsAdminPanel.prototype._createProjectTableRow = function () {
return projectsRow; return projectsRow;
}; };
/**
*
* @returns {Promise}
*/
MapsAdminPanel.prototype.init = function () { MapsAdminPanel.prototype.init = function () {
var self = this; var self = this;
return ServerConnector.getProjects().then(function (projects) { return self.getServerConnector().getProjects().then(function (projects) {
return self.setProjects(projects); return self.setProjects(projects);
}); });
}; };
MapsAdminPanel.prototype.projectToTableRow = function (project, row) { /**
*
* @param {Project} project
* @param {Array} [row]
* @param {User} user
* @returns {Array}
*/
MapsAdminPanel.prototype.projectToTableRow = function (project, row, user) {
var self = this; var self = this;
var disease = self.getHtmlStringLink(project.getDisease()); var disease = self.getHtmlStringLink(project.getDisease());
var organism = self.getHtmlStringLink(project.getOrganism()); var organism = self.getHtmlStringLink(project.getOrganism());
...@@ -192,8 +203,12 @@ MapsAdminPanel.prototype.projectToTableRow = function (project, row) { ...@@ -192,8 +203,12 @@ MapsAdminPanel.prototype.projectToTableRow = function (project, row) {
row[3] = organism; row[3] = organism;
row[4] = status; row[4] = status;
row[5] = "<button name='showEditDialog' data='" + project.getProjectId() + "'><i class='fa fa-edit' style='font-size:17px'></i></button>"; var disabled = " disabled ";
row[6] = "<button name='removeProject' data='" + project.getProjectId() + "'><i class='fa fa-trash-o' style='font-size:17px'></button>"; if (user.hasPrivilege(self.getConfiguration().getPrivilegeType(PrivilegeType.CONFIGURATION_MANAGE))) {
disabled = "";
}
row[5] = "<button name='showEditDialog' data='" + project.getProjectId() + "'" + disabled + "><i class='fa fa-edit' style='font-size:17px'></i></button>";
row[6] = "<button name='removeProject' data='" + project.getProjectId() + "'" + disabled + "><i class='fa fa-trash-o' style='font-size:17px'></button>";
return row; return row;
}; };
...@@ -211,20 +226,28 @@ MapsAdminPanel.prototype.getHtmlStringLink = function (annotation) { ...@@ -211,20 +226,28 @@ MapsAdminPanel.prototype.getHtmlStringLink = function (annotation) {
}; };
/**
*
* @param {Project[]} projects
* @returns {Promise}
*/
MapsAdminPanel.prototype.setProjects = function (projects) { MapsAdminPanel.prototype.setProjects = function (projects) {
var self = this; var self = this;
var dataTable = $("[name='projectsTable']", self.getElement()).DataTable();
var data = []; return self.getServerConnector().getLoggedUser().then(function (user) {
var page = dataTable.page(); var dataTable = $("[name='projectsTable']", self.getElement()).DataTable();
var data = [];
for (var i = 0; i < projects.length; i++) { var page = dataTable.page();
var project = projects[i];
var rowData = self.projectToTableRow(project); for (var i = 0; i < projects.length; i++) {
self.addUpdateListener(project, rowData); var project = projects[i];
data.push(rowData); var rowData = self.projectToTableRow(project, undefined, user);
} self.addUpdateListener(project, rowData);
//it should be simplified, but I couldn't make it work data.push(rowData);
dataTable.clear().rows.add(data).page(page).draw(false).page(page).draw(false); }
//it should be simplified, but I couldn't make it work
dataTable.clear().rows.add(data).page(page).draw(false).page(page).draw(false);
});
}; };
MapsAdminPanel.prototype.addUpdateListener = function (project, dataTableRow) { MapsAdminPanel.prototype.addUpdateListener = function (project, dataTableRow) {
...@@ -238,12 +261,13 @@ MapsAdminPanel.prototype.addUpdateListener = function (project, dataTableRow) { ...@@ -238,12 +261,13 @@ MapsAdminPanel.prototype.addUpdateListener = function (project, dataTableRow) {
} }
} }
var listener = function () { var listener = function () {
self.projectToTableRow(project, dataTableRow); return self.getServerConnector().getLoggedUser().then(function (user) {
var row = $($("[name='projectsTable']", self.getElement())[0]).DataTable().row("#" + project.getProjectId()); self.projectToTableRow(project, dataTableRow, user);
if (row.length > 0) { var row = $($("[name='projectsTable']", self.getElement())[0]).DataTable().row("#" + project.getProjectId());
row.data(dataTableRow).draw(); if (row.length > 0) {
} row.data(dataTableRow).draw();
}
});
}; };
listener.listenerName = listenerName; listener.listenerName = listenerName;
project.addListener("onreload", listener); project.addListener("onreload", listener);
......
...@@ -18,7 +18,7 @@ PrivilegeType.prototype.constructor = PrivilegeType; ...@@ -18,7 +18,7 @@ PrivilegeType.prototype.constructor = PrivilegeType;
PrivilegeType.CONFIGURATION_MANAGE = 'CONFIGURATION_MANAGE'; PrivilegeType.CONFIGURATION_MANAGE = 'CONFIGURATION_MANAGE';
PrivilegeType.USER_MANAGEMENT = 'USER_MANAGEMENT'; PrivilegeType.USER_MANAGEMENT = 'USER_MANAGEMENT';
PrivilegeType.PROJECT_MANAGEMENT = 'PROJECT_MANAGEMENT';
PrivilegeType.prototype.setObjectType = function (objectType) { PrivilegeType.prototype.setObjectType = function (objectType) {
this._objectType = objectType; this._objectType = objectType;
......
...@@ -611,6 +611,7 @@ function createAdmin(params) { ...@@ -611,6 +611,7 @@ function createAdmin(params) {
if (!(params instanceof CustomMapOptions)) { if (!(params instanceof CustomMapOptions)) {
params = new CustomMapOptions(params); params = new CustomMapOptions(params);
} }
params.setServerConnector(ServerConnector);
initGlobals(params); initGlobals(params);
params.getElement().style.display = "table"; params.getElement().style.display = "table";
params.getElement().innerHTML = "<div style='vertical-align:middle;display:table-cell;text-align: center'>" params.getElement().innerHTML = "<div style='vertical-align:middle;display:table-cell;text-align: center'>"
......
...@@ -8,15 +8,20 @@ var logger = require('../../logger'); ...@@ -8,15 +8,20 @@ var logger = require('../../logger');
var assert = require('assert'); var assert = require('assert');
function createMapsAdminPanel(configuration) {
return new MapsAdminPanel({
element: testDiv,
configuration: configuration,
serverConnector: ServerConnector
});
}
describe('MapsAdminPanel', function () { describe('MapsAdminPanel', function () {
it('refresh', function () { it('refresh', function () {
var mapTab; var mapTab;
return ServerConnector.getConfiguration().then(function (configuration) { return ServerConnector.getConfiguration().then(function (configuration) {
mapTab = new MapsAdminPanel({ mapTab = createMapsAdminPanel(configuration);
element: testDiv,
configuration: configuration
});
return mapTab.init(); return mapTab.init();
}).then(function () { }).then(function () {
return mapTab.onRefreshClicked(); return mapTab.onRefreshClicked();
...@@ -28,10 +33,7 @@ describe('MapsAdminPanel', function () { ...@@ -28,10 +33,7 @@ describe('MapsAdminPanel', function () {
it('showLogs', function () { it('showLogs', function () {
var mapTab; var mapTab;
return ServerConnector.getConfiguration().then(function (configuration) { return ServerConnector.getConfiguration().then(function (configuration) {
mapTab = new MapsAdminPanel({ mapTab = createMapsAdminPanel(configuration);
element: testDiv,
configuration: configuration
});
return mapTab.init(); return mapTab.init();
}).then(function () { }).then(function () {
return mapTab.showLogs("sample", 'error'); return mapTab.showLogs("sample", 'error');
...@@ -45,10 +47,7 @@ describe('MapsAdminPanel', function () { ...@@ -45,10 +47,7 @@ describe('MapsAdminPanel', function () {
helper.loginAsAdmin(); helper.loginAsAdmin();
var mapTab; var mapTab;
return ServerConnector.getConfiguration().then(function (configuration) { return ServerConnector.getConfiguration().then(function (configuration) {
mapTab = new MapsAdminPanel({ mapTab = createMapsAdminPanel(configuration);
element: testDiv,
configuration: configuration
});
return mapTab.init(); return mapTab.init();
}).then(function () { }).then(function () {
return ServerConnector.getProject(); return ServerConnector.getProject();
...@@ -65,10 +64,7 @@ describe('MapsAdminPanel', function () { ...@@ -65,10 +64,7 @@ describe('MapsAdminPanel', function () {
it('default', function () { it('default', function () {
var mapTab; var mapTab;
return ServerConnector.getConfiguration().then(function (configuration) { return ServerConnector.getConfiguration().then(function (configuration) {
mapTab = new MapsAdminPanel({ mapTab = createMapsAdminPanel(configuration);
element: testDiv,
configuration: configuration
});
return mapTab.init(); return mapTab.init();
}).then(function () { }).then(function () {
return mapTab.onAddClicked(); return mapTab.onAddClicked();
...@@ -79,10 +75,7 @@ describe('MapsAdminPanel', function () { ...@@ -79,10 +75,7 @@ describe('MapsAdminPanel', function () {
it('close and reopen', function () { it('close and reopen', function () {
var mapTab; var mapTab;
return ServerConnector.getConfiguration().then(function (configuration) { return ServerConnector.getConfiguration().then(function (configuration) {
mapTab = new MapsAdminPanel({ mapTab = createMapsAdminPanel(configuration);
element: testDiv,
configuration: configuration
});
return mapTab.init(); return mapTab.init();
}).then(function () { }).then(function () {
return mapTab.onAddClicked(); return mapTab.onAddClicked();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment