Skip to content

Commit bcae054

Browse files
committed
Charts improvements
1 parent 598f270 commit bcae054

33 files changed

Lines changed: 462 additions & 340 deletions

‎Telegram/Telegram-iOS/en.lproj/Localizable.strings‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5382,7 +5382,7 @@ Any member of this group will be able to see messages in the channel.";
53825382
"Stats.MessageForwards_0" = "%@ forwards";
53835383
"Stats.MessageForwards_1" = "%@ forward";
53845384
"Stats.MessageForwards_2" = "%@ forwards";
5385-
"Stats.MessageForwards_3_10" = "%@ forwardss";
5385+
"Stats.MessageForwards_3_10" = "%@ forwards";
53865386
"Stats.MessageForwards_many" = "%@ forwards";
53875387
"Stats.MessageForwards_any" = "%@ forwards";
53885388

@@ -5392,4 +5392,4 @@ Any member of this group will be able to see messages in the channel.";
53925392
"InstantPage.Views_3_10" = "%@ views";
53935393
"InstantPage.Views_many" = "%@ views";
53945394
"InstantPage.Views_any" = "%@ views";
5395-
"InstantPage.FeedbackButtonShort" = "Leave feedback";
5395+
"InstantPage.FeedbackButtonShort" = "Wrong layout?";

‎submodules/GraphCore/Sources/Charts Reader/ChartVisibilityItem.swift‎

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,20 +74,23 @@ public struct ChartDetailsViewModel {
7474
public internal(set) var values: [Value]
7575
public internal(set) var totalValue: Value?
7676
public internal(set) var tapAction: (() -> Void)?
77+
public internal(set) var hideAction: (() -> Void)?
7778

78-
static let blank = ChartDetailsViewModel(title: "", showArrow: false, showPrefixes: false, values: [], totalValue: nil, tapAction: nil)
79+
static let blank = ChartDetailsViewModel(title: "", showArrow: false, showPrefixes: false, values: [], totalValue: nil, tapAction: nil, hideAction: nil)
7980
public init(title: String,
8081
showArrow: Bool,
8182
showPrefixes: Bool,
8283
values: [Value],
8384
totalValue: Value?,
84-
tapAction: (() -> Void)?) {
85+
tapAction: (() -> Void)?,
86+
hideAction: (() -> Void)?) {
8587
self.title = title
8688
self.showArrow = showArrow
8789
self.showPrefixes = showPrefixes
8890
self.values = values
8991
self.totalValue = totalValue
9092
self.tapAction = tapAction
93+
self.hideAction = hideAction
9194
}
9295

9396
}

‎submodules/GraphCore/Sources/Charts/Controllers/BaseChartController.swift‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,11 @@ enum BaseConstants {
7070
}()
7171
}
7272

