From dceeec905fe3e12e4e72d55ba19347150ad04a24 Mon Sep 17 00:00:00 2001 From: caudillochon Date: Sat, 22 Feb 2025 16:25:15 -0700 Subject: [PATCH] Ordenamiento en JS --- App_Code/ClsNominas.vb | 15 +- Inventarios/KardexAlmacenHorizontal.aspx | 72 +++-- Nomina/CatPeriodos.aspx | 17 +- Nomina/CatPeriodos.aspx.vb | 13 +- Nomina/Finiquito.aspx.cs | 2 +- Nomina/Nomina.aspx.cs | 2 +- Nomina/RegistroNomina.aspx.vb.exclude | 2 +- PivotTable.aspx | 84 ++++++ PivotTable.aspx.cs | 50 ++++ Scripts/custom.js | 353 ++++++++++++++++++++++- Styles/Custom.css | 37 ++- 11 files changed, 612 insertions(+), 35 deletions(-) create mode 100644 PivotTable.aspx create mode 100644 PivotTable.aspx.cs diff --git a/App_Code/ClsNominas.vb b/App_Code/ClsNominas.vb index 313d8bf18..395b60ff9 100644 --- a/App_Code/ClsNominas.vb +++ b/App_Code/ClsNominas.vb @@ -1021,13 +1021,14 @@ Public Class ClsNominas ' Return Retorno 'End Function - Public Function DeleteNom_NominasDetalles(CveConcepto As Integer, CvePersonal As Integer, CvePeriodo As Integer) As Boolean + Public Function DeleteNom_NominasDetalles(CveConcepto As Integer, CvePersonal As Integer, CvePeriodo As Integer, CveUsuario As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Nom_NominasDetallesDelete") SqlAdapter.SelectCommand.Parameters.Add("@CveConcepto", SqlDbType.Int).Value = CveConcepto SqlAdapter.SelectCommand.Parameters.Add("@CvePersonal", SqlDbType.Int).Value = CvePersonal SqlAdapter.SelectCommand.Parameters.Add("@CvePeriodo", SqlDbType.Int).Value = CvePeriodo + SqlAdapter.SelectCommand.Parameters.Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario Try SqlAdapter.Fill(Data) @@ -1038,12 +1039,13 @@ Public Class ClsNominas Return Retorno End Function - Public Function RemoveNom_NominasDetalles(CveNominaDetalle As Integer) As Boolean + Public Function RemoveNom_NominasDetalles(CveNominaDetalle As Integer, CveUsuario As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Nom_NominasDetallesRemove") SqlAdapter.SelectCommand.Parameters.Add("@CveNominaDetalle", SqlDbType.Int).Value = CveNominaDetalle + SqlAdapter.SelectCommand.Parameters.Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario Try SqlAdapter.Fill(Data) Retorno = True @@ -2237,7 +2239,8 @@ Public Class ClsNominas End Function Public Function AddPeriodo(CveTipoPeriodo As Integer, Ejercicio As Integer, Mes As Integer, Numero As Integer, FechaInicio As Date, FechaFin As Date, - EsInicioMes As Boolean, EsFinMes As Boolean, EsInicioSS As Boolean, EsFinSS As Boolean, EsInicioAño As Boolean, EsFinAño As Boolean, CveUsuario As Integer, CveEmpresa As Integer, CveTurno As Integer, Estatus As Integer, CveSubTipoPeriodo As Integer) As Boolean + EsInicioMes As Boolean, EsFinMes As Boolean, EsInicioSS As Boolean, EsFinSS As Boolean, EsInicioAño As Boolean, EsFinAño As Boolean, CveUsuario As Integer, + CveEmpresa As Integer, CveTurno As Integer, Estatus As Integer, CveSubTipoPeriodo As Integer, AplicaAjusteAlNeto As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Nom_PeriodosAdd") @@ -2261,6 +2264,7 @@ Public Class ClsNominas .Add("@CveUsuario", SqlDbType.VarChar).Value = CveUsuario .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa .Add("@CveSubTipoPeriodo", SqlDbType.Int).Value = CveSubTipoPeriodo + .Add("@AplicaAjusteAlNeto", SqlDbType.Int).Value = AplicaAjusteAlNeto End With Try @@ -2281,7 +2285,7 @@ Public Class ClsNominas Public Function UpdatePeriodo(FechaInicio As Date, FechaFin As Date, EsInicioMes As Boolean, EsFinMes As Boolean, EsInicioSS As Boolean, EsFinSS As Boolean, EsInicioAño As Boolean, EsFinAño As Boolean, FueCalculado As Boolean, CveTipoPeriodo As Integer, Ejercicio As Integer, Mes As Integer, Numero As Integer, - Estatus As Integer, CvePeriodo As Integer, CveEmpresa As Integer, CveTurno As Integer, CveSubTipoPeriodo As Integer) As Boolean + Estatus As Integer, CvePeriodo As Integer, CveEmpresa As Integer, CveTurno As Integer, CveSubTipoPeriodo As Integer, CveUsuario As Integer, Optional AplicaAjusteAlNeto As Integer = -1) As Boolean Dim Retorno As Boolean = False @@ -2308,6 +2312,9 @@ Public Class ClsNominas .Add("@CveTurno", SqlDbType.Int).Value = CveTurno .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa .Add("@CveSubTipoPeriodo", SqlDbType.Int).Value = CveSubTipoPeriodo + + .Add("@CveUsuario", SqlDbType.VarChar).Value = CveUsuario + .Add("@AplicaAjusteAlNeto", SqlDbType.Int).Value = AplicaAjusteAlNeto End With Try diff --git a/Inventarios/KardexAlmacenHorizontal.aspx b/Inventarios/KardexAlmacenHorizontal.aspx index 54a239d2b..22a10cf1c 100644 --- a/Inventarios/KardexAlmacenHorizontal.aspx +++ b/Inventarios/KardexAlmacenHorizontal.aspx @@ -85,7 +85,7 @@ .Totales, .table-striped > tbody > tr.Totales { background: rgb(158 169 190) !important; } - + /* .divContainerads { width: 100%; max-height: calc(100vh - 260px); @@ -104,26 +104,20 @@ background-color:inherit; } - table.adssigscroll tr, - table.adssigscroll tr td { - /*visibility: hidden;*/ - } table.adssigscroll tr:nth-child(1), table.adssigscroll tr:nth-child(2) { position: sticky; - top: 0; /* Se mantiene pegado en la parte superior */ - background-color: inherit; /* Para que no se superponga con otros elementos */ - z-index: 4; /* Asegura que esté sobre otros elementos */ + top: 0; + background-color: inherit; + z-index: 4; } table.adssigscroll tr:nth-child(1) th:nth-child(1),table.adssigscroll tr:nth-child(1) th:nth-child(2), table.adssigscroll tr:nth-child(2) td:nth-child(1),table.adssigscroll tr:nth-child(2) td:nth-child(2) { z-index: 5; } - table.adssigscroll tr:nth-child(2) { - top: 26.14px; - } + table.adssigscroll tr:nth-child(2) { top: 26.14px; } table.adssigscroll tr td:nth-child(1),table.adssigscroll tr th:nth-child(1), table.adssigscroll tr td:nth-child(2),table.adssigscroll tr th:nth-child(2) { @@ -144,10 +138,52 @@ table.adssigscroll tr td:nth-child(2),table.adssigscroll tr th:nth-child(2) { left: 120px; } -/* - tr:nth-child(n + 100) { - visibility:hidden; - }*/ + */ + +/*Begin ScrollADS V2*/ + + +.divContainerads { + width: 100%; + max-height: calc(100vh - 260px); + overflow-y: auto; +} + +table.adssigscroll { + min-width: 100%; + background-color: #fff; +} + + table.adssigscroll tbody, table.adssigscroll thead { + background-color: #fff; + } + + table.adssigscroll tr { + background-color: inherit; + } + + table.adssigscroll tr.stickyRow { + position: sticky; + top: 0; /* Se mantiene pegado en la parte superior */ + background-color: inherit; /* Para que no se superponga con otros elementos */ + z-index: 4; /* Asegura que esté sobre otros elementos */ + } +.tr_order > th::after { + content: "\f0dc"; + font:normal normal normal 14px / 1 FontAwesome; + display: inline-block; + margin-left: 5px; + color: #32A1CF; +} +.tr_order > th.asce::after { + content: "\f0de"; +} + +.tr_order > th.desc::after { + content: "\f0dd"; +} + /*END ScrollADS V2*/ + @@ -319,9 +355,9 @@
- + + diff --git a/Nomina/CatPeriodos.aspx b/Nomina/CatPeriodos.aspx index 1787267e5..2e848592a 100644 --- a/Nomina/CatPeriodos.aspx +++ b/Nomina/CatPeriodos.aspx @@ -175,6 +175,12 @@ + + + Ajuste al neto + + + Estatus @@ -187,7 +193,7 @@ - @@ -305,6 +311,14 @@ + + + + + + + + @@ -440,6 +454,7 @@ +
diff --git a/Nomina/CatPeriodos.aspx.vb b/Nomina/CatPeriodos.aspx.vb index 320e9fcb9..72fed4775 100644 --- a/Nomina/CatPeriodos.aspx.vb +++ b/Nomina/CatPeriodos.aspx.vb @@ -233,6 +233,7 @@ Partial Class Nomina_CatPeriodos Dim EsInicioAño As Boolean Dim EsFinAño As Boolean Dim FueCalculado As Boolean + Dim AplicaAjusteAlNeto As Integer Dim Numero As Integer = TxtNumeroAdd.Text.Trim.ToEntero() Dim FechaInicio As Date = TxtFechaInicioAdd.Text().Trim.ToDate() Dim FechaFin As Date = TxtFechaFinAdd.Text.Trim().ToDate() @@ -270,11 +271,13 @@ Partial Class Nomina_CatPeriodos If item.Selected Then EsFinAño = True Else EsFinAño = False Case 7 If item.Selected Then FueCalculado = True Else FueCalculado = False + Case 8 + If item.Selected Then AplicaAjusteAlNeto = 1 Else AplicaAjusteAlNeto = 0 End Select Next If Comando = "Agregar" Then - If ObjNom_Periodos.AddPeriodo(CveTipoPeriodo, Ejercicio, Mes, Numero, FechaInicio, FechaFin, EsInicioMes, EsFinMes, EsInicioSS, EsFinSS, EsInicioAño, EsFinAño, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, DdlTurno.SelectedValue.ToEntero(), DdlEstatus.SelectedValue.ToEntero(), CveSubTipoPeriodo) Then + If ObjNom_Periodos.AddPeriodo(CveTipoPeriodo, Ejercicio, Mes, Numero, FechaInicio, FechaFin, EsInicioMes, EsFinMes, EsInicioSS, EsFinSS, EsInicioAño, EsFinAño, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, DdlTurno.SelectedValue.ToEntero(), DdlEstatus.SelectedValue.ToEntero(), CveSubTipoPeriodo, AplicaAjusteAlNeto) Then Alert("El nuevo Periodo se guardó correctamente.", TipoMensaje.MsgInformacion) UpDatos.Update() @@ -290,7 +293,7 @@ Partial Class Nomina_CatPeriodos End If ElseIf Comando = "Actualizar" Then - If ObjNom_Periodos.UpdatePeriodo(FechaInicio, FechaFin, EsInicioMes, EsFinMes, EsInicioSS, EsFinSS, EsInicioAño, EsFinAño, FueCalculado, CveTipoPeriodo, Ejercicio, Mes, Numero, Estatus, CvePeriodo, UsuarioActual.CveEmpresa, DdlTurno.SelectedValue.ToEntero(), CveSubTipoPeriodo) Then + If ObjNom_Periodos.UpdatePeriodo(FechaInicio, FechaFin, EsInicioMes, EsFinMes, EsInicioSS, EsFinSS, EsInicioAño, EsFinAño, FueCalculado, CveTipoPeriodo, Ejercicio, Mes, Numero, Estatus, CvePeriodo, UsuarioActual.CveEmpresa, DdlTurno.SelectedValue.ToEntero(), CveSubTipoPeriodo, UsuarioActual.CveUsuario, AplicaAjusteAlNeto) Then Alert("Los cambios se guardaron correctamente.", TipoMensaje.MsgInformacion) UpDatos.Update() @@ -350,9 +353,11 @@ Partial Class Nomina_CatPeriodos item.Selected = Convert.ToBoolean(GvRow.DataKey("EsFinAño").ToString()) Case 7 item.Selected = Convert.ToBoolean(GvRow.DataKey("FueCalculado").ToString()) + Case 8 + item.Selected = Convert.ToBoolean(GvRow.DataKey("AplicaAjusteAlNeto").ToString()) End Select Next - UpModalPerido.Update() + UpAddInventarioFisico.Update() RegistraScript("$('#divAddPeriodo').modal('show')") End Sub @@ -381,6 +386,8 @@ Partial Class Nomina_CatPeriodos item.Selected = False Case 7 item.Selected = False + Case 8 + item.Selected = True End Select Next UpModalPerido.Update() diff --git a/Nomina/Finiquito.aspx.cs b/Nomina/Finiquito.aspx.cs index c45ca22bc..7bbf4bc28 100644 --- a/Nomina/Finiquito.aspx.cs +++ b/Nomina/Finiquito.aspx.cs @@ -320,7 +320,7 @@ public partial class Nomina_Finiquito : ClsPaginas { using (ClsNominas onom = new ClsNominas()) { - if (onom.DeleteNom_NominasDetalles(SRCveConcepto, CvePersonal, CvePeriodoFiniquito)) + if (onom.DeleteNom_NominasDetalles(SRCveConcepto, CvePersonal, CvePeriodoFiniquito,UsuarioActual.CveUsuario)) { Alert("el importe sera tomado del calculo y no del valor fijo"); loadsobrerecibo(onom); diff --git a/Nomina/Nomina.aspx.cs b/Nomina/Nomina.aspx.cs index ccedabda1..78bb83e55 100644 --- a/Nomina/Nomina.aspx.cs +++ b/Nomina/Nomina.aspx.cs @@ -3692,7 +3692,7 @@ public partial class Nomina_Nomina2 : ClsPaginas { using (ClsNominas onom = new ClsNominas()) { - if (continuar = onom.DeleteNom_NominasDetalles(SRCveConcepto, SRCvePersonal, CvePeriodoSeleccionado)) + if (continuar = onom.DeleteNom_NominasDetalles(SRCveConcepto, SRCvePersonal, CvePeriodoSeleccionado, UsuarioActual.CveUsuario)) { msgFin = (onom.DtResultados.Rows.Count > 0 && onom.DtResultados.Rows[0]["AplicaFiniquito"].ToString().ToUpper().Contiene("1", "TRUE")); diff --git a/Nomina/RegistroNomina.aspx.vb.exclude b/Nomina/RegistroNomina.aspx.vb.exclude index e4511d59c..1231209a3 100644 --- a/Nomina/RegistroNomina.aspx.vb.exclude +++ b/Nomina/RegistroNomina.aspx.vb.exclude @@ -462,7 +462,7 @@ Partial Class Nomina_RegistroNomina Protected Sub GvMovimientos_RowDeleting(sender As Object, e As GridViewDeleteEventArgs) Handles GvMovimientos.RowDeleting Dim Nom As New ClsNominas - If Nom.RemoveNom_NominasDetalles(GvMovimientos.DataKeys(e.RowIndex).Value.ToString().ToEntero) Then + If Nom.RemoveNom_NominasDetalles(GvMovimientos.DataKeys(e.RowIndex).Value.ToString().ToEntero,UsuarioActual.CveUsuario) Then Alert("Movimiento Eliminado", TipoMensaje.MsgInformacion) End If diff --git a/PivotTable.aspx b/PivotTable.aspx new file mode 100644 index 000000000..ca0f89dd2 --- /dev/null +++ b/PivotTable.aspx @@ -0,0 +1,84 @@ +<%@ Page Title="Sistema de Información Gerencial" Language="C#" AutoEventWireup="false" CodeFile="PivotTable.aspx.cs" Inherits="PivotTable" %> + + + + + Tabla Dinámica con WebDataRocks (DataTable) + + + + + + + + + + +
+
+ + + +
+ +
+
+ + \ No newline at end of file diff --git a/PivotTable.aspx.cs b/PivotTable.aspx.cs new file mode 100644 index 000000000..b42b03da6 --- /dev/null +++ b/PivotTable.aspx.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Web.Script.Serialization; + + partial class PivotTable : System.Web.UI.Page +{ + // Propiedad pública que contendrá el JSON a insertar en la página + public string JsonData { get; set; } + + protected void Page_Load(object sender, EventArgs e) + { + + + // Crear un DataTable con las columnas necesarias + DataTable dt = new DataTable(); + dt.Columns.Add("Producto", typeof(string)); + dt.Columns.Add("Categoría", typeof(string)); + dt.Columns.Add("Año", typeof(int)); + dt.Columns.Add("Ventas", typeof(decimal)); + dt.Columns.Add("Región", typeof(string)); + + // Agregar filas al DataTable + dt.Rows.Add("Producto A", "Categoría 1", 2020, 1200, "Norte"); + dt.Rows.Add("Producto B", "Categoría 1", 2020, 800, "Sur"); + dt.Rows.Add("Producto A", "Categoría 2", 2021, 1500, "Norte"); + dt.Rows.Add("Producto B", "Categoría 2", 2021, 1100, "Sur"); + dt.Rows.Add("Producto C", "Categoría 1", 2020, 900, "Norte"); + dt.Rows.Add("Producto C", "Categoría 2", 2021, 1300, "Sur"); + + // Convertir el DataTable a una lista de diccionarios para serializarlo a JSON + List> rows = new List>(); + foreach (DataRow dr in dt.Rows) + { + Dictionary row = new Dictionary(); + foreach (DataColumn col in dt.Columns) + { + row.Add(col.ColumnName, dr[col]); + } + rows.Add(row); + } + + // Serializar la lista a JSON + var serializer = new JavaScriptSerializer(); + JsonData = serializer.Serialize(rows); + + // Opcional: Asignar el JSON a un Literal para visualizarlo (útil en depuración) + litJsonData.Text = JsonData; + } +} diff --git a/Scripts/custom.js b/Scripts/custom.js index 5f92540ff..17e6f5ea8 100644 --- a/Scripts/custom.js +++ b/Scripts/custom.js @@ -401,8 +401,359 @@ setswitch = function () { } } }; +function adssigscrollJSLoad() { + $('table.adssigscrollJS:not(.adssigscroll)').each(function () { + try { + let Tthis = $(this); + let Tid = Tthis.attr('id'); + let rowVisibles = isNaN(Number(Tthis.data('rows'))) ? 1 : Number(Tthis.data('rows')); + let colVisibles = isNaN(Number(Tthis.data('cols'))) ? 0 : Number(Tthis.data('cols')); + let divcontainer = $(`
`); + let jsrows; + let jscols; + let stylosrow = ''; + Tthis.addClass('adssigscroll'); + + + if (rowVisibles > 0) { + jsrows = $(`table#${Tid}.adssigscroll tr:nth-child(-n+${rowVisibles})`); + if (jsrows) { + jsrows.addClass('stickyRow'); + } + if (rowVisibles > 1) { + let numberitem = 1; + let top = -1; + jsrows.each(function () { + let Trowthis = $(this); + stylosrow = `${stylosrow} +table#${Tid}.adssigscroll tr:nth-child(${numberitem}) { top: ${top}px; }`; + top = top + Trowthis.outerHeight(true); + numberitem = numberitem + 1; + }); + } + } + + if (colVisibles > 0) { + stylosrow = `${stylosrow} + table#${Tid}.adssigscroll tr td:nth-child(-n+${colVisibles}),table#${Tid}.adssigscroll tr th:nth-child(-n+${colVisibles}) { + position: sticky; + left: 0; + z-index: 3; + } + table#${Tid}.adssigscroll tr td:nth-child(-n+${colVisibles}) { + background-color: inherit; + }`; + if (colVisibles > 1 && $(`table#${Tid}.adssigscroll tr:nth-last-child(1)`)) { + let left = 0; + for (let i = 1; i <= colVisibles; i++) { + + stylosrow = `${stylosrow} + table#${Tid}.adssigscroll tr td:nth-child(${i}),table#${Tid}.adssigscroll tr th:nth-child(${i}) { + left: ${left}px; + }`; + let item = $(`table#${Tid}.adssigscroll tr:nth-last-child(1) > *:nth-child(${i})`); + if (item) { + left = left + item.outerWidth(true); + } + } + + + } + } + if (rowVisibles > 0 && colVisibles > 0) { + stylosrow = `${stylosrow} + table#${Tid}.adssigscroll tr.stickyRow th:nth-child(-n+${colVisibles}),table#${Tid}.adssigscroll tr.stickyRow td:nth-child(-n+${colVisibles}) { z-index: 5; }`; + } + + + + Tthis.before($(stylosrow = ``)); + Tthis.before(divcontainer); + divcontainer.append(Tthis); + + } + catch (err) { + console.log("adssigscrollJS Error:" + err.message); + } + }); + + +} +function LoadSortSticky() { + $('body').on('click', 'table.adssigscroll tr.tr_order:not(.tsorterblock) > th ,table.adssigscroll tr.tr_order:not(.tsorterblock) > td ', function (e) { + var tthis = $(this); + if (tthis.closest('.NoClick').length == 0 && !($(e.target).is('a,input'))) { + + Metronic.blockUI({ animate: true }); + var index = tthis.index(); + var multiplicador = -1; + var tipodato = tthis.data('tipodato'); + var table = $(tthis.closest('.table')[0]); + var tabletr = table.find('> tr:not(.stickyRow),> tbody > tr:not(.stickyRow),> thead > tr:not(.stickyRow)'); + + + if (1 == 1) { + + if (tabletr.length > 0) { + + el = $(tabletr[0]); + var tdtexto = el.find("> td"); + texto = $(tdtexto[index]).data('order'); + if (texto) { + tipodato = 'dataorder'; + } + + } + } + //console.log({ tipodato }) + tthis.closest('tr').addClass('tsorterblock'); + setTimeout( + function () { + if (tthis.hasClass('desc')) { + tthis.closest('tr').find('th').removeClass('asce'); + tthis.closest('tr').find('th').removeClass('desc'); + tthis.addClass('asce'); + } + else { + tthis.closest('tr').find('th').removeClass('asce'); + tthis.closest('tr').find('th').removeClass('desc'); + tthis.addClass('desc'); + multiplicador = 1; + } + + function reordenaruno() { + var re = new RegExp(",", 'g'); + tipostring = 0; + tiponumeric = 0; + tipodate = 0; + var mapped = tabletr.map(function (i, el) { + el = $(el); + var texto = el.find("> td"); + var textod = null; + var texton = 0; + + if (texto && texto.length > index) { + texto = $(texto[index]).text(); + texto = texto.toLowerCase().trim(); + if (texto.length > 0) { + var vnum = texto.replace("$", "").replace("%", "").replace("-", "").replace("(", "").replace(")", "").replace(re, "").trim(); + if (vnum.length > 0) { + if ($.isNumeric(vnum)) { + texton = Number(vnum); + tiponumeric = 1; + } else { + var splited = texto.split("-") + if (splited.length == 3) { + var d = new Date(splited[2] + "-" + splited[1] + "-" + splited[0]) + if (!(d.toString == "Invalid Date")) { + textod = d; + tipodate = 1; + } + } else { + var splited = texto.split("/") + if (splited.length == 3) { + var d = new Date(splited[2] + "/" + splited[1] + "/" + splited[0]) + if (!(d.toString == "Invalid Date")) { + textod = d; + tipodate = 1; + } + } else { + tipostring = 1 + } + + } + } + } else { + texto = null; + } + } else { + texto = null; + } + } else { + texto = null; + } + return { index: i, value: texto, valued: textod, valuen: texton, obj: el }; + }); + if (tipostring == 1) { + mapped.sort(function (a, b) { + return (+(a.value > b.value) || +(a.value === b.value) - 1) * multiplicador; + }); + //tthis.closest('tr').find('th').data('tipodato', 'string') + } else { + if (tipodate == 1) { + mapped.sort(function (a, b) { + return (+(a.valued > b.valued) || +(a.valued === b.valued) - 1) * multiplicador; + }); + //tthis.closest('tr').find('th').data('tipodato', 'date') + } else { + mapped.sort(function (a, b) { + return (+(a.valuen > b.valuen) || +(a.valuen === b.valuen) - 1) * multiplicador; + }); + //tthis.closest('tr').find('th').data('tipodato', 'numeric') + } + } + mapped.each(function (i, el) { + table.append(this.obj); + }); + } + function reordenardos() { + var re = new RegExp(",", 'g'); + tipostring = 0; + tiponumeric = 0; + tipodate = 0; + var mapped = tabletr.map(function (i, el) { + el = $(el); + var tdtexto = el.find("> td"); + var texto = null; + if (tdtexto && tdtexto.length > index) { + texto = $(tdtexto[index]).text(); + texto = texto.toLowerCase().trim(); + } else { + texto = null; + } + return { index: i, value: texto, obj: el }; + }); + + mapped.sort(function (a, b) { + return (+(a.value > b.value) || +(a.value === b.value) - 1) * multiplicador; + }); + mapped.each(function (i, el) { + table.append(this.obj); + }); + } + function reordenartres() { + var re = new RegExp(",", 'g'); + tipostring = 0; + tiponumeric = 0; + tipodate = 0; + var mapped = tabletr.map(function (i, el) { + el = $(el); + var tdtexto = el.find("> td"); + var texto = null; + var textod = null; + if (tdtexto && tdtexto.length > index) { + texto = $(tdtexto[index]).text(); + texto = texto.toLowerCase().trim(); + var splited = texto.split("-") + if (splited.length == 3) { + var d = new Date(splited[2] + "-" + splited[1] + "-" + splited[0]) + if (!(d.toString == "Invalid Date")) { + textod = d; + } + } else { + var splited = texto.split("/") + if (splited.length == 3) { + var d = new Date(splited[2] + "/" + splited[1] + "/" + splited[0]) + if (!(d.toString == "Invalid Date")) { + textod = d; + } + } + + } + } else { + texto = null; + } + return { index: i, value: textod, obj: el }; + }); + + mapped.sort(function (a, b) { + return (+(a.value > b.value) || +(a.value === b.value) - 1) * multiplicador; + }); + mapped.each(function (i, el) { + table.append(this.obj); + }); + } + function reordenarcuatro() { + var re = new RegExp(",", 'g'); + tipostring = 0; + tiponumeric = 0; + tipodate = 0; + var mapped = tabletr.map(function (i, el) { + el = $(el); + var tdtexto = el.find("> td"); + var texto = null; + var texton = 0; + if (tdtexto && tdtexto.length > index) { + texto = $(tdtexto[index]).text(); + texto = texto.toLowerCase().trim(); + + if (texto.length > 0) { + var vnum = texto.replace("$", "").replace("%", "").replace("-", "").replace("(", "").replace(")", "").replace(re, "").trim(); + if (vnum.length > 0) { + if ($.isNumeric(vnum)) { + texton = Number(vnum); + } + } + } + } else { + texto = null; + } + return { index: i, value: texton, obj: el }; + }); + + mapped.sort(function (a, b) { + return (+(a.value > b.value) || +(a.value === b.value) - 1) * multiplicador; + }); + mapped.each(function (i, el) { + table.append(this.obj); + }); + } + + function reordenarcinco() { + var re = new RegExp(",", 'g'); + tipostring = 0; + tiponumeric = 0; + tipodate = 0; + var mapped = tabletr.map(function (i, el) { + el = $(el); + var tdtexto = el.find("> td"); + var texto = null; + var texton = 0; + if (tdtexto && tdtexto.length > index) { + texton = Number($(tdtexto[index]).data('order')); + + } else { + texto = null; + } + return { index: i, value: texton, obj: el }; + }); + //console.log(mapped) + mapped.sort(function (a, b) { + return (+(a.value > b.value) || +(a.value === b.value) - 1) * multiplicador; + }); + mapped.each(function (i, el) { + table.append(this.obj); + }); + } + switch (tipodato) { + case 'string': + reordenardos(); + break; + case 'date': + reordenartres(); + break; + case 'numeric': + reordenarcuatro(); + break; + case 'dataorder': + reordenarcinco(); + break; + default: + reordenaruno(); + } + + tthis.closest('tr').removeClass('tsorterblock'); + Metronic.unblockUI(); + }, 100); + + } + + + }); +} function ADScroller2() { + adssigscrollJSLoad(); $('table.ADSCROLLER2').each(function () { try { var Tthis = $(this); @@ -1659,7 +2010,7 @@ function ADSReady() { } function loadsortadscroll() { - + LoadSortSticky(); $('body').on('click', '.ADScroller > div > table > tbody > tr.tsorter:not(.tsorterblock) >th ,.ADScroller > div > table > thead > tr.tsorter:not(.tsorterblock) >th ', function (e) { var tthis = $(this); if (tthis.closest('.NoClick').length == 0 && !($(e.target).is('a,input'))) { diff --git a/Styles/Custom.css b/Styles/Custom.css index 8c212bcb0..e5cbeae5c 100644 --- a/Styles/Custom.css +++ b/Styles/Custom.css @@ -28,12 +28,39 @@ width:100%; } - div.form-group{ - width:100%; - margin-top:15px; - margin-bottom:15px; - display: table; +/*Begin ScrollADS V2*/ +.divContainerads { + width: 100%; + max-height: calc(100vh - 260px); + overflow-y: auto; } + +table.adssigscroll { + min-width: 100%; + background-color: #fff; +} + + table.adssigscroll tbody, table.adssigscroll thead { + background-color: #fff; + } + + table.adssigscroll tr { + background-color: inherit; + } + + table.adssigscroll tr.stickyRow { + position: sticky; + top: 0; /* Se mantiene pegado en la parte superior */ + background-color: inherit; /* Para que no se superponga con otros elementos */ + z-index: 4; /* Asegura que esté sobre otros elementos */ + } + /*END ScrollADS V2*/ + div.form-group { + width: 100%; + margin-top: 15px; + margin-bottom: 15px; + display: table; + } div.form-group div.form-group{ margin-top:0px; margin-bottom:0px;