//Je déclare mes variables globales var nb_levee_min = 0; var nb_levee_max = 0; var cout_levees_supp = 0; var cout_part_fixe_levee = 0; var cout_total_levee_supp = 0; var nb_ouv_colonne_min = 0; var nb_ouv_colonne_max = 0; var cout_ouv_colonne = 0; var cout_part_fixe_colonne = 0; var cout_total_ouv_supp = 0; var nb_pass_decheterie_min = 0; var nb_pass_decheterie_max = 0; var cout_passage_supp_decheterie = 0; var cout_total_passage_supp = 0; var cout_option_badge = 0; var span_simulateur_total = $('#simulateur_total'); var total = 0; //----------------------------------- FONCTION --------------------------------------// //Fonction pour masquer ou faire apparaitre un item du simulateur function hideOrShow(id, etat){ if(etat == 'show'){ $(id).addClass("d-flex"); $(id).removeClass("d-none"); }else if(etat == "hide"){ $(id).addClass("d-none"); $(id).removeClass("d-flex"); } } //Initialisation de la première dotation au chargement de la page dans le but d'initialiser les valeurs des variables globales. $(document).ready(setPartDotation("part1")); //Fonction de calcul du total et d'affichage du total dans le span du simulateur function setTotal() { //J'incrémente et j'affiche mon total total = parseFloat(cout_total_levee_supp) + parseFloat(cout_total_ouv_supp) + parseFloat(cout_total_passage_supp) + parseFloat(cout_part_fixe_levee) + parseFloat(cout_part_fixe_colonne) + parseFloat(cout_option_badge); span_simulateur_total.text(parseFloat(total).toFixed(2)+"€"); } //----------------------------------- PARTICULIER -----------------------------------// //Fonction de préparation affichage function setPartDotation(id_dotation) { switch (id_dotation) { case 'part1': nb_levee_min = 12; nb_levee_max = 26; changeRange("nb_levees_part", nb_levee_min, nb_levee_max); $("#nb_levees_part").show(); $("#volume_bac_part").show(); cout_part_fixe_levee = 185.36; $("#nb_ouv_colonne_part").hide(); cout_part_fixe_colonne = 0; nb_pass_decheterie_min = 12; nb_pass_decheterie_max = 50; changeRange("nb_pass_decheterie_part", nb_pass_decheterie_min, nb_pass_decheterie_max); $("#nb_pass_decheterie_part").show(); //Je réinitialise le select $("select[name=volume_bac_part]").val($("select[name=volume_bac_part] option:first").val()); //Je MaJ les valeurs des variables de cout cout_levees_supp = 2.77; cout_ouv_colonne = 1.19; cout_passage_supp_decheterie = 9.35; cout_option_badge = 0; hideOrShow("li#li_option_badge_colonne", "hide"); $("#span_option_badge_colonnes").text(parseFloat(cout_option_badge).toFixed(2)+'€'); cout_total_levee_supp = 0; cout_total_ouv_supp = 0; cout_total_passage_supp = 0; total = cout_part_fixe_levee + cout_part_fixe_colonne; $("#span_part_fixe").text(parseFloat(total).toFixed(2)+'€'); span_simulateur_total.text(parseFloat(total).toFixed(2)+"€"); //Je MaJ le total setTotal(); break; case 'part2': $("#nb_levees_part").hide(); $("#volume_bac_part").hide(); cout_part_fixe_levee = 0; nb_ouv_colonne_min = 52; nb_ouv_colonne_max = 100; changeRange("nb_ouv_colonne_part", nb_ouv_colonne_min, nb_ouv_colonne_max); $("#nb_ouv_colonne_part").show(); cout_part_fixe_colonne = 201.72; nb_pass_decheterie_min = 12; nb_pass_decheterie_max = 50; changeRange("nb_pass_decheterie_part", nb_pass_decheterie_min, nb_pass_decheterie_max); $("#nb_pass_decheterie_part").show(); //Je réinitialise le select $("select[name=volume_bac_part]").val($("select[name=volume_bac_part] option:first").val()); //Je MaJ les valeurs des variables de cout cout_levees_supp = 2.77; cout_ouv_colonne = 1.19; cout_passage_supp_decheterie = 9.35; cout_option_badge = 0; hideOrShow("li#li_option_badge_colonne", "hide"); $("#span_option_badge_colonnes").text(parseFloat(cout_option_badge).toFixed(2)+'€'); cout_total_levee_supp = 0; cout_total_ouv_supp = 0; cout_total_passage_supp = 0; total = cout_part_fixe_levee + cout_part_fixe_colonne; $("#span_part_fixe").text(parseFloat(total).toFixed(2)+'€'); span_simulateur_total.text(parseFloat(total).toFixed(2)+"€"); //Je MaJ le total setTotal(); break; case 'part3': nb_levee_min = 5; nb_levee_max = 26; changeRange("nb_levees_part", nb_levee_min, nb_levee_max); $("#nb_levees_part").show(); $("#volume_bac_part").show(); cout_part_fixe_levee = 185.36; nb_ouv_colonne_min = 17; nb_ouv_colonne_max = 50; changeRange("nb_ouv_colonne_part", nb_ouv_colonne_min, nb_ouv_colonne_max); $("#nb_ouv_colonne_part").show(); cout_part_fixe_colonne = 0.00; nb_pass_decheterie_min = 12; nb_pass_decheterie_max = 50; changeRange("nb_pass_decheterie_part", nb_pass_decheterie_min, nb_pass_decheterie_max); $("#nb_pass_decheterie_part").show(); //Je réinitialise le select $("select[name=volume_bac_part]").val($("select[name=volume_bac_part] option:first").val()); //Je MaJ les valeurs des variables de cout cout_levees_supp = 2.77; cout_ouv_colonne = 1.19; cout_passage_supp_decheterie = 9.35; cout_option_badge = 0; hideOrShow("li#li_option_badge_colonne", "hide"); $("#span_option_badge_colonnes").text(parseFloat(cout_option_badge).toFixed(2)+'€'); cout_total_levee_supp = 0; cout_total_ouv_supp = 0; cout_total_passage_supp = 0; total = cout_part_fixe_levee + cout_part_fixe_colonne; $("#span_part_fixe").text(parseFloat(total).toFixed(2)+'€'); span_simulateur_total.text(parseFloat(total).toFixed(2)+"€"); //Je MaJ le total setTotal(); break; case 'part4': nb_levee_min = 12; nb_levee_max = 26; changeRange("nb_levees_part", nb_levee_min, nb_levee_max); $("#nb_levees_part").show(); $("#volume_bac_part").show(); cout_part_fixe_levee = 185.36; $("#nb_ouv_colonne_part").hide(); cout_part_fixe_colonne = 0; nb_pass_decheterie_min = 12; nb_pass_decheterie_max = 50; changeRange("nb_pass_decheterie_part", nb_pass_decheterie_min, nb_pass_decheterie_max); $("#nb_pass_decheterie_part").show(); //Je réinitialise le select $("select[name=volume_bac_part]").val($("select[name=volume_bac_part] option:first").val()); //Je MaJ les valeurs des variables de cout cout_levees_supp = 2.77; cout_ouv_colonne = 1.19; cout_passage_supp_decheterie = 9.35; cout_option_badge = 23.32; hideOrShow("li#li_option_badge_colonne", "show"); $("#span_option_badge_colonnes").text(parseFloat(cout_option_badge).toFixed(2)+'€'); cout_total_levee_supp = 0; cout_total_ouv_supp = 0; cout_total_passage_supp = 0; total = cout_part_fixe_levee + cout_part_fixe_colonne; $("#span_part_fixe").text(parseFloat(total).toFixed(2)+'€'); span_simulateur_total.text(parseFloat(total).toFixed(2)+"€"); //Je MaJ le total setTotal(); break; } } //Fonction de détection de changement de Dotation $('input:radio[name=radio_dotation_part]').on('change', function(){ idDotation = $('input:radio[name=radio_dotation_part]:checked').val(); setPartDotation(idDotation); $("select[name=volume_bac_part]").val($("select[name=volume_bac_part] option:first").val()); //Je remet la liste des items du simulateur à 0. hideOrShow("li#li_nb_levees", "hide"); hideOrShow("li#li_ouv_colonnes", "hide"); hideOrShow("li#li_nb_pass_decheterie", "hide"); }); //Fonction permettant de changer les valeurs des réglettes function changeRange(id_range_wrapper, nb_min, nb_max) { range = $("#"+id_range_wrapper+" .custom-range"); bubble = $("#"+id_range_wrapper+" .bubble"); span_range_min = $("#"+id_range_wrapper+"_label_min"); span_range_max = $("#"+id_range_wrapper+"_label_max"); range.attr("min", nb_min); range.attr("max", nb_max); range.val(nb_min); span_range_min.text(nb_min); span_range_max.text(nb_max); bubbleNewVal = Number(((range.val() - nb_min) * 100) / (nb_max - nb_min)); bubble.html(range.val()); // Sorta magic numbers based on size of the native UI thumb bubble.css("left", "calc("+bubbleNewVal+"% + ("+(1 - bubbleNewVal * 0.15)+"px)"); } ///////////////////////////////////////////////////////////////////////////////////////////////////////// //---------------------------------------------- CALCULS ----------------------------------------------// ///////////////////////////////////////////////////////////////////////////////////////////////////////// // function calc_cout_total_event(event, span, cout_unite, cout_total_supp){ // //Je calcul le nb de levée supp égal à la différence entre ma valeur et ma valeur min par default : // let nb_supp = $(event).val() - $(event).attr("min"); // //Je MaJ la valeur de span_nb_levees dans le simulateur : // cout_total_supp = parseFloat(nb_supp * cout_unite).toFixed(2); // $("+span+").text(parseFloat(cout_total_supp).toFixed(2)+"€"); // } //Je détecte les changements du select "volume_bac_part" $('select[name=volume_bac_part]').on('change', function(){ //Je récupère la valeur de l'option selectionnée let option_select = $('select[name=volume_bac_part] option:selected').text(); switch (option_select) { case 'Bac de 140L : 1 à 2 personnes ou résidence secondaire': $("#span_part_fixe").text('185.36€'); cout_part_fixe_levee = 185.36; cout_levees_supp = 2.77; //Si la valeur selectionnée est différentes de la valeur min par default if($('input#customRangeNbLeveesPart').val() != $('input#customRangeNbLeveesPart').attr("min")){ //Alors je fais apparaitre ma ligne dans le calcul de la simulation : hideOrShow("li#li_nb_levees", "show"); //Je calcul le nb de levée supp égal à la différence entre ma valeur et ma valeur min par default : let nb_levee_supp = $('input#customRangeNbLeveesPart').val() - $('input#customRangeNbLeveesPart').attr("min"); //Je MaJ la valeur de span_nb_levees dans le simulateur : cout_total_levee_supp = parseFloat(nb_levee_supp * cout_levees_supp).toFixed(2); $('#span_nb_levees').text(parseFloat(cout_total_levee_supp).toFixed(2)+"€"); }else{ //Sinon, si la valeur selectionnée est égale à la valeur min par default je fais disparaitre ma ligne de la simulation hideOrShow("li#li_nb_levees", "hide"); cout_total_levee_supp = 0; } break; case 'Bac de 240L : 3 à 4 personnes ou résidence secondaire': $("#span_part_fixe").text('253.00€'); cout_part_fixe_levee = 253.00; cout_levees_supp = 4.75; //Si la valeur selectionnée est différentes de la valeur min par default if($('input#customRangeNbLeveesPart').val() != $('input#customRangeNbLeveesPart').attr("min")){ //Alors je fais apparaitre ma ligne dans le calcul de la simulation : hideOrShow("li#li_nb_levees", "show"); //Je calcul le nb de levée supp égal à la différence entre ma valeur et ma valeur min par default : let nb_levee_supp = $('input#customRangeNbLeveesPart').val() - $('input#customRangeNbLeveesPart').attr("min"); //Je MaJ la valeur de span_nb_levees dans le simulateur : cout_total_levee_supp = parseFloat(nb_levee_supp * cout_levees_supp).toFixed(2); $('#span_nb_levees').text(parseFloat(cout_total_levee_supp).toFixed(2)+"€"); }else{ //Sinon, si la valeur selectionnée est égale à la valeur min par default je fais disparaitre ma ligne de la simulation hideOrShow("li#li_nb_levees", "hide"); cout_total_levee_supp = 0; } break; case 'Bac de 340L : 5 personnes et + ou résidence secondaire': $("#span_part_fixe").text('319.44€'); cout_part_fixe_levee = 319.44; cout_levees_supp = 6.73; //Si la valeur selectionnée est différentes de la valeur min par default if($('input#customRangeNbLeveesPart').val() != $('input#customRangeNbLeveesPart').attr("min")){ //Alors je fais apparaitre ma ligne dans le calcul de la simulation : hideOrShow("li#li_nb_levees", "show"); //Je calcul le nb de levée supp égal à la différence entre ma valeur et ma valeur min par default : let nb_levee_supp = $('input#customRangeNbLeveesPart').val() - $('input#customRangeNbLeveesPart').attr("min"); //Je MaJ la valeur de span_nb_levees dans le simulateur : cout_total_levee_supp = parseFloat(nb_levee_supp * cout_levees_supp).toFixed(2); $('#span_nb_levees').text(parseFloat(cout_total_levee_supp).toFixed(2)+"€"); }else{ //Sinon, si la valeur selectionnée est égale à la valeur min par default je fais disparaitre ma ligne de la simulation hideOrShow("li#li_nb_levees", "hide"); cout_total_levee_supp = 0; } break; } //Je MaJ le total setTotal(); }); //Je détecte les changements de la reglette "nb_levees_part" $('input#customRangeNbLeveesPart').on('change', function(){ //Si la valeur selectionnée est différentes de la valeur min par default if($(this).val() != $(this).attr("min")){ //Alors je fais apparaitre ma ligne dans le calcul de la simulation : hideOrShow("li#li_nb_levees", "show"); //Je calcul le nb de levée supp égal à la différence entre ma valeur et ma valeur min par default : let nb_levee_supp = $(this).val() - $(this).attr("min"); //Je MaJ la valeur de span_nb_levees dans le simulateur : cout_total_levee_supp = parseFloat(nb_levee_supp * cout_levees_supp).toFixed(2); $('#span_nb_levees').text(parseFloat(cout_total_levee_supp).toFixed(2)+"€"); }else{ //Sinon, si la valeur selectionnée est égale à la valeur min par default je fais disparaitre ma ligne de la simulation hideOrShow("li#li_nb_levees", "hide"); cout_total_levee_supp = 0; } //Je MaJ le total setTotal(); }); //Je détecte les changements de la reglette "nb_ouv_colonne_part" $('input#customRangeNbOuvColonnePart').on('change', function(){ //Si la valeur selectionnée est différentes de la valeur min par default if($(this).val() != $(this).attr("min")){ //Alors je fais apparaitre ma ligne dans le calcul de la simulation : hideOrShow("li#li_ouv_colonnes", "show"); //Je calcul le nb de levée supp égal à la différence entre ma valeur et ma valeur min par default : let nb_ouv_supp = $(this).val() - $(this).attr("min"); cout_total_ouv_supp = parseFloat(nb_ouv_supp * cout_ouv_colonne).toFixed(2); //Je MaJ la valeur de span_ouv_colonnes dans le simulateur : $('#span_ouv_colonnes').text(cout_total_ouv_supp+"€"); }else{ //Sinon, si la valeur selectionnée est égale à la valeur min par default je fais disparaitre ma ligne de la simulation hideOrShow("li#li_ouv_colonnes", "hide"); cout_total_ouv_supp = 0; } //Je MaJ le total setTotal(); }); //Je détecte les changements de la reglette "nb_pass_decheterie_part". $('input#customRangeNbPassDecheteriePart').on('change', function(){ //Si la valeur selectionnée est différentes de la valeur min par default if($(this).val() != $(this).attr("min")){ //Alors je fais apparaitre ma ligne dans le calcul de la simulation : hideOrShow("li#li_nb_pass_decheterie", "show"); //Je calcul le nb de levée supp égal à la différence entre ma valeur et ma valeur min par default : let nb_pass_supp = $(this).val() - $(this).attr("min"); cout_total_passage_supp = parseFloat(nb_pass_supp * cout_passage_supp_decheterie).toFixed(2); //Je MaJ la valeur de span_pass_decheterie dans le simulateur : $('#span_pass_decheterie').text(cout_total_passage_supp+"€"); }else{ //Sinon, si la valeur selectionnée est égale à la valeur min par default je fais disparaitre ma ligne de la simulation hideOrShow("li#li_nb_pass_decheterie", "hide"); cout_total_passage_supp = 0; } //Je MaJ le total setTotal(); });