73-
public class BaseChartController: GColorModeContainer {
73+
public class BaseChartController: ChartThemeContainer {
7474
//let performanceRenderer = PerformanceRenderer()
7575
var initialChartsCollection: ChartsCollection
7676
var isZoomed: Bool = false
77+
public var isZoomable: Bool = true
7778

7879
var chartTitle: String = ""
7980

@@ -148,7 +149,7 @@ public class BaseChartController: GColorModeContainer {
148149
fatalError("Abstract")
149150
}
150151

151-
public func updateChartRange(_ rangeFraction: ClosedRange<CGFloat>) {
152+
public func updateChartRange(_ rangeFraction: ClosedRange<CGFloat>, animated: Bool = true) {
152153
fatalError("Abstract")
153154
}
154155

@@ -180,7 +181,7 @@ public class BaseChartController: GColorModeContainer {
180181
fatalError("Abstract")
181182
}
182183

183-
public func apply(colorMode: GColorMode, animated: Bool) {
184+
public func apply(theme: ChartTheme, animated: Bool) {
184185

185186
}
186187
}

‎submodules/GraphCore/Sources/Charts/Controllers/GeneralChartComponentController.swift‎

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,16 @@ enum GeneralChartComponentConstants {
1818
static let defaultZoomedRangeLength = CGFloat(TimeInterval.day)
1919
}
2020

21-
class GeneralChartComponentController: GColorModeContainer {
21+
class GeneralChartComponentController: ChartThemeContainer {
2222
var chartsCollection: ChartsCollection = ChartsCollection.blank
2323
var chartVisibility: [Bool] = []
2424
var lastChartInteractionPoint: CGPoint = .zero
2525
var isChartInteractionBegun: Bool = false
2626
var isChartInteracting: Bool = false
2727
let isZoomed: Bool
28+
var isZoomable = true
2829

29-
var colorMode: GColorMode = .day
30+
var theme: ChartTheme = ChartTheme.defaultDayTheme
3031
var totalHorizontalRange: ClosedRange<CGFloat> = BaseConstants.defaultRange
3132
var totalVerticalRange: ClosedRange<CGFloat> = BaseConstants.defaultRange
3233
var initialHorizontalRange: ClosedRange<CGFloat> = BaseConstants.defaultRange
@@ -214,8 +215,8 @@ class GeneralChartComponentController: GColorModeContainer {
214215
var setDetailsViewModel: ((ChartDetailsViewModel, Bool) -> Void)?
215216
var chartRangePagingClosure: ((Bool, CGFloat) -> Void)? // isEnabled, PageSize
216217

217-
func apply(colorMode: GColorMode, animated: Bool) {
218-
self.colorMode = colorMode
218+
func apply(theme: ChartTheme, animated: Bool) {
219+
self.theme = theme
219220
}
220221

221222
// MARK: - Helpers
@@ -310,12 +311,15 @@ class GeneralChartComponentController: GColorModeContainer {
310311
dateString = BaseConstants.headerMediumRangeFormatter.string(from: closestDate)
311312
}
312313
let viewModel = ChartDetailsViewModel(title: dateString,
313-
showArrow: !self.isZoomed,
314+
showArrow: self.isZoomable && !self.isZoomed,
314315
showPrefixes: false,
315316
values: values,
316317
totalValue: nil,
317318
tapAction: { [weak self] in
318-
self?.zoomInOnDateClosure?(closestDate) })
319+
self?.zoomInOnDateClosure?(closestDate) },
320+
hideAction: { [weak self] in
321+
322+
})
319323
return viewModel
320324
}
321325

‎submodules/GraphCore/Sources/Charts/Controllers/Lines/BaseLinesChartController.swift‎

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public class BaseLinesChartController: BaseChartController {
7878
isChartInteractionBegun = false
7979
}
8080

81-
public override func updateChartRange(_ rangeFraction: ClosedRange<CGFloat>) {
81+
public override func updateChartRange(_ rangeFraction: ClosedRange<CGFloat>, animated: Bool = true) {
8282

8383
}
8484

@@ -114,11 +114,14 @@ public class BaseLinesChartController: BaseChartController {
114114
dateString = BaseConstants.headerMediumRangeFormatter.string(from: closestDate)
115115
}
116116
let viewModel = ChartDetailsViewModel(title: dateString,
117-
showArrow: !self.isZoomed,
117+
showArrow: self.isZoomable && !self.isZoomed,
118118
showPrefixes: false,
119119
values: values,
120120
totalValue: nil,
121-
tapAction: { [weak self] in self?.didTapZoomIn(date: closestDate) })
121+
tapAction: { [weak self] in self?.didTapZoomIn(date: closestDate) },
122+
hideAction: { [weak self] in
123+
self?.setDetailsChartVisibleClosure?(false, true)
124+
})
122125
return viewModel
123126
}
124127

‎submodules/GraphCore/Sources/Charts/Controllers/Lines/GeneralLinesChartController.swift‎

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -176,19 +176,19 @@ public class GeneralLinesChartController: BaseLinesChartController {
176176
return visibleCharts
177177
}
178178

179-
public override func updateChartRange(_ rangeFraction: ClosedRange<CGFloat>) {
179+
public override func updateChartRange(_ rangeFraction: ClosedRange<CGFloat>, animated: Bool = true) {
180180
cancelChartInteraction()
181181

182182
let horizontalRange = ClosedRange(uncheckedBounds:
183183
(lower: totalHorizontalRange.lowerBound + rangeFraction.lowerBound * totalHorizontalRange.distance,
184184
upper: totalHorizontalRange.lowerBound + rangeFraction.upperBound * totalHorizontalRange.distance))
185185

186186
zoomedChartRange = horizontalRange
187-
updateChartRangeTitle(animated: true)
187+
updateChartRangeTitle(animated: animated)
188188

189189
updateMainChartHorizontalRange(range: horizontalRange, animated: false)
190-
updateHorizontalLimits(horizontalRange: horizontalRange, animated: true)
191-
updateVerticalLimitsAndRange(horizontalRange: horizontalRange, animated: true)
190+
updateHorizontalLimits(horizontalRange: horizontalRange, animated: animated)
191+
updateVerticalLimitsAndRange(horizontalRange: horizontalRange, animated: animated)
192192
}
193193

194194
func updateMainChartHorizontalRange(range: ClosedRange<CGFloat>, animated: Bool) {
@@ -239,12 +239,12 @@ public class GeneralLinesChartController: BaseLinesChartController {
239239
}
240240
}
241241

242-
override public func apply(colorMode: GColorMode, animated: Bool) {
243-
horizontalScalesRenderer.labelsColor = colorMode.chartLabelsColor
244-
verticalScalesRenderer.labelsColor = colorMode.chartLabelsColor
245-
verticalScalesRenderer.axisXColor = colorMode.chartStrongLinesColor
246-
verticalScalesRenderer.horizontalLinesColor = colorMode.chartHelperLinesColor
247-
lineBulletsRenderer.setInnerColor(colorMode.chartBackgroundColor, animated: animated)
248-
verticalLineRenderer.linesColor = colorMode.chartStrongLinesColor
242+
override public func apply(theme: ChartTheme, animated: Bool) {
243+
horizontalScalesRenderer.labelsColor = theme.chartLabelsColor
244+
verticalScalesRenderer.labelsColor = theme.chartLabelsColor
245+
verticalScalesRenderer.axisXColor = theme.chartStrongLinesColor
246+
verticalScalesRenderer.horizontalLinesColor = theme.chartHelperLinesColor
247+
lineBulletsRenderer.setInnerColor(theme.chartBackgroundColor, animated: animated)
248+
verticalLineRenderer.linesColor = theme.chartStrongLinesColor
249249
}
250250
}

‎submodules/GraphCore/Sources/Charts/Controllers/Lines/TwoAxisLinesChartController.swift‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ public class TwoAxisLinesChartController: BaseLinesChartController {
199199
self.setupChartCollection(chartsCollection: initialChartCollection, animated: true, isZoomed: false)
200200
}
201201

202-
public override func updateChartRange(_ rangeFraction: ClosedRange<CGFloat>) {
202+
public override func updateChartRange(_ rangeFraction: ClosedRange<CGFloat>, animated: Bool = true) {
203203
cancelChartInteraction()
204204

205205
let horizontalRange = ClosedRange(uncheckedBounds:
@@ -297,14 +297,14 @@ public class TwoAxisLinesChartController: BaseLinesChartController {
297297
}
298298
}
299299

300-
public override func apply(colorMode: GColorMode, animated: Bool) {
301-
horizontalScalesRenderer.labelsColor = colorMode.chartLabelsColor
302-
verticalLineRenderer.linesColor = colorMode.chartStrongLinesColor
300+
public override func apply(theme: ChartTheme, animated: Bool) {
301+
horizontalScalesRenderer.labelsColor = theme.chartLabelsColor
302+
verticalLineRenderer.linesColor = theme.chartStrongLinesColor
303303

304304
for controller in graphControllers {
305-
controller.verticalScalesRenderer.horizontalLinesColor = colorMode.chartHelperLinesColor
306-
controller.lineBulletsRenderer.setInnerColor(colorMode.chartBackgroundColor, animated: animated)
307-
controller.verticalScalesRenderer.axisXColor = colorMode.chartStrongLinesColor
305+
controller.verticalScalesRenderer.horizontalLinesColor = theme.chartHelperLinesColor
306+
controller.lineBulletsRenderer.setInnerColor(theme.chartBackgroundColor, animated: animated)
307+
controller.verticalScalesRenderer.axisXColor = theme.chartStrongLinesColor
308308
}
309309
}
310310
}

‎submodules/GraphCore/Sources/Charts/Controllers/Percent And Pie/PercentChartComponentController.swift‎

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -151,13 +151,16 @@ class PercentChartComponentController: GeneralChartComponentController {
151151
dateString = BaseConstants.headerMediumRangeFormatter.string(from: closestDate)
152152
}
153153
let viewModel = ChartDetailsViewModel(title: dateString,
154-
showArrow: !self.isZoomed,
154+
showArrow: self.isZoomable && !self.isZoomed,
155155
showPrefixes: true,
156156
values: values,
157157
totalValue: nil,
158158
tapAction: { [weak self] in
159159
self?.hideDetailsView(animated: true)
160-
self?.zoomInOnDateClosure?(closestDate) })
160+
self?.zoomInOnDateClosure?(closestDate) },
161+
hideAction: { [weak self] in
162+
self?.hideDetailsView(animated: true)
163+
})
161164
return viewModel
162165
}
163166

@@ -188,13 +191,13 @@ class PercentChartComponentController: GeneralChartComponentController {
188191
verticalLineRenderer.isEnabled = false
189192
}
190193

191-
override func apply(colorMode: GColorMode, animated: Bool) {
192-
super.apply(colorMode: colorMode, animated: animated)
194+
override func apply(theme: ChartTheme, animated: Bool) {
195+
super.apply(theme: theme, animated: animated)
193196

194-
horizontalScalesRenderer.labelsColor = colorMode.chartLabelsColor
195-
verticalScalesRenderer.labelsColor = colorMode.chartLabelsColor
196-
verticalScalesRenderer.axisXColor = colorMode.barChartStrongLinesColor
197-
verticalScalesRenderer.horizontalLinesColor = colorMode.barChartStrongLinesColor
198-
verticalLineRenderer.linesColor = colorMode.chartStrongLinesColor
197+
horizontalScalesRenderer.labelsColor = theme.chartLabelsColor
198+
verticalScalesRenderer.labelsColor = theme.chartLabelsColor
199+
verticalScalesRenderer.axisXColor = theme.barChartStrongLinesColor
200+
verticalScalesRenderer.horizontalLinesColor = theme.barChartStrongLinesColor
201+
verticalLineRenderer.linesColor = theme.chartStrongLinesColor
199202
}
200203
}

‎submodules/GraphCore/Sources/Charts/Controllers/Percent And Pie/PercentPieChartController.swift‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -281,19 +281,19 @@ public class PercentPieChartController: BaseChartController {
281281
})
282282
}
283283

284-
public override func updateChartRange(_ rangeFraction: ClosedRange<CGFloat>) {
284+
public override func updateChartRange(_ rangeFraction: ClosedRange<CGFloat>, animated: Bool = true) {
285285
if isZoomed {
286286
return pieController.chartRangeFractionDidUpdated(rangeFraction)
287287
} else {
288288
return percentController.chartRangeFractionDidUpdated(rangeFraction)
289289
}
290290
}
291291

292-
public override func apply(colorMode: GColorMode, animated: Bool) {
293-
super.apply(colorMode: colorMode, animated: animated)
292+
public override func apply(theme: ChartTheme, animated: Bool) {
293+
super.apply(theme: theme, animated: animated)
294294

295-
pieController.apply(colorMode: colorMode, animated: animated)
296-
percentController.apply(colorMode: colorMode, animated: animated)
297-
transitionRenderer.backgroundColor = colorMode.chartBackgroundColor
295+
pieController.apply(theme: theme, animated: animated)
296+
percentController.apply(theme: theme, animated: animated)
297+
transitionRenderer.backgroundColor = theme.chartBackgroundColor
298298
}
299299
}

‎submodules/GraphCore/Sources/Charts/Controllers/Percent And Pie/PieChartComponentController.swift‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,8 @@ class PieChartComponentController: GeneralChartComponentController {
156156
color: pieItem.color,
157157
visible: true)],
158158
totalValue: nil,
159-
tapAction: nil)
159+
tapAction: nil,
160+
hideAction: nil)
160161
return viewModel
161162
}
162163

0 commit comments

Comments
 (0)