diff --git a/client/gulpfile.js b/client/gulpfile.js
index 86e0d700947..56aa5798b00 100644
--- a/client/gulpfile.js
+++ b/client/gulpfile.js
@@ -21,7 +21,6 @@ const STATIC_PLUGIN_BUILD_IDS = [
"fits_graph_viewer",
"fits_image_viewer",
"h5web",
- "heatmap/heatmap_default",
"hyphyvision",
"jqplot/jqplot_bar",
"media_player",
@@ -35,7 +34,7 @@ const STATIC_PLUGIN_BUILD_IDS = [
"tiffviewer",
"ts_visjs",
];
-const INSTALL_PLUGIN_BUILD_IDS = ["cytoscape", "ngl", "msa", "openlayers", "phylocanvas", "venn", "vizarr"]; // todo: derive from XML
+const INSTALL_PLUGIN_BUILD_IDS = ["cytoscape", "heatmap", "ngl", "msa", "openlayers", "phylocanvas", "venn", "vizarr"]; // todo: derive from XML
const DIST_PLUGIN_BUILD_IDS = ["new_user"];
const PLUGIN_BUILD_IDS = Array.prototype.concat(DIST_PLUGIN_BUILD_IDS, STATIC_PLUGIN_BUILD_IDS);
diff --git a/config/plugins/visualizations/heatmap/heatmap_default/config/heatmap_shared.xml b/config/plugins/visualizations/heatmap/config/heatmap.xml
similarity index 96%
rename from config/plugins/visualizations/heatmap/heatmap_default/config/heatmap_shared.xml
rename to config/plugins/visualizations/heatmap/config/heatmap.xml
index 96559e4745e..3d0786582e8 100644
--- a/config/plugins/visualizations/heatmap/heatmap_default/config/heatmap_shared.xml
+++ b/config/plugins/visualizations/heatmap/config/heatmap.xml
@@ -1,5 +1,10 @@
-
-
+
+
+
+ Renders a heatmap from matrix data provided in 3-column format (x, y, observation).
+
+
+
HistoryDatasetAssociation
@@ -11,7 +16,8 @@
dataset_id
-
+
+
key
@@ -23,23 +29,19 @@
x
data_column
- true
- true
y
data_column
- true
- true
z
data_column
- true
+ true
-
+
color_set
@@ -480,5 +482,11 @@
true
-
-
\ No newline at end of file
+
+
+ pdf
+ png
+ svg
+
+
+
\ No newline at end of file
diff --git a/config/plugins/visualizations/heatmap/heatmap_cluster/config/heatmap_cluster.xml b/config/plugins/visualizations/heatmap/heatmap_cluster/config/heatmap_cluster.xml
deleted file mode 100644
index 3226c763b61..00000000000
--- a/config/plugins/visualizations/heatmap/heatmap_cluster/config/heatmap_cluster.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
- ../../heatmap_default/config/heatmap_shared.xml
-
- Applies hierarchical clustering to a matrix using R. The data has to be provided in 3-column format. The result is displayed as clustered heatmap.
-
-
-
- true
- True
-
- pdf
- png
- svg
-
-
-
\ No newline at end of file
diff --git a/config/plugins/visualizations/heatmap/heatmap_cluster/static/logo.png b/config/plugins/visualizations/heatmap/heatmap_cluster/static/logo.png
deleted file mode 100644
index 30e0334cb88..00000000000
Binary files a/config/plugins/visualizations/heatmap/heatmap_cluster/static/logo.png and /dev/null differ
diff --git a/config/plugins/visualizations/heatmap/heatmap_default/config/heatmap_default.xml b/config/plugins/visualizations/heatmap/heatmap_default/config/heatmap_default.xml
deleted file mode 100644
index 82eb5cfc624..00000000000
--- a/config/plugins/visualizations/heatmap/heatmap_default/config/heatmap_default.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
- heatmap_shared.xml
-
- Renders a heatmap from matrix data provided in 3-column format (x, y, observation).
-
-
-
-
- pdf
- png
- svg
-
-
-
\ No newline at end of file
diff --git a/config/plugins/visualizations/heatmap/heatmap_default/package.json b/config/plugins/visualizations/heatmap/heatmap_default/package.json
deleted file mode 100644
index 91f3d0006ca..00000000000
--- a/config/plugins/visualizations/heatmap/heatmap_default/package.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "name": "visualization",
- "version": "0.2.0",
- "keywords": [
- "galaxy",
- "visualization"
- ],
- "license": "AFL-3.0",
- "dependencies": {
- "@galaxyproject/charts": "^0.1.0",
- "babel-preset-env": "^1.6.1",
- "backbone": "^1.4.0",
- "bootstrap": "^3.3.7",
- "d3": "3",
- "jquery": "^3.5.1",
- "underscore": "^1.11.0"
- },
- "scripts": {
- "build": "parcel build src/script.js --dist-dir static/dist"
- },
- "devDependencies": {
- "parcel": "2.11.0"
- }
-}
diff --git a/config/plugins/visualizations/heatmap/heatmap_default/src/colorsets.js b/config/plugins/visualizations/heatmap/heatmap_default/src/colorsets.js
deleted file mode 100644
index cf876fcb5da..00000000000
--- a/config/plugins/visualizations/heatmap/heatmap_default/src/colorsets.js
+++ /dev/null
@@ -1,31 +0,0 @@
-export default {
- seis: ['#AA0000', '#D00000', '#F70000', '#FF1D00', '#FF4400', '#FF6A00', '#FF9000', '#FFB700', '#FFDD00', '#FFFF00', '#FFFF00', '#FFFF00', '#BDFF0C', '#73FF1A', '#3FFA36', '#16F45A', '#00D08B', '#0087CD', '#0048FA', '#0024E3'].reverse(),
-
- sealand: ['#8C66FF', '#6A66FF', '#6684FF', '#66A7FF', '#66CAFF', '#66ECFF', '#66FFF0', '#66FFCE', '#66FFAB', '#66FF88', '#66FF66', '#88FF66', '#ABFF66', '#CEFF66', '#FFEEA6', '#FFD3A6', '#FFB8A6', '#FFAAB0', '#FFB5CB', '#FFC0E1'].reverse(),
-
- redgreen: ['#005824', '#1A693B', '#347B53', '#4F8D6B', '#699F83', '#83B09B', '#9EC2B3', '#B8D4CB', '#D2E6E3', '#EDF8FB', '#FFFFFF', '#F1EEF6', '#E6D3E1','#DBB9CD', '#D19EB9', '#C684A4', '#BB6990', '#B14F7C', '#A63467', '#9B1A53', '#91003F'],
-
- ocean: ['#000000', '#000209', '#000413', '#00061E', '#000728', '#000932', '#002650', '#00426E', '#005E8C', '#007AAA', '#0096C8', '#22A9C2', '#45BCBB', '#67CFB5', '#8AE2AE', '#ACF6A8', '#BCF8B9', '#CBF9CA', '#DBFBDC', '#EBFDED'].reverse(),
-
- cool: ['#00FFFF', '#0DF2FF', '#19E6FF', '#26D9FF', '#33CCFF', '#3FBFFF', '#4CB3FF', '#59A6FF', '#6699FF', '#738CFF', '#7F7FFF', '#8C73FF', '#9966FF', '#A659FF', '#B24DFF', '#BF3FFF', '#CC33FF', '#D926FF', '#E619FF', '#F20DFF'],
-
- copper: ['#000000', '#100906', '#1F130D', '#301E13', '#40281A', '#50321F', '#603C26', '#70462D', '#805033', '#905A3A', '#A06440', '#B06E46', '#C0784D', '#D08253', '#E08C5A', '#F09660', '#FFA066', '#FFAA6D', '#FFB473', '#FFBE7A'].reverse(),
-
- gray: ['#000000', '#0D0D0D', '#191919', '#262626', '#333333', '#3F3F3F', '#4C4C4C', '#595959', '#666666', '#737373', '#7F7F7F', '#8C8C8C', '#999999', '#A6A6A6', '#B2B2B2', '#BFBFBF', '#CCCCCC', '#D9D9D9', '#E6E6E6', '#F2F2F2'].reverse(),
-
- hot: ['#000000', '#220000', '#440000', '#660000', '#880000', '#AA0000', '#CC0000', '#EE0000', '#FF1100', '#FF3300', '#FF5500', '#FF7700', '#FF9900', '#FFBB00', '#FFDD00', '#FFFF00', '#FFFF33', '#FFFF66', '#FFFF99', '#FFFFCC'].reverse(),
-
- jet: ['#00007F', '#0000B2', '#0000E5', '#0019FF', '#004DFF', '#007FFF', '#00B2FF', '#00E5FF', '#FFFFF2', '#FFFFD9', '#FFFFBF', '#FFFFA5', '#FFFF8C', '#FFE500', '#FFB300', '#FF7F00', '#FF4C00', '#FF1900', '#E50000', '#B20000'],
-
- no_green: ['#1F60FF', '#1F60FF', '#1F9FFF', '#1FBFFF', '#00CFFF', '#2AFFFF', '#2AFFFF', '#55FFFF', '#7FFFFF', '#AAFFFF', '#FFFF54', '#FFFF54', '#FFF000', '#FFBF00', '#FFA800', '#FF8A00', '#FF8A00', '#FF7000', '#FF4D00', '#FF0000'],
-
- polar: ['#0000FF', '#1919FF', '#3333FF', '#4C4CFF', '#6666FF', '#7F7FFF', '#9999FF', '#B2B2FF', '#CCCCFF', '#E6E6FF', '#FFFFFF', '#FFE5E5', '#FFCCCC', '#FFB2B2', '#FF9999', '#FF7F7F', '#FF6666', '#FF4C4C', '#FF3333', '#FF1A1A'],
-
- red2green: ['#FF0000', '#FF1919', '#FF3333', '#FF4C4C', '#FF6666', '#FF7F7F', '#FF9999', '#FFB2B2', '#FFCCCC', '#FFE6E6', '#FFFFFF', '#E5FFE5', '#CCFFCC', '#B2FFB2', '#99FF99', '#7FFF7F', '#66FF66', '#4CFF4C', '#33FF33', '#1AFF1A'].reverse(),
-
- relief: ['#000000', '#000413', '#000728', '#002650', '#005E8C', '#0096C8', '#45BCBB', '#8AE2AE', '#BCF8B9', '#DBFBDC', '#467832', '#887438', '#B19D48', '#DBC758', '#FAE769', '#FAEB7E', '#FCED93', '#FCF1A7', '#FCF6C1', '#FDFAE0'].reverse(),
-
- split: ['#7F7FFF', '#6666E6', '#4D4DCC', '#3333B3', '#1A1A99', '#00007F', '#000066', '#00004D', '#000033', '#00001A', '#000000', '#1A0000', '#330000', '#4D0000', '#660000', '#7F0000', '#991A1A', '#B33333', '#CC4D4D', '#E66666'],
-
- wysiwyg: ['#3F003F', '#3F003F', '#3F00BF', '#003FFF', '#00A0FF', '#3FBFFF', '#3FBFFF', '#40E0FF', '#3FFFBF', '#3FFF3F', '#7FFF3F', '#BFFF3F', '#BFFF3F', '#FFE040', '#FFE040', '#FF6040', '#FF1F40', '#FF60C0', '#FFA0FF', '#FFA0FF'].reverse()
-}
diff --git a/config/plugins/visualizations/heatmap/heatmap_default/src/script.js b/config/plugins/visualizations/heatmap/heatmap_default/src/script.js
deleted file mode 100644
index d9bf0966f02..00000000000
--- a/config/plugins/visualizations/heatmap/heatmap_default/src/script.js
+++ /dev/null
@@ -1,506 +0,0 @@
-import _ from "underscore";
-import $ from "jquery";
-import * as d3 from "d3";
-import Backbone from "backbone";
-import Colors from "./colorsets";
-
-import { addZoom, makeUniqueCategories, makeTickFormat } from "@galaxyproject/charts/lib/utilities/series";
-import { requestPanels } from "@galaxyproject/charts/lib/utilities/datasets";
-import { requestCharts, request as requestJobs } from "@galaxyproject/charts/lib/utilities/jobs";
-
-var CommonWrapper = Backbone.View.extend({
- optionsDefault: {
- margin: {
- top: 40,
- right: 70,
- bottom: 70,
- left: 70,
- },
- style: {
- "font-weight": "normal",
- "font-family": "Verdana",
- "font-size": 12,
- },
- legend: {
- width: 15,
- size: 0.9,
- style: {
- "font-weight": "normal",
- "font-family": "Verdana",
- "font-size": 11,
- },
- limit: 7,
- },
- background_color: "#FFFFFF",
- debug_color: "#FFFFFF",
- },
-
- initialize: function (options) {
- var self = this;
- this.chart = options.chart;
- this.canvas_id = options.canvas_id;
- this.group = options.groups[0];
- this.data = options.groups[0].values;
- this.options = _.defaults(this.optionsDefault, options);
-
- // get color set
- this.color_set = Colors[this.chart.settings.get("color_set", "seism")];
-
- // categories
- this.categories = makeUniqueCategories([this.group]);
-
- // domains/scales
- this.xScale = d3.scale.linear().domain([0, this.categories.array.x.length]);
- this.yScale = d3.scale.linear().domain([0, this.categories.array.y.length]);
-
- // color scale
- this.zMin = d3.min(this.data, function (d) {
- return d.z;
- });
- this.zMax = d3.max(this.data, function (d) {
- return d.z;
- });
- this.zScale = d3.scale.quantize().domain([this.zMin, this.zMax]).range(this.color_set);
-
- // create axis
- this.xAxis = d3.svg.axis().scale(this.xScale).orient("bottom");
- this.yAxis = d3.svg.axis().scale(this.yScale).orient("left");
-
- // make categories
- this._makeTickFormat("x");
- this._makeTickFormat("y");
-
- // add tooltip
- this.tooltip = d3
- .select(".charts-viewport-container")
- .append("div")
- .attr("class", "charts-tooltip")
- .style(this.options.style)
- .style("opacity", 0);
-
- // refresh on window resize
- $(window).on("resize", function () {
- self.redraw();
- });
- this.redraw();
- addZoom({
- xAxis: this.xAxis,
- yAxis: this.yAxis,
- redraw: function () {
- self.redraw();
- },
- svg: d3.select("#" + this.canvas_id),
- });
- },
-
- /** Redraw */
- redraw: function () {
- // get/reset container
- var container = $("#" + this.canvas_id);
- container.empty();
-
- // get domain
- var xDomain = this.xScale.domain();
- var yDomain = this.yScale.domain();
-
- // set ticks
- var xTickStart = Math.ceil(xDomain[0]);
- var xTickEnd = Math.floor(xDomain[1]);
- var yTickStart = Math.ceil(yDomain[0]);
- var yTickEnd = Math.floor(yDomain[1]);
- this.xAxis.tickValues(d3.range(xTickStart, xTickEnd, 1));
- this.yAxis.tickValues(d3.range(yTickStart, yTickEnd, 1));
-
- // get margins
- var margin = this.options.margin;
-
- // configure dimensions
- this.height = parseInt(container.height()) - margin.top - margin.bottom;
- this.width = parseInt(container.width()) - margin.left - margin.right;
-
- // set range
- this.xScale.range([0, this.width]);
- this.yScale.range([this.height, 0]);
-
- // get box properties
- this.rowCount = yDomain[1] - yDomain[0];
- this.colCount = xDomain[1] - xDomain[0];
- this.boxWidth = Math.max(1, Math.floor(this.width / this.colCount));
- this.boxHeight = Math.max(1, Math.floor(this.height / this.rowCount));
-
- // create group
- this.svg = d3
- .select("#" + this.canvas_id)
- .append("g")
- .attr("class", "heatmap")
- .attr("transform", "translate(" + margin.left + "," + margin.top + ")");
-
- // build elements
- this._buildBoxes();
- this._buildX();
- this._buildY();
-
- // show legend only if requested
- if (String(this.chart.settings.get("show_legend")).toLocaleLowerCase() == "true") {
- this._buildLegend();
- }
- },
-
- /** Build boxes */
- _buildBoxes: function () {
- var self = this;
- var height = this.height;
- var width = this.width;
- var svg = this.svg;
- var boxWidth = this.boxWidth;
- var boxHeight = this.boxHeight;
- function _locator(d) {
- return "translate(" + self.xScale(d.x) + "," + self.yScale(d.y + 1) + ")";
- }
- function _color(d) {
- return self.zScale(d.z);
- }
-
- // set background color
- svg.append("rect").attr("width", width).attr("height", height).attr("fill", this.options.background_color);
-
- // clip path
- svg.append("clipPath")
- .attr("id", "clip")
- .append("rect")
- .attr("x", 0)
- .attr("y", 0)
- .attr("width", width)
- .attr("height", height);
-
- // create chart area
- var chartBody = svg.append("g").attr("clip-path", "url(#clip)");
-
- // add boxes to chart area
- var boxes = chartBody.selectAll("box-group").data(this.data, function (d, i) {
- return d.x + "\0" + d.y;
- });
- var gEnter = boxes.enter().append("g").attr("class", "box-group");
- gEnter.append("rect").attr("class", "heat-box");
- boxes
- .selectAll("rect")
- .attr("rx", 1)
- .attr("ry", 1)
- .attr("fill", _color)
- .attr("width", boxWidth)
- .attr("height", boxHeight)
- .attr("transform", _locator);
-
- // add tooltip events
- boxes
- .selectAll("rect")
- .on("dblclick", function (d) {
- var url = self.chart.settings.get("url_template").trim();
- if (url) {
- d3.event.stopPropagation();
- var xLabel = self.categories.array.x[d.x];
- var yLabel = self.categories.array.y[d.y];
- window.open(url.replace("__LABEL__", xLabel));
- window.open(url.replace("__LABEL__", yLabel));
- }
- })
- .on("mouseover", function (d) {
- var matrix = this.getScreenCTM().translate(+this.getAttribute("cx"), +this.getAttribute("cy"));
- self.tooltip.style("opacity", 0.9);
- self.tooltip
- .html(self._templateTooltip(d))
- .style("left", window.pageXOffset + matrix.e + 15 + "px")
- .style("top", window.pageYOffset + matrix.f - 30 + "px");
- })
- .on("mouseout", function (d) {
- self.tooltip.style("opacity", 0);
- });
-
- // initially hide tooltips
- this.tooltip.style("opacity", 0);
-
- // exit
- boxes.exit().remove();
- },
-
- /** Build x axis */
- _buildX: function () {
- var height = this.height;
- var width = this.width;
- var margin = this.options.margin;
- var svg = this.svg;
- var font_size = this.options.style["font-size"];
- var boxWidth = this.boxWidth;
-
- // draw x axis
- this.gxAxis = svg
- .append("g")
- .attr("class", "x axis")
- .style("stroke-width", 1)
- .attr("transform", "translate(0," + height + ")")
- .call(this.xAxis);
-
- // fix text
- var xFontSize = Math.min(boxWidth, font_size);
- this.gxAxis
- .selectAll("text")
- .style(this.options.style)
- .style({ "font-size": xFontSize + "px" })
- .attr("transform", function (d) {
- var y = -this.getBBox().height - 15;
- var x = -xFontSize + boxWidth / 2;
- return "rotate(-90)translate(" + y + "," + x + ")";
- });
-
- // set background color
- svg.append("rect")
- .attr("width", width)
- .attr("height", font_size + 3)
- .attr("y", height + margin.bottom - font_size - 3)
- .attr("fill", this.options.debug_color)
- .attr("opacity", 0.7);
-
- // axis label
- this.gxAxisLabel = svg
- .append("text")
- .attr("class", "x label")
- .style(this.options.style)
- .text(this.chart.settings.get("x_axis_label"))
- .attr("transform", function (d) {
- var y = height + margin.bottom - font_size / 3;
- var x = (width - this.getBBox().width) / 2;
- return "translate(" + x + "," + y + ")";
- });
-
- // chart title
- this.gxTickLabel = svg
- .append("text")
- .attr("class", "title")
- .style(this.options.style)
- .style({ "font-size": 1.1 * font_size })
- .text(this.group.key)
- .attr("transform", function (d) {
- var y = -margin.top / 2;
- var x = (width - this.getBBox().width) / 2;
- return "translate(" + x + "," + y + ")";
- });
- },
-
- /** Build y axis */
- _buildY: function () {
- var height = this.height;
- var margin = this.options.margin;
- var svg = this.svg;
- var font_size = this.options.style["font-size"];
- var boxHeight = this.boxHeight;
-
- // draw y axis
- this.gyAxis = svg.append("g").attr("class", "y axis").style("stroke-width", 1).call(this.yAxis);
-
- // fix text
- var yFontSize = Math.min(boxHeight, font_size);
- this.gyAxis
- .selectAll("text")
- .style(this.options.style)
- .style({ "font-size": yFontSize + "px" })
- .attr("y", -boxHeight / 2);
-
- // set background color
- svg.append("rect")
- .attr("width", font_size)
- .attr("height", height)
- .attr("x", -margin.left)
- .attr("fill", this.options.debug_color)
- .attr("opacity", 0.7);
-
- // axis label
- this.gyAxisLabel = svg
- .append("text")
- .attr("class", "y label")
- .style(this.options.style)
- .text(this.chart.settings.get("y_axis_label"))
- .attr("transform", function (d) {
- var x = -margin.left + font_size - 2;
- var y = -(height + this.getBBox().width) / 2;
- return "rotate(-90)translate(" + y + "," + x + ")";
- });
- },
-
- /** Build legend */
- _buildLegend: function () {
- var self = this;
- var height = this.height;
- var width = this.width;
- var margin = this.options.margin;
- var font_size = this.options.legend.style["font-size"];
- var limit = this.options.legend.limit;
- var legendSize = this.options.legend.size;
- var legendWidth = this.options.legend.width;
- var legendElements = this.zScale.range().length;
- var legendElementHeight = Math.max((legendSize * height) / legendElements, font_size);
- var legendHeight = (legendElements * legendElementHeight) / 2;
- var data = d3.range(this.zMin, this.zMax, (2 * (this.zMax - this.zMin)) / legendElements).reverse();
- if (data.length < 2) {
- return;
- }
- var legend = this.svg
- .selectAll(".legend")
- .data(data)
- .enter()
- .append("g")
- .attr("class", "legend")
- .attr("transform", function (d, i) {
- var x = width + 10;
- var y = (height - legendHeight) / 2 + i * legendElementHeight;
- return "translate(" + x + "," + y + ")";
- });
- legend
- .append("rect")
- .attr("width", legendWidth)
- .attr("height", legendElementHeight)
- .style("fill", function (z) {
- return self.zScale(z);
- });
- legend
- .append("text")
- .attr("x", legendWidth + 4)
- .attr("y", function () {
- return (legendElementHeight + this.getBBox().height) / 2;
- })
- .style(this.options.legend.style)
- .text(function (d) {
- return String(d).length > limit ? String(d).substr(0, limit - 2) + ".." : String(d);
- });
- this.svg
- .append("text")
- .style(this.options.legend.style)
- .style({ "font-size": 9, "font-weight": "bold" })
- .text("Legend")
- .attr("transform", function (d, i) {
- var x = width + (margin.right - this.getBBox().width) / 2;
- var y = (height - legendHeight) / 2 - 10;
- return "translate(" + x + "," + y + ")";
- });
- },
-
- /** Create axes formatting */
- _makeTickFormat: function (id) {
- var settings = this.chart.settings;
- var self = this;
- makeTickFormat({
- categories: self.categories.array[id],
- type: settings.get(id + "_axis_type|type"),
- precision: settings.get(id + "_axis_type|precision"),
- formatter: function (formatter) {
- if (formatter) {
- self[id + "Axis"].tickFormat(function (value) {
- return formatter(value);
- });
- }
- },
- });
- },
-
- /** Handle error */
- _handleError: function (err) {
- this.chart.state("failed", err);
- },
-
- /** Main template */
- _templateTooltip: function (d) {
- var x = this.categories.array.x[d.x];
- var y = this.categories.array.y[d.y];
- var z = d.z;
- return (
- "
" +
- "" +
- '| Row: | ' +
- "" +
- y +
- " | " +
- "
" +
- "" +
- '| Column: | ' +
- "" +
- x +
- " | " +
- "
" +
- "" +
- '| Value: | ' +
- "" +
- z +
- " | " +
- "
" +
- "
"
- );
- },
-});
-
-
-/* Prepare containers */
-function createContainers(tag, chart, target) {
- var n = chart.groups.length;
- var $container = $("#" + target);
- $container.empty();
- const targets = [];
- for (var i = 0; i < n; i++) {
- var panel_id = "vis-container-id-" + i;
- var $panel = $("<" + tag + " style='float: left; height: 100%;' />").attr("id", panel_id);
- $panel.width(parseInt(100 / n) + "%");
- $container.append($panel);
- targets.push(panel_id);
- }
- return targets;
-}
-
-window.bundleEntries = window.bundleEntries || {};
-window.bundleEntries.heatmap_default = function (options) {
- options.targets = createContainers("svg", options.chart, options.target);
- options.render = function (canvas_id, groups) {
- new CommonWrapper({
- chart: options.chart,
- canvas_id: canvas_id,
- groups: groups,
- });
- return true;
- };
- requestPanels(options);
-}
-
-window.bundleEntries.heatmap_cluster = function (options) {
- options.targets = createContainers("svg", options.chart, options.target);
- requestJobs(
- options.chart,
- requestCharts(options.chart, "heatmap"),
- function (dataset) {
- var dataset_groups = new Backbone.Collection();
- options.chart.groups.each(function (group, index) {
- dataset_groups.add({
- __data_columns: {
- x: { is_label: true },
- y: { is_label: true },
- z: { is_numeric: true },
- },
- x: index++,
- y: index++,
- z: index++,
- key: group.get("key"),
- });
- });
- options.dataset_id = dataset.id;
- options.dataset_groups = dataset_groups;
- options.render = function (canvas_id, groups) {
- new CommonWrapper({
- chart: options.chart,
- canvas_id: canvas_id,
- groups: groups,
- });
- return true;
- };
- requestPanels(options);
- },
- function () {
- options.process.reject();
- }
- );
-}
diff --git a/config/plugins/visualizations/heatmap/heatmap_default/static/logo.png b/config/plugins/visualizations/heatmap/heatmap_default/static/logo.png
deleted file mode 100644
index 1dd9dc5591c..00000000000
Binary files a/config/plugins/visualizations/heatmap/heatmap_default/static/logo.png and /dev/null differ
diff --git a/config/plugins/visualizations/heatmap/static/logo.svg b/config/plugins/visualizations/heatmap/static/logo.svg
new file mode 100644
index 00000000000..41c80b8f2c1
--- /dev/null
+++ b/config/plugins/visualizations/heatmap/static/logo.svg
@@ -0,0 +1,18 @@
+