Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

655 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() {
  119. return $('meta[name=base-url]').attr('content')+'/' ;
  120. }
  121. function chat_systeme_commande() {
  122. if($('.commande-form').size()) {
  123. // scroll initial
  124. if($('.boulangerie.selected').size())
  125. {
  126. boulange_scroll('step-choix-date') ;
  127. }
  128. // affichage des différentes parties du formulaire
  129. if(!$('#commande-id_production').val()) {
  130. $('#depots, #points-vente, #produits, .valider-commande, #info-horaire-retrait-commande, .btn-commentaire, #bar-fixed').hide() ;
  131. }
  132. else if(!$('#commande-id_point_vente').val()) {
  133. $('#produits, .valider-commande, .btn-commentaire, #bar-fixed').hide() ;
  134. }
  135. // points de vente
  136. if($('#commande-id_point_vente').val())
  137. chat_event_click_point_vente($('#commande-id_point_vente').val(), true) ;
  138. $('#modal-code form').submit(function() {
  139. var id_pv = $('#modal-code #id-point-vente').val() ;
  140. var code = $('#modal-code #code').val() ;
  141. $.get(chat_base_url()+'commande/verif-code-point-vente',{
  142. id_point_vente: id_pv,
  143. code: code
  144. }, function(ok) {
  145. if(ok) {
  146. $('.point-vente-'+id_pv).data('code',0) ;
  147. $('.point-vente-'+id_pv+' .glyphicon').remove() ;
  148. $('input[name="code_point_vente_'+id_pv+'"]').val(code) ;
  149. $('#modal-code').modal('hide') ;
  150. chat_event_click_point_vente($('#modal-code #id-point-vente').val()) ;
  151. }
  152. else {
  153. $('#modal-code .field-code').addClass('has-error') ;
  154. $('#modal-code .help-block-error').hide().fadeIn() ;
  155. }
  156. }) ;
  157. return false ;
  158. }) ;
  159. $('#points-vente .point-vente').click(function() {
  160. var id = parseInt($(this).find('.id').html()) ;
  161. chat_event_click_point_vente(id) ;
  162. }) ;
  163. // datepicker
  164. var dates_production = [] ;
  165. $('#dates div').each(function() {
  166. dates_production.push($(this).find('.date').html()) ;
  167. }) ;
  168. //var var_datepicker = $.datepicker ;
  169. $('#datepicker-production').datepicker({
  170. beforeShowDay: function(date){
  171. var string = $.datepicker.formatDate('dd/mm/yy', date);
  172. for(var i=0; i<dates_production.length; i++) {
  173. //alert(dates_production[i]+' '+string) ;
  174. if(dates_production[i] == string)
  175. return [1] ;
  176. }
  177. return [0] ;
  178. // désactivé car internet explorer plante
  179. //return [ dates_production.indexOf(string) != -1 ] ;
  180. },
  181. onSelect: function(selectedDate) {
  182. // on remet tout les prix à zéro
  183. chat_systeme_commande_reset_table_prix() ;
  184. $('#has-commande-en-cours').hide() ;
  185. var tab_date = selectedDate.split('/') ;
  186. var date = new Date(tab_date[2],tab_date[1]-1,tab_date[0]) ;
  187. // set id production
  188. var id_production = 0 ;
  189. $('#dates div .date').each(function() {
  190. if($(this).html() == selectedDate) {
  191. id_production = $(this).parent().find('.id_production').html() ;
  192. }
  193. });
  194. $('#commande-id_production').val(id_production) ;
  195. // verif si le gars a une commande en cours pour cette production
  196. var has_commande_en_cours = false ;
  197. $('#commandes-en-cours .commande').each(function() {
  198. if($(this).data('idproduction') == id_production) {
  199. //alert('bada') ;
  200. $('#has-commande-en-cours a').attr('href',$(this).data('href')) ;
  201. $('#has-commande-en-cours').show() ;
  202. has_commande_en_cours = true ;
  203. $('#depots, #points-vente, #produits, #info-horaire-retrait-commande').hide() ;
  204. }
  205. }) ;
  206. if(!has_commande_en_cours) {
  207. chat_systeme_commande_produits_dispos(tab_date[2]+'-'+tab_date[1]+'-'+tab_date[0], date) ;
  208. $('#produits, .valider-commande, .btn-commentaire, #bar-fixed').hide() ;
  209. // déselection points de vente
  210. $('#points-vente .point-vente').removeClass('selected') ;
  211. $('#commande-id_point_vente').val('') ;
  212. // affichage points de vente
  213. $('#depots, #points-vente, #info-horaire-retrait-commande').fadeIn() ;
  214. // scroll
  215. boulange_scroll('step-choix-depot') ;
  216. }
  217. }
  218. }) ;
  219. if($('#commande-id_production').val()) {
  220. $("#dates .id_production").each(function() {
  221. if($(this).html() == $('#commande-id_production').val()) {
  222. var tab_date = $(this).parent().find('.date').html().split('/') ;
  223. var date = new Date(tab_date[2],tab_date[1]-1,tab_date[0]);
  224. $('#datepicker-production').datepicker('setDate',date) ;
  225. chat_systeme_commande_produits_dispos(tab_date[2]+'-'+tab_date[1]+'-'+tab_date[0], date) ;
  226. chat_init_horaire_point_vente(date) ;
  227. }
  228. }) ;
  229. }
  230. // tableau produits
  231. $('.commande-form .move-quantity').click(function() {
  232. var vrac = ($(this).parent().parent().parent().parent().parent().parent().parent().attr('id') == 'vrac') ;
  233. if(vrac) {
  234. var quantite = parseInt($(this).parent().parent().find('input.quantity').val()) ;
  235. if($(this).hasClass('moins') && quantite != 0)
  236. quantite -= 500 ;
  237. if($(this).hasClass('plus'))
  238. quantite += 500 ;
  239. $(this).parent().parent().find('input.quantity').val(quantite) ;
  240. chat_systeme_commande_maj_table_prix();
  241. }
  242. else {
  243. var quantite_totale = 0 ;
  244. $('.quantity').each(function() {
  245. quantite_totale += parseInt($(this).val()) ;
  246. }) ;
  247. var quantite = parseInt($(this).parent().parent().find('input.quantity').val()) ;
  248. var quantite_restante = parseInt($(this).parent().parent().parent().find('.quantite-restante .nb').html()) ;
  249. var quantite_max = $(this).parent().parent().parent().parent().data('quantite-max') ;
  250. var no_limit = $(this).parent().parent().parent().parent().data('no-limit') ;
  251. if($(this).hasClass('moins') && quantite != 0) {
  252. quantite -- ;
  253. quantite_restante ++ ;
  254. }
  255. if($(this).hasClass('plus') ){
  256. if(quantite_restante > 0 || no_limit) {
  257. quantite ++ ;
  258. quantite_restante -- ;
  259. }
  260. }
  261. $(this).parent().parent().parent().find('.quantite-restante .nb').html(quantite_restante) ;
  262. if(quantite_restante <= 5 && quantite_restante > 0) {
  263. $(this).parent().parent().parent().find('.quantite-restante').fadeIn() ;
  264. }
  265. else {
  266. $(this).parent().parent().parent().find('.quantite-restante').hide() ;
  267. }
  268. if(quantite_restante == 0 && !no_limit) {
  269. $(this).parent().parent().parent().find('.epuise').fadeIn() ;
  270. }
  271. else {
  272. $(this).parent().parent().parent().find('.epuise').hide() ;
  273. }
  274. $(this).parent().parent().find('input.quantity').val(quantite) ;
  275. chat_systeme_commande_maj_table_prix();
  276. }
  277. }) ;
  278. chat_systeme_commande_maj_table_prix() ;
  279. chat_systeme_commande_credit_pain();
  280. }
  281. // commentaire commande
  282. $('.commande-form .btn-commentaire').click(function() {
  283. if($('.field-commande-commentaire').css('display') == 'none') {
  284. $('.field-commande-commentaire').slideDown() ;
  285. }
  286. else {
  287. $('.field-commande-commentaire').slideUp() ;
  288. }
  289. return false ;
  290. }) ;
  291. // bar fixed
  292. if($('#bar-fixed').size()) {
  293. $(window).scroll(function (event) {
  294. var scroll = $(window).scrollTop() + $(window).height();
  295. var pos_bottom_produits = $('#table-produits').offset().top + $('#table-produits').height() + 100 ;
  296. if(scroll > pos_bottom_produits) {
  297. if(!$('#bar-fixed').hasClass('not-fixed')) {
  298. $('#bar-fixed').addClass('not-fixed') ;
  299. }
  300. }
  301. else {
  302. $('#bar-fixed').removeClass('not-fixed') ;
  303. }
  304. });
  305. }
  306. }
  307. function chat_systeme_commande_produits_dispos(str_date, date) {
  308. // produits dispos à la vente à cette date
  309. $.get(chat_base_url()+'commande/infos-production',{
  310. id_production: $('#commande-id_production').val()
  311. }, function(data) {
  312. if(data.produits_dispos) {
  313. $.each(data.produits_dispos, function( id_produit, produit ) {
  314. if(produit.actif) $('.produit-'+id_produit).show() ;
  315. else $('.produit-'+id_produit).hide() ;
  316. var quantite_restante = produit.quantite_max - produit.quantite_commandee ;
  317. var no_limit = 0 ;
  318. if(!produit.quantite_max)
  319. no_limit = 1 ;
  320. $('.produit-'+id_produit).attr('data-no-limit',no_limit) ;
  321. $('.produit-'+id_produit).attr('data-quantite-max',produit.quantite_max) ;
  322. $('.produit-'+id_produit+' .quantite-restante .nb').html(quantite_restante) ;
  323. if(produit.quantite_max && (!quantite_restante || quantite_restante < 0 || produit.epuise)) {
  324. $('.produit-'+id_produit+' .epuise').show() ;
  325. if(!$('#id-commande').val() && $('.produit-'+id_produit+' .quantity').val() == 0)
  326. {
  327. $('.produit-'+id_produit+' .quantite-restante').hide() ;
  328. $('.produit-'+id_produit+' .input-group').hide() ;
  329. }
  330. }
  331. else {
  332. $('.produit-'+id_produit+' .epuise').hide() ;
  333. $('.produit-'+id_produit+' .input-group').show() ;
  334. $('.produit-'+id_produit+' .quantite-restante .nb').html(quantite_restante) ;
  335. }
  336. if($('.produit-'+id_produit+' .quantite-restante').size()) {
  337. if(parseInt($('.produit-'+id_produit+' .quantite-restante .nb').html()) > 5 ||
  338. parseInt($('.produit-'+id_produit+' .quantite-restante .nb').html()) <= 0) {
  339. $('.produit-'+id_produit+' .quantite-restante').hide() ;
  340. }
  341. else {
  342. $('.produit-'+id_produit+' .quantite-restante').show() ;
  343. }
  344. }
  345. });
  346. }
  347. $('#points-vente .point-vente').hide() ;
  348. // init affichage points de vente
  349. $.each(data.points_vente, function(key, livraison) {
  350. console.log(key+' | '+livraison) ;
  351. if(livraison) {
  352. $('.point-vente-'+key).fadeIn() ;
  353. }
  354. else {
  355. $('.point-vente-'+key).hide() ;
  356. }
  357. }) ;
  358. chat_init_horaire_point_vente(date) ;
  359. }, 'json') ;
  360. }
  361. function chat_systeme_commande_reset_table_prix() {
  362. $('#table-produits tr .colonne-quantite .quantity').each(function() {
  363. $(this).val(0) ;
  364. }) ;
  365. chat_systeme_commande_maj_table_prix() ;
  366. }
  367. function chat_systeme_commande_maj_table_prix() {
  368. // produits pain
  369. var prix = 0 ;
  370. $('.commande-form #table-produits tbody tr').each(function() {
  371. var quantite = parseInt($(this).find('.quantity').val()) ;
  372. var prix_produit = parseFloat($(this).find('.prix').html()) ;
  373. var prix_total_produit = quantite * prix_produit ;
  374. if(prix_total_produit)
  375. $(this).find('.total').html(formate_prix(prix_total_produit)+' €') ;
  376. else
  377. $(this).find('.total').html('--') ;
  378. if(quantite > 0)
  379. prix += prix_total_produit ;
  380. }) ;
  381. $('#total-commande strong').html(formate_prix(prix)+' €') ;
  382. var prix_global = prix ;
  383. // produits vrac
  384. var prix = 0 ;
  385. $('.commande-form #table-produits-vrac tbody tr').each(function() {
  386. var quantite = parseInt($(this).find('.quantity').val()) ;
  387. var prix_produit = parseFloat($(this).find('.prix').html()) ;
  388. var prix_total_produit = quantite/1000 * prix_produit ;
  389. if(prix_total_produit)
  390. $(this).find('.total').html(formate_prix(prix_total_produit)+' €') ;
  391. else
  392. $(this).find('.total').html('--') ;
  393. if(quantite > 0)
  394. prix += prix_total_produit ;
  395. }) ;
  396. $('#total-commande-vrac strong').html(formate_prix(prix)+' €') ;
  397. prix_global += prix ;
  398. $('#total-commande-bottom span').html(formate_prix(prix_global)) ;
  399. if(prix_global)
  400. $('#total-commande-bottom').fadeIn() ;
  401. else
  402. $('#total-commande-bottom').hide() ;
  403. // maj credit pain
  404. chat_systeme_commande_credit_pain_event(prix_global) ;
  405. return prix_global ;
  406. }
  407. function chat_systeme_commande_credit_pain() {
  408. $('input[name=credit_pain]').change(function() {
  409. var prix_global = chat_systeme_commande_maj_table_prix() ;
  410. chat_systeme_commande_credit_pain_event(prix_global) ;
  411. }) ;
  412. }
  413. function chat_systeme_commande_credit_pain_event(prix_global) {
  414. var html = '' ;
  415. var use_credit_pain = $('input[name=credit_pain]').prop('checked') ;
  416. var credit_pain = parseFloat($('#montant-credit-pain').val()) ;
  417. var credit_pain_dispo = credit_pain ;
  418. var montant_paye = 0
  419. if($('#montant-paye').size() && $('#montant-paye').val())
  420. montant_paye = parseFloat($('#montant-paye').val()) ;
  421. if($('#id-commande').size() && $('#id-commande').val()) {
  422. credit_pain_dispo = credit_pain + montant_paye ;
  423. }
  424. var credit_pain_active = $('.point-vente.selected').data('credit-pain') ;
  425. if(credit_pain_active || montant_paye) {
  426. $('#checkbox-credit-pain #info-credit-vide').show() ;
  427. $('#checkbox-credit-pain label').show() ;
  428. $('#checkbox-credit-pain #credit-pain-disabled').hide() ;
  429. if(prix_global > credit_pain_dispo) {
  430. var reste_payer = prix_global - credit_pain_dispo ;
  431. if(use_credit_pain) {
  432. if(montant_paye) {
  433. html += '<span class="montant-paye">'+montant_paye+' € déjà payé</span><br />' ;
  434. }
  435. html += '<strong>'+credit_pain+' €</strong> seront débités<br />' ;
  436. html += 'Restera <strong>'+reste_payer+' €</strong> à payer à la boulangerie' ;
  437. $('#checkbox-credit-pain .info').html(html) ;
  438. }
  439. else {
  440. $('#checkbox-credit-pain .info').html('') ;
  441. }
  442. }
  443. else {
  444. $('#checkbox-credit-pain').removeClass('paiement-impossible') ;
  445. $('input[name=credit_pain]').removeAttr('disabled') ;
  446. if(use_credit_pain) {
  447. var html = '' ;
  448. // à payer
  449. if(prix_global > montant_paye)
  450. {
  451. montant = prix_global - montant_paye ;
  452. if(montant_paye) {
  453. html += '<span class="montant-paye">'+montant_paye+' € déjà payé</span><br />' ;
  454. }
  455. html += '<strong>'+montant+' €</strong> seront débités' ;
  456. $('#checkbox-credit-pain .info').html(html) ;
  457. }
  458. // remboursé
  459. else if(prix_global < montant_paye) {
  460. montant = montant_paye - prix_global ;
  461. if(montant_paye) {
  462. html += '<span class="montant-paye">'+montant_paye+' € déjà payé</span><br />' ;
  463. }
  464. html += '<strong>'+montant+' €</strong> seront remboursés' ;
  465. $('#checkbox-credit-pain .info').html(html) ;
  466. }
  467. else {
  468. if(montant_paye > 0)
  469. $('#checkbox-credit-pain .info').html('<span class="montant-paye">'+montant_paye+' € déjà payé</span>') ;
  470. else
  471. $('#checkbox-credit-pain .info').html('') ;
  472. }
  473. }
  474. else {
  475. $('#checkbox-credit-pain .info').html('')
  476. }
  477. }
  478. }
  479. else {
  480. $('#checkbox-credit-pain #info-credit-vide').hide() ;
  481. $('#checkbox-credit-pain label').hide() ;
  482. $('#checkbox-credit-pain #credit-pain-disabled').show() ;
  483. }
  484. }
  485. function formate_prix(prix) {
  486. return prix.toFixed(2).replace( ".", "," ) ;
  487. }
  488. function chat_slideshow() {
  489. if($('body').hasClass('home')) {
  490. var base_url = $('#base_url').val() ;
  491. $.vegas('slideshow', {
  492. backgrounds:[
  493. //{ src:'./img/background/back2.jpg' },
  494. { src:base_url+'/img/background/four.jpg' },
  495. { src:base_url+'/img/background/gueulard.jpg' }
  496. ],
  497. walk: function() {
  498. $('.vegas-loading').css('display','none') ;
  499. $('.vegas-background').css('position','absolute') ;
  500. }
  501. })('overlay');
  502. }
  503. }
  504. function chat_scroll() {
  505. if($('body').hasClass('home')) {
  506. $('#header nav ul a[href^="#"]').click(function(){
  507. var the_id = $(this).attr("href");
  508. $('html, body').animate({
  509. scrollTop: $(the_id).offset().top - 100
  510. }, 'normal');
  511. return false;
  512. });
  513. $(window).scroll(function() {
  514. chat_event_scroll() ;
  515. }) ;
  516. chat_event_scroll() ;
  517. }
  518. }
  519. function chat_event_scroll() {
  520. var scroll_top = $(window).scrollTop() ;
  521. //console.log(scroll_top + ' '+ ($('#horaires').offset().top-100)) ;
  522. $('#header nav ul a').each(function() {
  523. var top = $($(this).attr('href')).offset().top ;
  524. var test = top + $($(this).attr('href')).height() - 150 ;
  525. //console.log($(this).attr('href')+' : '+scroll_top+ ' | '+ test) ;
  526. if(scroll_top <= top + $($(this).attr('href')).height() - 150) {
  527. $('#header a').removeClass('selec') ;
  528. $(this).addClass('selec') ;
  529. }
  530. }) ;
  531. }
  532. function chat_tabs_gamme_saison() {
  533. $('#tab-gamme-saison a').click(function (e) {
  534. e.preventDefault();
  535. $(this).tab('show');
  536. });
  537. }