c3
Version:
D3-based reusable chart library
76 lines (71 loc) • 1.8 kB
text/typescript
import { Chart } from './core'
import { isDefined } from './util'
Chart.prototype.zoom = function(domain) {
var $$ = this.internal
if (domain) {
if ($$.isTimeSeries()) {
domain = domain.map(function(x) {
return $$.parseDate(x)
})
}
if ($$.config.subchart_show) {
$$.brush.selectionAsValue(domain, true)
} else {
$$.updateXDomain(null, true, false, false, domain)
$$.redraw({ withY: $$.config.zoom_rescale, withSubchart: false })
}
$$.config.zoom_onzoom.call(this, $$.x.orgDomain())
return domain
} else {
return $$.x.domain()
}
}
Chart.prototype.zoom.enable = function(enabled) {
var $$ = this.internal
$$.config.zoom_enabled = enabled
$$.updateAndRedraw()
}
Chart.prototype.unzoom = function() {
var $$ = this.internal
if ($$.config.subchart_show) {
$$.brush.clear()
} else {
$$.updateXDomain(null, true, false, false, $$.subX.domain())
$$.redraw({ withY: $$.config.zoom_rescale, withSubchart: false })
}
}
Chart.prototype.zoom.max = function(max) {
var $$ = this.internal,
config = $$.config,
d3 = $$.d3
if (max === 0 || max) {
config.zoom_x_max = d3.max([$$.orgXDomain[1], max])
} else {
return config.zoom_x_max
}
}
Chart.prototype.zoom.min = function(min) {
var $$ = this.internal,
config = $$.config,
d3 = $$.d3
if (min === 0 || min) {
config.zoom_x_min = d3.min([$$.orgXDomain[0], min])
} else {
return config.zoom_x_min
}
}
Chart.prototype.zoom.range = function(range) {
if (arguments.length) {
if (isDefined(range.max)) {
this.domain.max(range.max)
}
if (isDefined(range.min)) {
this.domain.min(range.min)
}
} else {
return {
max: this.domain.max(),
min: this.domain.min()
}
}
}