@carbon/charts 0.11.11 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@carbon/charts",
3
- "version": "0.11.10",
3
+ "version": "0.12.0",
4
4
  "description": "Carbon charting components",
5
5
  "scripts": {
6
6
  "demo:server": "webpack-dev-server --config webpack.config.js --watch",
@@ -23,12 +23,13 @@
23
23
  "author": "IBM",
24
24
  "license": "Apache-2.0",
25
25
  "dependencies": {
26
+ "@carbon/colors": "10.1.1",
27
+ "@carbon/utils-position": "1.1.0",
26
28
  "babel-polyfill": "6.26.0",
27
- "d3": "4.13.0",
28
29
  "resize-observer-polyfill": "1.5.0"
29
30
  },
30
31
  "peerDependencies": {
31
- "d3": ">=4.11.0 <=5.7.0"
32
+ "d3": ">=5.0.0 <=5.9.2"
32
33
  },
33
34
  "devDependencies": {
34
35
  "@types/d3": "4.11.0",
@@ -37,7 +38,7 @@
37
38
  "babel-polyfill": "6.26.0",
38
39
  "copy-webpack-plugin": "4.5.2",
39
40
  "css-loader": "0.28.7",
40
- "d3": "4.11.0",
41
+ "d3": "5.9.2",
41
42
  "extract-text-webpack-plugin": "3.0.2",
42
43
  "file-loader": "1.1.5",
43
44
  "html-loader": "0.5.1",
@@ -48,7 +49,7 @@
48
49
  "karma-jasmine": "1.1.0",
49
50
  "karma-sourcemap-loader": "0.3.7",
50
51
  "karma-webpack": "2.0.5",
51
- "lerna": "3.0.0-rc.0",
52
+ "lerna": "3.13.4",
52
53
  "mini-css-extract-plugin": "0.4.4",
53
54
  "node-sass": "4.10.0",
54
55
  "postcss-loader": "2.0.8",
@@ -61,11 +62,10 @@
61
62
  "typedoc": "0.11.1",
62
63
  "typescript": "2.7.2",
63
64
  "url-loader": "0.6.2",
64
- "webpack": "4.18.0",
65
+ "webpack": "4.33.0",
65
66
  "webpack-bundle-analyzer": "2.13.1",
66
- "webpack-cli": "3.1.0",
67
- "webpack-dev-server": "3.1.14",
68
- "webpack-node-externals": "1.6.0"
67
+ "webpack-cli": "3.3.2",
68
+ "webpack-dev-server": "3.7.0"
69
69
  },
70
70
  "publishConfig": {
71
71
  "access": "public"
package/pie-chart.d.ts CHANGED
@@ -25,7 +25,7 @@ export declare class PieChart extends BaseChart {
25
25
  draw(): void;
26
26
  interpolateValues(newData: any): void;
27
27
  reduceOpacity(exception?: any): void;
28
- showTooltip(d: any): void;
28
+ getTooltipHTML: (d: any) => string;
29
29
  addDataPointEventListener(): void;
30
30
  update(newData?: any): void;
31
31
  resizeChart(): void;
package/pie-chart.js CHANGED
@@ -9,7 +9,7 @@ var __extends = (this && this.__extends) || (function () {
9
9
  };
10
10
  })();
11
11
  // D3 Imports
12
- import { select, selectAll, mouse } from "d3-selection";
12
+ import { select } from "d3-selection";
13
13
  import { scaleOrdinal } from "d3-scale";
14
14
  import { pie, arc } from "d3-shape";
15
15
  import { interpolate } from "d3-interpolate";
@@ -22,6 +22,7 @@ var PieChart = /** @class */ (function (_super) {
22
22
  function PieChart(holder, configs, type) {
23
23
  if (type === void 0) { type = ChartType.PIE; }
24
24
  var _this = _super.call(this, holder, configs) || this;
25
+ _this.getTooltipHTML = function (d) { return _this.generateTooltipHTML(d.data.label, d.value.toLocaleString()); };
25
26
  _this.options.type = type;
26
27
  // Assign colors to each slice using their label
27
28
  _this.colorScale = scaleOrdinal(_this.options.colors);
@@ -31,6 +32,9 @@ var PieChart = /** @class */ (function (_super) {
31
32
  // Cap number of slices at a specific number, and group the remaining items into the label "Other"
32
33
  PieChart.prototype.dataProcessor = function (dataObject) {
33
34
  // TODO - Support multiple datasets
35
+ if (dataObject.datasets.length > 1) {
36
+ console.warn("Currently the Pie & Donut charts support a single dataset,\n\t\t\t\tyou appear to have more than that. Will only use your first provided dataset.");
37
+ }
34
38
  // Check for duplicate keys in the data
35
39
  var duplicates = Tools.getDuplicateValues(dataObject.labels);
36
40
  if (duplicates.length > 0) {
@@ -103,11 +107,12 @@ var PieChart = /** @class */ (function (_super) {
103
107
  // Compute the correct inner & outer radius
104
108
  var marginedRadius = this.computeRadius();
105
109
  this.arc = arc()
106
- .innerRadius(this.options.type === "donut" ? (marginedRadius * (2 / 3)) : 0)
110
+ .innerRadius(this.options.type === "donut" ? (marginedRadius * (3 / 4)) : 2)
107
111
  .outerRadius(marginedRadius);
108
112
  this.pie = pie()
109
113
  .value(function (d) { return d.value; })
110
- .sort(null);
114
+ .sort(null)
115
+ .padAngle(0.007);
111
116
  // Draw the slices
112
117
  this.path = this.innerWrap.selectAll("path")
113
118
  .data(this.pie(dataList))
@@ -132,7 +137,7 @@ var PieChart = /** @class */ (function (_super) {
132
137
  .text(function (d) { return Tools.convertValueToPercentage(d.data.value, dataList); })
133
138
  .attr("transform", function (d) { return self.deriveTransformString(this, d, radius); });
134
139
  // Hide overlay
135
- this.updateOverlay().hide();
140
+ this.chartOverlay.hide();
136
141
  };
137
142
  // Interpolated transitions for older data points to reflect the new data changes
138
143
  PieChart.prototype.interpolateValues = function (newData) {
@@ -221,7 +226,7 @@ var PieChart = /** @class */ (function (_super) {
221
226
  this.addDataPointEventListener();
222
227
  this.reduceOpacity();
223
228
  // Hide the overlay
224
- this.updateOverlay().hide();
229
+ this.chartOverlay.hide();
225
230
  };
226
231
  // TODO - Possible inherits from base-chart
227
232
  PieChart.prototype.reduceOpacity = function (exception) {
@@ -234,52 +239,22 @@ var PieChart = /** @class */ (function (_super) {
234
239
  select(exception).attr("fill", function (d) { return _this.getFillColor(_this.displayData.datasets[0].label, d.data.label, d.data.value); });
235
240
  }
236
241
  };
237
- // TODO - Should inherit most logic from base-chart
238
- PieChart.prototype.showTooltip = function (d) {
239
- this.resetOpacity();
240
- selectAll(".tooltip").remove();
241
- var tooltip = select(this.holder).append("div")
242
- .attr("class", "tooltip chart-tooltip")
243
- .style("top", mouse(this.holder)[1] - Configuration.tooltip.magicTop2 + "px");
244
- var dVal = d.value.toLocaleString();
245
- var tooltipHTML = this.generateTooltipHTML(d.data.label, dVal);
246
- tooltip.append("div").attr("class", "text-box").html(tooltipHTML);
247
- if (mouse(this.holder)[0] + tooltip.node().clientWidth > this.holder.clientWidth) {
248
- tooltip.style("left", mouse(this.holder)[0] - tooltip.node().clientWidth - Configuration.tooltip.magicLeft1 + "px");
249
- }
250
- else {
251
- tooltip.style("left", mouse(this.holder)[0] + Configuration.tooltip.magicLeft2 + "px");
252
- }
253
- tooltip.style("opacity", 0)
254
- .transition()
255
- .duration(Configuration.tooltip.fadeIn.duration)
256
- .style("opacity", 1);
257
- this.addTooltipEventListeners(tooltip);
258
- };
259
242
  // TODO - Refactor
260
243
  PieChart.prototype.addDataPointEventListener = function () {
261
244
  var self = this;
262
245
  var accessibility = this.options.accessibility;
263
246
  this.innerWrap.selectAll("path")
264
- .on("click", function (d) {
265
- self.dispatchEvent("pie-slice-onClick", d);
266
- })
247
+ .on("click", function (d) { return self.dispatchEvent("pie-slice-onClick", d); })
267
248
  .on("mouseover", function (d) {
268
249
  var sliceElement = select(this);
269
250
  Tools.moveToFront(sliceElement);
270
- sliceElement
271
- .attr("stroke-width", Configuration.pie.mouseover.strokeWidth)
251
+ sliceElement.attr("stroke-width", Configuration.pie.mouseover.strokeWidth)
272
252
  .attr("stroke-opacity", Configuration.pie.mouseover.strokeOpacity)
273
253
  .attr("stroke", self.getStrokeColor(self.displayData.datasets[0].label, d.data.label, d.data.value));
274
254
  self.showTooltip(d);
275
255
  self.reduceOpacity(this);
276
256
  })
277
- .on("mousemove", function (d) {
278
- var tooltipRef = select(self.holder).select("div.chart-tooltip");
279
- var relativeMousePosition = mouse(self.holder);
280
- tooltipRef.style("left", relativeMousePosition[0] + Configuration.tooltip.magicLeft2 + "px")
281
- .style("top", relativeMousePosition[1] + "px");
282
- })
257
+ .on("mousemove", function (d) { return self.tooltip.positionTooltip(); })
283
258
  .on("mouseout", function (d) {
284
259
  select(this)
285
260
  .attr("stroke-width", accessibility ? Configuration.pie.default.strokeWidth : Configuration.pie.mouseout.strokeWidth)
@@ -291,6 +266,7 @@ var PieChart = /** @class */ (function (_super) {
291
266
  PieChart.prototype.update = function (newData) {
292
267
  var oldData = Tools.clone(this.displayData);
293
268
  var activeLegendItems = this.getActiveLegendItems();
269
+ // TODO - Support multiple datasets
294
270
  var newDisplayData = Object.assign({}, oldData);
295
271
  newDisplayData.datasets[0].data = oldData.datasets[0].data.filter(function (dataPoint) { return activeLegendItems.indexOf(dataPoint.label) !== -1; });
296
272
  newDisplayData.labels = newDisplayData.datasets[0].data.map(function (datum) { return datum.label; });
@@ -308,7 +284,7 @@ var PieChart = /** @class */ (function (_super) {
308
284
  .style("transform", "translate(" + radius + "px," + radius + "px)");
309
285
  // Resize the arc
310
286
  this.arc = arc()
311
- .innerRadius(this.options.type === "donut" ? (radius * (2 / 3)) : 0)
287
+ .innerRadius(this.options.type === "donut" ? (radius * (3 / 4)) : 2)
312
288
  .outerRadius(radius);
313
289
  this.innerWrap.selectAll("path")
314
290
  .attr("d", this.arc);
package/pie-chart.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pie-chart.js","sourceRoot":"","sources":["src/pie-chart.ts"],"names":[],"mappings":"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","sourcesContent":["// D3 Imports\nimport { select, selectAll, mouse } from \"d3-selection\";\nimport { scaleOrdinal } from \"d3-scale\";\nimport { pie, arc, Pie, Arc } from \"d3-shape\";\nimport { interpolate } from \"d3-interpolate\";\n\nimport { BaseChart } from \"./base-chart\";\nimport * as Configuration from \"./configuration\";\nimport { ChartConfig, PieChartOptions, ChartType, ChartData } from \"./configuration\";\nimport { Tools } from \"./tools\";\n\nexport interface PieDatum {\n\tlabel: string;\n\tvalue: number;\n\titems?: Array<PieDatum>;\n}\n\nexport interface PieDataSet extends Configuration.DataSet {\n\tdata: Array<PieDatum>;\n}\n\nexport interface PieData {\n\tlabels: Array<string>;\n\tdatasets: Array<PieDataSet>;\n}\n\nexport class PieChart extends BaseChart {\n\tpie: Pie<PieChart, any>;\n\tarc: Arc<PieChart, any>;\n\tpath: any;\n\n\toptions: PieChartOptions;\n\n\tconstructor(holder: Element, configs: ChartConfig<PieChartOptions>, type: ChartType.PIE | ChartType.DONUT = ChartType.PIE) {\n\t\tsuper(holder, configs);\n\n\t\tthis.options.type = type;\n\n\t\t// Assign colors to each slice using their label\n\t\tthis.colorScale = scaleOrdinal(this.options.colors);\n\t}\n\n\t// Sort data by value (descending)\n\t// Cap number of slices at a specific number, and group the remaining items into the label \"Other\"\n\tdataProcessor(dataObject: ChartData): PieData {\n\t\t// TODO - Support multiple datasets\n\t\t// Check for duplicate keys in the data\n\t\tconst duplicates = Tools.getDuplicateValues(dataObject.labels);\n\t\tif (duplicates.length > 0) {\n\t\t\tconsole.error(`${Tools.capitalizeFirstLetter(this.options.type)} Chart - You have duplicate keys`, duplicates);\n\t\t}\n\n\t\t// TODO - Support multiple datasets\n\t\t// let sortedData = data.datasets[0];\n\t\tconst dataList: Array<any> = dataObject.datasets[0].data.map((datum, i) => ({\n\t\t\tlabel: dataObject.labels[i],\n\t\t\tvalue: datum,\n\t\t\t// datasetLabel: data.datasets[0].label\n\t\t}));\n\n\t\t// Sort data by value\n\t\tlet sortedData = dataList.sort((a, b) => b.value - a.value);\n\n\t\t// Keep a certain number of slices, and add an \"Other\" slice for the rest\n\t\tconst { sliceLimit: stopAt } = Configuration.pie;\n\t\tconst rest = sortedData.slice(stopAt);\n\t\tconst restAccumulatedValue = rest.reduce((accum, item) => accum + item.value, 0);\n\n\t\tconst otherLabelIndex = sortedData.findIndex(dataPoint => dataPoint.label === \"Other\");\n\t\tif (otherLabelIndex !== -1) {\n\t\t\tsortedData.push(sortedData.splice(otherLabelIndex, 1)[0]);\n\t\t} else if (rest.length > 0) {\n\t\t\tsortedData = sortedData.slice(0, stopAt)\n\t\t\t\t.concat([{\n\t\t\t\t\tlabel: Configuration.pie.label.other,\n\t\t\t\t\tvalue: restAccumulatedValue,\n\t\t\t\t\titems: rest\n\t\t\t\t}]);\n\t\t}\n\n\t\treturn {\n\t\t\t// Sort labels based on the order made above\n\t\t\tlabels: sortedData.map((datum, i) => datum.label),\n\t\t\tdatasets: [\n\t\t\t\t{\n\t\t\t\t\t// copy all the relevant properties\n\t\t\t\t\tbackgroundColors: dataObject.datasets[0].backgroundColors,\n\t\t\t\t\tchartType: dataObject.datasets[0].chartType,\n\t\t\t\t\tlabel: dataObject.datasets[0].label,\n\t\t\t\t\t// add our sorted data\n\t\t\t\t\tdata: sortedData\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\n\t}\n\n\t// If there isn't a chart already drawn in the container\n\t// This function is called and will do that\n\tinitialDraw() {\n\t\tthis.setSVG();\n\n\t\t// Add legend\n\t\tthis.addOrUpdateLegend();\n\n\t\t// Draw slices & labels\n\t\tthis.draw();\n\n\t\t// Add event listeners to slices\n\t\tthis.addDataPointEventListener();\n\t}\n\n\tdraw() {\n\t\tconst dataList = this.displayData.datasets[0].data;\n\n\t\tconst chartSize = this.getChartSize(this.container);\n\t\tconst diameter = Math.min(chartSize.width, chartSize.height);\n\t\tconst radius: number = diameter / 2;\n\n\t\tselect(this.holder).select(\"svg\")\n\t\t\t.attr(\"width\", `${diameter}px`)\n\t\t\t.attr(\"height\", `${diameter}px`);\n\n\t\tthis.innerWrap\n\t\t\t.style(\"transform\", `translate(${radius}px,${radius}px)`)\n\t\t\t.attr(\"width\", `${diameter}px`)\n\t\t\t.attr(\"height\", `${diameter}px`)\n\t\t\t.attr(\"preserveAspectRatio\", \"xMinYMin\");\n\n\t\t// Compute the correct inner & outer radius\n\t\tconst marginedRadius = this.computeRadius();\n\t\tthis.arc = arc()\n\t\t\t\t.innerRadius(this.options.type === \"donut\" ? (marginedRadius * (2 / 3)) : 0)\n\t\t\t\t.outerRadius(marginedRadius);\n\n\t\tthis.pie = pie()\n\t\t\t.value((d: any) => d.value)\n\t\t\t.sort(null);\n\n\t\t// Draw the slices\n\t\tthis.path = this.innerWrap.selectAll(\"path\")\n\t\t\t.data(this.pie(dataList))\n\t\t\t.enter()\n\t\t\t.append(\"path\")\n\t\t\t.attr(\"d\", this.arc)\n\t\t\t.attr(\"fill\", d => this.getFillColor(this.displayData.datasets[0].label, d.data.label, d.data.value)) // Support multiple datasets\n\t\t\t.attr(\"stroke\", d => this.getStrokeColor(this.displayData.datasets[0].label, d.data.label, d.data.value))\n\t\t\t.attr(\"stroke-width\", Configuration.pie.default.strokeWidth)\n\t\t\t.attr(\"stroke-opacity\", d => this.options.accessibility ? 1 : 0)\n\t\t\t.each(function(d) { this._current = d; });\n\n\t\t// Draw the slice labels\n\t\tconst self = this;\n\t\tthis.innerWrap\n\t\t\t.selectAll(\"text.chart-label\")\n\t\t\t.data(this.pie(dataList), (d: any) => d.data.label)\n\t\t\t.enter()\n\t\t\t.append(\"text\")\n\t\t\t.classed(\"chart-label\", true)\n\t\t\t.attr(\"dy\", Configuration.pie.label.dy)\n\t\t\t.style(\"text-anchor\", \"middle\")\n\t\t\t.text(d => Tools.convertValueToPercentage(d.data.value, dataList))\n\t\t\t.attr(\"transform\", function (d) { return self.deriveTransformString(this, d, radius); });\n\n\t\t// Hide overlay\n\t\tthis.updateOverlay().hide();\n\t}\n\n\t// Interpolated transitions for older data points to reflect the new data changes\n\tinterpolateValues(newData: any) {\n\t\tconst dataList = newData.datasets[0].data;\n\n\t\t// Apply the new data to the slices, and interpolate them\n\t\tconst self = this;\n\t\tconst path = this.innerWrap.selectAll(\"path\").data(this.pie(dataList));\n\n\t\t// Update slices\n\t\tpath\n\t\t\t.transition()\n\t\t\t.duration(0)\n\t\t\t.attr(\"stroke\", d => this.getStrokeColor(this.displayData.datasets[0].label, d.data.label, d.data.value))\n\t\t\t.attr(\"stroke-width\", Configuration.pie.default.strokeWidth)\n\t\t\t.attr(\"stroke-opacity\", d => this.options.accessibility ? 1 : 0)\n\t\t\t.transition()\n\t\t\t.style(\"opacity\", 1)\n\t\t\t.duration(Configuration.transitions.default.duration)\n\t\t\t.attr(\"fill\", d => this.getFillColor(this.displayData.datasets[0].label, d.data.label, d.data.value))\n\t\t\t.attrTween(\"d\", function (a) {\n\t\t\t\treturn arcTween.bind(this)(a, self.arc);\n\t\t\t});\n\n\t\tpath.enter()\n\t\t\t.append(\"path\")\n\t\t\t.attr(\"d\", this.arc)\n\t\t\t.transition()\n\t\t\t.duration(0)\n\t\t\t.style(\"opacity\", 0)\n\t\t\t.attr(\"stroke\", d => this.getStrokeColor(this.displayData.datasets[0].label, d.data.label, d.data.value))\n\t\t\t.attr(\"stroke-width\", Configuration.pie.default.strokeWidth)\n\t\t\t.attr(\"stroke-opacity\", d => this.options.accessibility ? 1 : 0)\n\t\t\t.transition()\n\t\t\t.duration(Configuration.transitions.default.duration)\n\t\t\t.attr(\"fill\", d => this.getFillColor(this.displayData.datasets[0].label, d.data.label, d.data.value))\n\t\t\t.style(\"opacity\", 1)\n\t\t\t.attrTween(\"d\", function (a) {\n\t\t\t\treturn arcTween.bind(this)(a, self.arc);\n\t\t\t});\n\n\t\tpath\n\t\t\t.exit()\n\t\t\t.attr(\"d\", this.arc)\n\t\t\t.transition()\n\t\t\t.duration(Configuration.transitions.default.duration)\n\t\t\t.style(\"opacity\", 0)\n\t\t\t.remove();\n\n\t\t// Fade out all text labels\n\t\tthis.innerWrap.selectAll(\"text.chart-label\")\n\t\t\t.transition()\n\t\t\t.duration(Configuration.transitions.default.duration / 2)\n\t\t\t.style(\"opacity\", 0)\n\t\t\t.on(\"end\", function(d) {\n\t\t\t\tselect(this)\n\t\t\t\t\t.transition()\n\t\t\t\t\t.duration(Configuration.transitions.default.duration / 2)\n\t\t\t\t\t.style(\"opacity\", 1);\n\t\t\t});\n\n\t\t// Move text labels to their new location, and fade them in again\n\t\tconst radius = this.computeRadius();\n\t\tsetTimeout(() => {\n\t\t\tconst text = this.innerWrap.selectAll(\"text.chart-label\")\n\t\t\t\t.data(this.pie(dataList), d => d.label );\n\n\t\t\ttext\n\t\t\t\t.enter()\n\t\t\t\t.append(\"text\")\n\t\t\t\t.classed(\"chart-label\", true)\n\t\t\t\t.attr(\"dy\", Configuration.pie.label.dy)\n\t\t\t\t.style(\"text-anchor\", \"middle\")\n\t\t\t\t.text(d => Tools.convertValueToPercentage(d.data.value, dataList))\n\t\t\t\t.attr(\"transform\", function (d) { return self.deriveTransformString(this, d, radius); })\n\t\t\t\t.style(\"opacity\", 0)\n\t\t\t\t.transition()\n\t\t\t\t.duration(Configuration.transitions.default.duration / 2)\n\t\t\t\t.style(\"opacity\", 1);\n\n\t\t\ttext\n\t\t\t\t.style(\"text-anchor\", \"middle\")\n\t\t\t\t.text(d => Tools.convertValueToPercentage(d.data.value, dataList))\n\t\t\t\t.attr(\"transform\", function (d) { return self.deriveTransformString(this, d, radius); })\n\t\t\t\t.transition()\n\t\t\t\t.duration(Configuration.transitions.default.duration / 2)\n\t\t\t\t.style(\"opacity\", 1);\n\n\t\t\ttext\n\t\t\t\t.exit()\n\t\t\t\t.remove();\n\t\t}, Configuration.transitions.default.duration / 2);\n\n\t\t// Add slice hover actions, and clear any slice borders present\n\t\tthis.addDataPointEventListener();\n\t\tthis.reduceOpacity();\n\n\t\t// Hide the overlay\n\t\tthis.updateOverlay().hide();\n\t}\n\n\t// TODO - Possible inherits from base-chart\n\treduceOpacity(exception?: any) {\n\t\tif (exception) {\n\t\t\t// this.innerWrap.selectAll(\"path\").attr(\"fill-opacity\", Configuration.charts.reduceOpacity.opacity);\n\n\t\t\t// Fade everything out except for this element\n\t\t\tselect(exception).attr(\"fill-opacity\", false);\n\t\t\tselect(exception).attr(\"stroke-opacity\", Configuration.charts.reduceOpacity.opacity);\n\t\t\tselect(exception).attr(\"fill\", (d: any) => this.getFillColor(this.displayData.datasets[0].label, d.data.label, d.data.value));\n\t\t}\n\t}\n\n\t// TODO - Should inherit most logic from base-chart\n\tshowTooltip(d) {\n\t\tthis.resetOpacity();\n\n\t\tselectAll(\".tooltip\").remove();\n\t\tconst tooltip = select(this.holder).append(\"div\")\n\t\t\t.attr(\"class\", \"tooltip chart-tooltip\")\n\t\t\t.style(\"top\", mouse(this.holder as SVGSVGElement)[1] - Configuration.tooltip.magicTop2 + \"px\");\n\n\t\tconst dVal = d.value.toLocaleString();\n\t\tconst tooltipHTML = this.generateTooltipHTML(d.data.label, dVal);\n\n\t\ttooltip.append(\"div\").attr(\"class\", \"text-box\").html(tooltipHTML);\n\t\tif (mouse(this.holder as SVGSVGElement)[0] + (tooltip.node() as Element).clientWidth > this.holder.clientWidth) {\n\t\t\ttooltip.style(\n\t\t\t\t\"left\",\n\t\t\t\tmouse(this.holder as SVGSVGElement)[0] - (tooltip.node() as Element).clientWidth - Configuration.tooltip.magicLeft1 + \"px\"\n\t\t\t);\n\t\t} else {\n\t\t\ttooltip.style(\"left\", mouse(this.holder as SVGSVGElement)[0] + Configuration.tooltip.magicLeft2 + \"px\");\n\t\t}\n\n\t\ttooltip.style(\"opacity\", 0)\n\t\t\t.transition()\n\t\t\t.duration(Configuration.tooltip.fadeIn.duration)\n\t\t\t.style(\"opacity\", 1);\n\n\t\tthis.addTooltipEventListeners(tooltip);\n\t}\n\n\t// TODO - Refactor\n\taddDataPointEventListener() {\n\t\tconst self = this;\n\t\tconst { accessibility } = this.options;\n\n\t\tthis.innerWrap.selectAll(\"path\")\n\t\t\t.on(\"click\", function(d) {\n\t\t\t\tself.dispatchEvent(\"pie-slice-onClick\", d);\n\t\t\t})\n\t\t\t.on(\"mouseover\", function(d) {\n\t\t\t\tconst sliceElement = select(this);\n\t\t\t\tTools.moveToFront(sliceElement);\n\n\t\t\t\tsliceElement\n\t\t\t\t\t.attr(\"stroke-width\", Configuration.pie.mouseover.strokeWidth)\n\t\t\t\t\t.attr(\"stroke-opacity\", Configuration.pie.mouseover.strokeOpacity)\n\t\t\t\t\t.attr(\"stroke\", self.getStrokeColor(self.displayData.datasets[0].label, d.data.label, d.data.value));\n\n\t\t\t\tself.showTooltip(d);\n\t\t\t\tself.reduceOpacity(this);\n\t\t\t})\n\t\t\t.on(\"mousemove\", function(d) {\n\t\t\t\tconst tooltipRef = select(self.holder).select(\"div.chart-tooltip\");\n\n\t\t\t\tconst relativeMousePosition = mouse(self.holder as HTMLElement);\n\t\t\t\ttooltipRef.style(\"left\", relativeMousePosition[0] + Configuration.tooltip.magicLeft2 + \"px\")\n\t\t\t\t\t.style(\"top\", relativeMousePosition[1] + \"px\");\n\t\t\t})\n\t\t\t.on(\"mouseout\", function(d) {\n\t\t\t\tselect(this)\n\t\t\t\t\t.attr(\"stroke-width\", accessibility ? Configuration.pie.default.strokeWidth : Configuration.pie.mouseout.strokeWidth)\n\t\t\t\t\t.attr(\"stroke\", accessibility ? self.getStrokeColor(self.displayData.datasets[0].label, d.data.label, d.data.value) : \"none\")\n\t\t\t\t\t.attr(\"stroke-opacity\", Configuration.pie.mouseout.strokeOpacity);\n\n\t\t\t\tself.hideTooltip();\n\t\t\t});\n\t}\n\n\tupdate(newData?: any) {\n\t\tconst oldData = Tools.clone(this.displayData);\n\t\tconst activeLegendItems = this.getActiveLegendItems();\n\n\t\tconst newDisplayData = Object.assign({}, oldData);\n\t\tnewDisplayData.datasets[0].data = oldData.datasets[0].data.filter(dataPoint => activeLegendItems.indexOf(dataPoint.label) !== -1);\n\n\t\tnewDisplayData.labels = newDisplayData.datasets[0].data.map(datum => datum.label);\n\n\t\tthis.interpolateValues(newDisplayData);\n\t}\n\n\tresizeChart() {\n\t\tconst chartSize: any = this.getChartSize(this.container);\n\t\tconst dimensionToUseForScale = Math.min(chartSize.width, chartSize.height);\n\t\tconst radius: number = this.computeRadius();\n\n\t\t// Resize the SVG\n\t\tselect(this.holder).select(\"svg\")\n\t\t\t\t.attr(\"width\", `${dimensionToUseForScale}px`)\n\t\t\t\t.attr(\"height\", `${dimensionToUseForScale}px`);\n\t\tthis.innerWrap\n\t\t\t.style(\"transform\", `translate(${radius}px,${radius}px)`);\n\n\t\t// Resize the arc\n\t\tthis.arc = arc()\n\t\t\t.innerRadius(this.options.type === \"donut\" ? (radius * (2 / 3)) : 0)\n\t\t\t.outerRadius(radius);\n\n\t\tthis.innerWrap.selectAll(\"path\")\n\t\t\t.attr(\"d\", this.arc);\n\n\t\tconst self = this;\n\t\tthis.innerWrap\n\t\t\t.selectAll(\"text.chart-label\")\n\t\t\t.attr(\"transform\", function (d) { return self.deriveTransformString(this, d, radius); });\n\n\t\t// Reposition the legend\n\t\tthis.positionLegend();\n\t}\n\n\t// Helper functions\n\tprivate computeRadius() {\n\t\tconst chartSize: any = this.getChartSize(this.container);\n\t\tconst radius: number = Math.min(chartSize.width, chartSize.height) / 2;\n\n\t\treturn radius;\n\t}\n\n\t/**\n\t * Return the css transform string to be used for the slice\n\t *\n\t * @private\n\t * @param {any} d - d3 data item for slice\n\t * @param {any} radius - computed radius of the chart\n\t * @returns final transform string to be applied to the <text> element\n\t * @memberof PieChart\n\t */\n\tprivate deriveTransformString(element, d, radius) {\n\t\tconst textLength = element.getComputedTextLength();\n\t\tconst textOffsetX = textLength / 2;\n\t\tconst textOffsetY = parseFloat(getComputedStyle(element).fontSize) / 2;\n\n\t\tconst marginedRadius = radius + Configuration.pie.label.margin;\n\n\t\tconst theta = ((d.endAngle - d.startAngle) / 2) + d.startAngle;\n\t\tconst xPosition = (textOffsetX + marginedRadius) * Math.sin(theta);\n\t\tconst yPosition = (textOffsetY + marginedRadius) * -Math.cos(theta);\n\n\t\treturn `translate(${xPosition}, ${yPosition})`;\n\t}\n}\n\n// d3 Tween functions\nfunction arcTween(a, arcFunc) {\n\tconst i = interpolate(this._current, a);\n\n\treturn t => {\n\t\tthis._current = i(t);\n\n\t\treturn arcFunc(this._current);\n\t};\n}\n"]}
1
+ {"version":3,"file":"pie-chart.js","sourceRoot":"","sources":["src/pie-chart.ts"],"names":[],"mappings":"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","sourcesContent":["// D3 Imports\nimport { select } from \"d3-selection\";\nimport { scaleOrdinal } from \"d3-scale\";\nimport { pie, arc, Pie, Arc } from \"d3-shape\";\nimport { interpolate } from \"d3-interpolate\";\n\nimport { BaseChart } from \"./base-chart\";\nimport * as Configuration from \"./configuration\";\nimport { ChartConfig, PieChartOptions, ChartType, ChartData } from \"./configuration\";\nimport { Tools } from \"./tools\";\n\nexport interface PieDatum {\n\tlabel: string;\n\tvalue: number;\n\titems?: Array<PieDatum>;\n}\n\nexport interface PieDataSet extends Configuration.DataSet {\n\tdata: Array<PieDatum>;\n}\n\nexport interface PieData {\n\tlabels: Array<string>;\n\tdatasets: Array<PieDataSet>;\n}\n\nexport class PieChart extends BaseChart {\n\tpie: Pie<PieChart, any>;\n\tarc: Arc<PieChart, any>;\n\tpath: any;\n\n\toptions: PieChartOptions;\n\n\tconstructor(holder: Element, configs: ChartConfig<PieChartOptions>, type: ChartType.PIE | ChartType.DONUT = ChartType.PIE) {\n\t\tsuper(holder, configs);\n\n\t\tthis.options.type = type;\n\n\t\t// Assign colors to each slice using their label\n\t\tthis.colorScale = scaleOrdinal(this.options.colors);\n\t}\n\n\t// Sort data by value (descending)\n\t// Cap number of slices at a specific number, and group the remaining items into the label \"Other\"\n\tdataProcessor(dataObject: ChartData): PieData {\n\t\t// TODO - Support multiple datasets\n\t\tif (dataObject.datasets.length > 1) {\n\t\t\tconsole.warn(`Currently the Pie & Donut charts support a single dataset,\n\t\t\t\tyou appear to have more than that. Will only use your first provided dataset.`);\n\t\t}\n\n\t\t// Check for duplicate keys in the data\n\t\tconst duplicates = Tools.getDuplicateValues(dataObject.labels);\n\t\tif (duplicates.length > 0) {\n\t\t\tconsole.error(`${Tools.capitalizeFirstLetter(this.options.type)} Chart - You have duplicate keys`, duplicates);\n\t\t}\n\n\t\t// TODO - Support multiple datasets\n\t\t// let sortedData = data.datasets[0];\n\t\tconst dataList: Array<any> = dataObject.datasets[0].data.map((datum, i) => ({\n\t\t\tlabel: dataObject.labels[i],\n\t\t\tvalue: datum,\n\t\t\t// datasetLabel: data.datasets[0].label\n\t\t}));\n\n\t\t// Sort data by value\n\t\tlet sortedData = dataList.sort((a, b) => b.value - a.value);\n\n\t\t// Keep a certain number of slices, and add an \"Other\" slice for the rest\n\t\tconst { sliceLimit: stopAt } = Configuration.pie;\n\t\tconst rest = sortedData.slice(stopAt);\n\t\tconst restAccumulatedValue = rest.reduce((accum, item) => accum + item.value, 0);\n\n\t\tconst otherLabelIndex = sortedData.findIndex(dataPoint => dataPoint.label === \"Other\");\n\t\tif (otherLabelIndex !== -1) {\n\t\t\tsortedData.push(sortedData.splice(otherLabelIndex, 1)[0]);\n\t\t} else if (rest.length > 0) {\n\t\t\tsortedData = sortedData.slice(0, stopAt)\n\t\t\t\t.concat([{\n\t\t\t\t\tlabel: Configuration.pie.label.other,\n\t\t\t\t\tvalue: restAccumulatedValue,\n\t\t\t\t\titems: rest\n\t\t\t\t}]);\n\t\t}\n\n\t\treturn {\n\t\t\t// Sort labels based on the order made above\n\t\t\tlabels: sortedData.map((datum, i) => datum.label),\n\t\t\tdatasets: [\n\t\t\t\t{\n\t\t\t\t\t// copy all the relevant properties\n\t\t\t\t\tbackgroundColors: dataObject.datasets[0].backgroundColors,\n\t\t\t\t\tchartType: dataObject.datasets[0].chartType,\n\t\t\t\t\tlabel: dataObject.datasets[0].label,\n\t\t\t\t\t// add our sorted data\n\t\t\t\t\tdata: sortedData\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\n\t}\n\n\t// If there isn't a chart already drawn in the container\n\t// This function is called and will do that\n\tinitialDraw() {\n\t\tthis.setSVG();\n\n\t\t// Add legend\n\t\tthis.addOrUpdateLegend();\n\n\t\t// Draw slices & labels\n\t\tthis.draw();\n\n\t\t// Add event listeners to slices\n\t\tthis.addDataPointEventListener();\n\t}\n\n\tdraw() {\n\t\tconst dataList = this.displayData.datasets[0].data;\n\n\t\tconst chartSize = this.getChartSize(this.container);\n\t\tconst diameter = Math.min(chartSize.width, chartSize.height);\n\t\tconst radius: number = diameter / 2;\n\n\t\tselect(this.holder).select(\"svg\")\n\t\t\t.attr(\"width\", `${diameter}px`)\n\t\t\t.attr(\"height\", `${diameter}px`);\n\n\t\tthis.innerWrap\n\t\t\t.style(\"transform\", `translate(${radius}px,${radius}px)`)\n\t\t\t.attr(\"width\", `${diameter}px`)\n\t\t\t.attr(\"height\", `${diameter}px`)\n\t\t\t.attr(\"preserveAspectRatio\", \"xMinYMin\");\n\n\t\t// Compute the correct inner & outer radius\n\t\tconst marginedRadius = this.computeRadius();\n\t\tthis.arc = arc()\n\t\t\t\t.innerRadius(this.options.type === \"donut\" ? (marginedRadius * (3 / 4)) : 2)\n\t\t\t\t.outerRadius(marginedRadius);\n\n\t\tthis.pie = pie()\n\t\t\t.value((d: any) => d.value)\n\t\t\t.sort(null)\n\t\t\t.padAngle(0.007);\n\n\t\t// Draw the slices\n\t\tthis.path = this.innerWrap.selectAll(\"path\")\n\t\t\t.data(this.pie(dataList))\n\t\t\t.enter()\n\t\t\t.append(\"path\")\n\t\t\t.attr(\"d\", this.arc)\n\t\t\t.attr(\"fill\", d => this.getFillColor(this.displayData.datasets[0].label, d.data.label, d.data.value)) // Support multiple datasets\n\t\t\t.attr(\"stroke\", d => this.getStrokeColor(this.displayData.datasets[0].label, d.data.label, d.data.value))\n\t\t\t.attr(\"stroke-width\", Configuration.pie.default.strokeWidth)\n\t\t\t.attr(\"stroke-opacity\", d => this.options.accessibility ? 1 : 0)\n\t\t\t.each(function(d) { this._current = d; });\n\n\t\t// Draw the slice labels\n\t\tconst self = this;\n\t\tthis.innerWrap\n\t\t\t.selectAll(\"text.chart-label\")\n\t\t\t.data(this.pie(dataList), (d: any) => d.data.label)\n\t\t\t.enter()\n\t\t\t.append(\"text\")\n\t\t\t.classed(\"chart-label\", true)\n\t\t\t.attr(\"dy\", Configuration.pie.label.dy)\n\t\t\t.style(\"text-anchor\", \"middle\")\n\t\t\t.text(d => Tools.convertValueToPercentage(d.data.value, dataList))\n\t\t\t.attr(\"transform\", function (d) { return self.deriveTransformString(this, d, radius); });\n\n\t\t// Hide overlay\n\t\tthis.chartOverlay.hide();\n\t}\n\n\t// Interpolated transitions for older data points to reflect the new data changes\n\tinterpolateValues(newData: any) {\n\t\tconst dataList = newData.datasets[0].data;\n\n\t\t// Apply the new data to the slices, and interpolate them\n\t\tconst self = this;\n\t\tconst path = this.innerWrap.selectAll(\"path\").data(this.pie(dataList));\n\n\t\t// Update slices\n\t\tpath\n\t\t\t.transition()\n\t\t\t.duration(0)\n\t\t\t.attr(\"stroke\", d => this.getStrokeColor(this.displayData.datasets[0].label, d.data.label, d.data.value))\n\t\t\t.attr(\"stroke-width\", Configuration.pie.default.strokeWidth)\n\t\t\t.attr(\"stroke-opacity\", d => this.options.accessibility ? 1 : 0)\n\t\t\t.transition()\n\t\t\t.style(\"opacity\", 1)\n\t\t\t.duration(Configuration.transitions.default.duration)\n\t\t\t.attr(\"fill\", d => this.getFillColor(this.displayData.datasets[0].label, d.data.label, d.data.value))\n\t\t\t.attrTween(\"d\", function (a) {\n\t\t\t\treturn arcTween.bind(this)(a, self.arc);\n\t\t\t});\n\n\t\tpath.enter()\n\t\t\t.append(\"path\")\n\t\t\t.attr(\"d\", this.arc)\n\t\t\t.transition()\n\t\t\t.duration(0)\n\t\t\t.style(\"opacity\", 0)\n\t\t\t.attr(\"stroke\", d => this.getStrokeColor(this.displayData.datasets[0].label, d.data.label, d.data.value))\n\t\t\t.attr(\"stroke-width\", Configuration.pie.default.strokeWidth)\n\t\t\t.attr(\"stroke-opacity\", d => this.options.accessibility ? 1 : 0)\n\t\t\t.transition()\n\t\t\t.duration(Configuration.transitions.default.duration)\n\t\t\t.attr(\"fill\", d => this.getFillColor(this.displayData.datasets[0].label, d.data.label, d.data.value))\n\t\t\t.style(\"opacity\", 1)\n\t\t\t.attrTween(\"d\", function (a) {\n\t\t\t\treturn arcTween.bind(this)(a, self.arc);\n\t\t\t});\n\n\t\tpath\n\t\t\t.exit()\n\t\t\t.attr(\"d\", this.arc)\n\t\t\t.transition()\n\t\t\t.duration(Configuration.transitions.default.duration)\n\t\t\t.style(\"opacity\", 0)\n\t\t\t.remove();\n\n\t\t// Fade out all text labels\n\t\tthis.innerWrap.selectAll(\"text.chart-label\")\n\t\t\t.transition()\n\t\t\t.duration(Configuration.transitions.default.duration / 2)\n\t\t\t.style(\"opacity\", 0)\n\t\t\t.on(\"end\", function(d) {\n\t\t\t\tselect(this)\n\t\t\t\t\t.transition()\n\t\t\t\t\t.duration(Configuration.transitions.default.duration / 2)\n\t\t\t\t\t.style(\"opacity\", 1);\n\t\t\t});\n\n\t\t// Move text labels to their new location, and fade them in again\n\t\tconst radius = this.computeRadius();\n\t\tsetTimeout(() => {\n\t\t\tconst text = this.innerWrap.selectAll(\"text.chart-label\")\n\t\t\t\t.data(this.pie(dataList), d => d.label );\n\n\t\t\ttext\n\t\t\t\t.enter()\n\t\t\t\t.append(\"text\")\n\t\t\t\t.classed(\"chart-label\", true)\n\t\t\t\t.attr(\"dy\", Configuration.pie.label.dy)\n\t\t\t\t.style(\"text-anchor\", \"middle\")\n\t\t\t\t.text(d => Tools.convertValueToPercentage(d.data.value, dataList))\n\t\t\t\t.attr(\"transform\", function (d) { return self.deriveTransformString(this, d, radius); })\n\t\t\t\t.style(\"opacity\", 0)\n\t\t\t\t.transition()\n\t\t\t\t.duration(Configuration.transitions.default.duration / 2)\n\t\t\t\t.style(\"opacity\", 1);\n\n\t\t\ttext\n\t\t\t\t.style(\"text-anchor\", \"middle\")\n\t\t\t\t.text(d => Tools.convertValueToPercentage(d.data.value, dataList))\n\t\t\t\t.attr(\"transform\", function (d) { return self.deriveTransformString(this, d, radius); })\n\t\t\t\t.transition()\n\t\t\t\t.duration(Configuration.transitions.default.duration / 2)\n\t\t\t\t.style(\"opacity\", 1);\n\n\t\t\ttext\n\t\t\t\t.exit()\n\t\t\t\t.remove();\n\t\t}, Configuration.transitions.default.duration / 2);\n\n\t\t// Add slice hover actions, and clear any slice borders present\n\t\tthis.addDataPointEventListener();\n\t\tthis.reduceOpacity();\n\n\t\t// Hide the overlay\n\t\tthis.chartOverlay.hide();\n\t}\n\n\t// TODO - Possible inherits from base-chart\n\treduceOpacity(exception?: any) {\n\t\tif (exception) {\n\t\t\t// this.innerWrap.selectAll(\"path\").attr(\"fill-opacity\", Configuration.charts.reduceOpacity.opacity);\n\n\t\t\t// Fade everything out except for this element\n\t\t\tselect(exception).attr(\"fill-opacity\", false);\n\t\t\tselect(exception).attr(\"stroke-opacity\", Configuration.charts.reduceOpacity.opacity);\n\t\t\tselect(exception).attr(\"fill\", (d: any) => this.getFillColor(this.displayData.datasets[0].label, d.data.label, d.data.value));\n\t\t}\n\t}\n\n\tgetTooltipHTML = d => this.generateTooltipHTML(d.data.label, d.value.toLocaleString());\n\n\t// TODO - Refactor\n\taddDataPointEventListener() {\n\t\tconst self = this;\n\t\tconst { accessibility } = this.options;\n\n\t\tthis.innerWrap.selectAll(\"path\")\n\t\t\t.on(\"click\", d => self.dispatchEvent(\"pie-slice-onClick\", d))\n\t\t\t.on(\"mouseover\", function(d) {\n\t\t\t\tconst sliceElement = select(this);\n\t\t\t\tTools.moveToFront(sliceElement);\n\n\t\t\t\tsliceElement.attr(\"stroke-width\", Configuration.pie.mouseover.strokeWidth)\n\t\t\t\t\t.attr(\"stroke-opacity\", Configuration.pie.mouseover.strokeOpacity)\n\t\t\t\t\t.attr(\"stroke\", self.getStrokeColor(self.displayData.datasets[0].label, d.data.label, d.data.value));\n\n\t\t\t\tself.showTooltip(d);\n\t\t\t\tself.reduceOpacity(this);\n\t\t\t})\n\t\t\t.on(\"mousemove\", d => self.tooltip.positionTooltip())\n\t\t\t.on(\"mouseout\", function(d) {\n\t\t\t\tselect(this)\n\t\t\t\t\t.attr(\"stroke-width\", accessibility ? Configuration.pie.default.strokeWidth : Configuration.pie.mouseout.strokeWidth)\n\t\t\t\t\t.attr(\"stroke\", accessibility ? self.getStrokeColor(self.displayData.datasets[0].label, d.data.label, d.data.value) : \"none\")\n\t\t\t\t\t.attr(\"stroke-opacity\", Configuration.pie.mouseout.strokeOpacity);\n\n\t\t\t\tself.hideTooltip();\n\t\t\t});\n\t}\n\n\tupdate(newData?: any) {\n\t\tconst oldData = Tools.clone(this.displayData);\n\t\tconst activeLegendItems = this.getActiveLegendItems();\n\n\t\t// TODO - Support multiple datasets\n\t\tconst newDisplayData = Object.assign({}, oldData);\n\t\tnewDisplayData.datasets[0].data = oldData.datasets[0].data.filter(dataPoint => activeLegendItems.indexOf(dataPoint.label) !== -1);\n\n\t\tnewDisplayData.labels = newDisplayData.datasets[0].data.map(datum => datum.label);\n\n\t\tthis.interpolateValues(newDisplayData);\n\t}\n\n\tresizeChart() {\n\t\tconst chartSize: any = this.getChartSize(this.container);\n\t\tconst dimensionToUseForScale = Math.min(chartSize.width, chartSize.height);\n\t\tconst radius: number = this.computeRadius();\n\n\t\t// Resize the SVG\n\t\tselect(this.holder).select(\"svg\")\n\t\t\t\t.attr(\"width\", `${dimensionToUseForScale}px`)\n\t\t\t\t.attr(\"height\", `${dimensionToUseForScale}px`);\n\t\tthis.innerWrap\n\t\t\t.style(\"transform\", `translate(${radius}px,${radius}px)`);\n\n\t\t// Resize the arc\n\t\tthis.arc = arc()\n\t\t\t.innerRadius(this.options.type === \"donut\" ? (radius * (3 / 4)) : 2)\n\t\t\t.outerRadius(radius);\n\n\t\tthis.innerWrap.selectAll(\"path\")\n\t\t\t.attr(\"d\", this.arc);\n\n\t\tconst self = this;\n\t\tthis.innerWrap\n\t\t\t.selectAll(\"text.chart-label\")\n\t\t\t.attr(\"transform\", function (d) { return self.deriveTransformString(this, d, radius); });\n\n\t\t// Reposition the legend\n\t\tthis.positionLegend();\n\t}\n\n\t// Helper functions\n\tprivate computeRadius() {\n\t\tconst chartSize: any = this.getChartSize(this.container);\n\t\tconst radius: number = Math.min(chartSize.width, chartSize.height) / 2;\n\n\t\treturn radius;\n\t}\n\n\t/**\n\t * Return the css transform string to be used for the slice\n\t *\n\t * @private\n\t * @param {any} d - d3 data item for slice\n\t * @param {any} radius - computed radius of the chart\n\t * @returns final transform string to be applied to the <text> element\n\t * @memberof PieChart\n\t */\n\tprivate deriveTransformString(element, d, radius) {\n\t\tconst textLength = element.getComputedTextLength();\n\t\tconst textOffsetX = textLength / 2;\n\t\tconst textOffsetY = parseFloat(getComputedStyle(element).fontSize) / 2;\n\n\t\tconst marginedRadius = radius + Configuration.pie.label.margin;\n\n\t\tconst theta = ((d.endAngle - d.startAngle) / 2) + d.startAngle;\n\t\tconst xPosition = (textOffsetX + marginedRadius) * Math.sin(theta);\n\t\tconst yPosition = (textOffsetY + marginedRadius) * -Math.cos(theta);\n\n\t\treturn `translate(${xPosition}, ${yPosition})`;\n\t}\n}\n\n// d3 Tween functions\nfunction arcTween(a, arcFunc) {\n\tconst i = interpolate(this._current, a);\n\n\treturn t => {\n\t\tthis._current = i(t);\n\n\t\treturn arcFunc(this._current);\n\t};\n}\n"]}
@@ -8,6 +8,7 @@ export declare class ScatterChart extends BaseAxisChart {
8
8
  addLabelsToDataPoints(d: any, index: any): any;
9
9
  getCircleRadius(): number;
10
10
  getCircleFill(radius: any, d: any): any;
11
+ getCircleFillOpacity(): number;
11
12
  interpolateValues(newData: any): void;
12
13
  updateElements(animate: boolean, gDots?: any): void;
13
14
  resizeChart(): void;
package/scatter-chart.js CHANGED
@@ -9,7 +9,7 @@ var __extends = (this && this.__extends) || (function () {
9
9
  };
10
10
  })();
11
11
  // D3 Imports
12
- import { select, mouse } from "d3-selection";
12
+ import { select } from "d3-selection";
13
13
  import { BaseAxisChart } from "./base-axis-chart";
14
14
  import * as Configuration from "./configuration";
15
15
  import { ChartType } from "./configuration";
@@ -44,9 +44,10 @@ var ScatterChart = /** @class */ (function (_super) {
44
44
  .attr("cy", function (d) { return _this.y(d.value); })
45
45
  .attr("r", circleRadius)
46
46
  .attr("fill", function (d) { return _this.getCircleFill(circleRadius, d); })
47
+ .attr("fill-opacity", function (d) { return _this.getCircleFillOpacity(); })
47
48
  .attr("stroke", function (d) { return _this.getStrokeColor(d.datasetLabel, d.label, d.value); });
48
49
  // Hide the overlay
49
- this.updateOverlay().hide();
50
+ this.chartOverlay.hide();
50
51
  // Dispatch the load event
51
52
  this.dispatchEvent("load");
52
53
  };
@@ -65,9 +66,20 @@ var ScatterChart = /** @class */ (function (_super) {
65
66
  return this.options.points.radius || Configuration.charts.points.radius;
66
67
  };
67
68
  ScatterChart.prototype.getCircleFill = function (radius, d) {
68
- var circleShouldBeFilled = radius < Configuration.lines.points.minNonFilledRadius;
69
+ // If the radius of the point is smaller than minimum
70
+ // Or the chart is only a scatter chart
71
+ // And not a line chart for instance
72
+ var circleShouldBeFilled = radius < Configuration.lines.points.minNonFilledRadius || this.constructor === ScatterChart;
69
73
  return circleShouldBeFilled ? this.getStrokeColor(d.datasetLabel, d.label, d.value) : "white";
70
74
  };
75
+ ScatterChart.prototype.getCircleFillOpacity = function () {
76
+ // If the chart is only a scatter chart
77
+ // And not a line chart for instance
78
+ if (this.constructor === ScatterChart) {
79
+ return Configuration.options.SCATTER.points.fillOpacity;
80
+ }
81
+ return null;
82
+ };
71
83
  ScatterChart.prototype.interpolateValues = function (newData) {
72
84
  var _this = this;
73
85
  var margins = Configuration.charts.margin.line;
@@ -96,6 +108,7 @@ var ScatterChart = /** @class */ (function (_super) {
96
108
  .transition(this.getDefaultTransition())
97
109
  .style("opacity", 1)
98
110
  .attr("fill", function (d) { return _this.getCircleFill(circleRadius, d); })
111
+ .attr("fill-opacity", function (d) { return _this.getCircleFillOpacity(); })
99
112
  .attr("stroke", function (d) { return _this.getStrokeColor(d.datasetLabel, d.label, d.value); });
100
113
  // Remove dots that are no longer needed
101
114
  gDots.exit()
@@ -106,7 +119,7 @@ var ScatterChart = /** @class */ (function (_super) {
106
119
  // Add slice hover actions, and clear any slice borders present
107
120
  this.addDataPointEventListener();
108
121
  // Hide the overlay
109
- this.updateOverlay().hide();
122
+ this.chartOverlay.hide();
110
123
  // Dispatch the update event
111
124
  this.dispatchEvent("update");
112
125
  };
@@ -161,7 +174,7 @@ var ScatterChart = /** @class */ (function (_super) {
161
174
  ScatterChart.prototype.reduceOpacity = function (exception) {
162
175
  var _this = this;
163
176
  var circleRadius = this.getCircleRadius();
164
- select(exception).attr("fill-opacity", false);
177
+ select(exception).attr("fill-opacity", this.getCircleFillOpacity());
165
178
  select(exception).attr("stroke-opacity", Configuration.charts.reduceOpacity.opacity);
166
179
  select(exception).attr("fill", function (d) { return _this.getCircleFill(circleRadius, d); });
167
180
  };
@@ -169,9 +182,7 @@ var ScatterChart = /** @class */ (function (_super) {
169
182
  var self = this;
170
183
  var accessibility = this.options.accessibility;
171
184
  this.svg.selectAll("circle.dot")
172
- .on("click", function (d) {
173
- self.dispatchEvent("line-onClick", d);
174
- })
185
+ .on("click", function (d) { return self.dispatchEvent("line-onClick", d); })
175
186
  .on("mouseover", function (d) {
176
187
  select(this)
177
188
  .attr("stroke-width", Configuration.lines.points.mouseover.strokeWidth)
@@ -180,12 +191,7 @@ var ScatterChart = /** @class */ (function (_super) {
180
191
  self.showTooltip(d, this);
181
192
  self.reduceOpacity(this);
182
193
  })
183
- .on("mousemove", function (d) {
184
- var tooltipRef = select(self.holder).select("div.chart-tooltip");
185
- var relativeMousePosition = mouse(self.holder);
186
- tooltipRef.style("left", relativeMousePosition[0] + Configuration.tooltip.magicLeft2 + "px")
187
- .style("top", relativeMousePosition[1] + "px");
188
- })
194
+ .on("mousemove", function (d) { return self.tooltip.positionTooltip(); })
189
195
  .on("mouseout", function (d) {
190
196
  var _a = Configuration.lines.points.mouseout, strokeWidth = _a.strokeWidth, strokeWidthAccessible = _a.strokeWidthAccessible;
191
197
  select(this)
@@ -1 +1 @@
1
- {"version":3,"file":"scatter-chart.js","sourceRoot":"","sources":["src/scatter-chart.ts"],"names":[],"mappings":"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","sourcesContent":["// D3 Imports\nimport { select, mouse } from \"d3-selection\";\n\nimport { BaseAxisChart } from \"./base-axis-chart\";\nimport * as Configuration from \"./configuration\";\nimport { ChartConfig, ScatterChartOptions, ChartType } from \"./configuration\";\nimport { Tools } from \"./tools\";\n\nexport class ScatterChart extends BaseAxisChart {\n\toptions: ScatterChartOptions = Tools.merge({}, Configuration.options.SCATTER);\n\n\tconstructor(holder: Element, configs: ChartConfig<ScatterChartOptions>) {\n\t\tsuper(holder, configs);\n\n\t\tthis.options.type = ChartType.SCATTER;\n\t}\n\n\tdraw() {\n\t\tthis.innerWrap.style(\"width\", \"100%\")\n\t\t\t.style(\"height\", \"100%\");\n\n\t\tconst { line: margins } = Configuration.charts.margin;\n\n\t\tthis.innerWrap.style(\"width\", \"100%\").style(\"height\", \"100%\");\n\n\t\tthis.innerWrap.attr(\"transform\", `translate(${margins.left}, ${margins.top})`);\n\n\t\tconst gDots = this.innerWrap.selectAll(\"g.dots\")\n\t\t\t.data(this.displayData.datasets)\n\t\t\t.enter()\n\t\t\t\t.append(\"g\")\n\t\t\t\t.classed(\"dots\", true);\n\n\t\tconst circleRadius = this.getCircleRadius();\n\t\tgDots.selectAll(\"circle.dot\")\n\t\t\t.data((d, i) => this.addLabelsToDataPoints(d, i))\n\t\t\t.enter()\n\t\t\t\t.append(\"circle\")\n\t\t\t\t.attr(\"class\", \"dot\")\n\t\t\t\t.attr(\"cx\", d => this.x(d.label) + this.x.step() / 2)\n\t\t\t\t.attr(\"cy\", d => this.y(d.value))\n\t\t\t\t.attr(\"r\", circleRadius)\n\t\t\t\t.attr(\"fill\", d => this.getCircleFill(circleRadius, d))\n\t\t\t\t.attr(\"stroke\", d => this.getStrokeColor(d.datasetLabel, d.label, d.value));\n\n\t\t// Hide the overlay\n\t\tthis.updateOverlay().hide();\n\n\t\t// Dispatch the load event\n\t\tthis.dispatchEvent(\"load\");\n\t}\n\n\tgetLegendType() {\n\t\treturn Configuration.legend.basedOn.SERIES;\n\t}\n\n\taddLabelsToDataPoints(d, index) {\n\t\tconst { labels } = this.displayData;\n\n\t\treturn d.data.map((datum, i) => ({\n\t\t\tlabel: labels[i],\n\t\t\tdatasetLabel: d.label,\n\t\t\tvalue: datum\n\t\t}));\n\t}\n\n\tgetCircleRadius() {\n\t\treturn this.options.points.radius || Configuration.charts.points.radius;\n\t}\n\n\tgetCircleFill(radius, d) {\n\t\tconst circleShouldBeFilled = radius < Configuration.lines.points.minNonFilledRadius;\n\t\treturn circleShouldBeFilled ? this.getStrokeColor(d.datasetLabel, d.label, d.value) : \"white\";\n\t}\n\n\tinterpolateValues(newData: any) {\n\t\tconst { line: margins } = Configuration.charts.margin;\n\t\tconst chartSize = this.getChartSize();\n\t\tconst width = chartSize.width - margins.left - margins.right;\n\t\tconst height = chartSize.height - this.getBBox(\".x.axis\").height;\n\n\t\t// Apply new data to the lines\n\t\tconst gDots = this.innerWrap.selectAll(\"g.dots\")\n\t\t\t.data(newData.datasets);\n\n\t\tthis.updateElements(true, gDots);\n\n\t\t// Add lines that need to be added now\n\t\tconst addedDotGroups = gDots.enter()\n\t\t\t.append(\"g\")\n\t\t\t.classed(\"dots\", true);\n\n\t\t// Add line circles\n\t\tconst circleRadius = this.getCircleRadius();\n\t\taddedDotGroups.selectAll(\"circle.dot\")\n\t\t\t.data((d, i) => this.addLabelsToDataPoints(d, i))\n\t\t\t.enter()\n\t\t\t\t.append(\"circle\")\n\t\t\t\t.attr(\"class\", \"dot\")\n\t\t\t\t.attr(\"cx\", (d, i) => this.x(d.label) + this.x.step() / 2)\n\t\t\t\t.attr(\"cy\", (d: any) => this.y(d.value))\n\t\t\t\t.attr(\"r\", circleRadius)\n\t\t\t\t.style(\"opacity\", 0)\n\t\t\t\t.transition(this.getDefaultTransition())\n\t\t\t\t.style(\"opacity\", 1)\n\t\t\t\t.attr(\"fill\", d => this.getCircleFill(circleRadius, d))\n\t\t\t\t.attr(\"stroke\", d => this.getStrokeColor(d.datasetLabel, d.label, d.value));\n\n\t\t// Remove dots that are no longer needed\n\t\tgDots.exit()\n\t\t\t.classed(\"removed\", true)\n\t\t\t.transition(this.getDefaultTransition())\n\t\t\t.style(\"opacity\", 0)\n\t\t\t.remove();\n\n\t\t// Add slice hover actions, and clear any slice borders present\n\t\tthis.addDataPointEventListener();\n\n\t\t// Hide the overlay\n\t\tthis.updateOverlay().hide();\n\n\t\t// Dispatch the update event\n\t\tthis.dispatchEvent(\"update\");\n\t}\n\n\tupdateElements(animate: boolean, gDots?: any) {\n\t\tif (!gDots) {\n\t\t\tgDots = this.innerWrap.selectAll(\"g.dots\");\n\t\t}\n\n\t\tconst transitionToUse = animate ? this.getFillTransition() : this.getInstantTransition();\n\t\tconst self = this;\n\n\t\tconst circleRadius = this.getCircleRadius();\n\t\tgDots.selectAll(\"circle.dot\")\n\t\t\t.data(function(d, i) {\n\t\t\t\tconst parentDatum = select(this).datum() as any;\n\n\t\t\t\treturn self.addLabelsToDataPoints(parentDatum, i);\n\t\t\t})\n\t\t\t.transition(transitionToUse)\n\t\t\t.attr(\"cx\", d => this.x(d.label) + this.x.step() / 2)\n\t\t\t.attr(\"cy\", d => this.y(d.value))\n\t\t\t.attr(\"r\", circleRadius)\n\t\t\t.attr(\"fill\", d => this.getCircleFill(circleRadius, d))\n\t\t\t.attr(\"stroke\", d => this.getStrokeColor(d.datasetLabel, d.label, d.value));\n\t}\n\n\tresizeChart() {\n\t\tconst chartSize: any = this.getChartSize(this.container);\n\t\tconst dimensionToUseForScale = Math.min(chartSize.width, chartSize.height);\n\n\t\t// Resize the SVG\n\t\tselect(this.holder).select(\"svg\")\n\t\t\t\t.attr(\"width\", `${dimensionToUseForScale}px`)\n\t\t\t\t.attr(\"height\", `${dimensionToUseForScale}px`);\n\n\t\tthis.updateXandYGrid(true);\n\t\t// Scale out the domains\n\t\tthis.setXScale();\n\t\tthis.setYScale();\n\n\t\t// Set the x & y axis as well as their labels\n\t\tthis.setXAxis(true);\n\t\tthis.setYAxis(true);\n\n\t\tthis.updateElements(false, null);\n\n\t\tsuper.resizeChart();\n\t}\n\n\tsetXScale () {\n\t\tsuper.setXScale();\n\n\t\tthis.x.padding(0); // override BaseAxisChart padding so points aren't misaligned by a few pixels.\n\t}\n\n\tresetOpacity() {\n\t\tconst circleRadius = this.getCircleRadius();\n\t\tthis.innerWrap.selectAll(\"circle\")\n\t\t\t.attr(\"stroke-opacity\", Configuration.charts.resetOpacity.opacity)\n\t\t\t.attr(\"fill\", d => this.getCircleFill(circleRadius, d));\n\t}\n\n\treduceOpacity(exception) {\n\t\tconst circleRadius = this.getCircleRadius();\n\t\tselect(exception).attr(\"fill-opacity\", false);\n\t\tselect(exception).attr(\"stroke-opacity\", Configuration.charts.reduceOpacity.opacity);\n\t\tselect(exception).attr(\"fill\", (d: any) => this.getCircleFill(circleRadius, d));\n\t}\n\n\taddDataPointEventListener() {\n\t\tconst self = this;\n\t\tconst { accessibility } = this.options;\n\n\t\tthis.svg.selectAll(\"circle.dot\")\n\t\t\t.on(\"click\", function(d) {\n\t\t\t\tself.dispatchEvent(\"line-onClick\", d);\n\t\t\t})\n\t\t\t.on(\"mouseover\", function(d) {\n\t\t\t\tselect(this)\n\t\t\t\t\t.attr(\"stroke-width\", Configuration.lines.points.mouseover.strokeWidth)\n\t\t\t\t\t.attr(\"stroke\", self.colorScale[d.datasetLabel](d.label))\n\t\t\t\t\t.attr(\"stroke-opacity\", Configuration.lines.points.mouseover.strokeOpacity);\n\n\t\t\t\tself.showTooltip(d, this);\n\t\t\t\tself.reduceOpacity(this);\n\t\t\t})\n\t\t\t.on(\"mousemove\", function(d) {\n\t\t\t\tconst tooltipRef = select(self.holder).select(\"div.chart-tooltip\");\n\n\t\t\t\tconst relativeMousePosition = mouse(self.holder as HTMLElement);\n\t\t\t\ttooltipRef.style(\"left\", relativeMousePosition[0] + Configuration.tooltip.magicLeft2 + \"px\")\n\t\t\t\t\t.style(\"top\", relativeMousePosition[1] + \"px\");\n\t\t\t})\n\t\t\t.on(\"mouseout\", function(d) {\n\t\t\t\tconst { strokeWidth, strokeWidthAccessible } = Configuration.lines.points.mouseout;\n\t\t\t\tselect(this)\n\t\t\t\t\t.attr(\"stroke-width\", accessibility ? strokeWidthAccessible : strokeWidth)\n\t\t\t\t\t.attr(\"stroke\", self.colorScale[d.datasetLabel](d.label))\n\t\t\t\t\t.attr(\"stroke-opacity\", Configuration.lines.points.mouseout.strokeOpacity);\n\n\t\t\t\tself.hideTooltip();\n\t\t\t});\n\t}\n}\n"]}
1
+ {"version":3,"file":"scatter-chart.js","sourceRoot":"","sources":["src/scatter-chart.ts"],"names":[],"mappings":"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","sourcesContent":["// D3 Imports\nimport { select, mouse } from \"d3-selection\";\n\nimport { BaseAxisChart } from \"./base-axis-chart\";\nimport * as Configuration from \"./configuration\";\nimport { ChartConfig, ScatterChartOptions, ChartType } from \"./configuration\";\nimport { Tools } from \"./tools\";\n\nexport class ScatterChart extends BaseAxisChart {\n\toptions: ScatterChartOptions = Tools.merge({}, Configuration.options.SCATTER);\n\n\tconstructor(holder: Element, configs: ChartConfig<ScatterChartOptions>) {\n\t\tsuper(holder, configs);\n\n\t\tthis.options.type = ChartType.SCATTER;\n\t}\n\n\tdraw() {\n\t\tthis.innerWrap.style(\"width\", \"100%\")\n\t\t\t.style(\"height\", \"100%\");\n\n\t\tconst { line: margins } = Configuration.charts.margin;\n\n\t\tthis.innerWrap.style(\"width\", \"100%\").style(\"height\", \"100%\");\n\n\t\tthis.innerWrap.attr(\"transform\", `translate(${margins.left}, ${margins.top})`);\n\n\t\tconst gDots = this.innerWrap.selectAll(\"g.dots\")\n\t\t\t.data(this.displayData.datasets)\n\t\t\t.enter()\n\t\t\t\t.append(\"g\")\n\t\t\t\t.classed(\"dots\", true);\n\n\t\tconst circleRadius = this.getCircleRadius();\n\t\tgDots.selectAll(\"circle.dot\")\n\t\t\t.data((d, i) => this.addLabelsToDataPoints(d, i))\n\t\t\t.enter()\n\t\t\t\t.append(\"circle\")\n\t\t\t\t.attr(\"class\", \"dot\")\n\t\t\t\t.attr(\"cx\", d => this.x(d.label) + this.x.step() / 2)\n\t\t\t\t.attr(\"cy\", d => this.y(d.value))\n\t\t\t\t.attr(\"r\", circleRadius)\n\t\t\t\t.attr(\"fill\", d => this.getCircleFill(circleRadius, d))\n\t\t\t\t.attr(\"fill-opacity\", d => this.getCircleFillOpacity())\n\t\t\t\t.attr(\"stroke\", d => this.getStrokeColor(d.datasetLabel, d.label, d.value));\n\n\t\t// Hide the overlay\n\t\tthis.chartOverlay.hide();\n\n\t\t// Dispatch the load event\n\t\tthis.dispatchEvent(\"load\");\n\t}\n\n\tgetLegendType() {\n\t\treturn Configuration.legend.basedOn.SERIES;\n\t}\n\n\taddLabelsToDataPoints(d, index) {\n\t\tconst { labels } = this.displayData;\n\n\t\treturn d.data.map((datum, i) => ({\n\t\t\tlabel: labels[i],\n\t\t\tdatasetLabel: d.label,\n\t\t\tvalue: datum\n\t\t}));\n\t}\n\n\tgetCircleRadius() {\n\t\treturn this.options.points.radius || Configuration.charts.points.radius;\n\t}\n\n\tgetCircleFill(radius, d) {\n\t\t// If the radius of the point is smaller than minimum\n\t\t// Or the chart is only a scatter chart\n\t\t// And not a line chart for instance\n\t\tconst circleShouldBeFilled = radius < Configuration.lines.points.minNonFilledRadius || this.constructor === ScatterChart;\n\n\t\treturn circleShouldBeFilled ? this.getStrokeColor(d.datasetLabel, d.label, d.value) : \"white\";\n\t}\n\n\tgetCircleFillOpacity() {\n\t\t// If the chart is only a scatter chart\n\t\t// And not a line chart for instance\n\t\tif (this.constructor === ScatterChart) {\n\t\t\treturn Configuration.options.SCATTER.points.fillOpacity;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tinterpolateValues(newData: any) {\n\t\tconst { line: margins } = Configuration.charts.margin;\n\t\tconst chartSize = this.getChartSize();\n\t\tconst width = chartSize.width - margins.left - margins.right;\n\t\tconst height = chartSize.height - this.getBBox(\".x.axis\").height;\n\n\t\t// Apply new data to the lines\n\t\tconst gDots = this.innerWrap.selectAll(\"g.dots\")\n\t\t\t.data(newData.datasets);\n\n\t\tthis.updateElements(true, gDots);\n\n\t\t// Add lines that need to be added now\n\t\tconst addedDotGroups = gDots.enter()\n\t\t\t.append(\"g\")\n\t\t\t.classed(\"dots\", true);\n\n\t\t// Add line circles\n\t\tconst circleRadius = this.getCircleRadius();\n\t\taddedDotGroups.selectAll(\"circle.dot\")\n\t\t\t.data((d, i) => this.addLabelsToDataPoints(d, i))\n\t\t\t.enter()\n\t\t\t\t.append(\"circle\")\n\t\t\t\t.attr(\"class\", \"dot\")\n\t\t\t\t.attr(\"cx\", (d, i) => this.x(d.label) + this.x.step() / 2)\n\t\t\t\t.attr(\"cy\", (d: any) => this.y(d.value))\n\t\t\t\t.attr(\"r\", circleRadius)\n\t\t\t\t.style(\"opacity\", 0)\n\t\t\t\t.transition(this.getDefaultTransition())\n\t\t\t\t.style(\"opacity\", 1)\n\t\t\t\t.attr(\"fill\", d => this.getCircleFill(circleRadius, d))\n\t\t\t\t.attr(\"fill-opacity\", d => this.getCircleFillOpacity())\n\t\t\t\t.attr(\"stroke\", d => this.getStrokeColor(d.datasetLabel, d.label, d.value));\n\n\t\t// Remove dots that are no longer needed\n\t\tgDots.exit()\n\t\t\t.classed(\"removed\", true)\n\t\t\t.transition(this.getDefaultTransition())\n\t\t\t.style(\"opacity\", 0)\n\t\t\t.remove();\n\n\t\t// Add slice hover actions, and clear any slice borders present\n\t\tthis.addDataPointEventListener();\n\n\t\t// Hide the overlay\n\t\tthis.chartOverlay.hide();\n\n\t\t// Dispatch the update event\n\t\tthis.dispatchEvent(\"update\");\n\t}\n\n\tupdateElements(animate: boolean, gDots?: any) {\n\t\tif (!gDots) {\n\t\t\tgDots = this.innerWrap.selectAll(\"g.dots\");\n\t\t}\n\n\t\tconst transitionToUse = animate ? this.getFillTransition() : this.getInstantTransition();\n\t\tconst self = this;\n\n\t\tconst circleRadius = this.getCircleRadius();\n\t\tgDots.selectAll(\"circle.dot\")\n\t\t\t.data(function(d, i) {\n\t\t\t\tconst parentDatum = select(this).datum() as any;\n\n\t\t\t\treturn self.addLabelsToDataPoints(parentDatum, i);\n\t\t\t})\n\t\t\t.transition(transitionToUse)\n\t\t\t.attr(\"cx\", d => this.x(d.label) + this.x.step() / 2)\n\t\t\t.attr(\"cy\", d => this.y(d.value))\n\t\t\t.attr(\"r\", circleRadius)\n\t\t\t.attr(\"fill\", d => this.getCircleFill(circleRadius, d))\n\t\t\t.attr(\"stroke\", d => this.getStrokeColor(d.datasetLabel, d.label, d.value));\n\t}\n\n\tresizeChart() {\n\t\tconst chartSize: any = this.getChartSize(this.container);\n\t\tconst dimensionToUseForScale = Math.min(chartSize.width, chartSize.height);\n\n\t\t// Resize the SVG\n\t\tselect(this.holder).select(\"svg\")\n\t\t\t\t.attr(\"width\", `${dimensionToUseForScale}px`)\n\t\t\t\t.attr(\"height\", `${dimensionToUseForScale}px`);\n\n\t\tthis.updateXandYGrid(true);\n\t\t// Scale out the domains\n\t\tthis.setXScale();\n\t\tthis.setYScale();\n\n\t\t// Set the x & y axis as well as their labels\n\t\tthis.setXAxis(true);\n\t\tthis.setYAxis(true);\n\n\t\tthis.updateElements(false, null);\n\n\t\tsuper.resizeChart();\n\t}\n\n\tsetXScale () {\n\t\tsuper.setXScale();\n\n\t\tthis.x.padding(0); // override BaseAxisChart padding so points aren't misaligned by a few pixels.\n\t}\n\n\tresetOpacity() {\n\t\tconst circleRadius = this.getCircleRadius();\n\t\tthis.innerWrap.selectAll(\"circle\")\n\t\t\t.attr(\"stroke-opacity\", Configuration.charts.resetOpacity.opacity)\n\t\t\t.attr(\"fill\", d => this.getCircleFill(circleRadius, d));\n\t}\n\n\treduceOpacity(exception) {\n\t\tconst circleRadius = this.getCircleRadius();\n\t\tselect(exception).attr(\"fill-opacity\", this.getCircleFillOpacity());\n\t\tselect(exception).attr(\"stroke-opacity\", Configuration.charts.reduceOpacity.opacity);\n\t\tselect(exception).attr(\"fill\", (d: any) => this.getCircleFill(circleRadius, d));\n\t}\n\n\taddDataPointEventListener() {\n\t\tconst self = this;\n\t\tconst { accessibility } = this.options;\n\n\t\tthis.svg.selectAll(\"circle.dot\")\n\t\t\t.on(\"click\", d => self.dispatchEvent(\"line-onClick\", d))\n\t\t\t.on(\"mouseover\", function(d) {\n\t\t\t\tselect(this)\n\t\t\t\t\t.attr(\"stroke-width\", Configuration.lines.points.mouseover.strokeWidth)\n\t\t\t\t\t.attr(\"stroke\", self.colorScale[d.datasetLabel](d.label))\n\t\t\t\t\t.attr(\"stroke-opacity\", Configuration.lines.points.mouseover.strokeOpacity);\n\n\t\t\t\tself.showTooltip(d, this);\n\t\t\t\tself.reduceOpacity(this);\n\t\t\t})\n\t\t\t.on(\"mousemove\", d => self.tooltip.positionTooltip())\n\t\t\t.on(\"mouseout\", function(d) {\n\t\t\t\tconst { strokeWidth, strokeWidthAccessible } = Configuration.lines.points.mouseout;\n\t\t\t\tselect(this)\n\t\t\t\t\t.attr(\"stroke-width\", accessibility ? strokeWidthAccessible : strokeWidth)\n\t\t\t\t\t.attr(\"stroke\", self.colorScale[d.datasetLabel](d.label))\n\t\t\t\t\t.attr(\"stroke-opacity\", Configuration.lines.points.mouseout.strokeOpacity);\n\n\t\t\t\tself.hideTooltip();\n\t\t\t});\n\t}\n}\n"]}
@@ -0,0 +1,4 @@
1
+ export declare const LIGHT_1: any[];
2
+ export declare const LIGHT_2: any[];
3
+ export declare const DARK_1: any[];
4
+ export declare const DEFAULT: any[];
@@ -0,0 +1,30 @@
1
+ import colors from "./colors";
2
+ export var LIGHT_1 = [
3
+ colors.purple(60),
4
+ colors.teal(30),
5
+ colors.magenta(50),
6
+ colors.cyan(40),
7
+ colors.magenta(80),
8
+ colors.purple(30),
9
+ colors.cyan(80)
10
+ ];
11
+ export var LIGHT_2 = [
12
+ colors.purple(60),
13
+ colors.magenta(30),
14
+ colors.teal(70),
15
+ colors.cyan(40),
16
+ colors.magenta(70),
17
+ colors.teal(30),
18
+ colors.cyan(80)
19
+ ];
20
+ export var DARK_1 = [
21
+ colors.purple(60),
22
+ colors.teal(30),
23
+ colors.magenta(50),
24
+ colors.green(40),
25
+ colors.purple(20),
26
+ colors.teal(60),
27
+ colors.magenta(30)
28
+ ];
29
+ export var DEFAULT = LIGHT_1;
30
+ //# sourceMappingURL=/home/travis/build/carbon-design-system/carbon-charts/packages/core/services/colorPalettes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorPalettes.js","sourceRoot":"","sources":["../src/services/colorPalettes.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,MAAM,CAAC,IAAM,OAAO,GAAG;IACtB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IACjB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IACf,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IAClB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IACf,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IAClB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IACjB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;CACf,CAAC;AAEF,MAAM,CAAC,IAAM,OAAO,GAAG;IACtB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IACjB,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IAClB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IACf,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IACf,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IAClB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IACf,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;CACf,CAAC;AAEF,MAAM,CAAC,IAAM,MAAM,GAAG;IACrB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IACjB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IACf,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IAClB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IAChB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IACjB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IACf,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,CAAC,IAAM,OAAO,GAAG,OAAO,CAAC","sourcesContent":["import colors from \"./colors\";\n\nexport const LIGHT_1 = [\n\tcolors.purple(60),\n\tcolors.teal(30),\n\tcolors.magenta(50),\n\tcolors.cyan(40),\n\tcolors.magenta(80),\n\tcolors.purple(30),\n\tcolors.cyan(80)\n];\n\nexport const LIGHT_2 = [\n\tcolors.purple(60),\n\tcolors.magenta(30),\n\tcolors.teal(70),\n\tcolors.cyan(40),\n\tcolors.magenta(70),\n\tcolors.teal(30),\n\tcolors.cyan(80)\n];\n\nexport const DARK_1 = [\n\tcolors.purple(60),\n\tcolors.teal(30),\n\tcolors.magenta(50),\n\tcolors.green(40),\n\tcolors.purple(20),\n\tcolors.teal(60),\n\tcolors.magenta(30)\n];\n\nexport const DEFAULT = LIGHT_1;\n"]}
@@ -0,0 +1,9 @@
1
+ declare const _default: {
2
+ cyan: (shade: any) => any;
3
+ green: (shade: any) => any;
4
+ magenta: (shade: any) => any;
5
+ purple: (shade: any) => any;
6
+ red: (shade: any) => any;
7
+ teal: (shade: any) => any;
8
+ };
9
+ export default _default;
@@ -0,0 +1,11 @@
1
+ import { cyan, green, magenta, purple, red, teal } from "@carbon/colors";
2
+ var getColor = function (obj, shade) { return obj[shade]; };
3
+ export default {
4
+ cyan: function (shade) { return getColor(cyan, shade); },
5
+ green: function (shade) { return getColor(green, shade); },
6
+ magenta: function (shade) { return getColor(magenta, shade); },
7
+ purple: function (shade) { return getColor(purple, shade); },
8
+ red: function (shade) { return getColor(red, shade); },
9
+ teal: function (shade) { return getColor(teal, shade); }
10
+ };
11
+ //# sourceMappingURL=/home/travis/build/carbon-design-system/carbon-charts/packages/core/services/colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.js","sourceRoot":"","sources":["../src/services/colors.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,IAAI,EACJ,KAAK,EACL,OAAO,EACP,MAAM,EACN,GAAG,EACH,IAAI,EACJ,MAAM,gBAAgB,CAAC;AAExB,IAAM,QAAQ,GAAG,UAAC,GAAG,EAAE,KAAK,IAAK,OAAA,GAAG,CAAC,KAAK,CAAC,EAAV,CAAU,CAAC;AAE5C,eAAe;IACd,IAAI,EAAE,UAAA,KAAK,IAAI,OAAA,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,EAArB,CAAqB;IACpC,KAAK,EAAE,UAAA,KAAK,IAAI,OAAA,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,EAAtB,CAAsB;IACtC,OAAO,EAAE,UAAA,KAAK,IAAI,OAAA,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,EAAxB,CAAwB;IAC1C,MAAM,EAAE,UAAA,KAAK,IAAI,OAAA,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,EAAvB,CAAuB;IACxC,GAAG,EAAE,UAAA,KAAK,IAAI,OAAA,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,EAApB,CAAoB;IAClC,IAAI,EAAE,UAAA,KAAK,IAAI,OAAA,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,EAArB,CAAqB;CACpC,CAAC","sourcesContent":["import {\n\tcyan,\n\tgreen,\n\tmagenta,\n\tpurple,\n\tred,\n\tteal\n} from \"@carbon/colors\";\n\nconst getColor = (obj, shade) => obj[shade];\n\nexport default {\n\tcyan: shade => getColor(cyan, shade),\n\tgreen: shade => getColor(green, shade),\n\tmagenta: shade => getColor(magenta, shade),\n\tpurple: shade => getColor(purple, shade),\n\tred: shade => getColor(red, shade),\n\tteal: shade => getColor(teal, shade)\n};\n"]}