From c5a49f46d7bc787023f0232514b16b14169c7c04 Mon Sep 17 00:00:00 2001 From: parkera <parkera> Date: Tue, 7 Jun 2016 12:51:41 +0000 Subject: [PATCH] SSDM-3632 : Batch delete on sample table - add on sample links SVN: 36642 --- .../js/views/DataGrid/DataGridController.js | 7 ++-- .../js/views/SampleForm/widgets/LinksView.js | 12 +++++-- .../webapps/eln-lims/html/lib/grid/js/Grid.js | 32 ++++++++++++++++++- 3 files changed, 46 insertions(+), 5 deletions(-) diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataGrid/DataGridController.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataGrid/DataGridController.js index c6ea3fdad5f..1b8cfc13b10 100644 --- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataGrid/DataGridController.js +++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataGrid/DataGridController.js @@ -24,7 +24,7 @@ function DataGridController(title, columns, data, rowClickEventHandler, showAllC window.alert("[TO-DELETE] Empty configKey during the table init, this should never happen, tell the developers."); } - this.init = function($container) { + this.init = function($container, extraOptions) { var webAppId = "ELN-LIMS"; mainController.serverFacade.openbisServer.getWebAppSettings(webAppId, function(response) { var settings = response.result.settings; @@ -53,9 +53,12 @@ function DataGridController(title, columns, data, rowClickEventHandler, showAllC if(rowClickEventHandler) { _this._grid.addRowClickListener(rowClickEventHandler); } + if(extraOptions) { + _this._grid.addExtraOptions(extraOptions); + } + _this._dataGridModel = new DataGridModel(title, columns, data, rowClickEventHandler, _this._grid.render(), isMultiselectable); _this._dataGridView = new DataGridView(this, _this._dataGridModel); - _this._dataGridView.repaint($container); }); } diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/widgets/LinksView.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/widgets/LinksView.js index 08b0dfde97b..2dede65c60a 100644 --- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/widgets/LinksView.js +++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/widgets/LinksView.js @@ -355,8 +355,16 @@ function LinksView(linksController, linksModel) { $container.empty().hide(); } - var dataGrid = SampleDataGridUtil.getSampleDataGrid(sampleTypeCode, samples, rowClick, null, null, null, true, true); - dataGrid.init($gridContainer); + var extraOptions = []; + extraOptions.push({ name : "Add all", action : function(selected) { + for(var sIdx = 0; sIdx < selected.length; sIdx++) { + linksController.addSample(selected[sIdx]); + } + $container.empty().hide(); + }}); + + var dataGrid = SampleDataGridUtil.getSampleDataGrid(sampleTypeCode, samples, rowClick, null, null, null, true, true, true); + dataGrid.init($gridContainer, extraOptions); } //Check Cache and Show Table diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/lib/grid/js/Grid.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/lib/grid/js/Grid.js index 452c12623d5..78cf54ae496 100644 --- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/lib/grid/js/Grid.js +++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/lib/grid/js/Grid.js @@ -78,7 +78,10 @@ $.extend(Grid.prototype, { } } } - }); + }); + $checkbox.click(function(e) { + e.stopPropagation(); + }); return $checkbox; } }); @@ -195,6 +198,10 @@ $.extend(Grid.prototype, { return this.columns; }, + addExtraOptions : function(extraOptions) { + this.extraOptions = extraOptions; + }, + renderDropDownOptions: function() { var thisGrid = this; var columnList = thisGrid.panel.find(".optionsDropdown").find("ul"); @@ -263,6 +270,29 @@ $.extend(Grid.prototype, { columnList.append(itemARAC); + if(this.extraOptions) { + for(var oIdx = 0; oIdx < this.extraOptions.length; oIdx++) { + var option = this.extraOptions[oIdx]; + var extraLabel = $("<label>", { style : 'white-space: nowrap; cursor:pointer;' }) + .attr("role", "menuitem") + .append(option.name); + + var extraItem = $("<li>") + .attr("role", "presentation") + .attr("style", "margin-left: 5px; margin-right: 5px;") + .append(extraLabel); + + var getClick = function(option) { + return function() { + option.action(thisGrid.getSelected()); + } + } + + extraItem.click(getClick(option)); + + columnList.append(extraItem); + } + } }, exportTSV : function(isAllRowsOrVisible, isAllColumnsOrVisible) { -- GitLab