Data Storage class for MSChartExtension
Example #1
0
 public LineChart(ChartSize size, ChartData data, AxisType axisTypes, AxisLabels labels, AxisRange ranges)
     : base(LineTypeDefinition, size, data)
 {
     _labels = labels;
     _axisType = axisTypes;
     _ranges = ranges;
 }
Example #2
0
 public LineChart(ChartSize size, ChartData data, AxisType axisTypes, AxisLabels labels, DataScale dataScale)
     : base(LineTypeDefinition, size, data)
 {
     _labels = labels;
     _axisType = axisTypes;
     _dataScale = dataScale;
 }
Example #3
0
        public IActionResult GetSportDistributionGraph()
        {
            TrackerViewModel tvm = new TrackerViewModel();
            var userId = _userManager.GetUserId(HttpContext.User);
            tvm.Entries = _ctx.Tracker.GetEntriesForUser(Guid.Parse(userId));
            tvm.SportsList = _ctx.Tracker.GetSportsList();

            ChartData<string, double> pie = new ChartData<string, double>();
            GeneratePieItemsFromTracker(tvm, pie);

            return PartialView("Chart/PieChart", pie);
        }
Example #4
0
        public Selection()
        {
            InitializeComponent();

              var source = Product.GetProducts(8);

              chart.View.AxisX.AnnoAngle = 60;

              var style = new Style(typeof(PlotElement));
              //style.Setters.Add(new Setter(PlotElement.FillProperty, Brushes.Red));
              style.Setters.Add(new Setter(PlotElement.StrokeThicknessProperty, 4.0));
              style.Setters.Add(new Setter(PlotElement.StrokeProperty, new SolidColorBrush(Color.FromArgb(255, 224, 64, 64))));

              var data = new ChartData() { ItemNameBinding = new Binding("Name") };
              data.Children.Add(new DataSeries()
              {
            // ItemsSource = source,
            SelectedItemLabelTemplate = (DataTemplate)Resources["lbl"],
            Label = "Price",
            ValueBinding = new Binding("Price"),
            SelectedItemStyle = style
              });
              data.Children.Add(new DataSeries()
              {
            // ItemsSource = source,
            SelectedItemLabelTemplate = (DataTemplate)Resources["lbl"],
            Label = "Cost",
            ValueBinding = new Binding("Cost"),
            SelectedItemStyle = style
              });

              chart.Data = data;

              data.ItemsSource = source;

              grid.ItemsSource = source;
              grid.AutoGenerateColumns = false;
              grid.Columns.Add(new C1.WPF.FlexGrid.Column() { ColumnName = "Name", Binding = new Binding("Name") });
              grid.Columns.Add(new C1.WPF.FlexGrid.Column() { ColumnName = "Price", Binding = new Binding("Price") });
              grid.Columns.Add(new C1.WPF.FlexGrid.Column() { ColumnName = "Cost", Binding = new Binding("Cost") });

              grid.SelectionMode = C1.WPF.FlexGrid.SelectionMode.Row;
              grid.SelectionForeground = new SolidColorBrush(Colors.Red);

              cbSelectionMode.ItemsSource = Utils.GetEnumValues<SelectionAction>();
              cbSelectionMode.SelectionChanged += (s, e) => data.SelectionAction = (SelectionAction)cbSelectionMode.SelectedItem;
              cbSelectionMode.SelectedIndex = 1;

              cbChartType.ItemsSource = new ChartType[] { ChartType.Column, ChartType.Bar, ChartType.LineSymbols, ChartType.Pie };
              cbChartType.SelectedIndex = 0;
              cbChartType.SelectionChanged += (s, e) => chart.ChartType = (ChartType)cbChartType.SelectedItem;
        }
Example #5
0
        private async Task RenderAsync(GraphData data)
        {
            Chart chartConfig;

            lock (_sync)
            {
                if (!_chartDataDictionary.ContainsKey(data.CorrelationID))
                {
                    return;
                }
                chartConfig = _chartDataDictionary[data.CorrelationID];
            }

            var visualizationMessage = new VisualizationMessage
            {
                messages = new ChartData[1]
            };
            var chartData = new ChartData
            {
                Chart     = chartConfig,
                Points    = data.Values,
                IsAnomaly = data.Anomaly
            };

            visualizationMessage.messages[0] = chartData;

            // Todo:  make this an in-proc call, rather than SignalR
            try
            {
                await _connection.InvokeAsync("SendInput", JsonConvert.SerializeObject(visualizationMessage));
            }
            catch (Exception)
            {
                // ignored
            }
        }
Example #6
0
        public ActionResult OverallRates(Guid?DepartmentGUID, Guid?ProjectGUID)
        {
            ChartData <SingleColorChartDataset <double> > chartData = new ChartData <SingleColorChartDataset <double> >();

            if (DepartmentGUID == null && ProjectGUID == null)
            {
                chartData.labels = new List <string>()
                {
                    "總體專案完成率", "總體預算執行率"
                };
            }
            else if (ProjectGUID != null)
            {
                chartData.labels = new List <string>()
                {
                    "專案完成率", "預算執行率"
                };
            }
            else
            {
                chartData.labels = new List <string>()
                {
                    "部門專案完成率", "部門預算執行率"
                };
            }

            chartData.datasets.Add(new SingleColorChartDataset <double>
            {
                label           = "Rate",
                backgroundColor = "rgba(91, 155, 213, 0.5)",
                borderColor     = "rgba(91, 155, 213, 1)",
                data            = ProjectRepo.GetCollections().GetOverallRates(DepartmentGUID, ProjectGUID)
            });

            return(Content(JsonConvert.SerializeObject(chartData), "application/json"));
        }
Example #7
0
        void OpenFile(byte[] b)
        {
			//bool chartdata = true;

			IChartFile icf = FileFactory.GetChartFile(new MemoryStream(b));

			string s = Encoding.ASCII.GetString(b);

			string sb = s.Substring(s.Length-20);
			
			if(icf is FtXnc)
			{
				OpenFile(ChartData.FromXml(new MemoryStream(b)));
			}
			else if( icf is FtXnmc)
			{
				Chart c =  new Chart();
				c.MdiParent = this;
				c.Show();

				using(MemoryStream ms = new MemoryStream(b))
				{
					try
					{
						
						c.Open(ms,false);
					}	
					catch
					{
		
					}
					ms.Close();
				}
			}

		}
        public void TestStackedColumn100Chart()
        {
            // const string sql = "EXEC Vermoegen_Db.[dbo].SetFinDBUser 'bodoprivate' exec Vermoegen_Db.[dbo].[GetAnteilswerte] 120, 1";

            const string fileName = @"d:\temp\ScottPlott_Db_StackedColumn100Chart.png";

            if (File.Exists(fileName))
            {
                File.Delete(fileName);
            }

            var data = new ChartData
            {
                Title      = "Test portfolio",
                Copyright  = "Testfirma",
                XLabelText = "Anlageklassen",
                YLabelText = "Anteilswert",
                FileName   = fileName,
                ChartType  = ChartType.StackedColumn100Chart,
            };

            TestHelper.LoadDefaultChartStyle(data);

            var dt = TestHelper.GetDataTable("StackedColumnChart.xml");

            ChartUtility.DataTableToChartItemData(dt, "", data);

            var x = new ChartHandler
            {
                ChartData = data
            };

            x.Export();

            TestHelper.StartFile(fileName);
        }
Example #9
0
        public JsonResult GetEnemyData()
        {
            List <EnemyDO> doList       = eDAO.ViewAllEnemies();
            List <EnemyPO> enemyList    = Mapper.Mapper.EnemyDOListToPO(doList);
            List <string>  locationList = new List <string>();

            locationList = Mapper.BLLMapper.PullEnemyLocation(enemyList);

            Dictionary <string, int> locationOccurance = new Dictionary <string, int>();

            locationOccurance = AnalyzeItemList.LocationCount(locationList);

            ChartData <string, int> chartData = new ChartData <string, int>();

            chartData.Labels = new List <string>();
            chartData.Values = new List <int>();
            foreach (KeyValuePair <string, int> location in locationOccurance)
            {
                chartData.Labels.Add(location.Key);
                chartData.Values.Add(location.Value);
            }

            return(Json(chartData, JsonRequestBehavior.AllowGet));
        }
        static void BubbleChart(IWorkbook workbook)
        {
            #region #BubbleChart
            Worksheet worksheet = workbook.Worksheets["chartBubble"];
            workbook.Worksheets.ActiveWorksheet = worksheet;

            // Create a chart and specify its location
            Chart chart = worksheet.Charts.Add(ChartType.Bubble3D);
            chart.TopLeftCell     = worksheet.Cells["F2"];
            chart.BottomRightCell = worksheet.Cells["L15"];

            Series s1 = chart.Series.Add(worksheet["A3"], worksheet["C3:C7"], worksheet["D3:D7"]);
            s1.BubbleSize = ChartData.FromRange(worksheet["E3:E7"]);
            Series s2 = chart.Series.Add(worksheet["A9"], worksheet["C9:C13"], worksheet["D9:D13"]);
            s2.BubbleSize = ChartData.FromRange(worksheet["E9:E13"]);

            // Set the chart style
            chart.Style = ChartStyle.ColorGradient;
            // Set the bubble size 1.5x relative to the default setting.
            chart.Views[0].BubbleScale = 150;

            // Hide the legend
            chart.Legend.Visible = false;

            // Display data labels
            DataLabelOptions dataLabels = chart.Views[0].DataLabels;
            dataLabels.ShowBubbleSize = true;

            // Set the minimum and maximum values for the chart value axis.
            Axis axis = chart.PrimaryAxes[1];
            axis.Scaling.AutoMax = false;
            axis.Scaling.Max     = 82;
            axis.Scaling.AutoMin = false;
            axis.Scaling.Min     = 64;
            #endregion #BubbleChart
        }
Example #11
0
 public void LoadData2(List<TimeSpan> data, int graphId, string label)
 {
     switch (graphId)
     {
         case 1:
             if (null == data)
             {
                 _data2 = null;
             }
             else
             {
                 _startDate2 = _startDate1;
                 _data2 = ChartData.CreateChartData(data);
             }
             break;
         case 2:
             if (null == data)
             {
                 _data3 = null;
             }
             else
             {
                 _startDate3 = _startDate1;
                 _data3 = ChartData.CreateChartData(data);
             }
             break;
         case 3:
             if (null == data)
             {
                 _data4 = null;
             }
             else
             {
                 _startDate4 = _startDate1;
                 _data4 = ChartData.CreateChartData(data);
             }
             break;
         case 4:
             if (null == data)
             {
                 _data5 = null;
             }
             else
             {
                 _startDate5 = _startDate1;
                 _data5 = ChartData.CreateChartData(data);
             }
             break;
         case 5:
             if (null == data)
             {
                 _data6 = null;
             }
             else
             {
                 _startDate6 = _startDate1;
                 _data6 = ChartData.CreateChartData(data);
             }
             break;
         case 6:
             if (null == data)
             {
                 _data7 = null;
             }
             else
             {
                 _startDate7 = _startDate1;
                 _data7 = ChartData.CreateChartData(data);
             }
             break;
         case 7:
             if (null == data)
             {
                 _data8 = null;
             }
             else
             {
                 _startDate8 = _startDate1;
                 _data8 = ChartData.CreateChartData(data);
             }
             break;
     }
     _dataLabels[graphId] = label;
 }
Example #12
0
        public async Task <SummaryStats> GetSummaryStats()
        {
            var generalStats = await _generalStatsRepository.GetAsync();

            var mistakes = new List <Tuple <string, int> >
            {
                new Tuple <string, int>("Niepoprawnie wykryty obiekt", generalStats.IncorrectObjectsDetections),
                new Tuple <string, int>("Nieznaleziony obiekt", generalStats.NotFoundObjects),
                new Tuple <string, int>("Wielokrotnie znaleziony obiekt", generalStats.MultipleObjectsDetections),
                new Tuple <string, int>("Niepoprawne zaznaczenie", generalStats.IncorrectBoxDetections)
            };

            mistakes.Sort((x, y) => y.Item2.CompareTo(x.Item2));

            var labelList = new List <string>();
            var valueList = new List <int>();

            foreach (var item in generalStats.ObjectsFound.Take(10))
            {
                labelList.Add(item.Key);
                valueList.Add(item.Value);
            }


            var correctAndAllMistakesChart = new ChartData
            {
                Title     = "Bezbłędne wykrycia",
                Key       = "correctAndAllMistakesChart",
                ChartType = "doughnut",
                Data      = new Tuple <List <string>, List <int> >
                            (
                    new List <string> {
                    "Poprawne", "Niepoprawne"
                },
                    new List <int> {
                    generalStats.CorrectObjectsDetections, generalStats.AllMistakes
                }
                            )
            };

            var correctAndSmallMistakesChart = new ChartData
            {
                Title     = "Wykrycia z małoistotnymi błędami",
                Key       = "correctAndSmallMistakesChart",
                ChartType = "doughnut",
                Data      = new Tuple <List <string>, List <int> >
                            (
                    new List <string> {
                    "Poprawne", "Niepoprawne"
                },
                    new List <int> {
                    generalStats.CorrectObjectsDetections, generalStats.SmallMistakes
                }
                            )
            };

            var topMistakes = new ChartData
            {
                Title     = "Najczęsciej występujące błędy",
                Key       = "topMistakes",
                ChartType = "Bar",
                Data      = Unpack(mistakes)
            };

            var topFoundObjects = new ChartData
            {
                Title     = "Najczęsciej wykrywane obiekty",
                Key       = "topFoundObjects",
                ChartType = "Bar",
                Data      = new Tuple <List <string>, List <int> >
                            (
                    labelList,
                    valueList
                            )
            };

            var chartsList = new List <ChartData> {
                correctAndAllMistakesChart, correctAndSmallMistakesChart, topMistakes, topFoundObjects
            };

            var summaryStats = new SummaryStats
            {
                AverageTime   = generalStats.AverageTime,
                ChartsData    = chartsList,
                Effectiveness = (double)generalStats.CorrectObjectsDetections / (generalStats.ObjectsFoundByML + generalStats.NotFoundObjects)
            };

            return(summaryStats);
        }
        ChartData GetChartDataObject()
        {
            var chartData = new ChartData
                                {
                                    InstrumentProperties = Data.InstrProperties.Clone(),
                                    Bars = Data.Bars,
                                    Time = new DateTime[Data.Bars],
                                    Open = new double[Data.Bars],
                                    High = new double[Data.Bars],
                                    Low = new double[Data.Bars],
                                    Close = new double[Data.Bars],
                                    Volume = new int[Data.Bars]
                                };
            Data.Time.CopyTo(chartData.Time, 0);
            Data.Open.CopyTo(chartData.Open, 0);
            Data.High.CopyTo(chartData.High, 0);
            Data.Low.CopyTo(chartData.Low, 0);
            Data.Close.CopyTo(chartData.Close, 0);
            Data.Volume.CopyTo(chartData.Volume, 0);
            chartData.StrategyName = Data.StrategyName;
            chartData.Strategy  = Data.Strategy.Clone();
            chartData.FirstBar  = Data.FirstBar;
            chartData.Symbol    = Data.Symbol;
            chartData.PeriodStr = Data.PeriodStr;
            chartData.Bid       = Data.Bid;
            chartData.BarStatistics = new Dictionary<DateTime, BarStats>();
            foreach (KeyValuePair<DateTime, BarStats> timeStat in Data.BarStatistics)
                chartData.BarStatistics.Add(timeStat.Key, timeStat.Value.Clone());
            chartData.PositionDirection  = Data.PositionDirection;
            chartData.PositionOpenPrice  = Data.PositionOpenPrice;
            chartData.PositionProfit     = Data.PositionProfit;
            chartData.PositionStopLoss   = Data.PositionStopLoss;
            chartData.PositionTakeProfit = Data.PositionTakeProfit;

            return chartData;
        }
