UNPKG

dimple-js

Version:

Dimple is an object-oriented API allowing you to create flexible axis-based charts using [d3.js](http://d3js.org "d3.js").

67 lines (61 loc) 3.45 kB
// Copyright: 2015 AlignAlytics // License: "https://github.com/PMSI-AlignAlytics/dimple/blob/master/MIT-LICENSE.txt" // Source: /src/methods/_drawMarkerBacks.js dimple._drawMarkerBacks = function (lineDataRow, chart, series, duration, className, lineShape) { var markerBacks, markerBackClasses = ["dimple-marker-back", className, lineDataRow.keyString], rem, shapes; if (series.lineMarkers) { if (series._markerBacks === null || series._markerBacks === undefined || series._markerBacks[lineDataRow.keyString] === undefined) { markerBacks = chart._group.selectAll("." + markerBackClasses.join(".")).data(lineDataRow.markerData); } else { markerBacks = series._markerBacks[lineDataRow.keyString].data(lineDataRow.markerData, function (d) { return d.key; }); } // Add if (lineShape.nextSibling && lineShape.nextSibling.id) { shapes = markerBacks.enter().insert("circle", '#' + lineShape.nextSibling.id); } else { shapes = markerBacks.enter().append("circle"); } shapes .attr("id", function (d) { return dimple._createClass([d.key + " Marker Back"]); }) .attr("class", function (d) { var fields = []; if (series.x._hasCategories()) { fields = fields.concat(d.xField); } if (series.y._hasCategories()) { fields = fields.concat(d.yField); } return dimple._createClass(fields) + " " + markerBackClasses.join(" "); }) .attr("cx", function (d) { return (series.x._hasCategories() ? dimple._helpers.cx(d, chart, series) : series.x._previousOrigin); }) .attr("cy", function (d) { return (series.y._hasCategories() ? dimple._helpers.cy(d, chart, series) : series.y._previousOrigin); }) .attr("r", 0) .attr("fill", "white") .attr("stroke", "none"); // Update chart._handleTransition(markerBacks, duration, chart) .attr("cx", function (d) { return dimple._helpers.cx(d, chart, series); }) .attr("cy", function (d) { return dimple._helpers.cy(d, chart, series); }) .attr("r", 2 + series.lineWeight); // Remove rem = chart._handleTransition(markerBacks.exit(), duration, chart) .attr("cx", function (d) { return (series.x._hasCategories() ? dimple._helpers.cx(d, chart, series) : series.x._origin); }) .attr("cy", function (d) { return (series.y._hasCategories() ? dimple._helpers.cy(d, chart, series) : series.y._origin); }) .attr("r", 0); // Run after transition methods if (duration === 0) { rem.remove(); } else { rem.each("end", function () { d3.select(this).remove(); }); } if (series._markerBacks === undefined || series._markerBacks === null) { series._markerBacks = {}; } series._markerBacks[lineDataRow.keyString] = markerBacks; } };