Как бы я добавил процент выреза к моей диаграмме данных в диаграмме js, идентификатор цели, чтобы сделать диаграмму тоньше.
const data = {
labels: ['onek', 'teo', 'Three'],
datasets: [{
data: [1, 3, 9],
backgroundColor: [],
borderColor: [],
hoverOffset: 4
}]
};
var chart = new Chart(document.getElementById('myChart'), {
type: 'doughnut',
data: data,
options: {
responsive: true,
legend: {
display: false
},
}
});
jQuery(function($) {
// Function that formats a raw price amount
function formatPrice(rawPrice) {
return rawPrice.toLocaleString("en-US", {
style: "currency",
currency: "USD"
});
}
$('form#roi').on('click', '.calculate-roi', function() {
// update chart
chart.data.datasets.pop();
chart.data.datasets.push({
data: [mr_results_total, ea_results_total, rav_results_total],
backgroundColor: [
'rgb(255, 99, 132)',
'rgb(54, 162, 235)',
'rgb(255, 205, 86)'
],
hoverOffset: 4,
});
Chart.pluginService.register({
beforeDraw: function(chart) {
var width = chart.chart.width,
height = chart.chart.height,
ctx = chart.chart.ctx;
ctx.restore();
ctx.beginPath();
var fontSize = (height / 114).toFixed(2);
ctx.font = fontSize + "em sans-serif";
ctx.arc(width / 2, height / 2, 80, 0, 2 * Math.PI);
ctx.fillStyle = '#8AC007';
ctx.fill();
ctx.lineWidth = 5;
ctx.fillStyle = 'blue';
ctx.strokeStyle = '#003300';
ctx.stroke();
ctx.fillText(text, textX, textY);
ctx.save();
var text = total_number,
textX = Math.round((width - ctx.measureText(text).width) / 2),
textY = height / 2;
ctx.fillText(text, textX, textY);
ctx.save();
}
});
chart.update();
});
});
var slider = document.getElementById("myRange");
var output = document.getElementById("demo");
// var slider2 = document.getElementById("myRange2");
// var output2 = document.getElementById("demo2");
output.innerHTML = slider.value;
// output2.innerHTML = slider2.value;
slider.oninput = function() {
output.innerHTML = this.value;
}#output {
display: none;
font-size: 26px;
margin-top: 50px;
}
.help-inline {
display: none;
}
.result {
padding-top: 10px;
}
.roi-success {
background: #269526;
color: white;
}
.roi-danger {
background: #d74e26;
color: white;
}
input[type = "text"] {
width: 100%;
display: block;
margin: 15px 0;
}
.btn {
display: block;
}
.double-border {
--b: 2px;
/* thickness */
--c: #3CD5AF;
height: 100%;
border-right: var(--b) solid var(--c);
border-left: var(--b) solid var(--c);
background: linear-gradient(var(--c) 0 0) left 10px bottom 0/var(--b) 50% no-repeat, linear-gradient(var(--c) 0 0) right 10px bottom 0/var(--b) 50% no-repeat
}
.slider {
width: 100%;
border-radius: 5px;
background: #00AFAB;
outline: none;
opacity: 0.7;
-webkit-transition: .2s;
transition: opacity .2s;
padding: 0 0 0 0;
margin: 0;
}
.slider:hover {
opacity: 1;
}
.slider::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
width: 25px;
height: 25px;
border-radius: 50%;
background: #00AFAB;
cursor: pointer;
}
.slider::-moz-range-thumb {
width: 25px;
height: 25px;
border-radius: 50%;
background: #04AA6D;
cursor: pointer;
}
select {
width: 75%;
}
#output {
font-size: 16px;
margin-top: 0;
}
.chartbox {
width: 100;
}<link href = "https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel = "stylesheet" />
<script src = "//cdnjs.cloudflare.com/ajax/libs/Chart.js/2.1.6/Chart.bundle.js"></script>
<section <?php theme_section_attr_id() ?>
<?php theme_section_attr_class( 'pb-5' ) ?>>
<div class = "container">
<div class = "row pt-5">
<div class = "col-md-4 pt-5">
<div class = "heading ">
</div>
</div>
<div class = "col-md-8 border">
<div class = "row p-5 pb-0">
<div class = "col-md-6">
<form id = "roi">
<div class = "control-group">
<p>Number <span id = "demo"></span></p>
<div class = "slidecontainer">
<input id = "no_emp" type = "range" min = "50" max = "50000" value = "50" class = "slider" id = "myRange">
</div>
<p>Monthly <span id = "demo2"></span></p>
<div class = "slidecontainer">
<input id = "month_inv" type = "range" min = "10" max = "1000" value = "10" class = "slider" id = "myRange2">
</div>
</div>
<button type = "button" class = "btn btn-primary btn-block calculate-roi">Calculate</button>
</form>
</div>
<div class = "col-md-6 text-center">
<div class = "chartbox">
<canvas id = "myChart"></canvas>
</div>
<p>Estimated Value</p>
<h3 class = "total_number"></h3>
</div>
</div>
</div>
</div>
</div>
</section>У меня есть, но не помогло, может я не туда добавил



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


При использовании Chart.js версии 2 вам необходимо применить конфигурацию cutoutPercentage в options. Значение представляет собой процент
options: {
...,
cutoutPercentage: 80,
},
Для Chart.js версии 3 и выше в конфигурации cutout должно быть указано значение, основанное на описании.
Часть диаграммы, вырезанная из середины. Если строка заканчивается на «%», это процент радиуса диаграммы. число считается пикселями.
options: {
...,
cutout: '80%',
},
Пробовали ли вы добавить вырез в объект
options?options: { cutout: "90%" }. Кроме того, версия 2.1.6 довольно старая.