Browse Source

Fix data type when no data - #580

pull/631/head
Masayuki Tanaka 10 years ago
parent
commit
ac8b8725c9
  1. 18
      c3.js
  2. 2
      c3.min.js
  3. 108
      spec/type-spec.js
  4. 18
      src/type.js

18
c3.js

@ -3092,11 +3092,19 @@
};
c3_chart_internal_fn.hasType = function (type, targets) {
var $$ = this, types = $$.config.data_types, has = false;
(targets || $$.data.targets).forEach(function (t) {
if ((types[t.id] && types[t.id].indexOf(type) >= 0) || (!(t.id in types) && type === 'line')) {
has = true;
}
});
targets = targets || $$.data.targets;
if (targets.length) {
targets.forEach(function (target) {
var t = types[target.id];
if ((t && t.indexOf(type) >= 0) || (!t && type === 'line')) {
has = true;
}
});
} else {
Object.keys(types).forEach(function (id) {
if (types[id] === type) { has = true; }
});
}
return has;
};
c3_chart_internal_fn.hasArcType = function (targets) {

2
c3.min.js vendored

File diff suppressed because one or more lines are too long

108
spec/type-spec.js

@ -0,0 +1,108 @@
var describe = window.describe,
expect = window.expect,
it = window.it,
beforeEach = window.beforeEach;
describe('c3 chart types', function () {
'use strict';
var chart, d3;
var args = {
data: {
columns: [
['data1', 30, 200, 100, 400, 150, 250],
['data2', 50, 20, 10, 40, 15, 25],
['data3', 150, 120, 110, 140, 115, 125]
],
type: 'pie'
}
};
beforeEach(function (done) {
if (typeof chart === 'undefined') {
window.initDom();
}
chart = window.c3.generate(args);
d3 = chart.internal.d3;
chart.internal.d3.select('.jasmine_html-reporter').style('display', 'none');
window.setTimeout(function () {
done();
}, 10);
});
describe('internal.hasArcType', function () {
it('should return true', function () {
expect(chart.internal.hasArcType()).toBeTruthy();
});
it('should change chart type to "bar" successfully', function () {
args.data.type = 'bar';
expect(true).toBeTruthy();
});
it('should return false', function () {
expect(chart.internal.hasArcType()).toBeFalsy();
});
});
describe('internal.hasType', function () {
it('should change chart type to "pie" successfully', function () {
args.data.type = 'pie';
expect(true).toBeTruthy();
});
it('should return true for "pie" type', function () {
expect(chart.internal.hasType('pie')).toBeTruthy();
});
it('should return false for "line" type', function () {
expect(chart.internal.hasType('line')).toBeFalsy();
});
it('should return false for "bar" type', function () {
expect(chart.internal.hasType('bar')).toBeFalsy();
});
it('should unload successfully', function () {
chart.unload([]);
expect(true).toBeTruthy();
});
it('should return true for "pie" type even if no data', function () {
expect(chart.internal.hasType('pie')).toBeTruthy();
});
it('should return false for "line" type even if no data', function () {
expect(chart.internal.hasType('line')).toBeFalsy();
});
it('should return false for "bar" type even if no data', function () {
expect(chart.internal.hasType('bar')).toBeFalsy();
});
it('should change chart type to "bar" successfully', function () {
args.data.type = 'bar';
expect(true).toBeTruthy();
});
it('should return false for "pie" type even if no data', function () {
expect(chart.internal.hasType('pie')).toBeFalsy();
});
it('should return false for "line" type even if no data', function () {
expect(chart.internal.hasType('line')).toBeFalsy();
});
it('should return true for "bar" type even if no data', function () {
expect(chart.internal.hasType('bar')).toBeTruthy();
});
});
});

18
src/type.js

@ -10,11 +10,19 @@ c3_chart_internal_fn.setTargetType = function (targetIds, type) {
};
c3_chart_internal_fn.hasType = function (type, targets) {
var $$ = this, types = $$.config.data_types, has = false;
(targets || $$.data.targets).forEach(function (t) {
if ((types[t.id] && types[t.id].indexOf(type) >= 0) || (!(t.id in types) && type === 'line')) {
has = true;
}
});
targets = targets || $$.data.targets;
if (targets.length) {
targets.forEach(function (target) {
var t = types[target.id];
if ((t && t.indexOf(type) >= 0) || (!t && type === 'line')) {
has = true;
}
});
} else {
Object.keys(types).forEach(function (id) {
if (types[id] === type) { has = true; }
});
}
return has;
};
c3_chart_internal_fn.hasArcType = function (targets) {

Loading…
Cancel
Save