You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

659 lines
24KB

  1. /* French initialisation for the jQuery UI date picker plugin. */
  2. /* Written by Keith Wood (kbwood{at}iinet.com.au),
  3. Stéphane Nahmani (sholby@sholby.net),
  4. Stéphane Raimbault <stephane.raimbault@gmail.com> */
  5. (function( factory ) {
  6. if ( typeof define === "function" && define.amd ) {
  7. // AMD. Register as an anonymous module.
  8. define([ "../jquery.ui.datepicker" ], factory );
  9. } else {
  10. // Browser globals
  11. factory( jQuery.datepicker );
  12. }
  13. }(function( datepicker ) {
  14. datepicker.regional['fr'] = {
  15. closeText: 'Fermer',
  16. prevText: 'Précédent',
  17. nextText: 'Suivant',
  18. currentText: 'Aujourd\'hui',
  19. monthNames: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin',
  20. 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'],
  21. monthNamesShort: ['janv.', 'févr.', 'mars', 'avril', 'mai', 'juin',
  22. 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'],
  23. dayNames: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'],
  24. dayNamesShort: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],
  25. dayNamesMin: ['D','L','M','M','J','V','S'],
  26. weekHeader: 'Sem.',
  27. dateFormat: 'dd/mm/yy',
  28. firstDay: 1,
  29. isRTL: false,
  30. showMonthAfterYear: false,
  31. yearSuffix: ''};
  32. datepicker.setDefaults(datepicker.regional['fr']);
  33. return datepicker.regional['fr'];
  34. }));
  35. $(document).ready(function() {
  36. //chat_scroll() ;
  37. chat_tabs_gamme_saison() ;
  38. //chat_slideshow() ;
  39. $('[data-toggle="tooltip"]').tooltip() ;
  40. chat_systeme_commande() ;
  41. chat_profil_user() ;
  42. $('.dropdown-toggle').dropdown() ;
  43. }) ;
  44. function chat_profil_user() {
  45. if($('#profil-user').size()) {
  46. if($('#user-no_mail').is(':checked')) {
  47. $('#mails-jours-prod').hide() ;
  48. }
  49. $('#user-no_mail').change(function() {
  50. if($('#user-no_mail').is(':checked')) {
  51. $('#mails-jours-prod').hide() ;
  52. }
  53. else {
  54. $('#mails-jours-prod').fadeIn() ;
  55. }
  56. }) ;
  57. }
  58. }
  59. function chat_event_click_point_vente(id, force) {
  60. if($('.point-vente-'+id).data('code') == 1) {
  61. $('#modal-code #id-point-vente').val(id) ;
  62. $('#modal-code').modal('show') ;
  63. }
  64. else {
  65. $('#commande-id_point_vente').val(id) ;
  66. $('#points-vente .point-vente').removeClass('selected') ;
  67. $('.point-vente-'+id).addClass('selected') ;
  68. $('.point-vente-'+id).hide().fadeIn('fast') ;
  69. var pain = parseInt($('.point-vente-'+id).data('pain')) ;
  70. var vrac = parseInt($('.point-vente-'+id).data('vrac')) ;
  71. if(pain) {
  72. $('#pain .table').show() ;
  73. $('#pain .indisponible').hide() ;
  74. }
  75. else {
  76. $('#pain .table').hide() ;
  77. $('#pain .indisponible').show() ;
  78. }
  79. if(vrac) {
  80. $('#vrac .table').show() ;
  81. $('#vrac .indisponible').hide() ;
  82. }
  83. else {
  84. $('#vrac .table').hide() ;
  85. $('#vrac .indisponible').show() ;
  86. }
  87. $('#produits, .valider-commande, .btn-commentaire, #bar-fixed').fadeIn() ;
  88. // credit pain
  89. chat_systeme_commande_credit_pain_event(chat_systeme_commande_maj_table_prix()) ;
  90. // scroll
  91. if(!force)
  92. boulange_scroll('step-choix-produits') ;
  93. }
  94. }
  95. function chat_init_horaire_point_vente(date) {
  96. $('#points-vente .horaires .jour').hide() ;
  97. var selector_jour = '#points-vente .horaires .jour-'+date.getDay() ;
  98. $(selector_jour).show() ;
  99. // on cache les points de vente si la livraison n'est pas cochée
  100. /*$('#points-vente .point-vente').show() ;
  101. if($('#livraison').val() == 0) {
  102. $('#points-vente .point-vente').hide() ;
  103. $('#points-vente .point-vente').each(function() {
  104. if($(this).find('.nom').html() == 'Le Chat des Noisettes') {
  105. $(this).show() ;
  106. }
  107. }) ;
  108. }*/
  109. // on cache les points de vente qui sont fermés
  110. //$('#points-vente .point-vente').removeClass('disabled') ;
  111. /*$(selector_jour).each(function() {
  112. if($(this).html() == 'Fermé') {
  113. //$(this).parent().parent().parent().addClass('disabled') ;
  114. $(this).parent().parent().parent().hide() ;
  115. }
  116. }) ;*/
  117. }
  118. function chat_base_url(with_slug) {
  119. var base_url = $('meta[name=base-url]').attr('content')+'/' ;
  120. if(with_slug) {
  121. base_url += $('meta[name=slug-producer]').attr('content')+'/' ;
  122. }
  123. return base_url ;
  124. }
  125. function chat_systeme_commande() {
  126. if($('.commande-form').size()) {
  127. // scroll initial
  128. if($('.boulangerie.selected').size())
  129. {
  130. boulange_scroll('step-choix-date') ;
  131. }
  132. // affichage des différentes parties du formulaire
  133. if(!$('#commande-id_production').val()) {
  134. $('#depots, #points-vente, #produits, .valider-commande, #info-horaire-retrait-commande, .btn-commentaire, #bar-fixed').hide() ;
  135. }
  136. else if(!$('#commande-id_point_vente').val()) {
  137. $('#produits, .valider-commande, .btn-commentaire, #bar-fixed').hide() ;
  138. }
  139. // points de vente
  140. if($('#commande-id_point_vente').val())
  141. chat_event_click_point_vente($('#commande-id_point_vente').val(), true) ;
  142. $('#modal-code form').submit(function() {
  143. var id_pv = $('#modal-code #id-point-vente').val() ;
  144. var code = $('#modal-code #code').val() ;
  145. $.get(chat_base_url(true)+'commande/verif-code-point-vente',{
  146. id_point_vente: id_pv,
  147. code: code
  148. }, function(ok) {
  149. if(ok) {
  150. $('.point-vente-'+id_pv).data('code',0) ;
  151. $('.point-vente-'+id_pv+' .glyphicon').remove() ;
  152. $('input[name="code_point_vente_'+id_pv+'"]').val(code) ;
  153. $('#modal-code').modal('hide') ;
  154. chat_event_click_point_vente($('#modal-code #id-point-vente').val()) ;
  155. }
  156. else {
  157. $('#modal-code .field-code').addClass('has-error') ;
  158. $('#modal-code .help-block-error').hide().fadeIn() ;
  159. }
  160. }) ;
  161. return false ;
  162. }) ;
  163. $('#points-vente .point-vente').click(function() {
  164. var id = parseInt($(this).find('.id').html()) ;
  165. chat_event_click_point_vente(id) ;
  166. }) ;
  167. // datepicker
  168. var dates_production = [] ;
  169. $('#dates div').each(function() {
  170. dates_production.push($(this).find('.date').html()) ;
  171. }) ;
  172. //var var_datepicker = $.datepicker ;
  173. $('#datepicker-production').datepicker({
  174. beforeShowDay: function(date){
  175. var string = $.datepicker.formatDate('dd/mm/yy', date);
  176. for(var i=0; i<dates_production.length; i++) {
  177. //alert(dates_production[i]+' '+string) ;
  178. if(dates_production[i] == string)
  179. return [1] ;
  180. }
  181. return [0] ;
  182. // désactivé car internet explorer plante
  183. //return [ dates_production.indexOf(string) != -1 ] ;
  184. },
  185. onSelect: function(selectedDate) {
  186. // on remet tout les prix à zéro
  187. chat_systeme_commande_reset_table_prix() ;
  188. $('#has-commande-en-cours').hide() ;
  189. var tab_date = selectedDate.split('/') ;
  190. var date = new Date(tab_date[2],tab_date[1]-1,tab_date[0]) ;
  191. // set id production
  192. var id_production = 0 ;
  193. $('#dates div .date').each(function() {
  194. if($(this).html() == selectedDate) {
  195. id_production = $(this).parent().find('.id_production').html() ;
  196. }
  197. });
  198. $('#commande-id_production').val(id_production) ;
  199. // verif si le gars a une commande en cours pour cette production
  200. var has_commande_en_cours = false ;
  201. $('#commandes-en-cours .commande').each(function() {
  202. if($(this).data('idproduction') == id_production) {
  203. //alert('bada') ;
  204. $('#has-commande-en-cours a').attr('href',$(this).data('href')) ;
  205. $('#has-commande-en-cours').show() ;
  206. has_commande_en_cours = true ;
  207. $('#depots, #points-vente, #produits, #info-horaire-retrait-commande').hide() ;
  208. }
  209. }) ;
  210. if(!has_commande_en_cours) {
  211. chat_systeme_commande_produits_dispos(tab_date[2]+'-'+tab_date[1]+'-'+tab_date[0], date) ;
  212. $('#produits, .valider-commande, .btn-commentaire, #bar-fixed').hide() ;
  213. // déselection points de vente
  214. $('#points-vente .point-vente').removeClass('selected') ;
  215. $('#commande-id_point_vente').val('') ;
  216. // affichage points de vente
  217. $('#depots, #points-vente, #info-horaire-retrait-commande').fadeIn() ;
  218. // scroll
  219. boulange_scroll('step-choix-depot') ;
  220. }
  221. }
  222. }) ;
  223. if($('#commande-id_production').val()) {
  224. $("#dates .id_production").each(function() {
  225. if($(this).html() == $('#commande-id_production').val()) {
  226. var tab_date = $(this).parent().find('.date').html().split('/') ;
  227. var date = new Date(tab_date[2],tab_date[1]-1,tab_date[0]);
  228. $('#datepicker-production').datepicker('setDate',date) ;
  229. chat_systeme_commande_produits_dispos(tab_date[2]+'-'+tab_date[1]+'-'+tab_date[0], date) ;
  230. chat_init_horaire_point_vente(date) ;
  231. }
  232. }) ;
  233. }
  234. // tableau produits
  235. $('.commande-form .move-quantity').click(function() {
  236. var vrac = ($(this).parent().parent().parent().parent().parent().parent().parent().attr('id') == 'vrac') ;
  237. if(vrac) {
  238. var quantite = parseInt($(this).parent().parent().find('input.quantity').val()) ;
  239. if($(this).hasClass('moins') && quantite != 0)
  240. quantite -= 500 ;
  241. if($(this).hasClass('plus'))
  242. quantite += 500 ;
  243. $(this).parent().parent().find('input.quantity').val(quantite) ;
  244. chat_systeme_commande_maj_table_prix();
  245. }
  246. else {
  247. var quantite_totale = 0 ;
  248. $('.quantity').each(function() {
  249. quantite_totale += parseInt($(this).val()) ;
  250. }) ;
  251. var quantite = parseInt($(this).parent().parent().find('input.quantity').val()) ;
  252. var quantite_restante = parseInt($(this).parent().parent().parent().find('.quantite-restante .nb').html()) ;
  253. var quantite_max = $(this).parent().parent().parent().parent().data('quantite-max') ;
  254. var no_limit = $(this).parent().parent().parent().parent().data('no-limit') ;
  255. if($(this).hasClass('moins') && quantite != 0) {
  256. quantite -- ;
  257. quantite_restante ++ ;
  258. }
  259. if($(this).hasClass('plus') ){
  260. if(quantite_restante > 0 || no_limit) {
  261. quantite ++ ;
  262. quantite_restante -- ;
  263. }
  264. }
  265. $(this).parent().parent().parent().find('.quantite-restante .nb').html(quantite_restante) ;
  266. if(quantite_restante <= 5 && quantite_restante > 0) {
  267. $(this).parent().parent().parent().find('.quantite-restante').fadeIn() ;
  268. }
  269. else {
  270. $(this).parent().parent().parent().find('.quantite-restante').hide() ;
  271. }
  272. if(quantite_restante == 0 && !no_limit) {
  273. $(this).parent().parent().parent().find('.epuise').fadeIn() ;
  274. }
  275. else {
  276. $(this).parent().parent().parent().find('.epuise').hide() ;
  277. }
  278. $(this).parent().parent().find('input.quantity').val(quantite) ;
  279. chat_systeme_commande_maj_table_prix();
  280. }
  281. }) ;
  282. chat_systeme_commande_maj_table_prix() ;
  283. chat_systeme_commande_credit_pain();
  284. }
  285. // commentaire commande
  286. $('.commande-form .btn-commentaire').click(function() {
  287. if($('.field-commande-commentaire').css('display') == 'none') {
  288. $('.field-commande-commentaire').slideDown() ;
  289. }
  290. else {
  291. $('.field-commande-commentaire').slideUp() ;
  292. }
  293. return false ;
  294. }) ;
  295. // bar fixed
  296. if($('#bar-fixed').size()) {
  297. $(window).scroll(function (event) {
  298. var scroll = $(window).scrollTop() + $(window).height();
  299. var pos_bottom_produits = $('#table-produits').offset().top + $('#table-produits').height() + 100 ;
  300. if(scroll > pos_bottom_produits) {
  301. if(!$('#bar-fixed').hasClass('not-fixed')) {
  302. $('#bar-fixed').addClass('not-fixed') ;
  303. }
  304. }
  305. else {
  306. $('#bar-fixed').removeClass('not-fixed') ;
  307. }
  308. });
  309. }
  310. }
  311. function chat_systeme_commande_produits_dispos(str_date, date) {
  312. // produits dispos à la vente à cette date
  313. $.get(chat_base_url(true)+'commande/infos-production',{
  314. id_production: $('#commande-id_production').val()
  315. }, function(data) {
  316. if(data.produits_dispos) {
  317. $.each(data.produits_dispos, function( id_produit, produit ) {
  318. if(produit.actif) $('.produit-'+id_produit).show() ;
  319. else $('.produit-'+id_produit).hide() ;
  320. var quantite_restante = produit.quantite_max - produit.quantite_commandee ;
  321. var no_limit = 0 ;
  322. if(!produit.quantite_max)
  323. no_limit = 1 ;
  324. $('.produit-'+id_produit).attr('data-no-limit',no_limit) ;
  325. $('.produit-'+id_produit).attr('data-quantite-max',produit.quantite_max) ;
  326. $('.produit-'+id_produit+' .quantite-restante .nb').html(quantite_restante) ;
  327. if(produit.quantite_max && (!quantite_restante || quantite_restante < 0 || produit.epuise)) {
  328. $('.produit-'+id_produit+' .epuise').show() ;
  329. if(!$('#id-commande').val() && $('.produit-'+id_produit+' .quantity').val() == 0)
  330. {
  331. $('.produit-'+id_produit+' .quantite-restante').hide() ;
  332. $('.produit-'+id_produit+' .input-group').hide() ;
  333. }
  334. }
  335. else {
  336. $('.produit-'+id_produit+' .epuise').hide() ;
  337. $('.produit-'+id_produit+' .input-group').show() ;
  338. $('.produit-'+id_produit+' .quantite-restante .nb').html(quantite_restante) ;
  339. }
  340. if($('.produit-'+id_produit+' .quantite-restante').size()) {
  341. if(parseInt($('.produit-'+id_produit+' .quantite-restante .nb').html()) > 5 ||
  342. parseInt($('.produit-'+id_produit+' .quantite-restante .nb').html()) <= 0) {
  343. $('.produit-'+id_produit+' .quantite-restante').hide() ;
  344. }
  345. else {
  346. $('.produit-'+id_produit+' .quantite-restante').show() ;
  347. }
  348. }
  349. });
  350. }
  351. $('#points-vente .point-vente').hide() ;
  352. // init affichage points de vente
  353. $.each(data.points_vente, function(key, livraison) {
  354. console.log(key+' | '+livraison) ;
  355. if(livraison) {
  356. $('.point-vente-'+key).fadeIn() ;
  357. }
  358. else {
  359. $('.point-vente-'+key).hide() ;
  360. }
  361. }) ;
  362. chat_init_horaire_point_vente(date) ;
  363. }, 'json') ;
  364. }
  365. function chat_systeme_commande_reset_table_prix() {
  366. $('#table-produits tr .colonne-quantite .quantity').each(function() {
  367. $(this).val(0) ;
  368. }) ;
  369. chat_systeme_commande_maj_table_prix() ;
  370. }
  371. function chat_systeme_commande_maj_table_prix() {
  372. // produits pain
  373. var prix = 0 ;
  374. $('.commande-form #table-produits tbody tr').each(function() {
  375. var quantite = parseInt($(this).find('.quantity').val()) ;
  376. var prix_produit = parseFloat($(this).find('.prix').html()) ;
  377. var prix_total_produit = quantite * prix_produit ;
  378. if(prix_total_produit)
  379. $(this).find('.total').html(formate_prix(prix_total_produit)+' €') ;
  380. else
  381. $(this).find('.total').html('--') ;
  382. if(quantite > 0)
  383. prix += prix_total_produit ;
  384. }) ;
  385. $('#total-commande strong').html(formate_prix(prix)+' €') ;
  386. var prix_global = prix ;
  387. // produits vrac
  388. var prix = 0 ;
  389. $('.commande-form #table-produits-vrac tbody tr').each(function() {
  390. var quantite = parseInt($(this).find('.quantity').val()) ;
  391. var prix_produit = parseFloat($(this).find('.prix').html()) ;
  392. var prix_total_produit = quantite/1000 * prix_produit ;
  393. if(prix_total_produit)
  394. $(this).find('.total').html(formate_prix(prix_total_produit)+' €') ;
  395. else
  396. $(this).find('.total').html('--') ;
  397. if(quantite > 0)
  398. prix += prix_total_produit ;
  399. }) ;
  400. $('#total-commande-vrac strong').html(formate_prix(prix)+' €') ;
  401. prix_global += prix ;
  402. $('#total-commande-bottom span').html(formate_prix(prix_global)) ;
  403. if(prix_global)
  404. $('#total-commande-bottom').fadeIn() ;
  405. else
  406. $('#total-commande-bottom').hide() ;
  407. // maj credit pain
  408. chat_systeme_commande_credit_pain_event(prix_global) ;
  409. return prix_global ;
  410. }
  411. function chat_systeme_commande_credit_pain() {
  412. $('input[name=credit_pain]').change(function() {
  413. var prix_global = chat_systeme_commande_maj_table_prix() ;
  414. chat_systeme_commande_credit_pain_event(prix_global) ;
  415. }) ;
  416. }
  417. function chat_systeme_commande_credit_pain_event(prix_global) {
  418. var html = '' ;
  419. var use_credit_pain = $('input[name=credit_pain]').prop('checked') ;
  420. var credit_pain = parseFloat($('#montant-credit-pain').val()) ;
  421. var credit_pain_dispo = credit_pain ;
  422. var montant_paye = 0
  423. if($('#montant-paye').size() && $('#montant-paye').val())
  424. montant_paye = parseFloat($('#montant-paye').val()) ;
  425. if($('#id-commande').size() && $('#id-commande').val()) {
  426. credit_pain_dispo = credit_pain + montant_paye ;
  427. }
  428. var credit_pain_active = $('.point-vente.selected').data('credit-pain') ;
  429. if(credit_pain_active || montant_paye) {
  430. $('#checkbox-credit-pain #info-credit-vide').show() ;
  431. $('#checkbox-credit-pain label').show() ;
  432. $('#checkbox-credit-pain #credit-pain-disabled').hide() ;
  433. if(prix_global > credit_pain_dispo) {
  434. var reste_payer = prix_global - credit_pain_dispo ;
  435. if(use_credit_pain) {
  436. if(montant_paye) {
  437. html += '<span class="montant-paye">'+montant_paye+' € déjà payé</span><br />' ;
  438. }
  439. html += '<strong>'+credit_pain+' €</strong> seront débités<br />' ;
  440. html += 'Restera <strong>'+reste_payer+' €</strong> à payer à la boulangerie' ;
  441. $('#checkbox-credit-pain .info').html(html) ;
  442. }
  443. else {
  444. $('#checkbox-credit-pain .info').html('') ;
  445. }
  446. }
  447. else {
  448. $('#checkbox-credit-pain').removeClass('paiement-impossible') ;
  449. $('input[name=credit_pain]').removeAttr('disabled') ;
  450. if(use_credit_pain) {
  451. var html = '' ;
  452. // à payer
  453. if(prix_global > montant_paye)
  454. {
  455. montant = prix_global - montant_paye ;
  456. if(montant_paye) {
  457. html += '<span class="montant-paye">'+montant_paye+' € déjà payé</span><br />' ;
  458. }
  459. html += '<strong>'+montant+' €</strong> seront débités' ;
  460. $('#checkbox-credit-pain .info').html(html) ;
  461. }
  462. // remboursé
  463. else if(prix_global < montant_paye) {
  464. montant = montant_paye - prix_global ;
  465. if(montant_paye) {
  466. html += '<span class="montant-paye">'+montant_paye+' € déjà payé</span><br />' ;
  467. }
  468. html += '<strong>'+montant+' €</strong> seront remboursés' ;
  469. $('#checkbox-credit-pain .info').html(html) ;
  470. }
  471. else {
  472. if(montant_paye > 0)
  473. $('#checkbox-credit-pain .info').html('<span class="montant-paye">'+montant_paye+' € déjà payé</span>') ;
  474. else
  475. $('#checkbox-credit-pain .info').html('') ;
  476. }
  477. }
  478. else {
  479. $('#checkbox-credit-pain .info').html('')
  480. }
  481. }
  482. }
  483. else {
  484. $('#checkbox-credit-pain #info-credit-vide').hide() ;
  485. $('#checkbox-credit-pain label').hide() ;
  486. $('#checkbox-credit-pain #credit-pain-disabled').show() ;
  487. }
  488. }
  489. function formate_prix(prix) {
  490. return prix.toFixed(2).replace( ".", "," ) ;
  491. }
  492. function chat_slideshow() {
  493. if($('body').hasClass('home')) {
  494. var base_url = $('#base_url').val() ;
  495. $.vegas('slideshow', {
  496. backgrounds:[
  497. //{ src:'./img/background/back2.jpg' },
  498. { src:base_url+'/img/background/four.jpg' },
  499. { src:base_url+'/img/background/gueulard.jpg' }
  500. ],
  501. walk: function() {
  502. $('.vegas-loading').css('display','none') ;
  503. $('.vegas-background').css('position','absolute') ;
  504. }
  505. })('overlay');
  506. }
  507. }
  508. function chat_scroll() {
  509. if($('body').hasClass('home')) {
  510. $('#header nav ul a[href^="#"]').click(function(){
  511. var the_id = $(this).attr("href");
  512. $('html, body').animate({
  513. scrollTop: $(the_id).offset().top - 100
  514. }, 'normal');
  515. return false;
  516. });
  517. $(window).scroll(function() {
  518. chat_event_scroll() ;
  519. }) ;
  520. chat_event_scroll() ;
  521. }
  522. }
  523. function chat_event_scroll() {
  524. var scroll_top = $(window).scrollTop() ;
  525. //console.log(scroll_top + ' '+ ($('#horaires').offset().top-100)) ;
  526. $('#header nav ul a').each(function() {
  527. var top = $($(this).attr('href')).offset().top ;
  528. var test = top + $($(this).attr('href')).height() - 150 ;
  529. //console.log($(this).attr('href')+' : '+scroll_top+ ' | '+ test) ;
  530. if(scroll_top <= top + $($(this).attr('href')).height() - 150) {
  531. $('#header a').removeClass('selec') ;
  532. $(this).addClass('selec') ;
  533. }
  534. }) ;
  535. }
  536. function chat_tabs_gamme_saison() {
  537. $('#tab-gamme-saison a').click(function (e) {
  538. e.preventDefault();
  539. $(this).tab('show');
  540. });
  541. }