public string AllGoalsByMonthNet() { var now = DateTime.Now; var currentMonth = new DateTime(now.Year, now.Month, 1); var startDate = currentMonth.AddYears(-1); var highchart = new Highcharts("AllGoalsMonth"); var chart = new Chart() { Type = ChartTypes.Column }; highchart.InitChart(chart); highchart.SetTitle(new Title() {Text = "Goals by Month"}); var yaxis = new YAxis {Max = 2}; highchart.SetYAxis(yaxis); var series = new Series {Name = "Steps"}; var xaxis = new XAxis(); var categories = new List<string>(); var data = new List<object>(); for (var i = startDate; i <= currentMonth; i = i.AddMonths(1)) { categories.Add(i.Month.ToString() + "-" + i.Year.ToString()); data.Add(pedometerCalcService.MonthPct(i.Month, i.Year)); } xaxis.Categories = categories.ToArray(); series.Data = new Data(data.ToArray()); highchart.SetXAxis(xaxis); highchart.SetSeries(series); return highchart.ToHtmlString(); }
public string ReporteCantidadDePatosEnAustraliaPorMes() { Highcharts chart = new DotNet.Highcharts.Highcharts("Cantidad de patos en Australia") .SetXAxis(new XAxis { Categories = new[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" } }) .SetSeries(new Series { Data = new Data(new object[] { 29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4 }), Name = "Tarjetas" }); chart.SetYAxis(new YAxis() { Title = new YAxisTitle() { Text = "En miles" } }); chart.SetTitle(new Title() { Text = "Ventas del año pasado" }); string cadena = chart.ToHtmlString(); cadena = cadena.Substring(193); cadena = cadena.Substring(0, cadena.Length - 17); cadena = cadena.Replace("Cantidad de patos en Australia_container", "Chart"); return(cadena); }
public string ReporteTarjetasPorEmpleado() { BLL.BLLHistoricoSolicitudTarjeta bll = new BLL.BLLHistoricoSolicitudTarjeta(); var hist = bll.ObtenerHistoricoSolicitudTarjetasPorEmpleado(); Highcharts chart = new DotNet.Highcharts.Highcharts("Cantidad de patos en Australia"); chart.InitChart(new DotNet.Highcharts.Options.Chart { DefaultSeriesType = DotNet.Highcharts.Enums.ChartTypes.Column }); chart.SetTitle(new Title() { Text = "Cantidad de ventas por empleado" }); object[] datos = new object[hist.Length]; for (int i = 0; i < hist.Length; i++) { datos[i] = hist[i].Item2; } chart.SetSeries(new Series() { Data = new Data(datos), Name = "Tarjetas" }); string[] cat = new string[hist.Length]; for (int i = 0; i < hist.Length; i++) { cat[i] = hist[i].Item1; } chart.SetXAxis(new XAxis() { Categories = cat, }); chart.SetYAxis(new YAxis() { Title = new YAxisTitle() { Text = "Tarjetas" } }); string cadena = chart.ToHtmlString(); cadena = cadena.Substring(193); cadena = cadena.Substring(0, cadena.Length - 17); cadena = cadena.Replace("Cantidad de patos en Australia_container", "Chart"); return(cadena); }
protected void Render_Chart() { int nbValues = 10; DateTime dateFrom = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1); int maxDaysInMonth = DateTime.DaysInMonth(dateFrom.Year, dateFrom.Month); DateTime dateTo = new DateTime(DateTime.Now.Year, DateTime.Now.Month, maxDaysInMonth); var randomDatesValues = ChartsRandomDataGenerator.GenerateRandomDates(dateFrom, dateTo, nbValues); var randomNumberValues = ChartsRandomDataGenerator.GenerateRandomNumbers(1000, nbValues); object[] chartValues = randomNumberValues.Cast <object>().ToArray(); string[] dateValues = randomDatesValues.ToArray(); // Declare the HighCharts object DotNet.Highcharts.Highcharts chart = new DotNet.Highcharts.Highcharts("chart").InitChart(new Chart { DefaultSeriesType = ChartTypes.Column }) .SetTitle(new Title { Text = "Example of Chart", X = -50 }) .SetSubtitle(new Subtitle { Text = "All data are random", X = -70 }) .SetXAxis(new XAxis { Categories = dateValues //random dates }) .SetSeries(new[] { new Series { //Name = "# Dates", Data = new Data(chartValues) //random numbers }, }); chrtMyChart.Text = chart.ToHtmlString(); }
public void BuildChart() { bool hasTarget = true; decimal currentValue = 0; int firstDayOfWeek = Artexacta.App.Configuration.Configuration.GetFirstDayOfWeek(); decimal progress = KPIBLL.GetKpiProgress(KpiId, CategoryId, CategoryItemId, firstDayOfWeek, ref hasTarget, ref currentValue); if (!hasTarget) { CurrentValueLiteral.Text = currentValue.ToString(CultureInfo.InvariantCulture); CurrentValuePanel.Visible = true; return; } DotNet.Highcharts.Highcharts chart = new DotNet.Highcharts.Highcharts(ClientID) .InitChart(new Chart() { Type = ChartTypes.Gauge, PlotBackgroundColor = null, PlotBackgroundImage = null, PlotBorderWidth = 0, PlotShadow = false }) .SetTitle(new Title() { Text = "" }) .SetTooltip(new Tooltip() { ValueSuffix = "%" }) .SetPane(new Pane() { StartAngle = -150, EndAngle = 150, Background = new DotNet.Highcharts.Helpers.BackgroundObject[] { new DotNet.Highcharts.Helpers.BackgroundObject() { BackgroundColor = new DotNet.Highcharts.Helpers.BackColorOrGradient(new DotNet.Highcharts.Helpers.Gradient() { LinearGradient = new int[] { 0, 0, 0, 1 }, Stops = new object[, ] { { 0, "#FFF" }, { 1, "#333" } } }), BorderWidth = new DotNet.Highcharts.Helpers.PercentageOrPixel(1), OuterRadius = new DotNet.Highcharts.Helpers.PercentageOrPixel(109, true) }, new DotNet.Highcharts.Helpers.BackgroundObject() { BackgroundColor = new DotNet.Highcharts.Helpers.BackColorOrGradient(new DotNet.Highcharts.Helpers.Gradient() { LinearGradient = new int[] { 0, 0, 0, 1 }, Stops = new object[, ] { { 0, "#FFF" }, { 1, "#333" } } }), BorderWidth = new DotNet.Highcharts.Helpers.PercentageOrPixel(1), OuterRadius = new DotNet.Highcharts.Helpers.PercentageOrPixel(107, true) }, new DotNet.Highcharts.Helpers.BackgroundObject() , new DotNet.Highcharts.Helpers.BackgroundObject() { BackgroundColor = new DotNet.Highcharts.Helpers.BackColorOrGradient(ColorTranslator.FromHtml("#DDD")), BorderWidth = new DotNet.Highcharts.Helpers.PercentageOrPixel(0), OuterRadius = new DotNet.Highcharts.Helpers.PercentageOrPixel(105, true), InnerRadius = new DotNet.Highcharts.Helpers.PercentageOrPixel(103, true) } } }).SetYAxis(new YAxis() { Min = 0, Max = 100, MinorTickWidth = 1, MinorTickLength = 10, MinorTickPosition = TickPositions.Inside, MinorTickColor = ColorTranslator.FromHtml("#666"), TickPixelInterval = 30, TickWidth = 2, TickPosition = TickPositions.Inside, TickLength = 10, TickColor = ColorTranslator.FromHtml("#666"), Labels = new YAxisLabels() { Step = 2 }, Title = new YAxisTitle() { Text = "%" }, PlotBands = new YAxisPlotBands[] { new YAxisPlotBands() { From = 0, To = 33, Color = ColorTranslator.FromHtml("#DF5353") }, new YAxisPlotBands() { From = 33, To = 66, Color = ColorTranslator.FromHtml("#DDDF0D") }, new YAxisPlotBands() { From = 66, To = 100, Color = ColorTranslator.FromHtml("#55BF3B") } } }) .SetSeries(new Series() { Name = Resources.KpiDetails.CompleteLabel, Data = new DotNet.Highcharts.Helpers.Data(new object[] { progress }) }); ChartLiteral.Text = chart.ToHtmlString(); }
private void GetAreaChart() { DashboardViewModel dashboard = new DashboardViewModel(); dashboard.ViewModelEvent += dashboard_ViewModelEvent; // Get statistics List<Dictionary<string, object>> values = dashboard.GetAreaChart(); if (values != null) { Highcharts areaChart = new Highcharts("areaChart"); areaChart.InitChart(new Chart() { DefaultSeriesType = ChartTypes.Area, BackgroundColor = new DotNet.Highcharts.Helpers.BackColorOrGradient(Color.Transparent), Height = 300 }); areaChart.SetPlotOptions(new PlotOptions() { Series = new PlotOptionsSeries() { ConnectNulls = true, ConnectEnds = true } }); areaChart.SetLegend(new DotNet.Highcharts.Options.Legend() { Align = DotNet.Highcharts.Enums.HorizontalAligns.Center, Layout = DotNet.Highcharts.Enums.Layouts.Horizontal, VerticalAlign = DotNet.Highcharts.Enums.VerticalAligns.Bottom, BorderWidth = 0 }); areaChart.SetCredits(new DotNet.Highcharts.Options.Credits() { Enabled = false }); areaChart.SetTitle(new DotNet.Highcharts.Options.Title() { Text = "" }); YAxis yAxis = new YAxis(); yAxis.Title = new DotNet.Highcharts.Options.YAxisTitle() { Text = "" }; yAxis.Min = 0; XAxis xAxis = new XAxis(); xAxis.Categories = values[0].Keys.ToArray(); List<Series> seriesCollection = new List<Series>(); Series seriesUsers = new Series(); seriesUsers.Data = new DotNet.Highcharts.Helpers.Data(values[0].Values.ToArray()); seriesUsers.Name = "Users"; seriesCollection.Add(seriesUsers); Series seriesMailbox = new Series(); seriesMailbox.Data = new DotNet.Highcharts.Helpers.Data(values[1].Values.ToArray()); seriesMailbox.Name = "Mailbox"; seriesCollection.Add(seriesMailbox); if (StaticSettings.CitrixEnabled) { Series seriesCitrix = new Series(); seriesCitrix.Data = new DotNet.Highcharts.Helpers.Data(values[2].Values.ToArray()); seriesCitrix.Name = "Citrix"; seriesCollection.Add(seriesCitrix); } areaChart.SetXAxis(xAxis); areaChart.SetYAxis(yAxis); areaChart.SetSeries(seriesCollection.ToArray()); litAreaChart.Text = areaChart.ToHtmlString(); } else litAreaChart.Text = "Error populating chart."; }
private void GetBarChart() { DashboardViewModel dashboard = new DashboardViewModel(); dashboard.ViewModelEvent += dashboard_ViewModelEvent; Dictionary<string, object> mdbData = dashboard.GetDatabaseSizeChart(ConfigurationManager.ConnectionStrings["CPDatabase"].ConnectionString); if (mdbData != null) { var databaseNames = from d in mdbData orderby d.Key select d.Key; var databaseValues = from d in mdbData orderby d.Key select d.Value; List<object> arrayValues = databaseValues.ToList(); List<DotNet.Highcharts.Options.Point> points = new List<DotNet.Highcharts.Options.Point>(); for (int i = 0; i < arrayValues.Count; i++) { double theValue = 0; double.TryParse(arrayValues[i].ToString(), out theValue); points.Add(new DotNet.Highcharts.Options.Point() { Y = Number.GetNumber(theValue), Color = decimal.Parse(arrayValues[i].ToString()) > 500 ? System.Drawing.Color.Red : System.Drawing.Color.Blue }); } Highcharts columnChart = new Highcharts("mdbBarChart") .SetOptions(new DotNet.Highcharts.Helpers.GlobalOptions() { Lang = new DotNet.Highcharts.Helpers.Lang() { DecimalPoint = ".", ThousandsSep = "," } }) .InitChart(new Chart { DefaultSeriesType = ChartTypes.Column, BackgroundColor = new DotNet.Highcharts.Helpers.BackColorOrGradient(Color.Transparent), Height = 300 }) .SetTitle(new Title { Text = "" }) .SetCredits(new Credits { Enabled = false }) .SetXAxis(new XAxis { Categories = databaseNames.ToArray() }) .SetYAxis(new YAxis { Title = new YAxisTitle { Text = "GB" }, Labels = new YAxisLabels() { Enabled = true }, PlotLines = new[] { new YAxisPlotLines { Value = 0, Width = 1 } } }) .SetLegend(new Legend { Enabled = false }) .SetPlotOptions(new PlotOptions() { Column = new PlotOptionsColumn() { DataLabels = new PlotOptionsColumnDataLabels() { Enabled = true, Style = "fontWeight: 'bold'" } } }) .SetSeries(new[] { new Series { Name = "GB", Data = new DotNet.Highcharts.Helpers.Data(points.ToArray()) } } ); litBarChart.Text = columnChart.ToHtmlString(); // Change the div if (databaseNames.Count() > 8) divBarChart.Style.Value = "col-sm-12 col-md-12"; // If more than 8 database then make the graph full length of page else divBarChart.Style.Value = "col-sm-6 col-md-6"; // Otherwise half length } else litBarChart.Text = "Error populating the bar chart"; }
protected void Button4_Click(object sender, EventArgs e) { var FASna = (List <string>)Session["Asname"]; var g = FASna.GroupBy(i => i); int countLength = 0; foreach (var grp in g) { countLength++; } object[] data = new object[countLength]; int index = 0; foreach (var grp in g) { data[index] = new object[] { grp.Key, grp.Count() }; index++; } DotNet.Highcharts.Highcharts chart = new DotNet.Highcharts.Highcharts("chart").InitChart(new Chart { DefaultSeriesType = ChartTypes.Pie, PlotShadow = false }) .SetTitle(new Title { Text = "% Path Covered by Autonomous Systems" }) .SetTooltip(new Tooltip { Formatter = "function() { return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %'; }" }) .SetPlotOptions(new PlotOptions { Pie = new PlotOptionsPie { AllowPointSelect = true, Cursor = Cursors.Pointer, DataLabels = new PlotOptionsPieDataLabels { Color = ColorTranslator.FromHtml("#000000"), ConnectorColor = ColorTranslator.FromHtml("#000000"), Formatter = "function() { return '<b>'+ this.point.name +'</b>: '+ Math.round(this.percentage) +' %'; }" }, } }) .SetSeries(new Series { Data = new Data(data) }); Literal1.Text = chart.ToHtmlString(); //////////////////// RTT //////////////////////// // Series[] series = new Series[Frttave.Count()]; // string[] array_DistrictNames = new string[Frttave.Count()]; // data = new object[Frttave.Count()]; // int index2 = 0; // foreach (var district in Frttave) // { // series[index2] = new Series { Name = index2.ToString(), Data = new Data(new object[] { district }) }; // array_DistrictNames[index2] = index2.ToString(); // index2++; // } // DotNet.Highcharts.Highcharts chart2 = new DotNet.Highcharts.Highcharts("chart").InitChart(new Chart { DefaultSeriesType = ChartTypes.Column, Margin = new int[] { 50, 50, 100, 80 } }) // .SetTitle(new Title { Text = "District Based Registered Institutes" }) // .SetPlotOptions(new PlotOptions // { // Bar = new PlotOptionsBar // { // DataLabels = new PlotOptionsSeriesDataLabels // { // Enabled = true // } // } // } // ) //.SetXAxis(new XAxis //{ // Categories = new[] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30" } //}) // .SetYAxis(new YAxis { Title = new YAxisTitle { Text = "Registered Institutions", Align = AxisTitleAligns.High } }) // ; // chart2.SetSeries(series); // Literal2.Text = chart2.ToHtmlString(); }
public string CurrentMonthGoalProgressNet() { var now = DateTime.Now; var daysInMonth = DateTime.DaysInMonth(now.Year, now.Month); var expectedPct = ((decimal)now.Day / daysInMonth); var remainingDays = daysInMonth - now.Day; var stepsPR = pedometerCalcService.StepsPR(); var remainingSteps = (int) (stepsPR-pedometerCalcService.MonthStepsActual())/remainingDays; var highchart = new Highcharts("CurrentMonthGoal"); var chart = new Chart() {Type = ChartTypes.Bar}; var categories = new List<string> {"Steps"}; var yaxis = new YAxis {Max = 1}; var seriesArray = new List<Series>(); var series = new Series {Name = "Expected",Color = Color.Red}; var data = new List<object> {pedometerCalcService.MonthPctExpected(now)}; var plotoptions = new PlotOptionsBar { Grouping = false, Shadow = false, DataLabels = new PlotOptionsBarDataLabels() { Enabled = false, Format = string.Format("Expected: {0}", (int) (stepsPR*expectedPct)), Color = Color.White } }; series.Data = new Data(data.ToArray()); series.PlotOptionsBar = plotoptions; seriesArray.Add(series); series = new Series {Name = "Actual", Color = Color.Green}; data = new List<object> { pedometerCalcService.MonthPct(now.Month, now.Year) }; plotoptions = new PlotOptionsBar { Grouping = false, Shadow = false, DataLabels = new PlotOptionsBarDataLabels() { Enabled = true, Format = string.Format("Remaining: {0}/day", remainingSteps), Color = Color.White, Shadow = false } }; series.Data = new Data(data.ToArray()); series.PlotOptionsBar = plotoptions; seriesArray.Add(series); highchart.InitChart(chart); highchart.SetTitle(new Title() {Text = "Month Progress"}); highchart.SetXAxis(new XAxis() {Categories = categories.ToArray()}); highchart.SetYAxis(yaxis); highchart.SetSeries(seriesArray.ToArray()); highchart.SetTooltip(new Tooltip() {Enabled = false}); return highchart.ToHtmlString(); }
public string WeightYearProgressNet() { var startWeight = pedometerCalcService.GetStartWeight(DateTime.Now.Year); const int goalWeight = 144; var currentWeight = pedometerCalcService.GetRecentWeight(); var goalLoss = startWeight - goalWeight; var actualLoss = Math.Round(startWeight - currentWeight, 1); var expectedPct = (DateTime.Now.DayOfYear / 365.0); var expectedLoss = Math.Round(expectedPct * goalLoss, 1); var highchart = new Highcharts("weightloss"); var chart = new Chart() { Type = ChartTypes.Gauge }; highchart.InitChart(chart); highchart.SetTitle(new Title{Text = "Weight Loss " + Math.Round(currentWeight,1)}); var series = new Series {Data = new Data(new object[] {actualLoss})}; highchart.SetSeries(series); var pane = new Pane { Background = new[] { new BackgroundObject { InnerRadius = new PercentageOrPixel(60, true), OuterRadius = new PercentageOrPixel(100, true) } }, StartAngle = 0, EndAngle = 360 }; highchart.SetPane(pane); var yaxis = new YAxis { Min = 0, Max = goalLoss, PlotBands = new[] { new YAxisPlotBands { From = 0, To = expectedLoss, Color = Color.Red }, new YAxisPlotBands { From = expectedLoss, To = expectedLoss+0.7, Color = Color.Yellow }, new YAxisPlotBands { From = expectedLoss+0.7, To = goalLoss, Color = Color.Green } }, Labels = new YAxisLabels() { Style = "color:'black'"} }; highchart.SetYAxis(yaxis); highchart.SetTooltip(new Tooltip() {Enabled = false}); highchart.SetSubtitle(new Subtitle() { Text = string.Format("Actual: {0} | Expected: {1} | Difference: {2}", actualLoss, expectedLoss, actualLoss-expectedLoss) }); highchart.SetLegend(new Legend() {Enabled = false}); return highchart.ToHtmlString(); }
protected void Page_Load(object sender, EventArgs e) { var FASna = (List <string>)Session["AsName"]; var Frtta = (List <string>)Session["Rttave"]; List <int> Frttave = new List <int>(); int Rrtt11 = 0; foreach (var item in Frtta) { string Rrtttemp = item; char[] Rendchar = { ' ', 'm', 's' }; string Rtrimen = Rrtttemp.TrimEnd(Rendchar); Rrtt11 = Convert.ToInt16(Rtrimen); Frttave.Add(Rrtt11); } var g = FASna.GroupBy(i => i); int countLength = 0; foreach (var grp in g) { countLength++; } object[] data = new object[countLength]; int index = 0; foreach (var grp in g) { data[index] = new object[] { grp.Key, grp.Count() }; index++; } DotNet.Highcharts.Highcharts chart = new DotNet.Highcharts.Highcharts("chart").InitChart(new Chart { DefaultSeriesType = ChartTypes.Pie, PlotShadow = false }) .SetTitle(new Title { Text = "Province Based Institutions Registration" }) .SetTooltip(new Tooltip { Formatter = "function() { return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %'; }" }) .SetPlotOptions(new PlotOptions { Pie = new PlotOptionsPie { AllowPointSelect = true, Cursor = Cursors.Pointer, DataLabels = new PlotOptionsPieDataLabels { Color = ColorTranslator.FromHtml("#000000"), ConnectorColor = ColorTranslator.FromHtml("#000000"), Formatter = "function() { return '<b>'+ this.point.name +'</b>: '+ Math.round(this.percentage) +' %'; }" }, } }) .SetSeries(new Series { Data = new Data(data) }); Literal1.Text = chart.ToHtmlString(); //////////////////// RTT //////////////////////// Series[] series = new Series[Frttave.Count()]; string[] array_DistrictNames = new string[Frttave.Count()]; data = new object[Frttave.Count()]; int index2 = 0; foreach (var district in Frttave) { series[index2] = new Series { Name = index2.ToString(), Data = new Data(new object[] { district }) }; array_DistrictNames[index2] = index2.ToString(); index2++; } DotNet.Highcharts.Highcharts chart2 = new DotNet.Highcharts.Highcharts("chart").InitChart(new Chart { DefaultSeriesType = ChartTypes.Column, Margin = new int[] { 50, 50, 100, 80 } }) .SetTitle(new Title { Text = "District Based Registered Institutes" }) .SetPlotOptions(new PlotOptions { Bar = new PlotOptionsBar { DataLabels = new PlotOptionsSeriesDataLabels { Enabled = true } } } ) .SetXAxis(new XAxis { Categories = new [] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30" } }) .SetYAxis(new YAxis { Title = new YAxisTitle { Text = "Registered Institutions", Align = AxisTitleAligns.High } }) ; chart2.SetSeries(series); Literal2.Text = chart2.ToHtmlString(); }
protected void Page_Load(object sender, EventArgs e) { var list = //new List<Tuple<string, string>>(); // list.Add(new Tuple<string, string>("START_PERIOD", "January 2017")); // list.Add(new Tuple<string, string>("END_PERIOD", "January 2017")); // list.Add(new Tuple<string, string>("BRAND", "Coca Cola")); // list.Add(new Tuple<string, string>("PRESENTATION_TYPE", "table")); // list.Add(new Tuple<string, string>("CITY_NAME", "NICOSIA")); // list.Add(new Tuple<string, string>("SELECT CLAUSE", "show")); // list.Add(new Tuple<string, string>("Function", "sales")); (List <Tuple <string, string> >)HttpContext.Current.Session["Pairs"]; if (list == null) { Response.Redirect("Default.aspx"); } var serializer = new XmlSerializer(typeof(XMLObject.language)); var loadStream = new FileStream(HttpRuntime.AppDomainAppPath + "\\file2.xml", FileMode.Open, FileAccess.Read); var loadedObject = (XMLObject.language)serializer.Deserialize(loadStream); var FROM = new List <string>(); var GROUP_BY = new List <string>(); var SELECT = new List <string>(); var WHERE = new List <string>(); FROM.Add("[NQL].[dbo].[PROCESSED_DATA]"); string ptype = ""; string period = ""; foreach (var item in list) { if (item.Item1.Equals("START_PERIOD")) { period = "PERIOD_ID BETWEEN " + "[NQL].[dbo].[GET_PERIOD_ID]('" + item.Item2 + "')" + " AND "; } // Console.WriteLine(loadedObject.dimensions.product.); if (item.Item1.Equals("END_PERIOD")) { period += "[NQL].[dbo].[GET_PERIOD_ID]('" + item.Item2 + "')"; } if (item.Item1.Equals("PRESENTATION_TYPE")) { ptype = item.Item2; } } WHERE.Add(period); string putLast = ""; foreach (var item in list) { if (!item.Item1.Equals("START_PERIOD") && !item.Item1.Equals("END_PERIOD") && !item.Item1.Equals("PRESENTATION_TYPE") && !item.Item1.Equals("SELECT CLAUSE")) { if (item.Item1.Equals("FUNCTION")) { putLast = item.Item2; SELECT.Add("PERIOD_NAME"); // SELECT.Add(item.Item2); GROUP_BY.Add("PERIOD_NAME"); } else if (!SELECT.Contains(item.Item1)) { SELECT.Add(item.Item1); GROUP_BY.Add(item.Item1); string tmp = ""; tmp = item.Item1 + "='" + item.Item2 + "'"; WHERE.Add(tmp); } } } if (putLast.ToLower().Trim().Equals("sales value")) { SELECT.Add("SUM(SALES_VALUE) AS SALES_VALUE"); } if (putLast.ToLower().Trim().Equals("sales volume")) { SELECT.Add("SUM(SALES_VOLUME) AS SALES_VOLUME"); } if (putLast.ToLower().Trim().Equals("sales") || putLast.ToLower().Trim().Equals("sales items")) { SELECT.Add("SUM(SALES_QUANTITY) AS SALES_QUANTITY"); } SELECT = SELECT.Where(s => !string.IsNullOrWhiteSpace(s)).Distinct().ToList(); WHERE = WHERE.Where(s => !string.IsNullOrWhiteSpace(s)).Distinct().ToList(); GROUP_BY = GROUP_BY.Where(s => !string.IsNullOrWhiteSpace(s)).Distinct().ToList(); string query = "SELECT "; string select = ""; var last = SELECT.Last(); foreach (var VARIABLE in SELECT) { // query += VARIABLE; if (VARIABLE.Equals(last)) { select += VARIABLE + " "; } else { select += VARIABLE + ", "; } } loadedObject.result.SELECT = select; query += select; query += "\nFROM "; string from = ""; last = FROM.Last(); foreach (var VARIABLE in FROM) { // query += VARIABLE; if (VARIABLE.Equals(last)) { from += VARIABLE + " "; } else { from += VARIABLE + ", "; } } query += from; loadedObject.result.FROM = from; if (WHERE.Count > 0) { query += "\nWHERE "; last = WHERE.Last(); string where = ""; foreach (var VARIABLE in WHERE) { // query += VARIABLE; if (VARIABLE.Equals(last)) { where += VARIABLE + " "; } else { where += VARIABLE + " AND "; } } query += where; loadedObject.result.WHERE = where; } query += "\nGROUP BY "; last = GROUP_BY.Last(); string groupby = ""; foreach (var VARIABLE in GROUP_BY) { // query += VARIABLE; if (VARIABLE.Equals(last)) { groupby += VARIABLE + " "; } else { groupby += VARIABLE + ", "; } } query += groupby; loadedObject.result.GROUP_BY = groupby; using (var writer = new StreamWriter(HttpRuntime.AppDomainAppPath + "\\result.xml")) { serializer.Serialize(writer, loadedObject); writer.Flush(); } loadStream.Close(); multitxt.Text = query; DataTable dt = GetData(query); gridView.DataSource = dt; gridView.DataBind(); gridView.UseAccessibleHeader = true; // gridView.HeaderRow.TableSection = TableRowSection.TableHeader; DataColumnCollection columns = dt.Columns; string myStr = ""; if (columns.Contains("SALES_VALUE")) { myStr = "SALES_VALUE"; } if (columns.Contains("SALES_VOLUME")) { myStr = "SALES_VOLUME"; } if (columns.Contains("SALES_QUANTITY")) { myStr = "SALES_QUANTITY"; } // SerializedDataOfChart(query); DataView dv = new DataView(dt); DataTable dtT = dv.ToTable(true, "PERIOD_NAME", myStr); List <string> ctgries = new List <string>(); var values = new List <double>(); foreach (DataRow row in dtT.Rows) { ctgries.Add(Convert.ToString(row["PERIOD_NAME"])); values.Add(Convert.ToDouble(row[myStr])); } string[] ca = ctgries.ToArray(); object[] cc = values.Select(d => (object)d).ToArray(); if (ptype.ToLower().Trim().Equals("table")) { gridView.Visible = true; } else if (ptype.ToLower().Trim().Equals("line chart")) { ltrChart.Visible = true; DotNet.Highcharts.Highcharts chart = new DotNet.Highcharts.Highcharts("chart").SetXAxis(new XAxis { Categories = ca }).SetSeries(new Series { Data = new Data(cc), Name = myStr }).SetTitle(new Title { Text = "Line Chart" }); ltrChart.Text = chart.ToHtmlString(); } else if (ptype.ToLower().Trim().Equals("bar chart")) { ltrChart.Visible = true; DotNet.Highcharts.Highcharts chart = new DotNet.Highcharts.Highcharts("chart") .InitChart(new Chart { DefaultSeriesType = ChartTypes.Bar }) .SetTitle(new Title { Text = "Bar Chart" }) .SetXAxis(new XAxis { Categories = ca }) .SetYAxis(new YAxis { Min = 0, Title = new YAxisTitle { Text = myStr, Align = AxisTitleAligns.High } }) .SetPlotOptions(new PlotOptions { Bar = new PlotOptionsBar { DataLabels = new PlotOptionsBarDataLabels { Enabled = true } } }) // .SetLegend(new Legend // { // Layout = Layouts.Vertical, // Align = HorizontalAligns.Right, // VerticalAlign = VerticalAligns.Top, // X = -100, // Y = 100, // Floating = true, // BorderWidth = 1, // BackgroundColor = new BackColorOrGradient(ColorTranslator.FromHtml("#FFFFFF")), // Shadow = true // }) .SetSeries(new Series { Data = new Data(cc), Name = myStr }); ltrChart.Text = chart.ToHtmlString(); } // foreach (DataRow row in dtT.Rows) // { // ctgries.Add(Convert.ToString(row["PERIOD_NAME"])); // values.Add(Convert.ToDouble(row[myStr])); // // // string[] ca = ctgries.ToArray(); // object[] cc = values.Select(d => (object)d).ToArray(); // DotNet.Highcharts.Highcharts chart = new DotNet.Highcharts.Highcharts("barchart").SetXAxis(new XAxis // { // Categories = ca // }).SetSeries(new Series // { // Name = myStr, // Data = new Data(cc) // }); // barChart.Text = chart.ToHtmlString(); // } }
public void BuildChart() { int kpiId = KpiId; string strategyId = ""; string startingPeriod = ""; string endingPeriod = ""; decimal target = 0; int firstDayOfWeek = Artexacta.App.Configuration.Configuration.GetFirstDayOfWeek(); List <KpiChartData> measurements = KpiMeasurementBLL.GetKPIMeasurementForChart(kpiId, CategoryId, CategoryItemId, firstDayOfWeek, ref strategyId, ref target, ref startingPeriod, ref endingPeriod); Dictionary <string, object> standardSerie = new Dictionary <string, object>(); Dictionary <string, object> targetStandardSerie = new Dictionary <string, object>(); Dictionary <string, object> sumSerie = new Dictionary <string, object>(); Dictionary <string, object> targetSumSerie = new Dictionary <string, object>(); KPI objKpi = KPIBLL.GetKPIById(kpiId); bool hasTarget = target != -1; bool isSum = strategyId == "SUM"; bool isTargetUsable = false; //bool isSerieUsable = false; decimal sumMeasurement = 0; decimal sumTarget = 0; foreach (var item in measurements) { //if (!string.IsNullOrEmpty(startingPeriod) && item.Period == startingPeriod) // isSerieUsable = true; //if (isSerieUsable) standardSerie.Add(item.Period, item.Measurement); //else // standardSerie.Add(item.Period, null); if (isSum) { sumMeasurement = sumMeasurement + item.Measurement; //if (isSerieUsable) sumSerie.Add(item.Period, sumMeasurement); //else // sumSerie.Add(item.Period, null); if (hasTarget) { if (!string.IsNullOrEmpty(startingPeriod) && item.Period == startingPeriod) { isTargetUsable = true; } if (!string.IsNullOrEmpty(endingPeriod) && item.Period == endingPeriod) { isTargetUsable = false; } if (isTargetUsable) { sumTarget = sumTarget + target; targetSumSerie.Add(item.Period, sumTarget); } else { targetSumSerie.Add(item.Period, null); } } } if (hasTarget) { if (!string.IsNullOrEmpty(startingPeriod) && item.Period == startingPeriod) { isTargetUsable = true; } if (!string.IsNullOrEmpty(endingPeriod) && item.Period == endingPeriod) { isTargetUsable = false; } if (isTargetUsable) { targetStandardSerie.Add(item.Period, target); } else { targetStandardSerie.Add(item.Period, null); } } } List <Series> series = new List <Series>(); series.Add(new Series { Name = Resources.KpiDetails.ValuesLabel, Data = new Data(standardSerie.Values.ToArray <object>()) }); if (hasTarget) { series.Add(new Series { Name = Resources.KpiDetails.KpiTargetLabel, Color = System.Drawing.Color.Red, Data = new Data(targetStandardSerie.Values.ToArray <object>()) }); } DotNet.Highcharts.Highcharts chart = new DotNet.Highcharts.Highcharts(ClientID) .InitChart(new Chart() { Type = ChartTypes.Line }) .SetTitle(new Title() { Text = "" }) .SetXAxis(new XAxis { Categories = standardSerie.Keys.ToArray <string>() }) .SetSeries(series.ToArray()) .SetLegend(new Legend() { Layout = Layouts.Horizontal, Align = HorizontalAligns.Center, VerticalAlign = VerticalAligns.Bottom, BorderWidth = 0 }); if (objKpi.UnitID != "TIME") { //chart.SetTooltip(new Tooltip() //{ // ValueSuffix = " " + objKpi.uni.ToLower() + "s" //}); } else { chart.SetTooltip(new Tooltip() { Formatter = "function (){" + "return decimalToYYMMDDhhmm(this.y).toString('" + Resources.DataTime.YearsValueSingle + "','" + Resources.DataTime.YearsValue + "'," + "'" + Resources.DataTime.MonthsValueSingle + "'," + "'" + Resources.DataTime.MonthsValue + "'," + "'" + Resources.DataTime.DaysValueSingle + "'," + "'" + Resources.DataTime.DaysValue + "'," + "'" + Resources.DataTime.HoursValueSingle + "'," + "'" + Resources.DataTime.HoursValue + "'," + "'" + Resources.DataTime.MinutesValueSingle + "'," + "'" + Resources.DataTime.MinutesValue + "');" + "}" }); } ChartLiteral.Text = chart.ToHtmlString(); if (isSum) { series = new List <Series>(); series.Add(new Series { Name = Resources.KpiDetails.ValuesLabel, Data = new Data(sumSerie.Values.ToArray <object>()) }); if (hasTarget) { series.Add(new Series { Name = Resources.KpiDetails.KpiTargetLabel, Color = System.Drawing.Color.Red, Data = new Data(targetSumSerie.Values.ToArray <object>()) }); } chart = new DotNet.Highcharts.Highcharts(ClientID + "_sum") .InitChart(new Chart() { Type = ChartTypes.Line }) .SetTitle(new Title() { Text = "" }) .SetXAxis(new XAxis { Categories = standardSerie.Keys.ToArray <string>() }) .SetSeries(series.ToArray()) .SetLegend(new Legend() { Layout = Layouts.Horizontal, Align = HorizontalAligns.Center, VerticalAlign = VerticalAligns.Bottom, BorderWidth = 0 }); if (objKpi.UnitID != "TIME") { //chart.SetTooltip(new Tooltip() //{ // ValueSuffix = " " + objKpi.uni.ToLower() + "s" //}); } else { chart.SetTooltip(new Tooltip() { Formatter = "function (){" + "return decimalToYYMMDDhhmm(this.y).toString('" + Resources.DataTime.YearsValueSingle + "','" + Resources.DataTime.YearsValue + "'," + "'" + Resources.DataTime.MonthsValueSingle + "'," + "'" + Resources.DataTime.MonthsValue + "'," + "'" + Resources.DataTime.DaysValueSingle + "'," + "'" + Resources.DataTime.DaysValue + "'," + "'" + Resources.DataTime.HoursValueSingle + "'," + "'" + Resources.DataTime.HoursValue + "'," + "'" + Resources.DataTime.MinutesValueSingle + "'," + "'" + Resources.DataTime.MinutesValue + "');" + "}" }); } SumChartLiteral.Text = chart.ToHtmlString(); SumChartPanel.Visible = true; } }