// Exemple : Pour actualiser dynamiquement, il suffirait d’éditer les variables du dessus !
// Pour les chaînes en français, tout texte affiché est éditable ci-dessus.
// Accessibilité
// Ajout d’un titre alternatif pour le canvas via aria-label et un role explicite.
// Si on souhaite afficher des chiffres actualisés du SMIC ou salaires moyens en France via API :
// Exemple d’API ouverte possible (non utilisée ici) :
// // URL: https://public.opendatasoft.com/api/records/1.0/search/?dataset=smic-net-brut-france&q=2024
// // Réponse exemple JSON montrant les SMIC bruts et nets pour 2024
// /*
// {
// “records”: [
// { “fields”: { “annee”: 2024, “smic_brut_mensuel”: 1766.92, “smic_net_mensuel”: 1398.69 } }
// ]
// }
// */
/**
* Utilitaires de formatage
*/
function f(n) {return Number(n).toLocaleString(‘fr-FR’, {maximumFractionDigits:0});}
function fx(n, dec=2) {return Number(n).toLocaleString(‘fr-FR’, {minimumFractionDigits:dec, maximumFractionDigits:dec});}
/**
* Calcul global selon brut, statut et taux d’impôt fournis.
*/
function calculerTout() {
// Lire la saisie utilisateur
let brut = parseFloat(document.getElementById(“brutInput”).value) || 0;
let statut = document.getElementById(“statutInput”).value;
let tauxImpot = parseFloat(document.getElementById(“tauxImpotInput”).value) / 100;
if (brut {
let val = brut * Math.min(ch.taux, resteCharge);
cotisationsVal.push(val);
labels.push(ch.label);
couleurs.push(
ch.color == “cyan” ? “#06b6d4” : ch.color == “yellow” ? “#fde047” : ch.color == “pink” ? “#f472b6” :
ch.color == “purple” ? “#a78bfa” : ch.color == “lime” ? “#bef264” : “#94a3b8”
);
resteCharge -= ch.taux;
});
// S’il y a “du reste” sur le taux (pour le statut), on regroupe en “Autres”
if (resteCharge > 0.001) {
cotisationsVal.push(brut * resteCharge);
labels.push(“Autres cotisations”);
couleurs.push(“#94a3b8”);
}
// Render Chart.js
if (window.cotisationChart) window.cotisationChart.destroy();
let ctx = document.getElementById(‘chartCotisations’).getContext(‘2d’);
window.cotisationChart = new Chart(ctx, {
type: ‘doughnut’,
data: {
labels: labels,
datasets: [{
data: cotisationsVal,
backgroundColor: couleurs,
borderWidth: 1
}]
},
options: {
responsive: true,
plugins: {
legend: {display: false}
},
cutout: “60%”,
layout: {padding: 0},
animation: {duration: 500}
}
});
}
// Listeners temps réel sur les entrées
document.getElementById(‘brutInput’).addEventListener(‘input’, calculerTout);
document.getElementById(‘statutInput’).addEventListener(‘change’, ()=>{
const statut = document.getElementById(‘statutInput’).value;
// Pour les fonctionnaires et libéraux, masquer le champ impôt (saisie non applicable dans la plupart des cas)
const imp = document.getElementById(“impot-field”);
imp.style.display = (statut == “fonctionnaire” || statut == “liberal”) ? ‘none’ : ”;
calculerTout();
});
document.getElementById(‘tauxImpotInput’).addEventListener(‘input’, calculerTout);
// Initialisation
calculerTout();
⚠️ Information réglementaire. Ce contenu est publié à titre purement informatif et pédagogique. Il ne constitue ni un conseil en investissement, ni une recommandation personnalisée, ni une incitation à investir. Investir comporte un risque de perte en capital et les performances passées ne préjugent pas des performances futures. Consultez un conseiller en investissement financier (CIF) agréé avant toute décision.
🔗 Transparence. Cette page peut contenir des liens affiliés : un achat effectué via ces liens peut nous rémunérer, sans coût supplémentaire pour vous. Cela n’influence pas notre analyse.
admin1998
Fondateur de L'Investisseur Malin
Consultant SEO indépendant à Lyon et investisseur particulier depuis 2018. Je teste les produits d'épargne et les courtiers dont je parle, et je publie les chiffres officiels plutôt que les arguments commerciaux.
Nous utilisons des technologies telles que les cookies pour stocker et/ou accéder aux informations relatives aux appareils. Nous le faisons pour améliorer l’expérience de navigation et pour afficher des publicités personnalisées. Le fait de consentir à ces technologies nous permettra de traiter des données telles que le comportement de navigation ou les ID uniques sur ce site. Le fait de ne pas consentir ou de retirer son consentement peut avoir un effet négatif sur certaines fonctionnalités et fonctions.
Fonctionnel
Always active
Le stockage ou l’accès technique est strictement nécessaire dans la finalité d’intérêt légitime de permettre l’utilisation d’un service spécifique explicitement demandé par l’abonné ou l’utilisateur, ou dans le seul but d’effectuer la transmission d’une communication sur un réseau de communications électroniques.
Préférences
Le stockage ou l’accès technique est nécessaire dans la finalité d’intérêt légitime de stocker des préférences qui ne sont pas demandées par l’abonné ou l’utilisateur.
Statistiques
Le stockage ou l’accès technique qui est utilisé exclusivement à des fins statistiques.Le stockage ou l’accès technique qui est utilisé exclusivement dans des finalités statistiques anonymes. En l’absence d’une assignation à comparaître, d’une conformité volontaire de la part de votre fournisseur d’accès à internet ou d’enregistrements supplémentaires provenant d’une tierce partie, les informations stockées ou extraites à cette seule fin ne peuvent généralement pas être utilisées pour vous identifier.
Marketing
Le stockage ou l’accès technique est nécessaire pour créer des profils d’utilisateurs afin d’envoyer des publicités, ou pour suivre l’utilisateur sur un site web ou sur plusieurs sites web ayant des finalités marketing similaires.