private renderLines()

in src/chordChart.ts [1238:1277]


  private renderLines(
    filteredData: ChordLabelEnabledDataPoint[],
    arcVal: Arc<any, DefaultArcObject>,
    outerArc: Arc<any, DefaultArcObject>
  ): void {
    let lines: Selection<any, ChordLabelEnabledDataPoint, any, any> =
      this.lines.selectAll("polyline").data(filteredData);

    let midAngle = (d: ChordArcDescriptor) =>
      d.startAngle + (d.endAngle - d.startAngle) / 2;

    lines.exit().remove();

    lines = lines.merge(
      lines
        .enter()
        .append("polyline")
        .classed(ChordChart.lineClass.className, true)
    );

    lines
      .attr("points", (d: ChordArcDescriptor): any => {
        let textPoint: [number, number] = outerArc.centroid(<any>d);

        textPoint[0] =
          (this.radius + ChordChart.LabelMargin / 2) *
          (midAngle(d) < Math.PI ? 1 : -1);

        let midPoint: [number, number] = outerArc.centroid(<any>d);
        let chartPoint: [number, number] = arcVal.centroid(<any>d);

        chartPoint[0] *= ChordChart.InnerLinePointMultiplier;
        chartPoint[1] *= ChordChart.InnerLinePointMultiplier;

        return [chartPoint, midPoint, textPoint];
      })
      .style("opacity", ChordChart.PolylineOpacity)
      .style("stroke", (d: ChordArcDescriptor) => d.data.labelColor)
      .style("pointer-events", "none");
  }