Example #14
0
        private string queryMergeAT3M(string itemCode, ChartData chart, Dictionary <string, long> dic)
        {
            long   bvol  = dic["bvol"];
            string query = $@"
                        MERGE INTO MF_AT_3M d
                        USING (
                          Select
                            '{chart.Time}' as YMDHM,
                            '{itemCode}' as ITEM_CD,
                            {chart.ClosePrice} as PRC,
                            {chart.OpenPrice} as S_PRC,
                            {chart.HighPrice} as H_PRC,
                            {chart.LowPrice} as L_PRC,
                            {chart.Volume} as VOL,
                            {bvol} as BVOL,
                            {dic["ma5"]} as MA5,
                            {dic["bma5"]} as BMA5,
                            {dic["ma10"]} as MA10,
                            {dic["bma10"]} as BMA10,
                            {dic["ma20"]} as MA20,
                            {dic["bma20"]} as BMA20,
                            {dic["ma60"]} as MA60,
                            {dic["ma120"]} as MA120,
                            {dic["bprc"]} as BPRC,
                            {dic["s9_prc"]} as S9_PRC
                          From Dual) s
                        ON
                          (d.YMDHM = s.YMDHM and 
                          d.ITEM_CD = s.ITEM_CD )
                        WHEN MATCHED
                        THEN
                        UPDATE SET
                          d.PRC = s.PRC,
                          d.S_PRC = s.S_PRC,
                          d.H_PRC = s.H_PRC,
                          d.L_PRC = s.L_PRC,
                          d.VOL = s.VOL,
                          d.BVOL = s.BVOL,
                          d.VOL_BRT = ROUND(DECODE(s.BVOL,0,0,s.VOL/s.BVOL),2),
                          d.MA5 = s.MA5,
                          d.BMA5 = s.BMA5,
                          d.MA10 = s.MA10,
                          d.BMA10 = s.BMA10,
                          d.MA20 = s.MA20,
                          d.BMA20 = s.BMA20,
                          d.MA60 = s.MA60,
                          d.MA120 = s.MA120,
                          d.BPRC = s.BPRC,
                          d.S9_PRC = s.S9_PRC,
                          d.UPD_ID = 'auto',
                          d.UPD_DT = sysdate
                        WHEN NOT MATCHED
                        THEN
                        INSERT (
                          YMDHM, ITEM_CD, PRC,
                          S_PRC, H_PRC, L_PRC,
                          VOL, BVOL, VOL_BRT,
                          MA5, BMA5, MA10, BMA10, MA20, BMA20,
                          MA60, MA120, BPRC, S9_PRC, REG_ID, REG_DT)
                        VALUES (
                          s.YMDHM, s.ITEM_CD, s.PRC,
                          s.S_PRC, s.H_PRC, s.L_PRC,
                          s.VOL, s.BVOL, ROUND(decode(s.BVOL,0,0,s.VOL/s.BVOL),2),
                          s.MA5, s.BMA5, s.MA10, s.BMA10, s.MA20, s.BMA20,
                          s.MA60, s.MA120, s.BPRC, s.S9_PRC, 'auto', sysdate)
                    ";

            return(query);
        }
Example #15
0
        public override void View()
        {
            pnlScroll.Visible = IsAutoScrollX;
            if (ChartData == null)
            {
                return;
            }

            foreach (var item in ChartData)
            {
                int idx = chart.Series[0].Points.AddXY(item.DTime, item.HighPrice, item.LowPrice, item.OpenPrice, item.ClosePrice);
                chart.Series[1].Points.AddXY(item.DTime, item.AllVikalaLengthRate);  //red
                chart.Series[2].Points.AddXY(item.DTime, item.AllQuantumLengthRate); //low
                chart.Series[3].Points.AddXY(item.DTime, item.AllLengthRate);        //black
            }

            double maxPrice = ChartData.Max(m => m.HighPrice);
            double minPrice = ChartData.Min(m => m.LowPrice);

            maxPrice = maxPrice + SpaceMaxMin;
            minPrice = minPrice - SpaceMaxMin;
            chart.ChartAreas[0].AxisY2.Maximum = maxPrice;
            chart.ChartAreas[0].AxisY2.Minimum = minPrice;

            double maxPriceLine  = ChartData.Max(m => m.AllLengthRate);
            double minPriceLine  = ChartData.Min(m => m.AllLengthRate);
            double maxPriceLine2 = ChartData.Max(m => m.AllQuantumLengthRate);
            double minPriceLine2 = ChartData.Min(m => m.AllQuantumLengthRate);
            double maxPriceLine3 = ChartData.Max(m => m.AllVikalaLengthRate);
            double minPriceLine3 = ChartData.Min(m => m.AllVikalaLengthRate);

            if (maxPriceLine < maxPriceLine2)
            {
                maxPriceLine = maxPriceLine2;
            }
            if (minPriceLine > minPriceLine2)
            {
                minPriceLine = minPriceLine2;
            }
            if (maxPriceLine < maxPriceLine3)
            {
                maxPriceLine = maxPriceLine3;
            }
            if (minPriceLine > minPriceLine3)
            {
                minPriceLine = minPriceLine3;
            }

            chart.ChartAreas[0].AxisY.Maximum           = maxPriceLine;
            chart.ChartAreas[0].AxisY.Minimum           = minPriceLine;
            chart.ChartAreas[0].AxisY.LabelStyle.Format = "{N2}";

            SetTrackBar();
            SetScrollBar();

            DisplayView();

            IsLoaded = true;

            base.View();
        }
Example #16
0
        /// <summary>
        /// 取得自定义图表的数据
        /// </summary>
        /// <param name="crt"></param>
        /// <returns></returns>
        private string GetCustomReport(CustomChart crt)
        {
            User     user = UserUtil.getCurUser();
            DateTime dt   = CalenderUtil.curDateWithTimeZone(user.timezone);

            string ret = "sorry:" + Resources.SunResource.NODATA;

            if (crt != null)
            {
                Analysis(ref crt);
                ///多设备多测点单时间报表
                List <DeviceStuct> list = new List <DeviceStuct>();
                list = GetDeviceStucts(crt);
                string reportName = crt.reportName;
                switch (crt.timeInterval.Trim().ToUpper())
                {
                case "YEAR":

                    //if (crt.timeSlot.Trim().ToUpper().Equals("YEAR"))
                    //{
                    ChartData chartData = CompareChartService.GetInstance().compareYearsMultiDeviceMultiMonitor(crt.reportName, list, getWorkYears(list));
                    ret = JsonUtil.convertToJson(chartData, typeof(ChartData));
                    //}
                    break;

                case "MONTH":
                    //if (crt.timeSlot.Trim().ToUpper().Equals("YEAR"))
                    //{
                    //dtstart = dt.AddYears(-crt.tcounter.Value);
                    //}
                    //else if (crt.timeSlot.Trim().ToUpper().Equals("MONTH"))
                    // {
                    //dtstart = dt.AddMonths(-crt.tcounter.Value);
                    //}

                    chartData = CompareChartService.GetInstance().compareYearMMMultiDeviceMultiMonitor(crt.reportName, GetDeviceStucts(crt), crt.startTime, crt.endTime);
                    ret       = JsonUtil.convertToJson(chartData, typeof(ChartData));
                    break;

                case "DAY":
                    //if (crt.timeSlot.Trim().ToUpper().Equals("DAY"))
                    //{
                    //dtstart = dt.AddDays(-crt.tcounter.Value);
                    // }
                    //else if (crt.timeSlot.Trim().ToUpper().Equals("MONTH"))
                    //{
                    //dtstart = dt.AddMonths(-crt.tcounter.Value);
                    // }
                    chartData = CompareChartService.GetInstance().compareMMDDMultiDeviceMultiMonitor(crt.reportName, GetDeviceStucts(crt), crt.startTime, crt.endTime);
                    ret       = JsonUtil.convertToJson(chartData, typeof(ChartData));
                    break;

                case "HOUR":
                    //if (crt.timeSlot.Trim().ToUpper().Equals("DAY"))
                    //{
                    //    dtstart = dt.AddDays(-crt.tcounter.Value);
                    //}
                    //else if (crt.timeSlot.Trim().ToUpper().Equals("HOUR"))
                    //{
                    //    dtstart = dt.AddHours(-crt.tcounter.Value);
                    //}
                    int intervalMins = 5;
                    chartData = CompareChartService.GetInstance().compareDayHHMultiDeviceMultiMonitor(crt.reportName, GetDeviceStucts(crt), crt.startTime, crt.endTime, intervalMins);
                    ret       = JsonUtil.convertToJson(chartData, typeof(ChartData));
                    break;

                default:
                    break;
                }
            }
            return(ret);
        }
Example #17
0
        public async Task <UserStatisticsData> UserStatistics([FromBody] PluginRequestInfo request, CancellationToken token)
        {
            var    startDate = request.GetParameterValue <DateTime>("startDate", DateTime.UtcNow.AddYears(-1)).ToUniversalTime();
            var    endDate   = request.GetParameterValue <DateTime>("endDate", DateTime.UtcNow).ToUniversalTime();
            var    startTime = request.GetParameterValue <DateTime>("startTime", DateTime.UtcNow.AddYears(-1)).ToUniversalTime();
            var    endTime   = request.GetParameterValue <DateTime>("endTime", DateTime.UtcNow).ToUniversalTime();
            string type      = request.GetParameterValue <string>("type", "day");

            var startDateTime = startDate.Date + startTime.TimeOfDay;
            var endDateTime   = endDate.Date + endTime.TimeOfDay;
            var loginRecords  = await this.UCenterEventDatabase.AccountEvents.GetListAsync(
                e => e.EventName == "Login" && e.CreatedTime >= startDateTime && e.CreatedTime <= endDateTime,
                token);

            IEnumerable <IGrouping <DateTime, AccountEventEntity> > groups = null;

            if (type == "day")
            {
                groups = loginRecords.GroupBy(e => e.CreatedTime.Date);
            }
            else if (type == "week")
            {
                groups = loginRecords.GroupBy(e => e.CreatedTime.Date.AddDays(-1 * (int)(e.CreatedTime.Date.DayOfWeek)));
            }
            else if (type == "month")
            {
                groups = loginRecords.GroupBy(e => e.CreatedTime.Date.AddDays(-1 * e.CreatedTime.Date.Day + 1));
            }

            groups = groups.OrderBy(g => g.Key);

            List <string> previousUsers = null;
            float         ratio         = 1;
            var           remainRate    = new ChartData();
            var           remainDatas   = new List <float>();

            foreach (var group in groups)
            {
                if (previousUsers == null || previousUsers.Count == 0)
                {
                    ratio         = 1;
                    previousUsers = group.Select(g => g.AccountId).Distinct().ToList();
                }
                else
                {
                    var currentUsers    = group.Select(g => g.AccountId).Distinct().ToList();
                    var remainUserCount = currentUsers.Count - currentUsers.Except(previousUsers).Count();
                    ratio         = 100 * (float)Math.Round((double)remainUserCount / previousUsers.Count, 2);
                    previousUsers = currentUsers;
                }

                remainDatas.Add(ratio);
                remainRate.Labels.Add(group.Key.ToString("yyyy/MM/dd"));
            }

            remainRate.Data.Add(remainDatas);
            remainRate.Series.Add("留存率");

            var lostRate = new ChartData()
            {
                Data = new List <List <float> >()
                {
                    remainDatas.Select(d => 100 - d).ToList()
                },
                Labels = remainRate.Labels,
                Series = new List <string>()
                {
                    "流失率"
                }
            };

            var lifeCycleRate = new ChartData()
            {
                Data   = lostRate.Data.Select(raw => raw.Select(d => d == 0 ? 0 : 1 / d).ToList()).ToList(),
                Labels = remainRate.Labels,
                Series = new List <string>()
                {
                    "生命周期"
                }
            };

            return(new UserStatisticsData()
            {
                RemainRate = await this.GetStayLostStatisticsData(startTime, endTime, type, true, token),
                LostRate = lostRate,
                LifeCycle = lifeCycleRate
            });
        }
Example #18
0
        private static void GeneratePieItemsFromTracker(TrackerViewModel tvm, ChartData<string, double> pie)
        {
            foreach (KeyValuePair<int, string> kvp in tvm.SportsList)
            {
                double value = tvm.Entries.Where(x => x.SportId == kvp.Key).Count();
                if (value == 0)
                    continue;

                ChartItem<string, double> slice = new ChartItem<string, double>();
                slice.ValueY = value;
                slice.LabelY = kvp.Value;
                slice.ValueX = kvp.Value;
                slice.LabelX = kvp.Value;
                slice.Color = ChartColorHelper.GetColorFromId(kvp.Key);
                pie.Items.Add(slice);
            }
        }
        private void LoadChartContents()
        {
            Random r = new Random();
            List<ChartData> ChartDataListfan1 = new List<ChartData>();
            List<ChartData> ChartDataListfan2 = new List<ChartData>();
            List<ChartData> ChartDataListfan3 = new List<ChartData>();
            ChartData cd = new ChartData();
            //  List<ChartData> ChartDataListfan4 = new List<ChartData>();

            /// Fan One

                // Speed
                fanGauge0.Value = fanOne.getSpeed().speed;
            
                // Temp
                List<ChartData> fanOneTemp = new List<ChartData>();
                fanOneTemp.Add(new ChartData(1, fanOne.getTemp().returnAirTemp));
                (fan1SupplyTemp.Series[0] as LineSeries).ItemsSource = fanOneTemp;

                // Cooling
                List<ChartData> fanOneCoolingDemand = new List<ChartData>();
                List<ChartData> fanOneCoolingOutput = new List<ChartData>();
                fanOneCoolingDemand.Add(new ChartData(1, fanOne.getCooling().coolDemand));
                fanOneCoolingOutput.Add(new ChartData(1, fanOne.getCooling().coolOutput));
                (fan1Cooldemand.Series[0] as AreaSeries).ItemsSource = fanOneCoolingDemand;
                (fan1Cooldemand.Series[1] as AreaSeries).ItemsSource = fanOneCoolingOutput;

            /// End Fan One
            
            //fanGauge1.Value = r.Next(0, 200);
            //fanGauge3.Value = r.Next(0, 200);

            //supplyfan
            
            //ChartDataListfan1.Add(new ChartData(2, r.Next(0, 200)));
            //ChartDataListfan1.Add(new ChartData(3, r.Next(0, 200)));
            //ChartDataListfan1.Add(new ChartData(4, r.Next(0, 200)));

            /*
            //outfan
            ChartDataListfan1.Add(new ChartData(5, r.Next(0, 200)));
            ChartDataListfan1.Add(new ChartData(6, r.Next(0, 200)));
            ChartDataListfan1.Add(new ChartData(7, r.Next(0, 200)));
            ChartDataListfan1.Add(new ChartData(8, r.Next(0, 200)));
          .
            //coutput
            ChartDataListfan1.Add(new ChartData(9, r.Next(0, 200)));
       
            //superheat

            //supplyfan
            ChartDataListfan1.Add(new ChartData(1, r.Next(0, 200)));
            ChartDataListfan1.Add(new ChartData(2, r.Next(0, 200)));
            ChartDataListfan1.Add(new ChartData(3, r.Next(0, 200)));
            ChartDataListfan1.Add(new ChartData(4, r.Next(0, 78)));


            ChartDataListfan2.Add(new ChartData(5, r.Next(0,200)));
            ChartDataListfan2.Add(new ChartData(6, r.Next(0, 200)));
            ChartDataListfan2.Add(new ChartData(7, r.Next(0, 200)));
            ChartDataListfan2.Add(new ChartData(8, r.Next(0, 200)));
            */


            /*
            (fan1Output.Series[0] as LineSeries).ItemsSource = ChartDataListfan1;

            (fan1Cooldemand.Series[0] as AreaSeries).ItemsSource = ChartDataListfan2;
            (fan1Cooldemand.Series[1] as AreaSeries).ItemsSource = ChartDataListfan1;

            (fan1SupplyTemp.Series[0] as LineSeries).ItemsSource = ChartDataListfan1;
            (fan1Output.Series[0] as LineSeries).ItemsSource = ChartDataListfan1;
            (fan1Superheat.Series[0] as LineSeries).ItemsSource = ChartDataListfan1; 
            */


            //fan2
            /*
            (fan2SupplyTemp.Series[0] as LineSeries).ItemsSource = ChartDataListfan1;
            (fan2Output.Series[0] as LineSeries).ItemsSource = ChartDataListfan1;

            (fan2Cooldemand.Series[0] as AreaSeries).ItemsSource = ChartDataListfan2;
            (fan2Cooldemand.Series[1] as AreaSeries).ItemsSource = ChartDataListfan1;

            (fan2SupplyTemp.Series[0] as LineSeries).ItemsSource = ChartDataListfan1;
            (fan2Output.Series[0] as LineSeries).ItemsSource = ChartDataListfan1;
            (fan2Superheat.Series[0] as LineSeries).ItemsSource = ChartDataListfan1;
            
            //fan3
            (fan3SupplyTemp.Series[0] as LineSeries).ItemsSource = ChartDataListfan1;
            (fan3Output.Series[0] as LineSeries).ItemsSource = ChartDataListfan1;

            (fan3Cooldemand.Series[0] as AreaSeries).ItemsSource = ChartDataListfan2;
            (fan3Cooldemand.Series[1] as AreaSeries).ItemsSource = ChartDataListfan1;

            (fan3SupplyTemp.Series[0] as LineSeries).ItemsSource = ChartDataListfan1;
            (fan3Output.Series[0] as LineSeries).ItemsSource = ChartDataListfan1;
            (fan3Superheat.Series[0] as LineSeries).ItemsSource = ChartDataListfan1;
            */
       
     
            List<stripChart> strip1Chart = new List<stripChart>();
            List<stripChart> strip2Chart = new List<stripChart>();
            List<stripChart> strip3Chart = new List<stripChart>();

            strip1Chart = clearlist(strip1Chart);
            strip2Chart = clearlist(strip2Chart);
            strip3Chart = clearlist(strip3Chart);

            // Strip Data

            List<ChartData> strip1_1 = new List<ChartData>(); strip1_1.Add(new ChartData(1, pm.GetCurrentPDUData().module1load1));
            List<ChartData> strip1_2 = new List<ChartData>(); strip1_1.Add(new ChartData(1, pm.GetCurrentPDUData().module1load2));
            List<ChartData> strip1_3 = new List<ChartData>(); strip1_1.Add(new ChartData(1, pm.GetCurrentPDUData().module1load3));
            (strip1.Series[0] as LineSeries).ItemsSource = strip1_1;
            (strip1.Series[1] as LineSeries).ItemsSource = strip1_2;
            (strip1.Series[2] as LineSeries).ItemsSource = strip1_3;

            (strip2.Series[0] as LineSeries).ItemsSource = ChartDataListfan1;
            (strip2.Series[1] as LineSeries).ItemsSource = ChartDataListfan1;
            (strip2.Series[2] as LineSeries).ItemsSource = ChartDataListfan1;

            (strip3.Series[0] as LineSeries).ItemsSource = ChartDataListfan1;
            (strip3.Series[1] as LineSeries).ItemsSource = ChartDataListfan1;
            (strip3.Series[2] as LineSeries).ItemsSource = ChartDataListfan1;
            (strip4.Series[0] as LineSeries).ItemsSource = ChartDataListfan1;
            (strip4.Series[1] as LineSeries).ItemsSource = ChartDataListfan1;
            (strip4.Series[2] as LineSeries).ItemsSource = ChartDataListfan1;
            (strip5.Series[0] as LineSeries).ItemsSource = ChartDataListfan1;
            (strip5.Series[1] as LineSeries).ItemsSource = ChartDataListfan1;
            (strip5.Series[2] as LineSeries).ItemsSource = ChartDataListfan1;
            (strip6.Series[0] as LineSeries).ItemsSource = ChartDataListfan1;
            (strip6.Series[1] as LineSeries).ItemsSource = ChartDataListfan1;
            (strip6.Series[2] as LineSeries).ItemsSource = ChartDataListfan1;
            



            //fanGauge0.Value = new Random().Next(0, 200);
            //fanGauge1.Value = new Random().Next(0, 85);
            //fanGauge3.Value = new Random().Next(0, 336);
        
            //((PieSeries)this.piec.Series[0]).DependentRangeAxis = new LinearAxis() { Minimum = 0, Maximum = 20, Orientation = AxisOrientation.X, Interval = 2 };

           // (BarChart.Series[0] as BarSeries).ItemsSource = ChartDataList;
           //((BarSeries)this.BarChart.Series[0]).DependentRangeAxis = new LinearAxis() { Minimum = 0, Maximum = 20, Orientation = AxisOrientation.X, Interval = 2 };

        }
Example #20
0
        public static string Get()
        {
            //Chart chart = new Chart(ChartType.PieChart3D,
            //                         new ChartSize(200, 125),
            //                         new ChartData(new int[] { 0, 1, 25, 26, 51, 52, 61, 1 }));

            //chart.Colors = new ChartColors(Color.DodgerBlue);
            //chart.Title = new ChartTitle("Line chart\nsimple one", Color.Olive, 16);

            //PieChart chart = new PieChart(PieChartType.Pie3D,
            //             new ChartSize(400, 150),
            //             new ChartData(new int[] { 25, 28, 53 })
            //             );

            //// set colors
            //Color[] colors = new Color[] { Color.DodgerBlue, Color.Orchid, Color.DarkSalmon };
            //chart.Colors = new ChartColors(colors);

            //// generate labels from color names
            //string[] colorNames = Array.ConvertAll<Color, string>(colors,
            //                            delegate(Color color)
            //                            {
            //                                return color.ToKnownColor().ToString();
            //                            });

            //chart.Labels = new PieChartLabels(colorNames);

            //PieChart chart = new PieChart(PieChartType.Pie2D,
            //                             new ChartSize(300, 200),
            //                             new ChartData(new int[] { 25, 28, 12 })
            //                             );

            //chart.Colors = new ChartColors(new Color[] { Color.DodgerBlue, Color.Orchid, Color.DarkSalmon });

               //Chart chart = new Chart(ChartType.PieChart3D,
               //                         new ChartSize(200, 125),
               //                         new ChartData(new int[] {0, 1, 25, 26, 51, 52, 61, 1}),
               //                         Color.DodgerBlue);

            #if false
            LineChart chart = new LineChart(new ChartSize(200, 125),
                                        new ChartData(new int[] { 0, 1, 25, 26, 51, 52, 61, 1 }));
            chart.Colors = new ChartColors(Color.DodgerBlue);
            chart.Title = new ChartTitle("Line chart\nsimple one", Color.Olive, 10);
            chart.LineStyles = new LineStyles(new LineStyle(3, 7, 1));

            #endif

            //BarChart chart = new BarChart(BarsType.Stacked, BarsDirection.Vertical,
            //                         new ChartSize(420, 125),
            //                         new ChartData(new int[][]
            //                                           {
            //                                               new int[] { 20, 1, 25, 26, 51 },
            //                                               new int[] { 7, 12, 60, 57, 4 }
            //                                        })
            //                         );
            //chart.Colors = new ChartColors(new Color[] { Color.DodgerBlue, Color.YellowGreen });
            //chart.Legend = new ChartLegend(new string[] {"Winter", "Summer"});
            //chart.BarChartSize = new BarChartSize(18, 1);

            //BarChart chart = new BarChart(BarsType.Stacked, BarsDirection.Horizontal,
            //                         new ChartSize(400, 140),
            //                         new ChartData(new int[][]
            //                                           {
            //                                               new int[] { 20, 1, 25, 26, 51 },
            //                                               new int[] { 7, 12, 60, 57, 4 }
            //                                        })
            //                         );
            //chart.Colors = new ChartColors(new Color[] { Color.DodgerBlue, Color.YellowGreen });
            //chart.Legend = new ChartLegend(new string[] { "Winter", "Summer" });
            //chart.BarChartSize = new BarChartSize(18, 1);

            #if false
            ChartData chartData = new ChartData(
                    new float[][] {
                        new float[] { 33f, 99.9f, 55.1f },
                        new float[] { 0f, 40.4f, 100f },
                        new float[] { 26f, 0.1f, 64.2f }
                    }
                );

            LineChart chart = new LineChart(new ChartSize(420, 125), chartData);
            chart.Colors = new ChartColors(new Color[] { Color.MediumVioletRed, Color.Bisque, Color.Tomato });
            chart.LineStyles = new LineStyles(new LineStyle[]
                                                      {
                                                          new LineStyle(3, 12, 3.5f),
                                                          new LineStyle(1.7f, 2, 2.8f),
                                                          new LineStyle(1, 1, 1)
                                                      });
            chart.Legend = new ChartLegend(new string[] {"One", "Two", "Three"});

            #endif

            //QRCodes chart = new QRCodes(new ChartSize(300, 300), "Welcome to Wikipedia, the free encyclopedia that anyone can edit.", EncodingType.UTF8);
            QRCodes chart = new QRCodes(new ChartSize(150, 150), "Hello world");

               return chart.ToString();
        }
