mirror of
https://github.com/PretendoNetwork/website.git
synced 2025-04-02 11:11:50 -04:00
54 lines
1.7 KiB
JavaScript
54 lines
1.7 KiB
JavaScript
/* eslint-disable no-undef */
|
|
document.querySelectorAll('.feature-list-wrapper').forEach(progressListElement => {
|
|
|
|
// Find and generate all relevant data
|
|
const percentageOverride = progressListElement.querySelector('canvas.percentage-chart').dataset.percentageoverride;
|
|
const allFeatureNodes = progressListElement.querySelectorAll('.feature');
|
|
const allDoneFeatureNodes = progressListElement.querySelectorAll('.feature .done');
|
|
const allStartedFeatureNodes = progressListElement.querySelectorAll('.feature .ongoing');
|
|
|
|
// Use percentage override data attribute if present, else calculate
|
|
const progressPercentage = Math.round(percentageOverride) || Math.round(Math.min((allDoneFeatureNodes.length + allStartedFeatureNodes.length * 0.5) / allFeatureNodes.length * 100, 100)) || 0;
|
|
const remainingPercentage = 100 - progressPercentage;
|
|
|
|
// Set inner paragraph
|
|
progressListElement.querySelectorAll('.percentage-label').forEach(p => {
|
|
if (progressPercentage === 0) {
|
|
p.innerText = progressPercentage.toString() + '%';
|
|
} else {
|
|
p.innerText = progressPercentage.toString().padStart(2, '0') + '%';
|
|
}
|
|
});
|
|
|
|
// Create chart
|
|
const data = [progressPercentage, remainingPercentage];
|
|
Chart.defaults.plugins.legend = {
|
|
display: false
|
|
};
|
|
Chart.defaults.plugins.tooltip = {
|
|
enabled: false
|
|
};
|
|
|
|
const isInBrightCard = !!progressListElement.closest('.right.sect');
|
|
|
|
new Chart(progressListElement.querySelector('canvas'), {
|
|
type: 'doughnut',
|
|
data: {
|
|
labels: ['Done', 'Todo'],
|
|
datasets: [
|
|
{
|
|
data,
|
|
backgroundColor: isInBrightCard ? ['white', 'rgba(195, 178, 227, 0.5)'] : ['#9D6FF3', '#31365A']
|
|
}
|
|
]
|
|
},
|
|
options: {
|
|
elements: {
|
|
arc: {
|
|
borderWidth: 0
|
|
}
|
|
},
|
|
cutout: '70%'
|
|
}
|
|
});
|
|
});
|