Вы можете создать исходный объект, а затем просто с помощью if / then добавить threshold
, если это gauge
, прежде чем передать его в c3.generate()
.
Фрагмент стека
function bindChart(chartType) {
let _chart = {
bindto: '#Demo',
data: {
columns: [
['A', 95],
['B', 65],
['C', 11]
],
type: chartType,
},
color: {
pattern: ['#af5', '#ad3', '#a80', '#a00']
}
}
if (chartType == 'gauge') {
_chart.color.threshold = { values : [0, 50, 75, 100] }
};
let chart = c3.generate(_chart);
}
<script src="https://d3js.org/d3.v5.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/c3/0.5.4/c3.min.js"></script>
<button onclick="bindChart('pie');">PIE</button>
<button onclick="bindChart('gauge');">GAUGE</button>
<button onclick="bindChart('bar');">BAR</button>
<div id="Demo" />
Или протестируйте его в строке с чем-то вроде этого, хотя я не знаю, будет ли это хорошо, если threshold
все еще находится в объекте, хотя пусто
function bindChart(chartType) {
let chart = c3.generate({
bindto: '#Demo',
data: {
columns: [
['A', 95],
['B', 65],
['C', 11]
],
type: chartType,
},
color: {
pattern: ['#af5', '#ad3', '#a80', '#a00'],
threshold: ((chartType == 'gauge') ? {values: [0, 50, 75, 100]} : {})
}
});
}
<script src="https://d3js.org/d3.v5.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/c3/0.5.4/c3.min.js"></script>
<button onclick="bindChart('pie');">PIE</button>
<button onclick="bindChart('gauge');">GAUGE</button>
<button onclick="bindChart('bar');">BAR</button>
<div id="Demo" />
А если нет, то может вот так
function bindChart(chartType) {
let chart = c3.generate({
bindto: '#Demo',
data: {
columns: [
['A', 95],
['B', 65],
['C', 11]
],
type: chartType,
},
color: ((chartType == 'gauge') ?
{ pattern: ['#af5', '#ad3', '#a80', '#a00'],
threshold: {values: [0, 50, 75, 100]}} :
{ pattern: ['#af5', '#ad3', '#a80', '#a00'] }
)
});
}
<script src="https://d3js.org/d3.v5.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/c3/0.5.4/c3.min.js"></script>
<button onclick="bindChart('pie');">PIE</button>
<button onclick="bindChart('gauge');">GAUGE</button>
<button onclick="bindChart('bar');">BAR</button>
<div id="Demo" />