From b2239bf64009952a9c4a397ca0a767883db721d6 Mon Sep 17 00:00:00 2001 From: guerler Date: Tue, 20 Oct 2020 16:59:00 -0400 Subject: [PATCH] Use previously unused embeddable attribute in visualization xmls to hide visualization not suitable for markdown reports --- .../src/components/Markdown/MarkdownVisualization.vue | 2 +- .../annotate_image/config/annotate_image.xml | 2 +- config/plugins/visualizations/editor/config/editor.xml | 2 +- .../plugins/visualizations/example/config/example.xml | 2 +- .../heatmap/heatmap_cluster/config/heatmap_cluster.xml | 2 +- .../heatmap/heatmap_default/config/heatmap_default.xml | 2 +- .../jqplot/jqplot_box/config/jqplot_box.xml | 2 +- .../jqplot_histogram/config/jqplot_histogram.xml | 2 +- .../media_player/audio_player/config/audio_player.xml | 2 +- .../media_player/video_player/config/video_player.xml | 2 +- .../nvd3/nvd3_histogram/config/nvd3_histogram.xml | 2 +- .../config/nvd3_histogram_discrete.xml | 2 +- .../visualizations/sweepster/config/sweepster.xml | 2 +- .../visualizations/trackster/config/trackster.xml | 2 +- lib/galaxy/visualization/plugins/config_parser.py | 10 ++++------ lib/galaxy/visualization/plugins/plugin.py | 2 +- lib/galaxy/visualization/plugins/registry.py | 5 ++++- lib/galaxy/webapps/galaxy/api/plugins.py | 2 +- 18 files changed, 24 insertions(+), 23 deletions(-) diff --git a/client/src/components/Markdown/MarkdownVisualization.vue b/client/src/components/Markdown/MarkdownVisualization.vue index e6f6e654d5d..5c0d3b99c35 100644 --- a/client/src/components/Markdown/MarkdownVisualization.vue +++ b/client/src/components/Markdown/MarkdownVisualization.vue @@ -19,7 +19,7 @@ @ok="onOk" @cancel="onCancel" > -
+ diff --git a/config/plugins/visualizations/annotate_image/config/annotate_image.xml b/config/plugins/visualizations/annotate_image/config/annotate_image.xml index 8b1a7973ad5..0e6781078cf 100644 --- a/config/plugins/visualizations/annotate_image/config/annotate_image.xml +++ b/config/plugins/visualizations/annotate_image/config/annotate_image.xml @@ -1,6 +1,6 @@ - + An image annotater built using PaperJS at https://github.com/paperjs/paper.js. diff --git a/config/plugins/visualizations/editor/config/editor.xml b/config/plugins/visualizations/editor/config/editor.xml index 48589917e99..26aacb9fbd6 100644 --- a/config/plugins/visualizations/editor/config/editor.xml +++ b/config/plugins/visualizations/editor/config/editor.xml @@ -1,6 +1,6 @@ - + Manually edit text diff --git a/config/plugins/visualizations/example/config/example.xml b/config/plugins/visualizations/example/config/example.xml index 0fecc2627e9..a3adfab8a30 100644 --- a/config/plugins/visualizations/example/config/example.xml +++ b/config/plugins/visualizations/example/config/example.xml @@ -1,6 +1,6 @@ - + This is a developer example which demonstrates how to implement and configure a basic d3-based plugin for charts. diff --git a/config/plugins/visualizations/heatmap/heatmap_cluster/config/heatmap_cluster.xml b/config/plugins/visualizations/heatmap/heatmap_cluster/config/heatmap_cluster.xml index 3ca7d59172b..6d4bcf7f47e 100644 --- a/config/plugins/visualizations/heatmap/heatmap_cluster/config/heatmap_cluster.xml +++ b/config/plugins/visualizations/heatmap/heatmap_cluster/config/heatmap_cluster.xml @@ -1,6 +1,6 @@ - + ../../heatmap_default/config/heatmap_shared.xml diff --git a/config/plugins/visualizations/heatmap/heatmap_default/config/heatmap_default.xml b/config/plugins/visualizations/heatmap/heatmap_default/config/heatmap_default.xml index 589a7deecb2..8698dd73cef 100644 --- a/config/plugins/visualizations/heatmap/heatmap_default/config/heatmap_default.xml +++ b/config/plugins/visualizations/heatmap/heatmap_default/config/heatmap_default.xml @@ -1,6 +1,6 @@ - + heatmap_shared.xml diff --git a/config/plugins/visualizations/jqplot/jqplot_box/config/jqplot_box.xml b/config/plugins/visualizations/jqplot/jqplot_box/config/jqplot_box.xml index 10ffe9b1f40..93d55908905 100644 --- a/config/plugins/visualizations/jqplot/jqplot_box/config/jqplot_box.xml +++ b/config/plugins/visualizations/jqplot/jqplot_box/config/jqplot_box.xml @@ -1,6 +1,6 @@ - + ../../jqplot_bar/config/jqplot_shared.xml diff --git a/config/plugins/visualizations/jqplot/jqplot_histogram/config/jqplot_histogram.xml b/config/plugins/visualizations/jqplot/jqplot_histogram/config/jqplot_histogram.xml index 2c508b443d1..e38ec98c0af 100644 --- a/config/plugins/visualizations/jqplot/jqplot_histogram/config/jqplot_histogram.xml +++ b/config/plugins/visualizations/jqplot/jqplot_histogram/config/jqplot_histogram.xml @@ -1,6 +1,6 @@ - + ../../jqplot_bar/config/jqplot_shared.xml diff --git a/config/plugins/visualizations/media_player/audio_player/config/audio_player.xml b/config/plugins/visualizations/media_player/audio_player/config/audio_player.xml index 0002a4b9283..30e20ce2e3a 100644 --- a/config/plugins/visualizations/media_player/audio_player/config/audio_player.xml +++ b/config/plugins/visualizations/media_player/audio_player/config/audio_player.xml @@ -1,6 +1,6 @@ - + Audio player diff --git a/config/plugins/visualizations/media_player/video_player/config/video_player.xml b/config/plugins/visualizations/media_player/video_player/config/video_player.xml index 3cdbe300627..1a0bfbfca75 100644 --- a/config/plugins/visualizations/media_player/video_player/config/video_player.xml +++ b/config/plugins/visualizations/media_player/video_player/config/video_player.xml @@ -1,6 +1,6 @@ - + Video player diff --git a/config/plugins/visualizations/nvd3/nvd3_histogram/config/nvd3_histogram.xml b/config/plugins/visualizations/nvd3/nvd3_histogram/config/nvd3_histogram.xml index 70185676e77..159bd6bd90b 100644 --- a/config/plugins/visualizations/nvd3/nvd3_histogram/config/nvd3_histogram.xml +++ b/config/plugins/visualizations/nvd3/nvd3_histogram/config/nvd3_histogram.xml @@ -1,6 +1,6 @@ - + ../../nvd3_bar/config/nvd3_shared.xml diff --git a/config/plugins/visualizations/nvd3/nvd3_histogram_discrete/config/nvd3_histogram_discrete.xml b/config/plugins/visualizations/nvd3/nvd3_histogram_discrete/config/nvd3_histogram_discrete.xml index c43b8fed16f..a32f52001ee 100644 --- a/config/plugins/visualizations/nvd3/nvd3_histogram_discrete/config/nvd3_histogram_discrete.xml +++ b/config/plugins/visualizations/nvd3/nvd3_histogram_discrete/config/nvd3_histogram_discrete.xml @@ -1,6 +1,6 @@ - + ../../nvd3_bar/config/nvd3_shared.xml diff --git a/config/plugins/visualizations/sweepster/config/sweepster.xml b/config/plugins/visualizations/sweepster/config/sweepster.xml index 647e2bcf412..f9a15771b4a 100644 --- a/config/plugins/visualizations/sweepster/config/sweepster.xml +++ b/config/plugins/visualizations/sweepster/config/sweepster.xml @@ -1,6 +1,6 @@ - + HistoryDatasetAssociation diff --git a/config/plugins/visualizations/trackster/config/trackster.xml b/config/plugins/visualizations/trackster/config/trackster.xml index ac0cb8a41b9..585ce3f73be 100644 --- a/config/plugins/visualizations/trackster/config/trackster.xml +++ b/config/plugins/visualizations/trackster/config/trackster.xml @@ -1,6 +1,6 @@ - + Fast, interactive visualization for large, NGS/HTS datasets using only a web browser. diff --git a/lib/galaxy/visualization/plugins/config_parser.py b/lib/galaxy/visualization/plugins/config_parser.py index 1e998488cda..3ee7da3a473 100644 --- a/lib/galaxy/visualization/plugins/config_parser.py +++ b/lib/galaxy/visualization/plugins/config_parser.py @@ -2,6 +2,7 @@ import logging import galaxy.model +from galaxy.util import asbool from galaxy.util.xml_macros import load log = logging.getLogger(__name__) @@ -67,13 +68,10 @@ class VisualizationsConfigParser: log.info('Visualizations plugin disabled: %s. Skipping...', returned['name']) return None - # record the embeddable flag - defaults to false - # this is a design by contract promise that the visualization can be rendered inside another page - # often by rendering only a DOM fragment. Since this is an advanced feature that requires a bit more - # work from the creator's side - it defaults to False - returned['embeddable'] = False + # record the embeddable flag - defaults to true + returned['embeddable'] = True if 'embeddable' in xml_tree.attrib: - returned['embeddable'] = xml_tree.attrib.get('embeddable', False) == 'true' + returned['embeddable'] = asbool(xml_tree.attrib.get('embeddable')) # a (for now) text description of what the visualization does description = xml_tree.find('description') diff --git a/lib/galaxy/visualization/plugins/plugin.py b/lib/galaxy/visualization/plugins/plugin.py index 70e667e5a0b..0326df7b95d 100644 --- a/lib/galaxy/visualization/plugins/plugin.py +++ b/lib/galaxy/visualization/plugins/plugin.py @@ -114,7 +114,7 @@ class VisualizationPlugin(ServesTemplatesPluginMixin): 'logo' : self.config.get('logo'), 'title' : self.config.get('title'), 'target' : self.config.get('render_target', 'galaxy_main'), - 'embeddable' : self.config.get('embeddable', False), + 'embeddable' : self.config.get('embeddable'), 'entry_point' : self.config.get('entry_point'), 'settings' : self.config.get('settings'), 'groups' : self.config.get('groups'), diff --git a/lib/galaxy/visualization/plugins/registry.py b/lib/galaxy/visualization/plugins/registry.py index 85d70b80a09..348e26b1d0c 100644 --- a/lib/galaxy/visualization/plugins/registry.py +++ b/lib/galaxy/visualization/plugins/registry.py @@ -224,9 +224,12 @@ class VisualizationsRegistry: raise ObjectNotFound('Unknown or invalid visualization: ' + key) return self.plugins[key] - def get_plugins(self): + def get_plugins(self, embeddable=None): result = [] for plugin in self.plugins.values(): + if embeddable is not None: + if embeddable != plugin.config.get('embeddable'): + continue result.append(plugin.to_dict()) return sorted(result, key=lambda k: k.get('html')) diff --git a/lib/galaxy/webapps/galaxy/api/plugins.py b/lib/galaxy/webapps/galaxy/api/plugins.py index 6b29ef8e6d2..daf9d6f81fb 100644 --- a/lib/galaxy/webapps/galaxy/api/plugins.py +++ b/lib/galaxy/webapps/galaxy/api/plugins.py @@ -32,7 +32,7 @@ class PluginsController(BaseAPIController): hda = self.hda_manager.get_accessible(self.decode_id(dataset_id), trans.user) return registry.get_visualizations(trans, hda) else: - return registry.get_plugins() + return registry.get_plugins(embeddable=True) @expose_api def show(self, trans, id, **kwargs):