Chart fixes

This commit is contained in:
Ilya Laktyushin 2020-03-25 23:15:05 +04:00
parent 4abab11e7e
commit eb4105cc36
12 changed files with 31 additions and 30 deletions

View File

@ -97,7 +97,7 @@ public class BaseChartController: ChartThemeContainer {
fatalError("Abstract")
}
public func chartInteractionDidBegin(point: CGPoint) {
public func chartInteractionDidBegin(point: CGPoint, manual: Bool = true) {
fatalError("Abstract")
}

View File

@ -129,7 +129,7 @@ class GeneralChartComponentController: ChartThemeContainer {
func updateChartsVisibility(visibility: [Bool], animated: Bool) {
self.chartVisibility = visibility
if isChartInteractionBegun {
chartInteractionDidBegin(point: lastChartInteractionPoint)
chartInteractionDidBegin(point: lastChartInteractionPoint, manual: false)
}
}
@ -169,11 +169,11 @@ class GeneralChartComponentController: ChartThemeContainer {
return (closestDate, minIndex)
}
func chartInteractionDidBegin(point: CGPoint) {
func chartInteractionDidBegin(point: CGPoint, manual: Bool = true) {
guard !ignoreInteraction else {
return
}
if !isChartInteractionBegun && detailsVisible {
if manual && !isChartInteracting && detailsVisible {
self.hideDetailsView(animated: true)
ignoreInteraction = true
return
@ -203,7 +203,6 @@ class GeneralChartComponentController: ChartThemeContainer {
}
func chartInteractionDidEnd() {
isChartInteractionBegun = false
isChartInteracting = false
ignoreInteraction = false
}

View File

@ -18,6 +18,7 @@ public class BaseLinesChartController: BaseChartController {
var zoomChartVisibility: [Bool]
var lastChartInteractionPoint: CGPoint = .zero
var isChartInteractionBegun: Bool = false
var isChartInteracting: Bool = false
var ignoreInteraction: Bool = false
var initialChartRange: ClosedRange<CGFloat> = BaseConstants.defaultRange
@ -66,17 +67,18 @@ public class BaseLinesChartController: BaseChartController {
}
}
public override func chartInteractionDidBegin(point: CGPoint) {
public override func chartInteractionDidBegin(point: CGPoint, manual: Bool = true) {
lastChartInteractionPoint = point
isChartInteractionBegun = true
}
public override func chartInteractionDidEnd() {
isChartInteractionBegun = false
isChartInteracting = false
ignoreInteraction = false
}
public override func cancelChartInteraction() {
isChartInteracting = false
isChartInteractionBegun = false
}

View File

@ -117,15 +117,15 @@ public class GeneralLinesChartController: BaseLinesChartController {
updateVerticalLimitsAndRange(horizontalRange: currentHorizontalRange, animated: true)
if isChartInteractionBegun {
chartInteractionDidBegin(point: lastChartInteractionPoint)
chartInteractionDidBegin(point: lastChartInteractionPoint, manual: false)
}
}
public override func chartInteractionDidBegin(point: CGPoint) {
public override func chartInteractionDidBegin(point: CGPoint, manual: Bool = true) {
guard !ignoreInteraction else {
return
}
if !isChartInteractionBegun && !self.verticalLineRenderer.values.isEmpty {
if manual && !isChartInteracting && !self.verticalLineRenderer.values.isEmpty {
self.cancelChartInteraction()
ignoreInteraction = true
return

View File

@ -144,15 +144,15 @@ public class TwoAxisLinesChartController: BaseLinesChartController {
updateVerticalLimitsAndRange(horizontalRange: currentHorizontalRange, animated: true)
if isChartInteractionBegun {
chartInteractionDidBegin(point: lastChartInteractionPoint)
chartInteractionDidBegin(point: lastChartInteractionPoint, manual: false)
}
}
public override func chartInteractionDidBegin(point: CGPoint) {
public override func chartInteractionDidBegin(point: CGPoint, manual: Bool = true) {
guard !ignoreInteraction else {
return
}
if !isChartInteractionBegun && !self.verticalLineRenderer.values.isEmpty {
if manual && !isChartInteracting && !self.verticalLineRenderer.values.isEmpty {
self.cancelChartInteraction()
ignoreInteraction = true
return

View File

@ -208,11 +208,11 @@ public class PercentPieChartController: BaseChartController {
return collection
}
public override func chartInteractionDidBegin(point: CGPoint) {
public override func chartInteractionDidBegin(point: CGPoint, manual: Bool = true) {
if isZoomed {
pieController.chartInteractionDidBegin(point: point)
pieController.chartInteractionDidBegin(point: point, manual: manual)
} else {
percentController.chartInteractionDidBegin(point: point)
percentController.chartInteractionDidBegin(point: point, manual: manual)
}
}

View File

@ -170,7 +170,7 @@ class PieChartComponentController: GeneralChartComponentController {
return previewBarChartRenderer
}
public override func chartInteractionDidBegin(point: CGPoint) {
public override func chartInteractionDidBegin(point: CGPoint, manual: Bool = true) {
if let segment = pieChartRenderer.selectedItemIndex(at: point) {
pieChartRenderer.selectSegmentAt(at: segment, animated: true)
updateSelectedDataLabelIfNeeded()

View File

@ -173,11 +173,11 @@ public class DailyBarsChartController: BaseChartController {
return collection
}
public override func chartInteractionDidBegin(point: CGPoint) {
public override func chartInteractionDidBegin(point: CGPoint, manual: Bool = true) {
if isZoomed {
linesController.chartInteractionDidBegin(point: point)
linesController.chartInteractionDidBegin(point: point, manual: manual)
} else {
barsController.chartInteractionDidBegin(point: point)
barsController.chartInteractionDidBegin(point: point, manual: manual)
}
}

View File

@ -184,11 +184,11 @@ public class StackedBarsChartController: BaseChartController {
return collection
}
public override func chartInteractionDidBegin(point: CGPoint) {
public override func chartInteractionDidBegin(point: CGPoint, manual: Bool = true) {
if isZoomed {
zoomedBarsController.chartInteractionDidBegin(point: point)
zoomedBarsController.chartInteractionDidBegin(point: point, manual: manual)
} else {
barsController.chartInteractionDidBegin(point: point)
barsController.chartInteractionDidBegin(point: point, manual: manual)
}
}

View File

@ -192,11 +192,11 @@ public class StepBarsChartController: BaseChartController {
return collection
}
public override func chartInteractionDidBegin(point: CGPoint) {
public override func chartInteractionDidBegin(point: CGPoint, manual: Bool = true) {
if isZoomed {
zoomedBarsController.chartInteractionDidBegin(point: point)
zoomedBarsController.chartInteractionDidBegin(point: point, manual: manual)
} else {
barsController.chartInteractionDidBegin(point: point)
barsController.chartInteractionDidBegin(point: point, manual: manual)
}
}

View File

@ -147,15 +147,15 @@ public class TwoAxisStepBarsChartController: BaseLinesChartController {
updateVerticalLimitsAndRange(horizontalRange: currentHorizontalRange, animated: true)
if isChartInteractionBegun {
chartInteractionDidBegin(point: lastChartInteractionPoint)
chartInteractionDidBegin(point: lastChartInteractionPoint, manual: false)
}
}
public override func chartInteractionDidBegin(point: CGPoint) {
public override func chartInteractionDidBegin(point: CGPoint, manual: Bool = true) {
guard !ignoreInteraction else {
return
}
if !isChartInteractionBegun && !self.verticalLineRenderer.values.isEmpty {
if manual && !isChartInteracting && !self.verticalLineRenderer.values.isEmpty {
self.cancelChartInteraction()
ignoreInteraction = true
return

View File

@ -17,7 +17,7 @@ private var labelSpacing: CGFloat = 2
private var margin: CGFloat = 10
private var prefixLabelWidth: CGFloat = 29
private var textLabelWidth: CGFloat = 110
private var valueLabelWidth: CGFloat = 65
private var valueLabelWidth: CGFloat = 70
class ChartDetailsView: UIControl {
let titleLabel = UILabel()