-
-
Notifications
You must be signed in to change notification settings - Fork 6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Chartdata collection conformance #3023
Chartdata collection conformance #3023
Conversation
MutableCollection RandomAccessCollection RangeReplaceableCollection
Codecov Report
@@ Coverage Diff @@
## 4.0.0 #3023 +/- ##
==========================================
- Coverage 23.31% 23.13% -0.18%
==========================================
Files 112 113 +1
Lines 15409 15247 -162
Branches 265 271 +6
==========================================
- Hits 3592 3527 -65
+ Misses 11778 11681 -97
Partials 39 39
Continue to review full report at Codecov.
|
no idea how codecov works. |
@@ -14,7 +14,7 @@ import CoreGraphics | |||
|
|||
open class BarChartData: BarLineScatterCandleBubbleChartData | |||
{ | |||
public override init() | |||
public required init() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why many become required init() now?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's a requirement of RangeReplaceableCollection
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
hmm.. My Dash API Doc does not show this to me
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
From Apple
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@@ -28,6 +28,11 @@ open class CombinedChartData: BarLineScatterCandleBubbleChartData | |||
{ | |||
super.init(dataSets: dataSets) | |||
} | |||
|
|||
public required init(arrayLiteral elements: ChartDataSetProtocol...) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
have you checked if any tricky bug or trap (like index to a wrong position) regards CombinedChartData collection conformance? CombinedChartData is a wrapper putting other data together like barData, lineData.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I made sure that all the new Swift methods/properties have the same implementations as the existing ones, so this shouldn't be an issue.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
sure. It will take more time, need to catch up the dataset protocol first.
{ | ||
super.init() | ||
|
||
_dataSets = dataSets |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is there any implicit declare of dataSets
here, I don't see init(arrayLiteral elements: ChartDataSetProtocol...) declared.
Besides, there used to be a PR that removes _
from some interval vars. Any guideline when to use _
and not? I remember I asked a similar question.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For the _
, this should be changed, but that isn't in the scope of this PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The first part is an error I will fix. Should be _dataSets = elements
// MARK: RandomAccessCollection | ||
extension ChartData: RandomAccessCollection | ||
{ | ||
public func index(before: Index) -> Index |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I saw RandomAccessCollection
has more required methods to provide, but here only one index(before: Index)
which just comes from BidirectionalCollection
. What knowledge I missed here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
From the RandomAccessCollection
doc:
The RandomAccessCollection protocol adds further constraints on the associated Indices and SubSequence types, but otherwise imposes no additional requirements over the BidirectionalCollection protocol. However, in order to meet the complexity guarantees of a random-access collection, either the index for your custom type must conform to the Strideable protocol or you must implement the index(_:offsetBy:) and distance(from:to:) methods with O(1) efficiency
The index of the collection (Int
) conforms to Strideable
, so we get the conformance for free.
notifyDataChanged() | ||
} | ||
|
||
// public func removeSubrange(_ bounds: Range<Index>) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
don't need to call notifyDatChanged here()? how about in replaceSubrange
. Shall we consider add some unit tests for these type of changes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We do because we are accessing the backing var so it's never called. In a future PR I will remove the backing var and refactor this. Currently this works the exact same way as the other add/remove methods, but are simply Swift Protocol versions (as they should be).
Also added remove subrange.
// self.dataSets.removeSubrange(bounds) | ||
// notifyDataChanged() | ||
// } | ||
public func removeSubrange<R>(_ bounds: R) where R : RangeExpression, ChartData.Index == R.Bound { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What R stands for? code style {
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's a generic function. R
is a place holder for a type which is constrained by the where
clause.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So we use R
instead of T
when we have where
constrains, or it does not matter?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can pick whichever you want. T
is often used, but I think Apple chose R
here because it's a R
ange
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can choose anything that is also a valid type (Class, Struct Protocol or Enum) name
// MARK: Swift Accessors | ||
extension ChartData | ||
{ | ||
//TODO: Reevaluate if warning is still true |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm close to finish review soon, do we handle TODO here or in future PRs?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I meant to delete it.
public func remove(at position: Index) -> Element | ||
{ | ||
let element = _dataSets.remove(at: position) | ||
calcMinMax() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
shall we use notifyDataChanged
instead of calcMinMax
here? in CombinedChartData, they works differently then their super class.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I thought about that. I think we should keep the way it is now for this PR. The existing open func removeDataSet(_ dataSet: ChartDataSetProtocol!) -> Bool
uses calcMinMax()
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe we can rethink that in another PR though.
} | ||
|
||
// MARK: RangeReplaceableCollection | ||
extension ChartData: RangeReplaceableCollection |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Generally it should works fine with the collection protocol adoption. The devil may exist in CombinedChartData in the future, as it works differently than usual chart data.
We actually don't append/remove data sets into a combined data, we just assign new sub chartData. e.g.
open override func removeDataSetByIndex(_ index: Int) -> Bool
{
print("removeDataSet(index) not supported for CombinedData", terminator: "\n")
return false
}
I think we should override the protocols in CombinedChartData to not allow such operations?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I will do that right now : )
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed
@jjatie I'm thinking of disabling all operations(add/remove/update) on dataSet in ChartData for |
@liuxuan30 done |
Thanks, let's wait CI finish up |
* Remove java interface convention (#2997) * Renamed `IMarker` to `Marker` following Swift API guidelines. * Renamed `IAxisValueFormatter` to `AxisValueFormatter` * Renamed `IFillFormatter` to `FillFormatter` * Renamed `IValueFormatter` to `ValueFormatter` * Renamed `IHighlighter` to `Highlighter` * Renamed `I*DataSet` to `*DataSetProtocol` to follow Swift API guidelines * Fixed naming of `LineRadarChartDataSetProtocol` and `RadarChartDataSetProtocol` from previous commit * Renamed "Interfaces" to "DataProviders" for clarity * Updated Demos to for new type naming * Renderer protocols (#3136) * Renderer is now a protocol Renamed Renderers, and organized the Renderer folder. * DataRenderer is now a protocol * AxisRenderer is now a protocol * Chartviewbase redundant ivar (#3045) * Fixed using wrong axis (Issue #2257) * fix #1830. credit from #2049 (#2874) * fix #1830. credit from #2049 * add combined chart unit tests for iOS, tvOS (macOS only have build process) * use iterater rather than index * Removed redundant ivars in BarLineChartViewBase (#3043) * Removed redundant ivars in favour of proper access control * Moved initialization of axes to their declaration to keep the same optionality exposed. * Update 4.0.0 with master (#3135) * Replaced relevant `ChartUtils` methods with `Double` extensions (#2994) * Replaced relevant `ChartUtils` methods with `Double` extensions Improves readability. `nextUp` is built in and provides the same functionality. * Updated `ChartUtilsTests` to match changes * add option to build demo projects unit tests on iOS (#3121) * add option to build demo projects unit tests on iOS * add ChartsDemo-OSX build test. * Update ViewPortHandler.swift (#3143) fix a small bug * Refactored ChartUtils method into CGPoint extension (#3087) * Refactored ChartUtils method into CGPoint extension * Replaced ChartUtils.defaultValueFormatter() * Codestyle fixes * ChartViewBase cleanup For the most part, condensing logic and using `guard` where appropriate Removed optionality of many internal variables as they were only optional to allow for deferred initialization. This is now replaced with lazy vars. Removed empty initializer overrides. `fileprivate` is now `private` * Removed redundant ivars In favour of proper access control * Fixes after merge * Renamed `animator` to `chartAnimator` on `ChartViewBase` to no conflict with `NSView`'s `animator()` method. * pulled latest master * Code style fix * Removed AxisRendererBase.swift * Fixed demos * BarChartRenderer Logic cleanup (#3008) * Logic cleanup Mostly using guard where appropriate Few very minor performance improvements * Made use of `==` where appropriate to simplify logic * Returned fatalError message * Replaced `Buffer` class with simple typealias. There was only one instance where reference semantics might have be helpful, but was easily reimplemented with value semantics. * Syncing 4.0.0 with master (#3160) * Fixed using wrong axis (Issue #2257) * fix #1830. credit from #2049 (#2874) * fix #1830. credit from #2049 * add combined chart unit tests for iOS, tvOS (macOS only have build process) * use iterater rather than index * Removed redundant ivars in BarLineChartViewBase (#3043) * Removed redundant ivars in favour of proper access control * Moved initialization of axes to their declaration to keep the same optionality exposed. * Update 4.0.0 with master (#3135) * Replaced relevant `ChartUtils` methods with `Double` extensions (#2994) * Replaced relevant `ChartUtils` methods with `Double` extensions Improves readability. `nextUp` is built in and provides the same functionality. * Updated `ChartUtilsTests` to match changes * add option to build demo projects unit tests on iOS (#3121) * add option to build demo projects unit tests on iOS * add ChartsDemo-OSX build test. * Update ViewPortHandler.swift (#3143) fix a small bug * Refactored ChartUtils method into CGPoint extension (#3087) * Refactored ChartUtils method into CGPoint extension * Replaced ChartUtils.defaultValueFormatter() * Codestyle fixes * Minor cleanup to Highlighter types (#3003) * Minor cleanup to Highlighter types * Fixes for PR * Pulled master and updated code style * added DataApproximator+N extension (#2848) * added DataApproximator+N extension * fixed PR notes * Readded in missing files * Moved ChartUtils drawing methods into CGContext extension (#3086) * Fixed using wrong axis (Issue #2257) * fix #1830. credit from #2049 (#2874) * fix #1830. credit from #2049 * add combined chart unit tests for iOS, tvOS (macOS only have build process) * use iterater rather than index * Removed redundant ivars in BarLineChartViewBase (#3043) * Removed redundant ivars in favour of proper access control * Moved initialization of axes to their declaration to keep the same optionality exposed. * Update 4.0.0 with master (#3135) * Replaced relevant `ChartUtils` methods with `Double` extensions (#2994) * Replaced relevant `ChartUtils` methods with `Double` extensions Improves readability. `nextUp` is built in and provides the same functionality. * Updated `ChartUtilsTests` to match changes * add option to build demo projects unit tests on iOS (#3121) * add option to build demo projects unit tests on iOS * add ChartsDemo-OSX build test. * Update ViewPortHandler.swift (#3143) fix a small bug * Refactored ChartUtils method into CGPoint extension (#3087) * Refactored ChartUtils method into CGPoint extension * Replaced ChartUtils.defaultValueFormatter() * Codestyle fixes * Minor cleanup to Highlighter types (#3003) * Minor cleanup to Highlighter types * Fixes for PR * Pulled master and updated code style * added DataApproximator+N extension (#2848) * added DataApproximator+N extension * fixed PR notes * Moved drawing methods into CGContext extension Much nicer call sites. Renamed some parameter names. Removed `NSAttributedStringKey` where type inference was sufficient. Minor tidy of drawText calls in AxisRenderers * Pulled latest master * Pulled master * Fixed code style * Utils Cleanup (#3054) * Cleanup Replaced unnecessary getters with proper access control Replaced unnecessary convenience inits with default parameters Minor refactoring * Pulled latest master * Pulled latest master * Pulled latest master * Fix after pulling master * Fixed using wrong axis (Issue #2257) * fix #1830. credit from #2049 (#2874) * fix #1830. credit from #2049 * add combined chart unit tests for iOS, tvOS (macOS only have build process) * use iterater rather than index * Removed redundant ivars in BarLineChartViewBase (#3043) * Removed redundant ivars in favour of proper access control * Moved initialization of axes to their declaration to keep the same optionality exposed. * Update 4.0.0 with master (#3135) * Replaced relevant `ChartUtils` methods with `Double` extensions (#2994) * Replaced relevant `ChartUtils` methods with `Double` extensions Improves readability. `nextUp` is built in and provides the same functionality. * Updated `ChartUtilsTests` to match changes * add option to build demo projects unit tests on iOS (#3121) * add option to build demo projects unit tests on iOS * add ChartsDemo-OSX build test. * Update ViewPortHandler.swift (#3143) fix a small bug * Refactored ChartUtils method into CGPoint extension (#3087) * Refactored ChartUtils method into CGPoint extension * Replaced ChartUtils.defaultValueFormatter() * Codestyle fixes * Finished cleanup * Pulled master * Chartdata collection conformance (#3023) * Added Collection conformances MutableCollection RandomAccessCollection RangeReplaceableCollection * Fixed required initializers * ChartData adopts ExressibleByArrayLiteral * Updates for PR Also added remove subrange. * PR review fixes * Removed unnecessary `get` from subscripts. * Disabled `remove(at:)` for CombinedChartView * Relocated `appendEntry(_:todataSet:)` * Removed methods from CombinedChartData * weak -> unowned (#3039) * weak -> unowned `ViewPortJob`s are owned by the Charts that make them. They are guaranteed to only exist while the chart exists. The `Transformer` and `ViewPortHandler` are supplied by the chart, so they will also only exist while the chart exists. Therefor none of them need to be `weak`, but can be `unowned` instead. It's a minor change in the code base (removing some guard statements), but it makes it much easier to discern how the framework is architected. * pulled latest master * Removed optionality from valueFormatter where appropriate (#3106) * Removed optionality from valueFormatter where appropriate In ChartBaseDataSet, `valueFormatter` never returned nil, and escaped early if trying to set it to nil. It appears this was made optional solely to provide lazy initialization. We now use a lazy var instead. In AxisBase, the backing var `_axisValueFormatter` would never be treated as nil, and appears to be made optional solely to provide lazy initialization. We now use a lazy var instead. In `valueFormatter` we can remove the `nil` check, but leave it optional to keep the same functionality. * Pulled 4.0.0 * Pulled latest 4.0.0 * Fixed pro file * Chartdata collection refactor (#3024) * Added Collection conformances MutableCollection RandomAccessCollection RangeReplaceableCollection * [#3018] Refactored use of `ChartData` to use new `Collection` conformances * Fixed required initializers * ChartData adopts ExressibleByArrayLiteral * Modified demos to take advantage of collection conformance. * Removed unnecessary `get` from subscripts. * Removed redundant methods * Relocated `appendEntry(_:todataSet:)` * Removed methods from CombinedChartData * Moved the default value formatter (#3088) * Moved the default value formatter It is now simply `DefaultValueFomatter()` Removed unnecessary backing ivars in `DefaultValuetFormatter` in favour of property observers Deprecated static func constructor in favour of initializer * Add option to rotate value text for line charts * Add value text rotation for bar charts * Add value text rotation for other charts * Fixed misuse/deprecation of "!" operator * Updated projects for Xcode 9.3 and Swift 4.1 added a workspace to include all demos with the project to make it easier to test changes * Pulled master * Moved travis to Xcode 9.3beta temporarily * Updated Rakefile for new project names * Updated demo imports * Rename valueRotationAngle -> valueLabelAngle * Make function private & remove line break * Refactored ChartData (#3169) * Added Collection conformances MutableCollection RandomAccessCollection RangeReplaceableCollection * [#3018] Refactored use of `ChartData` to use new `Collection` conformances * Fixed required initializers * ChartData adopts ExressibleByArrayLiteral * Modified demos to take advantage of collection conformance. * Updates for PR Also added remove subrange. * Refactored ChartData Removed redundancy from min/max logic. Lots of naming changes. Cleaner implementations. * PR review fixes * Removed unnecessary `get` from subscripts. * Disabled `remove(at:)` for CombinedChartView * Removed redundant methods * Relocated `appendEntry(_:todataSet:)` * pulled latest 4.0.0 * Disabled Collection support for CombinedChartData * Removed methods from CombinedChartData * Pulled latest 4.0 * Fixes after merge * Removed used of dataSet(forIndex:) * Fixed merge conflicts * Fixed merge conflicts * updated demos * Pulled latest 4.0.0 * Fixed demos * Fixed objective c demos * Moved travis to Xcode 9.3 beta temporarily * Fixed macOS demo info.plist and tv demo device name * PR Fixes * Fixed objective-c naming * PR Fixes * fix comment * Remove unnecessary file (#3432) * Dataset logic cleanup (#3001) * Cleaned up `ChartDataSet` logic Added TODOs for areas where simple changes can help improve Swift consistency. * Tidied up logic for `ChartDataSet` subclasses Minor changes to take advantage of Swift features and help improve readability. * Added Collection conformances MutableCollection RandomAccessCollection RangeReplaceableCollection * [#3018] Refactored use of `ChartData` to use new `Collection` conformances * Fixed required initializers * ChartData adopts ExressibleByArrayLiteral * Modified demos to take advantage of collection conformance. * Pulled latest master * Pulled latest master * Updates for PR Also added remove subrange. * Refactored ChartData Removed redundancy from min/max logic. Lots of naming changes. Cleaner implementations. * PR review fixes * Removed unnecessary `get` from subscripts. * Disabled `remove(at:)` for CombinedChartView * Removed redundant methods * Relocated `appendEntry(_:todataSet:)` * pulled latest 4.0.0 * Disabled Collection support for CombinedChartData * Removed methods from CombinedChartData * Pulled latest 4.0 * Fixes after merge * Removed used of dataSet(forIndex:) * Fixed merge conflicts * Fixed merge conflicts * updated demos * Pulled latest 4.0.0 * Fixed demos * Fixed objective c demos * Moved travis to Xcode 9.3 beta temporarily * Fixed macOS demo info.plist and tv demo device name * PR Fixes * Fixed objective-c naming * PR Fixes * PR Fixes * Added gradient line drawing to LineChartRenderer * Stabilize and clean the code * Extract line drawing into function * Fix macOS build * Move `drawGradientLine` out of `drawLine` method * Remove unused parameters from `drawLine` function * Fix gradient location calculation * Add toggle gradient line into demo options * Improvements after code review * Code cleanup * Remove unnecessary function for generating gradient line - additional code optimizations * Fix: gradient lines peaks are truncated when line width > 1 * Make legendRenderer property public in order to be externally customizable * fix build issue in objc demo * Add minimum slice angle for value labels to PieChartView * Rename drawSliceTextMinimumAngle to sliceTextDrawingThreshold * Fix sliceTextDrawingThreshold renaming in demo * fix build of demos * Add label colors to legend entries (#3558) * add label colors to legend entries * Change interface of LegendEntry * Add Swift version 4.1 to podspec * Turned gradient components and locations into constants (#3775) * Cleaned up `ChartDataSet` logic Added TODOs for areas where simple changes can help improve Swift consistency. * Added Collection conformances MutableCollection RandomAccessCollection RangeReplaceableCollection * [#3018] Refactored use of `ChartData` to use new `Collection` conformances * Fixed required initializers * ChartData adopts ExressibleByArrayLiteral * Modified demos to take advantage of collection conformance. * Pulled latest master * Unified Style Replaced custom algorithms with built-in ones Made axis renderer implementations feel "Swift-ier" * Updates for PR Also added remove subrange. * Refactored ChartData Removed redundancy from min/max logic. Lots of naming changes. Cleaner implementations. * Fixed horizontal barchart bug, * Removed unnecessary `get` from subscripts. * Disabled `remove(at:)` for CombinedChartView * Relocated `appendEntry(_:todataSet:)` * Disabled Collection support for CombinedChartData * Removed used of dataSet(forIndex:) * Fixed merge conflicts * updated demos * PR Fixes * Fixed axisLabels calculation * Fill rewrite (#3084) close #3140 * Fill is now a protocol Different fill logic is broken up into separate classes. This has a few benefits: 1. It makes the `Fill` types more readable (logic is grouped together) 2. No optionals 3. Most importantly it allows consumers to create new Fill types without looking into the framework. * Added super.init() for objc * Updated Fill access No need to subclass existing fills now that the system is more flexible. If functionality is needed from another fill, user can call it within their own `fillPath(context: CGContext, rect: CGRect)` implementation. * Updated Fill Names * Update Fill.swift update code style Co-authored-by: Jacob Christie <jchristie@christie.teamspace.ad> Co-authored-by: Xuan <liuxuan30@gmail.com> * update to Swift 5, Xcode 13.5.1, and fix warnings * fix all compile errors and wrong symbols either by git or me. * revert back to convenience init for BarChartDataSet fix ChartDataTests compile errors: use new API dataSet(forLabel:, ignorecase: ) * actually, I compared the old master and find this is a mistake while merging to make init(label:) in BarChartDataSet. It should be in ChartDataSet. * fix -0.0 issue in 4.0 merge. fix func calculateLegendOffsets in BarLineChartViewBase due to mistaking added back offsetBottom += xAxis.labelRotatedHeight. see #4277 for details now bar & horizontal bar chart tests should pass. * fix pie chart UT failures. didSet will no be called in init(), so we call it manually also fix set.valueFormatter in data setter * fix line chart UT failures * Remove `isIndirectValuesCall` * Bump Travis to Xcode 12 * Remove misuse of `count` (#4461) * Remove misuse of `count` * Fix protocol method name * Update ChartColorTemplates.swift use fallbackColor for `colorFromString()` * Revert "Update ChartColorTemplates.swift" This reverts commit b4111fd. Co-authored-by: Xuan <liuxuan30@gmail.com> * switch to source compiling swift code * fix Carthage error after changing to source compile. Carthage/Carthage#3019 there is a workaround mentioned [here](Carthage/Carthage#3019 (comment)) making travis to build from carthage.sh until the root issue is fixed. * update project settings * recreate iOS+tvOS images due to iOS14 SDK uncertain changes. * Remove unnecessary ternary in boolean expression (#4435) * Remove internal use of datasets (#4459) * Remove internal use of ChartData.dataSets * Rebased onto ResolveConflicts * Remove duplicated line Co-authored-by: jjatie <j.christie@icloud.com> Co-authored-by: ctran <chinh.tran@mail.de> Co-authored-by: larryonoff <larryonoff@gmail.com> Co-authored-by: Jacob Christie <jakechristie@dal.ca> Co-authored-by: Katalin Nagy <nagy.katalin@codespring.ro> Co-authored-by: Pierre-Marc Airoldi <pierremarcairoldi@gmail.com> Co-authored-by: Marshall Weir <marshall.weir@gmail.com> Co-authored-by: Jacob Christie <jacob.christie@kinduct.com> Co-authored-by: Jacob Christie <19879272+jjatie@users.noreply.github.com> Co-authored-by: Jacob Christie <jchristie@christie.teamspace.ad> Co-authored-by: BJ Miller <2272819+SixFiveSoftware@users.noreply.github.com>
* Remove java interface convention (ChartsOrg#2997) * Renamed `IMarker` to `Marker` following Swift API guidelines. * Renamed `IAxisValueFormatter` to `AxisValueFormatter` * Renamed `IFillFormatter` to `FillFormatter` * Renamed `IValueFormatter` to `ValueFormatter` * Renamed `IHighlighter` to `Highlighter` * Renamed `I*DataSet` to `*DataSetProtocol` to follow Swift API guidelines * Fixed naming of `LineRadarChartDataSetProtocol` and `RadarChartDataSetProtocol` from previous commit * Renamed "Interfaces" to "DataProviders" for clarity * Updated Demos to for new type naming * Renderer protocols (ChartsOrg#3136) * Renderer is now a protocol Renamed Renderers, and organized the Renderer folder. * DataRenderer is now a protocol * AxisRenderer is now a protocol * Chartviewbase redundant ivar (ChartsOrg#3045) * Fixed using wrong axis (Issue ChartsOrg#2257) * fix ChartsOrg#1830. credit from ChartsOrg#2049 (ChartsOrg#2874) * fix ChartsOrg#1830. credit from ChartsOrg#2049 * add combined chart unit tests for iOS, tvOS (macOS only have build process) * use iterater rather than index * Removed redundant ivars in BarLineChartViewBase (ChartsOrg#3043) * Removed redundant ivars in favour of proper access control * Moved initialization of axes to their declaration to keep the same optionality exposed. * Update 4.0.0 with master (ChartsOrg#3135) * Replaced relevant `ChartUtils` methods with `Double` extensions (ChartsOrg#2994) * Replaced relevant `ChartUtils` methods with `Double` extensions Improves readability. `nextUp` is built in and provides the same functionality. * Updated `ChartUtilsTests` to match changes * add option to build demo projects unit tests on iOS (ChartsOrg#3121) * add option to build demo projects unit tests on iOS * add ChartsDemo-OSX build test. * Update ViewPortHandler.swift (ChartsOrg#3143) fix a small bug * Refactored ChartUtils method into CGPoint extension (ChartsOrg#3087) * Refactored ChartUtils method into CGPoint extension * Replaced ChartUtils.defaultValueFormatter() * Codestyle fixes * ChartViewBase cleanup For the most part, condensing logic and using `guard` where appropriate Removed optionality of many internal variables as they were only optional to allow for deferred initialization. This is now replaced with lazy vars. Removed empty initializer overrides. `fileprivate` is now `private` * Removed redundant ivars In favour of proper access control * Fixes after merge * Renamed `animator` to `chartAnimator` on `ChartViewBase` to no conflict with `NSView`'s `animator()` method. * pulled latest master * Code style fix * Removed AxisRendererBase.swift * Fixed demos * BarChartRenderer Logic cleanup (ChartsOrg#3008) * Logic cleanup Mostly using guard where appropriate Few very minor performance improvements * Made use of `==` where appropriate to simplify logic * Returned fatalError message * Replaced `Buffer` class with simple typealias. There was only one instance where reference semantics might have be helpful, but was easily reimplemented with value semantics. * Syncing 4.0.0 with master (ChartsOrg#3160) * Fixed using wrong axis (Issue ChartsOrg#2257) * fix ChartsOrg#1830. credit from ChartsOrg#2049 (ChartsOrg#2874) * fix ChartsOrg#1830. credit from ChartsOrg#2049 * add combined chart unit tests for iOS, tvOS (macOS only have build process) * use iterater rather than index * Removed redundant ivars in BarLineChartViewBase (ChartsOrg#3043) * Removed redundant ivars in favour of proper access control * Moved initialization of axes to their declaration to keep the same optionality exposed. * Update 4.0.0 with master (ChartsOrg#3135) * Replaced relevant `ChartUtils` methods with `Double` extensions (ChartsOrg#2994) * Replaced relevant `ChartUtils` methods with `Double` extensions Improves readability. `nextUp` is built in and provides the same functionality. * Updated `ChartUtilsTests` to match changes * add option to build demo projects unit tests on iOS (ChartsOrg#3121) * add option to build demo projects unit tests on iOS * add ChartsDemo-OSX build test. * Update ViewPortHandler.swift (ChartsOrg#3143) fix a small bug * Refactored ChartUtils method into CGPoint extension (ChartsOrg#3087) * Refactored ChartUtils method into CGPoint extension * Replaced ChartUtils.defaultValueFormatter() * Codestyle fixes * Minor cleanup to Highlighter types (ChartsOrg#3003) * Minor cleanup to Highlighter types * Fixes for PR * Pulled master and updated code style * added DataApproximator+N extension (ChartsOrg#2848) * added DataApproximator+N extension * fixed PR notes * Readded in missing files * Moved ChartUtils drawing methods into CGContext extension (ChartsOrg#3086) * Fixed using wrong axis (Issue ChartsOrg#2257) * fix ChartsOrg#1830. credit from ChartsOrg#2049 (ChartsOrg#2874) * fix ChartsOrg#1830. credit from ChartsOrg#2049 * add combined chart unit tests for iOS, tvOS (macOS only have build process) * use iterater rather than index * Removed redundant ivars in BarLineChartViewBase (ChartsOrg#3043) * Removed redundant ivars in favour of proper access control * Moved initialization of axes to their declaration to keep the same optionality exposed. * Update 4.0.0 with master (ChartsOrg#3135) * Replaced relevant `ChartUtils` methods with `Double` extensions (ChartsOrg#2994) * Replaced relevant `ChartUtils` methods with `Double` extensions Improves readability. `nextUp` is built in and provides the same functionality. * Updated `ChartUtilsTests` to match changes * add option to build demo projects unit tests on iOS (ChartsOrg#3121) * add option to build demo projects unit tests on iOS * add ChartsDemo-OSX build test. * Update ViewPortHandler.swift (ChartsOrg#3143) fix a small bug * Refactored ChartUtils method into CGPoint extension (ChartsOrg#3087) * Refactored ChartUtils method into CGPoint extension * Replaced ChartUtils.defaultValueFormatter() * Codestyle fixes * Minor cleanup to Highlighter types (ChartsOrg#3003) * Minor cleanup to Highlighter types * Fixes for PR * Pulled master and updated code style * added DataApproximator+N extension (ChartsOrg#2848) * added DataApproximator+N extension * fixed PR notes * Moved drawing methods into CGContext extension Much nicer call sites. Renamed some parameter names. Removed `NSAttributedStringKey` where type inference was sufficient. Minor tidy of drawText calls in AxisRenderers * Pulled latest master * Pulled master * Fixed code style * Utils Cleanup (ChartsOrg#3054) * Cleanup Replaced unnecessary getters with proper access control Replaced unnecessary convenience inits with default parameters Minor refactoring * Pulled latest master * Pulled latest master * Pulled latest master * Fix after pulling master * Fixed using wrong axis (Issue ChartsOrg#2257) * fix ChartsOrg#1830. credit from ChartsOrg#2049 (ChartsOrg#2874) * fix ChartsOrg#1830. credit from ChartsOrg#2049 * add combined chart unit tests for iOS, tvOS (macOS only have build process) * use iterater rather than index * Removed redundant ivars in BarLineChartViewBase (ChartsOrg#3043) * Removed redundant ivars in favour of proper access control * Moved initialization of axes to their declaration to keep the same optionality exposed. * Update 4.0.0 with master (ChartsOrg#3135) * Replaced relevant `ChartUtils` methods with `Double` extensions (ChartsOrg#2994) * Replaced relevant `ChartUtils` methods with `Double` extensions Improves readability. `nextUp` is built in and provides the same functionality. * Updated `ChartUtilsTests` to match changes * add option to build demo projects unit tests on iOS (ChartsOrg#3121) * add option to build demo projects unit tests on iOS * add ChartsDemo-OSX build test. * Update ViewPortHandler.swift (ChartsOrg#3143) fix a small bug * Refactored ChartUtils method into CGPoint extension (ChartsOrg#3087) * Refactored ChartUtils method into CGPoint extension * Replaced ChartUtils.defaultValueFormatter() * Codestyle fixes * Finished cleanup * Pulled master * Chartdata collection conformance (ChartsOrg#3023) * Added Collection conformances MutableCollection RandomAccessCollection RangeReplaceableCollection * Fixed required initializers * ChartData adopts ExressibleByArrayLiteral * Updates for PR Also added remove subrange. * PR review fixes * Removed unnecessary `get` from subscripts. * Disabled `remove(at:)` for CombinedChartView * Relocated `appendEntry(_:todataSet:)` * Removed methods from CombinedChartData * weak -> unowned (ChartsOrg#3039) * weak -> unowned `ViewPortJob`s are owned by the Charts that make them. They are guaranteed to only exist while the chart exists. The `Transformer` and `ViewPortHandler` are supplied by the chart, so they will also only exist while the chart exists. Therefor none of them need to be `weak`, but can be `unowned` instead. It's a minor change in the code base (removing some guard statements), but it makes it much easier to discern how the framework is architected. * pulled latest master * Removed optionality from valueFormatter where appropriate (ChartsOrg#3106) * Removed optionality from valueFormatter where appropriate In ChartBaseDataSet, `valueFormatter` never returned nil, and escaped early if trying to set it to nil. It appears this was made optional solely to provide lazy initialization. We now use a lazy var instead. In AxisBase, the backing var `_axisValueFormatter` would never be treated as nil, and appears to be made optional solely to provide lazy initialization. We now use a lazy var instead. In `valueFormatter` we can remove the `nil` check, but leave it optional to keep the same functionality. * Pulled 4.0.0 * Pulled latest 4.0.0 * Fixed pro file * Chartdata collection refactor (ChartsOrg#3024) * Added Collection conformances MutableCollection RandomAccessCollection RangeReplaceableCollection * [ChartsOrg#3018] Refactored use of `ChartData` to use new `Collection` conformances * Fixed required initializers * ChartData adopts ExressibleByArrayLiteral * Modified demos to take advantage of collection conformance. * Removed unnecessary `get` from subscripts. * Removed redundant methods * Relocated `appendEntry(_:todataSet:)` * Removed methods from CombinedChartData * Moved the default value formatter (ChartsOrg#3088) * Moved the default value formatter It is now simply `DefaultValueFomatter()` Removed unnecessary backing ivars in `DefaultValuetFormatter` in favour of property observers Deprecated static func constructor in favour of initializer * Add option to rotate value text for line charts * Add value text rotation for bar charts * Add value text rotation for other charts * Fixed misuse/deprecation of "!" operator * Updated projects for Xcode 9.3 and Swift 4.1 added a workspace to include all demos with the project to make it easier to test changes * Pulled master * Moved travis to Xcode 9.3beta temporarily * Updated Rakefile for new project names * Updated demo imports * Rename valueRotationAngle -> valueLabelAngle * Make function private & remove line break * Refactored ChartData (ChartsOrg#3169) * Added Collection conformances MutableCollection RandomAccessCollection RangeReplaceableCollection * [ChartsOrg#3018] Refactored use of `ChartData` to use new `Collection` conformances * Fixed required initializers * ChartData adopts ExressibleByArrayLiteral * Modified demos to take advantage of collection conformance. * Updates for PR Also added remove subrange. * Refactored ChartData Removed redundancy from min/max logic. Lots of naming changes. Cleaner implementations. * PR review fixes * Removed unnecessary `get` from subscripts. * Disabled `remove(at:)` for CombinedChartView * Removed redundant methods * Relocated `appendEntry(_:todataSet:)` * pulled latest 4.0.0 * Disabled Collection support for CombinedChartData * Removed methods from CombinedChartData * Pulled latest 4.0 * Fixes after merge * Removed used of dataSet(forIndex:) * Fixed merge conflicts * Fixed merge conflicts * updated demos * Pulled latest 4.0.0 * Fixed demos * Fixed objective c demos * Moved travis to Xcode 9.3 beta temporarily * Fixed macOS demo info.plist and tv demo device name * PR Fixes * Fixed objective-c naming * PR Fixes * fix comment * Remove unnecessary file (ChartsOrg#3432) * Dataset logic cleanup (ChartsOrg#3001) * Cleaned up `ChartDataSet` logic Added TODOs for areas where simple changes can help improve Swift consistency. * Tidied up logic for `ChartDataSet` subclasses Minor changes to take advantage of Swift features and help improve readability. * Added Collection conformances MutableCollection RandomAccessCollection RangeReplaceableCollection * [ChartsOrg#3018] Refactored use of `ChartData` to use new `Collection` conformances * Fixed required initializers * ChartData adopts ExressibleByArrayLiteral * Modified demos to take advantage of collection conformance. * Pulled latest master * Pulled latest master * Updates for PR Also added remove subrange. * Refactored ChartData Removed redundancy from min/max logic. Lots of naming changes. Cleaner implementations. * PR review fixes * Removed unnecessary `get` from subscripts. * Disabled `remove(at:)` for CombinedChartView * Removed redundant methods * Relocated `appendEntry(_:todataSet:)` * pulled latest 4.0.0 * Disabled Collection support for CombinedChartData * Removed methods from CombinedChartData * Pulled latest 4.0 * Fixes after merge * Removed used of dataSet(forIndex:) * Fixed merge conflicts * Fixed merge conflicts * updated demos * Pulled latest 4.0.0 * Fixed demos * Fixed objective c demos * Moved travis to Xcode 9.3 beta temporarily * Fixed macOS demo info.plist and tv demo device name * PR Fixes * Fixed objective-c naming * PR Fixes * PR Fixes * Added gradient line drawing to LineChartRenderer * Stabilize and clean the code * Extract line drawing into function * Fix macOS build * Move `drawGradientLine` out of `drawLine` method * Remove unused parameters from `drawLine` function * Fix gradient location calculation * Add toggle gradient line into demo options * Improvements after code review * Code cleanup * Remove unnecessary function for generating gradient line - additional code optimizations * Fix: gradient lines peaks are truncated when line width > 1 * Make legendRenderer property public in order to be externally customizable * fix build issue in objc demo * Add minimum slice angle for value labels to PieChartView * Rename drawSliceTextMinimumAngle to sliceTextDrawingThreshold * Fix sliceTextDrawingThreshold renaming in demo * fix build of demos * Add label colors to legend entries (ChartsOrg#3558) * add label colors to legend entries * Change interface of LegendEntry * Add Swift version 4.1 to podspec * Turned gradient components and locations into constants (ChartsOrg#3775) * Cleaned up `ChartDataSet` logic Added TODOs for areas where simple changes can help improve Swift consistency. * Added Collection conformances MutableCollection RandomAccessCollection RangeReplaceableCollection * [ChartsOrg#3018] Refactored use of `ChartData` to use new `Collection` conformances * Fixed required initializers * ChartData adopts ExressibleByArrayLiteral * Modified demos to take advantage of collection conformance. * Pulled latest master * Unified Style Replaced custom algorithms with built-in ones Made axis renderer implementations feel "Swift-ier" * Updates for PR Also added remove subrange. * Refactored ChartData Removed redundancy from min/max logic. Lots of naming changes. Cleaner implementations. * Fixed horizontal barchart bug, * Removed unnecessary `get` from subscripts. * Disabled `remove(at:)` for CombinedChartView * Relocated `appendEntry(_:todataSet:)` * Disabled Collection support for CombinedChartData * Removed used of dataSet(forIndex:) * Fixed merge conflicts * updated demos * PR Fixes * Fixed axisLabels calculation * Fill rewrite (ChartsOrg#3084) close ChartsOrg#3140 * Fill is now a protocol Different fill logic is broken up into separate classes. This has a few benefits: 1. It makes the `Fill` types more readable (logic is grouped together) 2. No optionals 3. Most importantly it allows consumers to create new Fill types without looking into the framework. * Added super.init() for objc * Updated Fill access No need to subclass existing fills now that the system is more flexible. If functionality is needed from another fill, user can call it within their own `fillPath(context: CGContext, rect: CGRect)` implementation. * Updated Fill Names * Update Fill.swift update code style Co-authored-by: Jacob Christie <jchristie@christie.teamspace.ad> Co-authored-by: Xuan <liuxuan30@gmail.com> * update to Swift 5, Xcode 13.5.1, and fix warnings * fix all compile errors and wrong symbols either by git or me. * revert back to convenience init for BarChartDataSet fix ChartDataTests compile errors: use new API dataSet(forLabel:, ignorecase: ) * actually, I compared the old master and find this is a mistake while merging to make init(label:) in BarChartDataSet. It should be in ChartDataSet. * fix -0.0 issue in 4.0 merge. fix func calculateLegendOffsets in BarLineChartViewBase due to mistaking added back offsetBottom += xAxis.labelRotatedHeight. see ChartsOrg#4277 for details now bar & horizontal bar chart tests should pass. * fix pie chart UT failures. didSet will no be called in init(), so we call it manually also fix set.valueFormatter in data setter * fix line chart UT failures * Remove `isIndirectValuesCall` * Bump Travis to Xcode 12 * Remove misuse of `count` (ChartsOrg#4461) * Remove misuse of `count` * Fix protocol method name * Update ChartColorTemplates.swift use fallbackColor for `colorFromString()` * Revert "Update ChartColorTemplates.swift" This reverts commit b4111fd. Co-authored-by: Xuan <liuxuan30@gmail.com> * switch to source compiling swift code * fix Carthage error after changing to source compile. Carthage/Carthage#3019 there is a workaround mentioned [here](Carthage/Carthage#3019 (comment)) making travis to build from carthage.sh until the root issue is fixed. * update project settings * recreate iOS+tvOS images due to iOS14 SDK uncertain changes. * Remove unnecessary ternary in boolean expression (ChartsOrg#4435) * Remove internal use of datasets (ChartsOrg#4459) * Remove internal use of ChartData.dataSets * Rebased onto ResolveConflicts * Remove duplicated line Co-authored-by: jjatie <j.christie@icloud.com> Co-authored-by: ctran <chinh.tran@mail.de> Co-authored-by: larryonoff <larryonoff@gmail.com> Co-authored-by: Jacob Christie <jakechristie@dal.ca> Co-authored-by: Katalin Nagy <nagy.katalin@codespring.ro> Co-authored-by: Pierre-Marc Airoldi <pierremarcairoldi@gmail.com> Co-authored-by: Marshall Weir <marshall.weir@gmail.com> Co-authored-by: Jacob Christie <jacob.christie@kinduct.com> Co-authored-by: Jacob Christie <19879272+jjatie@users.noreply.github.com> Co-authored-by: Jacob Christie <jchristie@christie.teamspace.ad> Co-authored-by: BJ Miller <2272819+SixFiveSoftware@users.noreply.github.com>
Implemented
ChartData
Collection
conformances.