c3
Version:
D3-based reusable chart library
74 lines (71 loc) • 1.82 kB
text/typescript
import { Chart } from './core'
Chart.prototype.load = function(args) {
var $$ = this.internal,
config = $$.config
// update xs if specified
if (args.xs) {
$$.addXs(args.xs)
}
// update names if exists
if ('names' in args) {
Chart.prototype.data.names.bind(this)(args.names)
}
// update classes if exists
if ('classes' in args) {
Object.keys(args.classes).forEach(function(id) {
config.data_classes[id] = args.classes[id]
})
}
// update categories if exists
if ('categories' in args && $$.isCategorized()) {
config.axis_x_categories = args.categories
}
// update axes if exists
if ('axes' in args) {
Object.keys(args.axes).forEach(function(id) {
config.data_axes[id] = args.axes[id]
})
}
// update colors if exists
if ('colors' in args) {
Object.keys(args.colors).forEach(function(id) {
config.data_colors[id] = args.colors[id]
})
}
// use cache if exists
if ('cacheIds' in args && $$.hasCaches(args.cacheIds)) {
$$.load($$.getCaches(args.cacheIds), args.done)
return
}
// unload if needed
if (args.unload) {
// TODO: do not unload if target will load (included in url/rows/columns)
$$.unload(
$$.mapToTargetIds(args.unload === true ? null : args.unload),
function() {
$$.loadFromArgs(args)
}
)
} else {
$$.loadFromArgs(args)
}
}
Chart.prototype.unload = function(args) {
var $$ = this.internal
args = args || {}
if (args instanceof Array) {
args = { ids: args }
} else if (typeof args === 'string') {
args = { ids: [args] }
}
$$.unload($$.mapToTargetIds(args.ids), function() {
$$.redraw({
withUpdateOrgXDomain: true,
withUpdateXDomain: true,
withLegend: true
})
if (args.done) {
args.done()
}
})
}