Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 15e73af3b3 | |||
| aac41605aa | |||
| 0bfc904f58 | |||
| b54f27e67d | |||
| ff17a56eff | |||
| 93d98d7b87 | |||
| ba0a44ba3f | |||
| 621e9a7386 | |||
| 28ad5d7557 | |||
| d299cd6e7e | |||
| abf14f342a | |||
| 299405efe1 | |||
| 27ebf131c9 |
+67
-9
@@ -1,11 +1,61 @@
|
||||
# Change Log
|
||||
|
||||
## [Unreleased](https://github.com/Jawbone/JBChartView/tree/HEAD)
|
||||
## [v2.8.13](https://github.com/Jawbone/JBChartView/tree/v2.8.13) (2015-04-16)
|
||||
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.8.10...HEAD)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.8.12...v2.8.13)
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- Wrong calculation of the lineIndex [\#157](https://github.com/Jawbone/JBChartView/issues/157)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Swift round up for respondsToSelector\(\) and sizeWithFont\(\) [\#156](https://github.com/Jawbone/JBChartView/issues/156)
|
||||
|
||||
## [v2.8.12](https://github.com/Jawbone/JBChartView/tree/v2.8.12) (2015-04-13)
|
||||
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.8.11...v2.8.12)
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- Footer and Header view Swift implementation [\#152](https://github.com/Jawbone/JBChartView/issues/152)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Problems with selection when JBLineChartView is within UITableView [\#155](https://github.com/Jawbone/JBChartView/issues/155)
|
||||
|
||||
- Show chart selection permanently [\#151](https://github.com/Jawbone/JBChartView/issues/151)
|
||||
|
||||
- Crash when returning NAN [\#150](https://github.com/Jawbone/JBChartView/issues/150)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Fix warnings when building w/ Xcode 6.3 [\#154](https://github.com/Jawbone/JBChartView/pull/154) ([amro](https://github.com/amro))
|
||||
|
||||
- Add ability for the graphs to always show the selected data value and to pre-set which index is selected [\#147](https://github.com/Jawbone/JBChartView/pull/147) ([MobileVet](https://github.com/MobileVet))
|
||||
|
||||
## [v2.8.11](https://github.com/Jawbone/JBChartView/tree/v2.8.11) (2015-03-31)
|
||||
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.8.10...v2.8.11)
|
||||
|
||||
**Implemented enhancements:**
|
||||
|
||||
- Pass back barView & dot instances on selection [\#118](https://github.com/Jawbone/JBChartView/issues/118)
|
||||
|
||||
- Add ability to have the line start or end at any given point [\#115](https://github.com/Jawbone/JBChartView/issues/115)
|
||||
|
||||
- Consolidate dot view selection/unselection/color calls [\#101](https://github.com/Jawbone/JBChartView/issues/101)
|
||||
|
||||
- Change dot radius to dot diameter [\#99](https://github.com/Jawbone/JBChartView/issues/99)
|
||||
|
||||
- need Swift implementation details and example [\#80](https://github.com/Jawbone/JBChartView/issues/80)
|
||||
|
||||
- Add bar/line caching for only visible content. [\#61](https://github.com/Jawbone/JBChartView/issues/61)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Pie Chart support [\#149](https://github.com/Jawbone/JBChartView/issues/149)
|
||||
|
||||
- hi is it possible to have x,y value because in example there is no y value and only 2 x value [\#141](https://github.com/Jawbone/JBChartView/issues/141)
|
||||
|
||||
- imports without pods [\#140](https://github.com/Jawbone/JBChartView/issues/140)
|
||||
@@ -56,12 +106,22 @@
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Keep tooltip subviews above line subviews [\#144](https://github.com/Jawbone/JBChartView/pull/144) ([vocaro](https://github.com/vocaro))
|
||||
|
||||
- Fix crash and warnings that can occur when a chart line has no data [\#143](https://github.com/Jawbone/JBChartView/pull/143) ([vocaro](https://github.com/vocaro))
|
||||
|
||||
- Add automatically generated change log file. [\#142](https://github.com/Jawbone/JBChartView/pull/142) ([skywinder](https://github.com/skywinder))
|
||||
|
||||
- Update README.md [\#127](https://github.com/Jawbone/JBChartView/pull/127) ([paal123](https://github.com/paal123))
|
||||
|
||||
- Add ability to have the line start or end at any given point [\#116](https://github.com/Jawbone/JBChartView/pull/116) ([sebastianreloaded](https://github.com/sebastianreloaded))
|
||||
|
||||
- Horizontal Bar Graphs [\#148](https://github.com/Jawbone/JBChartView/pull/148) ([tomhoag](https://github.com/tomhoag))
|
||||
|
||||
- Add optional gradient fill to line chart [\#138](https://github.com/Jawbone/JBChartView/pull/138) ([mbachrach](https://github.com/mbachrach))
|
||||
|
||||
- fix for updating graphs on view resize [\#128](https://github.com/Jawbone/JBChartView/pull/128) ([sobakasu](https://github.com/sobakasu))
|
||||
|
||||
- Update README.md [\#127](https://github.com/Jawbone/JBChartView/pull/127) ([paal123](https://github.com/paal123))
|
||||
|
||||
## [v2.8.10](https://github.com/Jawbone/JBChartView/tree/v2.8.10) (2014-09-23)
|
||||
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.8.9...v2.8.10)
|
||||
@@ -280,8 +340,6 @@
|
||||
|
||||
- barWidth selector and better height normalization [\#64](https://github.com/Jawbone/JBChartView/pull/64) ([gabybarsky](https://github.com/gabybarsky))
|
||||
|
||||
- Added area diagram functionality [\#42](https://github.com/Jawbone/JBChartView/pull/42) ([hackingotter](https://github.com/hackingotter))
|
||||
|
||||
## [v2.5.5](https://github.com/Jawbone/JBChartView/tree/v2.5.5) (2014-05-14)
|
||||
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.5.4...v2.5.5)
|
||||
@@ -380,10 +438,10 @@
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Allowing custom views for dots [\#40](https://github.com/Jawbone/JBChartView/pull/40) ([simonbromberg](https://github.com/simonbromberg))
|
||||
|
||||
- smooth curve using bezierpath [\#39](https://github.com/Jawbone/JBChartView/pull/39) ([ktran03](https://github.com/ktran03))
|
||||
|
||||
- Allowing custom views for dots [\#40](https://github.com/Jawbone/JBChartView/pull/40) ([simonbromberg](https://github.com/simonbromberg))
|
||||
|
||||
## [v2.3.0](https://github.com/Jawbone/JBChartView/tree/v2.3.0) (2014-04-18)
|
||||
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.2.0...v2.3.0)
|
||||
@@ -404,7 +462,7 @@
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Added delegate method to configure the width of the vertical selection bar in a line chart. [\#37](https://github.com/Jawbone/JBChartView/pull/37) ([veducm](https://github.com/veducm))
|
||||
- Added delegate method to configure the width of the vertical selection bar in a line chart. [\#37](https://github.com/Jawbone/JBChartView/pull/37) ([ghost](https://github.com/ghost))
|
||||
|
||||
- Add variable dot colors [\#34](https://github.com/Jawbone/JBChartView/pull/34) ([alexdunn](https://github.com/alexdunn))
|
||||
|
||||
|
||||
@@ -57,6 +57,9 @@ static UIColor *kJBBarChartViewDefaultBarColor = nil;
|
||||
|
||||
@implementation JBBarChartView
|
||||
|
||||
@dynamic dataSource;
|
||||
@dynamic delegate;
|
||||
|
||||
#pragma mark - Alloc/Init
|
||||
|
||||
+ (void)initialize
|
||||
|
||||
@@ -187,6 +187,9 @@ static UIColor *kJBLineChartViewDefaultDotSelectionColor = nil;
|
||||
|
||||
@implementation JBLineChartView
|
||||
|
||||
@dynamic dataSource;
|
||||
@dynamic delegate;
|
||||
|
||||
#pragma mark - Alloc/Init
|
||||
|
||||
+ (void)initialize
|
||||
@@ -309,6 +312,7 @@ static UIColor *kJBLineChartViewDefaultDotSelectionColor = nil;
|
||||
// Remove old line view
|
||||
if (self.linesView)
|
||||
{
|
||||
self.linesView.delegate = nil;
|
||||
[self.linesView removeFromSuperview];
|
||||
self.linesView = nil;
|
||||
}
|
||||
@@ -336,6 +340,7 @@ static UIColor *kJBLineChartViewDefaultDotSelectionColor = nil;
|
||||
// Remove old dot view
|
||||
if (self.dotsView)
|
||||
{
|
||||
self.dotsView.delegate = nil;
|
||||
[self.dotsView removeFromSuperview];
|
||||
self.dotsView = nil;
|
||||
}
|
||||
@@ -900,9 +905,9 @@ static UIColor *kJBLineChartViewDefaultDotSelectionColor = nil;
|
||||
for (JBLineChartPoint *lineChartPoint in lineData)
|
||||
{
|
||||
BOOL clamped = (indexClamp == JBLineChartHorizontalIndexClampNone) ? YES : (indexClamp == JBLineChartHorizontalIndexClampLeft) ? (point.x - lineChartPoint.position.x >= 0) : (point.x - lineChartPoint.position.x <= 0);
|
||||
if ((abs(point.x - lineChartPoint.position.x)) < currentDistance && clamped == YES)
|
||||
if ((fabs(point.x - lineChartPoint.position.x)) < currentDistance && clamped == YES)
|
||||
{
|
||||
currentDistance = (abs(point.x - lineChartPoint.position.x));
|
||||
currentDistance = (fabs(point.x - lineChartPoint.position.x));
|
||||
selectedIndex = index;
|
||||
}
|
||||
index++;
|
||||
@@ -968,7 +973,7 @@ static UIColor *kJBLineChartViewDefaultDotSelectionColor = nil;
|
||||
// Insersection point
|
||||
CGPoint interesectionPoint = CGPointMake(normalizedTouchPoint.x, (lineSlope * (normalizedTouchPoint.x - leftPoint.x)) + leftPoint.y);
|
||||
|
||||
CGFloat currentDistance = abs(interesectionPoint.y - normalizedTouchPoint.y);
|
||||
CGFloat currentDistance = fabs(interesectionPoint.y - normalizedTouchPoint.y);
|
||||
if (currentDistance < shortestDistance)
|
||||
{
|
||||
shortestDistance = currentDistance;
|
||||
@@ -991,7 +996,7 @@ static UIColor *kJBLineChartViewDefaultDotSelectionColor = nil;
|
||||
|
||||
NSUInteger lineIndex = self.linesView.selectedLineIndex != kJBLineChartLinesViewUnselectedLineIndex ? self.linesView.selectedLineIndex : [self lineIndexForPoint:touchPoint];
|
||||
|
||||
if ([[self.chartData objectAtIndex:lineIndex] count] <= 0)
|
||||
if (lineIndex == kJBLineChartLinesViewUnselectedLineIndex || [[self.chartData objectAtIndex:lineIndex] count] <= 0)
|
||||
{
|
||||
return; // no touch for line without data
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = "JBChartView"
|
||||
s.version = "2.8.10"
|
||||
s.version = "2.8.13"
|
||||
s.summary = "Jawbone's iOS-based charting library for both line and bar graphs."
|
||||
s.homepage = "https://github.com/Jawbone/JBChartView"
|
||||
|
||||
@@ -10,7 +10,7 @@ Pod::Spec.new do |s|
|
||||
s.author = { "Terry Worona" => "tworona@jawbone.com" }
|
||||
s.source = {
|
||||
:git => "https://github.com/Jawbone/JBChartView.git",
|
||||
:tag => "v2.8.10"
|
||||
:tag => "v2.8.13"
|
||||
}
|
||||
|
||||
s.platform = :ios, '6.0'
|
||||
|
||||
@@ -28,6 +28,12 @@
|
||||
[self.view addSubview:self.tableView];
|
||||
}
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
self.tableView.delegate = nil;
|
||||
self.tableView.dataSource = nil;
|
||||
}
|
||||
|
||||
#pragma mark - UITableViewDataSource
|
||||
|
||||
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
|
||||
|
||||
@@ -84,6 +84,12 @@ NSString * const kJBAreaChartViewControllerNavButtonViewKey = @"view";
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
_lineChartView.delegate = nil;
|
||||
_lineChartView.dataSource = nil;
|
||||
}
|
||||
|
||||
#pragma mark - Data
|
||||
|
||||
- (void)initFakeData
|
||||
|
||||
@@ -78,6 +78,12 @@ NSString * const kJBBarChartViewControllerNavButtonViewKey = @"view";
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
_barChartView.delegate = nil;
|
||||
_barChartView.dataSource = nil;
|
||||
}
|
||||
|
||||
#pragma mark - Date
|
||||
|
||||
- (void)initFakeData
|
||||
@@ -85,7 +91,7 @@ NSString * const kJBBarChartViewControllerNavButtonViewKey = @"view";
|
||||
NSMutableArray *mutableChartData = [NSMutableArray array];
|
||||
for (int i=0; i<kJBBarChartViewControllerNumBars; i++)
|
||||
{
|
||||
NSInteger delta = (kJBBarChartViewControllerNumBars - abs((kJBBarChartViewControllerNumBars - i) - i)) + 2;
|
||||
NSInteger delta = (kJBBarChartViewControllerNumBars - labs((kJBBarChartViewControllerNumBars - i) - i)) + 2;
|
||||
[mutableChartData addObject:[NSNumber numberWithFloat:MAX((delta * kJBBarChartViewControllerMinBarHeight), arc4random() % (delta * kJBBarChartViewControllerMaxBarHeight))]];
|
||||
|
||||
}
|
||||
|
||||
+8
-1
@@ -29,6 +29,7 @@ CGFloat const kJBLineChartMissingPointsViewControllerChartHeaderHeight = 75.0f;
|
||||
CGFloat const kJBLineChartMissingPointsViewControllerChartHeaderPadding = 20.0f;
|
||||
CGFloat const kJBLineChartMissingPointsViewControllerChartFooterHeight = 20.0f;
|
||||
CGFloat const kJBLineChartMissingPointsViewControllerChartSolidLineWidth = 6.0f;
|
||||
CGFloat const kJBLineChartMissingPointsViewControllerChartSolidLineDotRadius = 5.0f;
|
||||
CGFloat const kJBLineChartMissingPointsViewControllerChartDashedLineWidth = 2.0f;
|
||||
NSInteger const kJBLineChartMissingPointsViewControllerMaxNumChartPoints = 7;
|
||||
|
||||
@@ -85,6 +86,12 @@ NSString * const kJBLineChartMissingPointsViewControllerNavButtonViewKey = @"vie
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
_lineChartView.delegate = nil;
|
||||
_lineChartView.dataSource = nil;
|
||||
}
|
||||
|
||||
#pragma mark - Data
|
||||
|
||||
- (void)initFakeData
|
||||
@@ -254,7 +261,7 @@ NSString * const kJBLineChartMissingPointsViewControllerNavButtonViewKey = @"vie
|
||||
|
||||
- (CGFloat)lineChartView:(JBLineChartView *)lineChartView dotRadiusForDotAtHorizontalIndex:(NSUInteger)horizontalIndex atLineIndex:(NSUInteger)lineIndex
|
||||
{
|
||||
return (lineIndex == JBLineChartLineSolid) ? 0.0: (kJBLineChartMissingPointsViewControllerChartDashedLineWidth * 4);
|
||||
return (lineIndex == JBLineChartLineSolid) ? 0.0 : kJBLineChartMissingPointsViewControllerChartSolidLineDotRadius;
|
||||
}
|
||||
|
||||
- (UIColor *)lineChartView:(JBLineChartView *)lineChartView verticalSelectionColorForLineAtLineIndex:(NSUInteger)lineIndex
|
||||
|
||||
@@ -29,6 +29,7 @@ CGFloat const kJBLineChartViewControllerChartHeaderHeight = 75.0f;
|
||||
CGFloat const kJBLineChartViewControllerChartHeaderPadding = 20.0f;
|
||||
CGFloat const kJBLineChartViewControllerChartFooterHeight = 20.0f;
|
||||
CGFloat const kJBLineChartViewControllerChartSolidLineWidth = 6.0f;
|
||||
CGFloat const kJBLineChartViewControllerChartSolidLineDotRadius = 5.0f;
|
||||
CGFloat const kJBLineChartViewControllerChartDashedLineWidth = 2.0f;
|
||||
NSInteger const kJBLineChartViewControllerMaxNumChartPoints = 7;
|
||||
|
||||
@@ -85,6 +86,12 @@ NSString * const kJBLineChartViewControllerNavButtonViewKey = @"view";
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
_lineChartView.delegate = nil;
|
||||
_lineChartView.dataSource = nil;
|
||||
}
|
||||
|
||||
#pragma mark - Data
|
||||
|
||||
- (void)initFakeData
|
||||
@@ -245,7 +252,7 @@ NSString * const kJBLineChartViewControllerNavButtonViewKey = @"view";
|
||||
|
||||
- (CGFloat)lineChartView:(JBLineChartView *)lineChartView dotRadiusForDotAtHorizontalIndex:(NSUInteger)horizontalIndex atLineIndex:(NSUInteger)lineIndex
|
||||
{
|
||||
return (lineIndex == JBLineChartLineSolid) ? 0.0: (kJBLineChartViewControllerChartDashedLineWidth * 4);
|
||||
return (lineIndex == JBLineChartLineSolid) ? 0.0: kJBLineChartViewControllerChartSolidLineDotRadius;
|
||||
}
|
||||
|
||||
- (UIColor *)lineChartView:(JBLineChartView *)lineChartView verticalSelectionColorForLineAtLineIndex:(NSUInteger)lineIndex
|
||||
|
||||
@@ -72,6 +72,15 @@ To initialize a <i>JBBarChartView</i>, you only need a few lines of code (see be
|
||||
barChartView.dataSource = self;
|
||||
barChartView.delegate = self;
|
||||
[self addSubview:barChartView];
|
||||
|
||||
Just like you would for a `UITableView`, ensure you clear these properties in your `dealloc`:
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
JBBarChartView *barChartView = ...; // i.e. _barChartView
|
||||
barChartView.delegate = nil;
|
||||
barChartView.dataSource = nil;
|
||||
}
|
||||
|
||||
At a minimum, you need to inform the data source how many bars are in the chart:
|
||||
|
||||
@@ -99,9 +108,18 @@ Lastly, ensure you have set the *frame* of your barChartView & call *reloadData*
|
||||
Similiarily, to initialize a JBLineChartView, you only need a few lines of code (see below). Line charts can also be initialized via a <b>nib</b> or with a <b>frame</b>.
|
||||
|
||||
JBLineChartView *lineChartView = [[JBLineChartView alloc] init];
|
||||
lineChartView.dataSource = self;
|
||||
lineChartView.delegate = self;
|
||||
[self addSubview:lineChartView];
|
||||
lineChartView.dataSource = self;
|
||||
lineChartView.delegate = self;
|
||||
[self addSubview:lineChartView];
|
||||
|
||||
Just like you would for a `UITableView`, ensure you clear these properties in your `dealloc`:
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
JBLineChartView *lineChartView = ...; // i.e. _lineChartView
|
||||
lineChartView.delegate = nil;
|
||||
lineChartView.dataSource = nil;
|
||||
}
|
||||
|
||||
At a minimum, you need to inform the data source how many lines and vertical data points (for each line) are in the chart:
|
||||
|
||||
@@ -124,7 +142,7 @@ Secondly, you need to inform the delegate of the y-position of each point (autom
|
||||
|
||||
**Note**: You can return NAN instead of CGFloat to indicate missing values. The chart's line will begin at the first non-NAN value and end at the last non-NAN value. The line will interopolate any NAN values in between (ie. the line will not be interrupted).
|
||||
|
||||
return [NSNumber numberWithFloat:NAN]
|
||||
return [[NSNumber numberWithFloat:NAN] floatValue];
|
||||
|
||||
Lastly, ensure you have set the *frame* of your lineChartView & call *reloadData* at least once:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user