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 f8065b094..44567b25a 100644 --- a/omero_figure/scripts/omero/figure_scripts/Figure_To_Pdf.py +++ b/omero_figure/scripts/omero/figure_scripts/Figure_To_Pdf.py @@ -1265,9 +1265,13 @@ def draw_labels(self, panel, page): else: the_z = panel['theZ'] if panel['theZ'] else 0 if format == "pixel": + if offset is not None and 1 <= offset: + the_z -= offset label_value = str(the_z + 1) elif (format == "unit" and size_z and the_z < size_z): + if offset is not None and 1 <= offset: + the_z -= offset z_pos = "%.*f" % (precision, (the_z * pixel_size_z)) label_value = (z_pos + " " + z_symbol) diff --git a/omero_figure/templates/figure/index.html b/omero_figure/templates/figure/index.html index 4cc25126b..d3acbb044 100644 --- a/omero_figure/templates/figure/index.html +++ b/omero_figure/templates/figure/index.html @@ -595,6 +595,16 @@

Dynamic properties

Time: [time.seconds; precision=2; offset=3] Time: -0.06 s + + Z index with units
(first plane is Z: 0.00 µm),
offset by 3 times the Z pixel size + Z: [z.unit; offset=3] + Z: -3.00 µm + + + Z index (first plane is Z: 1)
offset by 3 + Z: [z.pixel; offset=3] + Z: -2 + Image ID Image ID: [image.id] diff --git a/src/js/models/panel_model.js b/src/js/models/panel_model.js index 526b4f612..8f92c926c 100644 --- a/src/js/models/panel_model.js +++ b/src/js/models/panel_model.js @@ -298,8 +298,8 @@ text = "", h, m, s; if (ref_idx) { - var shift = this.get('deltaT')[parseInt(ref_idx)-1]; - deltaT = shift==null ? deltaT : deltaT-shift; + var shift = this.get('deltaT')[parseInt(ref_idx) - 1]; + deltaT = shift==null ? deltaT : deltaT - shift; } var isNegative = (deltaT < 0); deltaT = Math.abs(deltaT); @@ -334,6 +334,7 @@ if (["0"+dec_str+" s", "0"+dec_str+" mins", "0:00"+dec_str, "0:00:00"+dec_str].indexOf(text) > -1) { isNegative = false; } + return (isNegative ? '-' : '') + text; }, @@ -362,7 +363,7 @@ return text; }, - get_view_label_text: function(property, format, dec_prec) { + get_view_label_text: function(property, format, ref_idx, dec_prec) { if (format === "px") format = "pixel"; if (property === "w") property = "width"; @@ -399,10 +400,19 @@ } else { var theZ = this.get('theZ'); + var deltaZ = theZ; + + var shift; + if (ref_idx) { + shift = parseInt(ref_idx) + } + if(!isNaN(shift)){ + deltaZ = theZ - shift; + } if (format === "pixel") { - text = "" + (theZ + 1); + text = "" + (deltaZ + 1); } else if (format === "unit") { - text = ""+ (theZ * z_size).toFixed(dec_prec) +" "+ z_symbol + text = ""+ (deltaZ * z_size).toFixed(dec_prec) +" "+ z_symbol } } return text diff --git a/src/js/views/panel_view.js b/src/js/views/panel_view.js index 4c5dc056a..e2bf96bcd 100644 --- a/src/js/views/panel_view.js +++ b/src/js/views/panel_view.js @@ -227,7 +227,7 @@ } else if (['x', 'y', 'z', 'width', 'height', 'w', 'h', 'rotation', 'rot'].includes(prop_nf[0])){ format = prop_nf[1] ? prop_nf[1] : "pixel"; precision = param_dict["precision"] !== undefined ? param_dict["precision"] : 2; // decimal places default to 2 - label_value = self.model.get_view_label_text(prop_nf[0], format, precision); + label_value = self.model.get_view_label_text(prop_nf[0], format, param_dict["offset"], precision); } else if (['channels', 'c'].includes(prop_nf[0])) { label_value = self.model.get_channels_label_text(); } else if (['zoom'].includes(prop_nf[0])) {