c3-rails 0.4.3 → 0.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2af42ee06a4a8faf8c82e37002f9b742b62b7936
4
- data.tar.gz: 1778852ef17eea288816f5bc1dd356d5c8a4f588
3
+ metadata.gz: 19e82bdda3c512c5a70832b8b96bb713d69c2f03
4
+ data.tar.gz: 01858e862092226457ad8b2c50e21c70dc4f4327
5
5
  SHA512:
6
- metadata.gz: 4dde6172793ab7cee798a676d5bcace2ab3f738c8c928c752fb6dc3d17091e1c883eb27658291cce1a308a2aec3124350a199e94e475e2586828b229bf4765a5
7
- data.tar.gz: fc67f6469210f021304d442a3d6ad0f5414cb68ec234b8e4d6952b46756873d1d7d5b78eb74cb012fb28ef038b015b41c06aeb23ada3f0170690c2ab5179a964
6
+ metadata.gz: e798f410c1f11d74a810fbfa7226b9adc12b83e454f9aff1268c1423ef0428da8333b98a9af7bb8294eeab7141b963eae99afb6554b317feb679dcfc95b61e10
7
+ data.tar.gz: 946676c5e49156d8245d90e07bfe6476f8691fd2cb1ab8a8ffd8dbfeac527c4f640174f2cd7e94d4d2d9c27a91943e92c1d563f7a2d2d16b56717926f6630069
@@ -1,5 +1,5 @@
1
1
  module C3
2
2
  module Rails
3
- VERSION = "0.4.3"
3
+ VERSION = "0.4.4"
4
4
  end
5
5
  end
@@ -3,7 +3,7 @@
3
3
 
4
4
  /*global define, module, exports, require */
5
5
 
6
- var c3 = { version: "0.4.3" };
6
+ var c3 = { version: "0.4.4" };
7
7
 
8
8
  var c3_chart_fn, c3_chart_internal_fn;
9
9
 
@@ -113,8 +113,8 @@
113
113
  $$.defocusedTargetIds = [];
114
114
 
115
115
  $$.xOrient = config.axis_rotated ? "left" : "bottom";
116
- $$.yOrient = config.axis_rotated ? "bottom" : "left";
117
- $$.y2Orient = config.axis_rotated ? "top" : "right";
116
+ $$.yOrient = config.axis_rotated ? (config.axis_y_inner ? "top" : "bottom") : (config.axis_y_inner ? "right" : "left");
117
+ $$.y2Orient = config.axis_rotated ? (config.axis_y_inner ? "bottom" : "top") : (config.axis_y_inner ? "left" : "right");
118
118
  $$.subXOrient = config.axis_rotated ? "left" : "bottom";
119
119
 
120
120
  $$.isLegendRight = config.legend_position === 'right';
@@ -143,6 +143,14 @@
143
143
  $$.axes.subx = d3.selectAll([]); // needs when excluding subchart.js
144
144
  };
145
145
 
