private updateInternal()

in src/chicletSlicer.ts [536:631]


        private updateInternal(resetScrollbarPosition: boolean) {
            let data = ChicletSlicer.converter(
                this.dataView,
                this.$searchInput.val(),
                this.visualHost);

            if (!data) {
                this.tableView.empty();

                return;
            }

            if (this.colorHelper.isHighContrast) {
                this.changeColorsForHighContrast(data.slicerSettings);
            }

            data.slicerSettings.header.outlineWeight = data.slicerSettings.header.outlineWeight < 0
                ? 0
                : data.slicerSettings.header.outlineWeight;

            data.slicerSettings.slicerText.outlineWeight = data.slicerSettings.slicerText.outlineWeight < 0
                ? 0
                : data.slicerSettings.slicerText.outlineWeight;

            data.slicerSettings.slicerText.padding = data.slicerSettings.slicerText.padding < 0
                ? 0
                : data.slicerSettings.slicerText.padding;

            data.slicerSettings.slicerText.height = data.slicerSettings.slicerText.height < 0
                ? 0
                : data.slicerSettings.slicerText.height;

            data.slicerSettings.slicerText.width = data.slicerSettings.slicerText.width < 0
                ? 0
                : data.slicerSettings.slicerText.width;

            data.slicerSettings.images.imageSplit = ChicletSlicer.getValidImageSplit(data.slicerSettings.images.imageSplit);

            const columns: number = data.slicerSettings.general.columns;
            const rows: number = data.slicerSettings.general.rows;

            data.slicerSettings.general.columns = columns <= 0
                ? +(data.slicerSettings.general.orientation === Orientation.VERTICAL && rows <= 0)
                : columns;

            data.slicerSettings.general.rows = rows <= 0
                ? +(data.slicerSettings.general.orientation === Orientation.HORIZONTAL && columns <= 0)
                : rows;

            data.slicerSettings.general.rows = data.slicerSettings.general.rows > ChicletSlicer.MaxRows
                ? ChicletSlicer.MaxRows
                : data.slicerSettings.general.rows;

            this.slicerData = data;
            this.settings = this.slicerData.slicerSettings;
            this.settings.header.title = this.settings.header.title.trim() || this.slicerData.categorySourceName;

            this.updateSearchHeader();
            this.updateSlicerBodyDimensions();

            if (this.settings.general.showDisabled === ChicletSlicerShowDisabled.BOTTOM) {
                data.slicerDataPoints = _.sortBy(data.slicerDataPoints, [x => !x.selectable]);
            } else if (this.settings.general.showDisabled === ChicletSlicerShowDisabled.HIDE) {
                data.slicerDataPoints = data.slicerDataPoints.filter(x => x.selectable);
            }

            if (this.settings.slicerText.height === ChicletSlicer.MinImageSplit) {
                let extraSpaceForCell = ChicletSlicer.СellTotalInnerPaddings + ChicletSlicer.СellTotalInnerBorders,
                    textProperties: TextProperties = ChicletSlicer.getChicletTextProperties(this.settings.slicerText.textSize);

                this.settings.slicerText.height = textMeasurementService.estimateSvgTextHeight(textProperties) +
                    textMeasurementService.estimateSvgTextBaselineDelta(textProperties) +
                    extraSpaceForCell;

                let hasImage: boolean = _.some(data.slicerDataPoints, (dataPoint: ChicletSlicerDataPoint) => {
                    return dataPoint.imageURL !== '' && typeof dataPoint.imageURL !== "undefined";
                });

                if (hasImage) {
                    this.settings.slicerText.height += ChicletSlicer.MaxImageSplit;
                }
            }

            this.tableView
                .rowHeight(this.settings.slicerText.height)
                .columnWidth(this.settings.slicerText.width)
                .orientation(this.settings.general.orientation)
                .rows(this.settings.general.rows)
                .columns(this.settings.general.columns)
                .data(
                    data.slicerDataPoints.filter(x => !x.filtered),
                    (d: ChicletSlicerDataPoint) => $.inArray(d, data.slicerDataPoints),
                    resetScrollbarPosition)
                .viewport(this.getSlicerBodyViewport(this.currentViewport))
                .render();
        }