This commit is contained in:
2024-07-08 22:33:07 -07:00
3 changed files with 192 additions and 146 deletions

View File

@@ -1,4 +1,4 @@
<%@ WebHandler Language="VB" Class="CargaEventos" %> <%@ WebHandler Language="VB" Class="CargaEventos" %>
Option Explicit Off Option Explicit Off
Option Strict On Option Strict On
@@ -489,7 +489,13 @@ Public Class CargaEventos : Implements IHttpHandler, IRequiresSessionState
DT_SubProyectos.Columns.Add("backgroundColor") DT_SubProyectos.Columns.Add("backgroundColor")
DT_EstatusOS.Columns.Add("", GetType(Integer)) DT_EstatusOS.Columns.Add("", GetType(Integer))
If ObjContratos.GetContratos(-1, usuarioActual_.CveEmpresa, TipoContrato:=34) Then Dim cveContrato As Integer = -1
If context.Request("cveContrato") IsNot Nothing Then
cveContrato = context.Request("cveContrato").ToEntero()
End If
If ObjContratos.GetContratos(cveContrato, usuarioActual_.CveEmpresa, TipoContrato:=34) Then
If ObjContratos.DtResultados.Rows.Count > 0 Then If ObjContratos.DtResultados.Rows.Count > 0 Then

View File