146
+ c3_chart_internal_fn.initChartElements = function () {
147
+ if (this.initBar) { this.initBar(); }
148
+ if (this.initLine) { this.initLine(); }
149
+ if (this.initArc) { this.initArc(); }
150
+ if (this.initGauge) { this.initGauge(); }
151
+ if (this.initText) { this.initText(); }
152
+ };
153
+
146
154
  c3_chart_internal_fn.initWithData = function (data) {
147
155
  var $$ = this, d3 = $$.d3, config = $$.config;
148
156
  var defs, main, binding = true;
@@ -171,6 +179,9 @@
171
179
  if (config.data_hide) {
172
180
  $$.addHiddenTargetIds(config.data_hide === true ? $$.mapToIds($$.data.targets) : config.data_hide);
173
181
  }
182
+ if (config.legend_hide) {
183
+ $$.addHiddenLegendIds(config.legend_hide === true ? $$.mapToIds($$.data.targets) : config.legend_hide);
184
+ }
174
185
 
175
186
  // when gauge, hide legend // TODO: fix
176
187
  if ($$.hasType('gauge')) {
@@ -245,18 +256,8 @@
245
256
  // Cover whole with rects for events
246
257
  $$.initEventRect();
247
258
 
248
- // Define g for bar chart area
249
- if ($$.initBar) { $$.initBar(); }
250
-
251
- // Define g for line chart area
252
- if ($$.initLine) { $$.initLine(); }
253
-
254
- // Define g for arc chart area
255
- if ($$.initArc) { $$.initArc(); }
256
- if ($$.initGauge) { $$.initGauge(); }
257
-
258
- // Define g for text area
259
- if ($$.initText) { $$.initText(); }
259
+ // Define g for chart
260
+ $$.initChartElements();
260
261
 
261
262
  // if zoom privileged, insert rect to forefront
262
263
  // TODO: is this needed?
@@ -427,7 +428,7 @@
427
428
  c3_chart_internal_fn.redraw = function (options, transitions) {
428
429
  var $$ = this, main = $$.main, d3 = $$.d3, config = $$.config;
429
430
  var areaIndices = $$.getShapeIndices($$.isAreaType), barIndices = $$.getShapeIndices($$.isBarType), lineIndices = $$.getShapeIndices($$.isLineType);
430
- var withY, withSubchart, withTransition, withTransitionForExit, withTransitionForAxis, withTransform, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain, withLegend, withEventRect;
431
+ var withY, withSubchart, withTransition, withTransitionForExit, withTransitionForAxis, withTransform, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain, withLegend, withEventRect, withDimension;
431
432
  var hideAxis = $$.hasArcType();
432
433
  var drawArea, drawBar, drawLine, xForText, yForText;
433
434
  var duration, durationForExit, durationForAxis;
@@ -445,6 +446,7 @@
445
446
  withTrimXDomain = getOption(options, "withTrimXDomain", true);
446
447
  withLegend = getOption(options, "withLegend", false);
447
448
  withEventRect = getOption(options, "withEventRect", true);
449
+ withDimension = getOption(options, "withDimension", true);
448
450
  withTransitionForExit = getOption(options, "withTransitionForExit", withTransition);
449
451
  withTransitionForAxis = getOption(options, "withTransitionForAxis", withTransition);
450
452
 
@@ -457,7 +459,7 @@
457
459
  // update legend and transform each g
458
460
  if (withLegend && config.legend_show) {
459
461
  $$.updateLegend($$.mapToIds($$.data.targets), options, transitions);
460
- } else if ((!config.axis_rotated && withY) || (config.axis_rotated && withUpdateXDomain)) {
462
+ } else if (withDimension) {
461
463
  // need to update dimension (e.g. axis.y.tick.values) because y tick values should change
462
464
  // no need to update axis in it because they will be updated in redraw()
463
465
  $$.updateDimension(true);
@@ -724,7 +726,8 @@
724
726
  return d.value !== null && this.withoutFadeIn[d.id] ? this.opacityForCircle(d) : 0;
725
727
  };
726
728
  c3_chart_internal_fn.opacityForCircle = function (d) {
727
- return isValue(d.value) && this.config.point_show ? (this.isScatterType(d) ? 0.5 : 1) : 0;
729
+ var opacity = this.config.point_show ? 1 : 0;
730
+ return isValue(d.value) ? (this.isScatterType(d) ? 0.5 : opacity) : 0;
728
731
  };
729
732
  c3_chart_internal_fn.opacityForText = function () {
730
733
  return this.hasDataLabel() ? 1 : 0;
@@ -988,6 +991,7 @@
988
991
  color_threshold: {},
989
992
  // legend
990
993
  legend_show: true,
994
+ legend_hide: false,
991
995
  legend_position: 'bottom',
992
996
  legend_inset_anchor: 'top-left',
993
997
  legend_inset_x: 10,
@@ -1025,6 +1029,7 @@
1025
1029
  axis_y_max: undefined,
1026
1030
  axis_y_min: undefined,
1027
1031
  axis_y_center: undefined,
1032
+ axis_y_inner: undefined,
1028
1033
  axis_y_label: {},
1029
1034
  axis_y_tick_format: undefined,
1030
1035
  axis_y_tick_outer: true,
@@ -1038,6 +1043,7 @@
1038
1043
  axis_y2_max: undefined,
1039
1044
  axis_y2_min: undefined,
1040
1045
  axis_y2_center: undefined,
1046
+ axis_y2_inner: undefined,
1041
1047
  axis_y2_label: {},
1042
1048
  axis_y2_tick_format: undefined,
1043
1049
  axis_y2_tick_outer: true,
@@ -1574,10 +1580,12 @@
1574
1580
  };
1575
1581
  c3_chart_internal_fn.updateXs = function () {
1576
1582
  var $$ = this;
1577
- $$.xs = [];
1578
- $$.data.targets[0].values.forEach(function (v) {
1579
- $$.xs[v.index] = v.x;
1580
- });
1583
+ if ($$.data.targets.length) {
1584
+ $$.xs = [];
1585
+ $$.data.targets[0].values.forEach(function (v) {
1586
+ $$.xs[v.index] = v.x;
1587
+ });
1588
+ }
1581
1589
  };
1582
1590
  c3_chart_internal_fn.getPrevX = function (i) {
1583
1591
  var x = this.xs[i - 1];
@@ -2495,8 +2503,10 @@
2495
2503
  return config.padding_left;
2496
2504
  } else if (config.axis_rotated) {
2497
2505
  return !config.axis_x_show ? 1 : Math.max(ceil10($$.getAxisWidthByAxisId('x', withoutRecompute)), 40);
2506
+ } else if (!config.axis_y_show || config.axis_y_inner) { // && !config.axis_rotated
2507
+ return $$.getYAxisLabelPosition().isOuter ? 30 : 1;
2498
2508
  } else {
2499
- return !config.axis_y_show ? 1 : ceil10($$.getAxisWidthByAxisId('y', withoutRecompute));
2509
+ return ceil10($$.getAxisWidthByAxisId('y', withoutRecompute));
2500
2510
  }
2501
2511
  };
2502
2512
  c3_chart_internal_fn.getCurrentPaddingRight = function () {
@@ -2506,8 +2516,10 @@
2506
2516
  return config.padding_right + 1; // 1 is needed not to hide tick line
2507
2517
  } else if (config.axis_rotated) {
2508
2518
  return defaultPadding + legendWidthOnRight;
2519
+ } else if (!config.axis_y2_show || config.axis_y2_inner) { // && !config.axis_rotated
2520
+ return defaultPadding + legendWidthOnRight + ($$.getY2AxisLabelPosition().isOuter ? 20 : 0);
2509
2521
  } else {
2510
- return (!config.axis_y2_show ? defaultPadding : ceil10($$.getAxisWidthByAxisId('y2'))) + legendWidthOnRight;
2522
+ return ceil10($$.getAxisWidthByAxisId('y2')) + legendWidthOnRight;
2511
2523
  }
2512
2524
  };
2513
2525
 
@@ -3751,6 +3763,7 @@
3751
3763
  .style('opacity', 0)
3752
3764
  .style('visibility', 'hidden');
3753
3765
  };
