SHARE
TWEET

Untitled

a guest Jan 20th, 2019 74 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. $(document).ready(function () {
  2.     /*ELIGIBLE WORK FIELD RECUPERATION*/
  3.     // Categories vars
  4.     var catContainer = $('#categories-container');
  5.     var catTrigger = $('select[name*=eligible_category]');
  6.     var currentValue = lower_first_word(catTrigger.find('option').first().text());
  7.     var newValue;
  8.  
  9.     var workInput = $('select[name*=eligible_work]');
  10.     var categoryId = catTrigger.find('option:first').attr('value');
  11.  
  12.     // Work vars
  13.     var workTrigger = $('select[name*=eligible_work]');
  14.     var workContainer = $('.input-container');
  15.     var currentId = workTrigger.find('option:selected').attr('value');
  16.  
  17.     // Form vars
  18.     var submitTrigger = $('input[type*=submit]');
  19.     var form = $('form[name*=front_simulation]');
  20.     var inputContainers;
  21.     var canSubmit;
  22.  
  23.     var hideInputsConditions = [
  24.         {
  25.             cond: function () {
  26.                 if ($.inArray(parseInt(workTrigger.find('option:selected').attr('value')), [115, 116, 227]) === -1)
  27.                     return false;
  28.  
  29.                 var LOG = $('form[name*=front_simulation]').find("input[name*=LOG]:checked");
  30.                 var logVal = LOG.length > 0 ? LOG.val() : null;
  31.                 return logVal == 1;
  32.             },
  33.             hideList: ['NAPP', 'TCH']
  34.         },
  35.         {
  36.             cond: function () {
  37.                 if (workTrigger.find('option:selected').attr('value') != 204)
  38.                     return false;
  39.  
  40.                 var LOG = $('form[name*=front_simulation]').find("input[name*=LOG]:checked");
  41.                 var logVal = LOG.length > 0 ? LOG.val() : null;
  42.                 return logVal == 1;
  43.             },
  44.             hideList: ['NAPP']
  45.         }
  46.     ];
  47.  
  48.     var hideWorkConditions = [
  49.         // Résidentiel
  50.         {
  51.             'triggerName': 'LOG',
  52.             'cond': function (val) {
  53.                 return val == 2;
  54.             },
  55.             'hideList': [113, 114, 203]
  56.         },
  57.         {
  58.             'triggerName': 'P3_ETAS',
  59.             'cond': function (val) {
  60.                 if (!val)
  61.                     return;
  62.  
  63.                 var typePac = $('form[name*=front_simulation]').find("input[name*=P3_TYPE_PAC]:checked");
  64.                 var typePacVal = typePac.length > 0 ? typePac.val() : null;
  65.  
  66.  
  67.                 var alertMsg = null;
  68.                 var returnresult = false;
  69.  
  70.                 if (val.length > 0) {
  71.                     if (typePacVal == 0) {
  72.                         alertMsg = "Ces travaux ne sont pas éligibles pour les caractéristiques techniques que vous avez indiquées (Efficacité énergétique saisonnière doit être supérieure ou égale à 126)";
  73.                         returnresult = val < 126;
  74.                     }
  75.                     else if (typePacVal == 1) {
  76.                         alertMsg = "Ces travaux ne sont pas éligibles pour les caractéristiques techniques que vous avez indiquées (Efficacité énergétique saisonnière doit être supérieure ou égale à 111)";
  77.                         returnresult = val < 111;
  78.                     }
  79.                 }
  80.                 if (alertMsg && returnresult) {
  81.                     alert(alertMsg);
  82.                     $('form[name*=front_simulation]').find("input[name*=P3_ETAS]").val('');
  83.                     typePac.removeAttr('checked');
  84.                 }
  85.                 return returnresult;
  86.             },
  87.         }
  88.     ];
  89.  
  90.     this.inputs = [];
  91.     this.works = [];
  92.     var pthis = this;
  93.  
  94.     function applyWorkFilters() {
  95.         var worksToHide = [];
  96.         for (var i = 0; i < hideWorkConditions.length; i++) {
  97.             var conf = hideWorkConditions[i];
  98.             if (!conf) continue;
  99.  
  100.             var triggerName = conf.triggerName;
  101.             var condHandler = conf.cond;
  102.  
  103.             var trigger = $("input, select").filter("[name*='" + triggerName + "']");
  104.  
  105.             // On prend le type de trigger en considération
  106.             var type = trigger.attr('type');
  107.             if (type && type.toLowerCase() == 'radio')
  108.                 value = trigger.filter(":checked").val();
  109.             else
  110.                 value = trigger.val();
  111.  
  112.             // Vérifions si la condition est remplie => si elle l'est on devra masquer tous les éléments listés
  113.             var doHide = condHandler(value);
  114.  
  115.             if (doHide)
  116.                 worksToHide = worksToHide.concat(conf.hideList);
  117.         }
  118.         return worksToHide;
  119.     };
  120.  
  121.     function applyInputFilters() {
  122.         var inputsToHide = [];
  123.         for (var i = 0; i < hideInputsConditions.length; i++) {
  124.             var conf = hideInputsConditions[i];
  125.             var doHide = conf.cond();
  126.             if (doHide)
  127.                 inputsToHide = inputsToHide.concat(conf.hideList);
  128.         }
  129.         return inputsToHide;
  130.     };
  131.  
  132.     function createOptions() {
  133.         workInput.empty();
  134.         var worksToHide = applyWorkFilters();
  135.         $.each(pthis.works, function (key, value) {
  136.             if ($.inArray(parseInt(value.id), worksToHide) == -1) {
  137.                 var option = $('<option>')
  138.                     .attr('value', value.id)
  139.  
  140.                     .text(value.title)
  141.                 ;
  142.  
  143.                 if (currentId == value.id) {
  144.                     option.attr('selected', 'selected')
  145.                 }
  146.  
  147.                 workInput.append(option);
  148.             }
  149.         });
  150.     }
  151.  
  152.     catTrigger.change(function () {
  153.         categoryId = $(this).val();
  154.         currentId = workTrigger.find('option:selected').attr('value');
  155.  
  156.         newValue = lower_first_word($(this).find('option:selected').text());
  157.         newValue = newValue.normalize('NFD').replace(/[\u0300-\u036f]/g, "");
  158.  
  159.         if (currentValue != newValue) {
  160.             updateContainer(newValue);
  161.         }
  162.  
  163.         $.ajax(Routing.generate('api_get_category_works', {
  164.             type: 'particulier',
  165.             category_id: categoryId
  166.         }))
  167.             .done(function (data) {
  168.                 pthis.works = data;
  169.                 createOptions();
  170.                 workTrigger.change();
  171.             });
  172.  
  173.     });
  174.  
  175.     function updateContainer(value) {
  176.         var currentClass = '.' + currentValue;
  177.         catContainer.find(currentClass)
  178.             .removeClass(currentValue)
  179.             .addClass(value);
  180.  
  181.         currentValue = value;
  182.     }
  183.  
  184.     function lower_first_word(str) {
  185.         var asArray = str.split(" ");
  186.         return asArray[0].toLowerCase();
  187.     }
  188.  
  189.     workTrigger.change(function () {
  190.         currentId = $(this).find('option:selected').attr('value');
  191.  
  192.         $.ajax(Routing.generate('api_get_work_fields', {
  193.             slug: 'particulier',
  194.             id: currentId
  195.         }))
  196.             .done(function (data) {
  197.                 pthis.inputs = data;
  198.                 displayInputs();
  199.             });
  200.     });
  201.  
  202.     function displayInputs() {
  203.         resetInputs();
  204.  
  205.         var inputsToHide = applyInputFilters();
  206.  
  207.  
  208.         $.each(pthis.inputs, function (key, value) {
  209.             if ($.inArray(value.name, inputsToHide) == -1) {
  210.  
  211.                 inputName = "front_simulation[" + value.name + "]";
  212.  
  213.                 var input = $('input[name="' + inputName + '"]');
  214.  
  215.  
  216.                 if (!input.length)
  217.                     input = $('select[name="' + inputName + '"]');
  218.  
  219.                 input.closest('.field-container').removeClass('no-visibility');
  220.             }
  221.         });
  222.     }
  223.  
  224.     function resetInputs() {
  225.         $.each(workContainer.find('.field-container'), function () {
  226.             $(this).addClass('no-visibility');
  227.         });
  228.     }
  229.  
  230.     $('input[type=submit]').click(function (e) {
  231.         if (canSubmit) {
  232.             return;
  233.         } else {
  234.             e.preventDefault();
  235.  
  236.             inputContainers = $(".field-container.no-visibility");
  237.             $.each(inputContainers, function () {
  238.                 var conditions = $(this).has('input[name*=_token]').length + $(this).has('input[name*=quotation_date]').length;
  239.                 if (conditions == 0) {
  240.                     $(this).attr('disabled');
  241.                     $(this).remove();
  242.                 }
  243.             });
  244.  
  245.             canSubmit = true;
  246.             $(this).trigger('click');
  247.         }
  248.     });
  249.  
  250.     resetInputs();
  251.     catTrigger.change();
  252.     workTrigger.change();
  253.     form.find('select, input[type=radio], input[type=text]').change(function () {
  254.         displayInputs();
  255.     });
  256.  
  257.     $("[name*='LOG'],[name*='P3_ETAS'],[name*='P3_TYPE_PAC']").change(function () {
  258.         createOptions();
  259.         workTrigger.change();
  260.     });
  261.  
  262.  
  263.     /*DEPT MAP SELECTOR*/
  264.     var deptSelect = $('select[name*=DEPT]');
  265.     deptSelect.change(function () {
  266.         if ($(this).val() == 0) {
  267.             $('#mb-current').attr('class', 'mb');
  268.         }
  269.         else {
  270.             var text = $.trim(deptSelect.find("option:selected").text());
  271.             var dept = text.substring(0, 2);
  272.             $("#frenchMap").find("a").each(function () {
  273.                 if ($(this).data('departements').indexOf(dept) >= 0) {
  274.                     var className = $(this).attr('class') + "b";
  275.                     if ($(this).attr('class'))
  276.                         $('#mb-current').attr('class', 'mb ' + className);
  277.                 }
  278.             });
  279.         }
  280.     });
  281.     deptSelect.change();
  282.  
  283.     if ($('input[name*=quotation_signed]:checked').val() == 1) {
  284.         if($('#quotation-signed-error-modal').length > 0) {
  285.             setTimeout(function () {
  286.                 $('#quotation-signed-error-modal').dialogMp();
  287.             }, 1000);
  288.         }
  289.     }
  290.  
  291.     // /*ENR_COMB_CDP DISPLAY SCRIPT*/
  292.     // var enrCdpTriggers = $('input[name="front_simulation[CDP_ENR]"]');
  293.     // var enrCombCdpInput = $('select[name="front_simulation[CDP_ENR_COMB]"]');
  294.     // var currentValueCdp = $('input[name="front_simulation[CDP_ENR]"]:checked').val();
  295.     //
  296.     // enrCdpTriggers.change(function () {
  297.     //     currentValueCdp = $(this).val();
  298.     //     if (currentValueCdp == 1) {
  299.     //         enrCombCdpInput.closest('.field-container').addClass('no-visibility');
  300.     //     } else {
  301.     //         enrCombCdpInput.closest('.field-container').removeClass('no-visibility');
  302.     //     }
  303.     // }).change();
  304.     //
  305.     // /*ENR_COMBDISPLAY SCRIPT*/
  306.     // var enrTriggers = $('input[name="front_simulation[ENR]"]');
  307.     // var enrCombInput = $('select[name="front_simulation[ENR_COMB]"]');
  308.     // var currentEnrValue = $('input[name="front_simulation[ENR]"]:checked').val();
  309.     //
  310.     // enrTriggers.change(function () {
  311.     //     currentEnrValue = $(this).val();
  312.     //     if (currentEnrValue == 1) {
  313.     //         enrCombInput.closest('.field-container').addClass('no-visibility');
  314.     //     } else {
  315.     //         enrCombInput.closest('.field-container').removeClass('no-visibility');
  316.     //     }
  317.     // }).change();
  318.     //
  319.     // // ajout du placeholder sur tous les inputs avec unités
  320.     // $('form input[type=text][data-unit]').each(function () {
  321.     //     var unitSpan = $('<span class="text m2">').text($(this).data('unit'));
  322.     //     $(this).after(unitSpan);
  323.     // });
  324.  
  325. });
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top