From dbf7ab649e33331ca9b32d528cbc7014dafd01de Mon Sep 17 00:00:00 2001 From: Ivan Mikheykin Date: Tue, 18 Sep 2018 13:31:00 +0300 Subject: [PATCH] Build dist directory for 0.0.1 --- dist/README.md | 49 ++ dist/color_legend.js | 411 +++++++++++ dist/color_mode_discrete.js | 245 +++++++ dist/css/status-heatmap.css | 60 ++ dist/css/status-heatmap.css.map | 7 + dist/img/color-mapping.png | Bin 0 -> 38271 bytes dist/img/flant-statusmap-panel.png | Bin 0 -> 27089 bytes dist/img/logo.svg | 3 + dist/img/queries-example.png | Bin 0 -> 48650 bytes .../d3-scale-chromatic/categorical/Accent.js | 16 + .../categorical/Accent.js.map | 1 + .../d3-scale-chromatic/categorical/Dark2.js | 16 + .../categorical/Dark2.js.map | 1 + .../d3-scale-chromatic/categorical/Paired.js | 16 + .../categorical/Paired.js.map | 1 + .../d3-scale-chromatic/categorical/Pastel1.js | 16 + .../categorical/Pastel1.js.map | 1 + .../d3-scale-chromatic/categorical/Pastel2.js | 16 + .../categorical/Pastel2.js.map | 1 + .../d3-scale-chromatic/categorical/Set1.js | 16 + .../categorical/Set1.js.map | 1 + .../d3-scale-chromatic/categorical/Set2.js | 16 + .../categorical/Set2.js.map | 1 + .../d3-scale-chromatic/categorical/Set3.js | 16 + .../categorical/Set3.js.map | 1 + dist/libs/d3-scale-chromatic/colors.js | 20 + dist/libs/d3-scale-chromatic/colors.js.map | 1 + .../libs/d3-scale-chromatic/diverging/BrBG.js | 22 + .../d3-scale-chromatic/diverging/BrBG.js.map | 1 + .../d3-scale-chromatic/diverging/GnYlRd.js | 22 + .../diverging/GnYlRd.js.map | 1 + .../libs/d3-scale-chromatic/diverging/PRGn.js | 22 + .../d3-scale-chromatic/diverging/PRGn.js.map | 1 + .../libs/d3-scale-chromatic/diverging/PiYG.js | 22 + .../d3-scale-chromatic/diverging/PiYG.js.map | 1 + .../libs/d3-scale-chromatic/diverging/PuOr.js | 22 + .../d3-scale-chromatic/diverging/PuOr.js.map | 1 + .../libs/d3-scale-chromatic/diverging/RdBu.js | 22 + .../d3-scale-chromatic/diverging/RdBu.js.map | 1 + .../libs/d3-scale-chromatic/diverging/RdGy.js | 22 + .../d3-scale-chromatic/diverging/RdGy.js.map | 1 + .../d3-scale-chromatic/diverging/RdYlBu.js | 22 + .../diverging/RdYlBu.js.map | 1 + .../d3-scale-chromatic/diverging/RdYlGn.js | 22 + .../diverging/RdYlGn.js.map | 1 + .../d3-scale-chromatic/diverging/Spectral.js | 22 + .../diverging/Spectral.js.map | 1 + dist/libs/d3-scale-chromatic/index.js | 219 ++++++ dist/libs/d3-scale-chromatic/index.js.map | 1 + dist/libs/d3-scale-chromatic/ramp.js | 19 + dist/libs/d3-scale-chromatic/ramp.js.map | 1 + .../sequential-multi/BuGn.js | 22 + .../sequential-multi/BuGn.js.map | 1 + .../sequential-multi/BuPu.js | 22 + .../sequential-multi/BuPu.js.map | 1 + .../sequential-multi/GnBu.js | 22 + .../sequential-multi/GnBu.js.map | 1 + .../sequential-multi/OrRd.js | 22 + .../sequential-multi/OrRd.js.map | 1 + .../sequential-multi/PuBu.js | 22 + .../sequential-multi/PuBu.js.map | 1 + .../sequential-multi/PuBuGn.js | 22 + .../sequential-multi/PuBuGn.js.map | 1 + .../sequential-multi/PuRd.js | 22 + .../sequential-multi/PuRd.js.map | 1 + .../sequential-multi/RdPu.js | 22 + .../sequential-multi/RdPu.js.map | 1 + .../sequential-multi/YlGn.js | 22 + .../sequential-multi/YlGn.js.map | 1 + .../sequential-multi/YlGnBu.js | 22 + .../sequential-multi/YlGnBu.js.map | 1 + .../sequential-multi/YlOrBr.js | 22 + .../sequential-multi/YlOrBr.js.map | 1 + .../sequential-multi/YlOrRd.js | 22 + .../sequential-multi/YlOrRd.js.map | 1 + .../sequential-single/Blues.js | 22 + .../sequential-single/Blues.js.map | 1 + .../sequential-single/Greens.js | 22 + .../sequential-single/Greens.js.map | 1 + .../sequential-single/Greys.js | 22 + .../sequential-single/Greys.js.map | 1 + .../sequential-single/Oranges.js | 22 + .../sequential-single/Oranges.js.map | 1 + .../sequential-single/Purples.js | 22 + .../sequential-single/Purples.js.map | 1 + .../sequential-single/Reds.js | 22 + .../sequential-single/Reds.js.map | 1 + dist/module.html | 15 + dist/module.js | 16 + dist/options_editor.js | 77 +++ dist/partials/options_editor.html | 159 +++++ dist/plugin.json | 35 + dist/rendering.js | 639 ++++++++++++++++++ dist/status_heatmap_ctrl.js | 366 ++++++++++ dist/tooltip.js | 206 ++++++ 95 files changed, 3329 insertions(+) create mode 100644 dist/README.md create mode 100644 dist/color_legend.js create mode 100644 dist/color_mode_discrete.js create mode 100644 dist/css/status-heatmap.css create mode 100644 dist/css/status-heatmap.css.map create mode 100644 dist/img/color-mapping.png create mode 100644 dist/img/flant-statusmap-panel.png create mode 100644 dist/img/logo.svg create mode 100644 dist/img/queries-example.png create mode 100644 dist/libs/d3-scale-chromatic/categorical/Accent.js create mode 100644 dist/libs/d3-scale-chromatic/categorical/Accent.js.map create mode 100644 dist/libs/d3-scale-chromatic/categorical/Dark2.js create mode 100644 dist/libs/d3-scale-chromatic/categorical/Dark2.js.map create mode 100644 dist/libs/d3-scale-chromatic/categorical/Paired.js create mode 100644 dist/libs/d3-scale-chromatic/categorical/Paired.js.map create mode 100644 dist/libs/d3-scale-chromatic/categorical/Pastel1.js create mode 100644 dist/libs/d3-scale-chromatic/categorical/Pastel1.js.map create mode 100644 dist/libs/d3-scale-chromatic/categorical/Pastel2.js create mode 100644 dist/libs/d3-scale-chromatic/categorical/Pastel2.js.map create mode 100644 dist/libs/d3-scale-chromatic/categorical/Set1.js create mode 100644 dist/libs/d3-scale-chromatic/categorical/Set1.js.map create mode 100644 dist/libs/d3-scale-chromatic/categorical/Set2.js create mode 100644 dist/libs/d3-scale-chromatic/categorical/Set2.js.map create mode 100644 dist/libs/d3-scale-chromatic/categorical/Set3.js create mode 100644 dist/libs/d3-scale-chromatic/categorical/Set3.js.map create mode 100644 dist/libs/d3-scale-chromatic/colors.js create mode 100644 dist/libs/d3-scale-chromatic/colors.js.map create mode 100644 dist/libs/d3-scale-chromatic/diverging/BrBG.js create mode 100644 dist/libs/d3-scale-chromatic/diverging/BrBG.js.map create mode 100644 dist/libs/d3-scale-chromatic/diverging/GnYlRd.js create mode 100644 dist/libs/d3-scale-chromatic/diverging/GnYlRd.js.map create mode 100644 dist/libs/d3-scale-chromatic/diverging/PRGn.js create mode 100644 dist/libs/d3-scale-chromatic/diverging/PRGn.js.map create mode 100644 dist/libs/d3-scale-chromatic/diverging/PiYG.js create mode 100644 dist/libs/d3-scale-chromatic/diverging/PiYG.js.map create mode 100644 dist/libs/d3-scale-chromatic/diverging/PuOr.js create mode 100644 dist/libs/d3-scale-chromatic/diverging/PuOr.js.map create mode 100644 dist/libs/d3-scale-chromatic/diverging/RdBu.js create mode 100644 dist/libs/d3-scale-chromatic/diverging/RdBu.js.map create mode 100644 dist/libs/d3-scale-chromatic/diverging/RdGy.js create mode 100644 dist/libs/d3-scale-chromatic/diverging/RdGy.js.map create mode 100644 dist/libs/d3-scale-chromatic/diverging/RdYlBu.js create mode 100644 dist/libs/d3-scale-chromatic/diverging/RdYlBu.js.map create mode 100644 dist/libs/d3-scale-chromatic/diverging/RdYlGn.js create mode 100644 dist/libs/d3-scale-chromatic/diverging/RdYlGn.js.map create mode 100644 dist/libs/d3-scale-chromatic/diverging/Spectral.js create mode 100644 dist/libs/d3-scale-chromatic/diverging/Spectral.js.map create mode 100644 dist/libs/d3-scale-chromatic/index.js create mode 100644 dist/libs/d3-scale-chromatic/index.js.map create mode 100644 dist/libs/d3-scale-chromatic/ramp.js create mode 100644 dist/libs/d3-scale-chromatic/ramp.js.map create mode 100644 dist/libs/d3-scale-chromatic/sequential-multi/BuGn.js create mode 100644 dist/libs/d3-scale-chromatic/sequential-multi/BuGn.js.map create mode 100644 dist/libs/d3-scale-chromatic/sequential-multi/BuPu.js create mode 100644 dist/libs/d3-scale-chromatic/sequential-multi/BuPu.js.map create mode 100644 dist/libs/d3-scale-chromatic/sequential-multi/GnBu.js create mode 100644 dist/libs/d3-scale-chromatic/sequential-multi/GnBu.js.map create mode 100644 dist/libs/d3-scale-chromatic/sequential-multi/OrRd.js create mode 100644 dist/libs/d3-scale-chromatic/sequential-multi/OrRd.js.map create mode 100644 dist/libs/d3-scale-chromatic/sequential-multi/PuBu.js create mode 100644 dist/libs/d3-scale-chromatic/sequential-multi/PuBu.js.map create mode 100644 dist/libs/d3-scale-chromatic/sequential-multi/PuBuGn.js create mode 100644 dist/libs/d3-scale-chromatic/sequential-multi/PuBuGn.js.map create mode 100644 dist/libs/d3-scale-chromatic/sequential-multi/PuRd.js create mode 100644 dist/libs/d3-scale-chromatic/sequential-multi/PuRd.js.map create mode 100644 dist/libs/d3-scale-chromatic/sequential-multi/RdPu.js create mode 100644 dist/libs/d3-scale-chromatic/sequential-multi/RdPu.js.map create mode 100644 dist/libs/d3-scale-chromatic/sequential-multi/YlGn.js create mode 100644 dist/libs/d3-scale-chromatic/sequential-multi/YlGn.js.map create mode 100644 dist/libs/d3-scale-chromatic/sequential-multi/YlGnBu.js create mode 100644 dist/libs/d3-scale-chromatic/sequential-multi/YlGnBu.js.map create mode 100644 dist/libs/d3-scale-chromatic/sequential-multi/YlOrBr.js create mode 100644 dist/libs/d3-scale-chromatic/sequential-multi/YlOrBr.js.map create mode 100644 dist/libs/d3-scale-chromatic/sequential-multi/YlOrRd.js create mode 100644 dist/libs/d3-scale-chromatic/sequential-multi/YlOrRd.js.map create mode 100644 dist/libs/d3-scale-chromatic/sequential-single/Blues.js create mode 100644 dist/libs/d3-scale-chromatic/sequential-single/Blues.js.map create mode 100644 dist/libs/d3-scale-chromatic/sequential-single/Greens.js create mode 100644 dist/libs/d3-scale-chromatic/sequential-single/Greens.js.map create mode 100644 dist/libs/d3-scale-chromatic/sequential-single/Greys.js create mode 100644 dist/libs/d3-scale-chromatic/sequential-single/Greys.js.map create mode 100644 dist/libs/d3-scale-chromatic/sequential-single/Oranges.js create mode 100644 dist/libs/d3-scale-chromatic/sequential-single/Oranges.js.map create mode 100644 dist/libs/d3-scale-chromatic/sequential-single/Purples.js create mode 100644 dist/libs/d3-scale-chromatic/sequential-single/Purples.js.map create mode 100644 dist/libs/d3-scale-chromatic/sequential-single/Reds.js create mode 100644 dist/libs/d3-scale-chromatic/sequential-single/Reds.js.map create mode 100644 dist/module.html create mode 100644 dist/module.js create mode 100644 dist/options_editor.js create mode 100644 dist/partials/options_editor.html create mode 100644 dist/plugin.json create mode 100644 dist/rendering.js create mode 100644 dist/status_heatmap_ctrl.js create mode 100644 dist/tooltip.js diff --git a/dist/README.md b/dist/README.md new file mode 100644 index 0000000..d9c8953 --- /dev/null +++ b/dist/README.md @@ -0,0 +1,49 @@ +# Statusmap panel for Grafana + + + +![Statusmap sample panel](https://raw.githubusercontent.com/flant/grafana-statusmap/master/src/img/flant-statusmap-panel.png) + + +## Features + +* Group values into rows and buckets by query's legend +* User defined color mapping +* Multiple values in bucket display in tooltip +* Interval shaping to better visual representation +* Represent null values as empty bucket or as zero + +Supported / Tested Data Sources : +-------------------------------- + +* Prometheus +* TestData + +Tested Grafana versions : +------------------------- + +* 5.1.3 + +## Development + +``` +docker run --rm -it -v $PWD:/var/lib/grafana/plugins/status-heatmap-panel \ + -p 3000:3000 --name grafana.docker \ + --env=GF_USERS_DEFAULT_THEME=light \ + grafana/grafana:5.1.3 +``` + +``` +grunt watch +``` + +### Acknowledgements + +This panel plugin is based on "Heatmap" panel by Grafana with ideas from Carpet plot, Discrete panel, Status Panel, Status Dot, Status By Group. + +#### Changelog + +##### v0.0.1 + +- First public release + diff --git a/dist/color_legend.js b/dist/color_legend.js new file mode 100644 index 0000000..f085483 --- /dev/null +++ b/dist/color_legend.js @@ -0,0 +1,411 @@ +'use strict'; + +System.register(['angular', 'lodash', 'jquery', 'd3', './libs/d3-scale-chromatic/index', 'app/core/core', 'app/core/utils/ticks'], function (_export, _context) { + "use strict"; + + var angular, _, $, d3, d3ScaleChromatic, contextSrv, tickStep, mod, MIN_LEGEND_STEPS; + + function drawColorLegend(elem, colorScheme, rangeFrom, rangeTo, maxValue, minValue) { + var legendElem = $(elem).find('svg'); + var legend = d3.select(legendElem.get(0)); + clearLegend(elem); + + var legendWidth = Math.floor(legendElem.outerWidth()) - 30; + var legendHeight = legendElem.attr("height"); + + var rangeStep = 1; + if (rangeTo - rangeFrom > legendWidth) { + rangeStep = Math.floor((rangeTo - rangeFrom) / legendWidth); + } + + if (rangeStep * MIN_LEGEND_STEPS > rangeTo) { + rangeStep = rangeTo / MIN_LEGEND_STEPS; + } + + var widthFactor = legendWidth / (rangeTo - rangeFrom); + var valuesRange = d3.range(rangeFrom, rangeTo, rangeStep); + + var colorScale = getColorScale(colorScheme, maxValue, minValue); + legend.selectAll(".status-heatmap-color-legend-rect").data(valuesRange).enter().append("rect").attr("x", function (d) { + return d * widthFactor; + }).attr("y", 0).attr("width", rangeStep * widthFactor + 1) // Overlap rectangles to prevent gaps + .attr("height", legendHeight).attr("stroke-width", 0).attr("fill", function (d) { + return colorScale(d); + }); + + drawLegendValues(elem, colorScale, rangeFrom, rangeTo, maxValue, minValue, legendWidth); + } + + function drawOpacityLegend(elem, options, rangeFrom, rangeTo, maxValue, minValue) { + var legendElem = $(elem).find('svg'); + var legend = d3.select(legendElem.get(0)); + clearLegend(elem); + + var legendWidth = Math.floor(legendElem.outerWidth()) - 30; + var legendHeight = legendElem.attr("height"); + + var rangeStep = 10; + var widthFactor = legendWidth / (rangeTo - rangeFrom); + + if (rangeStep * MIN_LEGEND_STEPS > rangeTo) { + rangeStep = rangeTo / MIN_LEGEND_STEPS; + } + + var valuesRange = d3.range(rangeFrom, rangeTo, rangeStep); + + var opacityScale = getOpacityScale(options, maxValue, minValue); + legend.selectAll(".status-heatmap-opacity-legend-rect").data(valuesRange).enter().append("rect").attr("x", function (d) { + return d * widthFactor; + }).attr("y", 0).attr("width", rangeStep * widthFactor).attr("height", legendHeight).attr("stroke-width", 0).attr("fill", options.cardColor).style("opacity", function (d) { + return opacityScale(d); + }); + + drawLegendValues(elem, opacityScale, rangeFrom, rangeTo, maxValue, minValue, legendWidth); + } + + function drawDiscreteColorLegend(elem, colorOptions, discreteHelper) { + var legendElem = $(elem).find('svg'); + var legend = d3.select(legendElem.get(0)); + clearLegend(elem); + + var thresholds = colorOptions.thresholds; + var tooltips = _.map(thresholds, function (tr) { + return tr.tooltip; + }); + var valuesNumber = thresholds.length; + + // graph width as a fallback + var $heatmap = $(elem).parent().parent().parent().find('.status-heatmap-panel'); + var graphWidth = $heatmap.find('svg').attr("width"); + + // calculate max width of tooltip and use it as width for each item + var textWidth = []; + legend.selectAll(".hidden-texts").data(tooltips).enter().append("text").attr("class", "axis tick").attr("font-family", "sans-serif").text(function (d) { + return d; + }).each(function (d, i) { + var thisWidth = this.getBBox().width; + textWidth.push(thisWidth); + this.remove(); // remove them just after displaying them + }); + + var legendWidth = Math.floor(_.min([graphWidth - 30, (_.max(textWidth) + 3) * valuesNumber])); + legendElem.attr("width", legendWidth); + + var legendHeight = legendElem.attr("height"); + + var itemWidth = Math.floor(legendWidth / valuesNumber); + var valuesRange = d3.range(valuesNumber); // from 0 to valuesNumber-1 + + legend.selectAll(".status-heatmap-color-legend-rect").data(valuesRange).enter().append("rect").attr("x", function (d) { + return d * itemWidth; + }).attr("y", 0).attr("width", itemWidth + 1) // Overlap rectangles to prevent gaps + .attr("height", legendHeight).attr("stroke-width", 0).attr("fill", function (d) { + return discreteHelper.getDiscreteColor(d); + }); + + drawDiscreteLegendValues(elem, colorOptions, legendWidth); + } + + function drawLegendValues(elem, colorScale, rangeFrom, rangeTo, maxValue, minValue, legendWidth) { + var legendElem = $(elem).find('svg'); + var legend = d3.select(legendElem.get(0)); + + if (legendWidth <= 0 || legendElem.get(0).childNodes.length === 0) { + return; + } + + var legendValueScale = d3.scaleLinear().domain([0, rangeTo]).range([0, legendWidth]); + + var ticks = buildLegendTicks(0, rangeTo, maxValue, minValue); + var xAxis = d3.axisBottom(legendValueScale).tickValues(ticks).tickSize(2); + + var colorRect = legendElem.find(":first-child"); + var posY = getSvgElemHeight(legendElem) + 2; + var posX = getSvgElemX(colorRect); + + d3.select(legendElem.get(0)).append("g").attr("class", "axis").attr("transform", "translate(" + posX + "," + posY + ")").call(xAxis); + + legend.select(".axis").select(".domain").remove(); + } + + function drawDiscreteLegendValues(elem, colorOptions, legendWidth) { + var thresholds = colorOptions.thresholds; + + var legendElem = $(elem).find('svg'); + var legend = d3.select(legendElem.get(0)); + + if (legendWidth <= 0 || legendElem.get(0).childNodes.length === 0) { + return; + } + + var valuesNumber = thresholds.length; + var rangeStep = Math.floor(legendWidth / valuesNumber); + var valuesRange = d3.range(0, legendWidth, rangeStep); + + var legendValueScale = d3.scaleLinear().domain([0, valuesNumber]).range([0, legendWidth]); + + var thresholdValues = []; + var thresholdTooltips = []; + for (var i = 0; i < thresholds.length; i++) { + thresholdValues.push(thresholds[i].value); + thresholdTooltips.push(thresholds[i].tooltip); + } + + var xAxis = d3.axisBottom(legendValueScale).tickValues(d3.range(0, valuesNumber, 1)) //thresholdValues) + .tickSize(2).tickFormat(function (t) { + var i = Math.floor(t); + var v = thresholdTooltips[i]; + if (v != undefined) { + return "" + v; + } else { + v = thresholdValues[i]; + if (v != undefined) { + return "" + v; + } else { + return "n/a"; + } + } + }); + + var colorRect = legendElem.find(":first-child"); + var posY = getSvgElemHeight(legendElem) + 2; + var posX = getSvgElemX(colorRect) + Math.floor(rangeStep / 2); + + d3.select(legendElem.get(0)).append("g").attr("class", "axis").attr("transform", "translate(" + posX + "," + posY + ")").call(xAxis); + + legend.select(".axis").select(".domain").remove(); + } + + function drawSimpleColorLegend(elem, colorScale) { + var legendElem = $(elem).find('svg'); + clearLegend(elem); + + var legendWidth = Math.floor(legendElem.outerWidth()); + var legendHeight = legendElem.attr("height"); + + if (legendWidth) { + var valuesNumber = Math.floor(legendWidth / 2); + var rangeStep = Math.floor(legendWidth / valuesNumber); + var valuesRange = d3.range(0, legendWidth, rangeStep); + + var legend = d3.select(legendElem.get(0)); + var legendRects = legend.selectAll(".status-heatmap-color-legend-rect").data(valuesRange); + + legendRects.enter().append("rect").attr("x", function (d) { + return d; + }).attr("y", 0).attr("width", rangeStep + 1) // Overlap rectangles to prevent gaps + .attr("height", legendHeight).attr("stroke-width", 0).attr("fill", function (d) { + return colorScale(d); + }); + } + } + + function drawSimpleOpacityLegend(elem, options) { + var legendElem = $(elem).find('svg'); + var graphElem = $(elem); + clearLegend(elem); + + var legend = d3.select(legendElem.get(0)); + var legendWidth = Math.floor(legendElem.outerWidth()); + var legendHeight = legendElem.attr("height"); + + if (legendWidth) { + var legendOpacityScale = void 0; + if (options.colorScale === 'linear') { + legendOpacityScale = d3.scaleLinear().domain([0, legendWidth]).range([0, 1]); + } else if (options.colorScale === 'sqrt') { + legendOpacityScale = d3.scalePow().exponent(options.exponent).domain([0, legendWidth]).range([0, 1]); + } + + var rangeStep = 10; + var valuesRange = d3.range(0, legendWidth, rangeStep); + var legendRects = legend.selectAll(".status-heatmap-opacity-legend-rect").data(valuesRange); + + legendRects.enter().append("rect").attr("x", function (d) { + return d; + }).attr("y", 0).attr("width", rangeStep).attr("height", legendHeight).attr("stroke-width", 0).attr("fill", options.cardColor).style("opacity", function (d) { + return legendOpacityScale(d); + }); + } + } + + function clearLegend(elem) { + var legendElem = $(elem).find('svg'); + legendElem.empty(); + } + + function getColorScale(colorScheme, maxValue) { + var minValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; + + var colorInterpolator = d3ScaleChromatic[colorScheme.value]; + var colorScaleInverted = colorScheme.invert === 'always' || colorScheme.invert === 'dark' && !contextSrv.user.lightTheme; + + var start = colorScaleInverted ? maxValue : minValue; + var end = colorScaleInverted ? minValue : maxValue; + + return d3.scaleSequential(colorInterpolator).domain([start, end]); + } + + function getOpacityScale(options, maxValue) { + var minValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; + + var legendOpacityScale = void 0; + if (options.colorScale === 'linear') { + legendOpacityScale = d3.scaleLinear().domain([minValue, maxValue]).range([0, 1]); + } else if (options.colorScale === 'sqrt') { + legendOpacityScale = d3.scalePow().exponent(options.exponent).domain([minValue, maxValue]).range([0, 1]); + } + return legendOpacityScale; + } + + function getSvgElemX(elem) { + var svgElem = elem.get(0); + if (svgElem && svgElem.x && svgElem.x.baseVal) { + return svgElem.x.baseVal.value; + } else { + return 0; + } + } + + function getSvgElemHeight(elem) { + var svgElem = elem.get(0); + if (svgElem && svgElem.height && svgElem.height.baseVal) { + return svgElem.height.baseVal.value; + } else { + return 0; + } + } + + function buildLegendTicks(rangeFrom, rangeTo, maxValue, minValue) { + var range = rangeTo - rangeFrom; + var tickStepSize = tickStep(rangeFrom, rangeTo, 3); + var ticksNum = Math.round(range / tickStepSize); + var ticks = []; + + for (var i = 0; i < ticksNum; i++) { + var current = tickStepSize * i; + // Add user-defined min and max if it had been set + if (isValueCloseTo(minValue, current, tickStepSize)) { + ticks.push(minValue); + continue; + } else if (minValue < current) { + ticks.push(minValue); + } + if (isValueCloseTo(maxValue, current, tickStepSize)) { + ticks.push(maxValue); + continue; + } else if (maxValue < current) { + ticks.push(maxValue); + } + ticks.push(tickStepSize * i); + } + if (!isValueCloseTo(maxValue, rangeTo, tickStepSize)) { + ticks.push(maxValue); + } + ticks.push(rangeTo); + ticks = _.sortBy(_.uniq(ticks)); + return ticks; + } + + function isValueCloseTo(val, valueTo, step) { + var diff = Math.abs(val - valueTo); + return diff < step * 0.3; + } + return { + setters: [function (_angular) { + angular = _angular.default; + }, function (_lodash) { + _ = _lodash.default; + }, function (_jquery) { + $ = _jquery.default; + }, function (_d) { + d3 = _d.default; + }, function (_libsD3ScaleChromaticIndex) { + d3ScaleChromatic = _libsD3ScaleChromaticIndex; + }, function (_appCoreCore) { + contextSrv = _appCoreCore.contextSrv; + }, function (_appCoreUtilsTicks) { + tickStep = _appCoreUtilsTicks.tickStep; + }], + execute: function () { + mod = angular.module('grafana.directives'); + MIN_LEGEND_STEPS = 10; + + + /** + * Color legend for heatmap editor. + */ + mod.directive('optionsColorLegend', function () { + return { + restrict: 'E', + template: '
', + link: function link(scope, elem, attrs) { + var ctrl = scope.ctrl; + var panel = scope.ctrl.panel; + + render(); + + ctrl.events.on('render', function () { + render(); + }); + + function render() { + var legendElem = $(elem).find('svg'); + var legendWidth = Math.floor(legendElem.outerWidth()); + + if (panel.color.mode === 'spectrum') { + var colorScheme = _.find(ctrl.colorSchemes, { value: panel.color.colorScheme }); + var colorScale = getColorScale(colorScheme, legendWidth); + drawSimpleColorLegend(elem, colorScale); + } else if (panel.color.mode === 'opacity') { + var colorOptions = panel.color; + drawSimpleOpacityLegend(elem, colorOptions); + } + } + } + }; + }); + + /** + * Heatmap legend with scale values. + */ + mod.directive('statusHeatmapLegend', function () { + return { + restrict: 'E', + template: '
', + link: function link(scope, elem, attrs) { + var ctrl = scope.ctrl; + var panel = scope.ctrl.panel; + + render(); + ctrl.events.on('render', function () { + render(); + }); + + function render() { + clearLegend(elem); + if (!_.isEmpty(ctrl.cardsData) && !_.isEmpty(ctrl.cardsData.cards)) { + var rangeFrom = ctrl.cardsData.minValue; + var rangeTo = ctrl.cardsData.maxValue; + var maxValue = panel.color.max || rangeTo; + var minValue = panel.color.min || rangeFrom; + + if (panel.color.mode === 'spectrum') { + var colorScheme = _.find(ctrl.colorSchemes, { value: panel.color.colorScheme }); + drawColorLegend(elem, colorScheme, rangeFrom, rangeTo, maxValue, minValue); + } else if (panel.color.mode === 'opacity') { + var colorOptions = panel.color; + drawOpacityLegend(elem, colorOptions, rangeFrom, rangeTo, maxValue, minValue); + } else if (panel.color.mode === 'discrete') { + var _colorOptions = panel.color; + drawDiscreteColorLegend(elem, _colorOptions, ctrl.discreteHelper); + } + } + } + } + }; + }); + } + }; +}); +//# sourceMappingURL=color_legend.js.map diff --git a/dist/color_mode_discrete.js b/dist/color_mode_discrete.js new file mode 100644 index 0000000..41db277 --- /dev/null +++ b/dist/color_mode_discrete.js @@ -0,0 +1,245 @@ +"use strict"; + +System.register(["lodash"], function (_export, _context) { + "use strict"; + + var _, _createClass, ColorModeDiscrete; + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + return { + setters: [function (_lodash) { + _ = _lodash.default; + }], + execute: function () { + _createClass = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; + }(); + + _export("ColorModeDiscrete", ColorModeDiscrete = function () { + function ColorModeDiscrete(scope) { + _classCallCheck(this, ColorModeDiscrete); + + this.scope = scope; + this.panelCtrl = scope.ctrl; + this.panel = scope.ctrl.panel; + } + + // get tooltip for each value ordered by thresholds priority + + + _createClass(ColorModeDiscrete, [{ + key: "convertValuesToTooltips", + value: function convertValuesToTooltips(values) { + var thresholds = this.panel.color.thresholds; + var tooltips = []; + + for (var i = 0; i < thresholds.length; i++) { + for (var j = 0; j < values.length; j++) { + if (values[j] == thresholds[i].value) { + tooltips.push({ + "tooltip": thresholds[i].tooltip ? thresholds[i].tooltip : values[j], + "color": thresholds[i].color + }); + } + } + } + return tooltips; + } + }, { + key: "getNotMatchedValues", + value: function getNotMatchedValues(values) { + var notMatched = []; + for (var j = 0; j < values.length; j++) { + if (!this.getMatchedThreshold(values[j])) { + notMatched.push(values[j]); + } + } + return notMatched; + } + }, { + key: "getNotColoredValues", + value: function getNotColoredValues(values) { + var notMatched = []; + for (var j = 0; j < values.length; j++) { + var threshold = this.getMatchedThreshold(values[j]); + if (!threshold || !threshold.color || threshold.color == "") { + notMatched.push(values[j]); + } + } + return notMatched; + } + }, { + key: "getDiscreteColor", + value: function getDiscreteColor(index) { + var color = this.getThreshold(index).color; + if (!color || color == "") { + return 'rgba(0,0,0,1)'; + } + return color; + } + }, { + key: "getBucketColor", + value: function getBucketColor(values) { + var thresholds = this.panel.color.thresholds; + + for (var i = 0; i < thresholds.length; i++) { + for (var j = 0; j < values.length; j++) { + if (values[j] == thresholds[i].value) { + return this.getDiscreteColor(i); + } + } + } + return 'rgba(0,0,0,1)'; + } + }, { + key: "updateCardsValuesHasColorInfo", + value: function updateCardsValuesHasColorInfo() { + if (!this.panelCtrl.cardsData) { + return; + } + this.panelCtrl.cardsData.noColorDefined = false; + var cards = this.panelCtrl.cardsData.cards; + for (var i = 0; i < cards.length; i++) { + cards[i].noColorDefined = false; + var values = cards[i].values; + for (var j = 0; j < values.length; j++) { + var threshold = this.getMatchedThreshold(values[j]); + if (!threshold || !threshold.color || threshold.color == "") { + cards[i].noColorDefined = true; + this.panelCtrl.cardsData.noColorDefined = true; + break; + } + } + } + } + }, { + key: "getMatchedThreshold", + value: function getMatchedThreshold(value) { + if (value == null) { + if (this.panel.color.nullPointMode == 'as empty') { + // FIXME: make this explicit for user + // Right now this color never used because null as empty handles in getCardOpacity method. + return { + "color": "rgba(0,0,0,0)", + "value": "null", + "tooltip": "null" + }; + } else { + value = 0; + } + } + + var thresholds = this.panel.color.thresholds; + for (var k = 0; k < thresholds.length; k++) { + if (value == thresholds[k].value) { + return thresholds[k]; + } + } + return null; + } + }, { + key: "getThreshold", + value: function getThreshold(index) { + var thresholds = this.panel.color.thresholds; + if (index < 0 || index >= thresholds.length == null) { + return { + "color": "rgba(0,0,0,0)", + "value": "null", + "tooltip": "null" + }; + } + return thresholds[index]; + } + }, { + key: "roundIntervalCeil", + value: function roundIntervalCeil(interval) { + switch (true) { + case interval <= 10: + return 10; // 0.01s + case interval <= 20: + return 20; // 0.02s + case interval <= 50: + return 50; // 0.05s + case interval <= 100: + return 100; // 0.1s + case interval <= 200: + return 200; // 0.2s + case interval <= 500: + return 500; // 0.5s + case interval <= 1000: + return 1000; // 1s + case interval <= 2000: + return 2000; // 2s + case interval <= 5000: + return 5000; // 5s + case interval <= 10000: + return 10000; // 10s + case interval <= 15000: + return 15000; // 15s + case interval <= 20000: + return 20000; // 20s + case interval <= 30000: + return 30000; // 30s + case interval <= 60000: + return 60000; // 1m + case interval <= 120000: + return 120000; // 2m + case interval <= 300000: + return 300000; // 5m + case interval <= 600000: + return 600000; // 10m + case interval <= 900000: + return 900000; // 15m + case interval <= 1200000: + return 1200000; // 20m + case interval <= 1800000: + return 1800000; // 30m + case interval <= 3600000: + return 3600000; // 1h + case interval <= 7200000: + return 7200000; // 2h + case interval <= 10800000: + return 10800000; // 3h + case interval <= 21600000: + return 21600000; // 6h + case interval <= 43200000: + return 43200000; // 12h + case interval <= 86400000: + return 86400000; // 1d + case interval <= 604800000: + return 604800000; // 1w + case interval <= 2592000000: + return 2592000000; // 30d + default: + return 31536000000; // 1y + } + } + }]); + + return ColorModeDiscrete; + }()); + + _export("ColorModeDiscrete", ColorModeDiscrete); + } + }; +}); +//# sourceMappingURL=color_mode_discrete.js.map diff --git a/dist/css/status-heatmap.css b/dist/css/status-heatmap.css new file mode 100644 index 0000000..0c339ec --- /dev/null +++ b/dist/css/status-heatmap.css @@ -0,0 +1,60 @@ +.status-heatmap-canvas-wrapper { + cursor: crosshair; } + .status-heatmap-canvas-wrapper .datapoints-warning span { + background-color: white; + padding: 1px; } + +.status-heatmap-panel { + position: relative; } + .status-heatmap-panel .axis .tick text { + fill: #52545c; + color: #52545c; + font-size: 11px; } + .status-heatmap-panel .axis .tick line { + opacity: 0.4; + stroke: #767980; } + .status-heatmap-panel svg { + pointer-events: none; } + .status-heatmap-panel svg rect { + pointer-events: visiblePainted; } + +.status-heatmap-tooltip { + white-space: nowrap; + font-size: 12px; + background-color: #dde4ed; + color: #52545c; } + +.status-heatmap-histogram rect { + fill: #767980; } + +.status-heatmap-crosshair line { + stroke: #b30000; + stroke-width: 1; } + +.status-heatmap-selection { + stroke-width: 1; + fill: rgba(102, 102, 102, 0.4); + stroke: rgba(102, 102, 102, 0.8); } + +.status-heatmap-legend-wrapper { + margin: 0 10px; } + .status-heatmap-legend-wrapper svg { + height: 24px; + float: left; + white-space: nowrap; } + .status-heatmap-legend-wrapper .status-heatmap-color-legend { + margin-top: 4px; } + .status-heatmap-legend-wrapper .status-heatmap-legend-values { + display: inline-block; } + .status-heatmap-legend-wrapper .axis .tick text { + fill: #52545c; + color: #52545c; + font-size: 11px; } + .status-heatmap-legend-wrapper .axis .tick line { + opacity: 0.4; + stroke: #767980; } + .status-heatmap-legend-wrapper .axis .tick .domain { + opacity: 0.4; + stroke: #767980; } + +/*# sourceMappingURL=status-heatmap.css.map */ diff --git a/dist/css/status-heatmap.css.map b/dist/css/status-heatmap.css.map new file mode 100644 index 0000000..793b717 --- /dev/null +++ b/dist/css/status-heatmap.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "AAGA,8BAA+B;EAE7B,MAAM,EAAE,SAAS;EAEjB,uDAAyB;IACzB,gBAAgB,EAAE,KAAK;IACvB,OAAO,EAAE,GAAG;;AAId,qBAAsB;EACpB,QAAQ,EAAE,QAAQ;EAGhB,sCAAK;IACH,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,IAAI;EAGjB,sCAAK;IACH,OAAO,EAAE,GAAG;IACZ,MAAM,EAAE,OAAO;EAKnB,yBAAI;IACF,cAAc,EAAE,IAAI;IAEpB,8BAAK;MACH,cAAc,EAAE,cAAc;;AAKpC,uBAAwB;EACtB,WAAW,EAAE,MAAM;EACnB,SAAS,EAzCI,IAAI;EA0CjB,gBAAgB,EAAE,OAAO;EACzB,KAAK,EAAE,OAAO;;AAGhB,8BAA+B;EAC7B,IAAI,EAAE,OAAO;;AAIb,8BAAK;EACH,MAAM,EAAE,OAAe;EACvB,YAAY,EAAE,CAAC;;AAInB,yBAA0B;EACxB,YAAY,EAAE,CAAC;EACf,IAAI,EAAE,wBAAwB;EAC9B,MAAM,EAAE,wBAAwB;;AAGlC,8BAA+B;EAE7B,MAAM,EAAE,MAAM;EAGd,kCAAI;IAGF,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,IAAI;IACX,WAAW,EAAE,MAAM;EAIrB,2DAA6B;IAC3B,UAAU,EAAE,GAAG;EAGjB,4DAA8B;IAC5B,OAAO,EAAE,YAAY;EAIrB,+CAAK;IACH,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,IAAI;EAGjB,+CAAK;IACH,OAAO,EAAE,GAAG;IACZ,MAAM,EAAE,OAAO;EAGjB,kDAAQ;IACN,OAAO,EAAE,GAAG;IACZ,MAAM,EAAE,OAAO", +"sources": ["../../src/css/status-heatmap.scss"], +"names": [], +"file": "status-heatmap.css" +} diff --git a/dist/img/color-mapping.png b/dist/img/color-mapping.png new file mode 100644 index 0000000000000000000000000000000000000000..d516267f6e59c36b6c86390a0e72c3995e2f888a GIT binary patch literal 38271 zcmbTdbzGHQ*EM<(0wN$HC0!zogdp7@-CasI(zz)G1Vlt>q`N`75u~Kqba!_*XL;Yx z`<(YX-+zZc^tboEYOQOoImZ}ttPmvyDNJ-CbO?elrQe9FKoBA|1R+SFA%bsi+NZg} ze@ITE(rRdEXw!>|3*h53X9+E5ReLjMw|9=Fkhz_`ttqpUv7@P}os)&V^FC6uAOulB z(&8d&?mu>t+_aublXvoZGR;2aVtA4(F-^ObFVL4yRKk^@#D7vbmhR%2aOBvZCHrn5S%3gt z0v~^kS_+Gt-Gn0G>sIZKhT1_ai+-i!DmwvzIX?yxbN8lOxB$mF?*Sy;r0Q{5hR$~)HyLc?VlNpEPHym`D=x*|Cf$ha~} z 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 My85}Sb4q9e00D(wTL1t6 literal 0 HcmV?d00001 diff --git a/dist/img/flant-statusmap-panel.png b/dist/img/flant-statusmap-panel.png new file mode 100644 index 0000000000000000000000000000000000000000..8404b38ab2e0566068d7b1ce5683931a8162a056 GIT binary patch literal 27089 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 iJruq~f)V2Hu>Gy?q*z{e?SZ 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/lnyOAu4`m{~rapWS0$JEu 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 MDR^@HXQP1s2ROc_y#N3J literal 0 HcmV?d00001 diff --git a/dist/img/logo.svg b/dist/img/logo.svg new file mode 100644 index 0000000..2bedb4c --- /dev/null +++ b/dist/img/logo.svg @@ -0,0 +1,3 @@ + + + diff --git a/dist/img/queries-example.png b/dist/img/queries-example.png new file mode 100644 index 0000000000000000000000000000000000000000..1115ee281ec0670083067aaa5a7007872cfbd81d GIT binary patch literal 48650 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 SAxlBvpRA;!M4s3)zyAV)uF4Sr literal 0 HcmV?d00001 diff --git a/dist/libs/d3-scale-chromatic/categorical/Accent.js b/dist/libs/d3-scale-chromatic/categorical/Accent.js new file mode 100644 index 0000000..6b96ef4 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/categorical/Accent.js @@ -0,0 +1,16 @@ +"use strict"; + +System.register(["../colors"], function (_export, _context) { + "use strict"; + + var colors; + return { + setters: [function (_colors) { + colors = _colors.default; + }], + execute: function () { + _export("default", colors("7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666")); + } + }; +}); +//# sourceMappingURL=Accent.js.map diff --git a/dist/libs/d3-scale-chromatic/categorical/Accent.js.map b/dist/libs/d3-scale-chromatic/categorical/Accent.js.map new file mode 100644 index 0000000..44173f7 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/categorical/Accent.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/categorical/Accent.js"],"names":["colors"],"mappings":";;;;;;;;AAAOA,Y;;;yBAEQA,OAAO,kDAAP,C","file":"Accent.js","sourcesContent":["import colors from \"../colors\";\n\nexport default colors(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\");\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/categorical/Dark2.js b/dist/libs/d3-scale-chromatic/categorical/Dark2.js new file mode 100644 index 0000000..f72816a --- /dev/null +++ b/dist/libs/d3-scale-chromatic/categorical/Dark2.js @@ -0,0 +1,16 @@ +"use strict"; + +System.register(["../colors"], function (_export, _context) { + "use strict"; + + var colors; + return { + setters: [function (_colors) { + colors = _colors.default; + }], + execute: function () { + _export("default", colors("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666")); + } + }; +}); +//# sourceMappingURL=Dark2.js.map diff --git a/dist/libs/d3-scale-chromatic/categorical/Dark2.js.map b/dist/libs/d3-scale-chromatic/categorical/Dark2.js.map new file mode 100644 index 0000000..273e762 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/categorical/Dark2.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/categorical/Dark2.js"],"names":["colors"],"mappings":";;;;;;;;AAAOA,Y;;;yBAEQA,OAAO,kDAAP,C","file":"Dark2.js","sourcesContent":["import colors from \"../colors\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/categorical/Paired.js b/dist/libs/d3-scale-chromatic/categorical/Paired.js new file mode 100644 index 0000000..5757682 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/categorical/Paired.js @@ -0,0 +1,16 @@ +"use strict"; + +System.register(["../colors"], function (_export, _context) { + "use strict"; + + var colors; + return { + setters: [function (_colors) { + colors = _colors.default; + }], + execute: function () { + _export("default", colors("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928")); + } + }; +}); +//# sourceMappingURL=Paired.js.map diff --git a/dist/libs/d3-scale-chromatic/categorical/Paired.js.map b/dist/libs/d3-scale-chromatic/categorical/Paired.js.map new file mode 100644 index 0000000..26ebc51 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/categorical/Paired.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/categorical/Paired.js"],"names":["colors"],"mappings":";;;;;;;;AAAOA,Y;;;yBAEQA,OAAO,0EAAP,C","file":"Paired.js","sourcesContent":["import colors from \"../colors\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/categorical/Pastel1.js b/dist/libs/d3-scale-chromatic/categorical/Pastel1.js new file mode 100644 index 0000000..cca697a --- /dev/null +++ b/dist/libs/d3-scale-chromatic/categorical/Pastel1.js @@ -0,0 +1,16 @@ +"use strict"; + +System.register(["../colors"], function (_export, _context) { + "use strict"; + + var colors; + return { + setters: [function (_colors) { + colors = _colors.default; + }], + execute: function () { + _export("default", colors("fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2")); + } + }; +}); +//# sourceMappingURL=Pastel1.js.map diff --git a/dist/libs/d3-scale-chromatic/categorical/Pastel1.js.map b/dist/libs/d3-scale-chromatic/categorical/Pastel1.js.map new file mode 100644 index 0000000..be35100 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/categorical/Pastel1.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/categorical/Pastel1.js"],"names":["colors"],"mappings":";;;;;;;;AAAOA,Y;;;yBAEQA,OAAO,wDAAP,C","file":"Pastel1.js","sourcesContent":["import colors from \"../colors\";\n\nexport default colors(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\");\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/categorical/Pastel2.js b/dist/libs/d3-scale-chromatic/categorical/Pastel2.js new file mode 100644 index 0000000..90cfe91 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/categorical/Pastel2.js @@ -0,0 +1,16 @@ +"use strict"; + +System.register(["../colors"], function (_export, _context) { + "use strict"; + + var colors; + return { + setters: [function (_colors) { + colors = _colors.default; + }], + execute: function () { + _export("default", colors("b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc")); + } + }; +}); +//# sourceMappingURL=Pastel2.js.map diff --git a/dist/libs/d3-scale-chromatic/categorical/Pastel2.js.map b/dist/libs/d3-scale-chromatic/categorical/Pastel2.js.map new file mode 100644 index 0000000..1507a53 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/categorical/Pastel2.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/categorical/Pastel2.js"],"names":["colors"],"mappings":";;;;;;;;AAAOA,Y;;;yBAEQA,OAAO,kDAAP,C","file":"Pastel2.js","sourcesContent":["import colors from \"../colors\";\n\nexport default colors(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\");\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/categorical/Set1.js b/dist/libs/d3-scale-chromatic/categorical/Set1.js new file mode 100644 index 0000000..695f584 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/categorical/Set1.js @@ -0,0 +1,16 @@ +"use strict"; + +System.register(["../colors"], function (_export, _context) { + "use strict"; + + var colors; + return { + setters: [function (_colors) { + colors = _colors.default; + }], + execute: function () { + _export("default", colors("e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999")); + } + }; +}); +//# sourceMappingURL=Set1.js.map diff --git a/dist/libs/d3-scale-chromatic/categorical/Set1.js.map b/dist/libs/d3-scale-chromatic/categorical/Set1.js.map new file mode 100644 index 0000000..75f5cb9 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/categorical/Set1.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/categorical/Set1.js"],"names":["colors"],"mappings":";;;;;;;;AAAOA,Y;;;yBAEQA,OAAO,wDAAP,C","file":"Set1.js","sourcesContent":["import colors from \"../colors\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/categorical/Set2.js b/dist/libs/d3-scale-chromatic/categorical/Set2.js new file mode 100644 index 0000000..e0243ab --- /dev/null +++ b/dist/libs/d3-scale-chromatic/categorical/Set2.js @@ -0,0 +1,16 @@ +"use strict"; + +System.register(["../colors"], function (_export, _context) { + "use strict"; + + var colors; + return { + setters: [function (_colors) { + colors = _colors.default; + }], + execute: function () { + _export("default", colors("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3")); + } + }; +}); +//# sourceMappingURL=Set2.js.map diff --git a/dist/libs/d3-scale-chromatic/categorical/Set2.js.map b/dist/libs/d3-scale-chromatic/categorical/Set2.js.map new file mode 100644 index 0000000..7cd9e42 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/categorical/Set2.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/categorical/Set2.js"],"names":["colors"],"mappings":";;;;;;;;AAAOA,Y;;;yBAEQA,OAAO,kDAAP,C","file":"Set2.js","sourcesContent":["import colors from \"../colors\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/categorical/Set3.js b/dist/libs/d3-scale-chromatic/categorical/Set3.js new file mode 100644 index 0000000..aec6b3d --- /dev/null +++ b/dist/libs/d3-scale-chromatic/categorical/Set3.js @@ -0,0 +1,16 @@ +"use strict"; + +System.register(["../colors"], function (_export, _context) { + "use strict"; + + var colors; + return { + setters: [function (_colors) { + colors = _colors.default; + }], + execute: function () { + _export("default", colors("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f")); + } + }; +}); +//# sourceMappingURL=Set3.js.map diff --git a/dist/libs/d3-scale-chromatic/categorical/Set3.js.map b/dist/libs/d3-scale-chromatic/categorical/Set3.js.map new file mode 100644 index 0000000..1fe408c --- /dev/null +++ b/dist/libs/d3-scale-chromatic/categorical/Set3.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/categorical/Set3.js"],"names":["colors"],"mappings":";;;;;;;;AAAOA,Y;;;yBAEQA,OAAO,0EAAP,C","file":"Set3.js","sourcesContent":["import colors from \"../colors\";\n\nexport default colors(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/colors.js b/dist/libs/d3-scale-chromatic/colors.js new file mode 100644 index 0000000..c81f52c --- /dev/null +++ b/dist/libs/d3-scale-chromatic/colors.js @@ -0,0 +1,20 @@ +"use strict"; + +System.register([], function (_export, _context) { + "use strict"; + + _export("default", function (specifier) { + var n = specifier.length / 6 | 0, + colors = new Array(n), + i = 0; + while (i < n) { + colors[i] = "#" + specifier.slice(i * 6, ++i * 6); + }return colors; + }); + + return { + setters: [], + execute: function () {} + }; +}); +//# sourceMappingURL=colors.js.map diff --git a/dist/libs/d3-scale-chromatic/colors.js.map b/dist/libs/d3-scale-chromatic/colors.js.map new file mode 100644 index 0000000..a5aaacc --- /dev/null +++ b/dist/libs/d3-scale-chromatic/colors.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../src/libs/d3-scale-chromatic/colors.js"],"names":["specifier","n","length","colors","Array","i","slice"],"mappings":";;;;;qBAAe,UAASA,SAAT,EAAoB;AACjC,QAAIC,IAAID,UAAUE,MAAV,GAAmB,CAAnB,GAAuB,CAA/B;AAAA,QAAkCC,SAAS,IAAIC,KAAJ,CAAUH,CAAV,CAA3C;AAAA,QAAyDI,IAAI,CAA7D;AACA,WAAOA,IAAIJ,CAAX;AAAcE,aAAOE,CAAP,IAAY,MAAML,UAAUM,KAAV,CAAgBD,IAAI,CAApB,EAAuB,EAAEA,CAAF,GAAM,CAA7B,CAAlB;AAAd,KACA,OAAOF,MAAP;AACD,G","file":"colors.js","sourcesContent":["export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/diverging/BrBG.js b/dist/libs/d3-scale-chromatic/diverging/BrBG.js new file mode 100644 index 0000000..38ca058 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/diverging/BrBG.js @@ -0,0 +1,22 @@ +"use strict"; + +System.register(["../colors", "../ramp"], function (_export, _context) { + "use strict"; + + var colors, ramp, scheme; + return { + setters: [function (_colors) { + colors = _colors.default; + }, function (_ramp) { + ramp = _ramp.default; + }], + execute: function () { + _export("scheme", scheme = new Array(3).concat("d8b365f5f5f55ab4ac", "a6611adfc27d80cdc1018571", "a6611adfc27df5f5f580cdc1018571", "8c510ad8b365f6e8c3c7eae55ab4ac01665e", "8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e", "8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e", "8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e", "5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30", "5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30").map(colors)); + + _export("scheme", scheme); + + _export("default", ramp(scheme)); + } + }; +}); +//# sourceMappingURL=BrBG.js.map diff --git a/dist/libs/d3-scale-chromatic/diverging/BrBG.js.map b/dist/libs/d3-scale-chromatic/diverging/BrBG.js.map new file mode 100644 index 0000000..6d7017e --- /dev/null +++ b/dist/libs/d3-scale-chromatic/diverging/BrBG.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/diverging/BrBG.js"],"names":["colors","ramp","scheme","Array","concat","map"],"mappings":";;;;;;;;AAAOA,Y;;AACAC,U;;;wBAEIC,M,GAAS,IAAIC,KAAJ,CAAU,CAAV,EAAaC,MAAb,CAClB,oBADkB,EAElB,0BAFkB,EAGlB,gCAHkB,EAIlB,sCAJkB,EAKlB,4CALkB,EAMlB,kDANkB,EAOlB,wDAPkB,EAQlB,8DARkB,EASlB,oEATkB,EAUlBC,GAVkB,CAUdL,MAVc,C;;;;yBAYLC,KAAKC,MAAL,C","file":"BrBG.js","sourcesContent":["import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"d8b365f5f5f55ab4ac\",\n \"a6611adfc27d80cdc1018571\",\n \"a6611adfc27df5f5f580cdc1018571\",\n \"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\n \"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\n \"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\n \"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\n \"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\n \"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\"\n).map(colors);\n\nexport default ramp(scheme);\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/diverging/GnYlRd.js b/dist/libs/d3-scale-chromatic/diverging/GnYlRd.js new file mode 100644 index 0000000..57ac244 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/diverging/GnYlRd.js @@ -0,0 +1,22 @@ +"use strict"; + +System.register(["../colors", "../ramp"], function (_export, _context) { + "use strict"; + + var colors, ramp, scheme; + return { + setters: [function (_colors) { + colors = _colors.default; + }, function (_ramp) { + ramp = _ramp.default; + }], + execute: function () { + _export("scheme", scheme = new Array(3).concat("91cf60ffffbffc8d59", "1a9641a6d96afdae61d7191c", "1a9641a6d96affffbffdae61d7191c", "1a985091cf60d9ef8bfee08bfc8d59d73027", "1a985091cf60d9ef8bffffbffee08bfc8d59d73027", "1a985066bd63a6d96ad9ef8bfee08bfdae61f46d43d73027", "1a985066bd63a6d96ad9ef8bffffbffee08bfdae61f46d43d73027", "0068371a985066bd63a6d96ad9ef8bfee08bfdae61f46d43d73027a50026", "0068371a985066bd63a6d96ad9ef8bffffbffee08bfdae61f46d43d73027a50026").map(colors)); + + _export("scheme", scheme); + + _export("default", ramp(scheme)); + } + }; +}); +//# sourceMappingURL=GnYlRd.js.map diff --git a/dist/libs/d3-scale-chromatic/diverging/GnYlRd.js.map b/dist/libs/d3-scale-chromatic/diverging/GnYlRd.js.map new file mode 100644 index 0000000..c748b5f --- /dev/null +++ b/dist/libs/d3-scale-chromatic/diverging/GnYlRd.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/diverging/GnYlRd.js"],"names":["colors","ramp","scheme","Array","concat","map"],"mappings":";;;;;;;;AAAOA,Y;;AACAC,U;;;wBAEIC,M,GAAS,IAAIC,KAAJ,CAAU,CAAV,EAAaC,MAAb,CAClB,oBADkB,EAElB,0BAFkB,EAGlB,gCAHkB,EAIlB,sCAJkB,EAKlB,4CALkB,EAMlB,kDANkB,EAOlB,wDAPkB,EAQlB,8DARkB,EASlB,oEATkB,EAUlBC,GAVkB,CAUdL,MAVc,C;;;;yBAYLC,KAAKC,MAAL,C","file":"GnYlRd.js","sourcesContent":["import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"91cf60ffffbffc8d59\",\n \"1a9641a6d96afdae61d7191c\",\n \"1a9641a6d96affffbffdae61d7191c\",\n \"1a985091cf60d9ef8bfee08bfc8d59d73027\",\n \"1a985091cf60d9ef8bffffbffee08bfc8d59d73027\",\n \"1a985066bd63a6d96ad9ef8bfee08bfdae61f46d43d73027\",\n \"1a985066bd63a6d96ad9ef8bffffbffee08bfdae61f46d43d73027\",\n \"0068371a985066bd63a6d96ad9ef8bfee08bfdae61f46d43d73027a50026\",\n \"0068371a985066bd63a6d96ad9ef8bffffbffee08bfdae61f46d43d73027a50026\"\n).map(colors);\n\nexport default ramp(scheme);\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/diverging/PRGn.js b/dist/libs/d3-scale-chromatic/diverging/PRGn.js new file mode 100644 index 0000000..0ac6052 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/diverging/PRGn.js @@ -0,0 +1,22 @@ +"use strict"; + +System.register(["../colors", "../ramp"], function (_export, _context) { + "use strict"; + + var colors, ramp, scheme; + return { + setters: [function (_colors) { + colors = _colors.default; + }, function (_ramp) { + ramp = _ramp.default; + }], + execute: function () { + _export("scheme", scheme = new Array(3).concat("af8dc3f7f7f77fbf7b", "7b3294c2a5cfa6dba0008837", "7b3294c2a5cff7f7f7a6dba0008837", "762a83af8dc3e7d4e8d9f0d37fbf7b1b7837", "762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837", "762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837", "762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837", "40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b", "40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b").map(colors)); + + _export("scheme", scheme); + + _export("default", ramp(scheme)); + } + }; +}); +//# sourceMappingURL=PRGn.js.map diff --git a/dist/libs/d3-scale-chromatic/diverging/PRGn.js.map b/dist/libs/d3-scale-chromatic/diverging/PRGn.js.map new file mode 100644 index 0000000..2b7d689 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/diverging/PRGn.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/diverging/PRGn.js"],"names":["colors","ramp","scheme","Array","concat","map"],"mappings":";;;;;;;;AAAOA,Y;;AACAC,U;;;wBAEIC,M,GAAS,IAAIC,KAAJ,CAAU,CAAV,EAAaC,MAAb,CAClB,oBADkB,EAElB,0BAFkB,EAGlB,gCAHkB,EAIlB,sCAJkB,EAKlB,4CALkB,EAMlB,kDANkB,EAOlB,wDAPkB,EAQlB,8DARkB,EASlB,oEATkB,EAUlBC,GAVkB,CAUdL,MAVc,C;;;;yBAYLC,KAAKC,MAAL,C","file":"PRGn.js","sourcesContent":["import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"af8dc3f7f7f77fbf7b\",\n \"7b3294c2a5cfa6dba0008837\",\n \"7b3294c2a5cff7f7f7a6dba0008837\",\n \"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\n \"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\n \"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\n \"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\n \"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\n \"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\"\n).map(colors);\n\nexport default ramp(scheme);\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/diverging/PiYG.js b/dist/libs/d3-scale-chromatic/diverging/PiYG.js new file mode 100644 index 0000000..b7a5730 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/diverging/PiYG.js @@ -0,0 +1,22 @@ +"use strict"; + +System.register(["../colors", "../ramp"], function (_export, _context) { + "use strict"; + + var colors, ramp, scheme; + return { + setters: [function (_colors) { + colors = _colors.default; + }, function (_ramp) { + ramp = _ramp.default; + }], + execute: function () { + _export("scheme", scheme = new Array(3).concat("e9a3c9f7f7f7a1d76a", "d01c8bf1b6dab8e1864dac26", "d01c8bf1b6daf7f7f7b8e1864dac26", "c51b7de9a3c9fde0efe6f5d0a1d76a4d9221", "c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221", "c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221", "c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221", "8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419", "8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419").map(colors)); + + _export("scheme", scheme); + + _export("default", ramp(scheme)); + } + }; +}); +//# sourceMappingURL=PiYG.js.map diff --git a/dist/libs/d3-scale-chromatic/diverging/PiYG.js.map b/dist/libs/d3-scale-chromatic/diverging/PiYG.js.map new file mode 100644 index 0000000..e100822 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/diverging/PiYG.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/diverging/PiYG.js"],"names":["colors","ramp","scheme","Array","concat","map"],"mappings":";;;;;;;;AAAOA,Y;;AACAC,U;;;wBAEIC,M,GAAS,IAAIC,KAAJ,CAAU,CAAV,EAAaC,MAAb,CAClB,oBADkB,EAElB,0BAFkB,EAGlB,gCAHkB,EAIlB,sCAJkB,EAKlB,4CALkB,EAMlB,kDANkB,EAOlB,wDAPkB,EAQlB,8DARkB,EASlB,oEATkB,EAUlBC,GAVkB,CAUdL,MAVc,C;;;;yBAYLC,KAAKC,MAAL,C","file":"PiYG.js","sourcesContent":["import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"e9a3c9f7f7f7a1d76a\",\n \"d01c8bf1b6dab8e1864dac26\",\n \"d01c8bf1b6daf7f7f7b8e1864dac26\",\n \"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\n \"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\n \"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\n \"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\n \"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\n \"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\"\n).map(colors);\n\nexport default ramp(scheme);\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/diverging/PuOr.js b/dist/libs/d3-scale-chromatic/diverging/PuOr.js new file mode 100644 index 0000000..38947cb --- /dev/null +++ b/dist/libs/d3-scale-chromatic/diverging/PuOr.js @@ -0,0 +1,22 @@ +"use strict"; + +System.register(["../colors", "../ramp"], function (_export, _context) { + "use strict"; + + var colors, ramp, scheme; + return { + setters: [function (_colors) { + colors = _colors.default; + }, function (_ramp) { + ramp = _ramp.default; + }], + execute: function () { + _export("scheme", scheme = new Array(3).concat("998ec3f7f7f7f1a340", "5e3c99b2abd2fdb863e66101", "5e3c99b2abd2f7f7f7fdb863e66101", "542788998ec3d8daebfee0b6f1a340b35806", "542788998ec3d8daebf7f7f7fee0b6f1a340b35806", "5427888073acb2abd2d8daebfee0b6fdb863e08214b35806", "5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806", "2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08", "2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08").map(colors)); + + _export("scheme", scheme); + + _export("default", ramp(scheme)); + } + }; +}); +//# sourceMappingURL=PuOr.js.map diff --git a/dist/libs/d3-scale-chromatic/diverging/PuOr.js.map b/dist/libs/d3-scale-chromatic/diverging/PuOr.js.map new file mode 100644 index 0000000..8986984 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/diverging/PuOr.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/diverging/PuOr.js"],"names":["colors","ramp","scheme","Array","concat","map"],"mappings":";;;;;;;;AAAOA,Y;;AACAC,U;;;wBAEIC,M,GAAS,IAAIC,KAAJ,CAAU,CAAV,EAAaC,MAAb,CAClB,oBADkB,EAElB,0BAFkB,EAGlB,gCAHkB,EAIlB,sCAJkB,EAKlB,4CALkB,EAMlB,kDANkB,EAOlB,wDAPkB,EAQlB,8DARkB,EASlB,oEATkB,EAUlBC,GAVkB,CAUdL,MAVc,C;;;;yBAYLC,KAAKC,MAAL,C","file":"PuOr.js","sourcesContent":["import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"998ec3f7f7f7f1a340\",\n \"5e3c99b2abd2fdb863e66101\",\n \"5e3c99b2abd2f7f7f7fdb863e66101\",\n \"542788998ec3d8daebfee0b6f1a340b35806\",\n \"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\n \"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\n \"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\n \"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\n \"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(colors);\n\nexport default ramp(scheme);\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/diverging/RdBu.js b/dist/libs/d3-scale-chromatic/diverging/RdBu.js new file mode 100644 index 0000000..fe9be5c --- /dev/null +++ b/dist/libs/d3-scale-chromatic/diverging/RdBu.js @@ -0,0 +1,22 @@ +"use strict"; + +System.register(["../colors", "../ramp"], function (_export, _context) { + "use strict"; + + var colors, ramp, scheme; + return { + setters: [function (_colors) { + colors = _colors.default; + }, function (_ramp) { + ramp = _ramp.default; + }], + execute: function () { + _export("scheme", scheme = new Array(3).concat("ef8a62f7f7f767a9cf", "ca0020f4a58292c5de0571b0", "ca0020f4a582f7f7f792c5de0571b0", "b2182bef8a62fddbc7d1e5f067a9cf2166ac", "b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac", "b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac", "b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac", "67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061", "67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061").map(colors)); + + _export("scheme", scheme); + + _export("default", ramp(scheme)); + } + }; +}); +//# sourceMappingURL=RdBu.js.map diff --git a/dist/libs/d3-scale-chromatic/diverging/RdBu.js.map b/dist/libs/d3-scale-chromatic/diverging/RdBu.js.map new file mode 100644 index 0000000..1470841 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/diverging/RdBu.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/diverging/RdBu.js"],"names":["colors","ramp","scheme","Array","concat","map"],"mappings":";;;;;;;;AAAOA,Y;;AACAC,U;;;wBAEIC,M,GAAS,IAAIC,KAAJ,CAAU,CAAV,EAAaC,MAAb,CAClB,oBADkB,EAElB,0BAFkB,EAGlB,gCAHkB,EAIlB,sCAJkB,EAKlB,4CALkB,EAMlB,kDANkB,EAOlB,wDAPkB,EAQlB,8DARkB,EASlB,oEATkB,EAUlBC,GAVkB,CAUdL,MAVc,C;;;;yBAYLC,KAAKC,MAAL,C","file":"RdBu.js","sourcesContent":["import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62f7f7f767a9cf\",\n \"ca0020f4a58292c5de0571b0\",\n \"ca0020f4a582f7f7f792c5de0571b0\",\n \"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\n \"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\n \"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\n \"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\n \"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\n \"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\"\n).map(colors);\n\nexport default ramp(scheme);\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/diverging/RdGy.js b/dist/libs/d3-scale-chromatic/diverging/RdGy.js new file mode 100644 index 0000000..46bf6fa --- /dev/null +++ b/dist/libs/d3-scale-chromatic/diverging/RdGy.js @@ -0,0 +1,22 @@ +"use strict"; + +System.register(["../colors", "../ramp"], function (_export, _context) { + "use strict"; + + var colors, ramp, scheme; + return { + setters: [function (_colors) { + colors = _colors.default; + }, function (_ramp) { + ramp = _ramp.default; + }], + execute: function () { + _export("scheme", scheme = new Array(3).concat("ef8a62ffffff999999", "ca0020f4a582bababa404040", "ca0020f4a582ffffffbababa404040", "b2182bef8a62fddbc7e0e0e09999994d4d4d", "b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d", "b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d", "b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d", "67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a", "67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a").map(colors)); + + _export("scheme", scheme); + + _export("default", ramp(scheme)); + } + }; +}); +//# sourceMappingURL=RdGy.js.map diff --git a/dist/libs/d3-scale-chromatic/diverging/RdGy.js.map b/dist/libs/d3-scale-chromatic/diverging/RdGy.js.map new file mode 100644 index 0000000..df3ebe5 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/diverging/RdGy.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/diverging/RdGy.js"],"names":["colors","ramp","scheme","Array","concat","map"],"mappings":";;;;;;;;AAAOA,Y;;AACAC,U;;;wBAEIC,M,GAAS,IAAIC,KAAJ,CAAU,CAAV,EAAaC,MAAb,CAClB,oBADkB,EAElB,0BAFkB,EAGlB,gCAHkB,EAIlB,sCAJkB,EAKlB,4CALkB,EAMlB,kDANkB,EAOlB,wDAPkB,EAQlB,8DARkB,EASlB,oEATkB,EAUlBC,GAVkB,CAUdL,MAVc,C;;;;yBAYLC,KAAKC,MAAL,C","file":"RdGy.js","sourcesContent":["import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62ffffff999999\",\n \"ca0020f4a582bababa404040\",\n \"ca0020f4a582ffffffbababa404040\",\n \"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\n \"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\n \"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\n \"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\n \"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\n \"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\"\n).map(colors);\n\nexport default ramp(scheme);\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/diverging/RdYlBu.js b/dist/libs/d3-scale-chromatic/diverging/RdYlBu.js new file mode 100644 index 0000000..19656d3 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/diverging/RdYlBu.js @@ -0,0 +1,22 @@ +"use strict"; + +System.register(["../colors", "../ramp"], function (_export, _context) { + "use strict"; + + var colors, ramp, scheme; + return { + setters: [function (_colors) { + colors = _colors.default; + }, function (_ramp) { + ramp = _ramp.default; + }], + execute: function () { + _export("scheme", scheme = new Array(3).concat("fc8d59ffffbf91bfdb", "d7191cfdae61abd9e92c7bb6", "d7191cfdae61ffffbfabd9e92c7bb6", "d73027fc8d59fee090e0f3f891bfdb4575b4", "d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4", "d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4", "d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4", "a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695", "a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695").map(colors)); + + _export("scheme", scheme); + + _export("default", ramp(scheme)); + } + }; +}); +//# sourceMappingURL=RdYlBu.js.map diff --git a/dist/libs/d3-scale-chromatic/diverging/RdYlBu.js.map b/dist/libs/d3-scale-chromatic/diverging/RdYlBu.js.map new file mode 100644 index 0000000..076a24c --- /dev/null +++ b/dist/libs/d3-scale-chromatic/diverging/RdYlBu.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/diverging/RdYlBu.js"],"names":["colors","ramp","scheme","Array","concat","map"],"mappings":";;;;;;;;AAAOA,Y;;AACAC,U;;;wBAEIC,M,GAAS,IAAIC,KAAJ,CAAU,CAAV,EAAaC,MAAb,CAClB,oBADkB,EAElB,0BAFkB,EAGlB,gCAHkB,EAIlB,sCAJkB,EAKlB,4CALkB,EAMlB,kDANkB,EAOlB,wDAPkB,EAQlB,8DARkB,EASlB,oEATkB,EAUlBC,GAVkB,CAUdL,MAVc,C;;;;yBAYLC,KAAKC,MAAL,C","file":"RdYlBu.js","sourcesContent":["import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91bfdb\",\n \"d7191cfdae61abd9e92c7bb6\",\n \"d7191cfdae61ffffbfabd9e92c7bb6\",\n \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/diverging/RdYlGn.js b/dist/libs/d3-scale-chromatic/diverging/RdYlGn.js new file mode 100644 index 0000000..457e919 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/diverging/RdYlGn.js @@ -0,0 +1,22 @@ +"use strict"; + +System.register(["../colors", "../ramp"], function (_export, _context) { + "use strict"; + + var colors, ramp, scheme; + return { + setters: [function (_colors) { + colors = _colors.default; + }, function (_ramp) { + ramp = _ramp.default; + }], + execute: function () { + _export("scheme", scheme = new Array(3).concat("fc8d59ffffbf91cf60", "d7191cfdae61a6d96a1a9641", "d7191cfdae61ffffbfa6d96a1a9641", "d73027fc8d59fee08bd9ef8b91cf601a9850", "d73027fc8d59fee08bffffbfd9ef8b91cf601a9850", "d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850", "d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850", "a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837", "a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(colors)); + + _export("scheme", scheme); + + _export("default", ramp(scheme)); + } + }; +}); +//# sourceMappingURL=RdYlGn.js.map diff --git a/dist/libs/d3-scale-chromatic/diverging/RdYlGn.js.map b/dist/libs/d3-scale-chromatic/diverging/RdYlGn.js.map new file mode 100644 index 0000000..f148266 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/diverging/RdYlGn.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/diverging/RdYlGn.js"],"names":["colors","ramp","scheme","Array","concat","map"],"mappings":";;;;;;;;AAAOA,Y;;AACAC,U;;;wBAEIC,M,GAAS,IAAIC,KAAJ,CAAU,CAAV,EAAaC,MAAb,CAClB,oBADkB,EAElB,0BAFkB,EAGlB,gCAHkB,EAIlB,sCAJkB,EAKlB,4CALkB,EAMlB,kDANkB,EAOlB,wDAPkB,EAQlB,8DARkB,EASlB,oEATkB,EAUlBC,GAVkB,CAUdL,MAVc,C;;;;yBAYLC,KAAKC,MAAL,C","file":"RdYlGn.js","sourcesContent":["import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91cf60\",\n \"d7191cfdae61a6d96a1a9641\",\n \"d7191cfdae61ffffbfa6d96a1a9641\",\n \"d73027fc8d59fee08bd9ef8b91cf601a9850\",\n \"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\n \"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\n \"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\n \"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\n \"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\"\n).map(colors);\n\nexport default ramp(scheme);\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/diverging/Spectral.js b/dist/libs/d3-scale-chromatic/diverging/Spectral.js new file mode 100644 index 0000000..d22e308 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/diverging/Spectral.js @@ -0,0 +1,22 @@ +"use strict"; + +System.register(["../colors", "../ramp"], function (_export, _context) { + "use strict"; + + var colors, ramp, scheme; + return { + setters: [function (_colors) { + colors = _colors.default; + }, function (_ramp) { + ramp = _ramp.default; + }], + execute: function () { + _export("scheme", scheme = new Array(3).concat("fc8d59ffffbf99d594", "d7191cfdae61abdda42b83ba", "d7191cfdae61ffffbfabdda42b83ba", "d53e4ffc8d59fee08be6f59899d5943288bd", "d53e4ffc8d59fee08bffffbfe6f59899d5943288bd", "d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd", "d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd", "9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2", "9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2").map(colors)); + + _export("scheme", scheme); + + _export("default", ramp(scheme)); + } + }; +}); +//# sourceMappingURL=Spectral.js.map diff --git a/dist/libs/d3-scale-chromatic/diverging/Spectral.js.map b/dist/libs/d3-scale-chromatic/diverging/Spectral.js.map new file mode 100644 index 0000000..8fac52e --- /dev/null +++ b/dist/libs/d3-scale-chromatic/diverging/Spectral.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/diverging/Spectral.js"],"names":["colors","ramp","scheme","Array","concat","map"],"mappings":";;;;;;;;AAAOA,Y;;AACAC,U;;;wBAEIC,M,GAAS,IAAIC,KAAJ,CAAU,CAAV,EAAaC,MAAb,CAClB,oBADkB,EAElB,0BAFkB,EAGlB,gCAHkB,EAIlB,sCAJkB,EAKlB,4CALkB,EAMlB,kDANkB,EAOlB,wDAPkB,EAQlB,8DARkB,EASlB,oEATkB,EAUlBC,GAVkB,CAUdL,MAVc,C;;;;yBAYLC,KAAKC,MAAL,C","file":"Spectral.js","sourcesContent":["import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf99d594\",\n \"d7191cfdae61abdda42b83ba\",\n \"d7191cfdae61ffffbfabdda42b83ba\",\n \"d53e4ffc8d59fee08be6f59899d5943288bd\",\n \"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\n \"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\n \"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\n \"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\n \"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\"\n).map(colors);\n\nexport default ramp(scheme);\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/index.js b/dist/libs/d3-scale-chromatic/index.js new file mode 100644 index 0000000..4e527d5 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/index.js @@ -0,0 +1,219 @@ +"use strict"; + +System.register(["./categorical/Accent", "./categorical/Dark2", "./categorical/Paired", "./categorical/Pastel1", "./categorical/Pastel2", "./categorical/Set1", "./categorical/Set2", "./categorical/Set3", "./diverging/BrBG", "./diverging/PRGn", "./diverging/PiYG", "./diverging/PuOr", "./diverging/RdBu", "./diverging/RdGy", "./diverging/RdYlBu", "./diverging/RdYlGn", "./diverging/GnYlRd", "./diverging/Spectral", "./sequential-multi/BuGn", "./sequential-multi/BuPu", "./sequential-multi/GnBu", "./sequential-multi/OrRd", "./sequential-multi/PuBuGn", "./sequential-multi/PuBu", "./sequential-multi/PuRd", "./sequential-multi/RdPu", "./sequential-multi/YlGnBu", "./sequential-multi/YlGn", "./sequential-multi/YlOrBr", "./sequential-multi/YlOrRd", "./sequential-single/Blues", "./sequential-single/Greens", "./sequential-single/Greys", "./sequential-single/Purples", "./sequential-single/Reds", "./sequential-single/Oranges"], function (_export, _context) { + "use strict"; + + return { + setters: [function (_categoricalAccent) { + var _exportObj = {}; + _exportObj.schemeAccent = _categoricalAccent.default; + + _export(_exportObj); + }, function (_categoricalDark) { + var _exportObj2 = {}; + _exportObj2.schemeDark2 = _categoricalDark.default; + + _export(_exportObj2); + }, function (_categoricalPaired) { + var _exportObj3 = {}; + _exportObj3.schemePaired = _categoricalPaired.default; + + _export(_exportObj3); + }, function (_categoricalPastel) { + var _exportObj4 = {}; + _exportObj4.schemePastel1 = _categoricalPastel.default; + + _export(_exportObj4); + }, function (_categoricalPastel2) { + var _exportObj5 = {}; + _exportObj5.schemePastel2 = _categoricalPastel2.default; + + _export(_exportObj5); + }, function (_categoricalSet) { + var _exportObj6 = {}; + _exportObj6.schemeSet1 = _categoricalSet.default; + + _export(_exportObj6); + }, function (_categoricalSet2) { + var _exportObj7 = {}; + _exportObj7.schemeSet2 = _categoricalSet2.default; + + _export(_exportObj7); + }, function (_categoricalSet3) { + var _exportObj8 = {}; + _exportObj8.schemeSet3 = _categoricalSet3.default; + + _export(_exportObj8); + }, function (_divergingBrBG) { + var _exportObj9 = {}; + _exportObj9.interpolateBrBG = _divergingBrBG.default; + _exportObj9.schemeBrBG = _divergingBrBG.scheme; + + _export(_exportObj9); + }, function (_divergingPRGn) { + var _exportObj10 = {}; + _exportObj10.interpolatePRGn = _divergingPRGn.default; + _exportObj10.schemePRGn = _divergingPRGn.scheme; + + _export(_exportObj10); + }, function (_divergingPiYG) { + var _exportObj11 = {}; + _exportObj11.interpolatePiYG = _divergingPiYG.default; + _exportObj11.schemePiYG = _divergingPiYG.scheme; + + _export(_exportObj11); + }, function (_divergingPuOr) { + var _exportObj12 = {}; + _exportObj12.interpolatePuOr = _divergingPuOr.default; + _exportObj12.schemePuOr = _divergingPuOr.scheme; + + _export(_exportObj12); + }, function (_divergingRdBu) { + var _exportObj13 = {}; + _exportObj13.interpolateRdBu = _divergingRdBu.default; + _exportObj13.schemeRdBu = _divergingRdBu.scheme; + + _export(_exportObj13); + }, function (_divergingRdGy) { + var _exportObj14 = {}; + _exportObj14.interpolateRdGy = _divergingRdGy.default; + _exportObj14.schemeRdGy = _divergingRdGy.scheme; + + _export(_exportObj14); + }, function (_divergingRdYlBu) { + var _exportObj15 = {}; + _exportObj15.interpolateRdYlBu = _divergingRdYlBu.default; + _exportObj15.schemeRdYlBu = _divergingRdYlBu.scheme; + + _export(_exportObj15); + }, function (_divergingRdYlGn) { + var _exportObj16 = {}; + _exportObj16.interpolateRdYlGn = _divergingRdYlGn.default; + _exportObj16.schemeRdYlGn = _divergingRdYlGn.scheme; + + _export(_exportObj16); + }, function (_divergingGnYlRd) { + var _exportObj17 = {}; + _exportObj17.interpolateGnYlRd = _divergingGnYlRd.default; + _exportObj17.schemeGnYlRd = _divergingGnYlRd.scheme; + + _export(_exportObj17); + }, function (_divergingSpectral) { + var _exportObj18 = {}; + _exportObj18.interpolateSpectral = _divergingSpectral.default; + _exportObj18.schemeSpectral = _divergingSpectral.scheme; + + _export(_exportObj18); + }, function (_sequentialMultiBuGn) { + var _exportObj19 = {}; + _exportObj19.interpolateBuGn = _sequentialMultiBuGn.default; + _exportObj19.schemeBuGn = _sequentialMultiBuGn.scheme; + + _export(_exportObj19); + }, function (_sequentialMultiBuPu) { + var _exportObj20 = {}; + _exportObj20.interpolateBuPu = _sequentialMultiBuPu.default; + _exportObj20.schemeBuPu = _sequentialMultiBuPu.scheme; + + _export(_exportObj20); + }, function (_sequentialMultiGnBu) { + var _exportObj21 = {}; + _exportObj21.interpolateGnBu = _sequentialMultiGnBu.default; + _exportObj21.schemeGnBu = _sequentialMultiGnBu.scheme; + + _export(_exportObj21); + }, function (_sequentialMultiOrRd) { + var _exportObj22 = {}; + _exportObj22.interpolateOrRd = _sequentialMultiOrRd.default; + _exportObj22.schemeOrRd = _sequentialMultiOrRd.scheme; + + _export(_exportObj22); + }, function (_sequentialMultiPuBuGn) { + var _exportObj23 = {}; + _exportObj23.interpolatePuBuGn = _sequentialMultiPuBuGn.default; + _exportObj23.schemePuBuGn = _sequentialMultiPuBuGn.scheme; + + _export(_exportObj23); + }, function (_sequentialMultiPuBu) { + var _exportObj24 = {}; + _exportObj24.interpolatePuBu = _sequentialMultiPuBu.default; + _exportObj24.schemePuBu = _sequentialMultiPuBu.scheme; + + _export(_exportObj24); + }, function (_sequentialMultiPuRd) { + var _exportObj25 = {}; + _exportObj25.interpolatePuRd = _sequentialMultiPuRd.default; + _exportObj25.schemePuRd = _sequentialMultiPuRd.scheme; + + _export(_exportObj25); + }, function (_sequentialMultiRdPu) { + var _exportObj26 = {}; + _exportObj26.interpolateRdPu = _sequentialMultiRdPu.default; + _exportObj26.schemeRdPu = _sequentialMultiRdPu.scheme; + + _export(_exportObj26); + }, function (_sequentialMultiYlGnBu) { + var _exportObj27 = {}; + _exportObj27.interpolateYlGnBu = _sequentialMultiYlGnBu.default; + _exportObj27.schemeYlGnBu = _sequentialMultiYlGnBu.scheme; + + _export(_exportObj27); + }, function (_sequentialMultiYlGn) { + var _exportObj28 = {}; + _exportObj28.interpolateYlGn = _sequentialMultiYlGn.default; + _exportObj28.schemeYlGn = _sequentialMultiYlGn.scheme; + + _export(_exportObj28); + }, function (_sequentialMultiYlOrBr) { + var _exportObj29 = {}; + _exportObj29.interpolateYlOrBr = _sequentialMultiYlOrBr.default; + _exportObj29.schemeYlOrBr = _sequentialMultiYlOrBr.scheme; + + _export(_exportObj29); + }, function (_sequentialMultiYlOrRd) { + var _exportObj30 = {}; + _exportObj30.interpolateYlOrRd = _sequentialMultiYlOrRd.default; + _exportObj30.schemeYlOrRd = _sequentialMultiYlOrRd.scheme; + + _export(_exportObj30); + }, function (_sequentialSingleBlues) { + var _exportObj31 = {}; + _exportObj31.interpolateBlues = _sequentialSingleBlues.default; + _exportObj31.schemeBlues = _sequentialSingleBlues.scheme; + + _export(_exportObj31); + }, function (_sequentialSingleGreens) { + var _exportObj32 = {}; + _exportObj32.interpolateGreens = _sequentialSingleGreens.default; + _exportObj32.schemeGreens = _sequentialSingleGreens.scheme; + + _export(_exportObj32); + }, function (_sequentialSingleGreys) { + var _exportObj33 = {}; + _exportObj33.interpolateGreys = _sequentialSingleGreys.default; + _exportObj33.schemeGreys = _sequentialSingleGreys.scheme; + + _export(_exportObj33); + }, function (_sequentialSinglePurples) { + var _exportObj34 = {}; + _exportObj34.interpolatePurples = _sequentialSinglePurples.default; + _exportObj34.schemePurples = _sequentialSinglePurples.scheme; + + _export(_exportObj34); + }, function (_sequentialSingleReds) { + var _exportObj35 = {}; + _exportObj35.interpolateReds = _sequentialSingleReds.default; + _exportObj35.schemeReds = _sequentialSingleReds.scheme; + + _export(_exportObj35); + }, function (_sequentialSingleOranges) { + var _exportObj36 = {}; + _exportObj36.interpolateOranges = _sequentialSingleOranges.default; + _exportObj36.schemeOranges = _sequentialSingleOranges.scheme; + + _export(_exportObj36); + }], + execute: function () {} + }; +}); +//# sourceMappingURL=index.js.map diff --git a/dist/libs/d3-scale-chromatic/index.js.map b/dist/libs/d3-scale-chromatic/index.js.map new file mode 100644 index 0000000..b2e3a4d --- /dev/null +++ b/dist/libs/d3-scale-chromatic/index.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../src/libs/d3-scale-chromatic/index.js"],"names":["schemeAccent","default","schemeDark2","schemePaired","schemePastel1","schemePastel2","schemeSet1","schemeSet2","schemeSet3","interpolateBrBG","schemeBrBG","scheme","interpolatePRGn","schemePRGn","interpolatePiYG","schemePiYG","interpolatePuOr","schemePuOr","interpolateRdBu","schemeRdBu","interpolateRdGy","schemeRdGy","interpolateRdYlBu","schemeRdYlBu","interpolateRdYlGn","schemeRdYlGn","interpolateGnYlRd","schemeGnYlRd","interpolateSpectral","schemeSpectral","interpolateBuGn","schemeBuGn","interpolateBuPu","schemeBuPu","interpolateGnBu","schemeGnBu","interpolateOrRd","schemeOrRd","interpolatePuBuGn","schemePuBuGn","interpolatePuBu","schemePuBu","interpolatePuRd","schemePuRd","interpolateRdPu","schemeRdPu","interpolateYlGnBu","schemeYlGnBu","interpolateYlGn","schemeYlGn","interpolateYlOrBr","schemeYlOrBr","interpolateYlOrRd","schemeYlOrRd","interpolateBlues","schemeBlues","interpolateGreens","schemeGreens","interpolateGreys","schemeGreys","interpolatePurples","schemePurples","interpolateReds","schemeReds","interpolateOranges","schemeOranges"],"mappings":";;;;;;;;iBAAmBA,Y,sBAAXC,O;;;;;kBACWC,W,oBAAXD,O;;;;;kBACWE,Y,sBAAXF,O;;;;;kBACWG,a,sBAAXH,O;;;;;kBACWI,a,uBAAXJ,O;;;;;kBACWK,U,mBAAXL,O;;;;;kBACWM,U,oBAAXN,O;;;;;kBACWO,U,oBAAXP,O;;;;;kBACWQ,e,kBAAXR,O;kBAAsCS,U,kBAAVC,M;;;;;mBACjBC,e,kBAAXX,O;mBAAsCY,U,kBAAVF,M;;;;;mBACjBG,e,kBAAXb,O;mBAAsCc,U,kBAAVJ,M;;;;;mBACjBK,e,kBAAXf,O;mBAAsCgB,U,kBAAVN,M;;;;;mBACjBO,e,kBAAXjB,O;mBAAsCkB,U,kBAAVR,M;;;;;mBACjBS,e,kBAAXnB,O;mBAAsCoB,U,kBAAVV,M;;;;;mBACjBW,iB,oBAAXrB,O;mBAAwCsB,Y,oBAAVZ,M;;;;;mBACnBa,iB,oBAAXvB,O;mBAAwCwB,Y,oBAAVd,M;;;;;mBACnBe,iB,oBAAXzB,O;mBAAwC0B,Y,oBAAVhB,M;;;;;mBACnBiB,mB,sBAAX3B,O;mBAA0C4B,c,sBAAVlB,M;;;;;mBACrBmB,e,wBAAX7B,O;mBAAsC8B,U,wBAAVpB,M;;;;;mBACjBqB,e,wBAAX/B,O;mBAAsCgC,U,wBAAVtB,M;;;;;mBACjBuB,e,wBAAXjC,O;mBAAsCkC,U,wBAAVxB,M;;;;;mBACjByB,e,wBAAXnC,O;mBAAsCoC,U,wBAAV1B,M;;;;;mBACjB2B,iB,0BAAXrC,O;mBAAwCsC,Y,0BAAV5B,M;;;;;mBACnB6B,e,wBAAXvC,O;mBAAsCwC,U,wBAAV9B,M;;;;;mBACjB+B,e,wBAAXzC,O;mBAAsC0C,U,wBAAVhC,M;;;;;mBACjBiC,e,wBAAX3C,O;mBAAsC4C,U,wBAAVlC,M;;;;;mBACjBmC,iB,0BAAX7C,O;mBAAwC8C,Y,0BAAVpC,M;;;;;mBACnBqC,e,wBAAX/C,O;mBAAsCgD,U,wBAAVtC,M;;;;;mBACjBuC,iB,0BAAXjD,O;mBAAwCkD,Y,0BAAVxC,M;;;;;mBACnByC,iB,0BAAXnD,O;mBAAwCoD,Y,0BAAV1C,M;;;;;mBACnB2C,gB,0BAAXrD,O;mBAAuCsD,W,0BAAV5C,M;;;;;mBAClB6C,iB,2BAAXvD,O;mBAAwCwD,Y,2BAAV9C,M;;;;;mBACnB+C,gB,0BAAXzD,O;mBAAuC0D,W,0BAAVhD,M;;;;;mBAClBiD,kB,4BAAX3D,O;mBAAyC4D,a,4BAAVlD,M;;;;;mBACpBmD,e,yBAAX7D,O;mBAAsC8D,U,yBAAVpD,M;;;;;mBACjBqD,kB,4BAAX/D,O;mBAAyCgE,a,4BAAVtD,M","file":"index.js","sourcesContent":["export {default as schemeAccent} from \"./categorical/Accent\";\nexport {default as schemeDark2} from \"./categorical/Dark2\";\nexport {default as schemePaired} from \"./categorical/Paired\";\nexport {default as schemePastel1} from \"./categorical/Pastel1\";\nexport {default as schemePastel2} from \"./categorical/Pastel2\";\nexport {default as schemeSet1} from \"./categorical/Set1\";\nexport {default as schemeSet2} from \"./categorical/Set2\";\nexport {default as schemeSet3} from \"./categorical/Set3\";\nexport {default as interpolateBrBG, scheme as schemeBrBG} from \"./diverging/BrBG\";\nexport {default as interpolatePRGn, scheme as schemePRGn} from \"./diverging/PRGn\";\nexport {default as interpolatePiYG, scheme as schemePiYG} from \"./diverging/PiYG\";\nexport {default as interpolatePuOr, scheme as schemePuOr} from \"./diverging/PuOr\";\nexport {default as interpolateRdBu, scheme as schemeRdBu} from \"./diverging/RdBu\";\nexport {default as interpolateRdGy, scheme as schemeRdGy} from \"./diverging/RdGy\";\nexport {default as interpolateRdYlBu, scheme as schemeRdYlBu} from \"./diverging/RdYlBu\";\nexport {default as interpolateRdYlGn, scheme as schemeRdYlGn} from \"./diverging/RdYlGn\";\nexport {default as interpolateGnYlRd, scheme as schemeGnYlRd} from \"./diverging/GnYlRd\";\nexport {default as interpolateSpectral, scheme as schemeSpectral} from \"./diverging/Spectral\";\nexport {default as interpolateBuGn, scheme as schemeBuGn} from \"./sequential-multi/BuGn\";\nexport {default as interpolateBuPu, scheme as schemeBuPu} from \"./sequential-multi/BuPu\";\nexport {default as interpolateGnBu, scheme as schemeGnBu} from \"./sequential-multi/GnBu\";\nexport {default as interpolateOrRd, scheme as schemeOrRd} from \"./sequential-multi/OrRd\";\nexport {default as interpolatePuBuGn, scheme as schemePuBuGn} from \"./sequential-multi/PuBuGn\";\nexport {default as interpolatePuBu, scheme as schemePuBu} from \"./sequential-multi/PuBu\";\nexport {default as interpolatePuRd, scheme as schemePuRd} from \"./sequential-multi/PuRd\";\nexport {default as interpolateRdPu, scheme as schemeRdPu} from \"./sequential-multi/RdPu\";\nexport {default as interpolateYlGnBu, scheme as schemeYlGnBu} from \"./sequential-multi/YlGnBu\";\nexport {default as interpolateYlGn, scheme as schemeYlGn} from \"./sequential-multi/YlGn\";\nexport {default as interpolateYlOrBr, scheme as schemeYlOrBr} from \"./sequential-multi/YlOrBr\";\nexport {default as interpolateYlOrRd, scheme as schemeYlOrRd} from \"./sequential-multi/YlOrRd\";\nexport {default as interpolateBlues, scheme as schemeBlues} from \"./sequential-single/Blues\";\nexport {default as interpolateGreens, scheme as schemeGreens} from \"./sequential-single/Greens\";\nexport {default as interpolateGreys, scheme as schemeGreys} from \"./sequential-single/Greys\";\nexport {default as interpolatePurples, scheme as schemePurples} from \"./sequential-single/Purples\";\nexport {default as interpolateReds, scheme as schemeReds} from \"./sequential-single/Reds\";\nexport {default as interpolateOranges, scheme as schemeOranges} from \"./sequential-single/Oranges\";\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/ramp.js b/dist/libs/d3-scale-chromatic/ramp.js new file mode 100644 index 0000000..c0443a3 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/ramp.js @@ -0,0 +1,19 @@ +'use strict'; + +System.register(['d3'], function (_export, _context) { + "use strict"; + + var d3; + + _export('default', function (scheme) { + return d3.interpolateRgbBasis(scheme[scheme.length - 1]); + }); + + return { + setters: [function (_d) { + d3 = _d.default; + }], + execute: function () {} + }; +}); +//# sourceMappingURL=ramp.js.map diff --git a/dist/libs/d3-scale-chromatic/ramp.js.map b/dist/libs/d3-scale-chromatic/ramp.js.map new file mode 100644 index 0000000..c377727 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/ramp.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../src/libs/d3-scale-chromatic/ramp.js"],"names":["scheme","d3","interpolateRgbBasis","length"],"mappings":";;;;;;;qBAEe,UAASA,MAAT,EAAiB;AAC9B,WAAOC,GAAGC,mBAAH,CAAuBF,OAAOA,OAAOG,MAAP,GAAgB,CAAvB,CAAvB,CAAP;AACD,G;;;;AAJMF,Q","file":"ramp.js","sourcesContent":["import d3 from 'd3';\n\nexport default function(scheme) {\n return d3.interpolateRgbBasis(scheme[scheme.length - 1]);\n}\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/sequential-multi/BuGn.js b/dist/libs/d3-scale-chromatic/sequential-multi/BuGn.js new file mode 100644 index 0000000..60e5666 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-multi/BuGn.js @@ -0,0 +1,22 @@ +"use strict"; + +System.register(["../colors", "../ramp"], function (_export, _context) { + "use strict"; + + var colors, ramp, scheme; + return { + setters: [function (_colors) { + colors = _colors.default; + }, function (_ramp) { + ramp = _ramp.default; + }], + execute: function () { + _export("scheme", scheme = new Array(3).concat("e5f5f999d8c92ca25f", "edf8fbb2e2e266c2a4238b45", "edf8fbb2e2e266c2a42ca25f006d2c", "edf8fbccece699d8c966c2a42ca25f006d2c", "edf8fbccece699d8c966c2a441ae76238b45005824", "f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824", "f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b").map(colors)); + + _export("scheme", scheme); + + _export("default", ramp(scheme)); + } + }; +}); +//# sourceMappingURL=BuGn.js.map diff --git a/dist/libs/d3-scale-chromatic/sequential-multi/BuGn.js.map b/dist/libs/d3-scale-chromatic/sequential-multi/BuGn.js.map new file mode 100644 index 0000000..6967689 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-multi/BuGn.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/sequential-multi/BuGn.js"],"names":["colors","ramp","scheme","Array","concat","map"],"mappings":";;;;;;;;AAAOA,Y;;AACAC,U;;;wBAEIC,M,GAAS,IAAIC,KAAJ,CAAU,CAAV,EAAaC,MAAb,CAClB,oBADkB,EAElB,0BAFkB,EAGlB,gCAHkB,EAIlB,sCAJkB,EAKlB,4CALkB,EAMlB,kDANkB,EAOlB,wDAPkB,EAQlBC,GARkB,CAQdL,MARc,C;;;;yBAULC,KAAKC,MAAL,C","file":"BuGn.js","sourcesContent":["import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5f999d8c92ca25f\",\n \"edf8fbb2e2e266c2a4238b45\",\n \"edf8fbb2e2e266c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/sequential-multi/BuPu.js b/dist/libs/d3-scale-chromatic/sequential-multi/BuPu.js new file mode 100644 index 0000000..774f96a --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-multi/BuPu.js @@ -0,0 +1,22 @@ +"use strict"; + +System.register(["../colors", "../ramp"], function (_export, _context) { + "use strict"; + + var colors, ramp, scheme; + return { + setters: [function (_colors) { + colors = _colors.default; + }, function (_ramp) { + ramp = _ramp.default; + }], + execute: function () { + _export("scheme", scheme = new Array(3).concat("e0ecf49ebcda8856a7", "edf8fbb3cde38c96c688419d", "edf8fbb3cde38c96c68856a7810f7c", "edf8fbbfd3e69ebcda8c96c68856a7810f7c", "edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b", "f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b", "f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b").map(colors)); + + _export("scheme", scheme); + + _export("default", ramp(scheme)); + } + }; +}); +//# sourceMappingURL=BuPu.js.map diff --git a/dist/libs/d3-scale-chromatic/sequential-multi/BuPu.js.map b/dist/libs/d3-scale-chromatic/sequential-multi/BuPu.js.map new file mode 100644 index 0000000..b998c2e --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-multi/BuPu.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/sequential-multi/BuPu.js"],"names":["colors","ramp","scheme","Array","concat","map"],"mappings":";;;;;;;;AAAOA,Y;;AACAC,U;;;wBAEIC,M,GAAS,IAAIC,KAAJ,CAAU,CAAV,EAAaC,MAAb,CAClB,oBADkB,EAElB,0BAFkB,EAGlB,gCAHkB,EAIlB,sCAJkB,EAKlB,4CALkB,EAMlB,kDANkB,EAOlB,wDAPkB,EAQlBC,GARkB,CAQdL,MARc,C;;;;yBAULC,KAAKC,MAAL,C","file":"BuPu.js","sourcesContent":["import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"e0ecf49ebcda8856a7\",\n \"edf8fbb3cde38c96c688419d\",\n \"edf8fbb3cde38c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\"\n).map(colors);\n\nexport default ramp(scheme);\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/sequential-multi/GnBu.js b/dist/libs/d3-scale-chromatic/sequential-multi/GnBu.js new file mode 100644 index 0000000..30a9168 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-multi/GnBu.js @@ -0,0 +1,22 @@ +"use strict"; + +System.register(["../colors", "../ramp"], function (_export, _context) { + "use strict"; + + var colors, ramp, scheme; + return { + setters: [function (_colors) { + colors = _colors.default; + }, function (_ramp) { + ramp = _ramp.default; + }], + execute: function () { + _export("scheme", scheme = new Array(3).concat("e0f3dba8ddb543a2ca", "f0f9e8bae4bc7bccc42b8cbe", "f0f9e8bae4bc7bccc443a2ca0868ac", "f0f9e8ccebc5a8ddb57bccc443a2ca0868ac", "f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e", "f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e", "f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081").map(colors)); + + _export("scheme", scheme); + + _export("default", ramp(scheme)); + } + }; +}); +//# sourceMappingURL=GnBu.js.map diff --git a/dist/libs/d3-scale-chromatic/sequential-multi/GnBu.js.map b/dist/libs/d3-scale-chromatic/sequential-multi/GnBu.js.map new file mode 100644 index 0000000..1b42e17 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-multi/GnBu.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/sequential-multi/GnBu.js"],"names":["colors","ramp","scheme","Array","concat","map"],"mappings":";;;;;;;;AAAOA,Y;;AACAC,U;;;wBAEIC,M,GAAS,IAAIC,KAAJ,CAAU,CAAV,EAAaC,MAAb,CAClB,oBADkB,EAElB,0BAFkB,EAGlB,gCAHkB,EAIlB,sCAJkB,EAKlB,4CALkB,EAMlB,kDANkB,EAOlB,wDAPkB,EAQlBC,GARkB,CAQdL,MARc,C;;;;yBAULC,KAAKC,MAAL,C","file":"GnBu.js","sourcesContent":["import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"e0f3dba8ddb543a2ca\",\n \"f0f9e8bae4bc7bccc42b8cbe\",\n \"f0f9e8bae4bc7bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\"\n).map(colors);\n\nexport default ramp(scheme);\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/sequential-multi/OrRd.js b/dist/libs/d3-scale-chromatic/sequential-multi/OrRd.js new file mode 100644 index 0000000..2274cb8 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-multi/OrRd.js @@ -0,0 +1,22 @@ +"use strict"; + +System.register(["../colors", "../ramp"], function (_export, _context) { + "use strict"; + + var colors, ramp, scheme; + return { + setters: [function (_colors) { + colors = _colors.default; + }, function (_ramp) { + ramp = _ramp.default; + }], + execute: function () { + _export("scheme", scheme = new Array(3).concat("fee8c8fdbb84e34a33", "fef0d9fdcc8afc8d59d7301f", "fef0d9fdcc8afc8d59e34a33b30000", "fef0d9fdd49efdbb84fc8d59e34a33b30000", "fef0d9fdd49efdbb84fc8d59ef6548d7301f990000", "fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000", "fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000").map(colors)); + + _export("scheme", scheme); + + _export("default", ramp(scheme)); + } + }; +}); +//# sourceMappingURL=OrRd.js.map diff --git a/dist/libs/d3-scale-chromatic/sequential-multi/OrRd.js.map b/dist/libs/d3-scale-chromatic/sequential-multi/OrRd.js.map new file mode 100644 index 0000000..2c42bf3 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-multi/OrRd.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/sequential-multi/OrRd.js"],"names":["colors","ramp","scheme","Array","concat","map"],"mappings":";;;;;;;;AAAOA,Y;;AACAC,U;;;wBAEIC,M,GAAS,IAAIC,KAAJ,CAAU,CAAV,EAAaC,MAAb,CAClB,oBADkB,EAElB,0BAFkB,EAGlB,gCAHkB,EAIlB,sCAJkB,EAKlB,4CALkB,EAMlB,kDANkB,EAOlB,wDAPkB,EAQlBC,GARkB,CAQdL,MARc,C;;;;yBAULC,KAAKC,MAAL,C","file":"OrRd.js","sourcesContent":["import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"fee8c8fdbb84e34a33\",\n \"fef0d9fdcc8afc8d59d7301f\",\n \"fef0d9fdcc8afc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\"\n).map(colors);\n\nexport default ramp(scheme);\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/sequential-multi/PuBu.js b/dist/libs/d3-scale-chromatic/sequential-multi/PuBu.js new file mode 100644 index 0000000..0844375 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-multi/PuBu.js @@ -0,0 +1,22 @@ +"use strict"; + +System.register(["../colors", "../ramp"], function (_export, _context) { + "use strict"; + + var colors, ramp, scheme; + return { + setters: [function (_colors) { + colors = _colors.default; + }, function (_ramp) { + ramp = _ramp.default; + }], + execute: function () { + _export("scheme", scheme = new Array(3).concat("ece7f2a6bddb2b8cbe", "f1eef6bdc9e174a9cf0570b0", "f1eef6bdc9e174a9cf2b8cbe045a8d", "f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d", "f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b", "fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b", "fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858").map(colors)); + + _export("scheme", scheme); + + _export("default", ramp(scheme)); + } + }; +}); +//# sourceMappingURL=PuBu.js.map diff --git a/dist/libs/d3-scale-chromatic/sequential-multi/PuBu.js.map b/dist/libs/d3-scale-chromatic/sequential-multi/PuBu.js.map new file mode 100644 index 0000000..9e804b9 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-multi/PuBu.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/sequential-multi/PuBu.js"],"names":["colors","ramp","scheme","Array","concat","map"],"mappings":";;;;;;;;AAAOA,Y;;AACAC,U;;;wBAEIC,M,GAAS,IAAIC,KAAJ,CAAU,CAAV,EAAaC,MAAb,CAClB,oBADkB,EAElB,0BAFkB,EAGlB,gCAHkB,EAIlB,sCAJkB,EAKlB,4CALkB,EAMlB,kDANkB,EAOlB,wDAPkB,EAQlBC,GARkB,CAQdL,MARc,C;;;;yBAULC,KAAKC,MAAL,C","file":"PuBu.js","sourcesContent":["import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"ece7f2a6bddb2b8cbe\",\n \"f1eef6bdc9e174a9cf0570b0\",\n \"f1eef6bdc9e174a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\"\n).map(colors);\n\nexport default ramp(scheme);\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/sequential-multi/PuBuGn.js b/dist/libs/d3-scale-chromatic/sequential-multi/PuBuGn.js new file mode 100644 index 0000000..33b51cd --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-multi/PuBuGn.js @@ -0,0 +1,22 @@ +"use strict"; + +System.register(["../colors", "../ramp"], function (_export, _context) { + "use strict"; + + var colors, ramp, scheme; + return { + setters: [function (_colors) { + colors = _colors.default; + }, function (_ramp) { + ramp = _ramp.default; + }], + execute: function () { + _export("scheme", scheme = new Array(3).concat("ece2f0a6bddb1c9099", "f6eff7bdc9e167a9cf02818a", "f6eff7bdc9e167a9cf1c9099016c59", "f6eff7d0d1e6a6bddb67a9cf1c9099016c59", "f6eff7d0d1e6a6bddb67a9cf3690c002818a016450", "fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450", "fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636").map(colors)); + + _export("scheme", scheme); + + _export("default", ramp(scheme)); + } + }; +}); +//# sourceMappingURL=PuBuGn.js.map diff --git a/dist/libs/d3-scale-chromatic/sequential-multi/PuBuGn.js.map b/dist/libs/d3-scale-chromatic/sequential-multi/PuBuGn.js.map new file mode 100644 index 0000000..b1c8d89 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-multi/PuBuGn.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/sequential-multi/PuBuGn.js"],"names":["colors","ramp","scheme","Array","concat","map"],"mappings":";;;;;;;;AAAOA,Y;;AACAC,U;;;wBAEIC,M,GAAS,IAAIC,KAAJ,CAAU,CAAV,EAAaC,MAAb,CAClB,oBADkB,EAElB,0BAFkB,EAGlB,gCAHkB,EAIlB,sCAJkB,EAKlB,4CALkB,EAMlB,kDANkB,EAOlB,wDAPkB,EAQlBC,GARkB,CAQdL,MARc,C;;;;yBAULC,KAAKC,MAAL,C","file":"PuBuGn.js","sourcesContent":["import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"ece2f0a6bddb1c9099\",\n \"f6eff7bdc9e167a9cf02818a\",\n \"f6eff7bdc9e167a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\"\n).map(colors);\n\nexport default ramp(scheme);\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/sequential-multi/PuRd.js b/dist/libs/d3-scale-chromatic/sequential-multi/PuRd.js new file mode 100644 index 0000000..8802365 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-multi/PuRd.js @@ -0,0 +1,22 @@ +"use strict"; + +System.register(["../colors", "../ramp"], function (_export, _context) { + "use strict"; + + var colors, ramp, scheme; + return { + setters: [function (_colors) { + colors = _colors.default; + }, function (_ramp) { + ramp = _ramp.default; + }], + execute: function () { + _export("scheme", scheme = new Array(3).concat("e7e1efc994c7dd1c77", "f1eef6d7b5d8df65b0ce1256", "f1eef6d7b5d8df65b0dd1c77980043", "f1eef6d4b9dac994c7df65b0dd1c77980043", "f1eef6d4b9dac994c7df65b0e7298ace125691003f", "f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f", "f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f").map(colors)); + + _export("scheme", scheme); + + _export("default", ramp(scheme)); + } + }; +}); +//# sourceMappingURL=PuRd.js.map diff --git a/dist/libs/d3-scale-chromatic/sequential-multi/PuRd.js.map b/dist/libs/d3-scale-chromatic/sequential-multi/PuRd.js.map new file mode 100644 index 0000000..94d39f5 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-multi/PuRd.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/sequential-multi/PuRd.js"],"names":["colors","ramp","scheme","Array","concat","map"],"mappings":";;;;;;;;AAAOA,Y;;AACAC,U;;;wBAEIC,M,GAAS,IAAIC,KAAJ,CAAU,CAAV,EAAaC,MAAb,CAClB,oBADkB,EAElB,0BAFkB,EAGlB,gCAHkB,EAIlB,sCAJkB,EAKlB,4CALkB,EAMlB,kDANkB,EAOlB,wDAPkB,EAQlBC,GARkB,CAQdL,MARc,C;;;;yBAULC,KAAKC,MAAL,C","file":"PuRd.js","sourcesContent":["import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"e7e1efc994c7dd1c77\",\n \"f1eef6d7b5d8df65b0ce1256\",\n \"f1eef6d7b5d8df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\"\n).map(colors);\n\nexport default ramp(scheme);\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/sequential-multi/RdPu.js b/dist/libs/d3-scale-chromatic/sequential-multi/RdPu.js new file mode 100644 index 0000000..7528f72 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-multi/RdPu.js @@ -0,0 +1,22 @@ +"use strict"; + +System.register(["../colors", "../ramp"], function (_export, _context) { + "use strict"; + + var colors, ramp, scheme; + return { + setters: [function (_colors) { + colors = _colors.default; + }, function (_ramp) { + ramp = _ramp.default; + }], + execute: function () { + _export("scheme", scheme = new Array(3).concat("fde0ddfa9fb5c51b8a", "feebe2fbb4b9f768a1ae017e", "feebe2fbb4b9f768a1c51b8a7a0177", "feebe2fcc5c0fa9fb5f768a1c51b8a7a0177", "feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177", "fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177", "fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a").map(colors)); + + _export("scheme", scheme); + + _export("default", ramp(scheme)); + } + }; +}); +//# sourceMappingURL=RdPu.js.map diff --git a/dist/libs/d3-scale-chromatic/sequential-multi/RdPu.js.map b/dist/libs/d3-scale-chromatic/sequential-multi/RdPu.js.map new file mode 100644 index 0000000..2fe1715 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-multi/RdPu.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/sequential-multi/RdPu.js"],"names":["colors","ramp","scheme","Array","concat","map"],"mappings":";;;;;;;;AAAOA,Y;;AACAC,U;;;wBAEIC,M,GAAS,IAAIC,KAAJ,CAAU,CAAV,EAAaC,MAAb,CAClB,oBADkB,EAElB,0BAFkB,EAGlB,gCAHkB,EAIlB,sCAJkB,EAKlB,4CALkB,EAMlB,kDANkB,EAOlB,wDAPkB,EAQlBC,GARkB,CAQdL,MARc,C;;;;yBAULC,KAAKC,MAAL,C","file":"RdPu.js","sourcesContent":["import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"fde0ddfa9fb5c51b8a\",\n \"feebe2fbb4b9f768a1ae017e\",\n \"feebe2fbb4b9f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\"\n).map(colors);\n\nexport default ramp(scheme);\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/sequential-multi/YlGn.js b/dist/libs/d3-scale-chromatic/sequential-multi/YlGn.js new file mode 100644 index 0000000..620d490 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-multi/YlGn.js @@ -0,0 +1,22 @@ +"use strict"; + +System.register(["../colors", "../ramp"], function (_export, _context) { + "use strict"; + + var colors, ramp, scheme; + return { + setters: [function (_colors) { + colors = _colors.default; + }, function (_ramp) { + ramp = _ramp.default; + }], + execute: function () { + _export("scheme", scheme = new Array(3).concat("f7fcb9addd8e31a354", "ffffccc2e69978c679238443", "ffffccc2e69978c67931a354006837", "ffffccd9f0a3addd8e78c67931a354006837", "ffffccd9f0a3addd8e78c67941ab5d238443005a32", "ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32", "ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529").map(colors)); + + _export("scheme", scheme); + + _export("default", ramp(scheme)); + } + }; +}); +//# sourceMappingURL=YlGn.js.map diff --git a/dist/libs/d3-scale-chromatic/sequential-multi/YlGn.js.map b/dist/libs/d3-scale-chromatic/sequential-multi/YlGn.js.map new file mode 100644 index 0000000..2a3a26d --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-multi/YlGn.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/sequential-multi/YlGn.js"],"names":["colors","ramp","scheme","Array","concat","map"],"mappings":";;;;;;;;AAAOA,Y;;AACAC,U;;;wBAEIC,M,GAAS,IAAIC,KAAJ,CAAU,CAAV,EAAaC,MAAb,CAClB,oBADkB,EAElB,0BAFkB,EAGlB,gCAHkB,EAIlB,sCAJkB,EAKlB,4CALkB,EAMlB,kDANkB,EAOlB,wDAPkB,EAQlBC,GARkB,CAQdL,MARc,C;;;;yBAULC,KAAKC,MAAL,C","file":"YlGn.js","sourcesContent":["import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"f7fcb9addd8e31a354\",\n \"ffffccc2e69978c679238443\",\n \"ffffccc2e69978c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\"\n).map(colors);\n\nexport default ramp(scheme);\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/sequential-multi/YlGnBu.js b/dist/libs/d3-scale-chromatic/sequential-multi/YlGnBu.js new file mode 100644 index 0000000..c1d1caa --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-multi/YlGnBu.js @@ -0,0 +1,22 @@ +"use strict"; + +System.register(["../colors", "../ramp"], function (_export, _context) { + "use strict"; + + var colors, ramp, scheme; + return { + setters: [function (_colors) { + colors = _colors.default; + }, function (_ramp) { + ramp = _ramp.default; + }], + execute: function () { + _export("scheme", scheme = new Array(3).concat("edf8b17fcdbb2c7fb8", "ffffcca1dab441b6c4225ea8", "ffffcca1dab441b6c42c7fb8253494", "ffffccc7e9b47fcdbb41b6c42c7fb8253494", "ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84", "ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84", "ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(colors)); + + _export("scheme", scheme); + + _export("default", ramp(scheme)); + } + }; +}); +//# sourceMappingURL=YlGnBu.js.map diff --git a/dist/libs/d3-scale-chromatic/sequential-multi/YlGnBu.js.map b/dist/libs/d3-scale-chromatic/sequential-multi/YlGnBu.js.map new file mode 100644 index 0000000..68ff5da --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-multi/YlGnBu.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/sequential-multi/YlGnBu.js"],"names":["colors","ramp","scheme","Array","concat","map"],"mappings":";;;;;;;;AAAOA,Y;;AACAC,U;;;wBAEIC,M,GAAS,IAAIC,KAAJ,CAAU,CAAV,EAAaC,MAAb,CAClB,oBADkB,EAElB,0BAFkB,EAGlB,gCAHkB,EAIlB,sCAJkB,EAKlB,4CALkB,EAMlB,kDANkB,EAOlB,wDAPkB,EAQlBC,GARkB,CAQdL,MARc,C;;;;yBAULC,KAAKC,MAAL,C","file":"YlGnBu.js","sourcesContent":["import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"edf8b17fcdbb2c7fb8\",\n \"ffffcca1dab441b6c4225ea8\",\n \"ffffcca1dab441b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\"\n).map(colors);\n\nexport default ramp(scheme);\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/sequential-multi/YlOrBr.js b/dist/libs/d3-scale-chromatic/sequential-multi/YlOrBr.js new file mode 100644 index 0000000..f9258cb --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-multi/YlOrBr.js @@ -0,0 +1,22 @@ +"use strict"; + +System.register(["../colors", "../ramp"], function (_export, _context) { + "use strict"; + + var colors, ramp, scheme; + return { + setters: [function (_colors) { + colors = _colors.default; + }, function (_ramp) { + ramp = _ramp.default; + }], + execute: function () { + _export("scheme", scheme = new Array(3).concat("fff7bcfec44fd95f0e", "ffffd4fed98efe9929cc4c02", "ffffd4fed98efe9929d95f0e993404", "ffffd4fee391fec44ffe9929d95f0e993404", "ffffd4fee391fec44ffe9929ec7014cc4c028c2d04", "ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04", "ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506").map(colors)); + + _export("scheme", scheme); + + _export("default", ramp(scheme)); + } + }; +}); +//# sourceMappingURL=YlOrBr.js.map diff --git a/dist/libs/d3-scale-chromatic/sequential-multi/YlOrBr.js.map b/dist/libs/d3-scale-chromatic/sequential-multi/YlOrBr.js.map new file mode 100644 index 0000000..6e29dd0 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-multi/YlOrBr.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/sequential-multi/YlOrBr.js"],"names":["colors","ramp","scheme","Array","concat","map"],"mappings":";;;;;;;;AAAOA,Y;;AACAC,U;;;wBAEIC,M,GAAS,IAAIC,KAAJ,CAAU,CAAV,EAAaC,MAAb,CAClB,oBADkB,EAElB,0BAFkB,EAGlB,gCAHkB,EAIlB,sCAJkB,EAKlB,4CALkB,EAMlB,kDANkB,EAOlB,wDAPkB,EAQlBC,GARkB,CAQdL,MARc,C;;;;yBAULC,KAAKC,MAAL,C","file":"YlOrBr.js","sourcesContent":["import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"fff7bcfec44fd95f0e\",\n \"ffffd4fed98efe9929cc4c02\",\n \"ffffd4fed98efe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\"\n).map(colors);\n\nexport default ramp(scheme);\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/sequential-multi/YlOrRd.js b/dist/libs/d3-scale-chromatic/sequential-multi/YlOrRd.js new file mode 100644 index 0000000..90b3d6a --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-multi/YlOrRd.js @@ -0,0 +1,22 @@ +"use strict"; + +System.register(["../colors", "../ramp"], function (_export, _context) { + "use strict"; + + var colors, ramp, scheme; + return { + setters: [function (_colors) { + colors = _colors.default; + }, function (_ramp) { + ramp = _ramp.default; + }], + execute: function () { + _export("scheme", scheme = new Array(3).concat("ffeda0feb24cf03b20", "ffffb2fecc5cfd8d3ce31a1c", "ffffb2fecc5cfd8d3cf03b20bd0026", "ffffb2fed976feb24cfd8d3cf03b20bd0026", "ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026", "ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026", "ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(colors)); + + _export("scheme", scheme); + + _export("default", ramp(scheme)); + } + }; +}); +//# sourceMappingURL=YlOrRd.js.map diff --git a/dist/libs/d3-scale-chromatic/sequential-multi/YlOrRd.js.map b/dist/libs/d3-scale-chromatic/sequential-multi/YlOrRd.js.map new file mode 100644 index 0000000..fef7cad --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-multi/YlOrRd.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/sequential-multi/YlOrRd.js"],"names":["colors","ramp","scheme","Array","concat","map"],"mappings":";;;;;;;;AAAOA,Y;;AACAC,U;;;wBAEIC,M,GAAS,IAAIC,KAAJ,CAAU,CAAV,EAAaC,MAAb,CAClB,oBADkB,EAElB,0BAFkB,EAGlB,gCAHkB,EAIlB,sCAJkB,EAKlB,4CALkB,EAMlB,kDANkB,EAOlB,wDAPkB,EAQlBC,GARkB,CAQdL,MARc,C;;;;yBAULC,KAAKC,MAAL,C","file":"YlOrRd.js","sourcesContent":["import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"ffeda0feb24cf03b20\",\n \"ffffb2fecc5cfd8d3ce31a1c\",\n \"ffffb2fecc5cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\"\n).map(colors);\n\nexport default ramp(scheme);\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/sequential-single/Blues.js b/dist/libs/d3-scale-chromatic/sequential-single/Blues.js new file mode 100644 index 0000000..795b839 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-single/Blues.js @@ -0,0 +1,22 @@ +"use strict"; + +System.register(["../colors", "../ramp"], function (_export, _context) { + "use strict"; + + var colors, ramp, scheme; + return { + setters: [function (_colors) { + colors = _colors.default; + }, function (_ramp) { + ramp = _ramp.default; + }], + execute: function () { + _export("scheme", scheme = new Array(3).concat("deebf79ecae13182bd", "eff3ffbdd7e76baed62171b5", "eff3ffbdd7e76baed63182bd08519c", "eff3ffc6dbef9ecae16baed63182bd08519c", "eff3ffc6dbef9ecae16baed64292c62171b5084594", "f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594", "f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(colors)); + + _export("scheme", scheme); + + _export("default", ramp(scheme)); + } + }; +}); +//# sourceMappingURL=Blues.js.map diff --git a/dist/libs/d3-scale-chromatic/sequential-single/Blues.js.map b/dist/libs/d3-scale-chromatic/sequential-single/Blues.js.map new file mode 100644 index 0000000..fb4c968 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-single/Blues.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/sequential-single/Blues.js"],"names":["colors","ramp","scheme","Array","concat","map"],"mappings":";;;;;;;;AAAOA,Y;;AACAC,U;;;wBAEIC,M,GAAS,IAAIC,KAAJ,CAAU,CAAV,EAAaC,MAAb,CAClB,oBADkB,EAElB,0BAFkB,EAGlB,gCAHkB,EAIlB,sCAJkB,EAKlB,4CALkB,EAMlB,kDANkB,EAOlB,wDAPkB,EAQlBC,GARkB,CAQdL,MARc,C;;;;yBAULC,KAAKC,MAAL,C","file":"Blues.js","sourcesContent":["import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"deebf79ecae13182bd\",\n \"eff3ffbdd7e76baed62171b5\",\n \"eff3ffbdd7e76baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/sequential-single/Greens.js b/dist/libs/d3-scale-chromatic/sequential-single/Greens.js new file mode 100644 index 0000000..35b0961 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-single/Greens.js @@ -0,0 +1,22 @@ +"use strict"; + +System.register(["../colors", "../ramp"], function (_export, _context) { + "use strict"; + + var colors, ramp, scheme; + return { + setters: [function (_colors) { + colors = _colors.default; + }, function (_ramp) { + ramp = _ramp.default; + }], + execute: function () { + _export("scheme", scheme = new Array(3).concat("e5f5e0a1d99b31a354", "edf8e9bae4b374c476238b45", "edf8e9bae4b374c47631a354006d2c", "edf8e9c7e9c0a1d99b74c47631a354006d2c", "edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32", "f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32", "f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(colors)); + + _export("scheme", scheme); + + _export("default", ramp(scheme)); + } + }; +}); +//# sourceMappingURL=Greens.js.map diff --git a/dist/libs/d3-scale-chromatic/sequential-single/Greens.js.map b/dist/libs/d3-scale-chromatic/sequential-single/Greens.js.map new file mode 100644 index 0000000..87adc53 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-single/Greens.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/sequential-single/Greens.js"],"names":["colors","ramp","scheme","Array","concat","map"],"mappings":";;;;;;;;AAAOA,Y;;AACAC,U;;;wBAEIC,M,GAAS,IAAIC,KAAJ,CAAU,CAAV,EAAaC,MAAb,CAClB,oBADkB,EAElB,0BAFkB,EAGlB,gCAHkB,EAIlB,sCAJkB,EAKlB,4CALkB,EAMlB,kDANkB,EAOlB,wDAPkB,EAQlBC,GARkB,CAQdL,MARc,C;;;;yBAULC,KAAKC,MAAL,C","file":"Greens.js","sourcesContent":["import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5e0a1d99b31a354\",\n \"edf8e9bae4b374c476238b45\",\n \"edf8e9bae4b374c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/sequential-single/Greys.js b/dist/libs/d3-scale-chromatic/sequential-single/Greys.js new file mode 100644 index 0000000..138bb17 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-single/Greys.js @@ -0,0 +1,22 @@ +"use strict"; + +System.register(["../colors", "../ramp"], function (_export, _context) { + "use strict"; + + var colors, ramp, scheme; + return { + setters: [function (_colors) { + colors = _colors.default; + }, function (_ramp) { + ramp = _ramp.default; + }], + execute: function () { + _export("scheme", scheme = new Array(3).concat("f0f0f0bdbdbd636363", "f7f7f7cccccc969696525252", "f7f7f7cccccc969696636363252525", "f7f7f7d9d9d9bdbdbd969696636363252525", "f7f7f7d9d9d9bdbdbd969696737373525252252525", "fffffff0f0f0d9d9d9bdbdbd969696737373525252252525", "fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(colors)); + + _export("scheme", scheme); + + _export("default", ramp(scheme)); + } + }; +}); +//# sourceMappingURL=Greys.js.map diff --git a/dist/libs/d3-scale-chromatic/sequential-single/Greys.js.map b/dist/libs/d3-scale-chromatic/sequential-single/Greys.js.map new file mode 100644 index 0000000..21ea9fc --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-single/Greys.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/sequential-single/Greys.js"],"names":["colors","ramp","scheme","Array","concat","map"],"mappings":";;;;;;;;AAAOA,Y;;AACAC,U;;;wBAEIC,M,GAAS,IAAIC,KAAJ,CAAU,CAAV,EAAaC,MAAb,CAClB,oBADkB,EAElB,0BAFkB,EAGlB,gCAHkB,EAIlB,sCAJkB,EAKlB,4CALkB,EAMlB,kDANkB,EAOlB,wDAPkB,EAQlBC,GARkB,CAQdL,MARc,C;;;;yBAULC,KAAKC,MAAL,C","file":"Greys.js","sourcesContent":["import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"f0f0f0bdbdbd636363\",\n \"f7f7f7cccccc969696525252\",\n \"f7f7f7cccccc969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(colors);\n\nexport default ramp(scheme);\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/sequential-single/Oranges.js b/dist/libs/d3-scale-chromatic/sequential-single/Oranges.js new file mode 100644 index 0000000..e11f680 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-single/Oranges.js @@ -0,0 +1,22 @@ +"use strict"; + +System.register(["../colors", "../ramp"], function (_export, _context) { + "use strict"; + + var colors, ramp, scheme; + return { + setters: [function (_colors) { + colors = _colors.default; + }, function (_ramp) { + ramp = _ramp.default; + }], + execute: function () { + _export("scheme", scheme = new Array(3).concat("fee6cefdae6be6550d", "feeddefdbe85fd8d3cd94701", "feeddefdbe85fd8d3ce6550da63603", "feeddefdd0a2fdae6bfd8d3ce6550da63603", "feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04", "fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04", "fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(colors)); + + _export("scheme", scheme); + + _export("default", ramp(scheme)); + } + }; +}); +//# sourceMappingURL=Oranges.js.map diff --git a/dist/libs/d3-scale-chromatic/sequential-single/Oranges.js.map b/dist/libs/d3-scale-chromatic/sequential-single/Oranges.js.map new file mode 100644 index 0000000..1b2fafb --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-single/Oranges.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/sequential-single/Oranges.js"],"names":["colors","ramp","scheme","Array","concat","map"],"mappings":";;;;;;;;AAAOA,Y;;AACAC,U;;;wBAEIC,M,GAAS,IAAIC,KAAJ,CAAU,CAAV,EAAaC,MAAb,CAClB,oBADkB,EAElB,0BAFkB,EAGlB,gCAHkB,EAIlB,sCAJkB,EAKlB,4CALkB,EAMlB,kDANkB,EAOlB,wDAPkB,EAQlBC,GARkB,CAQdL,MARc,C;;;;yBAULC,KAAKC,MAAL,C","file":"Oranges.js","sourcesContent":["import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"fee6cefdae6be6550d\",\n \"feeddefdbe85fd8d3cd94701\",\n \"feeddefdbe85fd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\"\n).map(colors);\n\nexport default ramp(scheme);\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/sequential-single/Purples.js b/dist/libs/d3-scale-chromatic/sequential-single/Purples.js new file mode 100644 index 0000000..b3d71f3 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-single/Purples.js @@ -0,0 +1,22 @@ +"use strict"; + +System.register(["../colors", "../ramp"], function (_export, _context) { + "use strict"; + + var colors, ramp, scheme; + return { + setters: [function (_colors) { + colors = _colors.default; + }, function (_ramp) { + ramp = _ramp.default; + }], + execute: function () { + _export("scheme", scheme = new Array(3).concat("efedf5bcbddc756bb1", "f2f0f7cbc9e29e9ac86a51a3", "f2f0f7cbc9e29e9ac8756bb154278f", "f2f0f7dadaebbcbddc9e9ac8756bb154278f", "f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486", "fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486", "fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(colors)); + + _export("scheme", scheme); + + _export("default", ramp(scheme)); + } + }; +}); +//# sourceMappingURL=Purples.js.map diff --git a/dist/libs/d3-scale-chromatic/sequential-single/Purples.js.map b/dist/libs/d3-scale-chromatic/sequential-single/Purples.js.map new file mode 100644 index 0000000..bf8daf5 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-single/Purples.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/sequential-single/Purples.js"],"names":["colors","ramp","scheme","Array","concat","map"],"mappings":";;;;;;;;AAAOA,Y;;AACAC,U;;;wBAEIC,M,GAAS,IAAIC,KAAJ,CAAU,CAAV,EAAaC,MAAb,CAClB,oBADkB,EAElB,0BAFkB,EAGlB,gCAHkB,EAIlB,sCAJkB,EAKlB,4CALkB,EAMlB,kDANkB,EAOlB,wDAPkB,EAQlBC,GARkB,CAQdL,MARc,C;;;;yBAULC,KAAKC,MAAL,C","file":"Purples.js","sourcesContent":["import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"efedf5bcbddc756bb1\",\n \"f2f0f7cbc9e29e9ac86a51a3\",\n \"f2f0f7cbc9e29e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\"\n).map(colors);\n\nexport default ramp(scheme);\n"]} \ No newline at end of file diff --git a/dist/libs/d3-scale-chromatic/sequential-single/Reds.js b/dist/libs/d3-scale-chromatic/sequential-single/Reds.js new file mode 100644 index 0000000..8f9b751 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-single/Reds.js @@ -0,0 +1,22 @@ +"use strict"; + +System.register(["../colors", "../ramp"], function (_export, _context) { + "use strict"; + + var colors, ramp, scheme; + return { + setters: [function (_colors) { + colors = _colors.default; + }, function (_ramp) { + ramp = _ramp.default; + }], + execute: function () { + _export("scheme", scheme = new Array(3).concat("fee0d2fc9272de2d26", "fee5d9fcae91fb6a4acb181d", "fee5d9fcae91fb6a4ade2d26a50f15", "fee5d9fcbba1fc9272fb6a4ade2d26a50f15", "fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d", "fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d", "fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(colors)); + + _export("scheme", scheme); + + _export("default", ramp(scheme)); + } + }; +}); +//# sourceMappingURL=Reds.js.map diff --git a/dist/libs/d3-scale-chromatic/sequential-single/Reds.js.map b/dist/libs/d3-scale-chromatic/sequential-single/Reds.js.map new file mode 100644 index 0000000..246c412 --- /dev/null +++ b/dist/libs/d3-scale-chromatic/sequential-single/Reds.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../src/libs/d3-scale-chromatic/sequential-single/Reds.js"],"names":["colors","ramp","scheme","Array","concat","map"],"mappings":";;;;;;;;AAAOA,Y;;AACAC,U;;;wBAEIC,M,GAAS,IAAIC,KAAJ,CAAU,CAAV,EAAaC,MAAb,CAClB,oBADkB,EAElB,0BAFkB,EAGlB,gCAHkB,EAIlB,sCAJkB,EAKlB,4CALkB,EAMlB,kDANkB,EAOlB,wDAPkB,EAQlBC,GARkB,CAQdL,MARc,C;;;;yBAULC,KAAKC,MAAL,C","file":"Reds.js","sourcesContent":["import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"fee0d2fc9272de2d26\",\n \"fee5d9fcae91fb6a4acb181d\",\n \"fee5d9fcae91fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n"]} \ No newline at end of file diff --git a/dist/module.html b/dist/module.html new file mode 100644 index 0000000..dd55b5f --- /dev/null +++ b/dist/module.html @@ -0,0 +1,15 @@ +
+
+ +
+ {{ctrl.dataWarnings.multipleValues.title}} + {{ctrl.dataWarnings.noColorDefined.title}} +
+ +
+
+
+ +
+
+
diff --git a/dist/module.js b/dist/module.js new file mode 100644 index 0000000..cf94993 --- /dev/null +++ b/dist/module.js @@ -0,0 +1,16 @@ +'use strict'; + +System.register(['./color_legend', './status_heatmap_ctrl'], function (_export, _context) { + "use strict"; + + var StatusHeatmapCtrl; + return { + setters: [function (_color_legend) {}, function (_status_heatmap_ctrl) { + StatusHeatmapCtrl = _status_heatmap_ctrl.StatusHeatmapCtrl; + }], + execute: function () { + _export('PanelCtrl', StatusHeatmapCtrl); + } + }; +}); +//# sourceMappingURL=module.js.map diff --git a/dist/options_editor.js b/dist/options_editor.js new file mode 100644 index 0000000..e5fb0d0 --- /dev/null +++ b/dist/options_editor.js @@ -0,0 +1,77 @@ +'use strict'; + +System.register(['app/core/utils/kbn'], function (_export, _context) { + "use strict"; + + var kbn, _createClass, StatusHeatmapOptionsEditorCtrl; + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + function statusHeatmapOptionsEditor() { + 'use strict'; + + return { + restrict: 'E', + scope: true, + templateUrl: 'public/plugins/status-heatmap-panel/partials/options_editor.html', + controller: StatusHeatmapOptionsEditorCtrl + }; + } + + _export('statusHeatmapOptionsEditor', statusHeatmapOptionsEditor); + + return { + setters: [function (_appCoreUtilsKbn) { + kbn = _appCoreUtilsKbn.default; + }], + execute: function () { + _createClass = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; + }(); + + _export('StatusHeatmapOptionsEditorCtrl', StatusHeatmapOptionsEditorCtrl = function () { + function StatusHeatmapOptionsEditorCtrl($scope) { + _classCallCheck(this, StatusHeatmapOptionsEditorCtrl); + + $scope.editor = this; + this.panelCtrl = $scope.ctrl; + this.panel = this.panelCtrl.panel; + this.unitFormats = kbn.getUnitFormats(); + + this.panelCtrl.render(); + } + + _createClass(StatusHeatmapOptionsEditorCtrl, [{ + key: 'setUnitFormat', + value: function setUnitFormat(subItem) { + this.panel.data.unitFormat = subItem.value; + this.panelCtrl.render(); + } + }]); + + return StatusHeatmapOptionsEditorCtrl; + }()); + + _export('StatusHeatmapOptionsEditorCtrl', StatusHeatmapOptionsEditorCtrl); + } + }; +}); +//# sourceMappingURL=options_editor.js.map diff --git a/dist/partials/options_editor.html b/dist/partials/options_editor.html new file mode 100644 index 0000000..f41f099 --- /dev/null +++ b/dist/partials/options_editor.html @@ -0,0 +1,159 @@ +
+ Error: data has multiple values for one target. Please change target or check "use max value". +
+ +
+ Error: data value with undefined color. Check metric values, color values or define new color. +
+ +
+
+
Colors
+
+ +
+ +
+
+ +
+
+ Note: Bucket color determined by maximum value in bucket
+
+
+ + + + +
+
+ +
+ +
+
+
+ + +
+
+ +
+
+ Note: Bucket color determined by maximum value in bucket
+
+
+ +
+ +
+
+
+ +
+
+ Note: Multiple values displayed using color with least index
+
+ +
+ + + + + + + + + + + +
+ + +
+ +
+ +
+
+ +
+
Color scale
+
+ + +
+
+ + +
+
+ +
+
Display
+ + + + +
+ +
+
Bucket
+ + + +
+ Color for bucket with multiple values is determined by color mode
+
+ +
+ +
+ +
+
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+ +
+
+
diff --git a/dist/plugin.json b/dist/plugin.json new file mode 100644 index 0000000..715acc8 --- /dev/null +++ b/dist/plugin.json @@ -0,0 +1,35 @@ +{ + "type": "panel", + "name": "Statusmap", + "id": "flant-statusmap-panel", + + "info": { + "description": "Statusmap panel for grafana", + "author": { + "name": "Flant JSC", + "url": "http://flant.com" + }, + "keywords": ["status", "heatmap", "panel"], + "logos": { + "small": "img/logo.svg", + "large": "img/logo.svg" + }, + "links": [ + {"name": "Github", "url": "https://github.com/flant/grafana-statusmap"}, + {"name": "MIT Licence", "url": "https://github.com/flant/grafana-statusmap/blob/master/LICENSE"} + + ], + "screenshots": [ + {"name": "Panel", "path": "img/flant-statusmap-panel.png"}, + {"name": "Color mapping", "path": "img/color-mapping.png"}, + {"name": "Queries example", "path": "img/queries-example.png"} + ], + "version": "0.0.1", + "updated": "2018-09-17" + }, + + "dependencies": { + "grafanaVersion": "5.1.x", + "plugins": [ ] + } +} diff --git a/dist/rendering.js b/dist/rendering.js new file mode 100644 index 0000000..76f5b74 --- /dev/null +++ b/dist/rendering.js @@ -0,0 +1,639 @@ +'use strict'; + +System.register(['lodash', 'jquery', 'moment', 'app/core/utils/kbn', 'app/core/core', 'app/core/utils/ticks', 'd3', './libs/d3-scale-chromatic/index', './tooltip'], function (_export, _context) { + "use strict"; + + var _, $, moment, kbn, appEvents, contextSrv, tickStep, getScaledDecimals, getFlotTickSize, d3, d3ScaleChromatic, StatusHeatmapTooltip, MIN_CARD_SIZE, CARD_SPACING, CARD_ROUND, DATA_RANGE_WIDING_FACTOR, DEFAULT_X_TICK_SIZE_PX, DEFAULT_Y_TICK_SIZE_PX, X_AXIS_TICK_PADDING, Y_AXIS_TICK_PADDING, MIN_SELECTION_WIDTH; + + function link(scope, elem, attrs, ctrl) { + var data = void 0, + cardsData = void 0, + timeRange = void 0, + panel = void 0, + heatmap = void 0; + + // $heatmap is JQuery object, but heatmap is D3 + var $heatmap = elem.find('.status-heatmap-panel'); + var tooltip = new StatusHeatmapTooltip($heatmap, scope); + + var width = void 0, + height = void 0, + yScale = void 0, + xScale = void 0, + chartWidth = void 0, + chartHeight = void 0, + chartTop = void 0, + chartBottom = void 0, + yAxisWidth = void 0, + xAxisHeight = void 0, + cardSpacing = void 0, + cardRound = void 0, + cardWidth = void 0, + cardHeight = void 0, + colorScale = void 0, + opacityScale = void 0, + mouseUpHandler = void 0, + xGridSize = void 0, + yGridSize = void 0; + + var yOffset = 0; + + var selection = { + active: false, + x1: -1, + x2: -1 + }; + + var padding = { left: 0, right: 0, top: 0, bottom: 0 }, + margin = { left: 25, right: 15, top: 10, bottom: 20 }, + dataRangeWidingFactor = DATA_RANGE_WIDING_FACTOR; + + ctrl.events.on('render', function () { + render(); + }); + + function setElementHeight() { + try { + var height = ctrl.height || panel.height || ctrl.row.height; + if (_.isString(height)) { + height = parseInt(height.replace('px', ''), 10); + } + + height -= panel.legend.show ? 32 : 10; // bottom padding and space for legend. Change margin in .status-heatmap-color-legend ! + + $heatmap.css('height', height + 'px'); + + return true; + } catch (e) { + // IE throws errors sometimes + return false; + } + } + + function getYAxisWidth(elem) { + var axis_text = elem.selectAll(".axis-y text").nodes(); + var max_text_width = _.max(_.map(axis_text, function (text) { + // Use SVG getBBox method + return text.getBBox().width; + })); + + return max_text_width; + } + + function getXAxisHeight(elem) { + var axis_line = elem.select(".axis-x line"); + if (!axis_line.empty()) { + var axis_line_position = parseFloat(elem.select(".axis-x line").attr("y2")); + var canvas_width = parseFloat(elem.attr("height")); + return canvas_width - axis_line_position; + } else { + // Default height + return 30; + } + } + + function addXAxis() { + // Scale timestamps to cards centers + scope.xScale = xScale = d3.scaleTime().domain([timeRange.from, timeRange.to]).range([xGridSize / 2, chartWidth - xGridSize / 2]); + + var ticks = chartWidth / DEFAULT_X_TICK_SIZE_PX; + var grafanaTimeFormatter = grafanaTimeFormat(ticks, timeRange.from, timeRange.to); + var timeFormat = void 0; + var dashboardTimeZone = ctrl.dashboard.getTimezone(); + if (dashboardTimeZone === 'utc') { + timeFormat = d3.utcFormat(grafanaTimeFormatter); + } else { + timeFormat = d3.timeFormat(grafanaTimeFormatter); + } + + var xAxis = d3.axisBottom(xScale).ticks(ticks).tickFormat(timeFormat).tickPadding(X_AXIS_TICK_PADDING).tickSize(chartHeight); + + var posY = chartTop; + var posX = yAxisWidth; + + heatmap.append("g").attr("class", "axis axis-x").attr("transform", "translate(" + posX + "," + posY + ")").call(xAxis); + + // Remove horizontal line in the top of axis labels (called domain in d3) + heatmap.select(".axis-x").select(".domain").remove(); + } + + // divide chart height by ticks for cards drawing + function getYScale(ticks) { + var range = []; + var step = chartHeight / ticks.length; + range.push(chartHeight); + for (var i = 1; i < ticks.length; i++) { + range.push(chartHeight - step * i); + } + return d3.scaleOrdinal().domain(ticks).range(range); + } + + // divide chart height by ticks with offset for ticks drawing + function getYAxisScale(ticks) { + var range = []; + var step = chartHeight / ticks.length; + range.push(chartHeight - yOffset); + for (var i = 1; i < ticks.length; i++) { + range.push(chartHeight - step * i - yOffset); + } + return d3.scaleOrdinal().domain(ticks).range(range); + } + + function addYAxis() { + var ticks = _.uniq(_.map(data, function (d) { + return d.target; + })); + + // Set default Y min and max if no data + if (_.isEmpty(data)) { + ticks = ['']; + } + + var yAxisScale = getYAxisScale(ticks); + scope.yScale = yScale = getYScale(ticks); + + var yAxis = d3.axisLeft(yAxisScale).tickValues(ticks).tickSizeInner(0 - width).tickPadding(Y_AXIS_TICK_PADDING); + + heatmap.append("g").attr("class", "axis axis-y").call(yAxis); + + // Calculate Y axis width first, then move axis into visible area + var posY = margin.top; + var posX = getYAxisWidth(heatmap) + Y_AXIS_TICK_PADDING; + heatmap.select(".axis-y").attr("transform", "translate(" + posX + "," + posY + ")"); + + // Remove vertical line in the right of axis labels (called domain in d3) + heatmap.select(".axis-y").select(".domain").remove(); + heatmap.select(".axis-y").selectAll(".tick line").remove(); + } + + // Wide Y values range and adjust to bucket size + function wideYAxisRange(min, max, tickInterval) { + var y_widing = (max * (dataRangeWidingFactor - 1) - min * (dataRangeWidingFactor - 1)) / 2; + var y_min = void 0, + y_max = void 0; + + if (tickInterval === 0) { + y_max = max * dataRangeWidingFactor; + y_min = min - min * (dataRangeWidingFactor - 1); + tickInterval = (y_max - y_min) / 2; + } else { + y_max = Math.ceil((max + y_widing) / tickInterval) * tickInterval; + y_min = Math.floor((min - y_widing) / tickInterval) * tickInterval; + } + + // Don't wide axis below 0 if all values are positive + if (min >= 0 && y_min < 0) { + y_min = 0; + } + + return { y_min: y_min, y_max: y_max }; + } + + function tickValueFormatter(decimals) { + var scaledDecimals = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + + var format = panel.yAxis.format; + return function (value) { + return kbn.valueFormats[format](value, decimals, scaledDecimals); + }; + } + + // Create svg element, add axes and + // calculate sizes for cards drawing + function addHeatmapCanvas() { + var heatmap_elem = $heatmap[0]; + + width = Math.floor($heatmap.width()) - padding.right; + height = Math.floor($heatmap.height()) - padding.bottom; + + if (heatmap) { + heatmap.remove(); + } + + heatmap = d3.select(heatmap_elem).append("svg").attr("width", width).attr("height", height); + + chartHeight = height - margin.top - margin.bottom; + chartTop = margin.top; + chartBottom = chartTop + chartHeight; + + cardSpacing = panel.cards.cardSpacing !== null ? panel.cards.cardSpacing : CARD_SPACING; + cardRound = panel.cards.cardRound !== null ? panel.cards.cardRound : CARD_ROUND; + + // calculate yOffset for YAxis + yGridSize = Math.floor(chartHeight / cardsData.yBucketSize); + cardHeight = yGridSize ? yGridSize - cardSpacing : 0; + yOffset = cardHeight / 2; + + addYAxis(); + + yAxisWidth = getYAxisWidth(heatmap) + Y_AXIS_TICK_PADDING; + chartWidth = width - yAxisWidth - margin.right; + + // we need to fill chartWidth with xBucketSize cards. + xGridSize = chartWidth / (cardsData.xBucketSize + 1); + cardWidth = xGridSize - cardSpacing; + + addXAxis(); + xAxisHeight = getXAxisHeight(heatmap); + + if (!panel.yAxis.show) { + heatmap.select(".axis-y").selectAll("line").style("opacity", 0); + } + + if (!panel.xAxis.show) { + heatmap.select(".axis-x").selectAll("line").style("opacity", 0); + } + } + + function addHeatmap() { + addHeatmapCanvas(); + + var maxValue = panel.color.max || cardsData.maxValue; + var minValue = panel.color.min || cardsData.minValue; + + if (panel.color.mode !== 'discrete') { + colorScale = getColorScale(maxValue, minValue); + } + setOpacityScale(maxValue); + + var cards = heatmap.selectAll(".status-heatmap-card").data(cardsData.cards); + cards.append("title"); + cards = cards.enter().append("rect").attr("cardId", function (c) { + return c.id; + }).attr("x", getCardX).attr("width", getCardWidth).attr("y", getCardY).attr("height", getCardHeight).attr("rx", cardRound).attr("ry", cardRound).attr("class", "bordered status-heatmap-card").style("fill", getCardColor).style("stroke", getCardColor).style("stroke-width", 0) + //.style("stroke-width", getCardStrokeWidth) + //.style("stroke-dasharray", "3,3") + .style("opacity", getCardOpacity); + + var $cards = $heatmap.find(".status-heatmap-card"); + $cards.on("mouseenter", function (event) { + tooltip.mouseOverBucket = true; + highlightCard(event); + }).on("mouseleave", function (event) { + tooltip.mouseOverBucket = false; + resetCardHighLight(event); + }); + + ctrl.events.emit('render-complete', { + "chartWidth": chartWidth + }); + } + + function highlightCard(event) { + var color = d3.select(event.target).style("fill"); + var highlightColor = d3.color(color).darker(2); + var strokeColor = d3.color(color).brighter(4); + var current_card = d3.select(event.target); + tooltip.originalFillColor = color; + current_card.style("fill", highlightColor).style("stroke", strokeColor).style("stroke-width", 1); + } + + function resetCardHighLight(event) { + d3.select(event.target).style("fill", tooltip.originalFillColor).style("stroke", tooltip.originalFillColor).style("stroke-width", 0); + } + + function getColorScale(maxValue) { + var minValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + + var colorScheme = _.find(ctrl.colorSchemes, { value: panel.color.colorScheme }); + var colorInterpolator = d3ScaleChromatic[colorScheme.value]; + var colorScaleInverted = colorScheme.invert === 'always' || colorScheme.invert === 'dark' && !contextSrv.user.lightTheme; + + if (maxValue == minValue) maxValue = minValue + 1; + + var start = colorScaleInverted ? maxValue : minValue; + var end = colorScaleInverted ? minValue : maxValue; + + return d3.scaleSequential(colorInterpolator).domain([start, end]); + } + + function setOpacityScale(maxValue) { + if (panel.color.colorScale === 'linear') { + opacityScale = d3.scaleLinear().domain([0, maxValue]).range([0, 1]); + } else if (panel.color.colorScale === 'sqrt') { + opacityScale = d3.scalePow().exponent(panel.color.exponent).domain([0, maxValue]).range([0, 1]); + } + } + + function getCardX(d) { + var x = void 0; + // cx is the center of the card. Card should be placed to the left. + var cx = xScale(d.x); + + if (cx - cardWidth / 2 < 0) { + x = yAxisWidth + cardSpacing / 2; + } else { + x = yAxisWidth + cx - cardWidth / 2; + } + + return x; + } + + // xScale returns card center. Adjust cardWidth in case of overlaping. + function getCardWidth(d) { + var w = void 0; + var cx = xScale(d.x); + + if (cx < cardWidth / 2) { + // Center should not exceed half of card. + // Cut card to the left to prevent overlay of y axis. + var cutted_width = cx - cardSpacing / 2 + cardWidth / 2; + w = cutted_width > 0 ? cutted_width : 0; + } else if (chartWidth - cx < cardWidth / 2) { + // Cut card to the right to prevent overlay of right graph edge. + w = cardWidth / 2 + (chartWidth - cx - cardSpacing / 2); + } else { + w = cardWidth; + } + + // Card width should be MIN_CARD_SIZE at least + w = Math.max(w, MIN_CARD_SIZE); + + return w; + } + + function getCardY(d) { + return yScale(d.y) + chartTop - cardHeight - cardSpacing / 2; + } + + function getCardHeight(d) { + var ys = yScale(d.y); + var y = ys + chartTop - cardHeight - cardSpacing / 2; + var h = cardHeight; + + // Cut card height to prevent overlay + if (y < chartTop) { + h = ys - cardSpacing / 2; + } else if (ys > chartBottom) { + h = chartBottom - y; + } else if (y + cardHeight > chartBottom) { + h = chartBottom - y; + } + + // Height can't be more than chart height + h = Math.min(h, chartHeight); + // Card height should be MIN_CARD_SIZE at least + h = Math.max(h, MIN_CARD_SIZE); + + return h; + } + + function getCardColor(d) { + if (panel.color.mode === 'opacity') { + return panel.color.cardColor; + } else if (panel.color.mode === 'spectrum') { + return colorScale(d.value); + } else if (panel.color.mode === 'discrete') { + return ctrl.discreteHelper.getBucketColor(d.values); + } + } + + function getCardOpacity(d) { + if (panel.nullPointMode === 'as empty' && d.value == null) { + return 0; + } + if (panel.color.mode === 'opacity') { + return opacityScale(d.value); + } else { + return 1; + } + } + + function getCardStrokeWidth(d) { + if (panel.color.mode === 'discrete') { + return '1'; + } + return '0'; + } + + ///////////////////////////// + // Selection and crosshair // + ///////////////////////////// + + // Shared crosshair and tooltip + appEvents.on('graph-hover', function (event) { + drawSharedCrosshair(event.pos); + }, scope); + + appEvents.on('graph-hover-clear', function () { + clearCrosshair(); + }, scope); + + function onMouseDown(event) { + selection.active = true; + selection.x1 = event.offsetX; + + mouseUpHandler = function mouseUpHandler() { + onMouseUp(); + }; + + $(document).one("mouseup", mouseUpHandler); + } + + function onMouseUp() { + $(document).unbind("mouseup", mouseUpHandler); + mouseUpHandler = null; + selection.active = false; + + var selectionRange = Math.abs(selection.x2 - selection.x1); + if (selection.x2 >= 0 && selectionRange > MIN_SELECTION_WIDTH) { + var timeFrom = xScale.invert(Math.min(selection.x1, selection.x2) - yAxisWidth - xGridSize / 2); + var timeTo = xScale.invert(Math.max(selection.x1, selection.x2) - yAxisWidth - xGridSize / 2); + + ctrl.timeSrv.setTime({ + from: moment.utc(timeFrom), + to: moment.utc(timeTo) + }); + } + + clearSelection(); + } + + function onMouseLeave() { + appEvents.emit('graph-hover-clear'); + clearCrosshair(); + } + + function onMouseMove(event) { + if (!heatmap) { + return; + } + + if (selection.active) { + // Clear crosshair and tooltip + clearCrosshair(); + tooltip.destroy(); + + selection.x2 = limitSelection(event.offsetX); + drawSelection(selection.x1, selection.x2); + } else { + emitGraphHoverEvet(event); + drawCrosshair(event.offsetX); + tooltip.show(event); //, data); + } + } + + function emitGraphHoverEvet(event) { + var x = xScale.invert(event.offsetX - yAxisWidth - xGridSize / 2).valueOf(); + var y = yScale(event.offsetY); + var pos = { + pageX: event.pageX, + pageY: event.pageY, + x: x, x1: x, + y: y, y1: y, + panelRelY: null + }; + + // Set minimum offset to prevent showing legend from another panel + pos.panelRelY = Math.max(event.offsetY / height, 0.001); + + // broadcast to other graph panels that we are hovering + appEvents.emit('graph-hover', { pos: pos, panel: panel }); + } + + function limitSelection(x2) { + x2 = Math.max(x2, yAxisWidth); + x2 = Math.min(x2, chartWidth + yAxisWidth); + return x2; + } + + function drawSelection(posX1, posX2) { + if (heatmap) { + heatmap.selectAll(".status-heatmap-selection").remove(); + var selectionX = Math.min(posX1, posX2); + var selectionWidth = Math.abs(posX1 - posX2); + + if (selectionWidth > MIN_SELECTION_WIDTH) { + heatmap.append("rect").attr("class", "status-heatmap-selection").attr("x", selectionX).attr("width", selectionWidth).attr("y", chartTop).attr("height", chartHeight); + } + } + } + + function clearSelection() { + selection.x1 = -1; + selection.x2 = -1; + + if (heatmap) { + heatmap.selectAll(".status-heatmap-selection").remove(); + } + } + + function drawCrosshair(position) { + if (heatmap) { + heatmap.selectAll(".status-heatmap-crosshair").remove(); + + var posX = position; + posX = Math.max(posX, yAxisWidth); + posX = Math.min(posX, chartWidth + yAxisWidth); + + heatmap.append("g").attr("class", "status-heatmap-crosshair").attr("transform", "translate(" + posX + ",0)").append("line").attr("x1", 1).attr("y1", chartTop).attr("x2", 1).attr("y2", chartBottom).attr("stroke-width", 1); + } + } + + // map time to X + function drawSharedCrosshair(pos) { + if (heatmap && ctrl.dashboard.graphTooltip !== 0) { + var posX = xScale(pos.x) + yAxisWidth; + drawCrosshair(posX); + } + } + + function clearCrosshair() { + if (heatmap) { + heatmap.selectAll(".status-heatmap-crosshair").remove(); + } + } + + function render() { + data = ctrl.data; + panel = ctrl.panel; + timeRange = ctrl.range; + cardsData = ctrl.cardsData; + + if (!data || !cardsData || !setElementHeight()) { + return; + } + + // Draw default axes and return if no data + if (_.isEmpty(cardsData.cards)) { + addHeatmapCanvas(); + return; + } + + addHeatmap(); + scope.yAxisWidth = yAxisWidth; + scope.xAxisHeight = xAxisHeight; + scope.chartHeight = chartHeight; + scope.chartWidth = chartWidth; + scope.chartTop = chartTop; + } + + // Register selection listeners + $heatmap.on("mousedown", onMouseDown); + $heatmap.on("mousemove", onMouseMove); + $heatmap.on("mouseleave", onMouseLeave); + } + + _export('default', link); + + function grafanaTimeFormat(ticks, min, max) { + if (min && max && ticks) { + var range = max - min; + var secPerTick = range / ticks / 1000; + var oneDay = 86400000; + var oneYear = 31536000000; + + if (secPerTick <= 45) { + return "%H:%M:%S"; + } + if (secPerTick <= 7200 || range <= oneDay) { + return "%H:%M"; + } + if (secPerTick <= 80000) { + return "%m/%d %H:%M"; + } + if (secPerTick <= 2419200 || range <= oneYear) { + return "%m/%d"; + } + return "%Y-%m"; + } + + return "%H:%M"; + } + return { + setters: [function (_lodash) { + _ = _lodash.default; + }, function (_jquery) { + $ = _jquery.default; + }, function (_moment) { + moment = _moment.default; + }, function (_appCoreUtilsKbn) { + kbn = _appCoreUtilsKbn.default; + }, function (_appCoreCore) { + appEvents = _appCoreCore.appEvents; + contextSrv = _appCoreCore.contextSrv; + }, function (_appCoreUtilsTicks) { + tickStep = _appCoreUtilsTicks.tickStep; + getScaledDecimals = _appCoreUtilsTicks.getScaledDecimals; + getFlotTickSize = _appCoreUtilsTicks.getFlotTickSize; + }, function (_d) { + d3 = _d.default; + }, function (_libsD3ScaleChromaticIndex) { + d3ScaleChromatic = _libsD3ScaleChromaticIndex; + }, function (_tooltip) { + StatusHeatmapTooltip = _tooltip.StatusHeatmapTooltip; + }], + execute: function () { + MIN_CARD_SIZE = 5; + CARD_SPACING = 2; + CARD_ROUND = 0; + DATA_RANGE_WIDING_FACTOR = 1.2; + DEFAULT_X_TICK_SIZE_PX = 100; + DEFAULT_Y_TICK_SIZE_PX = 50; + X_AXIS_TICK_PADDING = 10; + Y_AXIS_TICK_PADDING = 5; + MIN_SELECTION_WIDTH = 2; + } + }; +}); +//# sourceMappingURL=rendering.js.map diff --git a/dist/status_heatmap_ctrl.js b/dist/status_heatmap_ctrl.js new file mode 100644 index 0000000..b0c8953 --- /dev/null +++ b/dist/status_heatmap_ctrl.js @@ -0,0 +1,366 @@ +'use strict'; + +System.register(['app/plugins/sdk', 'lodash', 'app/core/core', 'app/core/utils/kbn', './rendering', './options_editor', './color_mode_discrete', './css/status-heatmap.css!'], function (_export, _context) { + "use strict"; + + var MetricsPanelCtrl, _, contextSrv, kbn, rendering, statusHeatmapOptionsEditor, ColorModeDiscrete, CANVAS, SVG, VALUE_INDEX, TIME_INDEX, panelDefaults, renderer, colorSchemes, colorModes, opacityScales, StatusHeatmapCtrl; + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + function _possibleConstructorReturn(self, call) { + if (!self) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return call && (typeof call === "object" || typeof call === "function") ? call : self; + } + + function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); + } + + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + enumerable: false, + writable: true, + configurable: true + } + }); + if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; + } + + return { + setters: [function (_appPluginsSdk) { + MetricsPanelCtrl = _appPluginsSdk.MetricsPanelCtrl; + }, function (_lodash) { + _ = _lodash.default; + }, function (_appCoreCore) { + contextSrv = _appCoreCore.contextSrv; + }, function (_appCoreUtilsKbn) { + kbn = _appCoreUtilsKbn.default; + }, function (_rendering) { + rendering = _rendering.default; + }, function (_options_editor) { + statusHeatmapOptionsEditor = _options_editor.statusHeatmapOptionsEditor; + }, function (_color_mode_discrete) { + ColorModeDiscrete = _color_mode_discrete.ColorModeDiscrete; + }, function (_cssStatusHeatmapCss) {}], + execute: function () { + CANVAS = 'CANVAS'; + SVG = 'SVG'; + VALUE_INDEX = 0; + TIME_INDEX = 1; + panelDefaults = { + // aggregate: aggregates.AVG, + // fragment: fragments.HOUR, + color: { + mode: 'spectrum', + cardColor: '#b4ff00', + colorScale: 'sqrt', + exponent: 0.5, + colorScheme: 'interpolateGnYlRd', + // discrete mode settings + defaultColor: '#757575', + thresholds: [] // manual colors + }, + cards: { + cardMinWidth: 5, + cardSpacing: 2, + cardRound: null + }, + xAxis: { + show: true, + showWeekends: true, + minBucketWidthToShowWeekends: 4, + showCrosshair: true, + labelFormat: '%a %m/%d' + }, + yAxis: { + show: true, + showCrosshair: false + }, + tooltip: { + show: true + }, + legend: { + show: true + }, + data: { + unitFormat: 'short', + decimals: null + }, + // how null points should be handled + nullPointMode: 'as empty', + highlightCards: true, + useMax: true + }; + renderer = CANVAS; + colorSchemes = [ + // Diverging + { name: 'Spectral', value: 'interpolateSpectral', invert: 'always' }, { name: 'RdYlGn', value: 'interpolateRdYlGn', invert: 'always' }, { name: 'GnYlRd', value: 'interpolateGnYlRd', invert: 'always' }, + + // Sequential (Single Hue) + { name: 'Blues', value: 'interpolateBlues', invert: 'dark' }, { name: 'Greens', value: 'interpolateGreens', invert: 'dark' }, { name: 'Greys', value: 'interpolateGreys', invert: 'dark' }, { name: 'Oranges', value: 'interpolateOranges', invert: 'dark' }, { name: 'Purples', value: 'interpolatePurples', invert: 'dark' }, { name: 'Reds', value: 'interpolateReds', invert: 'dark' }, + + // Sequential (Multi-Hue) + { name: 'BuGn', value: 'interpolateBuGn', invert: 'dark' }, { name: 'BuPu', value: 'interpolateBuPu', invert: 'dark' }, { name: 'GnBu', value: 'interpolateGnBu', invert: 'dark' }, { name: 'OrRd', value: 'interpolateOrRd', invert: 'dark' }, { name: 'PuBuGn', value: 'interpolatePuBuGn', invert: 'dark' }, { name: 'PuBu', value: 'interpolatePuBu', invert: 'dark' }, { name: 'PuRd', value: 'interpolatePuRd', invert: 'dark' }, { name: 'RdPu', value: 'interpolateRdPu', invert: 'dark' }, { name: 'YlGnBu', value: 'interpolateYlGnBu', invert: 'dark' }, { name: 'YlGn', value: 'interpolateYlGn', invert: 'dark' }, { name: 'YlOrBr', value: 'interpolateYlOrBr', invert: 'dark' }, { name: 'YlOrRd', value: 'interpolateYlOrRd', invert: 'darm' }]; + colorModes = ['opacity', 'spectrum', 'discrete']; + opacityScales = ['linear', 'sqrt']; + + _export('StatusHeatmapCtrl', StatusHeatmapCtrl = function (_MetricsPanelCtrl) { + _inherits(StatusHeatmapCtrl, _MetricsPanelCtrl); + + function StatusHeatmapCtrl($scope, $injector, $rootScope, timeSrv) { + _classCallCheck(this, StatusHeatmapCtrl); + + var _this = _possibleConstructorReturn(this, (StatusHeatmapCtrl.__proto__ || Object.getPrototypeOf(StatusHeatmapCtrl)).call(this, $scope, $injector)); + + _this.onRenderComplete = function (data) { + _this.graph.chartWidth = data.chartWidth; + }; + + _this.calculateInterval = function () { + var panelWidth = Math.ceil($(window).width() * (_this.panel.gridPos.w / 24)); + // approximate chartWidth because y axis ticks not rendered yet on first data receive. + var chartWidth = _.max([panelWidth - 200, panelWidth / 2]); + + var minCardWidth = _this.panel.cards.cardMinWidth; + var minSpacing = _this.panel.cards.cardSpacing; + var maxCardsCount = Math.ceil((chartWidth - minCardWidth) / (minCardWidth + minSpacing)); + + var intervalMs = void 0; + var rangeMs = _this.range.to.valueOf() - _this.range.from.valueOf(); + + // this is minimal interval! kbn.round_interval will lower it. + intervalMs = _this.discreteHelper.roundIntervalCeil(rangeMs / maxCardsCount); + + // Calculate low limit of interval + var lowLimitMs = 1; // 1 millisecond default low limit + var intervalOverride = _this.panel.interval; + + // if no panel interval check datasource + if (intervalOverride) { + intervalOverride = _this.templateSrv.replace(intervalOverride, _this.panel.scopedVars); + } else if (_this.datasource && _this.datasource.interval) { + intervalOverride = _this.datasource.interval; + } + + if (intervalOverride) { + if (intervalOverride[0] === '>') { + intervalOverride = intervalOverride.slice(1); + } + lowLimitMs = kbn.interval_to_ms(intervalOverride); + } + + if (lowLimitMs > intervalMs) { + intervalMs = lowLimitMs; + } + + _this.intervalMs = intervalMs; + _this.interval = kbn.secondsToHms(intervalMs / 1000); + }; + + _this.onDataReceived = function (dataList) { + _this.data = dataList; + _this.cardsData = _this.convertToCards(_this.data); + + _this.render(); + }; + + _this.onInitEditMode = function () { + _this.addEditorTab('Options', statusHeatmapOptionsEditor, 2); + _this.unitFormats = kbn.getUnitFormats(); + }; + + _this.onRender = function () { + if (!_this.data) { + return; + } + + _this.multipleValues = false; + if (!_this.panel.useMax) { + if (_this.cardsData) { + _this.multipleValues = _this.cardsData.multipleValues; + } + } + + _this.noColorDefined = false; + if (_this.panel.color.mode === 'discrete') { + _this.discreteHelper.updateCardsValuesHasColorInfo(); + if (_this.cardsData) { + _this.noColorDefined = _this.cardsData.noColorDefined; + } + } + }; + + _this.onCardColorChange = function (newColor) { + _this.panel.color.cardColor = newColor; + _this.render(); + }; + + _this.onDataError = function () { + _this.data = []; + _this.render(); + }; + + _this.postRefresh = function () { + _this.noColorDefined = false; + }; + + _this.onEditorAddThreshold = function () { + _this.panel.color.thresholds.push({ color: _this.panel.defaultColor }); + _this.render(); + }; + + _this.onEditorRemoveThreshold = function (index) { + _this.panel.color.thresholds.splice(index, 1); + _this.render(); + }; + + _this.onEditorAddThreeLights = function () { + _this.panel.color.thresholds.push({ color: "red", value: 2, tooltip: "error" }); + _this.panel.color.thresholds.push({ color: "yellow", value: 1, tooltip: "warning" }); + _this.panel.color.thresholds.push({ color: "green", value: 0, tooltip: "ok" }); + _this.render(); + }; + + _this.link = function (scope, elem, attrs, ctrl) { + rendering(scope, elem, attrs, ctrl); + }; + + _this.convertToCards = function (data) { + var cardsData = { + cards: [], + xBucketSize: 0, + yBucketSize: 0, + maxValue: 0, + minValue: 0, + multipleValues: false, + noColorDefined: false + }; + + if (!data || data.length == 0) { + return cardsData; + } + + // collect uniq targets and their indexes in data array + cardsData.targetIndex = {}; + for (var i = 0; i < data.length; i++) { + var ts = data[i]; + var target = ts.target; + if (cardsData.targetIndex[target] == undefined) { + cardsData.targetIndex[target] = []; + } + cardsData.targetIndex[target].push(i); + } + + // TODO add some logic for targets heirarchy + cardsData.targets = _.keys(cardsData.targetIndex); + cardsData.targets.sort(); + cardsData.yBucketSize = cardsData.targets.length; + cardsData.xBucketSize = _.min(_.map(data, function (d) { + return d.datapoints.length; + })); + + // Collect all values for each bucket from datapoints with similar target. + for (var _i = 0; _i < cardsData.targets.length; _i++) { + var _target = cardsData.targets[_i]; + + for (var j = 0; j < cardsData.xBucketSize; j++) { + var card = { + id: _i * cardsData.xBucketSize + j, + values: [], + multipleValues: false, + noColorDefined: false + }; + + // collect values from all timeseries with target + for (var si = 0; si < cardsData.targetIndex[_target].length; si++) { + var s = data[cardsData.targetIndex[_target][si]]; + var datapoint = s.datapoints[j]; + if (card.values.length === 0) { + card.x = datapoint[TIME_INDEX]; + card.y = s.target; + } + card.values.push(datapoint[VALUE_INDEX]); + } + card.minValue = _.min(card.values); + card.maxValue = _.max(card.values); + if (card.values.length > 1) { + cardsData.multipleValues = true; + card.multipleValues = true; + card.value = card.maxValue; // max value by default + } else { + card.value = card.maxValue; // max value by default + } + + if (cardsData.maxValue < card.maxValue) cardsData.maxValue = card.maxValue; + + if (cardsData.minValue > card.minValue) cardsData.minValue = card.minValue; + + cardsData.cards.push(card); + } + } + + return cardsData; + }; + + _.defaultsDeep(_this.panel, panelDefaults); + + _this.opacityScales = opacityScales; + _this.colorModes = colorModes; + _this.colorSchemes = colorSchemes; + + // default graph width for discrete card width calculation + _this.graph = { + "chartWidth": -1 + }; + + _this.multipleValues = false; + _this.noColorDefined = false; + + _this.discreteHelper = new ColorModeDiscrete($scope); + + _this.dataWarnings = { + "noColorDefined": { + title: 'Data has value with undefined color', + tip: 'Check metric values, color values or define a new color' + }, + "multipleValues": { + title: 'Data has multiple values for one target', + tip: 'Change targets definitions or set "use max value"' + } + }; + + _this.events.on('data-received', _this.onDataReceived); + _this.events.on('data-snapshot-load', _this.onDataReceived); + _this.events.on('data-error', _this.onDataError); + _this.events.on('init-edit-mode', _this.onInitEditMode); + _this.events.on('render', _this.onRender); + _this.events.on('refresh', _this.postRefresh); + _this.events.on('render-complete', _this.onRenderComplete); + return _this; + } + + // override calculateInterval for discrete color mode + + + // group values into buckets by target + + + return StatusHeatmapCtrl; + }(MetricsPanelCtrl)); + + _export('StatusHeatmapCtrl', StatusHeatmapCtrl); + + StatusHeatmapCtrl.templateUrl = 'module.html'; + } + }; +}); +//# sourceMappingURL=status_heatmap_ctrl.js.map diff --git a/dist/tooltip.js b/dist/tooltip.js new file mode 100644 index 0000000..15e5633 --- /dev/null +++ b/dist/tooltip.js @@ -0,0 +1,206 @@ +'use strict'; + +System.register(['d3', 'jquery', 'lodash', 'app/core/utils/kbn'], function (_export, _context) { + "use strict"; + + var d3, $, _, kbn, _createClass, TOOLTIP_PADDING_X, TOOLTIP_PADDING_Y, StatusHeatmapTooltip; + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + return { + setters: [function (_d) { + d3 = _d.default; + }, function (_jquery) { + $ = _jquery.default; + }, function (_lodash) { + _ = _lodash.default; + }, function (_appCoreUtilsKbn) { + kbn = _appCoreUtilsKbn.default; + }], + execute: function () { + _createClass = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; + }(); + + TOOLTIP_PADDING_X = 30; + TOOLTIP_PADDING_Y = 5; + + _export('StatusHeatmapTooltip', StatusHeatmapTooltip = function () { + function StatusHeatmapTooltip(elem, scope) { + _classCallCheck(this, StatusHeatmapTooltip); + + this.scope = scope; + this.dashboard = scope.ctrl.dashboard; + this.panelCtrl = scope.ctrl; + this.panel = scope.ctrl.panel; + this.heatmapPanel = elem; + this.mouseOverBucket = false; + this.originalFillColor = null; + + elem.on("mouseover", this.onMouseOver.bind(this)); + elem.on("mouseleave", this.onMouseLeave.bind(this)); + } + + _createClass(StatusHeatmapTooltip, [{ + key: 'onMouseOver', + value: function onMouseOver(e) { + if (!this.panel.tooltip.show || !this.scope.ctrl.data || _.isEmpty(this.scope.ctrl.data)) { + return; + } + + if (!this.tooltip) { + this.add(); + this.move(e); + } + } + }, { + key: 'onMouseLeave', + value: function onMouseLeave() { + this.destroy(); + } + }, { + key: 'onMouseMove', + value: function onMouseMove(e) { + if (!this.panel.tooltip.show) { + return; + } + + this.move(e); + } + }, { + key: 'add', + value: function add() { + this.tooltip = d3.select("body").append("div").attr("class", "heatmap-tooltip graph-tooltip grafana-tooltip"); + } + }, { + key: 'destroy', + value: function destroy() { + if (this.tooltip) { + this.tooltip.remove(); + } + + this.tooltip = null; + } + }, { + key: 'show', + value: function show(pos) { + if (!this.panel.tooltip.show || !this.tooltip) { + return; + } + // shared tooltip mode + if (pos.panelRelY) { + return; + } + var cardId = d3.select(pos.target).attr('cardId'); + if (!cardId) { + this.destroy(); + return; + } + + var card = this.panelCtrl.cardsData.cards[cardId]; + if (!card) { + this.destroy(); + return; + } + + var x = card.x; + var y = card.y; + var value = card.value; + var values = card.values; + var tooltipTimeFormat = 'YYYY-MM-DD HH:mm:ss'; + var time = this.dashboard.formatDate(+x, tooltipTimeFormat); + + var tooltipHtml = '
' + time + '
\n
'; + + if (this.panel.color.mode === 'discrete') { + var statuses = this.panelCtrl.discreteHelper.convertValuesToTooltips(values); + var statusesHtml = ''; + if (statuses.length === 1) { + statusesHtml = "status:"; + } else if (statuses.length > 1) { + statusesHtml = "statuses:"; + } + tooltipHtml += '\n
\n name: ' + y + '
\n ' + statusesHtml + '\n
    \n ' + _.join(_.map(statuses, function (v) { + return '
  • ' + v.tooltip + '
  • '; + }), "") + '\n
\n
'; + } else { + if (values.length === 1) { + tooltipHtml += '
\n name: ' + y + '
\n value: ' + value + '
\n
'; + } else { + tooltipHtml += '
\n name: ' + y + '
\n values:\n
    \n ' + _.join(_.map(values, function (v) { + return '
  • ' + v + '
  • '; + }), "") + '\n
\n
'; + } + } + + // "Ambiguous bucket state: Multiple values!"; + if (!this.panel.useMax && card.multipleValues) { + tooltipHtml += '
Error: ' + this.panelCtrl.dataWarnings.multipleValues.title + '
'; + } + + // Discrete mode errors + if (this.panel.color.mode === 'discrete') { + if (card.noColorDefined) { + var badValues = this.panelCtrl.discreteHelper.getNotColoredValues(values); + tooltipHtml += '
Error: ' + this.panelCtrl.dataWarnings.noColorDefined.title + '\n
not colored values:\n
    \n ' + _.join(_.map(badValues, function (v) { + return '
  • ' + v + '
  • '; + }), "") + '\n
\n
'; + } + } + + this.tooltip.html(tooltipHtml); + + this.move(pos); + } + }, { + key: 'move', + value: function move(pos) { + if (!this.tooltip) { + return; + } + + var elem = $(this.tooltip.node())[0]; + var tooltipWidth = elem.clientWidth; + var tooltipHeight = elem.clientHeight; + + var left = pos.pageX + TOOLTIP_PADDING_X; + var top = pos.pageY + TOOLTIP_PADDING_Y; + + if (pos.pageX + tooltipWidth + 40 > window.innerWidth) { + left = pos.pageX - tooltipWidth - TOOLTIP_PADDING_X; + } + + if (pos.pageY - window.pageYOffset + tooltipHeight + 20 > window.innerHeight) { + top = pos.pageY - tooltipHeight - TOOLTIP_PADDING_Y; + } + + return this.tooltip.style("left", left + "px").style("top", top + "px"); + } + }]); + + return StatusHeatmapTooltip; + }()); + + _export('StatusHeatmapTooltip', StatusHeatmapTooltip); + } + }; +}); +//# sourceMappingURL=tooltip.js.map