Advertisement
Guest User

Untitled

a guest
Jan 20th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.01 KB | None | 0 0
  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. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement