# README – cd_main.js ## 1. Fonctions principales ### Fonctions de calcul de crédit - **calculate_pat, calculate_am, calculate_ph, calculate_fin_neuve, calculate_pao_m_3, calculate_pao_p_3, calculate_mobilhome, calculate_regroupement_de_credit, calculate_frais_notaire, calculate_but_immo, calculate_mono_rate_bt_10_30** - Calculent les paramètres d'un crédit (durée min/max, taux, etc.) selon le type de prêt et les valeurs saisies (capital, durée). - Chaque fonction correspond à un type de crédit spécifique. ### Fonctions d'orchestration et d'UI - **onchange_loan_type** - Fonction centrale appelée lors du changement de type de crédit (sélecteur, radio, sous-type). - Met à jour les sliders, les valeurs par défaut, l'affichage des champs, et déclenche le recalcul des mensualités. - **calculate_mensualite** - Calcule la mensualité et met à jour l'affichage (montant, durée, taux, etc.) selon les valeurs courantes. - Appelée à chaque modification pertinente (type, capital, durée). - **change_capital_slider, change_month_slider** - Initialisent et mettent à jour les sliders de capital et de durée, avec gestion des bornes, des steps, et de l'affichage dynamique. - **change_duree** - Met à jour la liste des durées disponibles selon le type de crédit et le capital. - **update_capital_input** - Met à jour les bornes et la valeur du champ capital lors d'un changement de type de crédit. ### Fonctions utilitaires - **number_format** - Formate les nombres pour l'affichage (séparateurs, décimales). - **validate_months_input, delayed_capital_chnage, delayed_months_change** - Gèrent la validation et l'arrondi des valeurs saisies dans les champs capital et durée. ### Gestionnaires d'événements - De nombreux gestionnaires jQuery déclenchent les fonctions ci-dessus lors des interactions utilisateur (changement de type, capital, durée, clics sur les boutons, etc.). ## 2. Scénarios d'interaction et enchaînement des fonctions ### Changement de type de crédit - L'utilisateur change le type de crédit (sélecteur ou radio). - **onchange_loan_type** est appelée : - Met à jour le type sélectionné. - Met à jour les sliders (capital, durée) via **change_capital_slider** et **change_month_slider**. - Met à jour l'affichage des champs spécifiques. - Appelle **calculate_mensualite** pour recalculer la mensualité. ### Changement du capital - L'utilisateur modifie le capital (slider ou input). - **on_slider_value_change** est appelée (directement ou via un timeout). - Appelle **calculate_mensualite** pour recalculer la mensualité. - Peut aussi mettre à jour la durée maximale possible via **change_duree** ou **change_month_slider**. ### Changement de la durée - L'utilisateur modifie la durée (slider, input, ou boutons + / -). - **calculate_mensualite** est appelée pour recalculer la mensualité. - **change_duree** ou **change_month_slider** peuvent être appelées pour ajuster les bornes et l'affichage. ### Changement de sous-type ou d'option spécifique - Peut déclencher **onchange_loan_type** ou des fonctions de calcul spécifiques selon le contexte. ### Soumission du formulaire - Validation via jQuery Validate. - Envoi AJAX, affichage d'un message de confirmation ou d'erreur. ### Autres interactions - De nombreux champs conditionnels (ex : profession, co-emprunteur, allocations) affichent ou masquent dynamiquement des sections du formulaire selon les choix de l'utilisateur. --- ## 3. Schéma des interactions principales ```mermaid flowchart TD A["Utilisateur interagit avec l'UI"] A --> B{"Type d'action"} B -->|Change le type de crédit| C[onchange_loan_type] B -->|Change le capital| D[on_slider_value_change] B -->|Change la durée| E[validate_months_input] C --> F[change_capital_slider] C --> G[change_month_slider] C --> H[calculate_mensualite] D --> H E --> H H --> I{"Type de crédit"} I -->|pat| J[calculate_pat] I -->|am| K[calculate_am] I -->|ph| L[calculate_ph] I -->|fin_neuve| M[calculate_fin_neuve] I -->|fin_occ_m3a| N[calculate_pao_m_3] I -->|fin_occ_p3a| O[calculate_pao_p_3] I -->|mobil_carav| P[calculate_mobilhome] I -->|regroup_cred| Q[calculate_regroupement_de_credit] I -->|frais_notaire| R[calculate_frais_notaire] I -->|but_immo| S[calculate_but_immo] I -->|amr/cdp/cied| T[calculate_mono_rate_bt_10_30] J --> U[Résultats de calcul] K --> U L --> U M --> U N --> U O --> U P --> U Q --> U R --> U S --> U T --> U U --> V[Affichage des résultats] V --> W[UI mise à jour] ``` --- **Remarques :** - Le cœur de la logique métier repose sur l'enchaînement `onchange_loan_type` → `calculate_mensualite` → fonctions de calcul selon le type. - Les sliders et les champs sont synchronisés à chaque changement pour garantir la cohérence des valeurs. - Le code est fortement couplé à l'UI jQuery et à la structure HTML du simulateur. **Questions restantes :** - Souhaitez-vous un schéma visuel des interactions ? - Faut-il détailler chaque fonction de calcul ou ce niveau de synthèse suffit-il ? - Voulez-vous une section sur l'extension AJAX et la structure des réponses serveur ?