function configureLinearAxis()

in src/core/configurableTL.ts [1913:2095]


function configureLinearAxis(timeline_scale, tl_layout, tl_representation, prev_tl_representation, tl_scale, data, tick_format, unit_width, timeline_container, duration, width, height) {
  const timeline_axis = d3.svg.axis().orient("top");
  if (tl_representation === "Linear") {
    timeline_axis.scale(timeline_scale);
    timeline_axis.ticks(10);
    timeline_axis.tickSize(6, 0);
    timeline_axis.tickFormat(undefined);
    timeline_axis.tickValues(undefined);

    if (tl_layout !== "Segmented" && tl_scale === "Chronological" && globals.date_granularity === "years" && data.min_start_date.getUTCFullYear() < 0) {
      timeline_axis.tickFormat(tick_format);
      timeline_axis.tickValues(undefined);
    } else if (tl_scale === "Sequential" || tl_scale === "Collapsed") {
      timeline_axis.ticks(10);
      timeline_axis.tickSize(6, 0);
      timeline_axis.tickValues(d3.range(0, globals.max_seq_index * 1.5 * unit_width - unit_width, unit_width * 10));
      timeline_axis.tickFormat(function (d) {
        return d / unit_width;
      });
    } else if (tl_scale === "Log") {
      timeline_axis.ticks(10, tick_format);
      timeline_axis.tickSize(6, 0);
      timeline_axis.tickValues(undefined);
    } else if (tl_scale === "Relative" || globals.date_granularity === "epochs") {
      timeline_axis.tickFormat(tick_format);
      timeline_axis.tickValues(undefined);
    } else if (tl_layout === "Segmented") {
      if (globals.segment_granularity === "decades") {
        timeline_axis.tickValues(d3.range(0, 120, 12));
      } else {
        timeline_axis.tickValues(undefined);
      }
      timeline_axis.tickFormat(function (d) {
        var converted_tick = d;
        switch (globals.segment_granularity) {
        case "days":
          converted_tick = moment().hour(d).format("hA");
          break;
        case "weeks":
          converted_tick = moment().weekday(d).format("ddd");
          break;
        case "months":
          converted_tick = moment().date(d).format("Do");
          break;
        case "years":
          converted_tick = moment().week(d + 1).format("MMM");
          break;
        case "decades":
          converted_tick = (d / 12) + " years";
          break;
        case "centuries":
        case "millenia":
          converted_tick = d + " years";
          break;
        case "epochs":
          converted_tick = globals.formatAbbreviation(d) + " years";
          break;
        default:
          break;
        }
        return converted_tick;
      });
    } else {
      timeline_axis.tickValues(undefined);
      timeline_axis.tickFormat(function (d) {
        var converted_tick = d;
        switch (globals.segment_granularity) {
        case "days":
          converted_tick = moment(d).format("MMM D hA");
          break;
        case "weeks":
          converted_tick = moment(d).format("MMM D");
          break;
        case "months":
          converted_tick = moment(d).format("MMM D");
          break;
        case "years":
        case "decades":
        case "centuries":
        case "millenia":
          converted_tick = moment(d).format("YYYY");
          break;
        case "epochs":
          converted_tick = globals.formatAbbreviation(d);
          break;
        default:
          break;
        }
        return converted_tick;
      });
    }

    // update the timeline axis for linear timelines
    var timeline_axis_container = timeline_container.selectAll(".timeline_axis")
      .data([null]);

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

    timeline_axis_container.enter()
      .append("g")
      .attr("class", "timeline_axis")
      .attr("id", "bottom_timeline_axis")
      .style("opacity", 0);

    var timeline_axis_update = timeline_container.select(".timeline_axis")
      .transition("timeline_axis_update")
      .delay(0)
      .duration(duration)
      .style("opacity", 1)
      .call(timeline_axis);

    timeline_axis_update.selectAll("text")
      .attr("y", -12)
      .style("fill", "#666")
      .style("font-weight", "normal");

    timeline_axis_update.selectAll(".tick line")
      .delay(function (d, i) { // eslint-disable-line no-shadow
        return i * duration / timeline_axis_update.selectAll(".tick line")[0].length;
      })
      .attr("y1", -6)
      .attr("y2", 0);

    var bottom_timeline_axis_update = timeline_container.select("#bottom_timeline_axis")
      .transition("bottom_timeline_axis_update")
      .delay(0)
      .duration(duration)
      .style("opacity", 1)
      .call(timeline_axis);

    bottom_timeline_axis_update.selectAll("text")
      .delay(function (d, i) { // eslint-disable-line no-shadow
        return i * duration / bottom_timeline_axis_update.selectAll(".tick line")[0].length;
      })
      .attr("y", height + 18);

    bottom_timeline_axis_update.select(".domain")
      .attr("transform", function () {
        return "translate(0," + height + ")";
      });

    bottom_timeline_axis_update.selectAll(".tick line")
      .delay(function (d, i) { // eslint-disable-line no-shadow
        return i * duration / bottom_timeline_axis_update.selectAll(".tick line")[0].length;
      })
      .attr("y1", 0)
      .attr("y2", height + 6);

    //logEvent("Linear axis updated", "axis_update");
  } else if (prev_tl_representation === "Linear" && tl_representation !== "Linear") { // remove axes for non-linear timelines
    var timeline_axis_hide = timeline_container.select(".timeline_axis")
      .transition("timeline_axis_hide")
      .duration(duration);

    var bottom_timeline_axis_hide = timeline_container.select("#bottom_timeline_axis")
      .transition("bottom_timeline_axis_hide")
      .duration(duration);

    timeline_axis_hide.selectAll(".tick line")
      .attr("y1", -6)
      .attr("y2", -6);

    bottom_timeline_axis_hide.select(".domain")
      .attr("transform", function () {
        return "translate(0,0)";
      });

    bottom_timeline_axis_hide.selectAll("text")
      .attr("y", -12);

    bottom_timeline_axis_hide.selectAll(".tick line")
      .attr("y1", -6)
      .attr("y2", -6);

    timeline_container.selectAll(".timeline_axis")
      .transition("timeline_container_axis")
      .duration(duration)
      .style("opacity", 0);
  }
}