PHP Classes

File: web/bundles/bootstrap/vu/js/paginated.table.js

Recommend this page to a friend!
  Classes of william amed   Raptor 2   web/bundles/bootstrap/vu/js/paginated.table.js   Download  
File: web/bundles/bootstrap/vu/js/paginated.table.js
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: Raptor 2
Framework that takes routes from annotations
Author: By
Last change:
Date: 8 years ago
Size: 36,662 bytes
 

Contents

Class file image Download
//BEGIN: TABLE WITH PAGINATION $.vuPaginatedTable = function (table, conf){ var settings = { id: '' ,urlSource: '' //Url donde se piden los datos ,autoload: true ,root: 'data' ,msgLoading: 'Cargando datos...' //TODO cambiar a una variable separado lo referente a todos los textos que necesiten traducirse ,msgNoDataLoaded: 'No existen datos para mostrar.' ,delegateSearch: '#Search' //Selector para el elemento encargado de buscar(poner contenedor con estructura y el input dentro se usa como elcampo de busqueda) ,delegateButtonSearch: '#idSearch' ,callBack: function(scope, modal){} //Se ejecuta al terminar la ejecucion ,style: '' //Estilos forzados a la tabla ,renderColumns: {} //Permite establecer mediante una funcion como se va a dibujar una columna determinada{index: 'indice de la col', render: function(valorColumna){//Funcion que debe retornar el html a dibujar}} ,renderRow: null //Función para construir las filas, recibe el objeto completo por parámetro ,pButtonAction: function(){} ,paginator:{ el: undefined ,options:{ page: 1 ,showPages: 5 ,totalPages: undefined ,total: undefined ,pageSize: 5 ,pageInitial: undefined ,pageFinal: undefined ,showBar: true ,barText: 'Mostrando' } ,params:{} } }; if(typeof conf != 'object') return false; var plugin = this ,$element = $(table); var paginatorConf = conf.paginator; if(paginatorConf){ conf.paginator.options = $.extend({},settings.paginator.options, paginatorConf.options); conf.paginator = $.extend({},settings.paginator, paginatorConf); } plugin.settings = $.extend(settings, conf); plugin.init = function(){ plugin.initPaginator(); plugin.initHeader(); plugin.settings.rowsContainer = $element.find('tbody'); // plugin.settings.rowsContainer = $element.find('tbody > tr > table > tbody'); if(plugin.settings.urlSource == undefined || plugin.settings.urlSource == ''){ plugin.settings.urlSource = $element.attr('urlsource'); } plugin.initSearch(); if(plugin.settings.autoload) plugin.getAjaxData(); plugin.settings.callBack(this); // plugin.removeAllRows(); } //Acciones header plugin.initHeader = function(){ settings.header = {}; settings.header.container = $element.find('> thead'); // settings.header.container = $element.find('tbody > tr > table > thead'); var $header = settings.header.container; $header.find('tr th:first').each(function(){ if($(this).attr('index') == 'checkbox-selection'){ settings.header.checkbox = $(this).find('input[type="checkbox"]').on('change', function(evt){ evt.stopPropagation(); var checked = $(this).is(':checked'); plugin.selectUnselectAll(checked); }); } }); settings.header.columns = []; plugin.updateHeadersIndex(); } plugin.updateHeadersIndex = function(){ var newColumns = []; settings.header.container.find('tr th:not(:first)').each(function(){ newColumns.push({name: $(this).attr('index'), element: $(this)}); }); settings.header.columns = newColumns; if(settings.paginator.el) settings.paginator.el.closest('th').attr('colspan', newColumns.length + 1); return plugin; } plugin.rebuildHeaders = function(headers, reload){ if(typeof headers == 'object' && headers instanceof Array){ var saveColumns = settings.header.columns; try{ var columns = [] ,appendColumns = []; var index = 0; for(var i=0; i < headers.length; i++){ var el = headers[i]; var $col = $('<th><span></span></th>').attr('index', el.index || index++) .find('span') .html(el.text || '') .end(); columns.push({name: el.index, element: $col}); appendColumns.push($col); } plugin.removeAllRows(); settings.header.container.find('tr th:not(:first)').remove(); settings.header.container.find('tr').append(appendColumns); plugin.updateHeadersIndex(); settings.paginator.el.closest('th').attr('colspan', columns.length+1); if(reload){ plugin.getAjaxData(); } }catch(ex){ settings.header.columns = saveColumns; } } return plugin; } plugin.initSearch = function(){ if(plugin.settings.delegateSearch != undefined && plugin.settings.delegateSearch != ""){ var $inputSearch = undefined; var $buttonSearch = undefined; if(typeof plugin.settings.delegateSearch == 'object'){ $inputSearch = plugin.settings.delegateSearch; }else{ $inputSearch = $(plugin.settings.delegateSearch); } if($inputSearch.length != 0){ if(plugin.settings.delegateButtonSearch != undefined && plugin.settings.delegateButtonSearch != "" ){ if(typeof plugin.settings.delegateButtonSearch == 'object'){ $buttonSearch = plugin.settings.delegateButtonSearch; }else{ $buttonSearch = $(plugin.settings.delegateButtonSearch); } $buttonSearch.click(function(){ if($inputSearch.val() != "" && $inputSearch.val() !== undefined ){ plugin.getAjaxData(1); } }) } $inputSearch.keyup(function(){ var searchVal = $inputSearch.val(); var name = $inputSearch.attr('name')?$inputSearch.attr('name'): 'search'; if(searchVal == "" && plugin.getPaginatorParams().search != undefined){ plugin.getPaginatorParams()[name] = undefined; plugin.getAjaxData(1); }else if(searchVal != ""){ plugin.getPaginatorParams()[name] = searchVal; } }) $inputSearch.keypress(function(e){ if(e.which == 13 ){ e.preventDefault(); if($inputSearch.val() != "") plugin.getAjaxData(1); } }); //Por si inicialmente el campo de busqueda tiene datos. $inputSearch.trigger('keyup'); } } } //Acciones para paginador plugin.initPaginator = function(){ var $paginator = $element.find('.paginator-container'); if($paginator.length != 0){ plugin.settings.paginator.el = $paginator; if(!plugin.settings.paginator.options.showBar) $paginator.find('.progress').closest('li').remove(); plugin.settings.paginator.options.pageSize = $paginator.find('select.page-size').val(); plugin.initPaginatorEvents($paginator); plugin.updatePaginator(); // $paginator.find('li.item-page').remove(); // var options = plugin.settings.paginator.options; // options.page = 1000; }else{ plugin.settings.paginator.options.pageSize = undefined; plugin.settings.paginator.options.page = undefined; } } plugin.initPaginatorEvents = function($paginatorContainer){ $paginatorContainer.find('li > a').click(function(evt){ evt.preventDefault(); }); var $pageSize = $paginatorContainer.find('select.page-size'); $pageSize.on('change', function(evt){ plugin.changePaginatorSize($(evt.target).val()); }); var $next = $paginatorContainer.find('.paginator-next'); $next.click(function(){ plugin.getAjaxData(Math.min((plugin.settings.paginator.options.page + 1), plugin.settings.paginator.options.totalPages)); }); var $refresh = $paginatorContainer.find('.paginator-refresh'); $refresh.click(function(){ plugin.getAjaxData(); }); } plugin.setPaginatorParams = function(params){ if(typeof params == 'object'){ plugin.settings.paginator.params = params; } return plugin; } plugin.getPaginatorParams = function(){ return plugin.settings.paginator.params; } plugin.mergePaginatorParams = function(params){ plugin.settings.paginator.params = $.extend({},plugin.settings.paginator.params, params); } plugin.countPaginatorParams = function(){ if (!Object.keys) { Object.keys = function (obj) { var keys = [], k; for (k in obj) { if (Object.prototype.hasOwnProperty.call(obj, k)) { keys.push(k); } } return keys; }; } return Object.keys(plugin.settings.paginator.params).length; } plugin.clearPaginatorParams = function(){ plugin.settings.paginator.params = {}; } /** * Actualiza el paginador con las paginas que deben estar visibles de acuerdo * a la pagina actual * @param options (no requerido) Si se pasa options se actualiza el objeto paginatorOptions * con los valores que sean pasados.{ * * } */ plugin.updatePaginator = function(options){ if(options && typeof options == 'object'){ plugin.updatePaginatorObject(options); } //Actualizar los elementos del paginator plugin.updatePagesPaginator(); } /** * Actualiza el objeto del paginado con los nuevos valores que le sean * pasados por parametros */ plugin.updatePaginatorObject = function(options){ var pagOpts = plugin.settings.paginator.options; if(!isNaN(options.total)){ pagOpts.total = options.total; } if(options.page){ pagOpts.page = options.page; } if(options.pageSize){ pagOpts.pageSize = options.pageSize; } var totalPages = pagOpts.total / pagOpts.pageSize; if(pagOpts.total % pagOpts.pageSize != 0){ totalPages++; } pagOpts.totalPages = totalPages; plugin.settings.paginator.options = pagOpts; } /** * Cambia el tamanno de pagina para el paginado, por lo que actualiza la * tabla con la cantidad de datos nueva y comienza por la pagina 1. */ plugin.changePaginatorSize = function(pageSize){ plugin.settings.paginator.options.pageSize = pageSize; plugin.settings.paginator.options.page = 1; // plugin.updatePagesPaginator(1); // plugin.updateBarPaginator(); plugin.getAjaxData(1); } plugin.updatePagesPaginator = function(pInicial, pFinal){ var $paginator = plugin.settings.paginator.el; if(!$paginator) return plugin; var options = plugin.settings.paginator.options; $paginator.find('li.item-page').remove(); var $reference = $paginator.find('.paginator-before'); if(!pInicial && !pFinal && options.pageInitial!= undefined && options.pageFinal!=undefined){ if( options.pageFinal - options.pageInitial + 1 != options.pageSize && options.pageFinal - options.pageInitial + 1 == options.totalPages){ pagInicial = options.pageInitial; pagFinal = options.pageFinal; }else{ if(options.pageFinal > options.totalPages){ pagFinal = options.pageFinal = Math.max(options.totalPages, 1); pagInicial = Math.max(1, pagFinal - options.showPages); options.page = pagFinal; }else{ pagInicial = options.pageInitial; if(options.totalPages <= options.pageFinal){ pagFinal = Math.max(options.totalPages, 1); }else{ pagFinal = options.pageFinal; } } } }else{ var pagInicial = undefined; var pagFinal = undefined; if(pInicial){ pInicial = Math.max(1, pInicial); if((options.totalPages - pInicial + 1) >= options.showPages){ pagInicial = pInicial; pagFinal = pInicial + options.showPages -1; }else{ pagFinal = Math.max(options.totalPages, 1); if(pagFinal-(options.showPages-1) > 0){ pagInicial = pagFinal-(options.showPages-1); }else{ pagInicial = 1; } } }else if(pFinal){ pFinal = Math.min(options.totalPages, pFinal); if((pFinal - (options.showPages-1)) >= 1){ pagFinal = pFinal; pagInicial = pagFinal - (options.showPages -1); }else{ pagInicial = 1; if(pagInicial+(options.showPages-1) <= options.totalPages){ pagFinal = pagInicial+(options.showPages-1); }else{ pagFinal = options.totalPages; } } } else{ pagInicial = 1; if(pagInicial+ (options.showPages-1) <= options.totalPages){ pagFinal = pagInicial + (options.showPages-1); }else{ pagFinal = options.totalPages; } } options.pageInitial = pagInicial; options.pageFinal = pagFinal; } for(var i = pagInicial; i<= pagFinal; i++){ var clases = 'item-page'; if(i == options.page){ clases+=' page-active'; } var item = $('<li page="'+i+'" class="'+clases+'"><span >'+i+'</span></li>') .click(function(){ if(plugin.settings.ajaxObj) return; plugin.getAjaxData(parseInt($(this).attr('page'))); $paginator.find('li.page-active').removeClass('page-active'); $(this).addClass('page-active'); }); $reference.after(item); $reference = item; } //Se actualizan los botones siguiente y anterior ademas de fin e inicio var $beginBefore = $paginator.find('.paginator-begin, .paginator-before'); if(options.page == 1){ $beginBefore.addClass('disabled') .unbind('click'); }else{ if($beginBefore.hasClass('disabled')){ $beginBefore.filter('.paginator-begin') .removeClass('disabled') .click(function(){ plugin.getAjaxData(1); }); $beginBefore.filter('.paginator-before') .removeClass('disabled') .click(function(){ plugin.getAjaxData(options.page - 1); }); } } var $endNext = $paginator.find('.paginator-end, .paginator-next') .unbind('click'); if(options.page == options.totalPages || options.totalPages == 0 || options.totalPages == 1){ $endNext.addClass('disabled'); }else{ $endNext.filter('.paginator-end') .click(function(){ plugin.getAjaxData(options.totalPages); }); $endNext.filter('.paginator-next') .click(function(){ plugin.getAjaxData(options.page + 1); }); if($endNext.hasClass('disabled')){ $endNext.removeClass('disabled'); } } if(options.showBar) setTimeout(plugin.updateBarPaginator, 100); return plugin; }; plugin.updateBarPaginator = function(){ var $paginator = plugin.settings.paginator.el; var options = plugin.settings.paginator.options; var $progress = $paginator.find('.progress .bar'); var primero = options.total != 0 ? (options.page - 1) * options.pageSize + 1 : 0; var totalCargados = 0; if(options.pageSize < 0){ totalCargados = options.total; }else{ totalCargados = Math.min(options.page * options.pageSize, options.total); } var percent = options.total != 0 ? totalCargados * 100 / options.total : 0; $progress.css({width: percent+'%'}); var text = ''; if(!isNaN(options.total)){ text = options.barText+' '+primero+' - '+totalCargados+' / '+options.total; }else{ text = options.barText+' 0 - 0 / 0 '; } $paginator.find('.progress-text-infront, .progress-text-behind') .html(text); }; //Acciones para la carga de datos /** * Obtiene datos por ajax mediante el uso del paginado y filtro aplicado */ plugin.getAjaxData = function(page, params){ if(plugin.settings.ajaxObj){ return; // plugin.settings.ajaxObj.abort(); } var options = plugin.settings.paginator.options; if(page > options.totalPages){ page = Math.max(options.totalPages, 1); }else if(page < 1){ page = 1; } var data = {}; data.page = (page != undefined)?page : options.page; data.pageSize = options.pageSize; data = $.extend({}, params, data, plugin.settings.paginator.params); //Mostrar el cargando ... plugin.showLoading(); plugin.settings.ajaxObj = $.ajax({ url: plugin.settings.urlSource ,data: data ,method: 'GET' ,async: true ,dataType: 'JSON' ,success: function(response){ if(response.success){ plugin.settings.paginator.options.total = response.total; var totalPages = parseInt(response.total / plugin.settings.paginator.options.pageSize); if(response.total % plugin.settings.paginator.options.pageSize > 0){ totalPages++; } plugin.settings.paginator.options.totalPages = parseInt(totalPages); plugin.removeAllRows(); var root = plugin.settings.root; if(response[root].length != 0){ $(response[root]).each(function(obj, val){ var row = plugin.getRowBuilder().call(plugin, val); plugin.appendRow(row, val); }); $element.trigger('data.loaded', [response[root]]); }else{ var row = plugin.buildNoDataRow(); plugin.appendRow(row, null); } //Cambiar if(page){ options.page=page; } if((page && page == options.pageInitial && options.pageInitial != 1) || page && page > options.pageFinal){ plugin.updatePagesPaginator(undefined, page); // setTimeout(plugin.updatePagesPaginator, 100, undefined, page); }else if((page && page == options.pageFinal && options.pageFinal != options.totalPages) || page == 1 || page < options.pageInitial){ plugin.updatePagesPaginator(page); // setTimeout(plugin.updatePagesPaginator, 100, page); }else { plugin.updatePagesPaginator(); // setTimeout(plugin.updatePagesPaginator, 100); } // plugin.updateBarPaginator(); }else{ // alert('Success false'); } //Ocultar el cargando... plugin.bindSelectionTrigger(); plugin.hideLoading(); plugin.settings.ajaxObj = null; } ,error: function(obj){ //Ocultar el cargando... plugin.hideLoading(); plugin.settings.ajaxObj = null; } }); } /** * Actualiza los datos de la tabla haciendo uso de los datos de paginado * y ordenamiento actuales */ plugin.updateTable = function(){ plugin.getAjaxData(); } plugin.getRowBuilder = function(){ if(plugin.settings.renderRow){ return plugin.settings.renderRow; } return plugin.buildRow; } /** * Construye una fila determinada de acuerdo a los datos pasados y le * agrega los eventos correspondientes. */ plugin.buildRow = function(data, type){ type = type || ''; var row = $('<tr></tr>').addClass(type); var columns = settings.header.columns; $('<td><input class="checkbox-row-selector" type="checkbox" name="id"/></td>') .find('input') .attr('value', data[settings.idIndex]) .click(function(evt){ evt.stopPropagation(); }) .change(function(){ plugin.bindSelectionTrigger(); plugin.toggleSelectionRow(row, $(this).attr('checked')); }) .end() .appendTo(row); for (var col in columns){ var renderFunction = plugin.getRenderFunction(columns[col]['name']); if(!renderFunction){ $('<td></td>').appendTo(row).html(data[columns[col]['name']]); }else{ $('<td></td>').append($(renderFunction.call(plugin, data[columns[col]['name']], data))) .appendTo(row); } } row.data('row', data).click(function(evt){ //evt.stopPropagation(); evt.preventDefault(); var $checkbox = $(this).find('input.checkbox-row-selector[type="checkbox"]'); if(!evt.ctrlKey) plugin.selectUnselectAll(false); $checkbox.attr('checked', $checkbox.attr('checked')? false : 'checked') .trigger('change'); plugin.unselectHeader(); // plugin.selectRow() //Aqui }); return row; } plugin.getRenderFunction = function(index){ if(plugin.settings.renderColumns[index]){ return plugin.settings.renderColumns[index]; } return false; } plugin.bindSelectionTrigger = function(){ $element.trigger('selection.change', [plugin.getRowsChecked()]); } plugin.toggleSelectionRow = function ($row, checked){ if(checked){ $row.addClass('info') }else{ $row.removeClass('info'); } } /** * Construye una fila con el texto configurado de no resultados. * @param row String Texto a mostrar */ plugin.buildNoDataRow = function(text){ return $('<tr><td colspan="'+(plugin.settings.header.columns.length + 1)+'"><span class="">'+plugin.settings.msgNoDataLoaded+'</span></td></tr>'); } /** * Retorna todas la filas */ plugin.getAllRows = function(){ return settings.rowsContainer.children('tr'); } /** * Retorna los valores de todas la filas */ plugin.getAllValues = function(){ return settings.rowsContainer.children('tr').map(function(){ return $(this).data('row'); }); } /** * Retorna la fila de una posición * @param pos Integer Índice de la fila */ plugin.getRowAt= function(pos){ return $(settings.rowsContainer.children('tr')[pos]); } /** * Elimina todas las filas cargadas. */ plugin.removeAllRows = function(){ settings.rowsContainer.children('tr').remove(); } /** * Elimina una fila determinada de acuerdo al index de la misma. * @param pos Indice a eliminar */ plugin.removeRowAt = function(pos){ var rows = settings.rowsContainer.children() ,row = rows[pos]; if (row){ row.remove(); $element.trigger('row.removed', [row, $(row).data('row')]); } return plugin; } /** * Adiciona una fila determinada al final de la tabla. * @param row Fila * @param data Datos asociados * @returns plugin */ plugin.appendRow = function(row){ settings.rowsContainer.append(row); $element.trigger('row.appended', [row, row.data('row')]); return plugin; } /** * Adiciona un arreglo de filas al final de la tabla. * @param rows Array Contiene objetos {row: fila, data:datos} */ plugin.appendRows = function(rows){ var lastPos = this.rowsContainer.children('tr').length -1; for(var i=0; i<rows.length; i++){ plugin.insertRow(lastPos++, rows[i]); } $element.trigger('rows.appended', [rows]); return plugin; } /** * Adiciona una fila determinada al inicio de la tabla. */ plugin.prependRow = function(row){ settings.rowsContainer.prepend(row); $element.trigger('row.appended', [row, row.data('row')]); return plugin; } /** * Adiciona un arreglo de filas al inicio de la tabla. * @param Array Contiene objetos {row: fila, data:datos} */ plugin.prependRows = function(rows){ for(var i=0; i<rows.length; i++){ plugin.insertRow(i, rows[i]); } $element.trigger('rows.appended', [rows]); return plugin; } /** * Inserta una fila en una posición específica. * @param pos Integer Número entero a partir de 0 * @param $row Array(objeto del dom) fila en el ámbito de jQuery * @param data Object datos asociados a la fila */ plugin.insertRow = function(pos, $row, data){ $row = $row.length? $row : $($row); if(isNaN(pos)) return; var rows = settings.rowsContainer.children(); if(!rows.length || pos <= 0){ return plugin.prependRow($row); }else if(pos > rows.length-1){ return plugin.appendRow($row); } if(rows[pos]){ var ref = rows[pos]; $row.insertBefore(ref); $element.trigger('row.appended', [$row, data]); } return plugin; } plugin.insert = function(pos, data, type){ if(data && data.length){ var rows = []; for(var i =0; i<data.length; i++){ plugin.insertRow(pos++, plugin.getRowBuilder().call(plugin, data[i], type || ''), data[i]); } }else if(data){ var row = plugin.getRowBuilder().call(plugin, data); plugin.insertRow(pos, row, data); } } /** * Selecciona o des-selecciona todas las filas dependiento de checked( * true: selecciona todas, false: des-selecciona todas). */ plugin.selectUnselectAll = function(checked){ var check = checked? 'checked' : false; settings.rowsContainer.find('tr > td:first-child input.checkbox-row-selector').each(function(){ $(this).prop('checked', check) }); plugin.getAllRows().each(function(){ plugin.toggleSelectionRow($(this), check); }) plugin.bindSelectionTrigger(); } plugin.unselectHeader=function(){ var checked = $(settings.header.checkbox).is(':checked'); if(checked) settings.header.checkbox.prop('checked', false) } //Funcionalidades para consumir publicamente /** * Obtiene la fila seleccionada con click, o la ultima que fue chequeada */ plugin.getRowSelected = function(){ var data; settings.rowsContainer.find('tr.info').each(function(){ data= ($(this).closest('tr').data('row')); }); return data; } /** * Obtiene las filas nuevas. */ plugin.getRowsNews = function(){ return settings.rowsContainer.children('tr.new'); } /** * Obtiene los valores de las filas nuevas. */ plugin.getRowsNewsValues = function(){ var data = []; settings.rowsContainer.children('tr.new').each(function(){ data.push($(this).data('row')); }); return data; } /** * Obtiene las filas modificadas. */ plugin.getRowsModifieds = function(){ return settings.rowsContainer.children('tr.modified'); } /** * Obtiene los valores de las filas nuevas. */ plugin.getRowsModifiedsValues = function(){ var data = []; settings.rowsContainer.children('tr.modified').each(function(){ data.push($(this).data('row')); }); return data; } /** * Obtiene las filas que posean el checkbox de seleccion con valor checked. */ plugin.getRowsChecked = function(){ var data = []; settings.rowsContainer.find('tr > td input.checkbox-row-selector:checked').each(function(){ data.push($(this).closest('tr').data('row')); }); return data; } /** * Obtiene los valores de las filasseleccionadas. */ plugin.getRowsCheckedValues = function(){ return plugin.getRowsChecked; } /** * Elimina la fila que se encuentra seleccionada. */ plugin.removeRowSelected = function(){ } /** * Elimina las filas que se encuentra seleccionadas mediante el checkbox. */ plugin.removeRowsChecked = function(){ return plugin.getRowsChecked().remove(); } plugin.removeRows = function(rows){ var removed = []; plugin.getAllRows().each(function(){ for(var i = 0; i < rows.length; i++) if($(this).data('row') == rows[i]) removed.push($(this).remove()); }); return removed; } /** * Muestra el cargando datos */ plugin.showLoading = function(msg){ var $tmpl = $('<tr class="tr-loading"> <td class="td-loading"> <div class="loading-progress-container"> <div class="progress progress-striped active"><div style="width: 100%;" class="bar"><strong>'+(msg? msg : plugin.settings.msgLoading)+'</strong></div></div></div></td></tr>'); $element.find('tfoot') .find('.tr-loading') .remove() .end() .append($tmpl); // $tmpl.fadeIn('fast'); } /** * Oculta el cargando datos */ plugin.hideLoading = function(){ $element.find('tfoot .tr-loading') .remove(); } plugin.init(); // $element.data('vuTable', this); // // return this; } $.fn.vuPaginatedTable = function(options) { if(this.length){ var el = this[0] ,vuTable = $(el).data('vuTable'); if (undefined == vuTable) { var plugin = new $.vuPaginatedTable(el, options); $(el).data('vuTable', plugin); return plugin; }else{ if(options && typeof options == 'string' && vuTable[options]) return vuTable[options](); return vuTable; } } return this; // return this.each(function() { // if (undefined == $(this).data('vuTable')) { // var plugin = new $.vuPaginatedTable(this, options); // $(this).data('vuTable', plugin); // } // }); } //END: TABLE WITH PAGINATION