function delayedUpdate()

in src/core/configurableTL.ts [3007:3465]


function delayedUpdate(tl_layout, tl_representation, tl_scale, interim_duration_scale, unit_width, timeline_scale, transition) {
  transition.select("rect.event_span")
    .style("opacity", function (d) {
      if (tl_layout !== "Segmented" && tl_representation !== "Radial" && globals.active_event_list.indexOf(d.event_id) !== -1) {
        return 1;
      }

      if (tl_layout === "Segmented" || tl_representation === "Radial" || globals.filter_type === "Hide") {
        return 0;
      }

      return 0.1;
    })
    .style("pointer-events", function (d) {
      if (tl_layout !== "Segmented" && tl_representation !== "Radial" && globals.active_event_list.indexOf(d.event_id) !== -1) {
        return "inherit";
      }

      return "none";
    });
  transition.select("rect.time_elapsed")
    .attr("height", function (d) {
      if (tl_scale !== "Collapsed" || d.time_elapsed === 0) {
        return 0;
      }

      return interim_duration_scale(d.time_elapsed);
    })
    .style("opacity", function (d) {
      if (globals.active_event_list.indexOf(d.event_id) !== -1) {
        return 1;
      }

      if (globals.filter_type === "Hide") {
        return 0;
      }

      return 0.1;
    })
    .style("pointer-events", function (d) {
      if (globals.active_event_list.indexOf(d.event_id) !== -1) {
        return "inherit";
      }

      return "none";
    });


  if (tl_representation === "Radial") {
    transition.select("path.event_span")
      .attrTween("d", arcTween(d3.svg.arc()
        .innerRadius(function (d) {
          var inner_radius = globals.centre_radius;
          switch (tl_scale) {

          case "Chronological":
            inner_radius = d3.max([globals.centre_radius, globals.centre_radius + d.track * globals.track_height]);
            break;

          case "Relative":
            inner_radius = d3.max([globals.centre_radius, globals.centre_radius + d.track * globals.track_height]);
            break;

          case "Sequential":
            inner_radius = d3.max([globals.centre_radius, globals.centre_radius + d.seq_track * globals.track_height]);
            break;
          default:
            break;
          }
          return inner_radius;
        })
        .outerRadius(function (d) {
          var outer_radius = globals.centre_radius + unit_width;
          switch (tl_scale) {

          case "Chronological":
            outer_radius = d3.max([globals.centre_radius + unit_width, globals.centre_radius + d.track * globals.track_height + unit_width]);
            break;

          case "Relative":
            outer_radius = d3.max([globals.centre_radius + unit_width, globals.centre_radius + d.track * globals.track_height + unit_width]);
            break;

          case "Sequential":
            outer_radius = d3.max([globals.centre_radius + unit_width, globals.centre_radius + d.seq_track * globals.track_height + unit_width]);
            break;
          default:
            break;
          }
          return outer_radius;
        })
        .startAngle(function (d) {
          var start_angle = 0;
          if (tl_layout !== "Segmented") {
            switch (tl_scale) {

            case "Chronological":
              start_angle = timeline_scale(d.start_date);
              break;

            case "Relative":
              if (tl_layout === "Faceted") {
                start_angle = timeline_scale(d.start_age);
              }
              break;

            case "Sequential":
              start_angle = timeline_scale(d.seq_index);
              break;
            default:
              break;
            }
          } else if (tl_layout === "Segmented") {
            switch (globals.segment_granularity) {
            case "days":
              start_angle = timeline_scale(moment(time.utcHour.floor(d.start_date)).hour());
              break;
            case "weeks":
              start_angle = timeline_scale(moment(time.day.floor(d.start_date)).day());
              break;
            case "months":
              start_angle = timeline_scale(moment(time.day.floor(d.start_date)).date());
              break;
            case "years":
              if (moment(time.utcWeek.floor(d.start_date)).isoWeek() === 53) {
                start_angle = timeline_scale(1);
              } else {
                start_angle = timeline_scale(moment(time.utcWeek.floor(d.start_date)).isoWeek());
              }
              break;
            case "decades":
              start_angle = timeline_scale(moment(time.month.floor(d.start_date)).month() + (time.month.floor(d.start_date).getUTCFullYear() - Math.floor(time.month.floor(d.start_date).getUTCFullYear() / 10) * 10) * 12);
              break;
            case "centuries":
              if (d.start_date.getUTCFullYear() < 0) {
                start_angle = timeline_scale(d.start_date.getUTCFullYear() % 100 + 100);
              } else {
                start_angle = timeline_scale(d.start_date.getUTCFullYear() % 100);
              }
              break;
            case "millenia":
              if (d.start_date.getUTCFullYear() < 0) {
                start_angle = timeline_scale(d.start_date.getUTCFullYear() % 1000 + 1000);
              } else {
                start_angle = timeline_scale(d.start_date.getUTCFullYear() % 1000);
              }
              break;
            case "epochs":
              start_angle = timeline_scale(d.start_date);
              break;
            default:
              break;
            }
          }
          return start_angle;
        })
        .endAngle(function (d) {
          var end_angle = 0;
          var unit_arc = Math.PI * 2 / 100;
          if (tl_layout !== "Segmented") {
            switch (tl_scale) {

            case "Chronological":
              end_angle = d3.max([timeline_scale(d.end_date), timeline_scale(d.start_date) + unit_arc]);
              break;

            case "Relative":
              if (tl_layout === "Faceted") {
                end_angle = d3.max([timeline_scale(d.end_age), timeline_scale(d.start_age) + unit_arc]);
              }
              break;

            case "Sequential":
              end_angle = timeline_scale(d.seq_index + 1);
              break;
            default:
              break;
            }
          } else if (tl_layout === "Segmented") {
            switch (globals.segment_granularity) {
            case "days":
              end_angle = timeline_scale(moment(time.utcHour.floor(d.start_date)).hour()) + unit_arc;
              break;
            case "weeks":
              end_angle = timeline_scale(moment(time.day.floor(d.start_date)).day()) + unit_arc;
              break;
            case "months":
              end_angle = timeline_scale(moment(time.day.floor(d.start_date)).date()) + unit_arc;
              break;
            case "years":
              if (moment(time.utcWeek.floor(d.start_date)).isoWeek() === 53) {
                end_angle = timeline_scale(1) + unit_arc;
              } else {
                end_angle = timeline_scale(moment(time.utcWeek.floor(d.start_date)).isoWeek()) + unit_arc;
              }
              break;
            case "decades":
              end_angle = timeline_scale(moment(time.month.floor(d.start_date)).month() + (time.month.floor(d.start_date).getUTCFullYear() - Math.floor(time.month.floor(d.start_date).getUTCFullYear() / 10) * 10) * 12) + unit_arc;
              break;
            case "centuries":
              if (d.start_date.getUTCFullYear() < 0) {
                end_angle = timeline_scale(d.start_date.getUTCFullYear() % 100 + 100) + unit_arc;
              } else {
                end_angle = timeline_scale(d.start_date.getUTCFullYear() % 100) + unit_arc;
              }
              break;
            case "millenia":
              if (d.start_date.getUTCFullYear() < 0) {
                end_angle = timeline_scale(d.start_date.getUTCFullYear() % 1000 + 1000) + unit_arc;
              } else {
                end_angle = timeline_scale(d.start_date.getUTCFullYear() % 1000) + unit_arc;
              }
              break;
            case "epochs":
              end_angle = timeline_scale(d.start_date) + unit_arc;
              break;
            default:
              break;
            }
          }
          return end_angle;
        }))
      )
      .style("opacity", function (d) {
        if (tl_layout !== "Segmented") {
          if (globals.active_event_list.indexOf(d.event_id) !== -1) {
            return 1;
          }

          if (globals.filter_type === "Hide") {
            return 0;
          }

          return 0.1;
        }

        return 0;
      })
      .style("pointer-events", function (d) {
        if (tl_layout !== "Segmented") {
          if (globals.active_event_list.indexOf(d.event_id) !== -1) {
            return "inherit";
          }

          return "none";
        }

        return "none";
      })
      .style("display", "inline");
  }
  transition.selectAll("rect.event_span_component")
    .style("opacity", function () {
      if (tl_layout === "Segmented" && tl_representation !== "Radial" && globals.active_event_list.indexOf(d3.select(this.parentNode).datum().event_id) !== -1) {
        return 1;
      }

      if (tl_layout !== "Segmented" || globals.filter_type === "Hide" || tl_representation === "Radial") {
        return 0;
      }

      return 0.1;
    })
    .style("pointer-events", function () {
      if (tl_layout === "Segmented" && tl_representation !== "Radial" && globals.active_event_list.indexOf(d3.select(this.parentNode).datum().event_id) !== -1) {
        return "inherit";
      }

      return "none";
    });
  if (tl_representation === "Radial") {
    transition.selectAll("path.event_span_component")
      .attrTween("d", arcTween(d3.svg.arc()
        .innerRadius(function () {
          var inner_radius = globals.centre_radius;
          if (tl_scale === "Relative" || tl_scale === "Chronological") {
            inner_radius = d3.max([globals.centre_radius, globals.centre_radius + d3.select(this.parentNode).datum().track * globals.track_height]);
          }
          return inner_radius;
        })
        .outerRadius(function () {
          var outer_radius = globals.centre_radius + unit_width;
          if (tl_scale === "Relative" || tl_scale === "Chronological") {
            outer_radius = d3.max([globals.centre_radius + unit_width, globals.centre_radius + d3.select(this.parentNode).datum().track * globals.track_height + unit_width]);
          }
          return outer_radius;
        })
        .startAngle(function (dataItem) {
          // TODO: Come back and consolidate startAngle & endAngle
          const d = dataItem.dateTime;
          var start_angle = 0;
          if (tl_layout === "Segmented" && tl_scale === "Chronological") {
            switch (globals.segment_granularity) {
            case "days":
              start_angle = d3.max([0, timeline_scale(moment(d).hour())]);
              break;
            case "weeks":
              start_angle = d3.max([0, timeline_scale(moment(d).day())]);
              break;
            case "months":
              start_angle = d3.max([0, timeline_scale(moment(d).date())]);
              break;
            case "years":
              if (moment(d).isoWeek() === 53) {
                start_angle = d3.max([0, timeline_scale(1)]);
              } else {
                start_angle = d3.max([0, timeline_scale(moment(d).isoWeek())]);
              }
              break;
            case "decades":
              start_angle = d3.max([0, timeline_scale(moment(d).month() + (d.getUTCFullYear() - Math.floor(d.getUTCFullYear() / 10) * 10) * 12)]);
              break;
            case "centuries":
              if (d < 0) {
                start_angle = d3.max([0, timeline_scale(d % 100 + 100)]);
              } else {
                start_angle = d3.max([0, timeline_scale(d % 100)]);
              }
              break;
            case "millenia":
              if (d < 0) {
                start_angle = d3.max([0, timeline_scale(d % 1000 + 1000)]);
              } else {
                start_angle = d3.max([0, timeline_scale(d % 1000)]);
              }
              break;
            case "epochs":
              start_angle = d3.max([0, timeline_scale(d.valueOf())]);
              break;
            default:
              break;
            }
          } else if (tl_layout === "Unified" || tl_layout === "Faceted") {
            switch (tl_scale) {

            case "Chronological":
              start_angle = timeline_scale(d3.select(this.parentNode).datum().start_date);
              break;

            case "Relative":
              if (tl_layout === "Faceted") {
                start_angle = timeline_scale(d3.select(this.parentNode).datum().start_age);
              }
              break;

            case "Sequential":
              start_angle = timeline_scale(d3.select(this.parentNode).datum().seq_index);
              break;
            default:
              break;
            }
          }
          return start_angle;
        })
        .endAngle(function (dataItem) {
          const d = dataItem.dateTime;
          var end_angle = 0, unit_arc = 0;
          if (tl_layout === "Segmented" && tl_scale === "Chronological") {
            switch (globals.segment_granularity) {
            case "days":
              unit_arc = Math.PI * 2 / 24;
              end_angle = d3.max([0, timeline_scale(moment(d).hour()) + unit_arc]);
              break;
            case "weeks":
              unit_arc = Math.PI * 2 / 7;
              end_angle = d3.max([0, timeline_scale(moment(d).day()) + unit_arc]);
              break;
            case "months":
              unit_arc = Math.PI * 2 / 31;
              end_angle = d3.max([0, timeline_scale(moment(d).date()) + unit_arc]);
              break;
            case "years":
              unit_arc = Math.PI * 2 / 52;
              if (moment(d).isoWeek() === 53) {
                end_angle = d3.max([0, timeline_scale(1) + unit_arc]);
              } else {
                end_angle = d3.max([0, timeline_scale(moment(d).isoWeek()) + unit_arc]);
              }
              break;
            case "decades":
              unit_arc = Math.PI * 2 / 120;
              end_angle = d3.max([0, timeline_scale(moment(d).month() + (d.getUTCFullYear() - Math.floor(d.getUTCFullYear() / 10) * 10) * 12) + unit_arc]);
              break;
            case "centuries":
              unit_arc = Math.PI * 2 / 100;
              if (d < 0) {
                end_angle = d3.max([0, timeline_scale(d % 100 + 100) + unit_arc]);
              } else {
                end_angle = d3.max([0, timeline_scale(d % 100) + unit_arc]);
              }
              break;
            case "millenia":
              unit_arc = Math.PI * 2 / 100;
              if (d < 0) {
                end_angle = d3.max([0, timeline_scale(d % 1000 + 1000) + unit_arc]);
              } else {
                end_angle = d3.max([0, timeline_scale(d % 1000) + unit_arc]);
              }
              break;
            case "epochs":
              unit_arc = Math.PI * 2 / 100;
              end_angle = d3.max([0, timeline_scale(d.valueOf()) + unit_arc]);
              break;
            default:
              break;
            }
          } else if (tl_layout === "Unified" || tl_layout === "Faceted") {
            unit_arc = Math.PI * 2 / 100;
            switch (tl_scale) {

            case "Chronological":
              end_angle = d3.max([timeline_scale(d.end_date), timeline_scale(d3.select(this.parentNode).datum().start_date) + unit_arc]);
              break;

            case "Relative":
              if (tl_layout === "Faceted") {
                end_angle = d3.max([timeline_scale(d.end_age), timeline_scale(d3.select(this.parentNode).datum().start_age) + unit_arc]);
              }
              break;

            case "Sequential":
              end_angle = timeline_scale(d3.select(this.parentNode).datum().seq_index + 1);
              break;
            default:
              break;
            }
          }
          return end_angle;
        }))
      )
      .style("opacity", function () {
        if (tl_layout === "Segmented" && tl_scale === "Chronological") {
          if (globals.active_event_list.indexOf(d3.select(this.parentNode).datum().event_id) !== -1) {
            return 1;
          }

          if (globals.filter_type === "Hide") {
            return 0;
          }

          return 0.1;
        }

        return 0;
      })
      .style("pointer-events", function () {
        if (tl_layout === "Segmented" && tl_scale === "Chronological") {
          if (globals.active_event_list.indexOf(d3.select(this.parentNode).datum().event_id) !== -1) {
            return "inherit";
          }

          return "none";
        }

        return "none";
      })
      .style("display", "inline");
  }
}