lorduakiti

datatable

Jan 8th, 2019
406
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. MyFunctions.prototype.byDataTable = {
  2.         headerTable: function() {
  3.             //console.log('_headerTable');
  4.            
  5.             this.header = elementHeader;
  6.             return this.header;
  7.         },
  8.         initTable: function() {
  9.             //console.log('_initTable');
  10.            
  11.             if (window[_global.objVars.utils].appComponents.validVarObj(dataTable, "mydata")){
  12.                 dataTable.myTable.destroy();
  13.                 dataTable = new Object({
  14.                     myTable:        null,
  15.                     tableData:      null,
  16.                     mydata:         new Array(),
  17.                     dataActionRow:  new Array(),
  18.                     myparant:       new Array(),
  19.                     mypages:        new Array(),
  20.                     mypage:         0
  21.                 });
  22.             }
  23.             dataTable.mydata = eventos.mydata;
  24.             window[_global.objVars.functions].byDataTable.pagination();
  25.             window[_global.objVars.functions].byDataTable.loadTable();
  26.             $('i#pages').html((dataTable.mypage + 1) +" / "+ (countPages));
  27.             $('i#register').html(countRegister);
  28.         },
  29.         loadTable: function() {
  30.             //console.log('_loadTable');
  31.            
  32.             var pageData =  dataTable.mypages[dataTable.mypage];
  33.             dataTable.myTable = FLUIGC.datatable(elementTable, {
  34.                 dataRequest:    pageData.data,
  35.                 renderContent:  elementTemplate,
  36.                 header:         window[_global.objVars.functions].byDataTable.headerTable(),
  37.                 multiSelect:    true,
  38.                 classSelected:  'info',
  39.                 search: {
  40.                     enabled:    true, //fasle,
  41.                     onSearch:   function(response) {
  42.                         console.log('--onSearch:', response);                      
  43.                        
  44.                         dataTable.myTable.reload(dataTable.tableData);
  45.                        
  46.                         if (response) {
  47.                             var data = dataTable.mydata;
  48.                             var search = data.filter(function(el){
  49.                                 var filter = $( elementSearch ).val();
  50.                                 if( filter != '' ){
  51.                                     return el[ filter ].toUpperCase().indexOf(response.toUpperCase()) >= 0;
  52.                                     return true;
  53.                                 } else {
  54.                                     for (var key in el) {
  55.                                         var busca = (key.search(/id|order/g) > -1) ? el[key]: null;
  56.                                         if (busca != null){
  57.                                             if ((busca.toString()).toUpperCase().indexOf(response.toUpperCase()) >= 0){
  58.                                                 return true;
  59.                                             }
  60.                                         }
  61.                                     }
  62.                                 }
  63.                                 return false;
  64.                             });
  65.                             dataTable.myTable.reload(search);
  66.                         }
  67.                     },
  68.                     onlyEnterkey:       false,
  69.                     searchAreaStyle:    'col-lg-3 col-md-3 col-sm-12 col-xs-12'
  70.                 },
  71.                 scroll: {
  72.                     target:     ".target",
  73.                     enabled:    false,
  74.                     onScroll:   function() {
  75.                         console.log('--scroll:')
  76.                     }
  77.                 },
  78.                 actions: {
  79.                     enabled:    true,
  80.                     template:   elementButtons,
  81.                     actionAreaStyle: 'col-lg-9 col-md-9 col-sm-12 col-xs-12'
  82.                 },
  83.                 navButtons: {
  84.                     enabled:        true,
  85.                     forwardstyle:   'btn-sm btn-info',
  86.                     backwardstyle:  'btn-sm btn-info',
  87.                 },             
  88.                 draggable: {
  89.                     enabled: false,
  90.                     onDrag: function(dragInfo) {
  91.                         console.log('--dragInfo:', dragInfo.data);
  92.        
  93.                         dataTable.myTable.reload(dataTable.tableData);
  94.                         return false;
  95.                     }
  96.                 },
  97.                 tableStyle:     'table-condensed table-hover',
  98.                 emptyMessage:   '<div class="text-center">Não foi possível encontrar informações.</div>'
  99.             }, function(err, data) {
  100.                 if (err) {
  101.                     window[_global.objVars.utils].byMessage.alertSuccess('Erro', err);
  102.                 }
  103.             });
  104.             dataTable.myTable.on('fluig.datatable.loadcomplete', function() {
  105.                 if (!dataTable.tableData) {
  106.                     dataTable.tableData = dataTable.myTable.getData();
  107.                 }
  108.             });
  109.             window[_global.objVars.functions].byDataTable.btnPagination();
  110.             window[_global.objVars.functions].byDataTable.customButton();
  111.             return true;
  112.         },
  113.         addRow: function(el, ev) {
  114.             //console.log('_addRow', el, ev);
  115.            
  116.             var row = {
  117.                 order:          '',
  118.                 idtrabalho:     el.idtrabalho,
  119.                 codtrabalho:    el.codtrabalho,
  120.                 escola:         el.escola,
  121.                 cidade:         el.cidade,
  122.                 professor:      el.professor,
  123.                 aluno:          el.aluno
  124.             };
  125.             dataTable.myTable.addRow(0, row);
  126.         },
  127.         editRow: function(el, ev) {
  128.             //console.log('_editRow', el, ev);
  129.            
  130.             if (window[_global.objVars.utils].appComponents.validVarObj(dataTable.myTable.selectedRows(), "")){
  131.                 var row = dataTable.myTable.getRow(dataTable.myTable.selectedRows()[0]);
  132.                 dataTable.myTable.updateRow(dataTable.myTable.selectedRows()[0], row, elementTemplateEdit);
  133.                 $.each(row, function(index, value) {
  134.                     if (window[_global.objVars.utils].appComponents.existElement(index)) {
  135.                         window[_global.objVars.utils].appComponents.setElement('datatable-input-'+index, value);
  136.                     }
  137.                 });
  138.                 $('[data-datatable-edit-row]').prop("disabled", true);
  139.             }else{
  140.                 window[_global.objVars.utils].byMessage.alertWarning('Nenhuma Linha Selecionada!', 'Selecione a Linha para prosseguir com a Edição!');
  141.             }
  142.         },
  143.         updateRow: function(el, ev) {
  144.             //console.log('_updateRow', el, ev);
  145.            
  146.             var editedRow = new Object();
  147.             if(ev == 'cancel'){
  148.                 window[_global.objVars.functions].byDataTable.reload();
  149.             } else {
  150.                 if(el !== null  &&  el !== undefined){
  151.                     if(typeof(el) == 'object'){
  152.                         editedRow = el;
  153.                     }
  154.                 }
  155.            
  156.                 this.index = dataTable.myTable.selectedRows()[0];
  157.                 if(Object.keys(editedRow).length == 0){
  158.                     editedRow = dataTable.myTable.getData()[this.index];
  159.                 }
  160.                 dataTable.myTable.updateRow(this.index, editedRow);
  161.                 dataTable.mydata[this.index] = editedRow;
  162.    
  163.                 $('[data-datatable-edit-row]').prop("disabled", false);
  164.            
  165.                 window[_global.objVars.utils].byMessage.alertSuccess('Elemento Editado!', 'Item Editado com Sucesso!');
  166.             }
  167.         },
  168.         delRow: function(el, ev) {
  169.             //console.log('_delRow', el, ev);
  170.            
  171.             if (window[_global.objVars.utils].appComponents.validVarObj(dataTable.myTable.selectedRows()[0], "")){
  172.                 this.elementRemove = dataTable.myTable.selectedRows();
  173.                 if (this.elementRemove.length > 0) {
  174.                     for (var i = 0; i <= this.elementRemove.length; i++) {
  175.                         dataTable.myTable.removeRow(dataTable.myTable.selectedRows()[0]);
  176.                     }
  177.                 }
  178.                 window[_global.objVars.utils].byMessage.alertSuccess('Elemento Removido!',          'Item Removido com Sucesso!');
  179.             }else{
  180.                 window[_global.objVars.utils].byMessage.alertWarning('Nenhuma Linha Selecionada!',  'Selecione a Linha para prosseguir!');
  181.             }
  182.         },
  183.         reload: function(el, ev) {
  184.             //console.log('_reload', el, ev);
  185.            
  186.             dataTable.myTable.reload();
  187.         },
  188.         showColumn: function(el, ev) {
  189.             //console.log('_showColumn', el, ev);
  190.            
  191.             this.index = 1;
  192.             dataTable.myTable.showColumn(this.index);
  193.         },
  194.         hideColumn: function(el, ev) {
  195.             //console.log('_hideColumn', el, ev);
  196.            
  197.             this.index = 1;
  198.             dataTable.myTable.hideColumn(this.index);
  199.         },
  200.         selected: function(el, ev) {
  201.             //console.log('_selected', el, ev);
  202.            
  203.             this.index = dataTable.myTable.selectedRows()[0];
  204.             this.selected = dataTable.myTable.getRow(this.index);
  205.             window[_global.objVars.utils].byMessage.alertSuccess('', "{\"id\" :" + this.selected.id + ", \"name\" :" + this.selected.name + " , \"uf\" :" + this.selected.uf + "}");
  206.         },
  207.         pagination: function(el, ev) {
  208.             //console.log('_pagination', el, ev);
  209.            
  210.             this.itens = dataTable.mydata.length;
  211.             countRegister = this.itens
  212.             this.rows = 50;
  213.             countPages = 0;
  214.             countPages = Math.ceil(this.itens / this.rows);
  215.             this.pageData = dataTable.mydata;
  216.             dataTable.mypages = new Array();
  217.             this.row = 0;
  218.             var page = new Array();
  219.             if(countPages > 1){
  220.                 for (var i = 0; i <= this.pageData.length; i++){
  221.                     if(this.row == this.rows){
  222.                         dataTable.mypages.push({'data': page});
  223.                         page = new Array();
  224.                         page.push(this.pageData[i]);
  225.                         this.inpage = ((parseInt(dataTable.mypages.length)) == 0) ? 1 : (parseInt(dataTable.mypages.length));
  226.                         if((this.pageData.length - (this.inpage * this.rows)) < this.rows){
  227.                             this.rows = (this.pageData.length - (this.inpage * this.rows));
  228.                         }
  229.  
  230.                         this.row = 1;
  231.                     }else{
  232.                         page.push(this.pageData[i]);
  233.                         this.row++;
  234.                     }
  235.                 }
  236.             }else{
  237.                 dataTable.mypages.push({'data': this.pageData});
  238.             }
  239.             return true;
  240.         },
  241.         customButton: function() {
  242.             //console.log('_customButton');
  243. //          if(dataTable.mypages.length > 1 && (dataTable.mypage + 1) != dataTable.mypages.length){
  244. //              $("button[data-next]").removeClass("disabled");
  245. //          }else{
  246. //              $("button[data-next]").addClass("disabled");               
  247. //          }
  248. //          if(dataTable.mypage > 0){
  249. //              $("button[data-prev]").removeClass("disabled");
  250. //          }else{
  251. //              $("button[data-prev]").addClass("disabled");
  252. //          }
  253.             var idDivDataTable = 'dataTableTrabalhos';
  254.             var $divDataTable = $("div#" + idDivDataTable).find("div#area-nav-button");
  255.             if (countPages > 1 && (dataTable.mypage + 1) != countPages) {
  256.                 $divDataTable.find("button[data-next]").removeClass("disabled").prop('disabled', false);
  257.             } else {
  258.                 $divDataTable.find("button[data-next]").addClass("disabled").prop('disabled', true);
  259.             }
  260.             if (dataTable.mypage > 0) {
  261.                 $divDataTable.find("button[data-prev]").removeClass("disabled").prop('disabled', false);
  262.             } else {
  263.                 $divDataTable.find("button[data-prev]").addClass("disabled").prop('disabled', true);
  264.             }
  265.         },
  266.         btnPagination: function() {
  267.             //console.log('_btnPagination');           
  268.             var idDivDataTable = 'dataTableTrabalhos';
  269.             var $divDataTable = $("div#" + idDivDataTable).find("div#area-nav-button");
  270.             $divDataTable.find("button[data-nav-prev]").attr('data-prev', "");
  271.             $divDataTable.find("button[data-nav-next]").attr('data-next', "");
  272.             $divDataTable.find("button[data-nav-prev]").removeAttr("data-nav-prev");
  273.             $divDataTable.find("button[data-nav-next]").removeAttr("data-nav-next");
  274.             //NOTE: Ação dos Buttons Next e Prev
  275.             $divDataTable.find("button[data-next]").on('click', function(ev) {
  276.                 ev.preventDefault();
  277.                 dataTable.mypage++;
  278.                 window[_global.objVars.functions].byDataTable.pagination();
  279.                 window[_global.objVars.functions].byDataTable.customButton();
  280.                 window[_global.objVars.functions].byDataTable.loadTable();
  281.                 $('i#pages').html((dataTable.mypage + 1) + " / " + (countPages));
  282.                 $('i#register').html(countRegister);
  283.             });
  284.             $divDataTable.find("button[data-prev]").on('click', function(ev) {
  285.                 ev.preventDefault();
  286.                 dataTable.mypage--;
  287.                 window[_global.objVars.functions].byDataTable.pagination();
  288.                 window[_global.objVars.functions].byDataTable.customButton();
  289.                 window[_global.objVars.functions].byDataTable.loadTable();
  290.                 $('i#pages').html((dataTable.mypage + 1) + " / " + (countPages));
  291.                 $('i#register').html(countRegister);
  292.             });
  293.         }
  294. };
RAW Paste Data