@antv/s2
Version:
effective spreadsheet render core lib
54 lines • 2.67 kB
JavaScript
import { Group } from '@antv/g';
import { SeriesNumberCell } from '../../cell/series-number-cell';
import { FRONT_GROUND_GROUP_FROZEN_Z_INDEX, FRONT_GROUND_GROUP_SCROLL_Z_INDEX, KEY_GROUP_ROW_INDEX_FROZEN, KEY_GROUP_ROW_INDEX_FROZEN_TRAILING, KEY_GROUP_ROW_INDEX_SCROLL, S2Event, } from '../../common';
import { RowHeader } from './row';
import { getExtraFrozenSeriesNodes, getSeriesNumberNodes } from './util';
export class SeriesNumberHeader extends RowHeader {
/**
* Get seriesNumber header by config
*/
static getSeriesNumberHeader(options) {
var _a, _b;
const { panelBBox, seriesNumberWidth, rowsHierarchy, spreadsheet, cornerWidth, } = options;
const { height, viewportHeight } = panelBBox;
const layoutSeriesNumberNodes = (_b = (_a = spreadsheet.options) === null || _a === void 0 ? void 0 : _a.layoutSeriesNumberNodes) !== null && _b !== void 0 ? _b : getSeriesNumberNodes;
return new SeriesNumberHeader({
width: cornerWidth,
height,
viewportWidth: cornerWidth,
viewportHeight,
position: { x: 0, y: panelBBox.y },
nodes: layoutSeriesNumberNodes(rowsHierarchy, seriesNumberWidth, spreadsheet),
spreadsheet,
});
}
initGroups() {
this.scrollGroup = this.appendChild(new Group({
name: KEY_GROUP_ROW_INDEX_SCROLL,
style: { zIndex: FRONT_GROUND_GROUP_SCROLL_Z_INDEX },
}));
this.frozenGroup = this.appendChild(new Group({
name: KEY_GROUP_ROW_INDEX_FROZEN,
style: { zIndex: FRONT_GROUND_GROUP_FROZEN_Z_INDEX },
}));
this.frozenTrailingGroup = this.appendChild(new Group({
name: KEY_GROUP_ROW_INDEX_FROZEN_TRAILING,
style: { zIndex: FRONT_GROUND_GROUP_FROZEN_Z_INDEX },
}));
const { spreadsheet, nodes } = this.getHeaderConfig();
this.extraFrozenNodes = getExtraFrozenSeriesNodes(spreadsheet.facet, nodes);
}
getCellInstance(node) {
const headerConfig = this.getHeaderConfig();
const { spreadsheet } = headerConfig;
const { seriesNumberCell } = spreadsheet.options;
return ((seriesNumberCell === null || seriesNumberCell === void 0 ? void 0 : seriesNumberCell(node, spreadsheet, headerConfig)) ||
new SeriesNumberCell(node, spreadsheet, headerConfig));
}
emitRenderEvent(cell) {
const { spreadsheet } = this.getHeaderConfig();
spreadsheet.emit(S2Event.SERIES_NUMBER_CELL_RENDER, cell);
spreadsheet.emit(S2Event.LAYOUT_CELL_RENDER, cell);
}
}
//# sourceMappingURL=series-number.js.map