1/** 2 * Namespace que permite realizar operaciones con el componente de DataTable 3 * 4 * @author Jorge Eduardo Ãlvarez Hernández 5 * @version 1.0 "Aug 24, 2015" 6 */ 7var dataTableEMETH = function() { 8 9 /** 10 * Permite agregar una fila en una Tabla especificada 11 * 12 * @param idTable 13 * {String} identificador de la tabla a la que se quiere agregar 14 * el elemento 15 * @param row 16 * {Array} cada uno de los elemento que van a ser agregados en la 17 * fila 18 */ 19 function addRow(idTable, row) { 20 $("#" + idTable).dataTable().fnAddData([ row ], true); 21 } 22 23 /** 24 * Borra un elemento de la tabla 25 * 26 * @param table 27 * {String} tabla a la que se quiere eliminar un elemento 28 * 29 * @param row 30 * {Obeject} elemento que van a ser eliminado de la tabla 31 */ 32 function deleteRow(table, element) { 33 $("#" + table.id).DataTable().row($(element).parents('tr')).remove() 34 .draw(); 35 } 36 37 function deleteRowId(table, element) { 38 $("#" + table).DataTable().row($(element).parents('tr')).remove() 39 .draw(); 40 } 41 /** 42 * Borra todos los elementos de la tabla 43 * 44 * @param table 45 * {String} tabla de la que se quieren eliminar todos los 46 * registros 47 */ 48 function deleteRows(table) { 49 $('#' + table).DataTable().rows().remove().draw(); 50 } 51 52 /** 53 * Funcion para saber cuantos renglones tiene una tabla 54 * 55 * @param table 56 * {String} tabla de la que se quieren saber el numero de filas 57 * @returns {Integer} Numero de filas en la tabla 58 */ 59 function countRows(table) { 60 return $("#" + table).DataTable().rows().count(); 61 } 62 63 /** 64 * Verifica que un elemento exista en una tabla, en caso de que exista 65 * regresa verdadero, verifica un valor de referencia contra los elementos 66 * de una columna, en caso de ser requerido mustra un mensaje pasando como 67 * parametro el elemento que esta repetido. 68 * 69 * @param idTabla 70 * {String} identificador de la tabla en la que se realizará la 71 * comparación 72 * @param value 73 * {String} valor de referencia que se busca encontrar en la 74 * tabla 75 * @param index 76 * {Integer} Ãndice que indica sobre que columna debe realizarse 77 * la busqueda 78 * @param idMessage 79 * {String} (opcional) indica el identificador del texto del 80 * mensaje que se mostrará en caso de que exista un elemento 81 * repetido 82 * @param message 83 * {String} mensaje original 84 * @returns {Boolean} verdadero en caso de que exista un elemento repetido, 85 * falso en caso contrario 86 * 87 */ 88 function exist(idTable, value, index, idMessage, message) { 89 var table = $("#" + idTable).dataTable(); 90 for (var i = 0; i < table.fnSettings().fnRecordsTotal(); i++) { 91 if (value === table.fnGetData(i, index)) { 92 if (idMessage != undefined && message != undefined 93 && idMessage != null && idMessage !== '') { 94 $("#" + idMessage).text(message.format({ 95 4 : value 96 })); 97 } 98 return true; 99 } 100 } 101 return false; 102 } 103 104 /** 105 * Crea una tabla por medio del componente DataTables 1.10 sin aplicarle 106 * ningún tema 107 * 108 * @param idTable 109 * {String} identificador del elemento table ha ser creado como 110 * objeto DataTable 111 * @returns Objeto DataTable creado 112 */ 113 function createDataTableWhitOutInfo(idTable, aoColumnDefs) { 114 return $("#" + idTable).dataTable({ 115 language : { 116 url : $("#hdnRutaContexto").val() + getUrlLanguage() 117 }, 118 responsive : { 119 details : { 120 display : $.fn.dataTable.Responsive.display.childRow 121 } 122 }, 123 "bFilter" : false, 124 "bSort" : false, 125 "bLengthChange" : false, 126 "bPaginate" : false, 127 "bInfo" : false, 128 "autoWidth" : false, 129 "aoColumnDefs" : aoColumnDefs 130 // , 131 // "language" : { 132 // "url" : $("#hdnRutaContexto").val() + getUrlLanguage() 133 // } 134 }); 135 } 136 137 /** 138 * Crea una tabla por medio del componente DataTables 1.10 sin aplicarle 139 * ningún tema 140 * 141 * @param idTable 142 * {String} identificador del elemento table ha ser creado como 143 * objeto DataTable 144 * @returns Objeto DataTable creado 145 */ 146 function createDataTableWhitOutInfoNoSort(idTable, aoColumnDefs) { 147 return $('#' + idTable).dataTable({ 148 language : { 149 url : $("#hdnRutaContexto").val() + getUrlLanguage() 150 }, 151 responsive : { 152 details : { 153 display : $.fn.dataTable.Responsive.display.childRow 154 } 155 }, 156 "order" : [] 157 }); 158 } 159 160 /** 161 * Crea una tabla por medio del componente DataTables 1.10 sin aplicarle 162 * ningún tema 163 * 164 * @param idTable 165 * {String} identificador del elemento table ha ser creado como 166 * objeto DataTable 167 * @returns Objeto DataTable creado 168 */ 169 function createNoResponsiveDataTableWhitOutInfo(idTable, aoColumnDefs) { 170 return $("#" + idTable).dataTable({ 171 language : { 172 url : $("#hdnRutaContexto").val() + getUrlLanguage() 173 }, 174 "bFilter" : false, 175 "bSort" : false, 176 "bLengthChange" : false, 177 "bPaginate" : false, 178 "bInfo" : false, 179 "autoWidth" : false, 180 "aoColumnDefs" : aoColumnDefs 181 }); 182 } 183 184 /** 185 * Función que ordena cierta columna de acuerdo al orden que se desee. 186 * 187 * @param idTable 188 * {String} identificador del elemento table a ser creado como 189 * objeto DataTable 190 * 191 * @param columna 192 * {Integer} identificador que hace referencia a la columna que 193 * se quiere ordenar de la tabla, la columna 1 es la posición 194 * 0(véase como un arreglo) 195 * 196 * @param orden 197 * {String} identificador que hará referencia al orden en que se 198 * desean mostrar los elementos, puede ser descendente o 199 * ascendente, los parametros se pasan como "desc" o "asc" 200 * respectivamente. 201 */ 202 function createSortedDataTableWhitOutInfo(idTable, columna, orden, 203 aoColumnDefs) { 204 return $('#' + idTable).dataTable({ 205 language : { 206 url : $("#hdnRutaContexto").val() + getUrlLanguage() 207 }, 208 responsive : { 209 details : { 210 display : $.fn.dataTable.Responsive.display.childRow 211 } 212 }, 213 "bFilter" : false, 214 "bLengthChange" : false, 215 "bPaginate" : false, 216 "bInfo" : false, 217 "autoWidth" : false, 218 "aoColumnDefs" : aoColumnDefs, 219 "order" : [ [ columna, orden ] ], 220 "columnDefs" : [ { 221 "targets" : 'no-sort', 222 "orderable" : false 223 } ] 224 }); 225 } 226 227 /** 228 * Crea una tabla por medio del componente DataTables 1.10 229 * 230 * @param idTable 231 * {String} identificador del elemento table ha ser creado como 232 * objeto DataTable 233 * @returns Objeto DataTable creado 234 */ 235 function createDataTable(idTable, aoColumnDefs) { 236 return $('#' + idTable).dataTable({ 237 language : { 238 url : $("#hdnRutaContexto").val() + getUrlLanguage() 239 }, 240 "aoColumnDefs" : aoColumnDefs, 241 "columnDefs" : [ { 242 "targets" : 'no-sort', 243 "orderable" : false 244 } ] 245 }); 246 } 247 248 /** 249 * Crea una tabla responsiva por medio del componente DataTables 1.10 250 * 251 * @param idTable 252 * {String} identificador del elemento table ha ser creado como 253 * objeto DataTable 254 * @returns Objeto DataTable creado 255 */ 256 function createResponsiveDataTable(idTable, aoColumnDefs) { 257 return $('#' + idTable).dataTable({ 258 language : { 259 url : $("#hdnRutaContexto").val() + getUrlLanguage() 260 }, 261 responsive : { 262 details : { 263 display : $.fn.dataTable.Responsive.display.childRow 264 } 265 }, 266 "aoColumnDefs" : aoColumnDefs, 267 "columnDefs" : [ { 268 "targets" : 'no-sort', 269 "orderable" : false, 270 } ] 271 }); 272 } 273 274 /** 275 * Crea una tabla DataTable con la función de ordenar la tabla de acuerdo a 276 * N columnas que se pasan como parametros. El orden de los parametros al 277 * pasarse la funcion siempre es : [0] el id de la tabla , [1] el numero de 278 * la columna en el par N, [2] el orden (ascendente o descendente) de dicha 279 * columna en el par N 280 * 281 * El la declaracion del metodo en emeth-dataTables no indica los parametros 282 * que se deben pasar, sino que hace uso del objeto arguments para obtener 283 * dichos parametros del arreglo aqui se maneja la primera poscicion del 284 * arguments como el id, y siempre toma los siguientes dos elementos del 285 * array como la pareja que se enviara al constructor de la tabla para su 286 * ordenamiento 287 * 288 * EJEMPLO: dataTableEMETH.createSortedDataTable("tblFases",1,"asc",0,"asc", 289 * NUM_COLUM, "asc|desc",...); 290 * 291 * @param idTable 292 * {String} identificador del elemento table a ser creado como 293 * objeto DataTable 294 * 295 * @param columna 296 * n {Integer} identificador que hace referencia a la columna que 297 * se quiere ordenar de la tabla, la columna 1 es la posición 298 * 0(véase como un arreglo) 299 * 300 * @param orden 301 * n {String} identificador que hará referencia al orden en que 302 * se desean mostrar los elementos de la primera columna, puede 303 * ser descendente o ascendente, los parametros se pasan como 304 * "desc" o "asc" respectivamente. 305 */ 306 307 function createSortedDataTable() { 308 // Toma la primera posicion como el id 309 var idTable = arguments[0]; 310 // Obtiene el numero de las columnas que se pretende ordenar 311 var columnas = [ ((arguments.length) - 1) / 2 ]; 312 // indice que corre el valor del arguments 313 var value = 1; 314 var aoColumnDefs = undefined; 315 316 for (var index = 0; index < (((arguments.length) - 1) / 2); index++) { 317 columnas[index] = [ arguments[value], arguments[value + 1] ]; 318 value = value + 2; 319 } 320 321 return $('#' + idTable).dataTable({ 322 language : { 323 url : $("#hdnRutaContexto").val() + getUrlLanguage() 324 }, 325 responsive : { 326 details : { 327 display : $.fn.dataTable.Responsive.display.childRow 328 } 329 }, 330 "aoColumnDefs" : aoColumnDefs, 331 "order" : columnas 332 }); 333 } 334 335 /** 336 * Prepara el formulario para que al momento de dar submit, se envien todos 337 * los inputs de todas las paginas del dataTable 338 * 339 * @param idForm 340 * Identificador del formulario 341 * @param table 342 * Objeto DataTable 343 * @returns 344 */ 345 function onSubmitDataTableForm(idForm, table) { 346 $('#' + idForm).on( 347 'submit', 348 function(e) { 349 var form = this;
350 // Obtiene como un array de nombre y valor todos los 351 // elementos del formulario de todas las paginas del 352 // dataTable 353 var params = table.$('input,select,textarea') 354 .serializeArray(); 355 356 $.each(params, 357 function() { 358 // Si el elemento no existe en el DOM 359 if (!$.contains(document, form[this.name])) { 360 $(form).append( 361 $('<input>').attr('type', 'hidden') 362 .attr('name', this.name) 363 .val(this.value)); 364 } 365 }); 366 367 }); 368 } 369 370 /** 371 * Quita las propiedades de DataTable a una tabla ya creada 372 * 373 * @param idTable 374 * @returns 375 */ 376 function destroyDataTable(idTable) { 377 return $('#' + idTable).dataTable().fnDestroy(); 378 } 379 380 /** 381 * Obtiene la ruta en la que se encuentra el archivo de configuración del 382 * lenguaje utilizado para el componente de DataTable 383 * 384 * @returns String con la ruta del archivo con la configuración del lenguaje 385 */ 386 function getUrlLanguage() { 387 return $("#hdnUrlLanguageDataTable").val(); 388 } 389 390 return { 391 addRow : addRow, 392 deleteRow : deleteRow, 393 deleteRowId : deleteRowId, 394 deleteRows : deleteRows, 395 destroyDataTable : destroyDataTable, 396 countRows : countRows, 397 createDataTableWhitOutInfoNoSort : createDataTableWhitOutInfoNoSort, 398 exist : exist, 399 createDataTableWhitOutInfo : createDataTableWhitOutInfo, 400 createSortedDataTableWhitOutInfo : createSortedDataTableWhitOutInfo, 401 createDataTable : createDataTable, 402 createSortedDataTable : createSortedDataTable, 403 onSubmitDataTableForm : onSubmitDataTableForm, 404 createNoResponsiveDataTableWhitOutInfo : createNoResponsiveDataTableWhitOutInfo, 405 createResponsiveDataTable : createResponsiveDataTable 406 }; 407}();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.