public addElementToDOM()

in src/EnhancedScatterChart.ts [2264:2303]


    public addElementToDOM(
        rootElement: Selection<any>,
        properties: ElementProperties
    ): Selection<any> {

        if (!rootElement || !properties) {
            return null;
        }

        let elementSelection: Selection<any>,
            elementUpdateSelection: Selection<any>;

        elementSelection = rootElement.selectAll(properties.selector);

        elementUpdateSelection = elementSelection.data(properties.data || [[]]);

        const elementUpdateSelectionMerged = elementUpdateSelection
            .enter()
            .append(properties.name)
            .merge(elementUpdateSelection);

        const propertiesAttributes = properties.attributes ? Object.keys(properties.attributes) : [];
        for (let propKey of propertiesAttributes) {
            elementUpdateSelectionMerged.attr(propKey, properties.attributes[propKey]);
        }

        const propertiesStyles = properties.styles ? Object.keys(properties.styles) : [];
        for (let propKey of propertiesStyles) {
            elementUpdateSelectionMerged.attr(propKey, properties.styles[propKey]);
        }

        elementUpdateSelectionMerged
            .classed(properties.className, true);

        elementUpdateSelection
            .exit()
            .remove();

        return elementUpdateSelectionMerged;
    }