ColumnTitle.tsx 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import React from 'react'
  2. import { IDrawingData } from './Pivot'
  3. import { DimetionType, IChartStyles } from '../Widget'
  4. import { getPivotCellWidth, getPivot, getStyleConfig } from '../util'
  5. const styles = require('./Pivot.less')
  6. interface IColumnTitleProps {
  7. cols: string[]
  8. colKeys: string[][]
  9. colTree: object
  10. chartStyles: IChartStyles
  11. drawingData: IDrawingData
  12. dimetionAxis: DimetionType
  13. }
  14. export function ColumnTitle (props: IColumnTitleProps) {
  15. const { cols, colKeys, colTree, chartStyles, drawingData, dimetionAxis } = props
  16. const { elementSize, unitMetricWidth } = drawingData
  17. const { color: fontColor } = getStyleConfig(chartStyles).pivot
  18. let tableWidth = 0
  19. if (dimetionAxis) {
  20. tableWidth = dimetionAxis === 'col'
  21. ? elementSize * colKeys.length
  22. : elementSize * unitMetricWidth
  23. } else {
  24. tableWidth = Object.values(colTree).reduce((sum, d) => sum + getPivotCellWidth(d.width), 0)
  25. }
  26. return (
  27. <div
  28. className={styles.columnTitle}
  29. style={{
  30. width: tableWidth,
  31. color: fontColor
  32. }}
  33. >
  34. {cols.join(` / `)}
  35. </div>
  36. )
  37. }
  38. export default ColumnTitle