Skip to content
Snippets Groups Projects
Commit 882f160b authored by felmer's avatar felmer
Browse files

SSDM-13643: Overview with experients and samples to shown on overview. Table...

SSDM-13643: Overview with experients and samples to shown on overview. Table with all experiments with bulk deletion and moving
parent 591c1839
No related branches found
No related tags found
1 merge request!40SSDM-13578 : 2PT : Database and V3 Implementation - include the new AFS "free"...
var ExperimentDataGridUtil = new function() { var ExperimentDataGridUtil = new function() {
this.getExperimentDataGrid = function(entities, rowClick, heightPercentage) { this.getExperimentDataGrid = function(entities, rowClick, multiselectable, heightPercentage) {
//Fill Columns model //Fill Columns model
var columns = []; var columns = [];
...@@ -129,6 +129,7 @@ var ExperimentDataGridUtil = new function() { ...@@ -129,6 +129,7 @@ var ExperimentDataGridUtil = new function() {
perm_id: entity.permId, perm_id: entity.permId,
type_perm_id: entity.experimentTypeCode type_perm_id: entity.experimentTypeCode
}, },
'$object' : entity,
'code' : entity.code, 'code' : entity.code,
'identifier' : entity.identifier, 'identifier' : entity.identifier,
'permId' : entity.permId, 'permId' : entity.permId,
...@@ -174,7 +175,7 @@ var ExperimentDataGridUtil = new function() { ...@@ -174,7 +175,7 @@ var ExperimentDataGridUtil = new function() {
//Create and return a data grid controller //Create and return a data grid controller
var configKey = "EXPERIMENT_TABLE"; var configKey = "EXPERIMENT_TABLE";
var dataGridController = new DataGridController(null, columns, [], dynamicColumnsFunc, getDataList, rowClick, false, configKey, null, { var dataGridController = new DataGridController(null, columns, [], dynamicColumnsFunc, getDataList, rowClick, false, configKey, multiselectable, {
fileFormat: DataGridExportOptions.FILE_FORMAT.XLS, fileFormat: DataGridExportOptions.FILE_FORMAT.XLS,
filePrefix: 'collections', filePrefix: 'collections',
fileContent: DataGridExportOptions.FILE_CONTENT.ENTITIES fileContent: DataGridExportOptions.FILE_CONTENT.ENTITIES
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
function ExperimentTableController(parentController, title, project, showInProjectOverview) { function ExperimentTableController(parentController, title, project, showInProjectOverview, extraOptions) {
this._parentController = parentController; this._parentController = parentController;
this._experimentTableModel = new ExperimentTableModel(title, project, showInProjectOverview); this._experimentTableModel = new ExperimentTableModel(title, project, showInProjectOverview);
this._experimentTableView = new ExperimentTableView(this, this._experimentTableModel); this._experimentTableView = new ExperimentTableView(this, this._experimentTableModel);
...@@ -66,8 +66,9 @@ function ExperimentTableController(parentController, title, project, showInProje ...@@ -66,8 +66,9 @@ function ExperimentTableController(parentController, title, project, showInProje
var rowClick = null; var rowClick = null;
//Create and display table //Create and display table
this._dataGridController = ExperimentDataGridUtil.getExperimentDataGrid(experiments, rowClick, 50); var multiselectable = extraOptions != null;
this._dataGridController.init(this._experimentTableView.getTableContainer()); this._dataGridController = ExperimentDataGridUtil.getExperimentDataGrid(experiments, rowClick, multiselectable, 50);
this._dataGridController.init(this._experimentTableView.getTableContainer(), extraOptions);
} }
this.refresh = function() this.refresh = function()
......
...@@ -30,10 +30,6 @@ function ExperimentTableView(experimentTableController, experimentTableModel) { ...@@ -30,10 +30,6 @@ function ExperimentTableView(experimentTableController, experimentTableModel) {
$container.append($title); $container.append($title);
} }
var toolbarModel = [];
toolbarModel.push({ component : this._showExperimentFromOverviewDropdown(), tooltip: null });
$container.append(FormUtil.getToolbar(toolbarModel));
$container.append(this._tableContainer); $container.append(this._tableContainer);
} }
...@@ -47,29 +43,4 @@ function ExperimentTableView(experimentTableController, experimentTableModel) { ...@@ -47,29 +43,4 @@ function ExperimentTableView(experimentTableController, experimentTableModel) {
this.getTypeSelector = function() { this.getTypeSelector = function() {
return this.typeSelector; return this.typeSelector;
} }
this._showExperimentFromOverviewDropdown = function() {
var _this = this;
var expDropModel = [];
var kindName = ELNDictionary.getExperimentsDualName();
expDropModel = [{value : "OVERVIEW", label : "Show only overview " + kindName, selected : this._experimentTableModel.showInProjectOverview },
{value : "ALL", label : "Show all " + kindName, selected : !this._experimentTableModel.showInProjectOverview }];
var $experimentDropdown = FormUtil.getDropdown(expDropModel, "Select what " + kindName + " to show");
$experimentDropdown.attr("id", "what-experiments-drop-down");
$experimentDropdown.change(function() {
switch($(this).val()){
case "OVERVIEW":
_this._experimentTableModel.showInProjectOverview = true;
break;
case "ALL":
_this._experimentTableModel.showInProjectOverview = false;
break;
}
_this._experimentTableController.init(_this._$container);
});
return $("<span>").append($experimentDropdown);
}
} }
\ No newline at end of file
...@@ -177,8 +177,8 @@ function ProjectFormView(projectFormController, projectFormModel) { ...@@ -177,8 +177,8 @@ function ProjectFormView(projectFormController, projectFormModel) {
} }
if (this._projectFormModel.mode !== FormMode.CREATE && !isInventoryProject) { if (this._projectFormModel.mode !== FormMode.CREATE && !isInventoryProject) {
$formColumn.append(this._createOverviewSection(projectIdentifier, hideShowOptionsModel));
$formColumn.append(this._createExperimentsSection(projectIdentifier, hideShowOptionsModel)); $formColumn.append(this._createExperimentsSection(projectIdentifier, hideShowOptionsModel));
$formColumn.append(this._createSamplesSection(hideShowOptionsModel));
} }
FormUtil.addOptionsToToolbar(toolbarModel, dropdownOptionsModel, hideShowOptionsModel, "PROJECT-VIEW"); FormUtil.addOptionsToToolbar(toolbarModel, dropdownOptionsModel, hideShowOptionsModel, "PROJECT-VIEW");
...@@ -284,7 +284,43 @@ function ProjectFormView(projectFormController, projectFormModel) { ...@@ -284,7 +284,43 @@ function ProjectFormView(projectFormController, projectFormModel) {
$description.hide(); $description.hide();
return $description; return $description;
} }
this._createOverviewSection = function(projectIdentifier, hideShowOptionsModel) {
var $overview = $("<div>", { id : "project-overview" });
$overview.append($("<legend>").append("Overview"));
var $overviewContainer = $("<div>");
$overview.append($overviewContainer);
$experimentsOverview = $("<div>");
$overviewContainer.append($("<h4>").append(ELNDictionary.ExperimentsELN));
$overviewContainer.append($experimentsOverview);
$samplesOverview = $("<div>");
$header = $("<h4>").append(ELNDictionary.Samples);
$overviewContainer.append($header);
$overviewContainer.append($samplesOverview);
var experimentTableController = new ExperimentTableController(this._projectFormController, null, jQuery.extend(true, {}, this._projectFormModel.project), true);
experimentTableController.init($experimentsOverview);
var sampleTableController = new SampleTableController(this._projectFormController, null, null, this._projectFormModel.project.permId, true, null, 40);
var views = {
header : $header,
content : $samplesOverview
}
sampleTableController.init(views);
$overview.hide();
hideShowOptionsModel.push({
label : "Overview",
section : "#project-overview",
beforeShowingAction : function() {
experimentTableController.refresh();
sampleTableController.refresh();
}
});
return $overview;
}
this._createExperimentsSection = function(projectIdentifier, hideShowOptionsModel) { this._createExperimentsSection = function(projectIdentifier, hideShowOptionsModel) {
var entityKindName = ELNDictionary.getExperimentsDualName(); var entityKindName = ELNDictionary.getExperimentsDualName();
var $experiments = $("<div>", { id : "project-experiments" }); var $experiments = $("<div>", { id : "project-experiments" });
...@@ -292,7 +328,24 @@ function ProjectFormView(projectFormController, projectFormModel) { ...@@ -292,7 +328,24 @@ function ProjectFormView(projectFormController, projectFormModel) {
$experiments.append($("<legend>").append(entityKindName)); $experiments.append($("<legend>").append(entityKindName));
$experiments.append($experimentsContainer); $experiments.append($experimentsContainer);
var experimentTableController = new ExperimentTableController(this._projectFormController, null, jQuery.extend(true, {}, this._projectFormModel.project), true); var _this = this;
var extraOptions = [];
extraOptions.push({ name : "Delete", action : function(selected) {
if(selected != undefined && selected.length == 0){
Util.showUserError("Please select at least one " + ELNDictionary.experimentELN + " to delete!");
} else {
_this._deleteExperiments(selected.map(e => e.permId));
}
}});
extraOptions.push({ name : "Move", action : function(selected) {
if(selected != undefined && selected.length == 0){
Util.showUserError("Please select at least one " + ELNDictionary.experimentELN + " to move!");
} else {
_this._moveExperiments(selected.map(s => s.permId));
}
}});
var experimentTableController = new ExperimentTableController(this._projectFormController, null, jQuery.extend(true, {}, this._projectFormModel.project),
false, extraOptions);
experimentTableController.init($experimentsContainer); experimentTableController.init($experimentsContainer);
$experiments.hide(); $experiments.hide();
hideShowOptionsModel.push({ hideShowOptionsModel.push({
...@@ -304,34 +357,100 @@ function ProjectFormView(projectFormController, projectFormModel) { ...@@ -304,34 +357,100 @@ function ProjectFormView(projectFormController, projectFormModel) {
}); });
return $experiments; return $experiments;
} }
this._createSamplesSection = function(hideShowOptionsModel) { this._deleteExperiments = function(permIds) {
var entityKindName = "" + ELNDictionary.Samples + ""; var _this = this;
var $component = $("<div>");
var $samples = $("<div>", { id : "project-samples" }); var warningText = "Also all " + ELNDictionary.samples + " and data sets of the selected "
var $experimentsContainer = $("<div>"); + permIds.length + " " + ELNDictionary.getExperimentsDualName() + " will be deleted.";
$samples.append($("<legend>").append(entityKindName)); var $warning = FormUtil.getFieldForLabelWithText(null, warningText);
var $samplesContainerHeader = $("<div>"); $warning.css('color', FormUtil.warningColor);
$samples.append($samplesContainerHeader); $component.append($warning);
var $samplesContainer = $("<div>"); var modalView = new DeleteEntityController(function(reason) {
$samples.append($samplesContainer); require(["as/dto/experiment/id/ExperimentPermId","as/dto/experiment/delete/ExperimentDeletionOptions"],
function(ExperimentPermId, ExperimentDeletionOptions) {
var views = { var experimentIds = permIds.map(permId => new ExperimentPermId(permId));
header : $samplesContainerHeader, var deletionOptions = new ExperimentDeletionOptions();
content : $samplesContainer deletionOptions.setReason(reason);
} mainController.openbisV3.deleteExperiments(experimentIds, deletionOptions).done(function() {
var sampleTableController = new SampleTableController(this._projectFormController, null, null, this._projectFormModel.project.permId, true, null, 40); Util.showSuccess("All " + permIds.length + " " + ELNDictionary.getExperimentsDualName()
sampleTableController.init(views); + " are moved to trashcan", function() {
$samples.hide(); permIds.forEach(function(permId) {
hideShowOptionsModel.push({ mainController.sideMenu.deleteNodeByEntityPermId("EXPERIMENT", permId, false);
label : entityKindName, });
section : "#project-samples", mainController.refreshView();
beforeShowingAction : function() { });
sampleTableController.refresh(); }).fail(function(error) {
} Util.showFailedServerCallError(error);
}); Util.unblockUI();
return $samples; });
} })
}, true, null, $component);
modalView.init();
}
this._moveExperiments = function(permIds) {
var _this = this;
var $window = $('<form>', { 'action' : 'javascript:void(0);' });
var project = null;
$window.submit(function() {
Util.unblockUI();
require(["as/dto/experiment/id/ExperimentPermId", "as/dto/experiment/update/ExperimentUpdate"],
function(ExperimentPermId, ExperimentUpdate) {
var projectIdentifier = project.getIdentifier();
var updates = [];
permIds.forEach(function(permId) {
var update = new ExperimentUpdate();
update.setExperimentId(new ExperimentPermId(permId));
update.setProjectId(projectIdentifier);
updates.push(update);
});
mainController.openbisV3.updateExperiments(updates).done(function() {
Util.showSuccess("Moved successfully", function() {
var projectPermId = project.getPermId().getPermId();
mainController.sideMenu.refreshNodeParentByPermId("PROJECT", projectPermId, true);
permIds.forEach(function(permId) {
mainController.sideMenu.deleteNodeByEntityPermId("EXPERIMENT", permId, false);
});
mainController.refreshView();
});
}).fail(function(error) {
Util.showFailedServerCallError(error);
Util.unblockUI();
});
});
});
$window.append($('<legend>').append("Moving " + permIds.length + " selected "
+ ELNDictionary.getExperimentsDualName() + " to:"));
var $searchBox = $('<div>');
$window.append($searchBox);
var searchDropdown = new AdvancedEntitySearchDropdown(false, true, "search project to move to",
false, false, false, true, false);
var $btnAccept = $('<input>', { 'type': 'submit', 'class' : 'btn btn-primary', 'value' : 'Accept' });
var $btnCancel = $('<a>', { 'class' : 'btn btn-default' }).append('Cancel');
$btnCancel.click(function() {
Util.unblockUI();
});
$window.append('<br>').append($btnAccept).append('&nbsp;').append($btnCancel);
searchDropdown.onChange(function(selected) {
project = selected[0];
});
searchDropdown.init($searchBox);
var css = {
'text-align' : 'left',
'top' : '15%',
'width' : '70%',
'left' : '15%',
'right' : '20%',
'overflow' : 'hidden'
};
Util.blockUI($window, css);
}
this._projectDeletionAction = function() { this._projectDeletionAction = function() {
var _this = this; var _this = this;
......
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