Skip to content

Instantly share code, notes, and snippets.

@obeduri
Last active March 14, 2024 19:59
Show Gist options
  • Save obeduri/1107e378470dd90e8b469d137b628a27 to your computer and use it in GitHub Desktop.
Save obeduri/1107e378470dd90e8b469d137b628a27 to your computer and use it in GitHub Desktop.
Snippets Javascript
//SLEECIONA TODOS LOS ELEMENTOS MENOS EL ULTIMOS
$("div.elem:not(:last)").hide();
function formatTable(cnf) {
/*
{
debug: true, //debugging options switch
element: '.table_rols_modules', //object en DOM el cual será datatable
empty_table: 'NO HAY DATOS',
scroller: true, //scrollbard?
fixed_header: true, //Cabecera fija
title_report: 'Report Title',
auto_print: true,
emptyText: 'NO HAY DATOS',
order: [[0, 'asc']], //columna por la cual se ordena
column_groupby: 0, //indice de la columna de grupo
empty_text: 'NO HAY DATOS', //texto para cuando la tabla está vacia
name_report: 'CITASMED', //nombre del reporte
filterdrops: {visible: false, element: ''}, //filtrado de combo por columna (en desarrollo)
scrolly: 'auto', // limita el scroll a los pixeles desseados Y [420px]
scrollx: '100%', // limita el scroll a los pixeles desseados X [100%]
scrollCollapse: true, // elimina la paginacion
paging: true,
page_length: 10,
filter: true,
info: true,
sort: true,
group: true, //agrupa por columnas
group_span: 4, //tamaño de la columna en celdas de manera horizontal
groupcolumn: 0, //
columnGroup: 0,
orientation_report: '',
groupSpan: 5,
column_defs: [{ visible: false, targets: 0, searchable: false }],
callback: () => {
//do stuff
},
responsive: true,
}
*/
if (cnf.isEmpty) {
alert('Configuration Object NOT FOUND');
}
if (!('element' in cnf)) {
console.log('debe de configurar un elemento');
return;
}
if (cnf.debug ?? false) {
console.table(cnf);
}
if ($.fn.DataTable.isDataTable(cnf.element)) {
$(cnf.element).DataTable().destroy();
}
let months = ["ENE", "FEB", "MAR", "ABR", "MAY", "JUN", "JUL", "AGO", "SEP", "OCT", "NOV", "DIC"],
currentDate = new Date(),
day = currentDate.getDate(),
month = months[currentDate.getMonth()],
year = currentDate.getFullYear(),
d = day + "-" + month + "-" + year,
groupColumn = cnf.group ?? false,
JqueryTable = $(`${cnf.element}`).DataTable({
//scrollY: `${cnf.scrolly ?? 'auto'}`,
//sScrollX: `${cnf.scrollx ?? '100%'}`,
//scrollCollapse: cnf.scrollCollapse ?? false,
scroller: cnf.scroller ?? false,
paging: cnf.paging ?? true,
searching: cnf.searching ?? true,
pageLength: cnf.page_length ?? 10,
filter: cnf.filter ?? true,
info: cnf.info ?? true,
sort: cnf.sort ?? true,
FixedHeader: cnf.fixed_header ?? true,
order: cnf.order ?? [[0, "desc"]],
columnDefs: cnf.columnDefs ?? '',
drawCallback: function (settings) {
if (cnf.group) {
let api = this.api(),
rows = api.rows({ page: 'current' }).nodes(),
last = null;
api.column(cnf.groupcolumn, { page: 'current' }).data().each(function (group, i) {
if (last !== group) {
$(rows).eq(i).before(
`<tr class="group bg-primary text-white"><td colspan="${cnf.group_span ?? 5}">${group}</td></tr>`
);
last = group;
}
});
}
('function' == typeof cnf.callback) && cnf.callback();
},
language: {
emptyTable: cnf.empty_table ?? `<center>NO HAY DATOS</center>`,
Processing: '<i class="fa fa- spinner fa- spin fa - 3x fa - fw"></i><span class="sr - only">Cargando...</span>',
sZeroRecords: "No se encontraron resultados",
sInfo: "Mostrando registros del _START_ al _END_ de un total de _TOTAL_ registros",
sInfoEmpty: "Mostrando registros del 0 al 0 de un total de 0 registros",
sInfoFiltered: "(filtrado de un total de _MAX_ registros)",
sInfoPostFix: "",
sSearch: "",
searchPlaceholder: "🔎 Buscar...",
sUrl: "",
sInfoThousands: ",",
sLoadingRecords: "Cargando...",
oPaginate: {
sFirst: "Primero",
sLast: "Último",
sNext: ">",
sPrevious: "<"
},
oAria: {
sSortAscending: "Activar para ordenar la columna de manera ascendente",
sSortDescending: "Activar para ordenar la columna de manera descendente"
},
buttons: {
copy: 'Copiar',
Colvis: 'Visibilidad'
}
},
dom: cnf.dom ?? 'Bfrtip',
buttons: [
{
title: cnf.title_report ?? 'UNIBE - REPORTERIA',
messageTop: `${cnf.name_report ?? 'REPORTE'} Fecha: ${d}`,
text: "<i class='fa fa-file-pdf-o'></i> PDF",
className: 'btn_pdf btn btn-outline-danger',
extend: 'pdf',
orientation: cnf.orientation_report ?? 'landscape'
},
{
title: cnf.title_report ?? 'UNIBE - REPORTERIA',
messageTop: `${cnf.name_report ?? 'REPORTE'} Fecha: ${d}`,
text: "<i class='fa fa-file-excel-o'></i> Excel",
className: 'btn_excel btn btn-outline-success',
extend: 'excel',
orientation: cnf.orientation_report ?? 'landscape'
},
{
title: cnf.title_report ?? 'UNIBE - REPORTERIA',
messageTop: `${cnf.name_report ?? 'REPORTE'} Fecha: ${d}`,
text: "<i class='fa fa-print'></i> Imprimir",
className: 'btn_print btn btn-outline-info',
autoPrint: cnf.auto_print,
extend: 'print',
orientation: cnf.orientation_report ?? 'landscape',
customize: function (win) {
$(win.document.body).find('p').css('color', 'black')
}
},
cnf.customButtons ?? undefined
],
responsive: cnf.responsive ?? true
});
$(`${cnf.element}_filter input`).addClass('form-control m-input m-input--solid');
$(`${cnf.element}`).css('width', '100%');
$($.fn.dataTable.tables(true)).DataTable().columns.adjust();
//SI EL PARAMETRO SELECT = TRUE ENTONBCES LAS LINEAS PUEDEN SER CLICKADAS
if (cnf.select ?? true) {
//AÑADE CLASES DE SELECTED Y DESELECTED A LOS ROWS DE TBODY DE UNA TABLA
$(cnf.element).on('dblclick', 'tr', function (e) {
if ($(this).hasClass('selected')) {
$(this).removeClass('selected');
} else {
$(this).addClass('selected');
}
});
}
if (cnf.pdf ?? true) {
$('.btn_pdf').hide();
}
if (cnf.excel ?? true) {
$('.btn_excel').hide();
}
if (cnf.print ?? true) {
$('.btn_print').hide();
}
}
$(document).ready(function(){
StartWarningTimer();
});
// Set timeout variables.
let timoutWarning = 10000; // Display warning in 30 Mins.
let timoutNow = 10000; // Warning has been shown, give the user 1 minute to interact
let warningTimer;
// Start warning timer.
function StartWarningTimer() {
warningTimer = setTimeout("IdleWarning()", timoutWarning);
}
// Reset timers.
function ResetTimeOutTimer() {
window.clearTimeout(warningTimer);
timoutWarning = 10000;
timoutNow = 10000;
StartWarningTimer()
}
//On key press mouse move or click the reset timer cuz user is not idle...
$(window).on('click, keypress', function(){
ResetTimeOutTimer();
});
// Show idle timeout warning dialog.
function IdleWarning() {
Swal.fire({
title: '¡Atención!',
html: 'La sesión se cerrará en 60 segundos',
icon: 'warning',
timer: timoutNow,
timerProgressBar: true,
showCancelButton: true,
showConfirmButton: false,
cancelButtonText: '!Estoy aquí¡',
onClose: () => {
ResetTimeOutTimer();
}
}).then((result) => {
/* Read more about handling dismissals below */
if (result.dismiss === Swal.DismissReason.timer) {
log_out();
}else{
ResetTimeOutTimer();
}
})
}
//auto ejecutar lo que sea despues de un tiempo de inactividad
function resetTimer() {
window.clearTimeout(timeoutId)
startTimer();
}
function setupTimers () {
document.addEventListener("mousemove", resetTimer, false);
document.addEventListener("mousedown", resetTimer, false);
document.addEventListener("keypress", resetTimer, false);
document.addEventListener("touchmove", resetTimer, false);
startTimer();
}
// jQuery isn't actually required for any of this - if you aren't using jQuery just call setupTimers()
$(document).ready(function({
// do some other initialization
setupTimers();
})
function postRequest(model, div, object, callback, loading = true, after_load = true, change = false){
$.ajax({
type: 'POST',
url: '/'+model,
async: true,
data: object,
beforeSend: function () {
if (loading){
if(div !== ''){
$(div).append('<div class="loading_cycle"><img style=" width: 128px; height: 128px; " src="/storage/images/loading.gif"></div>');
}else{
$('body').append('<div class="loading_cycle"><img style=" width: 128px; height: 128px; " src="/storage/images/loading.gif"></div>');
}
}
},success: function (data) {
if (after_load == false){
$('.loading_cycle').remove();
('function' == typeof callback) && callback(data);
$(div).html(data);
} else {
$('.loading_cycle').remove();
$(div).html(data);
if(change == true){
$(div).change();
}
('function' == typeof callback) && callback(data);
}
}
});
}
//para cambiar el color de los elementos al check de un checkbox
function checkme(){
$(":checkbox").on("change", function() {
var that = this;
$(this).parent().find('.alumno_label').css("background-color", function() {
return that.checked ? "#9fffc8" : "";
});
});
}
//SENDREQUEST
function sendRequest(urlFile, comp, arrayData, Callback, not_load = true){
arrayData['_usuario_id'] = localStorage.getItem('usuario_id');
// arrayData['usuario_id'] = localStorage.getItem('usuario_id');
arrayData['db'] = localStorage.getItem('db');
arrayData['_usuario_id_modif'] = localStorage.getItem('usuario_id');
arrayData['idioma_id'] = localStorage.getItem('idioma');
arrayData['institucion_id'] = localStorage.getItem('institucion_id');
$.ajax({
type: 'POST',
url: '/' + urlFile,
data: arrayData,
beforeSend: function (xhr) {
if (not_load)
$(comp).html('<div class="text-center"><i class="fa fa-spinner fa-pulse fa-3x fa-fw"></i><span class="sr-only">Loading...</span></div>');
},
success: function (data, textStatus, jqXHR) {
// data = data.trim();
try{
data = data.trim();
} catch {
data = data;
}
('function' == typeof Callback) && Callback(data);
if (!arrayData.mostrar)
$(comp).html(data);
}
});
}
//to avoid people uploading the incorrect file
var file = document.getElementById('someId');
file.onchange = function(e) {
var ext = this.value.match(/\.([^\.]+)$/)[1];
switch (ext) {
case 'jpg':
case 'bmp':
case 'png':
case 'tif':
alert('Allowed');
break;
default:
alert('Not allowed');
this.value = '';
}
};
//WINDOWS OPEN WITH CONFIGURATION AND NEAT
var preview = window.open("", '[PAGES NAME]', "height=XXX,width=XXX,modal=yes,alwaysRaised=yes toolbar=0,location=0,menubar=0");
//TODO ADVANCE DATA TABLE ROW GROUPING
https://datatables.net/examples/advanced_init/row_grouping.html
//DATATABLE LANG
$(document).ready(function() {
$('#example').DataTable( {
"language": {
"url": "//cdn.datatables.net/plug-ins/1.10.19/i18n/Spanish.json"
}
} );
} );
//GENERA LINKS A MP4 Y OTROS DE UN DIRECTORIO EN ESPECIAL
var dir = "/videos";
var fileextension = ".mp4";
$.ajax({
//This will retrieve the contents of the folder if the folder is configured as 'browsable'
url: dir,
success: function (data) {
// List all mp4 file names in the page
$(data).find("a:contains(" + fileextension + ")").each(function () {
var filename = this.href.replace(window.location.host, "").replace("http:///", "");
$("body").append($("<img src=" + dir + filename + "></img>"));
});
}
});
//TODO IAMGES CHECKER
$('.alu_pic').each(function(){
$(this).on('error', function(e) {
$(this).attr('src', 'no-photo.png');
});
});
//OFF SCREEN ACTION HANDLER
$(document).off('click', '.change_fecha').on('click', '.change_fecha', function (e) {
//DO A BARREL ROLL
});
//loads a preview of the image being load...
<input type="file" accept="image/*" onchange="loadFile(event)">
<img id="output"/>
<script>
var loadFile = function(event) {
var output = document.getElementById('output');
output.src = URL.createObjectURL(event.target.files[0]);
};
</script>
//select on select
$("#txtAutor_lib").empty().append("<option value='"+autor_id+"'>"+autor+"</option>").val(autor_id).trigger('change');
//reloads dtables...
$('#example').DataTable().ajax.reload()
//RESETS ALL INPUTS WITHIN A FORM
function formReset(div){
$(div).trigger("reset");
}
//RESET SELECT 2 AFTER LOADING USERS VALUES
$(div).select2().trigger('change');
//MODEL STACKS (MODAL UPON MODALS)
$(document).on('show.bs.modal', '.modal', function () {
let zIndex = 1040 + (10 * $('.modal:visible').length);
$(this).css('z-index', zIndex);
setTimeout(function() {
$('.modal-backdrop').not('.modal-stack').css('z-index', zIndex - 1).addClass('modal-stack');
}, 0);
});
//sweet alert function for messages
let msg={title:'Error',message:'La cantidad debe ser menor que la cantidad disponible',icon:'error',error:1};
pop_ups((JSON.stringify(msg)));
return;
function pop_ups(data, btn_confirm = true, btn_cancel = false, confirm_txt = 'Entendido', cancel_txt = 'Volver', callback){
data = JSON.parse(data);
let popups = Swal.mixin({
customClass: {
confirmButton: 'btn blue-gradient',
cancelButton: 'btn peach-gradient'
},
buttonsStyling: false
});
popups.fire({
icon: data.icon,
title: data.title,
text: data.message,
showClass: {
popup: 'animated fadeInDown faster'
},
hideClass: {
popup: 'animated fadeOutUp faster'
},
showConfirmButton: btn_confirm,
showCancelButton: btn_cancel,
confirmButtonText: "<i class='fa fa-thumbs-up'></i> " + confirm_txt,
cancelButtonText: "<i class='fa fa-reply-all'></i> " + cancel_txt
}).then((result) => {
//CALLBACK FUNCTIONS
('function' == typeof callback) && callback(data);
});
}
//clear ajax select2
$('#mySelect2').val(null).trigger('change');
$('#mySelect2').trigger('change'); // Notify any JS components that the value changed
//add multiple options ajax select2
$('#mySelect2').val(['1', '2']);
$('#mySelect2').trigger('change'); // Notify any JS components that the value changed
function FormatDate(date){
date = new Date(date)
let day = date.getDay() < 10 ? '0'+date.getDay() : date.getDay();
let month = date.getMonth() < 10 ? '0'+date.getMonth() : date.getMonth();
let year = date.getFullYear();
return `${year}-${month}-${day}`;
}
//DO STUFF DURING PARTIAL POSTBACKS EXTENDS VB AND ASP
function pageLoad(sender, args) {
$(".dropdownspecificclass").select2();
}
function FadeInShow(Element, FadeTime){
$(Element).fadeOut(
()=> setTimeout(
()=> $(Element).hide(), FadeTime
)
);
}
function FadeOutHide(Element, FadeTime){
$(Element).fadeOut(
()=> setTimeout(
()=> $(Element).hide(), FadeTime
)
);
}
//PS WAVES
$(document).ready(function () {
let waves = new Waves('#holder', {
resize: true,
rotation: 45,
waves: 3,
width: 100,
hue: [180],
amplitude: 2,
background: false,
preload: false,
speed: [0.002, 0.004],
debug: false,
fps: false,
});
waves.animate();
LoadDatatable('#CertificatesTable');
});
(function () {
var pi = Math.PI;
var pi2 = 2 * Math.PI;
this.Waves = function (holder, options) {
var Waves = this;
Waves.options = extend(options || {}, {
resize: false,
rotation: 45,
waves: 5,
width: 100,
hue: [11, 14],
amplitude: 0.5,
background: true,
preload: true,
speed: [0.004, 0.008],
debug: false,
fps: false,
});
Waves.waves = [];
Waves.holder = document.querySelector(holder);
Waves.canvas = document.createElement('canvas');
Waves.ctx = Waves.canvas.getContext('2d');
Waves.holder.appendChild(Waves.canvas);
Waves.hue = Waves.options.hue[0];
Waves.hueFw = true;
Waves.stats = new Stats();
Waves.resize();
Waves.init(Waves.options.preload);
if (Waves.options.resize)
window.addEventListener('resize', function () {
Waves.resize();
}, false);
};
Waves.prototype.init = function (preload) {
var Waves = this;
var options = Waves.options;
for (var i = 0; i < options.waves; i++)
Waves.waves[i] = new Wave(Waves);
if (preload) Waves.preload();
};
Waves.prototype.preload = function () {
var Waves = this;
var options = Waves.options;
for (var i = 0; i < options.waves; i++) {
Waves.updateColor();
for (var j = 0; j < options.width; j++) {
Waves.waves[i].update();
}
}
};
Waves.prototype.render = function () {
var Waves = this;
var ctx = Waves.ctx;
var options = Waves.options;
Waves.updateColor();
Waves.clear();
if (Waves.options.debug) {
ctx.beginPath();
ctx.strokeStyle = '#f00';
ctx.arc(Waves.centerX, Waves.centerY, Waves.radius, 0, pi2);
ctx.stroke();
}
if (Waves.options.background) {
Waves.background();
}
each(Waves.waves, function (wave, i) {
wave.update();
wave.draw();
});
};
Waves.prototype.animate = function () {
var Waves = this;
Waves.render();
if (Waves.options.fps) {
Waves.stats.log();
Waves.ctx.font = '12px Arial';
Waves.ctx.fillStyle = '#fff';
Waves.ctx.fillText(Waves.stats.fps() + ' FPS', 10, 22);
}
window.requestAnimationFrame(Waves.animate.bind(Waves));
};
Waves.prototype.clear = function () {
var Waves = this;
Waves.ctx.clearRect(0, 0, Waves.width, Waves.height);
};
Waves.prototype.background = function () {
var Waves = this;
var ctx = Waves.ctx;
var gradient = Waves.ctx.createLinearGradient(0, 0, 0, Waves.height);
gradient.addColorStop(0, '#000');
gradient.addColorStop(1, Waves.color);
ctx.fillStyle = gradient;
ctx.fillRect(0, 0, Waves.width, Waves.height);
};
Waves.prototype.resize = function () {
var Waves = this;
var width = Waves.holder.offsetWidth;
var height = Waves.holder.offsetHeight;
Waves.scale = window.devicePixelRatio || 1;
Waves.width = width * Waves.scale;
Waves.height = height * Waves.scale;
Waves.canvas.width = Waves.width;
Waves.canvas.height = Waves.height;
Waves.canvas.style.width = width + 'px';
Waves.canvas.style.height = height + 'px';
Waves.radius = Math.sqrt(Math.pow(Waves.width, 2) + Math.pow(Waves.height, 2)) / 2;
Waves.centerX = Waves.width / 2;
Waves.centerY = Waves.height / 2;
//Waves.radius /= 2; // REMOVE FOR FULLSREEN
};
Waves.prototype.updateColor = function () {
var Waves = this;
//COMETADO PARA QUE SOLO TIRE EL COLOR BLANCO
//Waves.hue += (Waves.hueFw) ? 0.01 : -0.01;
//if (Waves.hue > Waves.options.hue[1] && Waves.hueFw) {
// Waves.hue = Waves.options.hue[1];
// Waves.Waves = false;
//} else if (Waves.hue < Waves.options.hue[0] && !Waves.hueFw) {
// Waves.hue = Waves.options.hue[0];
// Waves.Waves = true;
//}
//var a = Math.floor(127 * Math.sin(0.3 * Waves.hue + 0) + 128);
//var b = Math.floor(127 * Math.sin(0.3 * Waves.hue + 2) + 128);
//var c = Math.floor(127 * Math.sin(0.3 * Waves.hue + 4) + 128);
//Waves.color = 'rgba(' + a + ',' + b + ',' + c + ', 0.1)';
Waves.color = 'rgba(255, 255, 255, 0.1)';
};
function Wave(Waves) {
var Wave = this;
var speed = Waves.options.speed;
Wave.Waves = Waves;
Wave.Lines = [];
Wave.angle = [
rnd(pi2),
rnd(pi2),
rnd(pi2),
rnd(pi2)
];
Wave.speed = [
rnd(speed[0], speed[1]) * rnd_sign(),
rnd(speed[0], speed[1]) * rnd_sign(),
rnd(speed[0], speed[1]) * rnd_sign(),
rnd(speed[0], speed[1]) * rnd_sign(),
];
return Wave;
}
Wave.prototype.update = function () {
var Wave = this;
var Lines = Wave.Lines;
var color = Wave.Waves.color;
Lines.push(new Line(Wave, color));
if (Lines.length > Wave.Waves.options.width) {
Lines.shift();
}
};
Wave.prototype.draw = function () {
var Wave = this;
var Waves = Wave.Waves;
var ctx = Waves.ctx;
var radius = Waves.radius;
var radius3 = radius / 3;
var x = Waves.centerX;
var y = Waves.centerY;
var rotation = dtr(Waves.options.rotation);
var amplitude = Waves.options.amplitude;
var debug = Waves.options.debug;
var Lines = Wave.Lines;
each(Lines, function (line, i) {
if (debug && i > 0) return;
var angle = line.angle;
var x1 = x - radius * Math.cos(angle[0] * amplitude + rotation);
var y1 = y - radius * Math.sin(angle[0] * amplitude + rotation);
var x2 = x + radius * Math.cos(angle[3] * amplitude + rotation);
var y2 = y + radius * Math.sin(angle[3] * amplitude + rotation);
var cpx1 = x - radius3 * Math.cos(angle[1] * amplitude * 2);
var cpy1 = y - radius3 * Math.sin(angle[1] * amplitude * 2);
var cpx2 = x + radius3 * Math.cos(angle[2] * amplitude * 2);
var cpy2 = y + radius3 * Math.sin(angle[2] * amplitude * 2);
ctx.strokeStyle = (debug) ? '#fff' : line.color;
ctx.beginPath();
ctx.moveTo(x1, y1);
ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2);
ctx.stroke();
if (debug) {
ctx.strokeStyle = '#fff';
ctx.globalAlpha = 0.3;
ctx.beginPath();
ctx.moveTo(x1, y1);
ctx.lineTo(cpx1, cpy1);
ctx.stroke();
ctx.beginPath();
ctx.moveTo(x2, y2);
ctx.lineTo(cpx2, cpy2);
ctx.stroke();
ctx.globalAlpha = 1;
}
});
};
function Line(Wave, color) {
var Line = this;
var angle = Wave.angle;
var speed = Wave.speed;
Line.angle = [
Math.sin(angle[0] += speed[0]),
Math.sin(angle[1] += speed[1]),
Math.sin(angle[2] += speed[2]),
Math.sin(angle[3] += speed[3])
];
Line.color = color;
}
function Stats() {
this.data = [];
}
Stats.prototype.time = function () {
return (performance || Date)
.now();
};
Stats.prototype.log = function () {
if (!this.last) {
this.last = this.time();
return 0;
}
this.new = this.time();
this.delta = this.new - this.last;
this.last = this.new;
this.data.push(this.delta);
if (this.data.length > 10)
this.data.shift();
};
Stats.prototype.fps = function () {
var fps = 0;
each(this.data, function (data, i) {
fps += data;
});
return Math.round(1000 / (fps / this.data.length));
};
function each(items, callback) {
for (var i = 0; i < items.length; i++) {
callback(items[i], i);
}
}
function extend(options, defaults) {
for (var key in options)
if (defaults.hasOwnProperty(key))
defaults[key] = options[key];
return defaults;
}
function dtr(deg) {
return deg * pi / 180;
}
function rtd(rad) {
return rad * 180 / pi;
}
function diagonal_angle(w, h) {
var a = Math.atan2(h, w) * 1.27325;
return a;
}
function rnd(a, b) {
if (arguments.length == 1)
return Math.random() * a;
return a + Math.random() * (b - a);
}
function rnd_sign() {
return (Math.random() > 0.5) ? 1 : -1;
}
})();
function getQueryParam(name, url = window.location.href) {
name = name.replace(/[\[\]]/g, '\\$&');
let regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, ' '));
}
//MULTIVIEW IMPLEMENTATION -- TO BE LOCATED IN GLOBAL FILE
const ViewIndexesArray = {
push: function push(element) {
[].push.call(this, element)
}
};
$('view').each(function (index) {
let ViewIndexesArrayItem = $(this).attr('data-index');
ViewIndexesArray.push(ViewIndexesArrayItem, index);
});
localStorage.setItem('VIndexes', JSON.stringify(ViewIndexesArray));
function Multiview(Index, callback) {
//CHECKS IF THE INDEX IS A STRING OR AN INTEGER
if(typeof Index === 'string'){
$('multiview view').css('display', 'none');
$(`view[data-index='${Index}']`).css('display', 'block');
}else{
let Views = JSON.parse(localStorage['VIndexes']);
$('multiview view').css('display', 'none');
$(`view[data-index='${Views[Index]}']`).css('display', 'block');
('function' == typeof callback);
}
('function' == typeof callback);
}
$('#IdentificacionTypeEC').change(function (e) {
let TypeVal = parseInt($(this).val()),
TypeControl = $(this)
if (TypeVal == 0) {
TypeControl.css('border-color', 'red');
} else {
TypeControl.css('border-color', '#cecece');
}
$('#IdentificacionNoEC').change();
});
function IsValidIdField(Identification, Type) {
//IDENTIFICATION DASH REPLACE
let IdentificacionValue = Identification.val().replaceAll("-", ""),
IdentificacionControl = Identification,
TypeVal = parseInt(Type.val()),
TypeControl = Type;
//REVISA SI ESTA VACIA INDEFINIDA O ES 0
if (IdentificacionValue == '' || IdentificacionValue == 'undefined' || IdentificacionValue == 0) {
IdentificacionControl.css('border-color', 'red');
return false;
} else {
IdentificacionControl.css('border-color', 'green');
}
if (TypeVal == 0) {
TypeControl.css('border-color', 'red');
return false;
} else {
TypeControl.css('border-color', '#cecece');
}
//REVISA EL LARGO DE LA IDENTIFICACION
switch (TypeVal) {
case 1: //CEDULA
if (IdentificacionValue.length != 11) {
IdentificacionControl.css('border-color', 'red');
return false;
}
break;
case 6: //NUMERO EVENTO-ACTA
if (IdentificacionValue.length != 19) {
IdentificacionControl.css('border-color', 'red');
return false;
}
}
//CHECK DE EXPRESION REGULAR PARA ACTA Y CEDULA
if (CheckIdentificacion(IdentificacionValue, TypeVal)) {
IdentificacionControl.css('border-color', 'green');
} else {
IdentificacionControl.css('border-color', 'red');
return false;
}
return true;
}
function formatTable(cnf) {
/*
debug: true, //debugging options switch
element: '.table_rols_modules', //object en DOM el cual será datatable
empty_table: 'NO HAY DATOS',
scroller: true, //scrollbard?
fixedheader: true, //Cabecera fija
title_report: 'Report Title',
auto_print: true,
emptyText: 'NO HAY DATOS',
order: [[0, 'asc']], //columna por la cual se ordena
column_groupby: 0, //indice de la columna de grupo
empty_text: 'NO HAY DATOS', //texto para cuando la tabla está vacia
name_report: 'CITASMED', //nombre del reporte
filterdrops: {visible: false, element: ''}, //filtrado de combo por columna (en desarrollo)
scrolly: '420px',
scrollx: '100%',
scrollCollapse: true,
paging: true,
page_length: 10,
filter: true,
info: true,
sort: true,
group: true, //agrupa por columnas
group_span: 4, //tamaño de la columna en celdas de manera horizontal
groupcolumn: 0, //
columnGroup: 0,
orientation_report: '',
groupSpan: 5,
columnDefs: [{ visible: false, targets: 0 }],
callback: () => {
},
responsive: true,
*/
if (cnf.isEmpty) {
alert('Configuration Object NOT FOUND');
}
if(cnf.debug ?? false){
console.table(cnf);
}
let months = ["ENE", "FEB", "MAR", "ABR", "MAY", "JUN", "JUL", "AGO", "SEP", "OCT", "NOV", "DIC"],
currentDate = new Date(),
day = currentDate.getDate(),
month = months[currentDate.getMonth()],
year = currentDate.getFullYear(),
d = day + "-" + month + "-" + year,
groupColumn = cnf.group ?? false,
JqueryTable = $(`${cnf.element}`).DataTable({
scrollY: `${cnf.scrolly ?? '420px'}`,
sScrollX: `${cnf.scrollx ?? '100%'}`,
scrollCollapse: cnf.scrollCollapse ?? true,
scroller: cnf.scroller ?? true,
paging: cnf.paging ?? true,
pageLength: cnf.page_length ?? 10,
filter: cnf.filter ?? true,
info: cnf.info ?? true,
sort: cnf.sort ?? true,
FixedHeader: cnf.fixed_header ?? true,
order: cnf.order ?? [[ 0, "desc" ]],
columnDefs: cnf.columnDefs ?? '',
drawCallback: function (settings) {
if (cnf.group) {
let api = this.api(),
rows = api.rows({page: 'current'}).nodes(),
last = null;
api.column(cnf.groupcolumn, {page: 'current'}).data().each(function (group, i) {
if (last !== group) {
$(rows).eq(i).before(
`<tr class="group bg-primary text-white"><td colspan="${cnf.group_span ?? 5}">${group}</td></tr>`
);
last = group;
}
});
}
('function' == typeof cnf.callback) && cnf.callback();
},
language: {
emptyTable: cnf.empty_table ?? `NO HAY DATOS`,
Processing: '<i class="fa fa- spinner fa- spin fa - 3x fa - fw"></i><span class="sr - only">Cargando...</span>',
sZeroRecords: "No se encontraron resultados",
sInfo: "Mostrando registros del _START_ al _END_ de un total de _TOTAL_ registros",
sInfoEmpty: "Mostrando registros del 0 al 0 de un total de 0 registros",
sInfoFiltered: "(filtrado de un total de _MAX_ registros)",
sInfoPostFix: "",
sSearch: "",
searchPlaceholder: "🔎 Buscar...",
sUrl: "",
sInfoThousands: ",",
sLoadingRecords: "Cargando...",
oPaginate: {
sFirst: "Primero",
sLast: "Último",
sNext: "Siguiente",
sPrevious: "Anterior"
},
oAria: {
sSortAscending: "Activar para ordenar la columna de manera ascendente",
sSortDescending: "Activar para ordenar la columna de manera descendente"
},
buttons: {
copy: 'Copiar',
Colvis: 'Visibilidad'
}
},
dom: cnf.dom ?? 'Bfrtip',
buttons: [
{
title: cnf.title_report ?? 'CITASMED - REPORTERIA',
messageTop: `${cnf.name_report ?? 'REPORTE'} Fecha: ${d}`,
text: "<i class='fa fa-file-pdf-o'></i> PDF",
className: 'btn_pdf',
extend: 'pdf',
orientation: cnf.orientation_report ?? 'landscape'
},
{
title: cnf.title_report ?? 'CITASMED - REPORTERIA',
messageTop: `${cnf.name_report ?? 'REPORTE'} Fecha: ${d}`,
text: "<i class='fa fa-file-excel-o'></i> Excel",
className: 'btn_excel',
extend: 'excel',
orientation: cnf.orientation_report ?? 'landscape'
},
{
title: cnf.title_report ?? 'CITASMED - REPORTERIA',
messageTop: `${cnf.name_report ?? 'REPORTE'} Fecha: ${d}`,
text: "<i class='fa fa-print'></i> Imprimir",
className: 'btn_print',
autoPrint: cnf.auto_print,
extend: 'print',
orientation: cnf.orientation_report ?? 'landscape',
customize: function (win) {
$(win.document.body).find('p').css('color', 'black')
}
},
cnf.customButtons ?? undefined
],
responsive: cnf.responsive ?? true
});
$(`${cnf.element}_filter input`).addClass('form-control m-input m-input--solid');
$(`${cnf.element}`).css('width', '100%');
$($.fn.dataTable.tables(true)).DataTable().columns.adjust();
if (cnf.pdf ?? true) {
$('.btn_pdf').hide();
}
if (cnf.excel ?? true) {
$('.btn_excel').hide();
}
if (cnf.print ?? true) {
$('.btn_print').hide();
}
}
function removeDiacritics (str) {
var defaultDiacriticsRemovalMap = [
{'base':'A', 'letters':/[\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F]/g},
{'base':'AA','letters':/[\uA732]/g},
{'base':'AE','letters':/[\u00C6\u01FC\u01E2]/g},
{'base':'AO','letters':/[\uA734]/g},
{'base':'AU','letters':/[\uA736]/g},
{'base':'AV','letters':/[\uA738\uA73A]/g},
{'base':'AY','letters':/[\uA73C]/g},
{'base':'B', 'letters':/[\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181]/g},
{'base':'C', 'letters':/[\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E]/g},
{'base':'D', 'letters':/[\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779]/g},
{'base':'DZ','letters':/[\u01F1\u01C4]/g},
{'base':'Dz','letters':/[\u01F2\u01C5]/g},
{'base':'E', 'letters':/[\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E]/g},
{'base':'F', 'letters':/[\u0046\u24BB\uFF26\u1E1E\u0191\uA77B]/g},
{'base':'G', 'letters':/[\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E]/g},
{'base':'H', 'letters':/[\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D]/g},
{'base':'I', 'letters':/[\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197]/g},
{'base':'J', 'letters':/[\u004A\u24BF\uFF2A\u0134\u0248]/g},
{'base':'K', 'letters':/[\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2]/g},
{'base':'L', 'letters':/[\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780]/g},
{'base':'LJ','letters':/[\u01C7]/g},
{'base':'Lj','letters':/[\u01C8]/g},
{'base':'M', 'letters':/[\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C]/g},
{'base':'N', 'letters':/[\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4]/g},
{'base':'NJ','letters':/[\u01CA]/g},
{'base':'Nj','letters':/[\u01CB]/g},
{'base':'O', 'letters':/[\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C]/g},
{'base':'OI','letters':/[\u01A2]/g},
{'base':'OO','letters':/[\uA74E]/g},
{'base':'OU','letters':/[\u0222]/g},
{'base':'P', 'letters':/[\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754]/g},
{'base':'Q', 'letters':/[\u0051\u24C6\uFF31\uA756\uA758\u024A]/g},
{'base':'R', 'letters':/[\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782]/g},
{'base':'S', 'letters':/[\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784]/g},
{'base':'T', 'letters':/[\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786]/g},
{'base':'TZ','letters':/[\uA728]/g},
{'base':'U', 'letters':/[\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244]/g},
{'base':'V', 'letters':/[\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245]/g},
{'base':'VY','letters':/[\uA760]/g},
{'base':'W', 'letters':/[\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72]/g},
{'base':'X', 'letters':/[\u0058\u24CD\uFF38\u1E8A\u1E8C]/g},
{'base':'Y', 'letters':/[\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE]/g},
{'base':'Z', 'letters':/[\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762]/g},
{'base':'a', 'letters':/[\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250]/g},
{'base':'aa','letters':/[\uA733]/g},
{'base':'ae','letters':/[\u00E6\u01FD\u01E3]/g},
{'base':'ao','letters':/[\uA735]/g},
{'base':'au','letters':/[\uA737]/g},
{'base':'av','letters':/[\uA739\uA73B]/g},
{'base':'ay','letters':/[\uA73D]/g},
{'base':'b', 'letters':/[\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253]/g},
{'base':'c', 'letters':/[\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184]/g},
{'base':'d', 'letters':/[\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A]/g},
{'base':'dz','letters':/[\u01F3\u01C6]/g},
{'base':'e', 'letters':/[\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD]/g},
{'base':'f', 'letters':/[\u0066\u24D5\uFF46\u1E1F\u0192\uA77C]/g},
{'base':'g', 'letters':/[\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F]/g},
{'base':'h', 'letters':/[\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265]/g},
{'base':'hv','letters':/[\u0195]/g},
{'base':'i', 'letters':/[\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131]/g},
{'base':'j', 'letters':/[\u006A\u24D9\uFF4A\u0135\u01F0\u0249]/g},
{'base':'k', 'letters':/[\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3]/g},
{'base':'l', 'letters':/[\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747]/g},
{'base':'lj','letters':/[\u01C9]/g},
{'base':'m', 'letters':/[\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F]/g},
{'base':'n', 'letters':/[\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5]/g},
{'base':'nj','letters':/[\u01CC]/g},
{'base':'o', 'letters':/[\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275]/g},
{'base':'oi','letters':/[\u01A3]/g},
{'base':'ou','letters':/[\u0223]/g},
{'base':'oo','letters':/[\uA74F]/g},
{'base':'p','letters':/[\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755]/g},
{'base':'q','letters':/[\u0071\u24E0\uFF51\u024B\uA757\uA759]/g},
{'base':'r','letters':/[\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783]/g},
{'base':'s','letters':/[\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B]/g},
{'base':'t','letters':/[\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787]/g},
{'base':'tz','letters':/[\uA729]/g},
{'base':'u','letters':/[\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289]/g},
{'base':'v','letters':/[\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C]/g},
{'base':'vy','letters':/[\uA761]/g},
{'base':'w','letters':/[\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73]/g},
{'base':'x','letters':/[\u0078\u24E7\uFF58\u1E8B\u1E8D]/g},
{'base':'y','letters':/[\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF]/g},
{'base':'z','letters':/[\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763]/g}
];
for(var i=0; i<defaultDiacriticsRemovalMap.length; i++) {
str = str.replace(defaultDiacriticsRemovalMap[i].letters, defaultDiacriticsRemovalMap[i].base);
}
return str;
}
function formatTable(cnf) {
/*
debug: true, //debugging options switch
element: '.table_rols_modules', //object en DOM el cual será datatable
empty_table: 'NO HAY DATOS',
scroller: true, //scrollbard?
fixedheader: true, //Cabecera fija
title_report: 'Report Title',
auto_print: true,
emptyText: 'NO HAY DATOS',
order: [[0, 'asc']], //columna por la cual se ordena
column_groupby: 0, //indice de la columna de grupo
empty_text: 'NO HAY DATOS', //texto para cuando la tabla está vacia
name_report: 'CITASMED', //nombre del reporte
filterdrops: {visible: false, element: ''}, //filtrado de combo por columna (en desarrollo)
scrolly: 'auto', // limita el scroll a los pixeles desseados Y [420px]
scrollx: '100%', // limita el scroll a los pixeles desseados X [100%]
scrollCollapse: true, // elimina la paginacion
paging: true,
page_length: 10,
filter: true,
info: true,
sort: true,
group: true, //agrupa por columnas
group_span: 4, //tamaño de la columna en celdas de manera horizontal
groupcolumn: 0, //
columnGroup: 0,
orientation_report: '',
groupSpan: 5,
columnDefs: [{ visible: false, targets: 0 }],
callback: () => {
},
responsive: true,
*/
if (cnf.isEmpty) {
alert('Configuration Object NOT FOUND');
}
if(cnf.debug ?? false){
console.table(cnf);
}
let months = ["ENE", "FEB", "MAR", "ABR", "MAY", "JUN", "JUL", "AGO", "SEP", "OCT", "NOV", "DIC"],
currentDate = new Date(),
day = currentDate.getDate(),
month = months[currentDate.getMonth()],
year = currentDate.getFullYear(),
d = day + "-" + month + "-" + year,
groupColumn = cnf.group ?? false,
JqueryTable = $(`${cnf.element}`).DataTable({
scrollY: `${cnf.scrolly ?? 'auto'}`,
sScrollX: `${cnf.scrollx ?? '100%'}`,
scrollCollapse: cnf.scrollCollapse ?? false,
scroller: cnf.scroller ?? false,
paging: cnf.paging ?? true,
pageLength: cnf.page_length ?? 10,
filter: cnf.filter ?? true,
info: cnf.info ?? true,
sort: cnf.sort ?? true,
FixedHeader: cnf.fixed_header ?? true,
order: cnf.order ?? [[ 0, "desc" ]],
columnDefs: cnf.columnDefs ?? '',
drawCallback: function (settings) {
if (cnf.group) {
let api = this.api(),
rows = api.rows({page: 'current'}).nodes(),
last = null;
api.column(cnf.groupcolumn, {page: 'current'}).data().each(function (group, i) {
if (last !== group) {
$(rows).eq(i).before(
`<tr class="group bg-primary text-white"><td colspan="${cnf.group_span ?? 5}">${group}</td></tr>`
);
last = group;
}
});
}
('function' == typeof cnf.callback) && cnf.callback();
},
language: {
emptyTable: cnf.empty_table ?? `NO HAY DATOS`,
Processing: '<i class="fa fa- spinner fa- spin fa - 3x fa - fw"></i><span class="sr - only">Cargando...</span>',
sZeroRecords: "No se encontraron resultados",
sInfo: "Mostrando registros del _START_ al _END_ de un total de _TOTAL_ registros",
sInfoEmpty: "Mostrando registros del 0 al 0 de un total de 0 registros",
sInfoFiltered: "(filtrado de un total de _MAX_ registros)",
sInfoPostFix: "",
sSearch: "",
searchPlaceholder: "🔎 Buscar...",
sUrl: "",
sInfoThousands: ",",
sLoadingRecords: "Cargando...",
oPaginate: {
sFirst: "Primero",
sLast: "Último",
sNext: "Siguiente",
sPrevious: "Anterior"
},
oAria: {
sSortAscending: "Activar para ordenar la columna de manera ascendente",
sSortDescending: "Activar para ordenar la columna de manera descendente"
},
buttons: {
copy: 'Copiar',
Colvis: 'Visibilidad'
}
},
dom: cnf.dom ?? 'Bfrtip',
buttons: [
{
extend: 'pageLength',
text: 'Mostrar',
className: 'btn-outline-info',
},
{
extend: 'copy',
text: 'Copiar',
className: 'btn-info btn_copy',
},
{
extend: 'colvis',
text: 'Columnas',
className: 'btn-info',
},
{
title: cnf.title_report ?? 'CITASMED - REPORTERIA',
messageTop: `${cnf.name_report ?? 'REPORTE'} Fecha: ${d}`,
text: "<i class='fa fa-file-pdf-o'></i> PDF",
className: 'btn_pdf',
extend: 'pdf',
orientation: cnf.orientation_report ?? 'landscape'
},
{
title: cnf.title_report ?? 'CITASMED - REPORTERIA',
messageTop: `${cnf.name_report ?? 'REPORTE'} Fecha: ${d}`,
text: "<i class='fa fa-file-excel-o'></i> Excel",
className: 'btn_excel btn-info',
extend: 'excel',
orientation: cnf.orientation_report ?? 'landscape'
},
{
title: cnf.title_report ?? 'CITASMED - REPORTERIA',
messageTop: `${cnf.name_report ?? 'REPORTE'} Fecha: ${d}`,
text: "<i class='fa fa-print'></i> Imprimir",
className: 'btn_print',
autoPrint: cnf.auto_print,
extend: 'print',
orientation: cnf.orientation_report ?? 'landscape',
customize: function (win) {
$(win.document.body).find('p').css('color', 'black')
}
},
cnf.customButtons ?? undefined
],
responsive: cnf.responsive ?? true
});
$(`${cnf.element}_filter input`).addClass('form-control m-input m-input--solid');
$(`${cnf.element}`).css('width', '100%');
$($.fn.dataTable.tables(true)).DataTable().columns.adjust();
//SI EL PARAMETRO SELECT = TRUE ENTONBCES LAS LINEAS PUEDEN SER CLICKADAS
if (cnf.select ?? true) {
//AÑADE CLASES DE SELECTED Y DESELECTED A LOS ROWS DE TBODY DE UNA TABLA
$(cnf.element).on('dblclick', 'tr', function (e) {
if ($(this).hasClass('selected')) {
$(this).removeClass('selected');
} else {
$(this).addClass('selected');
}
});
}
//Prevent selection with one clic event, but allow two clics event.
$(cnf.element).on('click', 'tr', function (e) {
e.stopPropagation();
});
if (cnf.pdf ?? true) {
$('.btn_pdf').hide();
}
if (cnf.excel ?? false) {
$('.btn_excel').hide();
}
if (cnf.print ?? true) {
$('.btn_print').hide();
}
if(cnf.copy ?? false){
$('.btn_copy').hide();
}
}
function FormatTableServerSide(cnf) {
/*
EJEMPLO DE ARREGLOS DE LAS OBJETOS/COLUMNAS QUE VENDRAN DEL MODELO
[
{ "data": "Id" },
{ "data": "NombreCompleto" },
{ "data": "Image" },
{ "data": "Identification" },
{ "data": "Email" },
{ "data": "Phone" },
{ "data": "Cellphone" },
{ "data": "Status" },
{ "data": "Buttons" }
]
debug: true, //debugging options switch
element: '.table_rols_modules', //object en DOM el cual será datatable
empty_table: 'NO HAY DATOS',
scroller: true, //scrollbard?
fixedheader: true, //Cabecera fija
title_report: 'Report Title',
auto_print: true,
emptyText: 'NO HAY DATOS',
order: [[0, 'asc']], //columna por la cual se ordena
column_groupby: 0, //indice de la columna de grupo
empty_text: 'NO HAY DATOS', //texto para cuando la tabla está vacia
name_report: 'CITASMED', //nombre del reporte
filterdrops: {visible: false, element: ''}, //filtrado de combo por columna (en desarrollo)
scrolly: 'auto', // limita el scroll a los pixeles desseados Y [420px]
scrollx: '100%', // limita el scroll a los pixeles desseados X [100%]
scrollCollapse: true, // elimina la paginacion
paging: true,
page_length: 10,
filter: true,
info: true,
sort: true,
group: true, //agrupa por columnas
group_span: 4, //tamaño de la columna en celdas de manera horizontal
groupcolumn: 0, //
columnGroup: 0,
orientation_report: '',
groupSpan: 5,
columnDefs: [{ visible: false, targets: 0 }],
callback: () => {
},
responsive: true,
*/
if (cnf.isEmpty) {
alert('Configuration Object NOT FOUND');
}
if (!('element' in cnf)) {
console.log('debe de configurar un elemento');
return;
}
if (!('columns' in cnf)) {
console.log('debe de configurar las columnas que desea renderizar');
return;
}
if (cnf.debug ?? false) {
console.table(cnf);
}
if(('destroy' in cnf) && cnf.destroy){
if (!$.fn.DataTable.isDataTable(cnf.element) && cnf.destroy) {
$(cnf.element).DataTable().destroy();
}
}
let months = ["ENE", "FEB", "MAR", "ABR", "MAY", "JUN", "JUL", "AGO", "SEP", "OCT", "NOV", "DIC"],
currentDate = new Date(),
day = currentDate.getDate(),
month = months[currentDate.getMonth()],
year = currentDate.getFullYear(),
d = day + "-" + month + "-" + year,
groupColumn = cnf.group ?? false,
Table = $(cnf.element).DataTable({
scrollY: `${cnf.scrolly ?? 'auto'}`,
sScrollX: `${cnf.scrollx ?? '100%'}`,
scrollCollapse: cnf.scrollCollapse ?? false,
scroller: cnf.scroller ?? false,
paging: cnf.paging ?? true,
pageLength: cnf.page_length ?? 10,
filter: cnf.filter ?? true,
info: cnf.info ?? true,
sort: cnf.sort ?? true,
FixedHeader: cnf.fixed_header ?? true,
order: cnf.order ?? [[0, "desc"]],
columnDefs: cnf.columnDefs ?? '',
drawCallback: function (settings) {
if (cnf.group) {
let api = this.api(),
rows = api.rows({page: 'current'}).nodes(),
last = null;
api.column(cnf.groupcolumn, {page: 'current'}).data().each(function (group, i) {
if (last !== group) {
$(rows).eq(i).before(
`<tr class="group bg-primary text-white"><td colspan="${cnf.group_span ?? 5}">${group}</td></tr>`
);
last = group;
}
});
}
('function' == typeof cnf.callback) && cnf.callback();
},
language: {
emptyTable: cnf.empty_table ?? `NO HAY DATOS`,
Processing: '<i class="fa fa- spinner fa- spin fa - 3x fa - fw"></i><span class="sr - only">Cargando...</span>',
sZeroRecords: "No se encontraron resultados",
sInfo: "Mostrando registros del _START_ al _END_ de un total de _TOTAL_ registros",
sInfoEmpty: "Mostrando registros del 0 al 0 de un total de 0 registros",
sInfoFiltered: "(filtrado de un total de _MAX_ registros)",
sInfoPostFix: "",
sSearch: "",
searchPlaceholder: "🔎 Buscar...",
sUrl: "",
sInfoThousands: ",",
sLoadingRecords: "Cargando...",
oPaginate: {
sFirst: "Primero",
sLast: "Último",
sNext: "Siguiente",
sPrevious: "Anterior"
},
oAria: {
sSortAscending: "Activar para ordenar la columna de manera ascendente",
sSortDescending: "Activar para ordenar la columna de manera descendente"
},
buttons: {
copy: 'Copiar',
Colvis: 'Visibilidad'
}
},
dom: cnf.dom ?? 'Bfrtip',
buttons: [
{
extend: 'pageLength',
text: 'Mostrar',
className: 'btn-outline-info',
},
{
extend: 'copy',
text: 'Copiar',
className: 'btn-info btn_copy',
},
{
extend: 'colvis',
text: 'Columnas',
className: 'btn-info',
},
{
title: cnf.title_report ?? 'CITASMED - REPORTERIA',
messageTop: `${cnf.name_report ?? 'REPORTE'} Fecha: ${d}`,
text: "<i class='fa fa-file-pdf-o'></i> PDF",
className: 'btn_pdf',
extend: 'pdf',
orientation: cnf.orientation_report ?? 'landscape'
},
{
title: cnf.title_report ?? 'CITASMED - REPORTERIA',
messageTop: `${cnf.name_report ?? 'REPORTE'} Fecha: ${d}`,
text: "<i class='fa fa-file-excel-o'></i> Excel",
className: 'btn_excel btn-info',
extend: 'excel',
orientation: cnf.orientation_report ?? 'landscape'
},
{
title: cnf.title_report ?? 'CITASMED - REPORTERIA',
messageTop: `${cnf.name_report ?? 'REPORTE'} Fecha: ${d}`,
text: "<i class='fa fa-print'></i> Imprimir",
className: 'btn_print',
autoPrint: cnf.auto_print,
extend: 'print',
orientation: cnf.orientation_report ?? 'landscape',
customize: function (win) {
$(win.document.body).find('p').css('color', 'black')
}
},
cnf.customButtons ?? undefined
],
responsive: cnf.responsive ?? true,
processing: true,
serverSide: true,
destroy: cnf.destroy ?? true,
ajax: {
url: `/core/model/ss_model/${cnf.model}?${cnf.parameters}`,
type: cnf.type ?? 'POST'
},
columns: cnf.columns ?? [{}],
select: cnf.select ?? true,
});
$(`${cnf.element}_filter input`).addClass('form-control m-input m-input--solid');
$(`${cnf.element}`).css('width', '100%');
$($.fn.dataTable.tables(true)).DataTable().columns.adjust();
//SI EL PARAMETRO SELECT = TRUE ENTONBCES LAS LINEAS PUEDEN SER CLICKADAS
if (cnf.select ?? true) {
//AÑADE CLASES DE SELECTED Y DESELECTED A LOS ROWS DE TBODY DE UNA TABLA
$(cnf.element).on('dblclick', 'tr', function (e) {
if ($(this).hasClass('selected')) {
$(this).removeClass('selected');
} else {
$(this).addClass('selected');
}
});
}
//Prevent selection with one clic event, but allow two clics event.
$(cnf.element).on('click', 'tr', function (e) {
e.stopPropagation();
});
if (cnf.pdf ?? true) {
$('.btn_pdf').hide();
}
if (cnf.excel ?? false) {
$('.btn_excel').hide();
}
if (cnf.print ?? true) {
$('.btn_print').hide();
}
if (cnf.copy ?? false) {
$('.btn_copy').hide();
}
}
function formatTable(cnf) {
/*
debug: true, //debugging options switch
element: '.table_rols_modules', //object en DOM el cual será datatable
empty_table: 'NO HAY DATOS',
scroller: true, //scrollbard?
fixed_header: true, //Cabecera fija
title_report: 'Report Title',
auto_print: true,
emptyText: 'NO HAY DATOS',
order: [[0, 'asc']], //columna por la cual se ordena
column_groupby: 0, //indice de la columna de grupo
empty_text: 'NO HAY DATOS', //texto para cuando la tabla está vacia
name_report: 'CITASMED', //nombre del reporte
filterdrops: {visible: false, element: ''}, //filtrado de combo por columna (en desarrollo)
scrolly: 'auto', // limita el scroll a los pixeles desseados Y [420px]
scrollx: '100%', // limita el scroll a los pixeles desseados X [100%]
scrollCollapse: true, // elimina la paginacion
paging: true,
page_length: 10,
filter: true,
info: true,
sort: true,
group: true, //agrupa por columnas
group_span: 4, //tamaño de la columna en celdas de manera horizontal
groupcolumn: 0, //
columnGroup: 0,
orientation_report: '',
groupSpan: 5,
column_defs: [{ visible: false, targets: 0, searchable: false }],
callback: () => {
},
responsive: true,
*/
if (cnf.isEmpty) {
alert('Configuration Object NOT FOUND');
}
if (!('element' in cnf)) {
console.log('debe de configurar un elemento');
return;
}
if (cnf.debug ?? false) {
console.table(cnf);
}
if(('destroy' in cnf) && cnf.destroy){
if ($.fn.DataTable.isDataTable(cnf.element)) {
// $(cnf.element).DataTable().destroy();
$(cnf.element).DataTable().clear().destroy();;
}
}
let months = ["ENE", "FEB", "MAR", "ABR", "MAY", "JUN", "JUL", "AGO", "SEP", "OCT", "NOV", "DIC"],
currentDate = new Date(),
day = currentDate.getDate(),
month = months[currentDate.getMonth()],
year = currentDate.getFullYear(),
d = day + "-" + month + "-" + year,
groupColumn = cnf.group ?? false,
JqueryTable = $(`${cnf.element}`).DataTable({
scrollY: `${cnf.scrolly ?? 'auto'}`,
sScrollX: `${cnf.scrollx ?? '100%'}`,
scrollCollapse: cnf.scrollCollapse ?? false,
scroller: cnf.scroller ?? false,
paging: cnf.paging ?? true,
searching: cnf.searching ?? true,
pageLength: cnf.page_length ?? 10,
filter: cnf.filter ?? true,
info: cnf.info ?? true,
sort: cnf.sort ?? true,
FixedHeader: cnf.fixed_header ?? true,
order: cnf.order ?? [[0, "desc"]],
columnDefs: cnf.columnDefs ?? '',
drawCallback: function (settings) {
if (cnf.group) {
let api = this.api(),
rows = api.rows({page: 'current'}).nodes(),
last = null;
api.column(cnf.groupcolumn, {page: 'current'}).data().each(function (group, i) {
if (last !== group) {
$(rows).eq(i).before(
`<tr class="group bg-primary text-white"><td colspan="${cnf.group_span ?? 5}">${group}</td></tr>`
);
last = group;
}
});
}
('function' == typeof cnf.callback) && cnf.callback();
},
language: {
emptyTable: cnf.empty_table ?? `NO HAY DATOS`,
Processing: '<i class="fa fa- spinner fa- spin fa - 3x fa - fw"></i><span class="sr - only">Cargando...</span>',
sZeroRecords: "No se encontraron resultados",
sInfo: "Mostrando registros del _START_ al _END_ de un total de _TOTAL_ registros",
sInfoEmpty: "Mostrando registros del 0 al 0 de un total de 0 registros",
sInfoFiltered: "(filtrado de un total de _MAX_ registros)",
sInfoPostFix: "",
sSearch: "",
searchPlaceholder: "🔎 Buscar...",
sUrl: "",
sInfoThousands: ",",
sLoadingRecords: "Cargando...",
oPaginate: {
sFirst: "Primero",
sLast: "Último",
sNext: "Siguiente",
sPrevious: "Anterior"
},
oAria: {
sSortAscending: "Activar para ordenar la columna de manera ascendente",
sSortDescending: "Activar para ordenar la columna de manera descendente"
},
buttons: {
copy: 'Copiar',
Colvis: 'Visibilidad'
}
},
dom: cnf.dom ?? 'Bfrtip',
buttons: [
{
extend: 'pageLength',
text: 'Mostrar',
className: 'btn-outline-info default_btn',
},
{
extend: 'copy',
text: 'Copiar',
className: 'btn-info btn_copy default_btn',
},
{
extend: 'colvis',
text: 'Columnas',
className: 'btn-info default_btn',
},
{
title: cnf.title_report ?? 'CITASMED - REPORTERIA',
messageTop: `${cnf.name_report ?? 'REPORTE'} Fecha: ${d}`,
text: "<i class='fa fa-file-pdf-o'></i> PDF",
className: 'btn_pdf',
extend: 'pdf',
orientation: cnf.orientation_report ?? 'landscape'
},
{
title: cnf.title_report ?? 'CITASMED - REPORTERIA',
messageTop: `${cnf.name_report ?? 'REPORTE'} Fecha: ${d}`,
text: "<i class='fa fa-file-excel-o'></i> Excel",
className: 'btn_excel btn-info',
extend: 'excel',
orientation: cnf.orientation_report ?? 'landscape'
},
{
title: cnf.title_report ?? 'CITASMED - REPORTERIA',
messageTop: `${cnf.name_report ?? 'REPORTE'} Fecha: ${d}`,
text: "<i class='fa fa-print'></i> Imprimir",
className: 'btn_print',
autoPrint: cnf.auto_print,
extend: 'print',
orientation: cnf.orientation_report ?? 'landscape',
customize: function (win) {
$(win.document.body).find('p').css('color', 'black')
}
},
cnf.customButtons ?? undefined
],
responsive: cnf.responsive ?? true
});
$(`${cnf.element}_filter input`).addClass('form-control m-input m-input--solid');
$(`${cnf.element}`).css('width', '100%');
$($.fn.dataTable.tables(true)).DataTable().columns.adjust();
//SI EL PARAMETRO SELECT = TRUE ENTONBCES LAS LINEAS PUEDEN SER CLICKADAS
if (cnf.select ?? true) {
//AÑADE CLASES DE SELECTED Y DESELECTED A LOS ROWS DE TBODY DE UNA TABLA
$(cnf.element).on('dblclick', 'tr', function (e) {
if ($(this).hasClass('selected')) {
$(this).removeClass('selected');
} else {
$(this).addClass('selected');
}
});
}
//Prevent selection with one clic event, but allow two clics event.
$(cnf.element).on('click', 'tr', function (e) {
e.stopPropagation();
});
if (cnf.pdf ?? true) {
$('.btn_pdf').hide();
}
if (cnf.excel ?? false) {
$('.btn_excel').hide();
}
if (cnf.print ?? true) {
$('.btn_print').hide();
}
if (cnf.copy ?? false) {
$('.btn_copy').hide();
}
if(cnf.default_btn){
$('.default_btn').hide();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment