Ejemplo n.º 1
0
        /// <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);
            }
        }