@@ -94,10 +94,10 @@
<%-- Cliente --%> <%-- Cliente --%>
<label class="col-md-1">Cliente</label> <label class="col-md-1">Cliente</label>
<div class="col-md-2"> <div class="col-md-2">
<ADS:Dropdownlost CssClassDdl="select2me" ID="DdlCliente" Width="86%" <ADS:Dropdownlost CssClassDdl="select2me" ID="DdlCliente" Width="100%"
data-metodo="getcliente" data-metodo="getcliente"
runat="server" DataTextField="NombreComercial" DataValueField="CveCliente" runat="server" DataTextField="NombreComercial" DataValueField="CveCliente"
CssStyle="width: 86%;" CssStyle="width: 100%;"
UsaWebService="true" Enabled="false"></ADS:Dropdownlost> UsaWebService="true" Enabled="false"></ADS:Dropdownlost>
</div> </div>
<%-- Estatus --%> <%-- Estatus --%>
@@ -116,7 +116,7 @@
<div class="portlet-body row" style="display: none"> <div class="portlet-body row" style="display: none">
<%-- Centro de Costos --%> <%-- Centro de Costos --%>
<label class="col-md-1 truncate ">Centro de Costos</label> <label class="col-md-1 truncate ">Centro de Costos</label>
<div class="col-md-2"> <div class="col-md-3">
<asp:DropDownList ID="DdlSubProyectos" data-text="Todos" AppendDataBoundItems="true" <asp:DropDownList ID="DdlSubProyectos" data-text="Todos" AppendDataBoundItems="true"
DataTextField="SubProyecto" DataValueField="CveSubProyecto" CssClass="form-control ddlFiltros input-sm select2me Widthall" DataTextField="SubProyecto" DataValueField="CveSubProyecto" CssClass="form-control ddlFiltros input-sm select2me Widthall"
Style="width: 100%;" runat="server"> Style="width: 100%;" runat="server">
@@ -186,7 +186,7 @@
</div> </div>
</ContentTemplate> </ContentTemplate>
</asp:UpdatePanel> </asp:UpdatePanel>
</div> </div>
</div> </div>
</div> </div>
@@ -500,7 +500,7 @@
</div> </div>
<asp:HiddenField runat="server" ID="HidModClienteNombre" ClientIDMode="Static" /> <asp:HiddenField runat="server" ID="HidModClienteNombre" ClientIDMode="Static" />
<asp:HiddenField runat="server" ID="HidModCveCliente" ClientIDMode="Static" /> <asp:HiddenField runat="server" ID="HidModCveCliente" ClientIDMode="Static" />
<asp:HiddenField runat="server" ID="HidCurrentMonth" ClientIDMode="Static" Value="-1" /> <asp:HiddenField runat="server" ID="HidCurrentMonth" ClientIDMode="Static" Value="-1" />
<asp:HiddenField runat="server" ID="HidCurrentYear" ClientIDMode="Static" Value="-1" /> <asp:HiddenField runat="server" ID="HidCurrentYear" ClientIDMode="Static" Value="-1" />
</asp:Content> </asp:Content>
@@ -541,6 +541,7 @@
"December": "Diciembre", "December": "Diciembre",
}; };
var dateAxis;
function cargaDiagramaGrant(data, categorias, TipoVista) { function cargaDiagramaGrant(data, categorias, TipoVista) {
@@ -564,7 +565,7 @@
// Create chart // Create chart
// https://www.amcharts.com/docs/v5/charts/xy-chart/ // https://www.amcharts.com/docs/v5/charts/xy-chart/
var chart = root.container.children.push(am5xy.XYChart.new(root, { var chart = root.container.children.push(am5xy.XYChart.new(root, {
panX: false, panX: true,
panY: false, panY: false,
wheelX: "panX", wheelX: "panX",
wheelY: "zoomX", wheelY: "zoomX",
@@ -599,12 +600,14 @@
yAxis.data.setAll(categorias); yAxis.data.setAll(categorias);
var dateAxis = am5xy.DateAxis.new(root, { dateAxis = am5xy.DateAxis.new(root, {
baseInterval: { timeUnit: "minute", count: 1 }, baseInterval: { timeUnit: "minute", count: 1 },
renderer: am5xy.AxisRendererX.new(root, { renderer: am5xy.AxisRendererX.new(root, {
minorGridEnabled: true, minorGridEnabled: true,
minGridDistance: 90 minGridDistance: 90
}) })
//min: new Date(2024, 6, 15).getTime(),
//max: new Date(2024, 6, 31).getTime()
}); });
var xAxis = chart.xAxes.push( var xAxis = chart.xAxes.push(
@@ -627,7 +630,7 @@
series.columns.template.setAll({ series.columns.template.setAll({
templateField: "columnSettings", templateField: "columnSettings",
strokeOpacity: 0, strokeOpacity: 0,
tooltipText: "{category}: {openValueX} - {valueX}" tooltipText: "UNIDAD: {category}-{unidad} \nCONTRATO: {contrato} \nDURACIÓN: {openValueX} - {valueX}"
}); });
series.data.processor = am5.DataProcessor.new(root, { series.data.processor = am5.DataProcessor.new(root, {
@@ -655,12 +658,26 @@
chart.set("scrollbarY", scrollbarY); chart.set("scrollbarY", scrollbarY);
//MOSTRAR MODAL DE CONTRATO AL HACER CLICK
series.columns.template.events.on("click", e => {
let cveContrato = e.target.dataItem.dataContext.cveContrato;
$('#CveContrato').val(cveContrato);
let url = '/Ashx/CargaEventos.ashx?METODO=contrato_transportes' ;
let parametros = '&cveContrato=' + cveContrato +'&U=' + '<%= UsuarioActual.CveUsuario %>' + '&E='+ '<%= UsuarioActual.CveEmpresa %>'+ '&tipoVista=' + '<%= RBTipoVista.Text %>' + '&CveUsuarioPara:' + $('#DdlTecnico').val(); + '&CveSubProyecto:' + $('#DdlSubProyecto').val();
fetch(url + parametros).then(response => response.json()).then(json => {
updateEvent(json[0],null,false);
}).catch(err => console.log('Solicitud fallida', err));
});
series.events.on("datavalidated", function (ev) { series.events.on("datavalidated", function (ev) {
let cellSize = 45; let cellSize = 45;
if (TipoVista == 1) { if (TipoVista == 1) {
cellSize = 60; cellSize = 60;
} }
//let series = ev.target; //let series = ev.target;
//let chart = series.chart; //let chart = series.chart;
@@ -671,17 +688,26 @@
// Set it on chart's container // Set it on chart's container
chart.root.dom.style.height = chartHeight + "px"; chart.root.dom.style.height = chartHeight + "px";
// ev.target.get("xAxis").zoomToValues(new Date(2024,6,15).getTime(), new Date(2024,6,20).getTime());
}); });
//root.language.setTranslationAny("May", "Mayo");
// Make stuff animate on load // Make stuff animate on load
// https://www.amcharts.com/docs/v5/concepts/animations/ // https://www.amcharts.com/docs/v5/concepts/animations/
series.appear(); series.appear();
chart.appear(1000, 100); chart.appear(1000, 100);
}); // end am5.ready() }); // end am5.ready()
} }
function zoomAxis(anioI,mesI,diaI,anioF,mesF,diaF) {
setTimeout(() => {
dateAxis.zoomToDates(new Date(anioI, mesI, diaI), new Date(anioF, mesF, diaF));
}, 1500);
}
var PrimeraCargaCalendario = true; var PrimeraCargaCalendario = true;
var currentUpdateEvent; var currentUpdateEvent;
var addStartDate; var addStartDate;
@@ -704,7 +730,7 @@
function selectDate(start, end, allDay) { function selectDate(start, end, allDay) {
} }
function updateEvent(event, element) { function updateEvent(event, element, esCalendario = true) {
$('#<%=TxtCantidadPasajeros.ClientID%>').val(event.CantidadPasajeros); $('#<%=TxtCantidadPasajeros.ClientID%>').val(event.CantidadPasajeros);
$('#<%=TxtFolio.ClientID%>').val(event.NumeroContrato); $('#<%=TxtFolio.ClientID%>').val(event.NumeroContrato);
@@ -713,8 +739,12 @@
$('#<%=TxtUbicacion.ClientID%>').val(event.NombreAcercamiento); $('#<%=TxtUbicacion.ClientID%>').val(event.NombreAcercamiento);
if (esCalendario) {
$('#<%=TxtFechaSalida.ClientID%>').val(formatearFechaISO(event.start._i)); $('#<%=TxtFechaSalida.ClientID%>').val(formatearFechaISO(event.start._i));
}else{
$('#<%=TxtFechaSalida.ClientID%>').val(formatearFechaISO(event.start));
}
$('#<%=TxtFechaRegreso.ClientID%>').val(formatearFechaISO(event.FechaFinal)); $('#<%=TxtFechaRegreso.ClientID%>').val(formatearFechaISO(event.FechaFinal));
$('#<%=DdlClientes.ClientID%>').val(event.CveCliente); $('#<%=DdlClientes.ClientID%>').val(event.CveCliente);
@@ -736,142 +766,142 @@
$('#HidModCveCliente').val(event.CveCliente); $('#HidModCveCliente').val(event.CveCliente);
$('#<%=BtnModal.ClientID%>').click(); $('#<%=BtnModal.ClientID%>').click();
} }
function formatearFechaISO(fechaISO) { function formatearFechaISO(fechaISO) {
let fecha = new Date(fechaISO); let fecha = new Date(fechaISO);
// Formatear la fecha en DD/MM/YYYY // Formatear la fecha en DD/MM/YYYY
let dia = fecha.getDate().toString().padStart(2, '0'); let dia = fecha.getDate().toString().padStart(2, '0');
let mes = (fecha.getMonth() + 1).toString().padStart(2, '0'); // getMonth() devuelve mes de 0-11 let mes = (fecha.getMonth() + 1).toString().padStart(2, '0'); // getMonth() devuelve mes de 0-11
let año = fecha.getFullYear(); let año = fecha.getFullYear();
// Formatear la hora en formato 12 horas con AM/PM // Formatear la hora en formato 12 horas con AM/PM
let horas = fecha.getHours(); let horas = fecha.getHours();
let minutos = fecha.getMinutes().toString().padStart(2, '0'); let minutos = fecha.getMinutes().toString().padStart(2, '0');
let periodo = 'a. m.'; let periodo = 'a. m.';
if (horas >= 12) { if (horas >= 12) {
periodo = 'p. m.'; periodo = 'p. m.';
horas = horas > 12 ? horas - 12 : horas; // Convertir hora de formato 24 a 12 horas horas = horas > 12 ? horas - 12 : horas; // Convertir hora de formato 24 a 12 horas
} }
if (horas === 0) horas = 12; // Medianoche se muestra como 12 a.m. if (horas === 0) horas = 12; // Medianoche se muestra como 12 a.m.
horas = horas.toString().padStart(2, '0'); horas = horas.toString().padStart(2, '0');
// Combinar la fecha y la hora // Combinar la fecha y la hora
return `${dia}/${mes}/${año} ${horas}:${minutos}:00 ${periodo}`; return `${dia}/${mes}/${año} ${horas}:${minutos}:00 ${periodo}`;
}
function RadionButtonSelectedValueSet(name, SelectdValue) {
$('input[name="' + name + '"][value="' + SelectdValue + '"]').prop('checked', true);
}
function updateEventOnDropResize(event, allDay) {
var eventToUpdate = {
id: event.id,
start: event.start
};
if (event.end === null) {
eventToUpdate.end = eventToUpdate.start;
}
else {
eventToUpdate.end = event.end;
}
var endDate;
if (!event.allDay) {
endDate = new Date(eventToUpdate.end + 60 * 60000);
endDate = endDate.toJSON();
}
else {
endDate = eventToUpdate.end.toJSON();
} }
eventToUpdate.start = eventToUpdate.start.toJSON(); function RadionButtonSelectedValueSet(name, SelectdValue) {
eventToUpdate.end = eventToUpdate.end.toJSON(); //endDate; $('input[name="' + name + '"][value="' + SelectdValue + '"]').prop('checked', true);
eventToUpdate.allDay = event.allDay; }
PageMethods.ActualizaEvento(eventToUpdate, UpdateTimeSuccess); function updateEventOnDropResize(event, allDay) {
} var eventToUpdate = {
id: event.id,
start: event.start
};
function eventDropped(event, dayDelta, minuteDelta, allDay, revertFunc) { if (event.end === null) {
if ($(this).data("qtip")) $(this).qtip("destroy"); eventToUpdate.end = eventToUpdate.start;
updateEventOnDropResize(event); }
} else {
eventToUpdate.end = event.end;
}
var endDate;
if (!event.allDay) {
endDate = new Date(eventToUpdate.end + 60 * 60000);
endDate = endDate.toJSON();
}
else {
endDate = eventToUpdate.end.toJSON();
}
function eventResized(event, dayDelta, minuteDelta, revertFunc) { eventToUpdate.start = eventToUpdate.start.toJSON();
if ($(this).data("qtip")) $(this).qtip("destroy"); eventToUpdate.end = eventToUpdate.end.toJSON(); //endDate;
eventToUpdate.allDay = event.allDay;
updateEventOnDropResize(event); PageMethods.ActualizaEvento(eventToUpdate, UpdateTimeSuccess);
} }
function Calendario(mes = -1, anio = -1) { function eventDropped(event, dayDelta, minuteDelta, allDay, revertFunc) {
if ($(this).data("qtip")) $(this).qtip("destroy");
updateEventOnDropResize(event);
}
function eventResized(event, dayDelta, minuteDelta, revertFunc) {
if ($(this).data("qtip")) $(this).qtip("destroy");
updateEventOnDropResize(event);
}
function Calendario(mes = -1, anio = -1) {
let fechaActual = new Date(); let fechaActual = new Date();
if (mes === -1) { if (mes === -1) {
mes = fechaActual.getMonth() + 1; mes = fechaActual.getMonth() + 1;
} }
if (anio === -1) { if (anio === -1) {
anio = fechaActual.getFullYear(); anio = fechaActual.getFullYear();
} }
let mesFormateado = ('0' + mes).slice(-2); let mesFormateado = ('0' + mes).slice(-2);
let fechaInicio = `${anio}-${mesFormateado}-01`; let fechaInicio = `${anio}-${mesFormateado}-01`;
var date = new Date(); var date = new Date();
var d = date.getDate(); var d = date.getDate();
var m = date.getMonth(); var m = date.getMonth();
var y = date.getFullYear(); var y = date.getFullYear();
var h = {}; var h = {};
//alert(fechaInicio); //alert(fechaInicio);
if ($('#calendar').width() <= 400) { if ($('#calendar').width() <= 400) {
$('#calendar').addClass("mobile"); $('#calendar').addClass("mobile");
h = { h = {
left: 'title, prev, next', left: 'title, prev, next',
center: '', center: '',
right: 'today,month,agendaWeek,agendaDay' right: 'today,month,agendaWeek,agendaDay'
}; };
} else { } else {
$('#calendar').removeClass("mobile"); $('#calendar').removeClass("mobile");
h = { h = {
left: 'title', left: 'title',
center: '', center: '',
right: 'prev,next,today,month,agendaWeek,agendaDay' right: 'prev,next,today,month,agendaWeek,agendaDay'
}; };
} }
$('#calendar').fullCalendar('destroy'); $('#calendar').fullCalendar('destroy');
$('#calendar').fullCalendar({ $('#calendar').fullCalendar({
defaultDate: fechaInicio, defaultDate: fechaInicio,
header: h, header: h,
monthNames: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"], monthNames: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"],
monthNamesShort: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'], monthNamesShort: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'],
dayNames: ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'], dayNames: ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'],
dayNamesShort: ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb'], dayNamesShort: ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb'],
buttonText: { buttonText: {
today: 'Hoy', today: 'Hoy',
week: 'Semana', week: 'Semana',
month: 'Mes', month: 'Mes',
day: 'Día' day: 'Día'
}, },
eventClick: updateEvent, eventClick: updateEvent,
selectable: true, selectable: true,
selectHelper: true, selectHelper: true,
select: selectDate, select: selectDate,
editable: true, editable: true,
minTime: "00:00:00", minTime: "00:00:00",
maxTime: "24:00:00", maxTime: "24:00:00",
events: { events: {
url: '/Ashx/CargaEventos.ashx', url: '/Ashx/CargaEventos.ashx',
type: 'GET', type: 'GET',
data: { data: {
U: ' <%= UsuarioActual.CveUsuario %>', U: ' <%= UsuarioActual.CveUsuario %>',
E: '<%= UsuarioActual.CveEmpresa %>', E: '<%= UsuarioActual.CveEmpresa %>',
tipoVista: '<%= RBTipoVista.Text %>', tipoVista: '<%= RBTipoVista.Text %>',
METODO: 'contrato_transportes', METODO: 'contrato_transportes',
@@ -895,24 +925,24 @@
}); });
} }
function obtenerFechaInicio(mes = -1, anio = -1) { function obtenerFechaInicio(mes = -1, anio = -1) {
let fechaActual = new Date(); let fechaActual = new Date();
if (mes === -1) { if (mes === -1) {
mes = fechaActual.getMonth() + 1; // getMonth() es base 0, así que se suma 1 mes = fechaActual.getMonth() + 1; // getMonth() es base 0, así que se suma 1
} }
if (anio === -1) { if (anio === -1) {
anio = fechaActual.getFullYear(); anio = fechaActual.getFullYear();
} }
let mesFormateado = ('0' + mes).slice(-2); let mesFormateado = ('0' + mes).slice(-2);
let fechaInicio = `${anio}-${mesFormateado}-01`; let fechaInicio = `${anio}-${mesFormateado}-01`;
return fechaInicio; return fechaInicio;
} }
</script> </script>

View File

@@ -42,8 +42,8 @@ Partial Class RepContratosCalendario
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then If Not IsPostBack Then
txtFechaI.Text = DateTime.Now.AddMonths(-1).ToShortDateString txtFechaI.Text = NowADS().FirstDayOfMonth.ToShortDateString()
txtFechaF.Text = DateTime.Now.AddDays(7).ToShortDateString txtFechaF.Text = GetLastDayOfMonth(NowADS()).ToShortDateString()
InicializaCombos() InicializaCombos()
InicializaCalendar() InicializaCalendar()
CargaDatos() CargaDatos()
@@ -71,6 +71,9 @@ Partial Class RepContratosCalendario
End Sub End Sub
Public Shared Function GetLastDayOfMonth(ByVal dateTime As DateTime) As DateTime
Return New DateTime(dateTime.Year, dateTime.Month, DateTime.DaysInMonth(dateTime.Year, dateTime.Month))
End Function
Private Sub CargaCronograma(Optional TipoVista As Integer = -1) Private Sub CargaCronograma(Optional TipoVista As Integer = -1)
If DtAvance IsNot Nothing Then If DtAvance IsNot Nothing Then
@@ -94,11 +97,14 @@ Partial Class RepContratosCalendario
Dim obj As New JObject( Dim obj As New JObject(
New JProperty("category", Row("CodigoAF")), New JProperty("category", Row("CodigoAF")),
New JProperty("fromDate", Row("FechaInicial").ToString().ToDateTime().ToString("dd/MM/yyyy HH:mm").ToDateTime()), New JProperty("fromDate", Row("FechaInicial").ToString().ToDateTime().ToString("dd/MM/yyyy HH:mm").ToDateTime()),
New JProperty("toDate", Row("FechaFinal").ToString().ToDateTime().ToString("dd/MM/yyyy HH:mm").ToDateTime()), New JProperty("toDate", Row("FechaFinal").ToString().ToDateTime.ToString("dd/MM/yyyy HH:mm").ToDateTime()),
New JProperty("columnSettings", New JObject( New JProperty("columnSettings", New JObject(
New JProperty("fill", String.Format("#{0:X6}", random.Next(16777216))) New JProperty("fill", String.Format("#{0:X6}", random.Next(16777216)))
)), )),
New JProperty("task", Row("NombreAF")) New JProperty("unidad", Row("NombreAF")),
New JProperty("cveContrato", Row("CveContrato")),
New JProperty("contrato", Row("NumeroContrato")),
New JProperty("fechaFinalViaje", Row("FechaFinal").ToString().ToDateTime().ToString("dd/MM/yyyy HH:mm"))
) )
jsonData.Add(obj) jsonData.Add(obj)
strAF.AppendFormat("{0},", Row("CveAF")) strAF.AppendFormat("{0},", Row("CveAF"))
@@ -115,8 +121,12 @@ Partial Class RepContratosCalendario
) )
jsonCategorias.Add(obj) jsonCategorias.Add(obj)
Next Next
Dim FechaI = txtFechaI.Text.ToDateTime()
Dim FechaF = txtFechaF.Text.ToDateTime()
RegistraScript($"cargaDiagramaGrant({jsonData.ToString()},{jsonCategorias.ToString()},{TipoVista});", "A1") Dim ScriptZoom = $"zoomAxis({FechaI.Year},{FechaI.Month - 1},{FechaI.Day},{FechaF.Year},{FechaF.Month - 1},{FechaF.Day});"
RegistraScript($"cargaDiagramaGrant({jsonData.ToString()},{jsonCategorias.ToString()},{TipoVista});{ScriptZoom}", "A1")
UPPGantt.Update() UPPGantt.Update()
End If End If
End Sub End Sub