function configureFacetedRadialAxes()

in src/configurableTL.js [1694:1787]


function configureFacetedRadialAxes(tl_layout, tl_representation, tl_scale, radial_axis, radial_axis_quantiles, duration, timeline_scale_segments, timeline_facet, width, height, timeline_scale, prev_tl_scale, prev_tl_layout, prev_tl_representation, timeline_container) {
  if (tl_representation === "Radial" && tl_layout === "Faceted") {
    radial_axis.duration(duration);

    if (tl_scale === "Relative") {
      radial_axis_quantiles = [];
      radial_axis.radial_axis_units("Relative");
      if (globals.segment_granularity === "days") {
        radial_axis_quantiles.push(Math.round(d3.quantile(timeline_scale_segments, 0)) * 3600000);
        radial_axis_quantiles.push(Math.round(d3.quantile(timeline_scale_segments, 0.125)) * 3600000);
        radial_axis_quantiles.push(Math.round(d3.quantile(timeline_scale_segments, 0.25)) * 3600000);
        radial_axis_quantiles.push(Math.round(d3.quantile(timeline_scale_segments, 0.375)) * 3600000);
        radial_axis_quantiles.push(Math.round(d3.quantile(timeline_scale_segments, 0.5)) * 3600000);
        radial_axis_quantiles.push(Math.round(d3.quantile(timeline_scale_segments, 0.625)) * 3600000);
        radial_axis_quantiles.push(Math.round(d3.quantile(timeline_scale_segments, 0.75)) * 3600000);
        radial_axis_quantiles.push(Math.round(d3.quantile(timeline_scale_segments, 0.875)) * 3600000);
        radial_axis.final_quantile(Math.round(d3.quantile(timeline_scale_segments, 1)) * 3600000);
      } else {
        radial_axis_quantiles.push(Math.round(d3.quantile(timeline_scale_segments, 0)) * 86400000);
        radial_axis_quantiles.push(Math.round(d3.quantile(timeline_scale_segments, 0.2)) * 86400000);
        radial_axis_quantiles.push(Math.round(d3.quantile(timeline_scale_segments, 0.4)) * 86400000);
        radial_axis_quantiles.push(Math.round(d3.quantile(timeline_scale_segments, 0.6)) * 86400000);
        radial_axis_quantiles.push(Math.round(d3.quantile(timeline_scale_segments, 0.8)) * 86400000);
        radial_axis_quantiles.push(Math.round(d3.quantile(timeline_scale_segments, 1)) * 86400000);
        radial_axis.final_quantile(Math.round(d3.quantile(timeline_scale_segments, 1)) * 86400000);
      }
      radial_axis.track_bounds(globals.max_num_tracks + 1);
    } else {
      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]);

      if (tl_scale === "Chronological") {
        radial_axis.radial_axis_units("Chronological");
        if (globals.segment_granularity === "epochs") {
          radial_axis.track_bounds(1);
        } else {
          radial_axis.track_bounds(globals.max_num_tracks + 1);
        }
      } else if (tl_scale === "Sequential") {
        radial_axis.radial_axis_units("Sequential");
        radial_axis.track_bounds(1);
      }
    }

    // update the radial axis for faceted radial timelines
    var faceted_radial_axis = timeline_facet.selectAll(".faceted_radial_axis")
      .data([radial_axis_quantiles]);

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

    let facet_number = 0;

    timeline_facet.selectAll(".faceted_radial_axis")
      .transition("faceted_radial_axis_update")
      .duration(duration)
      .style("opacity", 1)
      .attr("transform", function () {
        var offset_x,
          offset_y;

        if (tl_layout !== "Faceted") {
          offset_x = width / 2;
          offset_y = height / 2;
        } else if (tl_representation === "Linear") {
          offset_x = width / 2;
          offset_y = facet_number * (height / globals.num_facets);
          facet_number++;
        } else if (tl_representation === "Radial" || (tl_representation === "Spiral" && tl_scale === "Sequential")) {
          var facet_dim_x = width / globals.num_facet_cols;
          var facet_dim_y = height / globals.num_facet_rows;

          offset_x = facet_number % globals.num_facet_cols * facet_dim_x;
          offset_y = Math.floor(facet_number / globals.num_facet_cols - 1) * facet_dim_y + facet_dim_y + globals.buffer;

          facet_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_facet_cols / 2).y_pos(height / globals.num_facet_rows / 2));

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