Skip to content

Commit 6c88be1

Browse files
committed
refactor + cleanup
1 parent 8b39f01 commit 6c88be1

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

WordPress/Classes/ViewRelated/Stats/Charts/StatsLineChartView.swift

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ protocol StatsLineChartViewDelegate: AnyObject {
99

1010
// MARK: - StatsLineChartView
1111

12+
private let LineChartAnalyticsPropertyKey = "property"
1213
private let LineChartAnalyticsPropertyGranularityKey = "granularity"
1314

1415
class StatsLineChartView: LineChartView {
@@ -31,6 +32,7 @@ class StatsLineChartView: LineChartView {
3132
static let xAxisWidth = 4.0
3233
static let xAxisTickWidth = 2.0
3334
static let lineWidth = 2.0
35+
static let numberDaysInWeek = 7
3436
}
3537

3638
/// This adapts the data set for presentation by the Charts framework.
@@ -53,6 +55,8 @@ class StatsLineChartView: LineChartView {
5355
///
5456
private weak var statsLineChartViewDelegate: StatsLineChartViewDelegate?
5557

58+
private var statsInsightsFilterDimension: StatsInsightsFilterDimension
59+
5660
private var isHighlightNeeded: Bool {
5761
guard let primaryDataSet = primaryDataSet, primaryDataSet.isHighlightEnabled else {
5862
return false
@@ -79,12 +83,13 @@ class StatsLineChartView: LineChartView {
7983
updateXAxisTicks()
8084
}
8185

82-
init(configuration: StatsLineChartConfiguration, delegate: StatsLineChartViewDelegate? = nil) {
86+
init(configuration: StatsLineChartConfiguration, delegate: StatsLineChartViewDelegate? = nil, statsInsightsFilterDimension: StatsInsightsFilterDimension = .views) {
8387
self.lineChartData = configuration.data
8488
self.styling = configuration.styling
8589
self.analyticsGranularity = configuration.analyticsGranularity
8690
self.statsLineChartViewDelegate = delegate
8791
self.xAxisDates = configuration.xAxisDates
92+
self.statsInsightsFilterDimension = statsInsightsFilterDimension
8893

8994
super.init(frame: .zero)
9095

@@ -119,6 +124,8 @@ private extension StatsLineChartView {
119124
properties[LineChartAnalyticsPropertyGranularityKey] = specifiedAnalyticsGranularity.rawValue
120125
}
121126

127+
properties[LineChartAnalyticsPropertyKey] = statsInsightsFilterDimension.analyticsProperty
128+
122129
WPAnalytics.track(.statsLineChartTapped, properties: properties)
123130
}
124131

@@ -164,8 +171,6 @@ private extension StatsLineChartView {
164171
primaryDataSet.drawValuesEnabled = false
165172
primaryDataSet.drawCirclesEnabled = false
166173
primaryDataSet.lineWidth = Constants.lineWidth
167-
// TODO having issue with horizontalBezier (smoothing) - issue seems to be with this old version of lib
168-
// https://github.com/danielgindi/Charts/issues/3960
169174
primaryDataSet.mode = .horizontalBezier
170175

171176
let gradientColors = [styling.primaryLineColor.withAlphaComponent(1).cgColor,
@@ -228,8 +233,10 @@ private extension StatsLineChartView {
228233
func updateXAxisTicks() {
229234
if contentRect.width > 0 {
230235
xAxis.axisLineWidth = Constants.xAxisWidth
231-
let contentWidthMinusTicks = contentRect.width - (Constants.xAxisTickWidth * CGFloat(xAxisDates.count))
232-
xAxis.axisLineDashLengths = [Constants.xAxisTickWidth, (contentWidthMinusTicks / CGFloat(xAxisDates.count - 1))]
236+
237+
let count = max(xAxisDates.count, Constants.numberDaysInWeek)
238+
let contentWidthMinusTicks = contentRect.width - (Constants.xAxisTickWidth * CGFloat(count))
239+
xAxis.axisLineDashLengths = [Constants.xAxisTickWidth, (contentWidthMinusTicks / CGFloat(count - 1))]
233240
}
234241
}
235242

0 commit comments

Comments
 (0)