From 0d30cd4baffdfe428ce4d8c5cf272bb6bd475aab Mon Sep 17 00:00:00 2001 From: pkupczyk <piotr.kupczyk@id.ethz.ch> Date: Thu, 17 Feb 2022 14:48:56 +0100 Subject: [PATCH] SSDM-12218 : ELN : Tables Improvements for Rich Text Content - fix a problem with project and experiment related grids that can be hidden via "More..." menu and could not be measured properly because they were using "display:none" + add a safety measure and set max-height to rich text properties to prevent taking too much space in case of potential future incorrect measurements --- .../webapps/eln-lims/html/js/util/FormUtil.js | 18 +++++--- .../ExperimentForm/ExperimentFormView.js | 25 ++++++----- .../js/views/ProjectForm/ProjectFormView.js | 45 +++++++++++-------- 3 files changed, 51 insertions(+), 37 deletions(-) diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/util/FormUtil.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/util/FormUtil.js index 4b9b9d9f848..0e49f11cf9f 100644 --- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/util/FormUtil.js +++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/util/FormUtil.js @@ -1290,8 +1290,13 @@ var FormUtil = new function() { shown = ! profile.hideSectionsByDefault; } } + var $section = $(option.section); + if(shown && option.beforeShowingAction) { + option.beforeShowingAction(); + } $section.toggle(shown); + var $label = $("<span>").append((shown ? "Hide " : "Show ") + option.label); var id = 'options-menu-btn-' + _this.prepareId(option.label).toLowerCase(); var $dropdownElement = $("<li>", { 'role' : 'presentation' }).append($("<a>", { 'id' : id }).append($label)); @@ -1301,6 +1306,9 @@ var FormUtil = new function() { var $section = event.data.section; $section.toggle(300, function() { if ($section.css("display") === "none") { + if (option.afterHidingAction) { + option.afterHidingAction(); + } $label.text("Show " + option.label); sectionsSettings[option.label] = "hidden"; } else { @@ -2286,6 +2294,8 @@ var FormUtil = new function() { this.renderTruncatedGridValue = function(container, value){ var $value = $("<div>") + $value.css("max-height", "100px") + $value.css("overflow", "hidden") if(_.isString(value)){ $value.text(value) @@ -2300,16 +2310,11 @@ var FormUtil = new function() { } $value.css("visibility", "hidden").appendTo(container) - - var valueHeight = $value.get(0).clientHeight - + var valueHeight = $value.get(0).scrollHeight $value.remove() $value.css("visibility", "") if(valueHeight > 150){ - $value.css("max-height", "100px") - $value.css("overflow", "hidden") - var $toggle = $("<a>").text("more") $toggle.click(function(){ if($toggle.text() === "more"){ @@ -2320,7 +2325,6 @@ var FormUtil = new function() { $toggle.text("more") } }) - return $("<div>").append($value).append($toggle) }else{ return $value diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ExperimentForm/ExperimentFormView.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ExperimentForm/ExperimentFormView.js index 980f3143d8a..aba9a8f3826 100644 --- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ExperimentForm/ExperimentFormView.js +++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ExperimentForm/ExperimentFormView.js @@ -462,23 +462,26 @@ function ExperimentFormView(experimentFormController, experimentFormModel) { this._createSamplesSection = function(hideShowOptionsModel) { var _this = this; var $samples = $("<div>", { id : "experiment-samples" }); - $samples.append($('<legend>').text(ELNDictionary.Samples)); - var sampleListHeader = $("<p>"); - var sampleListContainer = $("<div>"); - $samples.append(sampleListHeader); - $samples.append(sampleListContainer); - var views = { - header : sampleListHeader, - content : sampleListContainer - } - var sampleList = new SampleTableController(this._experimentFormController, null, this._experimentFormModel.experiment.identifier, null, null, this._experimentFormModel.experiment); - sampleList.init(views); $samples.hide(); hideShowOptionsModel.push({ label : ELNDictionary.Samples, section : "#experiment-samples", beforeShowingAction : function() { + $samples.append($('<legend>').text(ELNDictionary.Samples)); + var sampleListHeader = $("<p>"); + var sampleListContainer = $("<div>"); + $samples.append(sampleListHeader); + $samples.append(sampleListContainer); + var views = { + header : sampleListHeader, + content : sampleListContainer + } + var sampleList = new SampleTableController(_this._experimentFormController, null, _this._experimentFormModel.experiment.identifier, null, null, _this._experimentFormModel.experiment); + sampleList.init(views); sampleList.refreshHeight(); + }, + afterHidingAction : function(){ + $samples.empty() } }); return $samples; diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ProjectForm/ProjectFormView.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ProjectForm/ProjectFormView.js index 4c72ee40e35..b50e6c8d574 100644 --- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ProjectForm/ProjectFormView.js +++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ProjectForm/ProjectFormView.js @@ -282,48 +282,55 @@ function ProjectFormView(projectFormController, projectFormModel) { } this._createExperimentsSection = function(projectIdentifier, hideShowOptionsModel) { + var _this = this var entityKindName = ELNDictionary.getExperimentKindName(projectIdentifier, true); var $experiments = $("<div>", { id : "project-experiments" }); - var $experimentsContainer = $("<div>"); - $experiments.append($("<legend>").append(entityKindName)); - $experiments.append($experimentsContainer); - - var experimentTableController = new ExperimentTableController(this._projectFormController, null, jQuery.extend(true, {}, this._projectFormModel.project), true); - experimentTableController.init($experimentsContainer); $experiments.hide(); hideShowOptionsModel.push({ label : entityKindName, section : "#project-experiments", beforeShowingAction : function() { + var $experimentsContainer = $("<div>"); + $experiments.append($("<legend>").append(entityKindName)); + $experiments.append($experimentsContainer); + + var experimentTableController = new ExperimentTableController(_this._projectFormController, null, jQuery.extend(true, {}, _this._projectFormModel.project), true); + experimentTableController.init($experimentsContainer); experimentTableController.refreshHeight(); + }, + afterHidingAction : function(){ + $experiments.empty() } }); return $experiments; } this._createSamplesSection = function(hideShowOptionsModel) { + var _this = this var entityKindName = "" + ELNDictionary.Samples + ""; var $samples = $("<div>", { id : "project-samples" }); - var $experimentsContainer = $("<div>"); - $samples.append($("<legend>").append(entityKindName)); - var $samplesContainerHeader = $("<div>"); - $samples.append($samplesContainerHeader); - var $samplesContainer = $("<div>"); - $samples.append($samplesContainer); - - var views = { - header : $samplesContainerHeader, - content : $samplesContainer - } - var sampleTableController = new SampleTableController(this._projectFormController, null, null, this._projectFormModel.project.permId, true, null, 40); - sampleTableController.init(views); $samples.hide(); + hideShowOptionsModel.push({ label : entityKindName, section : "#project-samples", beforeShowingAction : function() { + $samples.append($("<legend>").append(entityKindName)); + var $samplesContainerHeader = $("<div>"); + $samples.append($samplesContainerHeader); + var $samplesContainer = $("<div>"); + $samples.append($samplesContainer); + var views = { + header : $samplesContainerHeader, + content : $samplesContainer + } + var sampleTableController = new SampleTableController(_this._projectFormController, null, null, _this._projectFormModel.project.permId, true, null, 40); + sampleTableController.init(views); sampleTableController.refreshHeight(); + }, + afterHidingAction : function(){ + $samples.empty() } }); return $samples; -- GitLab