From 40a4d50ff98d21182cc44c1f0fecea0785f65aba Mon Sep 17 00:00:00 2001 From: Vittorio Cellucci Date: Fri, 2 Dec 2022 17:24:30 -0500 Subject: [PATCH] fix: background color image views (#162) fix: totals Co-authored-by: Vittorio Cellucci --- ios/DataCellView.swift | 5 +++++ ios/MiniBarChart.swift | 1 - ios/MiniChartView.swift | 4 ++++ ios/MiniDotGraph.swift | 1 - ios/MiniSparkLineChart.swift | 1 - ios/PositiveNegativeChart.swift | 1 - ios/ReactNativeMiniChartView.swift | 8 ++++++++ src/components/SimpleGrid.tsx | 6 ++---- 8 files changed, 19 insertions(+), 8 deletions(-) diff --git a/ios/DataCellView.swift b/ios/DataCellView.swift index 965b6c78..be89b6e9 100644 --- a/ios/DataCellView.swift +++ b/ios/DataCellView.swift @@ -112,6 +112,11 @@ class DataCellView: UICollectionViewCell, ExpandedCellProtocol { if representation.type == "miniChart" && !isDataView { if let miniChart = views[index] as? MiniChartView { miniChart.menuTranslations = menuTranslations + if let cellBackground = element.cellBackgroundColor { + miniChart.fillColor = ColorParser.fromCSS(cssString: cellBackground) + } else { + miniChart.fillColor = .clear + } miniChart.cell = element miniChart.setChartData(data: element, representedAs: representation) miniChart.delegate = self diff --git a/ios/MiniBarChart.swift b/ios/MiniBarChart.swift index 5ce8bf5c..5af6b975 100644 --- a/ios/MiniBarChart.swift +++ b/ios/MiniBarChart.swift @@ -12,7 +12,6 @@ class MiniBarChart: MiniChartRenderer { guard let data = data else {return} guard let rows = data.qMatrix else {return} if rect.size.height == 0 {return} - ctx.clear(rect) getBandWidth(rect: rect, data: data) resetScales(rect) var x = padding + horizontalPadding / 2 diff --git a/ios/MiniChartView.swift b/ios/MiniChartView.swift index b607613b..5517f5cd 100644 --- a/ios/MiniChartView.swift +++ b/ios/MiniChartView.swift @@ -12,6 +12,7 @@ class MiniChartView: UIView, ConstraintCellProtocol { var miniChart = MiniChartRenderer() var dynamicWidth = NSLayoutConstraint() let contextMenu = ContextMenu() + var fillColor = UIColor.clear var cell: DataCell? var menuTranslations: MenuTranslations? weak var delegate: ExpandedCellProtocol? @@ -84,6 +85,9 @@ class MiniChartView: UIView, ConstraintCellProtocol { override func draw(_ rect: CGRect) { guard let ctx = UIGraphicsGetCurrentContext() else { return } + ctx.clear(rect) + ctx.setFillColor(fillColor.cgColor) + ctx.fill(rect); miniChart.render(ctx, rect: rect) } diff --git a/ios/MiniDotGraph.swift b/ios/MiniDotGraph.swift index 0d787a28..fb5c37f1 100644 --- a/ios/MiniDotGraph.swift +++ b/ios/MiniDotGraph.swift @@ -22,7 +22,6 @@ class MiniDotGraph: MiniSparkLineChart { horizontalPadding = 16 clearDots() if rect.size.height == 0 {return} - ctx.clear(rect) getBandWidth(rect: rect, data: data) resetScales(rect) diff --git a/ios/MiniSparkLineChart.swift b/ios/MiniSparkLineChart.swift index 44d7865a..ac3f655d 100644 --- a/ios/MiniSparkLineChart.swift +++ b/ios/MiniSparkLineChart.swift @@ -25,7 +25,6 @@ class MiniSparkLineChart: MiniChartRenderer { clearDots() if rect.size.height == 0 {return} - ctx.clear(rect) getBandWidth(rect: rect, data: data) resetScales(rect) diff --git a/ios/PositiveNegativeChart.swift b/ios/PositiveNegativeChart.swift index f023723d..eda28148 100644 --- a/ios/PositiveNegativeChart.swift +++ b/ios/PositiveNegativeChart.swift @@ -12,7 +12,6 @@ class PositiveNegativeChart: MiniSparkLineChart { guard let data = data else {return} guard let rows = data.qMatrix else {return} if rect.size.height == 0 {return} - ctx.clear(rect) getBandWidth(rect: rect, data: data) resetScales(rect) var x = padding + horizontalPadding / 2 diff --git a/ios/ReactNativeMiniChartView.swift b/ios/ReactNativeMiniChartView.swift index dfd498c1..d3106dae 100644 --- a/ios/ReactNativeMiniChartView.swift +++ b/ios/ReactNativeMiniChartView.swift @@ -10,6 +10,7 @@ import Foundation class ReactNativeMiniChartView: UIView { var cell: DataCell? var col: DataColumn? + var fillColor = UIColor.clear var miniChart = MiniChartRenderer() @objc var rowData: NSDictionary = [:] { @@ -18,6 +19,11 @@ class ReactNativeMiniChartView: UIView { let json = try JSONSerialization.data(withJSONObject: rowData) let decodedCellData = try JSONDecoder().decode(DataCell.self, from: json) cell = decodedCellData + if let cellBackground = cell?.cellBackgroundColor { + self.fillColor = ColorParser.fromCSS(cssString: cellBackground) + } else { + self.fillColor = .clear + } } catch { print(error) } @@ -64,6 +70,8 @@ class ReactNativeMiniChartView: UIView { override func draw(_ rect: CGRect) { guard let ctx = UIGraphicsGetCurrentContext() else { return } + ctx.setFillColor(fillColor.cgColor) + ctx.fill(rect) miniChart.render(ctx, rect: rect) } diff --git a/src/components/SimpleGrid.tsx b/src/components/SimpleGrid.tsx index e8a8eb1c..4f5554c3 100644 --- a/src/components/SimpleGrid.tsx +++ b/src/components/SimpleGrid.tsx @@ -56,10 +56,8 @@ export type SimpleGridProps = { const transformTotals = (layout: any, table: any) => { let totals; let rowIndex = 0; - let firstCol = true; - let values = table?.columns?.map((col: any) => { - if (col.isDim && firstCol) { - firstCol = false; + let values = table?.columns?.map((col: any, index: number) => { + if (col.isDim && index === 0) { return layout.totals.label || 'Totals'; } if (!col.isDim && rowIndex < layout.qHyperCube.qGrandTotalRow.length) {