PageSourceSearch

https://saelicenciatura.eld.edu.mx/resources/scripts/emeth-dataTables.js

js eld.edu.mx collected 2026-10-02 05:50:27 UTC 11,990 bytes, 407 lines download raw bytes

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.