//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
|