Example #21
0
    protected override void Render(HtmlTextWriter writer)
    {
        const int DefaultWidth = 800;
        const int DefaultHeight = 200;

        if (Width.Type != UnitType.Pixel)
        {
            Width = new Unit(DefaultWidth, UnitType.Pixel);
        }
        if (Height.Type != UnitType.Pixel)
        {
            Height = new Unit(DefaultHeight, UnitType.Pixel);
        }
        if (Width.Value > MaximumWidth)
        {
            Width = new Unit(MaximumWidth, UnitType.Pixel);
        }
        if (Height.Value > MaximumHeight)
        {
            Height = new Unit(MaximumHeight, UnitType.Pixel);
        }
        if (Width.Value * Height.Value > MaximumArea)
        {
            Width = new Unit(DefaultWidth, UnitType.Pixel);
            Height = new Unit(DefaultHeight, UnitType.Pixel);
        }
        imgChart.Attributes.Add("width", Width.Value.ToString("0"));
        imgChart.Attributes.Add("height", Height.Value.ToString("0"));
        imgChart.AlternateText = BriefDescription;
        imgChart.Attributes.Add("title", imgChart.AlternateText);

        if (null == _data1)
        {
            _data1 = new ChartData(new List<double>());
        }

        double topScale1 = 0.0;
        double topScale2 = 0.0;
        string topScale1Label = "";
        string midScale1Label = "";
        string topScale2Label = "";
        string midScale2Label = "";
        if (null == _data2)
        {
            topScale1 = _data1.GetChartScale(_data1.Max());
            topScale2 = topScale1;
            midScale1Label = _data1.FormatChartLabel(topScale1 / 2);
            topScale1Label = _data1.FormatChartLabel(topScale1);
            midScale2Label = midScale1Label;
            topScale2Label = topScale1Label;
        }
        else
        {
            // 2+ charts
            if (_data1.DataType == _data2.DataType)
            {
                // if both data sets are same type, use common topScale, otherwise use different top scales.
                double commonScale = Math.Max(_data1.Max(), _data2.Max());
                commonScale = _data1.GetChartScale(commonScale);
                topScale1 = commonScale;
                topScale2 = commonScale;
                midScale1Label = _data1.FormatChartLabel(commonScale / 2);
                topScale1Label = _data1.FormatChartLabel(commonScale);
                midScale2Label = midScale1Label;
                topScale2Label = topScale1Label;
            }
            else
            {
                topScale1 = _data1.GetChartScale(_data1.Max());
                midScale1Label = _data1.FormatChartLabel(topScale1 / 2);
                topScale1Label = _data1.FormatChartLabel(topScale1);
                topScale2 = _data2.GetChartScale(_data2.Max());
                midScale2Label = _data2.FormatChartLabel(topScale2 / 2);
                topScale2Label = _data2.FormatChartLabel(topScale2);
            }
        }

        int segmentGroupSize = 1;
        int dateGroupSize = 1;
        switch (TimeUnitInterval)
        {
            case TimeUnit.Day: // group by week
                segmentGroupSize = 7;
                dateGroupSize = 7;
                break;
            case TimeUnit.Week: // group by week
                segmentGroupSize = 1;
                dateGroupSize = 7;
                break;
            case TimeUnit.Month: // group by month
                segmentGroupSize = 1;
                dateGroupSize = 1;
                break;
            default:
                throw new ArgumentOutOfRangeException("TimeUnitInterval", TimeUnitInterval.ToString(), "Unknown value.");
        }

        int numSegments = _data1.Count - 1;
        if (_data2 != null)
        {
            int numSegments2 = _data2.Count - 1;
            if (numSegments < numSegments2)
            {
                _data1.Pad(numSegments2 - numSegments);
                numSegments = numSegments2;
            }
            else if (numSegments2 < numSegments)
            {
                _data2.Pad(numSegments - numSegments2);
            }
        }

        if (numSegments < 1) numSegments = 1;
        // allow at least 100 pixels per segment label
        int groupMultiplier = (int)Math.Ceiling(((double)numSegments * 100.0) / ((double)segmentGroupSize * Width.Value));
        if (groupMultiplier > 1)
        {
            dateGroupSize *= groupMultiplier;
            segmentGroupSize *= groupMultiplier;
        }

        string segmentLabels1 = "";
        DateTime date1 = _startDate1;
        string segmentLabels2 = "";
        DateTime date2 = _startDate2;
        bool splitData = (_data2 != null && _startDate1 != _startDate2);
        System.Globalization.CultureInfo culture;
        if (CommonApi.UserId > 0)
        {
            culture = new System.Globalization.CultureInfo(CommonApi.UserLanguage);
        }
        else
        {
            culture = new System.Globalization.CultureInfo(CommonApi.RequestInformationRef.DefaultContentLanguage);
        }

        if (TimeUnitInterval == TimeUnit.Month)
        {
            for (int i = 0; i <= numSegments; i += segmentGroupSize)
            {
                //segmentLabels1 += "|" + date1.ToString("Y", culture); // e.g., August, 2009
                segmentLabels1 += "|" + date1.ToString(culture.DateTimeFormat.ShortDatePattern);
                date1 = date1.AddMonths(dateGroupSize);
                if (splitData)
                {
                    //segmentLabels2 += "|" + date2.ToString("Y", culture); // e.g., August, 2009
                    segmentLabels2 += "|" + date2.ToString(culture.DateTimeFormat.ShortDatePattern);
                    date2 = date2.AddMonths(dateGroupSize);
                }
            }
        }
        else
        {
            for (int i = 0; i <= numSegments; i += segmentGroupSize)
            {
                //segmentLabels1 += "|" + date1.ToString("M", culture); // e.g., August 12
                segmentLabels1 += "|" + date1.ToString(culture.DateTimeFormat.ShortDatePattern);
                date1 = date1.AddDays(dateGroupSize);
                if (splitData)
                {
                    //segmentLabels2 += "|" + date2.ToString("M", culture); // e.g., August 12
                    segmentLabels2 += "|" + date2.ToString(culture.DateTimeFormat.ShortDatePattern);
                    date2 = date2.AddDays(dateGroupSize);
                }
            }
        }

        // INFORMATION ABOUT GOOGLE CHART API:
        // simulated grid lines: chm=R,808080,0,0.5,0.501|r,808080,0,0.499,0.501
        // label position: chxp=0,10,35,75|1,25,35
        // dual x-axis (split data): chxt=x,y,r,x
        // http://code.google.com/apis/chart/docs/chart_params.html

        StringBuilder sbUrl = new StringBuilder(this.GoogleChartBaseUrl);
        sbUrl.Append("?cht=ls"); // chart type
        sbUrl.AppendFormat("&chs={0}x{1}", Width.Value, Height.Value); //size
        sbUrl.Append("&chco=0077CC,FF9900,52B432,EDED01,0000FF,FF0000,00FF00,FFFF88"); //data style
        sbUrl.Append("&chls=4|2&chm=o,0077CC,0,-1,8|o,FF9900,1,-1,5"); //Shape Markers
        if (!splitData)
        {
            if (_data3 != null)
            {
                sbUrl.Append("|o,52B432,2,-1,5|o,EDED01,3,-1,5");
                if (_data5 != null)
                {
                    sbUrl.Append("|o,0000FF,4,-1,5|o,FF0000,5,-1,5|o,00FF00,6,-1,5|o,FFFF88,7,-1,5");
                }
            }
            sbUrl.Append("|B,E6F2FA,0,0,0");
        }
        sbUrl.Append("&chxt=x,y,r");
        if (splitData)
        {
            sbUrl.Append(",x"); // second line of labels on x-axis
        }
        sbUrl.AppendFormat("&chxr=0,0,{0},{1}|1,0,100,50|2,0,100,50", numSegments, segmentGroupSize);
        if (splitData)
        {
            sbUrl.AppendFormat("|3,0,{0},{1}", numSegments, segmentGroupSize);
        }
        sbUrl.Append("&chxl=0:");
        sbUrl.Append(segmentLabels1);
        sbUrl.AppendFormat("|1:||{0}|{1}|2:||{2}|{3}", midScale1Label, topScale1Label, midScale2Label, topScale2Label);
        if (splitData)
        {
            // second line of labels on x-axis
            sbUrl.Append("|3:");
            sbUrl.Append(segmentLabels2);
        }
        sbUrl.AppendFormat("&chg={0:N},50&chd=s:", (segmentGroupSize * 100.0) / numSegments); //chd == chart data string
        sbUrl.Append(_data1.EncodeGoogleChartData(topScale1));
        if (_data2 != null)
        {
            sbUrl.Append(",");
            sbUrl.Append(_data2.EncodeGoogleChartData(topScale2));
            // splitData === false when using provider segments
            if (_data3 != null)
            {
                sbUrl.Append(",");
                sbUrl.Append(_data3.EncodeGoogleChartData(topScale1));
                if (_data4 != null)
                {
                    sbUrl.Append(",");
                    sbUrl.Append(_data4.EncodeGoogleChartData(topScale1));
                    if (_data5 != null)
                    {
                        sbUrl.Append(",");
                        sbUrl.Append(_data5.EncodeGoogleChartData(topScale1));
                        if (_data6 != null)
                        {
                            sbUrl.Append(",");
                            sbUrl.Append(_data6.EncodeGoogleChartData(topScale1));
                            if (_data7 != null)
                            {
                                sbUrl.Append(",");
                                sbUrl.Append(_data7.EncodeGoogleChartData(topScale1));
                                if (_data8 != null)
                                {
                                    sbUrl.Append(",");
                                    sbUrl.Append(_data8.EncodeGoogleChartData(topScale1));
                                }
                            }
                        }
                    }
                }
            }

            sbUrl.Append("&chxs=1,0055AA|2,DD7700");
            if (splitData)
            {
                sbUrl.Append("|0,0055AA|3,DD7700");
            }

            if (!string.IsNullOrEmpty(_dataLabels[0]))
            {
                sbUrl.Append("&chdl=" + _dataLabels[0]);
                for (int i = 1; i < _dataLabels.Length; i++)
                {
                    if (!string.IsNullOrEmpty(_dataLabels[i]))
                    {
                        sbUrl.Append("|" + _dataLabels[i]);
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }

        imgChart.ImageUrl = sbUrl.ToString();

        base.Render(writer);
    }
Example #22
0
 public void LoadSplitData(DateTime startDate1, DateTime startDate2, string[] labels, List<TimeSpan>[] dataset)
 {
     for (int i = 0; i < dataset.Length; i++)
     {
         switch (i)
         {
             case 0:
                 _startDate1 = startDate1;
                 _data1 = ChartData.CreateChartData(dataset[i]);
                 _dataLabels[i] = labels[i];
                 break;
             case 1:
                 _startDate2 = startDate2;
                 _data2 = ChartData.CreateChartData(dataset[i]);
                 _dataLabels[i] = labels[i];
                 break;
             case 2:
                 if (dataset[i].Count > 0)
                 {
                     _startDate3 = startDate1;
                     _data3 = ChartData.CreateChartData(dataset[i]);
                     _dataLabels[i] = labels[i];
                 }
                 break;
             case 3:
                 if (dataset[i].Count > 0)
                 {
                     _startDate4 = startDate2;
                     _data4 = ChartData.CreateChartData(dataset[i]);
                     _dataLabels[i] = labels[i];
                 }
                 break;
             case 4:
                 if (dataset[i].Count > 0)
                 {
                     _startDate5 = startDate1;
                     _data5 = ChartData.CreateChartData(dataset[i]);
                     _dataLabels[i] = labels[i];
                 }
                 break;
             case 5:
                 if (dataset[i].Count > 0)
                 {
                     _startDate6 = startDate2;
                     _data6 = ChartData.CreateChartData(dataset[i]);
                     _dataLabels[i] = labels[i];
                 }
                 break;
             case 6:
                 if (dataset[i].Count > 0)
                 {
                     _startDate7 = startDate1;
                     _data7 = ChartData.CreateChartData(dataset[i]);
                     _dataLabels[i] = labels[i];
                 }
                 break;
             case 7:
                 if (dataset[i].Count > 0)
                 {
                     _startDate8 = startDate2;
                     _data8 = ChartData.CreateChartData(dataset[i]);
                     _dataLabels[i] = labels[i];
                 }
                 break;
         }
     }
 }
        /// <summary>
        /// Enable Zoom and Pan Controls.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="selectionChanged">Selection changed callabck. Triggered when user select a point with selec tool.</param>
        /// <param name="cursorMoved">Cursor moved callabck. Triggered when user move the mouse in chart area.</param>
        /// <param name="zoomChanged">Callback triggered when chart has 
        /// zoomed in or out (and on first painting of the chart).</param>
        /// <remarks>Callback are optional (pass in null to ignore).</remarks>
        public static void EnableZoomAndPanControls(this Chart sender,
            CursorPositionChanged selectionChanged,
            CursorPositionChanged cursorMoved,
            ZoomChanged zoomChanged = null)
        {
            if (!ChartTool.ContainsKey(sender))
            {
                ChartTool[sender] = new ChartData(sender);
                ChartData ptrChartData = ChartTool[sender];
                ptrChartData.Backup();
                ptrChartData.SelectionChangedCallback = selectionChanged;
                ptrChartData.CursorMovedCallback = cursorMoved;
                ptrChartData.ZoomChangedCallback = zoomChanged;

                //Populate Context menu
                Chart ptrChart = sender;
                if (ptrChart.ContextMenuStrip == null)
                {
                    //Context menu is empty, use ChartContextMenuStrip directly
                    ptrChart.ContextMenuStrip = new ContextMenuStrip();
                    ptrChart.ContextMenuStrip.Items.AddRange(ChartTool[ptrChart].MenuItems.ToArray());
                }
                else
                {
                    //User assigned context menu to chart. Merge current menu with ChartContextMenuStrip.
                    ContextMenuStrip newMenu = new ContextMenuStrip();
                    newMenu.Items.AddRange(ChartTool[sender].MenuItems.ToArray());

                    foreach (object ptrItem in ChartTool[sender].ContextMenuStrip.Items)
                    {
                        if (ptrItem is ToolStripMenuItem) newMenu.Items.Add(((ToolStripMenuItem)ptrItem).Clone());
                        else if (ptrItem is ToolStripSeparator) newMenu.Items.Add(new ToolStripSeparator());
                    }
                    newMenu.Items.Add(new ToolStripSeparator());
                    ptrChart.ContextMenuStrip = newMenu;
                    ptrChart.ContextMenuStrip.AddHandlers(ChartTool[sender].ContextMenuStrip);
                }
                ptrChart.ContextMenuStrip.Opening += ChartContext_Opening;
                ptrChart.ContextMenuStrip.ItemClicked += ChartContext_ItemClicked;
                ptrChart.MouseDown += ChartControl_MouseDown;
                ptrChart.MouseMove += ChartControl_MouseMove;
                ptrChart.MouseUp += ChartControl_MouseUp;
                ptrChart.PostPaint += ChartOnPostPaint; // Necessary to kickstart ZoomChanged callback

                // The following is for testing out the built-in events.
                //  They don't seem to be as reliable as just handling mouse up/move/down
                //ptrChart.CursorPositionChanging += (sender1, e) =>
                //    {
                //        // Changed event isn't triggered with any zoom or select operations! From looking at the Cursor.cs code, it seems to be a bug.
                //        // Changing event is raised twice, once for each cursor (X, Y)
                //        var axis = e.Axis;
                //    };
                //ptrChart.SelectionRangeChanging += (o, args) =>
                //    {
                //        // Changed event isn't triggered with any zoom or select operations!
                //        // Neither is changed event... odd
                //        Console.WriteLine("SelectionRangeChanging raised " + args.ToString());
                //        var axis = args.Axis;
                //        var chartArea = args.ChartArea;
                //    };

                //Override settings.
                ChartArea ptrChartArea = ptrChart.ChartAreas[0];
                ptrChartArea.CursorX.AutoScroll = false;
                ptrChartArea.CursorX.Interval = 1e-06;
                ptrChartArea.CursorY.AutoScroll = false;
                ptrChartArea.CursorY.Interval = 1e-06;

                ptrChartArea.AxisX.ScrollBar.Enabled = false;
                ptrChartArea.AxisX2.ScrollBar.Enabled = false;
                ptrChartArea.AxisY.ScrollBar.Enabled = false;
                ptrChartArea.AxisY2.ScrollBar.Enabled = false;

                SetChartControlState(sender, MSChartExtensionToolState.Select);
            }
        }
        public TreemapViewModel(TreemapChart treemap, ChartData data, TreemapAlgorithm algo) : this()
        {
            Treemap = treemap;
            Data = data;
            Columns = Data.ColumnNames;

            Algorithm = algo;
            InitParameters();
            InitColorViewModels();
            SetColorViewModel();

            Messenger.Default.Register<PropertyChangedMessageBase>
            (
                 this, true,
                 (m) =>
                 {
                     if (IsDead || !IsSentBySelf(m.Sender))
                         return;

                     if (m.PropertyName == "ColorMethod")
                         SetColorViewModel();

                     ShowLegendDecimalPlaces = LegendFormatType != FormatType.Text;

                     if (!LockRefresh)
                         DrawChart();
                 }
            );

            RefreshCommand = new RelayCommand<object>(_ => DrawChart(true));

            DeleteCommand = new RelayCommand<object>(
                _ =>
                {
                    LockRefresh = true;
                    Indexes.RemoveAt(Indexes.Count - 1);
                    Indexes.Last().AsChildIndex();

                    DeleteCommand.RaiseCanExecuteChanged();
                    AddCommand.RaiseCanExecuteChanged();

                    DrawChart();
                    LockRefresh = false;
                },
                _ => Indexes.Count > 1);

            AddCommand = new RelayCommand<object>(
                _ =>
                {
                    LockRefresh = true;
                    Indexes.Last().AsParentIndex();

                    string freeColumn = Columns.Where(c => !Indexes.Select(i => i.Column).Contains(c)).First();
                    Indexes.Add(new TreemapIndexViewModel(freeColumn));

                    DeleteCommand.RaiseCanExecuteChanged();
                    AddCommand.RaiseCanExecuteChanged();

                    DrawChart();
                    LockRefresh = false;
                },
                _ => Indexes.Count < Columns.Count);

            DrawChart();
        }
Example #25
0
        private async Task <ChartData> GetStayLostStatisticsData(DateTime startTime, DateTime endTime, string type, bool isStay, CancellationToken token)
        {
            var loginRecords = await this.UCenterEventDatabase.AccountEvents.GetListAsync(
                e => e.EventName == "Login" && e.CreatedTime >= startTime && e.CreatedTime <= endTime,
                token);

            IEnumerable <IGrouping <DateTime, AccountEventEntity> > groups = null;

            if (type == "day")
            {
                groups = loginRecords.GroupBy(e => e.CreatedTime.Date);
            }
            else if (type == "week")
            {
                groups = loginRecords.GroupBy(e => e.CreatedTime.Date.AddDays(-1 * (int)(e.CreatedTime.Date.DayOfWeek)));
            }
            else if (type == "month")
            {
                groups = loginRecords.GroupBy(e => e.CreatedTime.Date.AddDays(-1 * e.CreatedTime.Date.Day + 1));
            }

            groups = groups.OrderBy(g => g.Key);

            List <string> previousUsers = null;
            float         percent       = 0;
            float         count         = 0;
            var           chart         = new ChartData();
            var           percentDatas  = new List <float>();
            var           countDatas    = new List <float>();

            foreach (var group in groups)
            {
                if (previousUsers == null || previousUsers.Count == 0)
                {
                    percent       = 0;
                    count         = 0;
                    previousUsers = group.Select(g => g.AccountId).Distinct().ToList();
                }
                else
                {
                    var currentUsers = group.Select(g => g.AccountId).Distinct().ToList();
                    count   = currentUsers.Count - currentUsers.Except(previousUsers).Count();
                    percent = (float)Math.Round((double)count / previousUsers.Count, 4) * 100;

                    if (!isStay)
                    {
                        count   = previousUsers.Count - count;
                        percent = (float)Math.Round((double)(100 - percent), 2);
                    }

                    previousUsers = currentUsers;
                }

                percentDatas.Add(percent);
                countDatas.Add(count);
                chart.Labels.Add(group.Key.ToString("yyyy/MM/dd"));
            }

            chart.Data.Add(percentDatas);
            chart.Data.Add(countDatas);
            return(chart);
        }
        /// <summary>
        /// Enable Zoom and Pan Controls.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="selectionChanged">Selection changed callabck. Triggered when user select a point with selec tool.</param>
        /// <param name="cursorMoved">Cursor moved callabck. Triggered when user move the mouse in chart area.</param>
        /// <param name="zoomChanged">Callback triggered when chart has 
        /// zoomed in or out (and on first painting of the chart).</param>
        /// <param name="option">Additional user options</param>
        /// <remarks>
        /// <para>Callback are optional (pass in null to ignore).</para>
        /// <para>WARNING: Add or Remove Chart Area or Chart Series after enabled zoom and pan controls may cause unexpected behavior.</para>
        /// <para>Recommended to enable the zoom and pan controls after configure the <see cref="ChartArea"/> and <see cref="Series"/>.</para>
        /// </remarks>
        public static void EnableZoomAndPanControls(this Chart sender,
            CursorPositionChanged selectionChanged,
            CursorPositionChanged cursorMoved,
            ZoomChanged zoomChanged = null, ChartOption option = null)
        {
            if (!ChartTool.ContainsKey(sender))
            {
                ChartTool[sender] = new ChartData(sender);
                ChartData ptrChartData = ChartTool[sender];
                ptrChartData.Option = (option == null) ? new ChartOption() : option;
                ptrChartData.Backup();
                ptrChartData.PositionChangedCallback = selectionChanged;
                ptrChartData.CursorMovedCallback = cursorMoved;
                ptrChartData.ZoomChangedCallback = zoomChanged;

                //Scan through series to identify valid ChartArea
                Chart ptrChart = sender;
                foreach (ChartArea cArea in ptrChart.ChartAreas)
                {
                    IEnumerable<Series> chartSeries = ptrChart.Series.Where(n => n.ChartArea == cArea.Name);
                    if (chartSeries.Count() == 0)
                    {
                        Debug.WriteLine(string.Format("WARNING: Chart Area [{0}] does not contains any series.", cArea.Name));
                    }
                    else if (chartSeries.Where(n => UnsupportedChartType.Contains(n.ChartType)).Count() > 0)
                    {
                        Debug.WriteLine(string.Format("WARNING: Chart Area [{0}] contains unsupported series.", cArea.Name));
                    }
                    else ptrChartData.SupportedChartArea.Add(cArea);
                }

                //Populate Context menu
                if (ptrChart.ContextMenuStrip == null)
                {
                    //Context menu is empty, use ChartContextMenuStrip directly
                    ptrChart.ContextMenuStrip = new ContextMenuStrip();
                    ptrChart.ContextMenuStrip.Items.AddRange(ChartTool[ptrChart].MenuItems.ToArray());
                }
                else
                {
                    //User assigned context menu to chart. Merge current menu with ChartContextMenuStrip.
                    ContextMenuStrip newMenu = new ContextMenuStrip();
                    newMenu.Items.AddRange(ChartTool[sender].MenuItems.ToArray());

                    foreach (object ptrItem in ChartTool[sender].ContextMenuStrip.Items)
                    {
                        if (ptrItem is ToolStripMenuItem) newMenu.Items.Add(((ToolStripMenuItem)ptrItem).Clone());
                        else if (ptrItem is ToolStripSeparator) newMenu.Items.Add(new ToolStripSeparator());
                    }
                    ptrChart.ContextMenuStrip = newMenu;
                    ptrChart.ContextMenuStrip.AddHandlers(ChartTool[sender].ContextMenuStrip);
                }
                ptrChart.ContextMenuStrip.Opening += ChartContext_Opening;
                ptrChart.ContextMenuStrip.ItemClicked += ChartContext_ItemClicked;
                ptrChart.MouseWheel += ChartControl_MouseWheel;
                ptrChart.MouseDown += ChartControl_MouseDown;
                ptrChart.MouseMove += ChartControl_MouseMove;
                ptrChart.MouseUp += ChartControl_MouseUp;

                //Override settings.
                foreach (ChartArea ptrChartArea in ptrChart.ChartAreas)
                {
                    ptrChartArea.CursorX.AutoScroll = false;
                    ptrChartArea.CursorX.Interval = 1e-06;
                    ptrChartArea.CursorY.AutoScroll = false;
                    ptrChartArea.CursorY.Interval = 1e-06;

                    ptrChartArea.AxisX.ScrollBar.Enabled = false;
                    ptrChartArea.AxisX2.ScrollBar.Enabled = false;
                    ptrChartArea.AxisY.ScrollBar.Enabled = false;
                    ptrChartArea.AxisY2.ScrollBar.Enabled = false;
                }
                SetChartControlState(sender, MSChartExtensionToolState.Select);
            }
        }
        public JsonResult ChartDataByTimePeriod(string Period, string LoggerProviderName, string logLevel, string keyFormatString, Func<LogEvent, Object> groupByClause)
        {
            var timePeriod = TimePeriodHelper.GetUtcTimePeriod(Period);

            // Grab ALL entries for the chart (DO NOT PAGE REPORTING DATA!!!)
            var chartEntries = loggingRepository.GetByDateRangeAndType(0, Int32.MaxValue, timePeriod.Start, timePeriod.End, LoggerProviderName, logLevel);

            var groupedByDate = chartEntries.GroupBy(groupByClause).OrderBy(y => y.Key);

            var groupedByDateAndThenName = groupedByDate.Select(group => new {group.Key, NestedGroup = group.ToLookup(result => result.LoggerProviderName, result => result.Id)});

            var LoggerNames = (from logEvent in chartEntries
                               select new {Name = logEvent.LoggerProviderName}
                              ).Distinct().OrderBy(item => item.Name);

            var chartData = new ChartData();

            // Add columns
            chartData.AddColumn(new ChartColumn("0", "Period", "string"));
            var columnIndex = 1;
            foreach (var name in LoggerNames)
            {
                chartData.AddColumn(new ChartColumn(columnIndex.ToString(), name.Name, "number"));
                columnIndex++;
            }

            // add row data
            foreach (var myDate in groupedByDateAndThenName)
            {
                var row = new ChartRow();

                var dateString = (myDate.Key is DateTime) ? ((DateTime) myDate.Key).ToString(keyFormatString) : myDate.Key.ToString();
                row.AddCellItem(new ChartCellItem(dateString, ""));

                foreach (var name in LoggerNames)
                {
                    var valueFound = false;
                    foreach (var myLogger in myDate.NestedGroup)
                    {
                        if (myLogger.Key == name.Name)
                        {
                            row.AddCellItem(new ChartCellItem(myLogger.Count(), ""));
                            valueFound = true;
                        }
                    }
                    if (!valueFound) row.AddCellItem(new ChartCellItem(0, ""));
                }

                chartData.AddRow(row);
            }

            return Json(chartData, "text/x-json", Encoding.UTF8, JsonRequestBehavior.AllowGet);
        }
        /// <summary>
        /// Asserts whether <paramref name="actual"/> corresponds to <paramref name="original"/>.
        /// </summary>
        /// <param name="original">The original <see cref="MacroStabilityInwardsSurfaceLine"/>.</param>
        /// <param name="actual">The actual <see cref="ChartData"/>.</param>
        /// <exception cref="AssertionException">Thrown when <paramref name="actual"/>
        /// does not correspond to <paramref name="original"/>.</exception>
        public static void AssertSurfaceLineChartData(MacroStabilityInwardsSurfaceLine original, ChartData actual)
        {
            Assert.IsInstanceOf <ChartLineData>(actual);
            var surfaceLineChartData = (ChartLineData)actual;

            Assert.AreEqual(original.Points.Count(), surfaceLineChartData.Points.Count());
            Assert.AreEqual(original.Name, actual.Name);
            CollectionAssert.AreEqual(original.LocalGeometry, surfaceLineChartData.Points);
        }
Example #29
0
 /// <summary>
 /// Initializes a new instance of the <see cref="LineChart"/> class.
 /// </summary>
 /// <param name="size">The chart size.</param>
 /// <param name="data">The chart data.</param>
 public LineChart(ChartSize size, ChartData data)
     : base(LineTypeDefinition, size, data)
 {
 }
        public IEnumerable <PopulationPKAnalysis> CalculateFor(IPopulationDataCollector populationDataCollector, ChartData <TimeProfileXValue, TimeProfileYValue> timeProfileChartData)
        {
            var pkAnalyses = new List <PopulationPKAnalysis>();

            if (timeProfileChartData == null)
            {
                return(pkAnalyses); // there are no analyses to calculate
            }
            var allColumns = timeProfileChartData.Panes.SelectMany(x => x.Curves).Select(x =>
                                                                                         new { curveData = x, column = columnFor(x, populationDataCollector) })
                             .Where(c => c.column != null)
                             .Where(c => c.column.IsConcentration());

            var columnsByMolecules = allColumns.GroupBy(x => x.column.MoleculeName());

            foreach (var columnsByMolecule in columnsByMolecules)
            {
                var moleculeName = columnsByMolecule.Key;
                var options      = _pkCalculationOptionsFactory.CreateFor(populationDataCollector, moleculeName);
                pkAnalyses.AddRange(columnsByMolecule.Select(pkAnalysisData => new PopulationPKAnalysis(pkAnalysisData.curveData, calculatePKFor(pkAnalysisData.column, moleculeName, options).PKAnalysis)));
            }

            return(pkAnalyses);
        }
Example #31
0
        private string mergeChartDatQuery(string dmType, string itemCode, string itemName, ChartData chart, Dictionary <string, long> ma)
        {
            string tableName = dmType.Equals("M") ? "MF_BUN_PRC" : "MF_DAY_PRC";
            string keyName   = dmType.Equals("M") ? "YMDHM" : "YMD";
            string qry       = $@"
                        MERGE INTO {tableName} d
                        USING (
                          Select
                            '{chart.Time}' as {keyName},
                            '{itemCode}' as ITEM_CD,
                            '{itemName}' as ITEM_NM,
                            {chart.ClosePrice} as PRC,
                            {chart.OpenPrice} as S_PRC,
                            {chart.HighPrice} as H_PRC,
                            {chart.LowPrice} as L_PRC,
                            {chart.Volume} as VOL,
                            {ma["ma5"]} as MA5,
                            {ma["ma10"]} as MA10,
                            {ma["ma20"]} as MA20,
                            {ma["ma60"]} as MA60,
                            {ma["ma120"]} as MA120,
                            {ma["ma240"]} as MA240,
                            'sys' as REG_ID,
                            sysdate as REG_DT
                          From Dual) s
                        ON
                          (d.YMDHM = s.YMDHM and 
                          d.ITEM_CD = s.ITEM_CD )
                        WHEN MATCHED
                        THEN
                        UPDATE SET
                          d.ITEM_NM = s.ITEM_NM,
                          d.PRC = s.PRC,
                          d.S_PRC = s.S_PRC,
                          d.H_PRC = s.H_PRC,
                          d.L_PRC = s.L_PRC,
                          d.VOL = s.VOL,
                          d.MA5 = s.MA5,
                          d.MA10 = s.MA10,
                          d.MA20 = s.MA20,
                          d.MA60 = s.MA60,
                          d.MA120 = s.MA120,
                          d.MA240 = s.MA240,
                          d.UPD_ID = 'sys',
                          d.UPD_DT = sysdate
                        WHEN NOT MATCHED
                        THEN
                        INSERT (
                          YMDHM, ITEM_CD, ITEM_NM,
                          PRC, S_PRC, H_PRC,
                          L_PRC, VOL, MA5,
                          MA10, MA20, MA60,
                          MA120, MA240, REG_ID,
                          REG_DT)
                        VALUES (
                          s.YMDHM, s.ITEM_CD, s.ITEM_NM,
                          s.PRC, s.S_PRC, s.H_PRC,
                          s.L_PRC, s.VOL, s.MA5,
                          s.MA10, s.MA20, s.MA60,
                          s.MA120, s.MA240, s.REG_ID,
                          s.REG_DT) ";

            return(qry);
        }
Example #32
0
 protected override void Because()
 {
     _chartData = sut.CreateFor(_pivotResult);
 }
Example #33
0
        protected internal override void LabelDraggerDrag(int chartControlID, Chart.ChartType chartType, ChartData cdata, Rect r, bool active)
        {
            Event current = Event.current;

            if (current.type == EventType.MouseDown)
            {
                if (Chart.GetToggleRect(r, cdata.charts.Length).Contains(current.mousePosition))
                {
                    this.showMarkers = !this.showMarkers;
                    base.SaveChartsSettingsEnabled(cdata);
                    current.Use();
                }
            }
            base.LabelDraggerDrag(chartControlID, chartType, cdata, r, active);
        }
Example #34
0
        public static int Export(DataSet ds)
        {
            try
            {
                ExcelEngine excel    = new ExcelEngine();
                string      fileName = "BieuDoSoSanhGiaoHo.xls";

                string outputPath = Memory.GetTempPath(fileName);

                excel.CreateNewObject(outputPath);
                excel.SetGridLines(true);

                DataTable tblData  = ds.Tables[0];
                int       startRow = 28;
                int       col      = 1;
                int       row      = startRow;

                excel.Write_to_excel(row, col, "");
                col++;
                for (int i = 0; i < tblData.Columns.Count; i++)
                {
                    excel.Write_to_excel(row, i + col, "'" + tblData.Columns[i].ColumnName);
                }
                row++;
                col = 1;
                excel.Write_to_excel(row, col, "Số Giáo dân");
                col++;
                for (int i = 0; i < tblData.Rows.Count; i++)
                {
                    for (int j = 0; j < tblData.Columns.Count; j++)
                    {
                        excel.Write_to_excel(row + i, j + col, tblData.Rows[i][j]);
                    }
                }
                string cell1 = "A" + startRow.ToString();
                string cell2 = excel.MapColIndexToColName(tblData.Columns.Count + 1) + (startRow + tblData.Rows.Count).ToString();

                int width  = 600;
                int height = 350;
                if (tblData.Columns.Count > 5)
                {
                    width += 50 * (int)(tblData.Columns.Count - 5);
                }
                if (width > 900)
                {
                    width = 900;
                }
                ChartData chartData = new ChartData();
                chartData.title = "Biểu đồ so sánh giáo họ";
                if (tblData.Columns.Count > 7)
                {
                    chartData.chartType = ChartType.xlColumnClustered;
                }
                else
                {
                    chartData.chartType   = ChartType.xl3DPie;
                    chartData.showPercent = true;
                }
                chartData.cellDataFrom = cell1;
                chartData.cellDataTo   = cell2;
                chartData.width        = width;
                chartData.height       = height;
                chartData.showLegend   = true;
                chartData.showLabel    = true;

                excel.createChart(chartData);
                excel.End_Write();
                System.Diagnostics.Process.Start(outputPath);
            }
            catch (Exception ex)
            {
                Memory.Instance.Error = ex;
                return(-1);
            }
            return(0);
        }
 void UpdateChartThreadSafely(bool repaintChart, ChartData chartData)
 {
     if (_chart.InvokeRequired)
     {
         _chart.BeginInvoke(new UpdateChartDelegate(UpdateChartThreadSafely), new object[] { repaintChart, chartData });
     }
     else
     {
         _chart.UpdateChartOnTick(repaintChart, chartData);
     }
 }
Example #36
0
        public ActionResult Graficos(int id)
        {
            //var alunos =  new AlunoDAO().ListaAlunos().Where(a => a.IdEscola == id).ToList();
            var passeios       = new PasseioDAO().ListaPasseios().Where(p => p.IdEmpresa == id).ToList();
            var passeiosAlunos = new PasseioAlunoDAO().ListarTodosPasseios().Where(pa => passeios.Where(p => p.IdPasseio == pa.IdPasseio).Count() > 0).ToList();
            var autorizacoes   = new AutorizacaoDAO().ListaTodasAutorizacao().Where(au => passeiosAlunos.Where(pa => pa.IdAutorizacao == au.IdAutorizacao).Count() > 0).ToList();
            var alunos         = new AlunoDAO().ListaAlunos().Where(a => autorizacoes.Where(au => au.IdAluno == a.IdAluno).Count() > 0).ToList();

            var masculino  = Math.Round(((double)alunos.Where(a => a.Genero == "Masculino").Count() / alunos.Count()) * 100, 2);
            var feminino   = Math.Round(((double)alunos.Where(a => a.Genero == "Feminino").Count() / alunos.Count()) * 100, 2);
            var indefinido = Math.Round(((double)alunos.Where(a => a.Genero == "Indefinido").Count() / alunos.Count()) * 100, 2);

            var generoChart = new List <ChartData> {
                new ChartData {
                    y = masculino, label = "Masculino"
                },
                new ChartData {
                    y = feminino, label = "Feminino"
                }, new ChartData {
                    y = indefinido, label = "Indefinido"
                }
            };
            var testes          = new TesteDAO().ListaTestes();
            var testesfiltrados = testes.Where(t => alunos.Where(a => a.IdAluno == t.IdAluno).Count() > 0).ToList();


            ////var nresponderam = Math.Round((double)(new TesteDAO().ListaTestes().Where(t => alunos.Where(a => a.IdAluno == t.IdAluno) is null).Count() / alunos.Count()) *100, 2);
            //var responderam = Math.Round(((double)testesfiltrados.Count() / alunos.Count()) * 100, 2);
            //var nresponderam = 100 - responderam;

            //var testeChart = new List<ChartData> { new ChartData { y = nresponderam, label = "Não responderam" }, new ChartData { y = responderam, label = "Respoderam" } };

            var categorias = new MyDatabaseContext().Categoria.ToList();
            var resultados = new MyDatabaseContext().Resultado.ToList().Where(r => testesfiltrados.Where(t => t.IdResultado == r.IdResposta).Count() > 0);
            var barChart   = new List <ChartData>();
            var bar1       = new ChartData();
            var bar2       = new ChartData();
            var bar3       = new ChartData();
            var bar4       = new ChartData();
            var bar5       = new ChartData();
            var bar6       = new ChartData();

            foreach (var r in resultados)
            {
                var i = 1;
                foreach (var c in categorias)
                {
                    switch (i)
                    {
                    case 1:
                        bar1.y     = bar1.y + r.Categoria1;
                        bar1.label = c.NomeCategoria;
                        break;

                    case 2:
                        bar2.y     = bar2.y + r.Categoria2;
                        bar2.label = c.NomeCategoria;
                        break;

                    case 3:
                        bar3.y     = bar3.y + r.Categoria3;
                        bar3.label = c.NomeCategoria;
                        break;

                    case 4:
                        bar4.y     = bar4.y + r.Categoria4;
                        bar4.label = c.NomeCategoria;
                        break;

                    case 5:
                        bar5.y     = bar5.y + r.Categoria5;
                        bar5.label = c.NomeCategoria;
                        break;

                    case 6:
                        bar6.y     = bar6.y + r.Categoria6;
                        bar6.label = c.NomeCategoria;
                        break;

                    default:
                        break;
                    }
                    i++;
                }
            }
            barChart.Add(bar1);
            barChart.Add(bar2);
            barChart.Add(bar3);
            barChart.Add(bar4);
            barChart.Add(bar5);
            barChart.Add(bar6);
            //IList<Passeio> listaPasseio = new List<Passeio>();
            //listaPasseio = new PasseioDAO().ListaPasseios();

            //IList<Escola> lista2 = new List<Escola>();

            //Escola escola1 = new Escola();
            //escola1.label = "Não sabem qual profissão se encaixam";
            //escola1.y = 80;
            //lista2.Add(escola1);

            //Escola escola2 = new Escola();
            //escola2.label = "Sabem qual profissão se encaixam";
            //escola2.y = 20;
            //lista2.Add(escola2);

            //foreach (var item in listaPasseio)
            //{
            //    item.label = item.Nome;
            //    item.y = item.QuantAlunos;
            //}

            ViewBag.GeneroEmpresa = JsonConvert.SerializeObject(generoChart);
            ViewBag.BarEmpresa    = JsonConvert.SerializeObject(barChart);
            //ViewBag.DataPoints = JsonConvert.SerializeObject(listaPasseio);
            return(View());
        }
Example #37
0
 /// <summary>
 /// 测试初始化
 /// </summary>
 public ChartDataTest()
 {
     _data = new ChartData();
 }
Example #38
0
 public void LoadData(DateTime startDate, List<TimeSpan> data, string label)
 {
     _startDate1 = startDate;
     _data1 = ChartData.CreateChartData(data);
     _dataLabels[0] = label;
 }
Example #39
0
 protected virtual void AddXAxes(ChartData <TX, TY> chartData, XYDiagram diagram)
 {
     initializeAxis(diagram.AxisX, chartData.Axis);
 }
Example #40
0
 public void plot(ChartData data, params ChartAxis axis)
 {
     data.FillChart(this, axis);
 }
Example #41
0
        public static string ConvertChartsData(ChartData chartData)
        {
            var str = "app.title = '" + chartData.title + "';\r\n";

            if (!string.IsNullOrEmpty(chartData.ajax))
            {
                str += "$.get('" + chartData.ajax + "',function(data){\r\n";
            }
            if (chartData.data != null)
            {
                foreach (var data in chartData.data)
                {
                    str += "var " + data.Key + " =" + JsonHelper.ObjectToJson2(data.Value) + ";\r\n ";
                }
            }

            if (chartData.fun != null)
            {
                foreach (var fun in chartData.fun)
                {
                    str += "var " + fun.Key + " =" + JsonHelper.ObjectToJson2(fun.Value) + ";\r\n ";
                }
            }

            if (chartData.fundata != null)
            {
                foreach (var fd in chartData.fundata)
                {
                    str += "var " + fd.Key + " =" + JsonHelper.ObjectToJson2(fd.Value) + ";\r\n ";
                }
            }

            if (chartData.beforeRaw != null)
            {
                foreach (var raw in chartData.beforeRaw)
                {
                    str += JsonHelper.ObjectToJson2(raw) + ";\r\n ";
                }
            }
            if (chartData.option != null)
            {
                if (chartData.IsSetOption)
                {
                    str += "myChart.setOption( option = " + JsonHelper.ObjectToJson2(chartData.option) + ");\r\n";
                }
                else
                {
                    str += "option =" + JsonHelper.ObjectToJson2(chartData.option) + ";\r\n ";
                }
            }

            if (chartData.raw != null)
            {
                foreach (var raw in chartData.raw)
                {
                    str += JsonHelper.ObjectToJson2(raw) + ";\r\n ";
                }
            }

            if (!string.IsNullOrEmpty(chartData.ajax))
            {
                str += "});";
            }

            return(str);
        }
Example #42
0
        private int _yTop; // pnlPrice top coordinate

        #endregion Fields

        #region Constructors

        // ------------------------------------------------------------
        /// <summary>
        /// The default constructor.
        /// </summary>
        public Chart(ChartData chartData)
        {
            _chartData = chartData;

            BackColor = LayoutColors.ColorFormBack;
            Padding = new Padding(0);

            PnlCharts = new Panel {Parent = this, Dock = DockStyle.Fill};

            PnlInfo = new Panel {Parent = this, BackColor = LayoutColors.ColorControlBack, Dock = DockStyle.Right};
            PnlInfo.Paint += PnlInfoPaint;

            _barPixels = Configs.ChartZoom;
            _isGridShown = Configs.ChartGrid;
            _isCrossShown = Configs.ChartCross;
            _isVolumeShown = Configs.ChartVolume;
            _isPositionLotsShown = Configs.ChartLots;
            _isOrdersShown = Configs.ChartOrders;
            _isPositionPriceShown = Configs.ChartPositionPrice;
            _isInfoPanelShown = Configs.ChartInfoPanel;
            _isTrueChartsShown = Configs.ChartTrueCharts;
            _isChartShift = Configs.ChartShift;
            _isChartAutoScroll = Configs.ChartAutoScroll;

            _dynInfoScrollValue = 0;

            _font = new Font(Font.FontFamily, 8);

            // Dynamic info fonts
            _fontDi = new Font(Font.FontFamily, 9);
            _fontDiInd = new Font(Font.FontFamily, 10);

            Graphics g = CreateGraphics();
            _szDate = g.MeasureString("99/99 99:99", _font).ToSize();
            _szDateL = g.MeasureString("99/99/99 99:99", _font).ToSize();
            // TODO checking exact price with.
            _szPrice = g.MeasureString("9.99999", _font).ToSize();
            _szSL = g.MeasureString(" SL", _font).ToSize();
            g.Dispose();

            SetupDynInfoWidth();
            SetupIndicatorPanels();
            SetupButtons();
            SetupDynamicInfo();
            SetupChartTitle();

            PnlInfo.Visible = _isInfoPanelShown;
            PnlCharts.Padding = _isInfoPanelShown ? new Padding(0, 0, 2, 0) : new Padding(0);

            PnlCharts.Resize += PnlChartsResize;
            PnlPrice.Resize += PnlPriceResize;

            _spcTop = _font.Height;
            _spcBottom = _font.Height*8/5;
            _spcLeft = 0;
            _spcRight = _szPrice.Width + _szSL.Width + 2;

            _brushBack = new SolidBrush(LayoutColors.ColorChartBack);
            _brushFore = new SolidBrush(LayoutColors.ColorChartFore);
            _brushLabelBkgrd = new SolidBrush(LayoutColors.ColorLabelBack);
            _brushLabelFore = new SolidBrush(LayoutColors.ColorLabelText);
            _brushDynamicInfo = new SolidBrush(LayoutColors.ColorControlText);
            _brushDiIndicator = new SolidBrush(LayoutColors.ColorSlotIndicatorText);
            _brushEvenRows = new SolidBrush(LayoutColors.ColorEvenRowBack);
            _brushTradeLong = new SolidBrush(LayoutColors.ColorTradeLong);
            _brushTradeShort = new SolidBrush(LayoutColors.ColorTradeShort);
            _brushTradeClose = new SolidBrush(LayoutColors.ColorTradeClose);

            _penGrid = new Pen(LayoutColors.ColorChartGrid);
            _penGridSolid = new Pen(LayoutColors.ColorChartGrid);
            _penCross = new Pen(LayoutColors.ColorChartCross);
            _penVolume = new Pen(LayoutColors.ColorVolume);
            _penBarBorder = new Pen(LayoutColors.ColorBarBorder);
            _penBarThick = new Pen(LayoutColors.ColorBarBorder, 3);
            _penTradeLong = new Pen(LayoutColors.ColorTradeLong);
            _penTradeShort = new Pen(LayoutColors.ColorTradeShort);
            _penTradeClose = new Pen(LayoutColors.ColorTradeClose);

            _penGrid.DashStyle = DashStyle.Dash;
            _penGrid.DashPattern = new float[] {4, 2};

            _colorBarWhite1 = Data.ColorChanage(LayoutColors.ColorBarWhite, 30);
            _colorBarWhite2 = Data.ColorChanage(LayoutColors.ColorBarWhite, -30);
            _colorBarBlack1 = Data.ColorChanage(LayoutColors.ColorBarBlack, 30);
            _colorBarBlack2 = Data.ColorChanage(LayoutColors.ColorBarBlack, -30);

            _colorLongTrade1 = Data.ColorChanage(LayoutColors.ColorTradeLong, 30);
            _colorLongTrade2 = Data.ColorChanage(LayoutColors.ColorTradeLong, -30);
            _colorShortTrade1 = Data.ColorChanage(LayoutColors.ColorTradeShort, 30);
            _colorShortTrade2 = Data.ColorChanage(LayoutColors.ColorTradeShort, -30);
            _colorClosedTrade1 = Data.ColorChanage(LayoutColors.ColorTradeClose, 30);
            _colorClosedTrade2 = Data.ColorChanage(LayoutColors.ColorTradeClose, -30);
        }
Example #43
0
    public void SaveEdit(object o, EventArgs e)
    {
        if (Session["currentSim"] == null)
        {
            return;
        }
        SimFileData data         = (SimFileData)Session["currentSim"];
        ChartData   selectedData = null;

        foreach (ChartData cd in data.Charts)
        {
            if (cd.ChartInfo.ID == HdnChart.Value)
            {
                selectedData = cd;
            }
        }

        Edit edit = new Edit();

        edit.New(CurrentUser);
        edit.Comment1    = CmbComment1.SelectedIndex;
        edit.Comment2    = CmbComment2.SelectedIndex;
        edit.Difficulty  = CmbEditDifficulty.SelectedValue;
        edit.Name        = TxtName.Text;
        edit.Description = TxtNotes.Text;
        edit.Rating      = Convert.ToInt32(CmbRating.SelectedValue);
        edit.Style       = selectedData.ChartInfo.Style.ToString();
        edit.SongID      = HdnSongId.Value;
        edit.Public      = ChkPublic.Checked;
        edit.Video       = video.Text;

        Song s = Song.GetSong(edit.SongID);

        if (!s.Confirmed)
        {
            s.FirstMeasure = first.Text.ToInt();
        }

        int offset = s.FirstMeasure - data.FirstMeasure;

        if (offset > 0)
        {
            while (offset != 0)
            {
                for (int i = 0; i < 16; i++)
                {
                    selectedData.TapData.Add(Arrow.None);
                    selectedData.FreezeData.Add(Arrow.None);
                }

                offset--;
            }
        }

        if (offset < 0)
        {
            while (offset != 0)
            {
                selectedData.TapData.RemoveRange(0, 16);
                selectedData.FreezeData.RemoveRange(0, 16);
                offset++;
            }
        }

        selectedData.TapData.RemoveRange(0, 16);
        selectedData.FreezeData.RemoveRange(0, 16);

        edit.Steps = Converter.ConvertTapsToXml("STEP", selectedData.TapData).ToString() + Converter.ConvertTapsToXml("FREEZ_ARROW", selectedData.FreezeData).ToString();
        edit.Stats = selectedData.GenerateStats();
        edit.Save();
        File.WriteAllText(Server.MapPath(string.Format("/sims/{0}.sm", edit.ID)), (string)Session["simFile"]);
        Session.Remove("currentSim");
        Session.Remove("simFile");
        Session["editid"] = edit.ID;
        Response.Redirect("convert.aspx");
    }
Example #44
0
 /// <summary>
 /// Performs post initialization settings.
 /// </summary>
 public void InitChart(ChartData chartData)
 {
     _chartData = chartData;
     ScrollBar.Select();
 }
 public void CalculatePKAnalysis(IPopulationDataCollector populationDataCollector, ChartData <TimeProfileXValue, TimeProfileYValue> timeProfileChartData)
 {
     _allAnalyses.Clear();
     _populationDataCollector = populationDataCollector;
     _allPKAnalyses           = _pkAnalysesTask.CalculateFor(populationDataCollector, timeProfileChartData);
     _allAnalyses.AddRange(_allPKAnalyses);
     LoadPreferredUnitsForPKAnalysis();
     BindToPKAnalysis();
 }
Example #46
0
        /// <summary>
        /// Updates the chart after a tick.
        /// </summary>
        public void UpdateChartOnTick(bool repaintChart, ChartData chartData)
        {
            _chartData = chartData;

            if (repaintChart)
                SetupChartTitle();

            bool updateWholeChart = repaintChart;
            double oldMaxPrice = _maxPrice;
            double oldMinPrice = _minPrice;

            if (_isChartAutoScroll || repaintChart)
                SetFirstLastBar();

            SetPriceChartMinMaxValues();

            if (Math.Abs(_maxPrice - oldMaxPrice) > chartData.InstrumentProperties.Point ||
                Math.Abs(_minPrice - oldMinPrice) > chartData.InstrumentProperties.Point)
                updateWholeChart = true;

            if (updateWholeChart)
            {
                PnlPrice.Invalidate();
            }
            else
            {
                int left = _spcLeft + (_chartBars - 2)*_barPixels;
                int width = PnlPrice.ClientSize.Width - left;
                var rect = new Rectangle(left, 0, width, _yBottom + 1);
                PnlPrice.Invalidate(rect);
            }

            for (int i = 0; i < PnlInd.Length; i++)
            {
                var slot = (int) PnlInd[i].Tag;
                oldMaxPrice = _sepChartMaxValue[slot];
                oldMinPrice = _sepChartMinValue[slot];
                SetSepChartsMinMaxValues(i);
                if (Math.Abs(_sepChartMaxValue[slot] - oldMaxPrice) > 0.000001 ||
                    Math.Abs(_sepChartMinValue[slot] - oldMinPrice) > 0.000001)
                    updateWholeChart = true;

                if (updateWholeChart)
                {
                    PnlInd[i].Invalidate();
                }
                else
                {
                    int left = _spcLeft + (_chartBars - 2)*_barPixels;
                    int width = PnlInd[i].ClientSize.Width - left;
                    var rect = new Rectangle(left, 0, width, _yBottom + 1);
                    PnlInd[i].Invalidate(rect);
                }
            }

            if (_isInfoPanelShown && !_isCrossShown)
                GenerateDynamicInfo(_lastBar);
        }
Example #47
0
            protected virtual int ExportSummary(Workbook workbook, int sheetIndex, int rowBegin)
            {
                //1.1 前月倒數2天交易日
                DateTime ldt_sdate = PbFunc.f_get_last_day("AI3", KindId, StartMonth, 2);

                //1.2 抓當月最後交易日
                DateTime ldt_edate = PbFunc.f_get_end_day("AI3", KindId, StartMonth);

                Worksheet ws            = workbook.Worksheets[sheetIndex];
                int       rowIndex      = rowBegin;
                int       emptyRowCount = rowIndex + 1 + 32;

                //1.3 get ai3 data
                DataTable dtTemp = Dao.d_ai3(KindId, ldt_sdate, ldt_edate);

                if (dtTemp.Rows.Count <= 0)
                {
                    //刪除空白列
                    if (rowIndex < emptyRowCount)
                    {
                        string selectBegin = (rowIndex + 2).ToString();
                        string selectEnd   = (emptyRowCount).ToString();
                        string cellRange   = string.Format("A{0}:G{1}", selectBegin, selectEnd);
                        ws.DeleteCells(ws.Range[cellRange], DeleteMode.EntireRow);
                    }
                    return(0);
                }

                //1.4 export to sheet
                DateTime ldt_ymd = DateTime.MinValue;

                foreach (DataRow dr in dtTemp.Rows)
                {
                    DateTime ai3_date = dr["ai3_date"].AsDateTime();
                    if (ldt_ymd != ai3_date)
                    {
                        ldt_ymd = ai3_date;
                        rowIndex++;
                        ws.Cells[rowIndex, 0].Value = ldt_ymd.ToString("MM/dd");
                    }

                    ws.Cells[rowIndex, 1].Value = dr["ai3_close_price"].AsDecimal();
                    ws.Cells[rowIndex, 3].Value = dr["ai3_m_qnty"].AsDecimal();
                    ws.Cells[rowIndex, 4].Value = dr["ai3_oi"].AsDecimal();
                    ws.Cells[rowIndex, 5].Value = dr["ai3_index"].AsDecimal();
                }//foreach (DataRow dr in dtTemp.Rows) {

                //1.5 刪除空白列(注意,沒刪除好會影響到後面sheet的圖表)
                if (rowIndex < emptyRowCount)
                {
                    string selectBegin = (rowIndex + 2).ToString();
                    string selectEnd   = (emptyRowCount).ToString();
                    string cellRange   = string.Format("A{0}:G{1}", selectBegin, selectEnd);
                    ws.DeleteCells(ws.Range[cellRange], DeleteMode.EntireRow);
                    //ken,用DeleteCells還是不行,測試結果似乎xlsx的圖表公式一直固定,不會更新
                }

                //1.6 圖表範圍重選
                ChartObject chartObjs    = workbook.ChartSheets[$"{ws.Name}a"].Chart;
                ChartData   newChartData = new ChartData();

                //黃金 or 台幣黃金期貨總成交量
                newChartData.RangeValue    = ws.Range["D4:D" + (rowIndex + 1).AsString()];
                chartObjs.Series[0].Values = newChartData;
                //黃金 or 台幣黃金期貨總未平倉量
                newChartData.RangeValue    = ws.Range["E4:E" + (rowIndex + 1).AsString()];
                chartObjs.Series[1].Values = newChartData;
                //黃金 or 台幣黃金期貨價格
                newChartData.RangeValue    = ws.Range["B4:B" + (rowIndex + 1).AsString()];
                chartObjs.Series[2].Values = newChartData;
                //現貨價格
                newChartData.RangeValue    = ws.Range["F4:F" + (rowIndex + 1).AsString()];
                chartObjs.Series[3].Values = newChartData;

                return(1);
            }
Example #48
0
        private void bgwUpdate_DoWork(object sender, DoWorkEventArgs e)
        {
            try
            {
                Control.CheckForIllegalCrossThreadCalls = false;
                string sql = "SELECT * FROM [dbo.Goods] WHERE EndStationID=" + CommonData.stationID + " AND EndTime >= '" + DateTime.Now.ToString("yy-MM-dd,00:00") + "'";
                double sumWeight = 0;
                BaseOperate op = new BaseOperate();
                DataSet ds = op.getds(sql, "[dbo.Goods]");
                if (ds.Tables.Count <= 0)
                    return;
                ChartData chartdata = new ChartData();
                vschart = new visifire();

                chartdata.updateData(5, DateTime.Now, 0).ToString();
                vschart.reSize(webBrowser.Width, webBrowser.Height);
                vschart.settitle("当日转运中心报表", "时间", "运输量");
                string[] column = new string[16];
                double[] data1 = new double[16];
                for (int i = 0; i <= 15; i++)
                {
                    column[i] = (i + 5).ToString() + ":00";
                    data1[i] = chartdata.stationdaybox[i];
                }

                vschart.set3D(true);
                vschart.setData(column, data1, 16);
                string type = "pie";

                vschart.setType(type);
                e.Result = ds;
                if (CommonData.stations.Rows.Count > 0)
                    return;
                sql = "Select * from [dbo.Station]";
                DataSet ds1 = operate.getds(sql, "[dbo.Station]");
                if (ds1 == null || ds1.Tables.Count <= 0)
                    CommonData.stations = new DataTable();
                else
                    CommonData.stations = ds1.Tables[0];
            }
            catch (Exception ex) { LogWriter.WriteLog(ex.Message + "\n" + ex.StackTrace); }
        }
Example #49
0
 public void plot(ChartData data, params ChartAxis axis)
 {
     data.FillChart(this, axis);
 }
Example #50
0
        // Functie voor het toevoegen van gegevens op een result slide
        public static void Add(List<Result> allResults, Question question, Microsoft.Office.Interop.PowerPoint.Slide resultSlide)
        {
            MultipleChoiceQuestion multipleChoiceQuestion = null;
            if (question is MultipleChoiceQuestion) {
                multipleChoiceQuestion = (MultipleChoiceQuestion)question;
            }

            // Verwijder eerst alle data
            while (resultSlide.Shapes.Count > 0) {
                resultSlide.Shapes[1].Delete();
            }
            resultSlide.Application.StartNewUndoEntry(); // preformance

            // opfleueren
            Microsoft.Office.Interop.PowerPoint.Shape resultTextBox = resultSlide.Shapes.AddTextbox(Office.MsoTextOrientation.msoTextOrientationHorizontal, 200, 100, 500, 50);
            resultTextBox.TextFrame.TextRange.InsertAfter("Resultaten voor " + question.Description);

            // Hall alle resultaten op voor deze vraag
            List<Result> currentQuestionResults = new List<Result>();
            foreach (Result result in allResults) {
                if (result.questionID == question.ID) {
                    currentQuestionResults.Add(result);
                }
            }

            // Haal alle answeroptions op (de int)
            Dictionary<int, ChartData> distinctAnswers = new Dictionary<int, ChartData>();

            foreach (Result result in currentQuestionResults) {
                if(result.answerID != null) {
                    if (!distinctAnswers.ContainsKey(result.answerID.Value)) {
                        ChartData cd = new ChartData();
                        cd.Count = 1;
                        cd.Result = result;

                        distinctAnswers.Add(result.answerID.Value, cd);
                    }
                    else {
                        ChartData cd = distinctAnswers[result.answerID.Value];
                        cd.Count++;
                    }
                }
            }

            // Pak hoogste waarde
            int highestCount = 0;
            foreach (KeyValuePair<int, ChartData> kvp in distinctAnswers) {
                if (kvp.Value.Count * 10 > highestCount)
                    highestCount = kvp.Value.Count * 10;
            }

            // Max breedte en hoogte voor grafiek
            int maxWidth = 400;
            int maxHeight = 275;

            // Calculeer breedte per staaf
            float rectangleWidth = 0;
            float rectPercentage = (26f - distinctAnswers.Count) / 26f; // We hebben 26 letters in het alfabet
            if(distinctAnswers.Count > 0) {
                rectangleWidth = (maxWidth / distinctAnswers.Count) * rectPercentage;
            }

            // Calculeer breedte van grafiek voor het centeren
            float width = distinctAnswers.Count * rectangleWidth;
            float centerX = (Globals.ThisAddIn.Application.ActivePresentation.SlideMaster.Width - width) / 2;

            // Calculeer breedte van staaf voor het centeren van labels
            float centerLabelPosition = rectangleWidth / 2;

            int x = (int)centerX;
            int y = 400;
            foreach (KeyValuePair<int, ChartData> kvp in distinctAnswers) {
                double percentage = (double)(10 * kvp.Value.Count) / (double)highestCount;
                double barHeight = maxHeight * percentage;

                Microsoft.Office.Interop.PowerPoint.Shape shape = resultSlide.Shapes.AddShape(Office.MsoAutoShapeType.msoShapeRectangle, x, y - (int)barHeight, rectangleWidth, (int)barHeight);
                shape.Tags.Add("answer", kvp.Value.Result.answerID.ToString());

                // Correct answer? Maak het een ander kleurtje
                if(question.CorrectAnswer != null && kvp.Key == question.CorrectAnswer.ID) {
                    shape.Fill.ForeColor.RGB = ColorTranslator.ToOle(Color.ForestGreen);
                }

                // Zoek voor juiste answer
                if(multipleChoiceQuestion != null) {
                    foreach (Answer answer in multipleChoiceQuestion.AnswerOptions) {
                        // Answer gevonden, is tevens geen correct answer
                        if (answer.ID == kvp.Value.Result.answerID && question.CorrectAnswer.ID != answer.ID) {
                            //int offset = answer.Description.Length * 5;
                            int offset = 0;
                            // Aantal karakters minder dan 10, geef het horizontaal weer
                            if (answer.Description.Length <= 10)
                                resultSlide.Shapes.AddLabel(Office.MsoTextOrientation.msoTextOrientationHorizontal, x + centerLabelPosition - offset, y, 100, 100).TextEffect.Text = answer.Description;
                            else {
                                // Meer dan 10 karakters, geef het diagonaal weer
                                Microsoft.Office.Interop.PowerPoint.Shape labelShape = resultSlide.Shapes.AddLabel(Office.MsoTextOrientation.msoTextOrientationDownward, x + centerLabelPosition - offset, y, 100, 100);
                                labelShape.TextEffect.Text = answer.Description;
                                labelShape.Rotation = 315f;
                            }
                        }
                        // Answer gevonden, is tevens correct answer
                        else if (answer.ID == kvp.Value.Result.answerID && question.CorrectAnswer.ID == answer.ID) {
                            int offset = 0;
                            // Aantal karakters minder dan 10, geef het horizontaal weer
                            if (question.CorrectAnswer.Description.Length <= 10)
                                resultSlide.Shapes.AddLabel(Office.MsoTextOrientation.msoTextOrientationHorizontal, x + centerLabelPosition - offset, y, 100, 100).TextEffect.Text = answer.Description;
                            else {
                                // Meer dan 10 karakters, geef het diagonaal weer
                                Microsoft.Office.Interop.PowerPoint.Shape labelShape = resultSlide.Shapes.AddLabel(Office.MsoTextOrientation.msoTextOrientationDownward, x + centerLabelPosition - offset, y, 100, 100);
                                labelShape.TextEffect.Text = question.CorrectAnswer.Description;
                                labelShape.Rotation = 315f;
                            }
                        }
                    }
                }

                // Answer label
                Microsoft.Office.Interop.PowerPoint.Shape label = resultSlide.Shapes.AddLabel(Office.MsoTextOrientation.msoTextOrientationHorizontal, x + centerLabelPosition - 10, y - (int)barHeight, 100, 100);
                label.TextEffect.Text = kvp.Value.Count.ToString();
                label.TextFrame.TextRange.Font.Color.RGB = Color.White.ToArgb();

                x += (int)(rectangleWidth + 10);
            }
        }
Example #51
0
        private async Task <ChartData> GetStayLostStatisticsData2(DateTime startTime, DateTime endTime, bool isStay, CancellationToken token)
        {
            var lastDay      = endTime.AddDays(30);
            var loginRecords = await this.UCenterEventDatabase.AccountEvents.GetListAsync(
                e => (e.EventName == "Login" || e.EventName == "GuestLogin") && (e.CreatedTime >= startTime && e.CreatedTime <= lastDay),
                token);

            var groups      = loginRecords.GroupBy(e => e.CreatedTime.ToLocalTime().Date).ToList();
            var dayDatas    = new List <float>();
            var last7Datas  = new List <float>();
            var last30Datas = new List <float>();
            var labels      = new List <string>();

            var startDate = startTime.ToLocalTime().Date;
            var endDate   = endTime.ToLocalTime().Date;

            Func <DateTime, int, float> getStay = (dateTime, days) =>
            {
                var next  = groups.FirstOrDefault(g => g.Key == dateTime.AddDays(days));
                var group = groups.FirstOrDefault(g => g.Key == dateTime);
                if (group == null)
                {
                    return(0);
                }
                else if (next == null)
                {
                    return(0);
                }
                else
                {
                    var nextUsers    = next.Select(u => u.AccountId).Distinct().ToList();
                    var currentUsers = group.Select(u => u.AccountId).Distinct().ToList();

                    return((float)Math.Round((double)(nextUsers.Count() - nextUsers.Except(currentUsers).Count()) / currentUsers.Count() * 100, 2));
                }
            };

            for (var date = startDate; date <= endDate; date = date.AddDays(1))
            {
                dayDatas.Add(getStay(date, 1));
                last7Datas.Add(getStay(date, 7));
                last30Datas.Add(getStay(date, 30));
                labels.Add(date.ToString("yyyy/MM/dd"));
            }

            var result = new ChartData();

            result.Data.Add(dayDatas);
            result.Data.Add(last7Datas);
            result.Data.Add(last30Datas);
            result.Labels = labels;

            var tag = "留存";

            if (!isStay)
            {
                result.Data = result.Data.Select(list => list.Select(d => 100 - d).ToList()).ToList();
                tag         = "流失";
            }

            result.Series = new List <string>()
            {
                $"次日{tag}率", $"7日{tag}率", $"30日{tag}率"
            };

            return(result);
        }
        void ControlTreeDataLoader.LoadData()
        {
            CssClass = CssClass.ConcatenateWithSpace( CssElementCreator.CssClass );

            var rand = new Random();
            var actualColors = ( colors ?? getDefaultColors() ).Take( seriesCollection.Count() )
                .Pad( seriesCollection.Count(), () => Color.FromArgb( rand.Next( 256 ), rand.Next( 256 ), rand.Next( 256 ) ) );

            Func<DataSeries, Color, BaseDataset> datasetSelector;
            OptionsBase options;
            switch( setup.ChartType ) {
                case ChartType.Line:
                    datasetSelector = ( series, color ) => new Dataset( color, series.Values.TakeLast( setup.MaxXValues ) );
                    options = new LineOptions { bezierCurve = false };
                    break;
                case ChartType.Bar:
                    datasetSelector = ( series, color ) => new BaseDataset( color, series.Values.TakeLast( setup.MaxXValues ) );
                    // ReSharper disable once RedundantEmptyObjectOrCollectionInitializer
                    options = new BarOptions { };
                    break;
                default:
                    throw new UnexpectedValueException( setup.ChartType );
            }

            var chartData = new ChartData(
                setup.Labels.TakeLast( setup.MaxXValues ),
                seriesCollection.Zip( actualColors, ( series, color ) => datasetSelector( series, color ) ).ToArray() );

            var canvas = new HtmlGenericControl( "canvas" );
            switch( setup.ChartType ) {
                case ChartType.Line:
                case ChartType.Bar:
                    canvas.Attributes.Add( "height", "400" );
                    break;
                default:
                    throw new UnexpectedValueException( setup.ChartType );
            }
            Controls.Add( canvas );

            if( seriesCollection.Count() > 1 ) {
                Controls.Add(
                    new Box(
                        "Key",
                        new ControlLine(
                            chartData.datasets.Select(
                                ( dataset, i ) =>
                                new Literal
                                    {
                                        Text =
                                            @"<div style='display: inline-block; vertical-align: middle; width: 20px; height: 20px; background-color: {0}; border: 1px solid {1};'>&nbsp;</div> {2}"
                                    .FormatWith( dataset.fillColor, dataset.strokeColor, seriesCollection.ElementAt( i ).Name )
                                    } as Control ).ToArray() ).ToSingleElementArray() ) );
            }

            // Remove this when ColumnPrimaryTable supports Excel export.
            var headers = setup.XAxisTitle.ToSingleElementArray().Concat( seriesCollection.Select( v => v.Name ) );
            var tableData = new List<IEnumerable<object>>( seriesCollection.First().Values.Count() );
            for( var i = 0; i < tableData.Capacity; i++ ) {
                var i1 = i;
                tableData.Add( setup.Labels.ElementAt( i1 ).ToSingleElementArray().Concat( seriesCollection.Select( v => v.Values.ElementAt( i1 ).ToString() ) ) );
            }
            Controls.Add( getExportButton( headers, tableData ) );

            var table = new ColumnPrimaryTable(
                firstDataFieldIndex: 1,
                items:
                    new EwfTableItem( from i in setup.XAxisTitle.ToSingleElementArray().Concat( setup.Labels ) select i.ToCell() ).ToSingleElementArray()
                        .Concat(
                            from series in seriesCollection
                            select new EwfTableItem( series.Name.ToCell().ToSingleElementArray().Concat( from i in series.Values select i.ToString().ToCell() ) ) ) );
            Controls.Add( table );

            using( var writer = new StringWriter() ) {
                writer.WriteLine( "var canvas = document.getElementById( '{0}' );".FormatWith( canvas.ClientID ) );
                writer.WriteLine( "canvas.width = $( canvas ).parent().width();" );
                writer.WriteLine( "new Chart( canvas.getContext( '2d' ) ).{0}( {1}, {2} );".FormatWith( setup.ChartType, chartData.ToJson(), options.ToJson() ) );
                jsInitStatements = writer.ToString();
            }
        }
Example #53
0
        public static RemotePriceChart Generate(int key, int decimals, ChartData chartData, int from)
        {
            var pc = chartData.GetVisual(key) as PriceChart;

            if (pc == null)
            {
                return(null);
            }

            var data = new RemotePriceChart();
            var br   = pc.GetBars();

            if (br == null)
            {
                return(null);
            }

            data.Brush      = pc.GetBrush();
            data.StartPrice = 0;
            data.Diffs      = new long[0];
            data.Decimals   = decimals;

            int k = 1;

            if (decimals == 1)
            {
                k = 10;
            }
            else if (decimals == 2)
            {
                k = 100;
            }
            else if (decimals == 3)
            {
                k = 1000;
            }
            else if (decimals == 4)
            {
                k = 10000;
            }
            else if (decimals == 5)
            {
                k = 100000;
            }
            else if (decimals == 6)
            {
                k = 1000000;
            }
            else if (decimals == 7)
            {
                k = 10000000;
            }
            else if (decimals == 8)
            {
                k = 100000000;
            }
            else if (decimals == 9)
            {
                k = 1000000000;
            }
            else if (decimals == 10)
            {
                k = 1000000000;
            }

            var bars = br.Bars.Skip(from);

            if (!bars.Any())
            {
                return(data);
            }

            data.StartPrice = (long)(bars.First().Open *k);

            List <long> dfs      = new List <long>();
            long        curPrice = data.StartPrice;

            long p;

            foreach (var bar in bars)
            {
                p = (long)(bar.Open * k); dfs.Add(p - curPrice); curPrice = p;
                p = (long)(bar.High * k); dfs.Add(p - curPrice); curPrice = p;
                p = (long)(bar.Low * k); dfs.Add(p - curPrice); curPrice = p;
                p = (long)(bar.Close * k); dfs.Add(p - curPrice); curPrice = p;
                dfs.Add(bar.Volume);
            }
            data.Diffs = dfs.ToArray();

            return(data);
        }
        public void GetConfigData()
        {
            var id = Context.ConnectionId;
            var item = UserList.Single(x => x.User == Context.ConnectionId);
            var o = new ChartData();
            var ln = new List<LaneNames>();

            foreach(var a in item.ListOfLanes)
            {
                Equipments1 e1 = Equipments1.Load(a);
                var ln1 = new LaneNames()
                {
                    laneID = e1.RecordID,
                    displayName = e1.EquipmentName
                };

                ln.Add(ln1);
            }

            o.visibleLanes = ln;

            o.airlines = Airline.ListAirlines().Select(x => new ChartD()
            {
                name = x.AirlineName,
                recordID = x.RecordID
            }).ToList();
            
            o.threats = Threat.ToList().Select(x => new ChartD()
            {
                name = x.Name,
                recordID = x.RecordID
            }).ToList();



            Clients.Client(id).getConfigData(o);
        }
Example #55
0
        //public void SetScrollBar()
        //{
        //    int trackView = trackBar.Value;
        //    int displayItemCount = DisplayPointCount * trackView;

        //    int maxScrollValue = (int)Math.Ceiling((Convert.ToDouble(ChartData.Count) / Convert.ToDouble(displayItemCount)));
        //    int minScrollValue = 1;

        //    hScrollBar.Minimum = minScrollValue;
        //    hScrollBar.Maximum = maxScrollValue;
        //    hScrollBar.Value = maxScrollValue;
        //    hScrollBar.LargeChange = 1;
        //    hScrollBar.SmallChange = 1;
        //}

        //public void SetTrackBar()
        //{
        //    pnlScroll.Visible = IsAutoScrollX;
        //    int maxScrollValue = (int)Math.Ceiling((Convert.ToDouble(ChartData.Count) / Convert.ToDouble(DisplayPointCount)));
        //    int minScrollValue = 1;

        //    trackBar.Minimum = minScrollValue;
        //    trackBar.Maximum = maxScrollValue;
        //    trackBar.Value = minScrollValue;
        //    trackBar.LargeChange = 1;
        //    trackBar.SmallChange = 1;
        //}

        public void DisplayView()
        {
            chart.Update();

            int scrollVal = hScrollBar.Value;

            if (scrollVal < hScrollBar.Minimum)
            {
                scrollVal = hScrollBar.Minimum;
            }
            if (scrollVal > hScrollBar.Maximum)
            {
                scrollVal = hScrollBar.Maximum;
            }

            int trackView        = trackBar.Value;
            int displayItemCount = DisplayPointCount * trackView;

            List <S_CandleItemData> viewLists = null;
            int maxDisplayIndex = 0;
            int minDisplayIndex = 0;

            if (scrollVal == hScrollBar.Minimum)
            {
                int maxIndex = ChartData.Count > displayItemCount ? displayItemCount - 1 : ChartData.Count;
                if (displayItemCount > ChartData.Count)
                {
                    displayItemCount = ChartData.Count;
                }
                viewLists       = ChartData.GetRange(0, maxIndex);
                maxDisplayIndex = displayItemCount;
                minDisplayIndex = 0;
            }
            else if (scrollVal == hScrollBar.Maximum)
            {
                int minIndex = ChartData.Count < displayItemCount ? 0 : ChartData.Count - displayItemCount;
                if (displayItemCount > ChartData.Count)
                {
                    displayItemCount = ChartData.Count;
                }
                viewLists       = ChartData.GetRange(minIndex, ChartData.Count < displayItemCount ? ChartData.Count : displayItemCount);
                maxDisplayIndex = ChartData.Count;
                minDisplayIndex = minIndex;
            }
            else
            {
                int currentIndex = (scrollVal - 1);
                if (ChartData.Count < currentIndex + displayItemCount)
                {
                    displayItemCount = ChartData.Count - currentIndex;
                }

                viewLists = ChartData.GetRange(currentIndex, displayItemCount);

                maxDisplayIndex = currentIndex + displayItemCount;
                minDisplayIndex = currentIndex;
            }
            if (viewLists != null)
            {
                chart.ChartAreas[0].AxisX.Maximum = maxDisplayIndex + 1;
                chart.ChartAreas[0].AxisX.Minimum = minDisplayIndex - 1;

                double maxPrice = viewLists.Max(m => m.HighPrice);
                double minPrice = viewLists.Min(m => m.LowPrice);

                maxPrice = maxPrice + SpaceMaxMin;
                minPrice = minPrice - SpaceMaxMin;
                chart.ChartAreas[0].AxisY2.Maximum = maxPrice;
                chart.ChartAreas[0].AxisY2.Minimum = minPrice;
            }
        }
        public ActionResult GetChart(List<string> listOfDictWithData, string title = "", string xAxisTitle = "", string yAxisTitle = "", int height = 400, int width = 600)
        {
            List<Dictionary<string, string>> dataSets = new List<Dictionary<string, string>>();
            foreach (var str in listOfDictWithData)
            {
                dataSets.Add(new Dictionary<string, string>());
                var tmpLst = str.Split(',');
                foreach (var pair in tmpLst)
                {
                    if (!pair.IsEmpty())
                    {
                        var tmp = pair.Split('|');
                        dataSets.Last().Add(tmp.First(), tmp.Last());
                    }
                }
            }

            _logger.Trace("Get Chart.");
            ChartData chartData = new ChartData(dataSets, title, xAxisTitle, yAxisTitle, height, width);
            return View(chartData);
        }
        public void CU001(string name)
        {
            FileInfo templateFile = new FileInfo(Path.Combine(TestUtil.SourceDir.FullName, name));

            if (templateFile.Extension.ToLower() == ".docx")
            {
                WmlDocument wmlTemplate = new WmlDocument(templateFile.FullName);

                var afterUpdatingDocx = new FileInfo(Path.Combine(TestUtil.TempDir.FullName, templateFile.Name.Replace(".docx", "-processed-by-ChartUpdater.docx")));
                wmlTemplate.SaveAs(afterUpdatingDocx.FullName);

                using (var wDoc = WordprocessingDocument.Open(afterUpdatingDocx.FullName, true))
                {
                    var chart1Data = new ChartData
                    {
                        SeriesNames = new[] {
                            "Car",
                            "Truck",
                            "Van",
                            "Bike",
                            "Boat",
                        },
                        CategoryDataType = ChartDataType.String,
                        CategoryNames    = new[] {
                            "Q1",
                            "Q2",
                            "Q3",
                            "Q4",
                        },
                        Values = new double[][] {
                            new double[] {
                                100, 310, 220, 450,
                            },
                            new double[] {
                                200, 300, 350, 411,
                            },
                            new double[] {
                                80, 120, 140, 600,
                            },
                            new double[] {
                                120, 100, 140, 400,
                            },
                            new double[] {
                                200, 210, 210, 480,
                            },
                        },
                    };
                    ChartUpdater.UpdateChart(wDoc, "Chart1", chart1Data);

                    var chart2Data = new ChartData
                    {
                        SeriesNames = new[] {
                            "Series"
                        },
                        CategoryDataType = ChartDataType.String,
                        CategoryNames    = new[] {
                            "Cars",
                            "Trucks",
                            "Vans",
                            "Boats",
                        },
                        Values = new double[][] {
                            new double[] {
                                320, 112, 64, 80,
                            },
                        },
                    };
                    ChartUpdater.UpdateChart(wDoc, "Chart2", chart2Data);

                    var chart3Data = new ChartData
                    {
                        SeriesNames = new[] {
                            "X1",
                            "X2",
                            "X3",
                            "X4",
                            "X5",
                            "X6",
                        },
                        CategoryDataType = ChartDataType.String,
                        CategoryNames    = new[] {
                            "Y1",
                            "Y2",
                            "Y3",
                            "Y4",
                            "Y5",
                            "Y6",
                        },
                        Values = new double[][] {
                            new double[] { 3.0, 2.1, .7, .7, 2.1, 3.0, },
                            new double[] { 3.0, 2.1, .8, .8, 2.1, 3.0, },
                            new double[] { 3.0, 2.4, 1.2, 1.2, 2.4, 3.0, },
                            new double[] { 3.0, 2.7, 1.7, 1.7, 2.7, 3.0, },
                            new double[] { 3.0, 2.9, 2.5, 2.5, 2.9, 3.0, },
                            new double[] { 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, },
                        },
                    };
                    ChartUpdater.UpdateChart(wDoc, "Chart3", chart3Data);

                    var chart4Data = new ChartData
                    {
                        SeriesNames = new[] {
                            "Car",
                            "Truck",
                            "Van",
                        },
                        CategoryDataType   = ChartDataType.DateTime,
                        CategoryFormatCode = 14,
                        CategoryNames      = new[] {
                            ToExcelInteger(new DateTime(2013, 9, 1)),
                            ToExcelInteger(new DateTime(2013, 9, 2)),
                            ToExcelInteger(new DateTime(2013, 9, 3)),
                            ToExcelInteger(new DateTime(2013, 9, 4)),
                            ToExcelInteger(new DateTime(2013, 9, 5)),
                            ToExcelInteger(new DateTime(2013, 9, 6)),
                            ToExcelInteger(new DateTime(2013, 9, 7)),
                            ToExcelInteger(new DateTime(2013, 9, 8)),
                            ToExcelInteger(new DateTime(2013, 9, 9)),
                            ToExcelInteger(new DateTime(2013, 9, 10)),
                            ToExcelInteger(new DateTime(2013, 9, 11)),
                            ToExcelInteger(new DateTime(2013, 9, 12)),
                            ToExcelInteger(new DateTime(2013, 9, 13)),
                            ToExcelInteger(new DateTime(2013, 9, 14)),
                            ToExcelInteger(new DateTime(2013, 9, 15)),
                            ToExcelInteger(new DateTime(2013, 9, 16)),
                            ToExcelInteger(new DateTime(2013, 9, 17)),
                            ToExcelInteger(new DateTime(2013, 9, 18)),
                            ToExcelInteger(new DateTime(2013, 9, 19)),
                            ToExcelInteger(new DateTime(2013, 9, 20)),
                        },
                        Values = new double[][] {
                            new double[] {
                                1, 2, 3, 2, 3, 4, 5, 4, 5, 6, 5, 4, 5, 6, 7, 8, 7, 8, 8, 9,
                            },
                            new double[] {
                                2, 3, 3, 4, 4, 5, 6, 7, 8, 7, 8, 9, 9, 9, 7, 8, 9, 9, 10, 11,
                            },
                            new double[] {
                                2, 3, 3, 3, 3, 2, 2, 2, 3, 2, 3, 3, 4, 4, 4, 3, 4, 5, 5, 4,
                            },
                        },
                    };
                    ChartUpdater.UpdateChart(wDoc, "Chart4", chart4Data);
                }
            }
            if (templateFile.Extension.ToLower() == ".pptx")
            {
                PmlDocument pmlTemplate = new PmlDocument(templateFile.FullName);

                var afterUpdatingPptx = new FileInfo(Path.Combine(TestUtil.TempDir.FullName, templateFile.Name.Replace(".pptx", "-processed-by-ChartUpdater.pptx")));
                pmlTemplate.SaveAs(afterUpdatingPptx.FullName);

                using (var pDoc = PresentationDocument.Open(afterUpdatingPptx.FullName, true))
                {
                    var chart1Data = new ChartData
                    {
                        SeriesNames = new[] {
                            "Car",
                            "Truck",
                            "Van",
                        },
                        CategoryDataType = ChartDataType.String,
                        CategoryNames    = new[] {
                            "Q1",
                            "Q2",
                            "Q3",
                            "Q4",
                        },
                        Values = new double[][] {
                            new double[] {
                                320, 310, 320, 330,
                            },
                            new double[] {
                                201, 224, 230, 221,
                            },
                            new double[] {
                                180, 200, 220, 230,
                            },
                        },
                    };
                    ChartUpdater.UpdateChart(pDoc, 1, chart1Data);
                }
            }
        }
Example #58
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="type">Type of the chart</param>
 /// <param name="size">Size of the chart</param>
 /// <param name="data">Chart data</param>
 public Chart(ChartType type, ChartSize size, ChartData data)
     : base(type, size)
 {
     _data = data;
 }