private createActionElements()

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