3766
+ var legendItemTextBox = {};
3754
3767
  c3_chart_internal_fn.updateLegend = function (targetIds, options, transitions) {
3755
3768
  var $$ = this, config = $$.config;
3756
3769
  var xForLegend, xForLegendText, xForLegendRect, yForLegend, yForLegendText, yForLegendRect;
@@ -3764,9 +3777,16 @@
3764
3777
  withTransition = getOption(options, "withTransition", true);
3765
3778
  withTransitionForTransform = getOption(options, "withTransitionForTransform", true);
3766
3779
 
3780
+ function getTextBox(textElement, id) {
3781
+ if (!legendItemTextBox[id]) {
3782
+ legendItemTextBox[id] = $$.getTextRect(textElement.textContent, CLASS.legendItem);
3783
+ }
3784
+ return legendItemTextBox[id];
3785
+ }
3786
+
3767
3787
  function updatePositions(textElement, id, index) {
3768
3788
  var reset = index === 0, isLast = index === targetIds.length - 1,
3769
- box = $$.getTextRect(textElement.textContent, CLASS.legendItem),
3789
+ box = getTextBox(textElement, id),
3770
3790
  itemWidth = box.width + tileWidth + (isLast && !($$.isLegendRight || $$.isLegendInset) ? 0 : paddingRight),
3771
3791
  itemHeight = box.height + paddingTop,
3772
3792
  itemLength = $$.isLegendRight || $$.isLegendInset ? itemHeight : itemWidth,
@@ -3977,7 +3997,7 @@
3977
3997
 
3978
3998
  $$.axes.y = main.append("g")
3979
3999
  .attr("class", CLASS.axis + ' ' + CLASS.axisY)
3980
- .attr("clip-path", $$.clipPathForYAxis)
4000
+ .attr("clip-path", config.axis_y_inner ? "" : $$.clipPathForYAxis)
3981
4001
  .attr("transform", $$.getTranslate('y'))
3982
4002
  .style("visibility", config.axis_y_show ? 'visible' : 'hidden');
3983
4003
  $$.axes.y.append("text")
@@ -4188,7 +4208,7 @@
4188
4208
  if ($$.config.axis_rotated) {
4189
4209
  return position.isInner ? "-0.5em" : "3em";
4190
4210
  } else {
4191
- return position.isInner ? "1.2em" : -20 - $$.getMaxTickWidth('y');
4211
+ return position.isInner ? "1.2em" : -10 - ($$.config.axis_y_inner ? 0 : ($$.getMaxTickWidth('y') + 10));
4192
4212
  }
4193
4213
  };
4194
4214
  c3_chart_internal_fn.dyForY2AxisLabel = function () {
@@ -4197,7 +4217,7 @@
4197
4217
  if ($$.config.axis_rotated) {
4198
4218
  return position.isInner ? "1.2em" : "-2.2em";
4199
4219
  } else {
4200
- return position.isInner ? "-0.5em" : 30 + this.getMaxTickWidth('y2');
4220
+ return position.isInner ? "-0.5em" : 15 + ($$.config.axis_y2_inner ? 0 : (this.getMaxTickWidth('y2') + 15));
4201
4221
  }
4202
4222
  };
4203
4223
  c3_chart_internal_fn.textAnchorForXAxisLabel = function () {
@@ -4361,7 +4381,7 @@
4361
4381
  };
4362
4382
  c3_chart_internal_fn.getYAxisClipX = function () {
4363
4383
  var $$ = this;
4364
- return $$.getAxisClipX($$.config.axis_rotated);
4384
+ return $$.config.axis_y_inner ? -1 : $$.getAxisClipX($$.config.axis_rotated);
4365
4385
  };
4366
4386
  c3_chart_internal_fn.getYAxisClipY = function () {
4367
4387
  var $$ = this;
@@ -4387,7 +4407,7 @@
4387
4407
  };
4388
4408
  c3_chart_internal_fn.getYAxisClipWidth = function () {
4389
4409
  var $$ = this;
4390
- return $$.getAxisClipWidth($$.config.axis_rotated);
4410
+ return $$.getAxisClipWidth($$.config.axis_rotated) + ($$.config.axis_y_inner ? 20 : 0);
4391
4411
  };
4392
4412
  c3_chart_internal_fn.getYAxisClipHeight = function () {
4393
4413
  var $$ = this;
@@ -5191,7 +5211,8 @@
5191
5211
  withTransition: false,
5192
5212
  withY: $$.config.zoom_rescale,
5193
5213
  withSubchart: false,
5194
- withUpdateXDomain: true
5214
+ withUpdateXDomain: true,
5215
+ withDimension: false
5195
5216
  });
