public bindEvents()

in src/webBehavior.ts [69:171]


        public bindEvents(options: ChicletSlicerBehaviorOptions, selectionHandler: ISelectionHandler): void {
            const slicers: Selection<SelectableDataPoint> = this.slicers = options.slicerItemContainers,
                slicerClear: Selection<any> = options.slicerClear;

            this.slicerItemLabels = options.slicerItemLabels;
            this.slicerItemInputs = options.slicerItemInputs;
            this.dataPoints = options.dataPoints;
            this.interactivityService = options.interactivityService;
            this.slicerSettings = options.slicerSettings;
            this.options = options;

            this.selectionHandler = selectionHandler;

            this.loadSelection();

            slicers.on("mouseover", (dataPoint: ChicletSlicerDataPoint) => {
                if (dataPoint.selectable) {
                    dataPoint.mouseOver = true;
                    dataPoint.mouseOut = false;

                    this.renderMouseover();
                }
            });

            slicers.on("mouseout", (dataPoint: ChicletSlicerDataPoint) => {
                if (dataPoint.selectable) {
                    dataPoint.mouseOver = false;
                    dataPoint.mouseOut = true;

                    this.renderMouseover();
                }
            });

            slicers.on("click", (dataPoint: ChicletSlicerDataPoint, index: number) => {
                if (!dataPoint.selectable) {
                    return;
                }

                (d3.event as MouseEvent).preventDefault();

                let settings: ChicletSlicerSettings = this.slicerSettings;
                let multiselect: boolean = settings.general.multiselect;

                let selectedIndexes: number[] = jQuery.map(
                    this.dataPoints,
                    (dataPoint: ChicletSlicerDataPoint, index: number) => {
                        if (dataPoint.selected) {
                            return index;
                        };
                    });

                if (settings.general.forcedSelection && selectedIndexes.length === 1) {
                    let availableDataPoints: ChicletSlicerDataPoint[] = jQuery.map(
                        this.dataPoints,
                        (dataPoint: ChicletSlicerDataPoint, index: number) => {
                            if (!dataPoint.filtered) {
                                return dataPoint;
                            };
                        });

                    if (availableDataPoints[index]
                        && this.dataPoints[selectedIndexes[0]].identity === availableDataPoints[index].identity) {
                        return;
                    }
                }

                if ((d3.event as MouseEvent).altKey && multiselect) {
                    let selIndex: number = selectedIndexes.length > 0
                        ? (selectedIndexes[selectedIndexes.length - 1])
                        : 0;

                    if (selIndex > index) {
                        [index, selIndex] = [selIndex, index];
                    }

                    selectionHandler.handleClearSelection();

                    for (let i: number = selIndex; i <= index; i++) {
                        selectionHandler.handleSelection(this.dataPoints[i], true /* isMultiSelect */);
                    }
                } else if ((((d3.event as MouseEvent).ctrlKey || (d3.event as MouseEvent).metaKey)) || multiselect) {
                    selectionHandler.handleSelection(dataPoint, true /* isMultiSelect */);
                } else {
                    selectionHandler.handleSelection(dataPoint, false /* isMultiSelect */);
                }

                this.saveSelection();
            });

            slicerClear.on("click", (d: SelectableDataPoint) => {
                const settings: ChicletSlicerSettings = this.slicerSettings;

                if (settings.general.forcedSelection) {
                    return false;
                }

                selectionHandler.handleClearSelection();

                this.saveSelection();
            });

            this.forceSelection();
        }