PluginProbe
Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor / 2.0.7
Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor v2.0.7
2.0.13 2.0.12 2.0.11 2.0.10 2.0.9 trunk 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8
blockenberg / blocks / doughnut-chart / frontend.js

frontend.js in Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor 2.0.7, at blocks/doughnut-chart/frontend.js

52 lines 1.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /* Doughnut Chart — frontend.js (Chart.js via CDN) */
2 ( function () {
3 var CHARTJS_CDN = 'https://cdn.jsdelivr.net/npm/chart.js@4.4.3/dist/chart.umd.min.js';
4
5 function loadChartJs(cb) {
6 if (window.Chart) { cb(); return; }
7 var s=document.createElement('script'); s.src=CHARTJS_CDN; s.onload=cb; document.head.appendChild(s);
8 }
9
10 function initChart(wrap) {
11 var canvas = wrap.querySelector('canvas');
12 if (!canvas) return;
13 var slices = JSON.parse(wrap.dataset.slices||'[]');
14 var cutout = (wrap.dataset.cutout||'60')+'%';
15 var size = parseInt(wrap.dataset.size)||300;
16 var showLeg = wrap.dataset.legend!=='0';
17 var legPos = wrap.dataset.legendPos||'bottom';
18
19 var canvasWrap = wrap.querySelector('.bkdc-canvas-wrap');
20 if (canvasWrap) { canvasWrap.style.width=size+'px'; canvasWrap.style.height=size+'px'; }
21
22 canvas.width = size;
23 canvas.height = size;
24
25 new window.Chart(canvas,{
26 type:'doughnut',
27 data:{
28 labels: slices.map(s=>s.label),
29 datasets:[{
30 data: slices.map(s=>s.value),
31 backgroundColor: slices.map(s=>s.color),
32 borderWidth: 2,
33 borderColor: '#fff',
34 }]
35 },
36 options:{
37 cutout: cutout,
38 responsive:false,
39 plugins:{legend:{display:showLeg,position:legPos}},
40 }
41 });
42 }
43
44 function init(){
45 var wraps=document.querySelectorAll('.bkdc-wrap[data-type]');
46 if(!wraps.length) return;
47 loadChartJs(function(){wraps.forEach(initChart);});
48 }
49 if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',init);
50 else init();
51 }() );
52