5196
5217
  $$.config.subchart_onbrush.call($$.api, x.orgDomain());
5197
5218
  };
@@ -5276,7 +5297,8 @@
5276
5297
  withTransition: false,
5277
5298
  withY: config.zoom_rescale,
5278
5299
  withSubchart: false,
5279
- withEventRect: false
5300
+ withEventRect: false,
5301
+ withDimension: false
5280
5302
  });
5281
5303
  if (d3.event.sourceEvent.type === 'mousemove') {
5282
5304
  $$.cancelClick = true;
@@ -5544,7 +5566,7 @@
5544
5566
  return CLASS.chartArc + this.classTarget(d.data.id);
5545
5567
  };
5546
5568
  c3_chart_internal_fn.getTargetSelectorSuffix = function (targetId) {
5547
- return targetId || targetId === 0 ? ('-' + targetId).replace(/[\s?!@#$%^&*()_=+,.<>'":;\[\]/|~`{}\\]/g, '-') : '';
5569
+ return targetId || targetId === 0 ? ('-' + targetId).replace(/[\s?!@#$%^&*()_=+,.<>'":;\[\]\/|~`{}\\]/g, '-') : '';
5548
5570
  };
5549
5571
  c3_chart_internal_fn.selectorTarget = function (id, prefix) {
5550
5572
  return (prefix || '') + '.' + CLASS.target + this.getTargetSelectorSuffix(id);
@@ -6240,12 +6262,16 @@
6240
6262
  return [].concat(targetIds).indexOf(t.id) >= 0;
6241
6263
  });
6242
6264
  };
6243
- c3_chart_fn.data.shown = function (targetId) {
6244
- return this.internal.filterTargetsToShow(this.data(targetId));
6265
+ c3_chart_fn.data.shown = function (targetIds) {
6266
+ return this.internal.filterTargetsToShow(this.data(targetIds));
6245
6267
  };
6246
6268
  c3_chart_fn.data.values = function (targetId) {
6247
- var target = this.data(targetId);
6248
- return target ? target.values.map(function (d) { return d.value; }) : null;
6269
+ var targets, values = null;
6270
+ if (targetId) {
6271
+ targets = this.data(targetId);
6272
+ values = targets[0] ? targets[0].values.map(function (d) { return d.value; }) : null;
6273
+ }
6274
+ return values;
6249
6275
  };
6250
6276
  c3_chart_fn.data.names = function (names) {
6251
6277
  return this.internal.updateDataAttributes('names', names);
@@ -6429,6 +6455,8 @@
6429
6455
  // Features:
6430
6456
  // 1. category axis
6431
6457
  // 2. ceil values of translate/x/y to int for half pixel antialiasing
6458
+ // 3. multiline tick text
6459
+ var tickTextCharSize;
6432
6460
  function c3_axis(d3, params) {
6433
6461
  var scale = d3.scale.linear(), orient = "bottom", innerTickSize = 6, outerTickSize, tickPadding = 3, tickValues = null, tickFormat, tickArguments;
6434
6462
 
@@ -6477,6 +6505,9 @@
6477
6505
  return tickFormat ? tickFormat(v) : v;
6478
6506
  }
6479
6507
  function getSizeFor1Char(tick) {
6508
+ if (tickTextCharSize) {
6509
+ return tickTextCharSize;
6510
+ }
6480
6511
  var size = {
6481
6512
  h: 11.5,
6482
6513
  w: 5.5
@@ -6491,6 +6522,7 @@
6491
6522
  size.w = w;
6492
6523
  }
6493
6524
  }).text('');
6525
+ tickTextCharSize = size;
6494
6526
  return size;
6495
6527
  }
6496
6528
  function axis(g) {
@@ -6525,7 +6557,7 @@
6525
6557
  tickOffset = tickX = 0;
6526
6558
  }
6527
6559
 
6528
- var text, tspan, sizeFor1Char = getSizeFor1Char(tick), counts = [];
6560
+ var text, tspan, sizeFor1Char = getSizeFor1Char(g.select('.tick')), counts = [];
6529
6561
  var tickLength = Math.max(innerTickSize, 0) + tickPadding,
6530
6562
  isVertical = orient === 'left' || orient === 'right';
6531
6563
 
@@ -6539,7 +6571,7 @@
6539
6571
  }
6540
6572
 
6541
6573
  if (!maxWidth || maxWidth <= 0) {
6542
- maxWidth = isVertical ? 95 : params.isCategory ? (Math.ceil(scale1(ticks[1]) - scale1(ticks[0])) - 10) : 110;
6574
+ maxWidth = isVertical ? 95 : params.isCategory ? (Math.ceil(scale1(ticks[1]) - scale1(ticks[0])) - 12) : 110;
6543
6575
  }
6544
6576
 
6545
6577
  function split(splitted, text) {
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: c3-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sunny Li
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-18 00:00:00.000000000 Z
11
+ date: 2014-11-25 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: This gem provides "c3 - A D3-based reusable chart library" for Rails
14
14
  email: