templates/datatable/Main/datatableJs.html.twig line 1

Open in your IDE?
  1. {% block main %}
  2. {#% for elementName, element in js %}<div>{{ elementName }}:{{ element|printDatatableOption(elementName) }}</div>{% endfor %#}
  3. <script type="text/javascript">
  4. {% set id_table = id|replace({'-': '_'}) %}
  5. $(document).ready(function() {
  6.     {#
  7.     //alert("{{id}}");
  8.     //&#039;
  9.     //|replace({'&quot;': '"'})
  10.     //|replace({'%this%': 'a', '%that%': 'b'})
  11.    //var table = $('#{{ id }}').DataTable({ {% for elementName, element in js %}{{ elementName }}:{{ element|printDatatableOption(elementName) }}{% if loop.last != true %},{%endif%}{% endfor %} });
  12.    #}
  13.    var table_{{id_table}} = $('#{{ id }}').DataTable({ {% for elementName, element in js %}{{ elementName }}:{{ element|printDatatableOption(elementName) }}{% if loop.last != true %},{%endif%}{% endfor %} });
  14. //alert(table_{{id_table}}.table().container());
  15. var bloc = table_{{id_table}}.buttons().container().parent().parent().children('.dataTables_info');
  16. bloc.after(table_{{id_table}}.buttons().container());
  17. var searchWait = 0;
  18. var searchWaitInterval;
  19. $('.dataTables_filter input')
  20. .unbind('keypress keyup')
  21. .bind('keypress keyup', function(e){
  22.     var item = $(this);
  23.     searchWait = 0;
  24.     if(!searchWaitInterval) searchWaitInterval = setInterval(function(){
  25.         if(searchWait>=3){
  26.             clearInterval(searchWaitInterval);
  27.             searchWaitInterval = '';
  28.             searchTerm = $(item).val();
  29.             if (typeof otable_{{id_table}} !== "undefined") {
  30.                 otable_{{id_table}}.fnFilter(searchTerm);
  31.             }
  32.             searchWait = 0;
  33.         }
  34.         searchWait++;
  35.     },200);
  36. });
  37.    //table_{{id_table}}.buttons().container().append( $('.dataTables_info', table_{{id_table}}.table().container() ) );
  38.    //table_{{id_table}}.buttons().container().append( $('.dataTables_info', table_{{id_table}}.table().container() ) );
  39.     function format ( rendu ) {
  40.         return rendu;
  41.     }
  42.     $('body').on('click', '#{{ id }} tbody tr td a',function(event){
  43.         event.stopImmediatePropagation();
  44.     });
  45.     $('body').on('click', '#{{ id }} tbody tr td input, #{{ id }} tbody tr td select, #{{ id }} tbody tr td .select2-container',function(event){
  46.         event.stopImmediatePropagation();
  47.     });
  48.     $('body').on('click', '#dta-desassemblage-ofm-additive tbody tr',function(event){
  49.         $(this).find('input[name="dataTables[actions][]"]').prop("checked",true).trigger("change");
  50.     });
  51.     $('body').on('click', '#dta-of-assembler-disque tbody tr',function(event){
  52.         if($(this).find('input[name="dataTables[actions][]"]').is(':checked') == false) {
  53.             $(this).find('input[name="dataTables[actions][]"]').prop("checked",true).trigger("change");
  54.         }
  55.         else {
  56.             $(this).find('input[name="dataTables[actions][]"]').prop("checked",false).trigger("change");
  57.         }
  58.     });
  59.     $('body').on('click', '#{{ id }} tbody tr',function(event){
  60.         var dep = $(this).find( ".deplier-tr-commande" );
  61.         if(dep) {
  62.             //alert("C");
  63.             //dep.click();
  64.         }
  65.         var depF = $(this).find( ".deplier-tr-commande-fournisseur" );
  66.         if(depF) {
  67.             //alert("F");
  68.             depF.click();
  69.         }
  70.         var depL = $(this).find( ".deplier-tr-litige" );
  71.         if(depL) {
  72.             //alert("F");
  73.             depL.click();
  74.         }
  75.         var depR = $(this).find( ".deplier-tr-retour-fournisseur" );
  76.         if(depR) {
  77.             //alert("F");
  78.             depR.click();
  79.         }
  80.         var depH = $(this).find( ".deplier-tr-historique-bext" );
  81.         if(depH) {
  82.             //alert("F");
  83.             depH.click();
  84.         }
  85.         return false;
  86.     });
  87.     $('body').on('click', '.deplier-tr-caisse-simplifie',function(event){
  88.         var idDataTable = $(this).parent('td').parent('tr').parent('tbody').parent('table').attr('id');
  89.         idDataTable = idDataTable.replace(/-/g, '_');
  90.         if(idDataTable == "{{id_table}}") {
  91.             var icone = $(this);
  92.             var tr = $(this).parent('td').closest('tr');
  93.             var id = $(this).attr("id");
  94.             var row = table_{{id_table}}.row( tr );
  95.             if ( row.child.isShown() ) {
  96.                 row.child.hide();
  97.                 icone.children("span").removeClass("fa-minus");
  98.                 icone.children("span").addClass("fa-plus");
  99.             }
  100.             else {
  101.                 icone.children("span").removeClass("fa-plus");
  102.                 icone.children("span").addClass("fa-minus");
  103.                 $.ajax({
  104.                     type: 'GET',
  105.                     //async: true,
  106.                     url: Routing.generate('dtc_caisse_detail_ajax', { id: id }),
  107.                     //data: $form.serialize(),
  108.                     dataType: "json",
  109.                     success: function(data, status) {
  110.                         row.child( format( data.rendu ) ).show();
  111.                         return false;
  112.                     }
  113.                 });
  114.             }
  115.             return false;
  116.         }
  117.     });
  118.     $('body').on('click', '.deplier-tr-ofm-simplifie',function(event){
  119.         var idDataTable = $(this).parent('td').parent('tr').parent('tbody').parent('table').attr('id');
  120.         idDataTable = idDataTable.replace(/-/g, '_');
  121.         if(idDataTable == "{{id_table}}") {
  122.             var icone = $(this);
  123.             var tr = $(this).parent('td').closest('tr');
  124.             var id = $(this).attr("id");
  125.             var row = table_{{id_table}}.row( tr );
  126.             if ( row.child.isShown() ) {
  127.                 row.child.hide();
  128.                 icone.children("span").removeClass("fa-minus");
  129.                 icone.children("span").addClass("fa-plus");
  130.             }
  131.             else {
  132.                 icone.children("span").removeClass("fa-plus");
  133.                 icone.children("span").addClass("fa-minus");
  134.                 $.ajax({
  135.                     type: 'GET',
  136.                     //async: true,
  137.                     url: Routing.generate('dtc_ofm_detail_ajax', { id: id }),
  138.                     //data: $form.serialize(),
  139.                     dataType: "json",
  140.                     success: function(data, status) {
  141.                         row.child( format( data.rendu ) ).show();
  142.                         return false;
  143.                     }
  144.                 });
  145.             }
  146.             return false;
  147.         }
  148.     });
  149.     $('body').on('click', '.deplier-tr-commande-fournisseur-simplifie',function(event){
  150.             var idDataTable = $(this).parent('td').parent('tr').parent('tbody').parent('table').attr('id');
  151.         idDataTable = idDataTable.replace(/-/g, '_');
  152.             if(idDataTable == "{{id_table}}") {
  153.     var icone = $(this);
  154.     var tr = $(this).parent('td').closest('tr');
  155.     var id = $(this).attr("id");
  156.     var row = table_{{id_table}}.row( tr );
  157.     if ( row.child.isShown() ) {
  158.         row.child.hide();
  159.         icone.children("span").removeClass("fa-minus");
  160.         icone.children("span").addClass("fa-plus");
  161.     }
  162.     else {
  163.         icone.children("span").removeClass("fa-plus");
  164.         icone.children("span").addClass("fa-minus");
  165.         $.ajax({
  166.                         type: 'GET',
  167.                         //async: true,
  168.                         url: Routing.generate('dtc_commande_fournisseur_detail_ajax', { id: id }),
  169.                         //data: $form.serialize(),
  170.                         dataType: "json",
  171.                         success: function(data, status) {
  172.                 row.child( format( data.rendu ) ).show();
  173.                 return false;
  174.                         }
  175.                 });
  176.     }
  177.     return false;
  178.                     }
  179. });
  180.     $('body').on('click', '.deplier-tr-historique-bext',function(event){
  181.         var icone = $(this);
  182.         var tr = $(this).parent('td').closest('tr');
  183.         var id = $(this).attr("id");
  184.         var idDataTable = $(this).parent('td').parent('tr').parent('tbody').parent('table').attr('id');
  185.         idDataTable = idDataTable.replace(/-/g, '_');
  186.         if(idDataTable == "{{id_table}}")
  187.         {
  188.             var row = table_{{id_table}}.row( tr );
  189.             if ( row.child.isShown() ) {
  190.                 row.child.hide();
  191.                 icone.removeClass("fa-minus-circle");
  192.                 icone.addClass("fa-plus-circle");
  193.             }
  194.             else {
  195.                 icone.removeClass("fa-plus-circle");
  196.                 icone.addClass("fa-minus-circle");
  197.                 $.ajax({
  198.                     type: 'GET',
  199.                     url: Routing.generate('dtc_historique_bext_detail_ajax', { id: id }),
  200.                     dataType: "json",
  201.                     success: function(data, status) {
  202.                         row.child( format( data.rendu ) ).show();
  203.                         return false;
  204.                     }
  205.                 });
  206.             }
  207.         }
  208.         return false;
  209.     });
  210.     $('body').on('click', '.deplier-tr-commande-fournisseur',function(event){
  211.                 var idDataTable = $(this).parent('td').parent('tr').parent('tbody').parent('table').attr('id');
  212.         idDataTable = idDataTable.replace(/-/g, '_');
  213.                 console.log('deplier-tr-commande-fournisseur -> id_table : '+idDataTable+ ' / ' +"{{id_table}}");
  214.             if(idDataTable == "{{id_table}}") {
  215.         var icone = $(this);
  216.         var tr = $(this).parent('td').closest('tr');
  217.         var id = $(this).attr("id");
  218.         var row = table_{{id_table}}.row( tr );
  219.         if ( row.child.isShown() ) {
  220.             row.child.hide();
  221.             icone.removeClass("fa-minus-circle");
  222.             icone.addClass("fa-plus-circle");
  223.         }
  224.         else {
  225.             icone.removeClass("fa-plus-circle");
  226.             icone.addClass("fa-minus-circle");
  227.             $.ajax({
  228.                 type: 'GET',
  229.                 //async: true,
  230.                 url: Routing.generate('dtc_commande_fournisseur_detail_ajax', { id: id }),
  231.                 //data: $form.serialize(),
  232.                 dataType: "json",
  233.                 success: function(data, status) {
  234.                     row.child( format( data.rendu ) ).show();
  235.                     return false;
  236.                 }
  237.             });
  238.         }
  239.         return false;
  240.             }
  241.     });
  242.     $('body').on('click', '.deplier-tr-commande',function(event){
  243.         var icone = $(this);
  244.         var mode_deplier = $(this).attr("data-mode");
  245.         var tr = $(this).parent('td').closest('tr');
  246.         var id = $(this).attr("id");
  247.         var idDataTable = $(this).parent('td').parent('tr').parent('tbody').parent('table').attr('id');
  248.         idDataTable = idDataTable.replace(/-/g, '_');
  249.         //console.log('deplier-tr-commande -> id_table : '+"{{id_table}}");
  250.         //console.log('deplier-tr-commande -> id_table : '+idDataTable);
  251.         //alert("sssss "+idDataTable);
  252.         if(idDataTable == "{{id_table}}")
  253.         {
  254.             var row = table_{{id_table}}.row( tr );
  255.             // Replier toutes les lignes déjà ouvertes
  256.             table_{{id_table}}.rows().every(function () {
  257.                 if (this.child.isShown() && !$(this.node()).is(tr)) {
  258.                     this.child.hide();
  259.                     $(this.node()).find('.deplier-tr-commande').removeClass("fa-minus-circle").addClass("fa-plus-circle");
  260.                 }
  261.             });
  262.             //var row = table_+idDataTable.row( tr );
  263.             //alert("OK {{id_table}}");
  264.             if ( row.child.isShown() ) {
  265.                 row.child.hide();
  266.                 icone.removeClass("fa-minus-circle");
  267.                 icone.addClass("fa-plus-circle");
  268.             }
  269.             else {
  270.                 icone.removeClass("fa-plus-circle");
  271.                 icone.addClass("fa-minus-circle");
  272.                 $.ajax({
  273.                     type: 'GET',
  274.                     //async: true,
  275.                     url: Routing.generate('dtc_commande_detail_ajax', { id: id,mode:mode_deplier }),
  276.                     //data: $form.serialize(),
  277.                     dataType: "json",
  278.                     success: function(data, status) {
  279.                         row.child( format( data.rendu ) ).show();
  280.                         $(row.child()).find('td:first').css('padding', '0px');
  281.                         return false;
  282.                     }
  283.                 });
  284.             }
  285.         }
  286.         return false;
  287.     });
  288.     $('body').on('click', '.deplier-tr-litige',function(event){
  289.         var icone = $(this);
  290.         var tr = $(this).parent('td').closest('tr');
  291.         var id = $(this).attr("id");
  292.         var idDataTable = $(this).parent('td').parent('tr').parent('tbody').parent('table').attr('id');
  293.         idDataTable = idDataTable.replace(/-/g, '_');
  294.         if(idDataTable == "{{id_table}}")
  295.         {
  296.             var row = table_{{id_table}}.row( tr );
  297.             if ( row.child.isShown() ) {
  298.                 row.child.hide();
  299.                 icone.removeClass("fa-minus-circle");
  300.                 icone.addClass("fa-plus-circle");
  301.             }
  302.             else {
  303.                 icone.removeClass("fa-plus-circle");
  304.                 icone.addClass("fa-minus-circle");
  305.                 $.ajax({
  306.                     type: 'GET',
  307.                     url: Routing.generate('dtc_litige_detail_ajax', { id: id }),
  308.                     dataType: "json",
  309.                     success: function(data, status) {
  310.                         row.child( format( data.rendu ) ).show();
  311.                         return false;
  312.                     }
  313.                 });
  314.             }
  315.         }
  316.         return false;
  317.     });
  318.         $('body').on('click', '.deplier-tr-retour-fournisseur',function(event){
  319.         var icone = $(this);
  320.         var tr = $(this).parent('td').closest('tr');
  321.         var id = $(this).attr("id");
  322.         var idDataTable = $(this).parent('td').parent('tr').parent('tbody').parent('table').attr('id');
  323.         idDataTable = idDataTable.replace(/-/g, '_');
  324.         if(idDataTable == "{{id_table}}")
  325.         {
  326.             var row = table_{{id_table}}.row( tr );
  327.             if ( row.child.isShown() ) {
  328.                 row.child.hide();
  329.                 icone.removeClass("fa-minus-circle");
  330.                 icone.addClass("fa-plus-circle");
  331.             }
  332.             else {
  333.                 icone.removeClass("fa-plus-circle");
  334.                 icone.addClass("fa-minus-circle");
  335.                 $.ajax({
  336.                     type: 'GET',
  337.                     url: Routing.generate('dtc_retour_fournisseur_detail_ajax', { id: id }),
  338.                     dataType: "json",
  339.                     success: function(data, status) {
  340.                         row.child( format( data.rendu ) ).show();
  341.                         return false;
  342.                     }
  343.                 });
  344.             }
  345.         }
  346.         return false;
  347.     });
  348. });
  349. $('body').on('change', '.filtrerCategoriesTaches',function(event){
  350.     var nom = $(this).attr('data-nom');
  351.     //var nom = $(this).data('nom');
  352.     //alert("NOM "+nom+" "+$(this).attr("class"));
  353.     var valeur = $(this).val();
  354.     $("#"+nom).find('.search_init[index=7]').focus();
  355.     $("#"+nom).find('.search_init[index=7]').val(valeur);
  356.     //$('#{{ id }}').DataTable().columns(9).search(valeur).draw();
  357.     $('#'+nom).DataTable().columns(7).search(valeur).draw();
  358. });
  359. function inclureCategoriesTaches(id)
  360. {
  361.     if ($('#conteneurFiltreCategoriesTaches').length) {
  362.         //alert("HELLO ok");
  363.         $('#filtrerCategoriesTaches').attr('data-nom', id);
  364.         var liste = $("#conteneurFiltreCategoriesTaches").html();
  365.         var valeur = $("#filtrerCategoriesTaches option:selected" ).val();
  366.         //$('.search_init[index=9]').focus();
  367.         //alert("{{id}}");
  368.         setTimeout(function(){
  369.             $("#"+id).find('.search_init[index=7]').parent().prepend(liste);
  370.             $("#"+id).find('.search_init[index=7]').attr("type","hidden");
  371.         }, 500);
  372.         setTimeout(function(){
  373.             $(".selectDatatable" ).removeAttr("disabled");
  374.             $('.selectDatatable').prop("disabled", false);
  375.         }, 500);
  376.     }
  377.     return false;
  378. }
  379. function inclureChoixTypeMarque(id)
  380. {
  381.     if ($('#conteneurFiltreTypeMarque').length) {
  382.         $('#filtrerTypeMarque').attr('data-nom', id);
  383.         var liste = $("#conteneurFiltreTypeMarque").html();
  384.         var valeur = $("#filtrerTypeMarque option:selected" ).val();
  385.         $('.search_init[index=3]').focus();
  386.         //alert("{{id}}");
  387.         setTimeout(function(){
  388.             $("#"+id).find('.search_init[index=2]').parent().prepend(liste);
  389.             $("#"+id).find('.search_init[index=2]').attr("type","hidden");
  390.         }, 500);
  391.         setTimeout(function(){
  392.             $(".selectDatatable" ).removeAttr("disabled");
  393.             $('.selectDatatable').prop("disabled", false);
  394.         }, 500);
  395.     }
  396.     return false;
  397. }
  398. $('body').on('change', '.filtrerTypeMarque',function(event){
  399.     var nom = $(this).attr('data-nom');
  400.     //var nom = $(this).data('nom');
  401.     //alert("NOM "+nom+" "+$(this).attr("class"));
  402.     var valeur = $(this).val();
  403.     $("#"+nom).find('.search_init[index=2]').focus();
  404.     $("#"+nom).find('.search_init[index=2]').val(valeur);
  405.     //$('#{{ id }}').DataTable().columns(2).search(valeur).draw();
  406.     $('#'+nom).DataTable().columns(2).search(valeur).draw();
  407. });
  408. function inclureChoixTypeDocument(id)
  409. {
  410.     if ($('#conteneurFiltreTypeDocument').length) {
  411.         $('#filtrerTypeDocument').attr('data-nom', id);
  412.         var liste = $("#conteneurFiltreTypeDocument").html();
  413.         var valeur = $("#filtrerTypeDocument option:selected" ).val();
  414.         $('.search_init[index=2]').focus();
  415.         //alert("{{id}}");
  416.         setTimeout(function(){
  417.             $("#"+id).find('.search_init[index=2]').parent().prepend(liste);
  418.             $("#"+id).find('.search_init[index=2]').attr("type","hidden");
  419.         }, 500);
  420.         setTimeout(function(){
  421.             $(".selectDatatable" ).removeAttr("disabled");
  422.             $('.selectDatatable').prop("disabled", false);
  423.         }, 500);
  424.     }
  425.     return false;
  426. }
  427. $('body').on('change', '.filtrerTypeDocument',function(event){
  428.     var nom = $(this).attr('data-nom');
  429.     //var nom = $(this).data('nom');
  430.     //alert("NOM "+nom+" "+$(this).attr("class"));
  431.     var valeur = $(this).val();
  432.     $("#"+nom).find('.search_init[index=2]').focus();
  433.     $("#"+nom).find('.search_init[index=2]').val(valeur);
  434.     //$('#{{ id }}').DataTable().columns(2).search(valeur).draw();
  435.     $('#'+nom).DataTable().columns(2).search(valeur).draw();
  436. });
  437. function inclureChoixTypeDocumentCmdesArticles(id)
  438. {
  439.     if ($('#conteneurFiltreTypeDocumentCmdesArticles').length) {
  440.         //alert("HELLO ok");
  441.         $('#filtrerTypeDocumentCmdesArticles').attr('data-nom', id);
  442.         var liste = $("#conteneurFiltreTypeDocumentCmdesArticles").html();
  443.         var valeur = $("#filtrerTypeDocumentCmdesArticles option:selected" ).val();
  444.         $('.search_init[index=9]').focus();
  445.         //alert("{{id}}");
  446.         setTimeout(function(){
  447.             $("#"+id).find('.search_init[index=9]').parent().prepend(liste);
  448.             $("#"+id).find('.search_init[index=9]').attr("type","hidden");
  449.         }, 500);
  450.         setTimeout(function(){
  451.             $(".selectDatatable" ).removeAttr("disabled");
  452.             $('.selectDatatable').prop("disabled", false);
  453.             //$("#filtrerTypeDocumentCmdesArticles").val("Facture");
  454.             //$("#filtrerTypeDocumentCmdesArticles").trigger("change");
  455.         }, 500);
  456.     }
  457.     return false;
  458. }
  459. var valeurSelect = '';
  460. $('body').on('change', '.filtrerTypeDocumentCmdesArticles',function(event){    
  461.     var nom = $(this).attr('data-nom');
  462.     //var nom = $(this).data('nom');
  463.     //alert("NOM "+nom+" "+$(this).attr("class"));
  464.     var valeur = $(this).val();
  465.     //$("#"+nom).find('.search_init[index=9]').focus();
  466.     //$("#"+nom).find('.search_init[index=9]').val(valeur);
  467.     //$('#{{ id }}').DataTable().columns(9).search(valeur).draw();
  468.     if(valeurSelect == nom+'-'+valeur) return;
  469.     valeurSelect = nom+'-'+valeur;
  470.     $('#'+nom).DataTable().columns(9).search(valeur).draw();
  471. });
  472. {% if multiple %}
  473. {% include "datatable/Snippet/multipleRaw.js.twig" %}
  474. {% endif %}
  475. {% if search == true and searchFields is not empty %}
  476. {% include "datatable/Snippet/individualSearchField.js.twig" %}
  477. {% endif %}
  478. </script>
  479. {% endblock  %}