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