From 99f6c1924e730128c6a5d40f97c2b4d7b1d7e81d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Dornier?= Date: Mon, 3 Feb 2025 15:26:03 +0100 Subject: [PATCH 1/7] update position of label according to show/hide border --- src/js/views/panel_view.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/js/views/panel_view.js b/src/js/views/panel_view.js index 3a8b01a4b..389e31616 100644 --- a/src/js/views/panel_view.js +++ b/src/js/views/panel_view.js @@ -101,7 +101,7 @@ x = x - sw; y = y - sw; page_w = w + (sw * 2); - page_h = h + (sw * 2); + page_h = h + (sw * 2); } else { this.$el.css({'border': ''}) } @@ -306,7 +306,7 @@ $('.right_vlabels', self.$el).css('width', 3 * self.$el.height() + 'px'); var border = this.model.get('border') - if(border != undefined){ + if(border?.showBorder){ var margin = 5 + border.strokeWidth $('.left_vlabels>div', self.$el).css('margin-bottom', margin + 'px'); $('.right_vlabels>div', self.$el).css('margin-bottom', margin + 'px'); From 4f90e125bedb9ff84ece89039e74161935421213 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Dornier?= Date: Mon, 3 Feb 2025 15:45:56 +0100 Subject: [PATCH 2/7] Update labels spacing on PDF/TIFF export --- omero_figure/scripts/omero/figure_scripts/Figure_To_Pdf.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/omero_figure/scripts/omero/figure_scripts/Figure_To_Pdf.py b/omero_figure/scripts/omero/figure_scripts/Figure_To_Pdf.py index 9328b951d..3757a0c4e 100644 --- a/omero_figure/scripts/omero/figure_scripts/Figure_To_Pdf.py +++ b/omero_figure/scripts/omero/figure_scripts/Figure_To_Pdf.py @@ -1294,6 +1294,7 @@ def draw_labels(self, panel, page): y = panel['y'] width = panel['width'] height = panel['height'] + border = panel['border'] viewport_region = self.get_crop_region(panel) @@ -1302,6 +1303,8 @@ def draw_labels(self, panel, page): y = y - page['y'] spacer = 5 + if border is not None and border['showBorder'] == True: + spacer = spacer + border['strokeWidth'] # group by 'position': positions = {'top': [], 'bottom': [], 'left': [], From 3e104b9dc873c4bb82ae16a62d43839b19b5622e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Dornier?= Date: Mon, 3 Feb 2025 15:55:13 +0100 Subject: [PATCH 3/7] fix flake8 errors --- omero_figure/scripts/omero/figure_scripts/Figure_To_Pdf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/omero_figure/scripts/omero/figure_scripts/Figure_To_Pdf.py b/omero_figure/scripts/omero/figure_scripts/Figure_To_Pdf.py index 3757a0c4e..24bf89b5d 100644 --- a/omero_figure/scripts/omero/figure_scripts/Figure_To_Pdf.py +++ b/omero_figure/scripts/omero/figure_scripts/Figure_To_Pdf.py @@ -1303,7 +1303,7 @@ def draw_labels(self, panel, page): y = y - page['y'] spacer = 5 - if border is not None and border['showBorder'] == True: + if border is not None and border['showBorder']: spacer = spacer + border['strokeWidth'] # group by 'position': From a2369cff7d8fa47b3b1cd17667f005d107db046f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Dornier?= Date: Mon, 3 Feb 2025 16:26:32 +0100 Subject: [PATCH 4/7] Using get() to avoid errors when border is missing --- omero_figure/scripts/omero/figure_scripts/Figure_To_Pdf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/omero_figure/scripts/omero/figure_scripts/Figure_To_Pdf.py b/omero_figure/scripts/omero/figure_scripts/Figure_To_Pdf.py index 24bf89b5d..e246abad0 100644 --- a/omero_figure/scripts/omero/figure_scripts/Figure_To_Pdf.py +++ b/omero_figure/scripts/omero/figure_scripts/Figure_To_Pdf.py @@ -1294,7 +1294,7 @@ def draw_labels(self, panel, page): y = panel['y'] width = panel['width'] height = panel['height'] - border = panel['border'] + border = panel.get('border') viewport_region = self.get_crop_region(panel) From 38527bfdb98ed4cdf4656c5a1ec03e64f88a1b53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Dornier?= Date: Tue, 18 Feb 2025 14:43:54 +0100 Subject: [PATCH 5/7] fix labels spacing for inner position and multiple labels --- .../omero/figure_scripts/Figure_To_Pdf.py | 23 +++++++++++-------- src/js/views/panel_view.js | 12 ++++------ 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/omero_figure/scripts/omero/figure_scripts/Figure_To_Pdf.py b/omero_figure/scripts/omero/figure_scripts/Figure_To_Pdf.py index e246abad0..d7ad7abce 100644 --- a/omero_figure/scripts/omero/figure_scripts/Figure_To_Pdf.py +++ b/omero_figure/scripts/omero/figure_scripts/Figure_To_Pdf.py @@ -1302,10 +1302,6 @@ def draw_labels(self, panel, page): x = x - page['x'] y = y - page['y'] - spacer = 5 - if border is not None and border['showBorder']: - spacer = spacer + border['strokeWidth'] - # group by 'position': positions = {'top': [], 'bottom': [], 'left': [], 'leftvert': [], 'right': [], 'rightvert': [], @@ -1498,6 +1494,13 @@ def draw_lab(label, lx, ly, align='left'): self.draw_text(text, lx, ly, fontsize, rgb, align=align) return label_h + spacer = 5 + borderWidth = 0 + if border is not None and border['showBorder']: + borderWidth = border['strokeWidth'] + + borderSpacer = spacer + borderWidth + # Render each position: for key, labels in positions.items(): if key == 'topleft': @@ -1528,19 +1531,19 @@ def draw_lab(label, lx, ly, align='left'): draw_lab(label, lx, ly, align='right') elif key == 'top': lx = x + (width / 2) - ly = y + ly = y - borderWidth labels.reverse() for label in labels: ly = ly - label['size'] - spacer draw_lab(label, lx, ly, align='center') elif key == 'bottom': lx = x + (width / 2) - ly = y + height + spacer + ly = y + height + borderSpacer for label in labels: label_h = draw_lab(label, lx, ly, align='center') ly += label_h + spacer elif key == 'left': - lx = x - spacer + lx = x - borderSpacer sizes = [label['size'] for label in labels] total_h = sum(sizes) + spacer * (len(labels) - 1) ly = y + (height - total_h) / 2 @@ -1548,7 +1551,7 @@ def draw_lab(label, lx, ly, align='left'): label_h = draw_lab(label, lx, ly, align='right') ly += label_h + spacer elif key == 'right': - lx = x + width + spacer + lx = x + width + borderSpacer sizes = [label['size'] for label in labels] total_h = sum(sizes) + spacer * (len(labels) - 1) ly = y + (height - total_h) / 2 @@ -1556,14 +1559,14 @@ def draw_lab(label, lx, ly, align='left'): label_h = draw_lab(label, lx, ly) ly += label_h + spacer elif key == 'leftvert': - lx = x - spacer + lx = x - borderSpacer ly = y + (height / 2) labels.reverse() for label in labels: lx = lx - label['size'] - spacer draw_lab(label, lx, ly, align='left-vertical') elif key == 'rightvert': - lx = x + width + spacer + lx = x + width + borderSpacer ly = y + (height / 2) labels.reverse() for label in labels: diff --git a/src/js/views/panel_view.js b/src/js/views/panel_view.js index 389e31616..4efa11a60 100644 --- a/src/js/views/panel_view.js +++ b/src/js/views/panel_view.js @@ -310,19 +310,17 @@ var margin = 5 + border.strokeWidth $('.left_vlabels>div', self.$el).css('margin-bottom', margin + 'px'); $('.right_vlabels>div', self.$el).css('margin-bottom', margin + 'px'); - margin = 3 + border.strokeWidth $('.label_top', self.$el).css('margin-bottom', margin + 'px'); - margin = border.strokeWidth $('.label_bottom', self.$el).css('margin-top', margin + 'px'); $('.label_left', self.$el).css('margin-right', margin + 'px'); $('.label_right', self.$el).css('margin-left', margin + 'px'); }else{ - $('.left_vlabels>div', self.$el).css('mSargin-bottom', '5px'); + $('.left_vlabels>div', self.$el).css('margin-bottom', '5px'); $('.right_vlabels>div', self.$el).css('margin-bottom', '5px'); - $('.label_top', self.$el).css('margin-bottom', '3px'); - $('.label_bottom', self.$el).css('margin-top', ''); - $('.label_left', self.$el).css('margin-right', ''); - $('.label_right', self.$el).css('margin-left', ''); + $('.label_top', self.$el).css('margin-bottom', '5px'); + $('.label_bottom', self.$el).css('margin-top', '5px'); + $('.label_left', self.$el).css('margin-right', '5px'); + $('.label_right', self.$el).css('margin-left', '5px'); } return this; From 12f7e1302fe1169e76d44012633bb607239e6bd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Dornier?= Date: Tue, 18 Feb 2025 14:58:35 +0100 Subject: [PATCH 6/7] fix flake8 error --- .../omero/figure_scripts/Figure_To_Pdf.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/omero_figure/scripts/omero/figure_scripts/Figure_To_Pdf.py b/omero_figure/scripts/omero/figure_scripts/Figure_To_Pdf.py index d7ad7abce..458d6472e 100644 --- a/omero_figure/scripts/omero/figure_scripts/Figure_To_Pdf.py +++ b/omero_figure/scripts/omero/figure_scripts/Figure_To_Pdf.py @@ -1495,11 +1495,11 @@ def draw_lab(label, lx, ly, align='left'): return label_h spacer = 5 - borderWidth = 0 + border_width = 0 if border is not None and border['showBorder']: - borderWidth = border['strokeWidth'] + border_width = border['strokeWidth'] - borderSpacer = spacer + borderWidth + border_spacer = spacer + border_width # Render each position: for key, labels in positions.items(): @@ -1531,19 +1531,19 @@ def draw_lab(label, lx, ly, align='left'): draw_lab(label, lx, ly, align='right') elif key == 'top': lx = x + (width / 2) - ly = y - borderWidth + ly = y - border_width labels.reverse() for label in labels: ly = ly - label['size'] - spacer draw_lab(label, lx, ly, align='center') elif key == 'bottom': lx = x + (width / 2) - ly = y + height + borderSpacer + ly = y + height + border_spacer for label in labels: label_h = draw_lab(label, lx, ly, align='center') ly += label_h + spacer elif key == 'left': - lx = x - borderSpacer + lx = x - border_spacer sizes = [label['size'] for label in labels] total_h = sum(sizes) + spacer * (len(labels) - 1) ly = y + (height - total_h) / 2 @@ -1551,7 +1551,7 @@ def draw_lab(label, lx, ly, align='left'): label_h = draw_lab(label, lx, ly, align='right') ly += label_h + spacer elif key == 'right': - lx = x + width + borderSpacer + lx = x + width + border_spacer sizes = [label['size'] for label in labels] total_h = sum(sizes) + spacer * (len(labels) - 1) ly = y + (height - total_h) / 2 @@ -1559,14 +1559,14 @@ def draw_lab(label, lx, ly, align='left'): label_h = draw_lab(label, lx, ly) ly += label_h + spacer elif key == 'leftvert': - lx = x - borderSpacer + lx = x - border_spacer ly = y + (height / 2) labels.reverse() for label in labels: lx = lx - label['size'] - spacer draw_lab(label, lx, ly, align='left-vertical') elif key == 'rightvert': - lx = x + width + borderSpacer + lx = x + width + border_spacer ly = y + (height / 2) labels.reverse() for label in labels: From e559ccd24f6000f042f166455bac0f7639b362d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Dornier?= Date: Tue, 25 Feb 2025 09:01:45 +0100 Subject: [PATCH 7/7] fix render_label call before DOM by will-moore --- src/js/views/figure_view.js | 4 +++- src/js/views/panel_view.js | 12 ++---------- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/src/js/views/figure_view.js b/src/js/views/figure_view.js index 361c3535d..4eeff4df0 100644 --- a/src/js/views/figure_view.js +++ b/src/js/views/figure_view.js @@ -796,7 +796,9 @@ addOne: function(panel) { var page_color = this.model.get('page_color'); var view = new PanelView({model:panel, page_color:page_color}); - this.$figure.append(view.render().el); + this.$figure.append(view.el); + // render works better AFTER attaching element to the DOM + view.render(); }, renderLoadingSpinner: function() { diff --git a/src/js/views/panel_view.js b/src/js/views/panel_view.js index 4efa11a60..a5ce5b6ac 100644 --- a/src/js/views/panel_view.js +++ b/src/js/views/panel_view.js @@ -48,7 +48,6 @@ if (opts.page_color) { this.page_color = opts.page_color; } - this.render(); }, events: { @@ -373,15 +372,8 @@ // update src, layout etc. this.render_image(); - this.render_labels(); - this.render_scalebar(); // also calls render_layout() - - // At this point, element is not ready for Raphael svg - // If we wait a short time, works fine - var self = this; - setTimeout(function(){ - self.render_shapes(); - }, 10); + this.render_scalebar(); // also calls render_layout() -> render_labels() + this.render_shapes(); return this; }