/// <summary> /// Método que permite seleccionar /// un único registro en la tabla estado /// </summary> /// <returns>vo_lista valor del resultado de la ejecución de la sentencia</returns> public static List<cls_compHorasActividades> CompHorasActividadesPorProyecto(cls_compHorasActividades po_compHorasActividades) { List<cls_compHorasActividades> vo_lista = null; cls_compHorasActividades vo_compHorasActividades = null; try { String vs_comando = "PA_estd_comparacionHorasActividad"; cls_parameter[] vu_parametros = { new cls_parameter("@paramProyecto", po_compHorasActividades.pPK_proyecto), new cls_parameter("@paramPaquete", po_compHorasActividades.pPK_paquete), new cls_parameter("@paramFechaInicio", po_compHorasActividades.pFechaDesde), new cls_parameter("@paramFechaFin", po_compHorasActividades.pFechaHasta), new cls_parameter("@paramUsuario", po_compHorasActividades.pPK_usuario) }; DataSet vu_dataSet = cls_sqlDatabase.executeDataset(vs_comando, true, vu_parametros); vo_lista = new List<cls_compHorasActividades>(); for (int i = 0; i < vu_dataSet.Tables[0].Rows.Count; i++) { vo_compHorasActividades = new cls_compHorasActividades(); vo_compHorasActividades.pNombreActividad = vu_dataSet.Tables[0].Rows[i]["nombreActividad"].ToString(); vo_compHorasActividades.pHorasAsignadas = Convert.ToDecimal(vu_dataSet.Tables[0].Rows[i]["horasAsignadas"].ToString()); vo_compHorasActividades.pHorasReales = Convert.ToDecimal(vu_dataSet.Tables[0].Rows[i]["horasReales"].ToString()); vo_lista.Add(vo_compHorasActividades); } return vo_lista; } catch (Exception po_exception) { throw new Exception("Ocurrió un error al obtener el gráfico de comparación de horas de actividades por proyecto.", po_exception); } }
/// <summary> /// Método que obtiene la información con la que se va a cargar en gráfico /// </summary> private void obtenerGraficoActividadesPorProyecto(int pi_proyecto, int pi_paquete, string ps_usuario) { try { //Se procede a obtener la información por proyecto cls_compHorasActividades vo_compHorasActividades = new cls_compHorasActividades(); vo_compHorasActividades.pPK_proyecto = pi_proyecto; vo_compHorasActividades.pPK_paquete = pi_paquete; vo_compHorasActividades.pPK_usuario = ps_usuario; List<cls_compHorasActividades> vl_topActividades = cls_gestorEstadistico.CompHorasActividadesPorProyecto(vo_compHorasActividades); //Se asignan los tooltips para el gráfico Grafico.Series["Leyendas"].ToolTip = "#VALX: #VAL{d} horas"; Grafico.Series["Leyendas"].LegendToolTip = "#VALX: #VAL{d} Horas"; Grafico.Series["Leyendas"].IsVisibleInLegend = false; Grafico.Series["Leyendas"].Label = "#VALX\n#PERCENT"; Grafico.Series["Leyendas"].PostBackValue = "#INDEX"; Grafico.Series["Leyendas"].LegendPostBackValue = "#INDEX"; //Se realiza el binding de la información que se obtuvo en la consulta Grafico.Series["Leyendas"].Points.DataBindXY(vl_topActividades, "pNombreActividad", vl_topActividades, "pHorasReales"); // Set pyramid chart type Grafico.Series["Leyendas"].ChartType = SeriesChartType.Line; // set the markers for each point of the Pareto Line Grafico.Series["Leyendas"].IsValueShownAsLabel = true; Grafico.Series["Leyendas"].MarkerColor = Color.OrangeRed; Grafico.Series["Leyendas"].MarkerBorderColor = Color.OrangeRed; Grafico.Series["Leyendas"].MarkerStyle = MarkerStyle.Circle; Grafico.Series["Leyendas"].MarkerSize = 8; Grafico.Series["Leyendas"].LabelFormat = "0.#"; // format with one decimal and leading zero // Set Color of line Pareto chart Grafico.Series["Leyendas"].Color = Color.Orange; // Disable axis labels auto fitting of text Grafico.ChartAreas["AreaGrafico"].AxisX.IsLabelAutoFit = false; // Set axis labels font Grafico.ChartAreas["AreaGrafico"].AxisX.LabelStyle.Font = new Font("Arial", 10); // Set axis labels angle Grafico.ChartAreas["AreaGrafico"].AxisX.LabelStyle.Angle = -90; // Disable offset labels style Grafico.ChartAreas["AreaGrafico"].AxisX.LabelStyle.IsStaggered = false; // Enable X axis labels Grafico.ChartAreas["AreaGrafico"].AxisX.LabelStyle.Enabled = true; // Enable AntiAliasing for either Text and Graphics or just Graphics Grafico.AntiAliasing = AntiAliasingStyles.All; // AntiAliasingStyles.Graphics and AntiAliasingStyles.Text // create the destination series and add it to the chart Series destSeries = new Series("Pareto"); if (Grafico.Series.IndexOf("Pareto") != 1) { Grafico.Series.Add(destSeries); } // ensure the destination series is a Line or Spline chart type destSeries.ChartType = SeriesChartType.Line; destSeries.BorderWidth = 3; destSeries.Color = Color.Firebrick; // assign the series to the same chart area as the column chart destSeries.ChartArea = Grafico.Series["Leyendas"].ChartArea; Grafico.ChartAreas["AreaGrafico"].AxisX.LabelStyle.IsEndLabelVisible = false; Grafico.Legends[0].Enabled = false; //Se realiza el binding de la información que se obtuvo en la consulta Grafico.Series["Pareto"].Points.DataBindXY(vl_topActividades, "pNombreActividad", vl_topActividades, "pHorasAsignadas"); Grafico.Series["Pareto"]["BackColor"] = "Transparent"; // Set chart types for output data Grafico.Series["Pareto"].ChartType = SeriesChartType.Line; // set the markers for each point of the Pareto Line Grafico.Series["Pareto"].IsValueShownAsLabel = true; Grafico.Series["Pareto"].MarkerColor = Color.Red; Grafico.Series["Pareto"].MarkerBorderColor = Color.DarkRed; Grafico.Series["Pareto"].MarkerStyle = MarkerStyle.Circle; Grafico.Series["Pareto"].MarkerSize = 8; Grafico.Series["Pareto"].LabelFormat = "0.#"; // format with one decimal and leading zero // Set Color of line Pareto chart Grafico.Series["Pareto"].Color = Color.Tomato; // Set 3D mode Grafico.ChartAreas["AreaGrafico"].Area3DStyle.Enable3D = true; // Show a 30% perspective Grafico.ChartAreas["AreaGrafico"].Area3DStyle.Perspective = 0; // Set the X Angle to 30 Grafico.ChartAreas["AreaGrafico"].Area3DStyle.Inclination = 0; // Set the Y Angle to 40 Grafico.ChartAreas["AreaGrafico"].Area3DStyle.Rotation = 5; //Se aplica el estilo pastel a los colores definidos para el gráfico Grafico.Palette = ChartColorPalette.BrightPastel; Grafico.ApplyPaletteColors(); //Para que el estilo tome efecto se debe asignar a cada uno de los puntos de la serie en el gráfico foreach (var series in Grafico.Series) { foreach (var point in series.Points) { point.Color = Color.FromArgb(220, point.Color); } } // Set axis title Grafico.ChartAreas["AreaGrafico"].AxisY.Title = "Horas Invertidas"; Grafico.ChartAreas["AreaGrafico"].AxisY.TitleFont = new Font("Times New Roman", 12, FontStyle.Bold); Grafico.ChartAreas["AreaGrafico"].AxisX2.Title = "Actividades Registradas"; Grafico.ChartAreas["AreaGrafico"].AxisX2.TitleFont = new Font("Times New Roman", 12, FontStyle.Bold); // Properties Grafico.ChartAreas["AreaGrafico"].BackColor = Color.Bisque; Grafico.ChartAreas["AreaGrafico"].AxisY.Interval = 8; Grafico.ChartAreas["AreaGrafico"].AxisX.Interval = 1; Grafico.ChartAreas["AreaGrafico"].AxisX.TextOrientation = TextOrientation.Rotated90; Grafico.ChartAreas["AreaGrafico"].AxisX.LabelStyle.IsEndLabelVisible = false; } catch (Exception po_exception) { throw new Exception("Ocurrió un error al cargar el gráfico con la información de la base de datos.", po_exception); } }