c3
Version:
D3-based reusable chart library
103 lines (98 loc) • 2.34 kB
text/typescript
import { Chart } from './core'
import { isValue, isDefined } from './util'
Chart.prototype.axis = function() {}
Chart.prototype.axis.labels = function(labels) {
var $$ = this.internal
if (arguments.length) {
Object.keys(labels).forEach(function(axisId) {
$$.axis.setLabelText(axisId, labels[axisId])
})
$$.axis.updateLabels()
}
// TODO: return some values?
}
Chart.prototype.axis.max = function(max) {
var $$ = this.internal,
config = $$.config
if (arguments.length) {
if (typeof max === 'object') {
if (isValue(max.x)) {
config.axis_x_max = max.x
}
if (isValue(max.y)) {
config.axis_y_max = max.y
}
if (isValue(max.y2)) {
config.axis_y2_max = max.y2
}
} else {
config.axis_y_max = config.axis_y2_max = max
}
$$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true })
} else {
return {
x: config.axis_x_max,
y: config.axis_y_max,
y2: config.axis_y2_max
}
}
}
Chart.prototype.axis.min = function(min) {
var $$ = this.internal,
config = $$.config
if (arguments.length) {
if (typeof min === 'object') {
if (isValue(min.x)) {
config.axis_x_min = min.x
}
if (isValue(min.y)) {
config.axis_y_min = min.y
}
if (isValue(min.y2)) {
config.axis_y2_min = min.y2
}
} else {
config.axis_y_min = config.axis_y2_min = min
}
$$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true })
} else {
return {
x: config.axis_x_min,
y: config.axis_y_min,
y2: config.axis_y2_min
}
}
}
Chart.prototype.axis.range = function(range) {
if (arguments.length) {
if (isDefined(range.max)) {
this.axis.max(range.max)
}
if (isDefined(range.min)) {
this.axis.min(range.min)
}
} else {
return {
max: this.axis.max(),
min: this.axis.min()
}
}
}
Chart.prototype.axis.types = function(types) {
const $$ = this.internal
if (types === undefined) {
return {
y: $$.config.axis_y_type,
y2: $$.config.axis_y2_type
}
} else {
if (isDefined(types.y)) {
$$.config.axis_y_type = types.y
}
if (isDefined(types.y2)) {
$$.config.axis_y2_type = types.y2
}
$$.updateScales()
$$.redraw()
}
}