function configureSegmentedRadialAxis()

in src/configurableTL.js [1627:1692]


function configureSegmentedRadialAxis(tl_representation, tl_layout, tl_scale, duration, radial_axis_quantiles, timeline_scale_segments, radial_axis, timeline_segment, width, height, timeline_scale, timeline_container, prev_tl_representation, prev_tl_layout) {
  if (tl_representation === "Radial" && tl_layout === "Segmented") {
    radial_axis.duration(duration);

    radial_axis.radial_axis_units("Segments");
    if (radial_axis_quantiles !== timeline_scale_segments) {
      radial_axis_quantiles = timeline_scale_segments;
    }
    radial_axis.final_quantile(timeline_scale_segments[timeline_scale_segments.length - 1]);

    // get radial_axis_quantiles of timeline_scale_segments for radial axis ticks
    if (globals.segment_granularity === "epochs") {
      radial_axis.track_bounds(1);
    } else {
      radial_axis.track_bounds(globals.num_tracks + 1);
    }

    // update the radial axis for segmented radial timelines
    var segmented_radial_axis = timeline_segment.selectAll(".segmented_radial_axis")
      .data([radial_axis_quantiles]);

    let segment_number = 0;

    segmented_radial_axis.enter()
      .append("g")
      .attr("class", "segmented_radial_axis")
      .style("opacity", 0);

    timeline_segment.selectAll(".segmented_radial_axis")
      .transition("segmented_radial_axis_update")
      .duration(0)
      .style("opacity", 1)
      .attr("transform", function () {
        var offset_x,
          offset_y;

        if (tl_layout !== "Segmented" || tl_representation === "Calendar" || tl_representation === "Grid") {
          offset_x = width / 2;
          offset_y = height / 2;
        } else if (tl_representation === "Linear") {
          offset_x = width / 2;
          offset_y = segment_number * (height / globals.num_segments);
          segment_number++;
        } else if (tl_representation === "Radial") {
          var segment_dim_x = width / globals.num_segment_cols;
          var segment_dim_y = height / globals.num_segment_rows;

          offset_x = segment_number % globals.num_segment_cols * segment_dim_x;
          offset_y = Math.floor(segment_number / globals.num_segment_cols) * segment_dim_y + globals.buffer;

          segment_number++;
        } else {
          offset_x = width / 2;
          offset_y = height / 2;
        }
        return "translate(" + unNaN(offset_x) + "," + unNaN(offset_y) + ")";
      })
      .call(radial_axis.radial_axis_scale(timeline_scale).x_pos(width / globals.num_segment_cols / 2).y_pos(height / globals.num_segment_rows / 2));

    logEvent("Segmented Radial axis updated", "axis_update");
  } else if (prev_tl_representation === "Radial" && prev_tl_layout === "Segmented" && (tl_representation !== "Radial" || tl_layout !== "Segmented")) {
    hideAxis(timeline_container, duration, "segmented_radial_axis");
  }

  return { radial_axis_quantiles };
}