diff --git a/client/gulpfile.js b/client/gulpfile.js
index b34b6f78fb6e..cac8c641942d 100644
--- a/client/gulpfile.js
+++ b/client/gulpfile.js
@@ -19,6 +19,7 @@ const STATIC_PLUGIN_BUILD_IDS = [
"drawrna",
"editor",
"example",
+ "fits_graph_viewer",
"fits_image_viewer",
"h5web",
"heatmap/heatmap_default",
diff --git a/config/plugins/visualizations/fits_graph_viewer/config/fits_graph_viewer.xml b/config/plugins/visualizations/fits_graph_viewer/config/fits_graph_viewer.xml
new file mode 100644
index 000000000000..420eb0aee3a6
--- /dev/null
+++ b/config/plugins/visualizations/fits_graph_viewer/config/fits_graph_viewer.xml
@@ -0,0 +1,16 @@
+
+
+
+ Basic plugin for fits file table visualization
+
+
+ HistoryDatasetAssociation
+ binary.FITS
+ dataset_id
+
+
+
+ dataset_id
+
+ fits_graph_viewer.mako
+
diff --git a/config/plugins/visualizations/fits_graph_viewer/package.json b/config/plugins/visualizations/fits_graph_viewer/package.json
new file mode 100644
index 000000000000..d4cda41c7298
--- /dev/null
+++ b/config/plugins/visualizations/fits_graph_viewer/package.json
@@ -0,0 +1,19 @@
+{
+ "name": "fits-graph-visualization",
+ "version": "1.0.0",
+ "keywords": [
+ "galaxy",
+ "visualization"
+ ],
+ "main": "index.js",
+ "license": "AFL-3.0",
+ "dependencies": {
+ "webpack": "^5.94.0",
+ "webpack-cli": "^5.1.4",
+ "astrovisjs": "0.9.88"
+ },
+ "scripts": {
+ "build": "npx webpack build --config webpack.prod.js --output-path=./static"
+ }
+}
+
diff --git a/config/plugins/visualizations/fits_graph_viewer/src/index.js b/config/plugins/visualizations/fits_graph_viewer/src/index.js
new file mode 100644
index 000000000000..6834805533cf
--- /dev/null
+++ b/config/plugins/visualizations/fits_graph_viewer/src/index.js
@@ -0,0 +1,5 @@
+import {init} from 'astrovisjs/dist/astrovis/astrovis';
+
+document.addEventListener('DOMContentLoaded', () => {
+ init('astrovisdiv', file_url);
+});
\ No newline at end of file
diff --git a/config/plugins/visualizations/fits_graph_viewer/static/logo.png b/config/plugins/visualizations/fits_graph_viewer/static/logo.png
new file mode 100644
index 000000000000..b5e53554f7a3
Binary files /dev/null and b/config/plugins/visualizations/fits_graph_viewer/static/logo.png differ
diff --git a/config/plugins/visualizations/fits_graph_viewer/templates/fits_graph_viewer.mako b/config/plugins/visualizations/fits_graph_viewer/templates/fits_graph_viewer.mako
new file mode 100644
index 000000000000..b8f491b739dc
--- /dev/null
+++ b/config/plugins/visualizations/fits_graph_viewer/templates/fits_graph_viewer.mako
@@ -0,0 +1,36 @@
+
+<%
+ import os
+
+ root = h.url_for('', qualified=True)
+
+ hdadict = trans.security.encode_dict_ids( hda.to_dict() )
+ file_url = os.path.join(root, 'datasets', hdadict['id'], "display?to_ext="+hda.ext)
+
+ app_root = root + '/static/plugins/visualizations/fits_graph_viewer/static/'
+%>
+
+
+
+
+
+
+ FITS Graph Viewer
+
+
+
+
+
+
+
+
+
+
+ ${h.javascript_link( app_root + 'fits_graph_viewer.js' )}
+
+
+
diff --git a/config/plugins/visualizations/fits_graph_viewer/webpack.prod.js b/config/plugins/visualizations/fits_graph_viewer/webpack.prod.js
new file mode 100644
index 000000000000..1826c341552c
--- /dev/null
+++ b/config/plugins/visualizations/fits_graph_viewer/webpack.prod.js
@@ -0,0 +1,9 @@
+const path = require('path');
+
+module.exports = {
+ mode: 'production',
+ entry: './src/index.js',
+ output: {
+ filename: 'fits_graph_viewer.js'
+ },
+};
\ No newline at end of file