in src/UXClient/Components/ContextMenu/ContextMenu.ts [119:161]
private createActionElements (container, actions, subLevel = 0) {
let self = this;
var actionElements = container.selectAll(`.tsi-actionElement`)
.data(actions.map((a) => {
a.subLevel = subLevel;
return a;
}));
var actionElementsEntered = actionElements.enter()
.append("div")
.attr("class", `tsi-actionElement`)
.classed('tsi-hasSubMenu', d => d.isNested)
.merge(actionElements)
.text(d => d.name)
.on('mouseenter', function (d, i) {
if (d.isNested) {
self.launchSubMenu(d3.select(this), d.subActions, subLevel + 1, self.getActionElementContainerTop(this));
self.subMenuFromActionIndex = i;
self.subMenuFromSubLevel = d.subLevel;
return;
}
if ((d.subLevel === self.subMenuFromSubLevel && i !== self.subMenuFromActionIndex) || d.subLevel < self.subMenuFromSubLevel) {
self.removeSubMenusAboveLevel(d.subLevel);
}
})
.on("click", function (d, i) {
if (d.isNested) {
return;
}
if (self.endTime) { // if endTime is present, this is a brush action
var startTime = self.startTime ? self.startTime.toISOString().slice(0,-5)+"Z" : null;
var endTime = self.endTime ? self.endTime.toISOString().slice(0,-5)+"Z" : null;
d.action(startTime, endTime);
} else {
var timestamp = self.startTime ? self.startTime.toISOString().slice(0,-5)+"Z" : null;
d.action(self.ae, self.splitBy, timestamp, event);
}
self.hide();
if (self.onClick)
self.onClick();
});
actionElements.exit().remove();
}