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");
}
}