예제 #1
0
        //
        // Constructor
        //

        public ChartBox()
        {
            this.isHorizontalValues = false;
            this.isVerticalValues   = false;
            this.isHorizontalGrid   = false;
            this.isVerticalGrid     = false;

            this.gridColor     = Color.Gray;
            this.tickColor     = Color.Green;
            this.textColor     = Color.Gray;
            this.gridTextColor = Color.Black;
            this.frameColor    = Color.Black;
            this.toolColor     = Color.Black;

            this.iHGridLines = 0;
            this.iVGridLines = 0;

            Charts = new ChartCollection();

            //
            // New in alpha-2
            //

            isFixedPeriod = false;

            baseChartIndex = 0;

            // end

            this.Resize += new EventHandler(ChartBox_Resize);
        }
예제 #2
0
        static void Main(string[] args)
        {
            // Instantiating a Workbook object
            Workbook workbook = new Workbook();

            // Obtaining the reference of the first worksheet
            WorksheetCollection worksheets = workbook.Worksheets;
            Worksheet           sheet      = worksheets[0];

            // Adding some sample value to cells
            Cells cells = sheet.Cells;
            Cell  cell  = cells["A1"];

            cell.Value = 50;
            cell       = cells["A2"];
            cell.Value = 100;
            cell       = cells["A3"];
            cell.Value = 150;
            cell       = cells["B1"];
            cell.Value = 4;
            cell       = cells["B2"];
            cell.Value = 20;
            cell       = cells["B3"];
            cell.Value = 50;

            ChartCollection charts = sheet.Charts;

            // Adding a chart to the worksheet
            int   chartIndex = charts.Add(ChartType.Pyramid, 5, 0, 15, 5);
            Chart chart      = charts[chartIndex];

            //Save the chart image file.
            chart.ToImage("AsposeChartImage.png", ImageFormat.Png);
        }
        public override void Update()
        {
            var player      = ServiceLocator.Current.GetInstance <SingletonStorageModel>().PlayerSelectedItem;
            var tournaments = ServiceLocator.Current.GetInstance <IDataService>().GetPlayerTournaments(player?.PlayerIds);

            var tournamentsOfStatistic = new HashSet <TournamentKey>(StorageModel
                                                                     .GetFilteredTournamentPlayerStatistic()
                                                                     .Select(x => new TournamentKey(x.PokersiteId, x.TournamentId))
                                                                     .Distinct());

            var filteredTournaments = tournaments.Where(x => tournamentsOfStatistic.Contains(x.BuildKey())).ToList();

            var chartSeriesItems = new Dictionary <TournamentChartSeries, List <ChartSeriesItem> >();

            UpdateBasedOnTournamentsSeries(chartSeriesItems, filteredTournaments);
            UpdateBasedOnStatisticSeries(chartSeriesItems, filteredTournaments);

            App.Current.Dispatcher.Invoke(() => ChartCollection.ForEach(x => x.ItemsCollection.Clear()));

            if (chartSeriesItems.Count > 0)
            {
                chartSeriesItems.Keys.ForEach(charSerie =>
                {
                    charSerie.ItemsCollection = new ObservableCollection <ChartSeriesItem>(chartSeriesItems[charSerie]);
                });
            }
        }
        private void UpdateBasedOnTournamentsSeries(Dictionary <TournamentChartSeries, List <ChartSeriesItem> > chartSeriesItems, IList <Tournaments> tournaments)
        {
            var chartItemDataBuilder = CreateTournamentChartItemDataBuilder(ChartDisplayRange);

            var tournamentRecords = chartItemDataBuilder.Create(tournaments, TournamentChartFilterType);

            foreach (var tournament in tournamentRecords)
            {
                foreach (var chartSerie in ChartCollection.Where(x => !x.IsBasedOnStatistic))
                {
                    ChartSeriesItem previousChartSeriesItem = null;
                    ChartSeriesItem chartSeriesItem         = null;

                    if (!chartSeriesItems.ContainsKey(chartSerie))
                    {
                        chartSeriesItems.Add(chartSerie, new List <ChartSeriesItem>());
                    }

                    chartSeriesItem = new ChartSeriesItem
                    {
                        Format                 = chartSerie.Format,
                        Category               = tournament.Started,
                        PointColor             = chartSerie.ColorsPalette.PointColor,
                        TrackBallColor         = chartSerie.ColorsPalette.TrackBallColor,
                        TooltipColor           = chartSerie.ColorsPalette.TooltipColor,
                        TooltipForegroundColor = chartSerie.ColorsPalette.TooltipForeground
                    };

                    previousChartSeriesItem = chartSeriesItems[chartSerie].LastOrDefault();
                    chartSeriesItems[chartSerie].Add(chartSeriesItem);

                    chartSerie.UpdateChartSeriesItemByTournament?.Invoke(chartSeriesItem, previousChartSeriesItem, tournament);
                }
            }
        }
예제 #5
0
 public ChannelViewModel()
 {
     if (IsInDesignMode)
     {
         return;
     }
     //Subscribe to start stop events on main
     MainViewModel.Start += StartAcquisition;
     MainViewModel.Stop  += StopAcquisition;
     //Set up char collections
     _plotData_live = new ChartCollection <double>(2000);
     _plotData_seal = new ChartCollection <double, double>();
     //Create buffer with 1s worth of storage
     _liveDump                = new ProducerConsumer <double>(HardwareSettings.DAQ.Rate);
     _sealTestDump            = new ProducerConsumer <IndexedSample>(HardwareSettings.DAQ.Rate);
     _displayUpdater          = new DispatcherTimer();
     _displayUpdater.Tick    += TimerEvent;
     _displayUpdater.Interval = new TimeSpan(0, 0, 0, 0, 5);
     _displayUpdater.Start();
     RaisePropertyChanged(nameof(VC));
     if (ClampModeChanged != null)
     {
         ClampModeChanged.Invoke(new ClampModeChangedArgs(ChannelIndex, VC ? DAQ.ClampMode.VoltageClamp : DAQ.ClampMode.CurrentClamp));
     }
 }
		private void Page_Load(object sender, System.EventArgs e)
		{
		
			_questionId = 
				Information.IsNumeric(Request["QuestionId"]) ? int.Parse(Request["QuestionId"]) : -1;
			_filterId = 
				Information.IsNumeric(Request["FilterId"]) ? int.Parse(Request["FilterId"]) : -1;
			_sortOrder =
				Request["SortOrder"] == null ? "ans" : Request["SortOrder"];

			if (_questionId == -1)
			{
				Response.End();
			}
			else if (!NSurveyUser.Identity.IsAdmin &&
				!NSurveyUser.Identity.HasAllSurveyAccess)
			{
				if (!new Question().CheckQuestionUser(_questionId, NSurveyUser.Identity.UserId))
				{
					Response.End();
				}
			}

			ChartEngine engine = new ChartEngine();
			ChartCollection charts = new ChartCollection(engine);

			engine.Size = new Size(700, 500);
			engine.Charts = charts;
			
			WebChart.ColumnChart chart = new WebChart.ColumnChart();
			chart.Fill.Color = Color.FromArgb(98,94,238);
			chart.MaxColumnWidth = 80;
			chart.DataLabels.Visible = true;
			chart.DataLabels.Position = DataLabelPosition.Bottom;
            chart.DataLabels.ForeColor = Color.White;
			chart.Shadow.Visible = true;
			chart.DataLabels.NumberFormat ="0.00";
            chart.ShowLineMarkers = true;

			SetQuestionData(engine, chart);
			SetMoreProperties(engine);

			charts.Add(chart);


			// send chart to browser
			Bitmap bmp;
			System.IO.MemoryStream memStream = new System.IO.MemoryStream();
			bmp = engine.GetBitmap();
			bmp.Save(memStream, System.Drawing.Imaging.ImageFormat.Png);
			memStream.WriteTo(Response.OutputStream);
			Response.End();

		}
        private void Page_Load(object sender, System.EventArgs e)
        {
            _questionId =
                Information.IsNumeric(Request["QuestionId"]) ? int.Parse(Request["QuestionId"]) : -1;
            _filterId =
                Information.IsNumeric(Request["FilterId"]) ? int.Parse(Request["FilterId"]) : -1;
            _sortOrder =
                Request["SortOrder"] == null ? "ans" : Request["SortOrder"];

            if (_questionId == -1)
            {
                Response.End();
            }
            else if (!NSurveyUser.Identity.IsAdmin &&
                     !NSurveyUser.Identity.HasAllSurveyAccess)
            {
                if (!new Question().CheckQuestionUser(_questionId, NSurveyUser.Identity.UserId))
                {
                    Response.End();
                }
            }

            ChartEngine     engine = new ChartEngine();
            ChartCollection charts = new ChartCollection(engine);

            engine.Size   = new Size(700, 500);
            engine.Charts = charts;

            WebChart.ColumnChart chart = new WebChart.ColumnChart();
            chart.Fill.Color              = Color.FromArgb(98, 94, 238);
            chart.MaxColumnWidth          = 80;
            chart.DataLabels.Visible      = true;
            chart.DataLabels.Position     = DataLabelPosition.Bottom;
            chart.DataLabels.ForeColor    = Color.White;
            chart.Shadow.Visible          = true;
            chart.DataLabels.NumberFormat = "0.00";
            chart.ShowLineMarkers         = true;

            SetQuestionData(engine, chart);
            SetMoreProperties(engine);

            charts.Add(chart);


            // send chart to browser
            Bitmap bmp;

            System.IO.MemoryStream memStream = new System.IO.MemoryStream();
            bmp = engine.GetBitmap();
            bmp.Save(memStream, System.Drawing.Imaging.ImageFormat.Png);
            memStream.WriteTo(Response.OutputStream);
            Response.End();
        }
        public void Initialize()
        {
            _chartDescriptorWithData = Mock.Create<ChartPanel>(Constructor.Mocked, Behavior.Loose);
            var chartCollection = new ChartCollection();
            _chartDescriptorWithData.Charts = chartCollection;

            var xChart = Mock.Create<XBarChart>(Constructor.Mocked, Behavior.Loose);
            Mock.Arrange(() => xChart.IsChild).Returns(true);

            xChart.DataSource = new MobileObservableCollection<SampleUnit>
            {
                CreateSample(1.0, 1.61, 1.36, 1.11, 7),
                CreateSample(1.0, 1.61, 1.36, 1.11, 7),
                CreateSample(0.8571428571428571, 1.61, 1.36, 1.11, 7),
                CreateSample(0.0, 1.61, 1.36, 1.11, 7),
                CreateSample(0.0, 1.61, 1.36, 1.11, 7),
                CreateSample(0.0, 1.61, 1.36, 1.11, 7),
                CreateSample(0.5714285714285714, 1.61, 1.36, 1.11, 7),
                CreateSample(2.0, 1.61, 1.36, 1.11, 7),
                CreateSample(3.4285714285714284, 1.61, 1.36, 1.11, 7),
                CreateSample(4.7142857142857144, 1.61, 1.36, 1.11, 7)
            };
            chartCollection.Add(xChart);

            var rChart = Mock.Create<RChart>(Constructor.Mocked, Behavior.Loose);
            Mock.Arrange(() => rChart.IsChild).Returns(true);

            rChart.DataSource = new MobileObservableCollection<SampleUnit>
            {
                CreateSample(0.0, 1.15, 0.6, 0.05, 7),
                CreateSample(0.0, 1.15, 0.6, 0.05, 7),
                CreateSample(1.0, 1.15, 0.6, 0.05, 7),
                CreateSample(0.0, 1.15, 0.6, 0.05, 7),
                CreateSample(0.0, 1.15, 0.6, 0.05, 7),
                CreateSample(0.0, 1.15, 0.6, 0.05, 7),
                CreateSample(1.0, 1.15, 0.6, 0.05, 7),
                CreateSample(2.0, 1.15, 0.6, 0.05, 7),
                CreateSample(1.0, 1.15, 0.6, 0.05, 7),
                CreateSample(1.0, 1.15, 0.6, 0.05, 7)
            };
            chartCollection.Add(rChart);
        }
예제 #9
0
        static void Main(string[] args)
        {
            // Instantiating a Workbook object
            Workbook workbook = new Workbook();

            // Obtaining the reference of the first worksheet
            WorksheetCollection worksheets = workbook.Worksheets;
            Worksheet           sheet      = worksheets[0];

            // Adding some sample value to cells
            Cells cells = sheet.Cells;
            Cell  cell  = cells["A1"];

            cell.Value = 50;
            cell       = cells["A2"];
            cell.Value = 100;
            cell       = cells["A3"];
            cell.Value = 150;
            cell       = cells["B1"];
            cell.Value = 4;
            cell       = cells["B2"];
            cell.Value = 20;
            cell       = cells["B3"];
            cell.Value = 50;

            ChartCollection charts = sheet.Charts;

            // Adding a chart to the worksheet
            int   chartIndex = charts.Add(ChartType.Pyramid, 5, 0, 15, 5);
            Chart chart      = charts[chartIndex];

            // Adding NSeries (chart data source) to the chart ranging from "A1" cell to "B3"
            SeriesCollection serieses = chart.NSeries;

            serieses.Add("A1:B3", true);

            // Saving the Excel file
            workbook.Save("Chart_Aspose.xls");
        }
예제 #10
0
        private void UpdateBasedOnStatisticSeries(Dictionary <TournamentChartSeries, List <ChartSeriesItem> > chartSeriesItems, IList <Tournaments> tournaments)
        {
            if (tournaments == null || tournaments.Count == 0)
            {
                return;
            }

            var chartItemDataBuilder           = CreateChartItemDataBuilder(ChartDisplayRange);
            var tournamentChartItemDataBuilder = CreateTournamentChartItemDataBuilder(ChartDisplayRange);

            var firstDate = tournamentChartItemDataBuilder.GetFirstDate(tournaments.Max(x => x.Firsthandtimestamp));

            var groupedTournaments = tournaments
                                     .Where(x => x.Firsthandtimestamp >= firstDate && (tournamentChartFilterType == TournamentChartFilterType.All ||
                                                                                       tournamentChartFilterType == TournamentChartFilterType.MTT && x.Tourneytagscsv == TournamentsTags.MTT.ToString() ||
                                                                                       tournamentChartFilterType == TournamentChartFilterType.STT && x.Tourneytagscsv == TournamentsTags.STT.ToString()))
                                     .GroupBy(x => x.BuildKey()).ToDictionary(x => x.Key, x => x.FirstOrDefault());

            var filteredTournamentPlayerStatistic = StorageModel
                                                    .GetFilteredTournamentPlayerStatistic()
                                                    .Where(x => groupedTournaments.ContainsKey(new TournamentKey(x.PokersiteId, x.TournamentId)))
                                                    .ToArray();

            // filter and orders
            var stats = chartItemDataBuilder.PrepareStatistic(filteredTournamentPlayerStatistic);

            object previousGroupKey = null;

            var itemsCounter = 0;

            for (var statIndex = 0; statIndex < stats.Length; statIndex++)
            {
                var stat = stats[statIndex];

                var currentGroupKey = chartItemDataBuilder.BuildGroupKey(stat, statIndex);

                var isNew = !currentGroupKey.Equals(previousGroupKey);

                if (isNew)
                {
                    itemsCounter++;
                }

                previousGroupKey = currentGroupKey;

                foreach (var chartSerie in ChartCollection.Where(x => x.IsBasedOnStatistic))
                {
                    ChartSeriesItem previousChartSeriesItem = null;
                    ChartSeriesItem chartSeriesItem         = null;

                    if (!chartSeriesItems.ContainsKey(chartSerie))
                    {
                        chartSeriesItems.Add(chartSerie, new List <ChartSeriesItem>());
                    }

                    if (isNew)
                    {
                        chartSeriesItem = new ChartSeriesItem
                        {
                            Format                 = chartSerie.Format,
                            Category               = chartItemDataBuilder.GetValueFromGroupKey(currentGroupKey),
                            PointColor             = chartSerie.ColorsPalette.PointColor,
                            TrackBallColor         = chartSerie.ColorsPalette.TrackBallColor,
                            TooltipColor           = chartSerie.ColorsPalette.TooltipColor,
                            TooltipForegroundColor = chartSerie.ColorsPalette.TooltipForeground
                        };

                        previousChartSeriesItem = chartSeriesItems[chartSerie].LastOrDefault();
                        chartSeriesItems[chartSerie].Add(chartSeriesItem);
                    }
                    else
                    {
                        previousChartSeriesItem = chartSeriesItem = chartSeriesItems[chartSerie].LastOrDefault();
                    }

                    chartSerie.UpdateChartSeriesItemByStatistic?.Invoke(chartSeriesItem, previousChartSeriesItem, stat);
                }
            }
        }
예제 #11
0
    public override TransitPicture GetPictureWithBitmap(int id)
    {
        ChartEngine engine = new ChartEngine();

        engine.Size               = new Size(570, 300);
        engine.GridLines          = WebChart.GridLines.None;
        engine.ShowXValues        = true;
        engine.ShowYValues        = true;
        engine.LeftChartPadding   = 50;
        engine.BottomChartPadding = 50;
        engine.XAxisFont.StringFormat.LineAlignment = StringAlignment.Center;
        engine.XAxisFont.StringFormat.FormatFlags   = StringFormatFlags.DirectionVertical;
        engine.XAxisFont.ForeColor = engine.YAxisFont.ForeColor = Color.Black;

        ChartCollection charts = new ChartCollection(engine);

        engine.Charts = charts;

        List <List <TransitSummarizedCounter> > counters = new List <List <TransitSummarizedCounter> >();
        string format;
        string title = RequestType.ToString();

        switch (RequestType)
        {
        case ChartType.DailyNew:
            counters.Add(Summary.NewDaily);
            format = "MMM d";
            title  = "New Daily";
            break;

        case ChartType.DailyReturning:
            counters.Add(Summary.ReturningDaily);
            format = "MMM d";
            title  = "Returning Daily";
            break;

        case ChartType.Daily:
            counters.Add(Summary.Daily);
            format = "MMM d";
            break;

        case ChartType.Hourly:
            counters.Add(Summary.Hourly);
            format = "htt";
            break;

        case ChartType.MonthlyUnique:
            counters.Add(Summary.UniqueMonthly);
            format = "MMM";
            title  = "Monthly Unique";
            break;

        case ChartType.Monthly:
            counters.Add(Summary.Monthly);
            format = "MMM";
            break;

        case ChartType.Weekly:
            counters.Add(Summary.Weekly);
            format = "MMM dd";
            break;

        case ChartType.Yearly:
            counters.Add(Summary.Yearly);
            format = "yyyy";
            break;

        case ChartType.AccountDaily:
            counters.Add(Summary.AccountDaily);
            format = "MMM d";
            title  = "New Daily";
            break;

        case ChartType.AccountMonthly:
            counters.Add(Summary.AccountMonthly);
            format = "MMM";
            title  = "New Monthly";
            break;

        case ChartType.AccountWeekly:
            counters.Add(Summary.AccountWeekly);
            format = "MMM dd";
            title  = "New Weekly";
            break;

        case ChartType.AccountYearly:
            counters.Add(Summary.AccountYearly);
            format = "yyyy";
            title  = "New Yearly";
            break;

        default:
            throw new ArgumentOutOfRangeException("type");
        }

        long  total = 0;
        long  count = 0;
        Color fill  = Color.FromArgb(0x9F, 0x6, 0x15);

        foreach (List <TransitSummarizedCounter> clist in counters)
        {
            ColumnChart chart = new ColumnChart();
            chart.ShowLineMarkers         = false;
            chart.ShowLegend              = true;
            chart.Line.Color              = Color.White;
            chart.Line.Width              = 2;
            chart.Fill.Color              = engine.Border.Color = fill;
            chart.Fill.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
            chart.MaxColumnWidth          = 100;

            count += clist.Count;

            foreach (TransitSummarizedCounter counter in clist)
            {
                total += counter.Total;
                chart.Data.Add(new ChartPoint(counter.Timestamp.ToString(format), counter.Total));
            }

            charts.Add(chart);
            fill = Color.FromArgb(fill.R + 0x30, fill.G + 0x30, fill.B + 0x30);
        }

        engine.Title = new ChartText();
        double average = count > 0 ? total / count : 0;

        engine.Title.Text = string.Format("{0} (average: {1})", RequestType, average);

        TransitPicture picture = new TransitPicture();

        picture.Id       = 0;
        picture.Modified = picture.Created = DateTime.UtcNow;
        picture.Name     = RequestType.ToString();

        MemoryStream ds = new MemoryStream();

        engine.GetBitmap().Save(ds, System.Drawing.Imaging.ImageFormat.Png);
        picture.Bitmap = new byte[ds.Length];
        MemoryStream ms = new MemoryStream(picture.Bitmap);

        ds.WriteTo(ms);

        return(picture);
    }
예제 #12
0
        protected void Page_Load(object sender, EventArgs e)
        {
            string[] s = new string[2] {
                "No data", "1"
            };
            if (Request.QueryString["data"] != null)
            {
                s = Request.QueryString["data"].Split('|');
            }

            ChartEngine wcEng = new ChartEngine();

            if (Request.QueryString["size"] != null)
            {
                string[] size = Request.QueryString["size"].Split('|');
                wcEng.Size = new Size(Convert.ToInt32(size[0]), Convert.ToInt32(size[1]));
            }
            else
            {
                wcEng.Size = new Size(400, 400);
            }
            wcEng.GridLines  = GridLines.None;
            wcEng.Padding    = 0;
            wcEng.TopPadding = 0;

            ChartCollection wcCharts = new ChartCollection(wcEng);

            wcEng.Charts = wcCharts;

            PieChart slChart = new MyPieChart();

            slChart.Line.Color            = Color.Black;
            slChart.DataLabels.Visible    = true;
            slChart.DataLabels.ShowXTitle = true;
            slChart.DataLabels.ShowValue  = false;
            slChart.DataLabels.ShowLegend = false;
            slChart.Shadow.Visible        = true;
            slChart.Explosion             = 8;

            for (int i = 0; i < s.Length; i++)
            {
                ChartPoint cp = new ChartPoint();
                cp.XValue = s[i];
                cp.YValue = Convert.ToInt32(s[i + 1]);
                slChart.Data.Add(cp);
                i += 1;
            }
            slChart.Colors = color;

            wcCharts.Add(slChart);
            wcEng.HasChartLegend = false;

            wcEng.Legend.Position = LegendPosition.Right;
            wcEng.Legend.Width    = 80;

            MemoryStream memStream = new MemoryStream();
            Bitmap       bmp       = wcEng.GetBitmap();
            Graphics     g         = Graphics.FromImage(bmp);
            Pen          mypen     = new Pen(Color.Black, 1F);

            g.DrawRectangle(mypen, 0, 0, bmp.Width - 1, bmp.Height - 1);
            bmp.Save(memStream, ImageFormat.Png);
            memStream.WriteTo(Response.OutputStream);
            Response.ContentType = "image/png";
            Response.End();
        }
        private void UpdateOppoUI(string id)
        {
            try
            {
                ISDataService service;
                service = SDataDataService.mydataService();

                SDataResourceCollectionRequest oppoContactsCollection = new SDataResourceCollectionRequest(service);

                oppoContactsCollection.ResourceKind = "opportunitycontacts";
                oppoContactsCollection.QueryValues.Add("where", "Contact.Id eq '" + id + "'");

                AtomFeed oppoContactsFeed = oppoContactsCollection.Read();

                picBoxOpportunity.Visible = false;

                if (oppoContactsFeed.Entries.Count() > 0)
                {

                    DataTable table = new DataTable();

                    table.Columns.Add("Id");
                    table.Columns.Add("Description");
                    table.Columns.Add("Probability");
                    table.Columns.Add("Potential");
                    table.Columns.Add("ActualAmount");
                    table.Columns.Add("Status");

                    //--------------------------------------
                    // Create The Chart
                    ChartEngine engine = new ChartEngine();
                    engine.Size = picBoxOpportunity.Size;
                    ChartCollection charts = new ChartCollection(engine);
                    engine.Charts = charts;
                    int pointCount = 0;

                    ChartPointCollection data = new ChartPointCollection();
                    Chart columnChart = new ColumnChart(data, Color.DarkGreen);
                    columnChart.Fill.Color = Color.FromArgb(50, Color.Green);
                    columnChart.ShowLineMarkers = true;
                    columnChart.DataLabels.Visible = true;

                    foreach (AtomEntry entry in oppoContactsFeed.Entries)
                    {
                        SDataPayload oppoContact = entry.GetSDataPayload();

                        SDataPayload tempOppo = (SDataPayload)oppoContact.Values["Opportunity"];

                        SDataSingleResourceRequest oppo = new SDataSingleResourceRequest(service);

                        oppo.ResourceKind = "Opportunities";

                        oppo.ResourceSelector = "('" + tempOppo.Key + "')";

                        AtomEntry oppoEnty = oppo.Read();

                        SDataPayload opportunitiy = (SDataPayload)oppoEnty.GetSDataPayload();

                        DataRow dr = table.NewRow();

                        dr[0] = opportunitiy.Key.ToString();
                        dr[1] = (opportunitiy.Values["Description"] != null ? opportunitiy.Values["Description"].ToString() : "No Description");
                        dr[2] = (opportunitiy.Values["CloseProbability"] != null ? opportunitiy.Values["CloseProbability"].ToString() + "%" : "0%");
                        dr[3] = (opportunitiy.Values["SalesPotential"] != null ? String.Format("{0:C}", Convert.ToDecimal(opportunitiy.Values["SalesPotential"])) : "");
                        dr[4] = (opportunitiy.Values["ActualAmount"] != null ? String.Format("{0:C}", Convert.ToDecimal(opportunitiy.Values["ActualAmount"])) : "");
                        dr[5] = (opportunitiy.Values["Status"] != null ? opportunitiy.Values["Status"].ToString() : "No Status");

                        pointCount = Convert.ToInt32(opportunitiy.Values["SalesPotential"].ToString().Substring(0,opportunitiy.Values["SalesPotential"].ToString().IndexOf('.')));

                        data.Add(new ChartPoint("Some Data", pointCount));

                        table.Rows.Add(dr);
                    }

                    dgvOpportunities.DataSource = table;
                    dgvOpportunities.Columns["Id"].Visible = false;
                    dgvOpportunities.Refresh();

                    charts.Add(columnChart);
                    engine.GridLines = GridLines.Horizontal;
                    Image image = engine.GetBitmap();
                    //--------------------------------------
                    // At this point we have the chart already
                    //--------------------------------------
                    // show the already generated image
                    picBoxOpportunity.Image = image;

                    if (SLX_Outlook_AddIn.Properties.Settings.Default.OppoChartPanelMinimized == true)
                    {
                        picBoxOpportunity.Visible = false;
                    }
                    else
                    {
                        picBoxOpportunity.Visible = true;
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
예제 #14
0
 private void Window_Loaded(object sender, RoutedEventArgs e)
 {
     this._stus = new ChartCollection <Stu>();
     this._stus.CollectionChanged      += _stus_CollectionChanged;
     this._stus.ChartCollectionChanged += _stus_ChartCollectionChanged;
 }
        public static void Run()
        {
            // Instantiate a new Workbook
            Workbook book = new Workbook();

            //Rename the first worksheet
            book.Worksheets[0].Name = "DataSheet";

            // Add a Data Worksheet
            Worksheet dataSheet = book.Worksheets["DataSheet"];

            // Add Chart Worksheet
            Worksheet sheet = book.Worksheets.Add("MyChart");

            // Put some values into the cells in the data worksheet
            dataSheet.Cells["B1"].PutValue(1);
            dataSheet.Cells["B2"].PutValue(2);
            dataSheet.Cells["B3"].PutValue(3);
            dataSheet.Cells["A1"].PutValue("A");
            dataSheet.Cells["A2"].PutValue("B");
            dataSheet.Cells["A3"].PutValue("C");


            // Define the Chart Collection
            ChartCollection charts = sheet.Charts;
            // Add a Column chart to the Chart Worksheet
            int chartSheetIdx = charts.Add(ChartType.Column, 5, 0, 25, 15);

            // Get the newly added Chart
            Aspose.Cells.Charts.Chart chart = book.Worksheets["MyChart"].Charts[0];

            // Set the background/foreground color for PlotArea/ChartArea
            chart.PlotArea.Area.BackgroundColor  = Color.White;
            chart.ChartArea.Area.BackgroundColor = Color.White;
            chart.PlotArea.Area.ForegroundColor  = Color.White;
            chart.ChartArea.Area.ForegroundColor = Color.White;

            // Hide the Legend
            chart.ShowLegend = false;

            // Add Data Series for the Chart
            chart.NSeries.Add("DataSheet!B1:B3", true);

            // Specify the Category Data
            chart.NSeries.CategoryData = "DataSheet!A1:A3";

            // Get the Data Series
            Aspose.Cells.Charts.Series ser = chart.NSeries[0];

            // Apply the 3-D formatting
            ShapePropertyCollection spPr = ser.ShapeProperties;
            Format3D fmt3d = spPr.Format3D;

            // Specify Bevel with its height/width
            Bevel bevel = fmt3d.TopBevel;

            bevel.Type   = BevelPresetType.Circle;
            bevel.Height = 2;
            bevel.Width  = 5;

            // Specify Surface material type
            fmt3d.SurfaceMaterialType = PresetMaterialType.WarmMatte;

            // Specify surface lighting type
            fmt3d.SurfaceLightingType = LightRigType.ThreePoint;

            // Specify lighting angle
            fmt3d.LightingAngle = 20;

            // Specify Series background/foreground and line color
            ser.Area.BackgroundColor = Color.Maroon;
            ser.Area.ForegroundColor = Color.Maroon;
            ser.Border.Color         = Color.Maroon;

            // Save the Excel file
            book.Save(outputDir + "outputApplying3DFormat.xlsx");

            Console.WriteLine("Applying3DFormat executed successfully.");
        }
예제 #16
0
    public override TransitPicture GetPictureWithBitmap(int id)
    {
        ChartEngine engine = new ChartEngine();
        engine.Size = new Size(570, 300);
        engine.GridLines = WebChart.GridLines.None;
        engine.ShowXValues = true;
        engine.ShowYValues = true;
        engine.LeftChartPadding = 50;
        engine.BottomChartPadding = 50;
        engine.XAxisFont.StringFormat.LineAlignment = StringAlignment.Center;
        engine.XAxisFont.StringFormat.FormatFlags = StringFormatFlags.DirectionVertical;
        engine.XAxisFont.ForeColor = engine.YAxisFont.ForeColor = Color.Black;

        ChartCollection charts = new ChartCollection(engine);
        engine.Charts = charts;

        List<List<TransitSummarizedCounter>> counters = new List<List<TransitSummarizedCounter>>();
        string format;
        string title = RequestType.ToString();

        switch (RequestType)
        {
            case ChartType.DailyNew:
                counters.Add(Summary.NewDaily);
                format = "MMM d";
                title = "New Daily";
                break;
            case ChartType.DailyReturning:
                counters.Add(Summary.ReturningDaily);
                format = "MMM d";
                title = "Returning Daily";
                break;
            case ChartType.Daily:
                counters.Add(Summary.Daily);
                format = "MMM d";
                break;
            case ChartType.Hourly:
                counters.Add(Summary.Hourly);
                format = "htt";
                break;
            case ChartType.MonthlyUnique:
                counters.Add(Summary.UniqueMonthly);
                format = "MMM";
                title = "Monthly Unique";
                break;
            case ChartType.Monthly:
                counters.Add(Summary.Monthly);
                format = "MMM";
                break;
            case ChartType.Weekly:
                counters.Add(Summary.Weekly);
                format = "MMM dd";
                break;
            case ChartType.Yearly:
                counters.Add(Summary.Yearly);
                format = "yyyy";
                break;
            case ChartType.AccountDaily:
                counters.Add(Summary.AccountDaily);
                format = "MMM d";
                title = "New Daily";
                break;
            case ChartType.AccountMonthly:
                counters.Add(Summary.AccountMonthly);
                format = "MMM";
                title = "New Monthly";
                break;
            case ChartType.AccountWeekly:
                counters.Add(Summary.AccountWeekly);
                format = "MMM dd";
                title = "New Weekly";
                break;
            case ChartType.AccountYearly:
                counters.Add(Summary.AccountYearly);
                format = "yyyy";
                title = "New Yearly";
                break;
            default:
                throw new ArgumentOutOfRangeException("type");
        }

        long total = 0;
        long count = 0;
        Color fill = Color.FromArgb(0x9F, 0x6, 0x15);
        foreach (List<TransitSummarizedCounter> clist in counters)
        {
            ColumnChart chart = new ColumnChart();
            chart.ShowLineMarkers = false;
            chart.ShowLegend = true;
            chart.Line.Color = Color.White;
            chart.Line.Width = 2;
            chart.Fill.Color = engine.Border.Color = fill;
            chart.Fill.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
            chart.MaxColumnWidth = 100;

            count += clist.Count;

            foreach (TransitSummarizedCounter counter in clist)
            {                
                total += counter.Total;
                chart.Data.Add(new ChartPoint(counter.Timestamp.ToString(format), counter.Total));
            }

            charts.Add(chart);
            fill = Color.FromArgb(fill.R + 0x30, fill.G + 0x30, fill.B + 0x30);
        }

        engine.Title = new ChartText();
        double average = count > 0 ? total / count : 0;
        engine.Title.Text = string.Format("{0} (average: {1})", RequestType, average);

        TransitPicture picture = new TransitPicture();
        picture.Id = 0;
        picture.Modified = picture.Created = DateTime.UtcNow;
        picture.Name = RequestType.ToString();

        MemoryStream ds = new MemoryStream();
        engine.GetBitmap().Save(ds, System.Drawing.Imaging.ImageFormat.Png);
        picture.Bitmap = new byte[ds.Length];
        MemoryStream ms = new MemoryStream(picture.Bitmap);
        ds.WriteTo(ms);

        return picture;
    }
예제 #17
0
    public override PicturePage.Picture GetPictureWithBitmap(int id)
    {
        ChartEngine engine = new ChartEngine();

        engine.Size               = new Size(570, 300);
        engine.GridLines          = WebChart.GridLines.None;
        engine.ShowXValues        = true;
        engine.ShowYValues        = true;
        engine.LeftChartPadding   = 50;
        engine.BottomChartPadding = 50;
        engine.XAxisFont.StringFormat.LineAlignment = StringAlignment.Center;
        engine.XAxisFont.StringFormat.FormatFlags   = StringFormatFlags.DirectionVertical;
        engine.XAxisFont.ForeColor = engine.YAxisFont.ForeColor = Color.Black;

        ChartCollection charts = new ChartCollection(engine);

        engine.Charts = charts;

        List <TransitCounter> counters = SessionManager.GetCachedCollection <TransitCounter>(
            "GetStatsSummary", SessionManager.Ticket, new TransitStatsQueryOptions(RequestType));

        string format;

        switch (RequestType)
        {
        case TransitStats.Type.Daily:
            format = "MMM d";
            break;

        case TransitStats.Type.Hourly:
            format = "htt";
            break;

        case TransitStats.Type.Monthly:
            format = "MMM";
            break;

        case TransitStats.Type.Weekly:
            format = "MMM dd";
            break;

        case TransitStats.Type.Yearly:
            format = "yyyy";
            break;

        default:
            throw new ArgumentOutOfRangeException("type");
        }

        Color fill = Color.Black;

        ColumnChart chart = new ColumnChart();

        chart.ShowLineMarkers         = false;
        chart.ShowLegend              = true;
        chart.Line.Color              = Color.White;
        chart.Line.Width              = 2;
        chart.Fill.Color              = engine.Border.Color = fill;
        chart.Fill.LinearGradientMode = LinearGradientMode.Vertical;
        chart.MaxColumnWidth          = 100;

        foreach (TransitCounter counter in counters)
        {
            chart.Data.Add(new ChartPoint(counter.Created.ToString(format), counter.Count));
        }

        charts.Add(chart);

        PicturePage.Picture picture = new PicturePage.Picture();
        picture.Id       = 0;
        picture.Modified = DateTime.UtcNow;
        picture.Name     = RequestType.ToString();

        MemoryStream ds = new MemoryStream();

        engine.GetBitmap().Save(ds, ImageFormat.Png);
        picture.Bitmap = new byte[ds.Length];
        MemoryStream ms = new MemoryStream(picture.Bitmap);

        ds.WriteTo(ms);

        return(picture);
    }
        public void CalculateFailedPercent_NPChartTest()
        {
            var editableRootMock = Mock.Create<IEditableRoot>();
            var privateAccessor = PrivateAccessor.ForType(typeof(SpcExpressionHelperModule));

            var parameters = new object[] { "FailedPercent_f", "SPC_f", null, 3, 33, "NPChart" };
            var arrange = Mock.NonPublic.Arrange<ChartPanel>(typeof(SpcExpressionHelperModule), "GetChartDescriptor",
                ArgExpr.IsAny<IEditableRoot>(), ArgExpr.IsAny<string>(), ArgExpr.IsAny<string>(), ArgExpr.IsAny<ChartTypesEnum>(),
                ArgExpr.IsAny<int>(), ArgExpr.IsAny<int>());

            //prepare chart descriptor
            var dataSourceMock = new MobileObservableCollection<SampleUnit>
            {
                CreateSample(0.0, 1.74, 0.33, 0.0, 1),
                CreateSample(0.0, 1.74, 0.33, 0.0, 1),
                CreateSample(1.0, 1.74, 0.33, 0.0, 1)
            };
            var chartMock = Mock.Create<NPChart>(Constructor.Mocked, Behavior.Loose);
            Mock.Arrange(() => chartMock.DataSource).Returns(dataSourceMock);
            Mock.Arrange(() => chartMock.IsChild).Returns(true);
            var charts = new ChartCollection { chartMock };

            var chartDescriptor = Mock.Create<ChartPanel>(Constructor.Mocked, Behavior.Loose);
            chartDescriptor.ChartType = ChartTypesEnum.NPChart;
            chartDescriptor.Charts = charts;

            //test true
            arrange.Returns(chartDescriptor);
            Assert.IsTrue((bool)privateAccessor.CallMethod("CalculateFailedPercentExpression", editableRootMock, parameters));

            //test false
            parameters[4] = 34;
            Assert.IsFalse((bool)privateAccessor.CallMethod("CalculateFailedPercentExpression", editableRootMock, parameters));
        }
예제 #19
0
        public void LoadGraph()
        {
            ChartEngine tempChartEngine = new ChartEngine();
            tempChartEngine.Size = GraphPictureBox.Size;
            tempChartEngine.ShowXValues = true;
            tempChartEngine.ShowYValues = true;
              //  tempChartEngine.Padding = 40;
            tempChartEngine.BottomChartPadding = 30;
            tempChartEngine.LeftChartPadding = 40;

            ChartText tempChartText = new ChartText();
            tempChartText.Text = "Hourly Sales";
            tempChartEngine.Title = tempChartText;

            CPaymentManager tempPaymentManager = new CPaymentManager();
            CResult oResult = tempPaymentManager.GetSortedPayment(DateTime.Now);
            double MaxAmount = 0.0;
            if (oResult.IsSuccess && oResult.Data != null)
            {
                MaxAmount = (double)oResult.Data;
            }

               // tempChartEngine.YValuesInterval = (int)Math.Floor(MaxAmount / 20);
            tempChartEngine.YValuesInterval = GetInterVal(MaxAmount);
            tempChartEngine.YCustomEnd = GetCustomEnd(GetInterVal(MaxAmount), MaxAmount);

            ChartCollection tempChartCollection = new ChartCollection(tempChartEngine);
            tempChartEngine.Charts = tempChartCollection;
            DateTime inCurrentDate = DateTime.Now;
            GetTimeSpan(inCurrentDate);

            //Data Access

            try
            {
                CPcInfoManager tempPcInfoManager = new CPcInfoManager();
                IPHostEntry ipEntry = System.Net.Dns.GetHostByName(Dns.GetHostName());
                CPcInfo tempPcInfo = (CPcInfo)tempPcInfoManager.PcInfoByPcIP(ipEntry.AddressList[0].ToString()).Data;

                DataSet tempHourlySaleDataSet = new DataSet();
                CCommonConstants oConstants = ConfigManager.GetConfig<CCommonConstants>();
                String sSql = String.Format("select 'NewTime' as \"NewTime\",bill_print_time.payment_time as \"Time\",payment.total_amount as \"Amount\" from payment,bill_print_time where payment.order_id=bill_print_time.order_id and bill_print_time.payment_time>={0} and bill_print_time.payment_time<{1} and payment.pc_id={2}", m_oStartTime, m_oEndTime, tempPcInfo.PcID);
                SqlDataAdapter tempSqlDataAdapter = new SqlDataAdapter(sSql, oConstants.DBConnection);
                tempSqlDataAdapter.Fill(tempHourlySaleDataSet);

                sSql = String.Format("select 'NewTime' as \"NewTime\",deposit_time as \"Time\",total_amount as \"Amount\" from deposit where deposit_time >= {0} and deposit_time < {1} and deposit.pc_id={2}", m_oStartTime, m_oEndTime, tempPcInfo.PcID);
                tempSqlDataAdapter = new SqlDataAdapter(sSql, oConstants.DBConnection);
                tempSqlDataAdapter.Fill(tempHourlySaleDataSet);

                ConvertTime(ref tempHourlySaleDataSet);

                //start dummy time
                DataRow row1 = tempHourlySaleDataSet.Tables[0].NewRow();
                row1["NewTime"] = "0:00";
                row1["Amount"] = "0.000";

                //end dummy time
                DataRow row2 = tempHourlySaleDataSet.Tables[0].NewRow();
                row2["NewTime"] = "23:59";
                row2["Amount"] = "0.000";

                tempHourlySaleDataSet.Tables[0].Rows.Add(row1);
                tempHourlySaleDataSet.Tables[0].Rows.Add(row2);

                Chart tempLineChart = new LineChart();
                tempLineChart.Line.Color = Color.Red;
                tempLineChart.ShowLineMarkers = false;
                tempLineChart.Line.Width = (float)2.0;

                DataTableReader oReader = tempHourlySaleDataSet.Tables[0].CreateDataReader();

                tempLineChart.DataSource = oReader;

                tempLineChart.DataXValueField = "NewTime";
                tempLineChart.DataYValueField = "Amount";
                tempLineChart.DataBind();
                tempChartCollection.Add(tempLineChart);

                Image image = tempChartEngine.GetBitmap();
                GraphPictureBox.Image = image;
                GraphPictureBox.Update();
            }
            catch (Exception exp)
            {
                throw exp;
            }
        }
예제 #20
0
        protected void Page_Load(object sender, EventArgs e)
        {
            string[] s = new string[2] {
                "No data", "0"
            };
            if (Request.QueryString["data"] != null)
            {
                s = Request.QueryString["data"].Split('|');
            }
            ChartEngine wcEng = new ChartEngine();

            if (Request.QueryString["size"] != null)
            {
                string[] size = Request.QueryString["size"].Split('|');
                wcEng.Size = new Size(Convert.ToInt32(size[0]), Convert.ToInt32(size[1]));
            }
            else
            {
                wcEng.Size = new Size(400, 400);
            }

            ChartCollection wcCharts = new ChartCollection(wcEng);

            wcEng.Charts             = wcCharts;
            wcEng.RenderHorizontally = false;
            wcEng.Border.Color       = Color.FromArgb(99, Color.SteelBlue);
            wcEng.ShowXValues        = true;
            wcEng.ShowYValues        = true;
            wcEng.ChartPadding       = 30;
            wcEng.Padding            = 0;
            wcEng.TopPadding         = 0;

            ColumnChart chart = new ColumnChart();

            chart.Shadow.Visible       = false;
            chart.MaxColumnWidth       = Convert.ToInt32(wcEng.Size.Height / s.Length);
            chart.Fill.Color           = Color.FromArgb(90, Color.SteelBlue);
            chart.Line.Color           = Color.SteelBlue;
            chart.Line.Width           = 2;
            chart.DataLabels.Visible   = true;
            chart.DataLabels.ShowValue = true;

            for (int i = 0; i < s.Length; i++)
            {
                ChartPoint cp = new ChartPoint();
                cp.XValue = s[i];
                cp.YValue = Convert.ToInt32(s[i + 1]);
                chart.Data.Add(cp);
                i += 1;
            }
            wcCharts.Add(chart);

            MemoryStream memStream = new MemoryStream();
            Bitmap       bmp       = wcEng.GetBitmap();
            Graphics     g         = Graphics.FromImage(bmp);
            Pen          mypen     = new Pen(Color.Black, 1F);

            g.DrawRectangle(mypen, 0, 0, bmp.Width - 1, bmp.Height - 1);
            bmp.Save(memStream, ImageFormat.Png);
            memStream.WriteTo(Response.OutputStream);
            Response.ContentType = "image/png";
            Response.End();
        }
        public async void GetChartDescriptorAsyncMethodTest()
        {
            Mock.SetupStatic(typeof(SpcExpressionHelperModule));
            Mock.NonPublic.Arrange<Task<ChartPanel>>(
                typeof(SpcExpressionHelperModule), 
                "GetChartDescriptorAsync", 
                ArgExpr.IsAny<IEditableRoot>(), 
                ArgExpr.IsAny<string>(), 
                ArgExpr.IsAny<string>(), 
                ArgExpr.IsAny<ChartTypesEnum>(), 
                ArgExpr.IsAny<int>(), 
                ArgExpr.IsAny<int>()).CallOriginal();
            var privateAccessor = PrivateAccessor.ForType(typeof(SpcExpressionHelperModule));

            //mock dictionary representing ChartDescriptorExp property from Edit class
            var instanceMock = Mock.Create<TestInstanceClass>(x =>
            {
                x.Implements<IEditableRoot>();
                x.SetBehavior(Behavior.Loose);
            });

            //mock SpcManager.CreateChartDescriptor method
            Mock.SetupStatic(typeof(SpcManager));
            var chartDescriptorMock = DataPortal.Create<ChartPanel>();

            //Mock.Arrange(() => chartDescriptorMock.ChartType).Returns(ChartTypesEnum.XBarChart);
            chartDescriptorMock.ChartType = ChartTypesEnum.XBarChart;
            Mock.Arrange(() => SpcManager.CreateChartDescriptorAsync(Arg.IsAny<ChartTypesEnum>())).Returns(TaskHelper.FromResult(chartDescriptorMock));

            //Add new chart descriptor for ExprField field (not for rules)
            var task = privateAccessor.CallMethod("GetChartDescriptorAsync", instanceMock, "ExprField", "SPC_f", ChartTypesEnum.XBarChart, 5, 10) as Task<ChartPanel>;
            Assert.IsNotNull(task);
            var result = await task;
            Assert.IsNotNull(result);
            Assert.AreEqual(result.ChartType, ChartTypesEnum.XBarChart);
            Assert.AreEqual(result.DataPoints, 10);
            Assert.AreEqual(result.SubgroupSize, 5);

            Assert.IsNotNull(instanceMock.ChartDescriptorExp);
            Assert.AreEqual(instanceMock.ChartDescriptorExp.Count, 1);
            Assert.AreEqual(instanceMock.ChartDescriptorExp["ExprFieldSPC_f"], chartDescriptorMock);

            //Get previously cached chart descriptor and update its data
            var dataSourceMock = new MobileObservableCollection<SampleUnit>
            {
                CreateSample(0.0, 1.74, 0.33, 0.0, 1),
                CreateSample(0.0, 1.74, 0.33, 0.0, 1),
                CreateSample(1.0, 1.74, 0.33, 0.0, 1)
            };
            var chartMock = Mock.Create<XBarChart>(Constructor.Mocked, Behavior.Loose);
            Mock.Arrange(() => chartMock.DataSource).Returns(dataSourceMock);
            Mock.Arrange(() => chartMock.IsChild).Returns(true);
            var charts = new ChartCollection { chartMock };
            Mock.Arrange(() => chartDescriptorMock.Charts).Returns(charts);

            Assert.IsNotNull(chartDescriptorMock.Charts);
            Assert.AreEqual(chartDescriptorMock.Charts.Count, 1);
            Assert.IsNotNull(chartDescriptorMock.Charts[0].DataSource);
            Assert.AreEqual(chartDescriptorMock.Charts[0].DataSource.Count, 3);
            Assert.AreEqual(chartDescriptorMock.Charts[0].DataSource[2].SampleValue, 1.0);

            Mock.Arrange(() => TestInstanceClass.GetSampleDataForSPCAsync((IEditableRoot)instanceMock, "SPC_f", ChartTypesEnum.XBarChart, chartDescriptorMock, true))
                .DoInstead<IEditableRoot, string, ChartTypesEnum, ChartPanel, bool>((instance, spcFieldName, chartType, chartDescriptor, isForExpr) =>
                {
                    var dataSource = new MobileObservableCollection<SampleUnit>
                        {
                            CreateSample(1.22, 5.0, 2.54, 1.0, 6)
                        };
                    var chart = Mock.Create<XBarChart>(Constructor.Mocked, Behavior.Loose);
                    Mock.Arrange(() => chart.DataSource).Returns(dataSource);
                    Mock.Arrange(() => chart.IsChild).Returns(true);
                    var chartCollection = new ChartCollection { chart };
                    Mock.Arrange(() => chartDescriptor.Charts).Returns(chartCollection);
                })
                .Returns(TaskHelper.FromResult(chartDescriptorMock));

            task = privateAccessor.CallMethod("GetChartDescriptorAsync", instanceMock, "ExprField", "SPC_f", ChartTypesEnum.XBarChart, 5, 10) as Task<ChartPanel>;
            Assert.IsNotNull(task);
            result = await task;
            Assert.IsNotNull(result);
            Assert.AreEqual(result.ChartType, ChartTypesEnum.XBarChart);
            Assert.AreEqual(result.DataPoints, 10);
            Assert.AreEqual(result.SubgroupSize, 5);

            Assert.IsNotNull(instanceMock.ChartDescriptorExp);
            Assert.AreEqual(instanceMock.ChartDescriptorExp.Count, 1);
            Assert.AreEqual(instanceMock.ChartDescriptorExp["ExprFieldSPC_f"], chartDescriptorMock);

            Assert.IsNotNull(chartDescriptorMock.Charts);
            Assert.AreEqual(chartDescriptorMock.Charts.Count, 1);
            Assert.IsNotNull(chartDescriptorMock.Charts[0].DataSource);
            Assert.AreEqual(chartDescriptorMock.Charts[0].DataSource.Count, 1);
            Assert.AreEqual(chartDescriptorMock.Charts[0].DataSource[0].SampleValue, 1.22);
        }
예제 #22
0
        private void RenderUsers()
        {
            //Session["chart_ids"] = ids;
            //Session["chart_names"] = names;
            try
            {
                string[] ids_arr;
                string[] names_arr;
                ids_arr = Session["chart_ids"].ToString().Split('^');
                names_arr = Session["chart_names"].ToString().Split('^');

                DataSet dsUsers = new DataSet("UsersDS");
                dsUsers.Tables.Add("Users");
                DataTable dt = dsUsers.Tables["Users"];
                dt.Columns.Add("Id");
                dt.Columns.Add("Name");

                for(int i =0;i<ids_arr.GetUpperBound(0);i++)
                {
                    if( ids_arr[i] != "")
                    {
                        DataRow dr;
                        dr = dsUsers.Tables["Users"].NewRow();
                        dr["Id"] = ids_arr[i];
                        dr["Name"] = names_arr[i];
                        dsUsers.Tables["Users"].Rows.Add(dr);
                    }
                }

                wcEng = new ChartEngine();
                ChartCollection wcCharts = new ChartCollection(wcEng);
                wcEng.Charts = wcCharts;

                SetProperties(ref wcEng);

                DataSet dsXGames = new DataSet("XGames");
                FillXGames(ref dsXGames);

                int n = 0;
                DataSet dsUserPos = new DataSet("UserPos");
                foreach(DataRow dri in dsUsers.Tables["Users"].Rows)
                {
                    FillUserPos(ref dsUserPos,Convert.ToInt32(dri["id"]));
                    Chart lch = new WebChart.SmoothLineChart();
                    bool bNeedToShift = false;

                    //foreach (DataRow drxg in dsXGames.Tables[0].Rows)
                    //{
                    //    if (dsUserPos.Tables[0].Rows.Contains(drxg[0]))
                    //    {
                    //        DataRow drup = dsUserPos.Tables[0].Rows.Find(drxg[0]);
                    //        lch.Data.Add(new ChartPoint(ShiftGameName(drxg[0].ToString(), bNeedToShift), Convert.ToSingle(drup[1])));
                    //    }
                    //    else
                    //    {
                    //        DataRow drup = dsUserPos.Tables[0].Rows.Find(drxg[0]);
                    //        lch.Data.Add(new ChartPoint(ShiftGameName(drxg[0].ToString(), bNeedToShift), 30));
                    //    }

                    //    lch.DataLabels.Visible = true;
                    //    lch.DataLabels.ForeColor = Color.LightGray;
                    //    //bNeedToShift = !bNeedToShift;
                    //}

                    int nRowCount = dsXGames.Tables[0].Rows.Count;
                    //for(int z=nRowCount;z==1;z--)
                    for (int z = nRowCount - 1; z >= 0; z = z - 1)
                    //DataRow drxg in dsXGames.Tables[0].Rows)
                    {
                        DataRow drxg = dsXGames.Tables[0].Rows[z];
                        if (dsUserPos.Tables[0].Rows.Contains(drxg[0]))
                        {
                            DataRow drup = dsUserPos.Tables[0].Rows.Find(drxg[0]);
                            lch.Data.Add(new ChartPoint(ShiftGameName(drxg[0].ToString(), bNeedToShift), Convert.ToSingle(drup[1])));
                        }
                        else
                        {
                            //DataRow drup = dsUserPos.Tables[0].Rows.Find(drxg[0]);
                            //lch.Data.Add(new ChartPoint(ShiftGameName(drxg[0].ToString(), bNeedToShift), -1));
                        }
                        lch.DataLabels.Visible = true;
                        lch.DataLabels.ForeColor = Color.LightGray;
                        //bNeedToShift = !bNeedToShift;
                    }

                    lch.Line.Color = user_color[n%10];
                    n++;
                    lch.DataLabels.Visible=true;

                    Font dlFont = new Font("verdana",5);
                    lch.DataLabels.Font = dlFont;

                    lch.Legend = dri["name"].ToString();
                    lch.DataLabels.ForeColor = Color.Black;
                    lch.LineMarker = new CircleLineMarker(3, lch.Line.Color, lch.Line.Color);

                    wcEng.YCustomEnd  = Convert.ToInt32(Session["chart_Ycount"]);
                    wcEng.Charts.Add(lch);
                }

                Bitmap bmp;
                System.IO.MemoryStream memStream = new System.IO.MemoryStream();
                bmp = wcEng.GetBitmap();
                bmp.Save(memStream, System.Drawing.Imaging.ImageFormat.Png);
                memStream.WriteTo(Response.OutputStream);
                Response.End();
            }
            catch (Exception exc)
            {
                Response.Write(exc.Message);
            }
        }
예제 #23
0
        public static void Main(string[] args)
        {
            //ExStart:1
            // The path to the documents directory.
            string dataDir = Aspose.Cells.Examples.Utils.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

            // Create directory if it is not already present.
            bool IsExists = System.IO.Directory.Exists(dataDir);

            if (!IsExists)
            {
                System.IO.Directory.CreateDirectory(dataDir);
            }

            //Instantiate a new Workbook
            Workbook book = new Workbook();

            //Add a Data Worksheet
            Worksheet dataSheet = book.Worksheets.Add("DataSheet");

            //Add Chart Worksheet
            Worksheet sheet = book.Worksheets.Add("MyChart");

            //Put some values into the cells in the data worksheet
            dataSheet.Cells["B1"].PutValue(1);
            dataSheet.Cells["B2"].PutValue(2);
            dataSheet.Cells["B3"].PutValue(3);
            dataSheet.Cells["A1"].PutValue("A");
            dataSheet.Cells["A2"].PutValue("B");
            dataSheet.Cells["A3"].PutValue("C");


            //Define the Chart Collection
            ChartCollection charts = sheet.Charts;
            //Add a Column chart to the Chart Worksheet
            int chartSheetIdx = charts.Add(ChartType.Column, 5, 0, 25, 15);

            //Get the newly added Chart
            Aspose.Cells.Charts.Chart chart = book.Worksheets[2].Charts[0];

            //Set the background/foreground color for PlotArea/ChartArea
            chart.PlotArea.Area.BackgroundColor  = Color.White;
            chart.ChartArea.Area.BackgroundColor = Color.White;
            chart.PlotArea.Area.ForegroundColor  = Color.White;
            chart.ChartArea.Area.ForegroundColor = Color.White;

            //Hide the Legend
            chart.ShowLegend = false;

            //Add Data Series for the Chart
            chart.NSeries.Add("DataSheet!B1:B3", true);
            //Specify the Category Data
            chart.NSeries.CategoryData = "DataSheet!A1:A3";

            //Get the Data Series
            Aspose.Cells.Charts.Series ser = chart.NSeries[0];

            //Apply the 3-D formatting
            ShapePropertyCollection spPr = ser.ShapeProperties;
            Format3D fmt3d = spPr.Format3D;

            //Specify Bevel with its height/width
            Bevel bevel = fmt3d.TopBevel;

            bevel.Type   = BevelPresetType.Circle;
            bevel.Height = 2;
            bevel.Width  = 5;

            //Specify Surface material type
            fmt3d.SurfaceMaterialType = PresetMaterialType.WarmMatte;

            //Specify surface lighting type
            fmt3d.SurfaceLightingType = LightRigType.ThreePoint;

            //Specify lighting angle
            fmt3d.LightingAngle = 20;

            //Specify Series background/foreground and line color
            ser.Area.BackgroundColor = Color.Maroon;
            ser.Area.ForegroundColor = Color.Maroon;
            ser.Border.Color         = Color.Maroon;

            //Save the Excel file
            book.Save(dataDir + "3d_format.out.xlsx");
            //ExEnd:1
        }
		private void Page_Load(object sender, System.EventArgs e)
		{
		
			_questionId = 
				Information.IsNumeric(Request["QuestionId"]) ? int.Parse(Request["QuestionId"]) : -1;
			_filterId = 
				Information.IsNumeric(Request["FilterId"]) ? int.Parse(Request["FilterId"]) : -1;
			_sortOrder =
				Request["SortOrder"] == null ? "ans" : Request["SortOrder"];

			if (_questionId == -1)
			{
				Response.End();
			}
			else if (!NSurveyUser.Identity.IsAdmin &&
				!NSurveyUser.Identity.HasAllSurveyAccess)
			{
				if (!new Question().CheckQuestionUser(_questionId, NSurveyUser.Identity.UserId))
				{
					Response.End();
				}
			}

			ChartEngine engine = new ChartEngine();
			ChartCollection charts = new ChartCollection(engine);
			engine.Size = new Size(700, 500);
			engine.Charts = charts;
			
			
			PieChart pie = new PieChart();
			//pie.Colors = new Color[]{ Color.Red};

			ChartLegend legend = new ChartLegend();
			legend.Position = LegendPosition.Right;
			legend.Width = 200;
			legend.Background.Color = Color.FromArgb(245,249,251);
			
			pie.DataLabels.NumberFormat ="0.00";
			pie.Explosion = 6; 
			pie.Shadow.Visible = true; 
			pie.Shadow.Color=Color.LightGray; 
			pie.Shadow.OffsetY = 5; 
			engine.HasChartLegend = true;
			engine.Legend = legend;
			engine.GridLines = GridLines.None;


			SetQuestionData(engine, pie);
			SetMoreProperties(engine);

			charts.Add(pie);


			// send chart to browser
			Bitmap bmp;
			System.IO.MemoryStream memStream = new System.IO.MemoryStream();
			bmp = engine.GetBitmap();
			bmp.Save(memStream, System.Drawing.Imaging.ImageFormat.Png);
			memStream.WriteTo(Response.OutputStream);
			Response.End();

		}
예제 #25
0
        protected void InitialiseChart()
        {
            Engine = new ChartEngine();

            ChartCollection charts = new ChartCollection(Engine);
            Engine.Charts = charts;

            // Set some display properties
            Engine.GridLines = GridLines.Horizontal;
            Fill.Color = Color.Red;

            Engine.ShowXValues = true;
            Engine.LeftChartPadding = 100;
            Engine.ShowYValues = true;
            Engine.BottomChartPadding = 10;

            Engine.YValuesInterval = 10;

            Engine.Charts.Add(this);
        }
        public void GetChartDescriptorMethodTest()
        {
            Mock.SetupStatic(typeof(SpcExpressionHelperModule));
            Mock.NonPublic.Arrange<ChartPanel>(typeof(SpcExpressionHelperModule), "GetChartDescriptor", ArgExpr.IsAny<IEditableRoot>(),
                ArgExpr.IsAny<string>(), ArgExpr.IsAny<string>(), ArgExpr.IsAny<ChartTypesEnum>(), ArgExpr.IsAny<int>(), ArgExpr.IsAny<int>()).CallOriginal();
            var privateAccessor = PrivateAccessor.ForType(typeof(SpcExpressionHelperModule));

            //mock dictionary representing ChartDescriptorExp property from Edit class
            var instanceMock = Mock.Create<TestInstanceClass>(x =>
            {
                x.Implements<IEditableRoot>();
                x.SetBehavior(Behavior.CallOriginal);
            });

            //mock SpcManager.CreateChartDescriptor method
            Mock.SetupStatic(typeof(SpcManager));
            var chartDescriptorMock = Mock.Create<ChartPanel>(Constructor.Mocked, Behavior.Loose);
            Mock.Arrange(() => chartDescriptorMock.ChartType).Returns(ChartTypesEnum.XBarChart);
            Mock.Arrange(() => SpcManager.CreateChartDescriptor(Arg.IsAny<ChartTypesEnum>())).Returns(chartDescriptorMock);

            //mock MethodCaller
            Mock.SetupStatic(typeof(MethodCaller));
            Mock.Arrange(() => MethodCaller.CallFactoryMethod(Arg.IsAny<Type>(), "GetSampleDataForSPC", "SPC_f",
                instanceMock, ChartTypesEnum.XBarChart, chartDescriptorMock, true)).Returns(chartDescriptorMock);
            Mock.Arrange(() => MethodCaller.CallMethod(instanceMock, "LoadProperty", Arg.IsAny<string>(), Arg.IsAny<object>()))
                .DoInstead<object, string, object[]>((instance, methodName, parameters) => ((TestInstanceClass)instance).LoadProperty((string)parameters[0], parameters[1]));

            //Add new chart descriptor for ExprField field (for rules)
            var result = privateAccessor.CallMethod("GetChartDescriptor", instanceMock, "Expr_RuleField", "SPC_f", ChartTypesEnum.XBarChart, 5, 10) as ChartPanel;
            Assert.IsNotNull(result);
            Assert.AreEqual(result.ChartType, ChartTypesEnum.XBarChart);
            Assert.AreEqual(result.DataPoints, 10);
            Assert.AreEqual(result.SubgroupSize, 5);
            Assert.IsNull(instanceMock.ChartDescriptorExp);

            //Add new chart descriptor for ExprField field (not for rules)
            instanceMock.ChartDescriptorExp = null;
            result = privateAccessor.CallMethod("GetChartDescriptor", instanceMock, "ExprField", "SPC_f", ChartTypesEnum.XBarChart, 5, 10) as ChartPanel;
            Assert.IsNotNull(result);
            Assert.AreEqual(result.ChartType, ChartTypesEnum.XBarChart);
            Assert.AreEqual(result.DataPoints, 10);
            Assert.AreEqual(result.SubgroupSize, 5);

            Assert.IsNotNull(instanceMock.ChartDescriptorExp);
            Assert.AreEqual(instanceMock.ChartDescriptorExp.Count, 1);
            Assert.AreEqual(instanceMock.ChartDescriptorExp["ExprFieldSPC_f"], chartDescriptorMock);

            //Get previously cached chart descriptor and update its data
            var dataSourceMock = new MobileObservableCollection<SampleUnit>
            {
                CreateSample(0.0, 1.74, 0.33, 0.0, 1),
                CreateSample(0.0, 1.74, 0.33, 0.0, 1),
                CreateSample(1.0, 1.74, 0.33, 0.0, 1)
            };
            var chartMock = Mock.Create<XBarChart>(Constructor.Mocked, Behavior.Loose);
            Mock.Arrange(() => chartMock.DataSource).Returns(dataSourceMock);
            Mock.Arrange(() => chartMock.IsChild).Returns(true);
            var charts = new ChartCollection { chartMock };
            Mock.Arrange(() => chartDescriptorMock.Charts).Returns(charts);

            Assert.IsNotNull(chartDescriptorMock.Charts);
            Assert.AreEqual(chartDescriptorMock.Charts.Count, 1);
            Assert.IsNotNull(chartDescriptorMock.Charts[0].DataSource);
            Assert.AreEqual(chartDescriptorMock.Charts[0].DataSource.Count, 3);
            Assert.AreEqual(chartDescriptorMock.Charts[0].DataSource[2].SampleValue, 1.0);

            Mock.Arrange(() => MethodCaller.CallFactoryMethod(Arg.IsAny<Type>(), "GetSampleDataForSPC", "SPC_f",
                instanceMock, ChartTypesEnum.XBarChart, chartDescriptorMock, true))
                .DoInstead<Type, string, object[]>((type, mathodName, parameters) =>
                    {
                        var descriptor = parameters[3] as ChartPanel;
                        var dataSource = new MobileObservableCollection<SampleUnit>
                        {
                            CreateSample(1.22, 5.0, 2.54, 1.0, 6)
                        };
                        var chart = Mock.Create<XBarChart>(Constructor.Mocked, Behavior.Loose);
                        Mock.Arrange(() => chart.DataSource).Returns(dataSource);
                        Mock.Arrange(() => chart.IsChild).Returns(true);
                        var chartCollection = new ChartCollection { chart };
                        Mock.Arrange(() => descriptor.Charts).Returns(chartCollection);
                    })
                .Returns(chartDescriptorMock);

            result = privateAccessor.CallMethod("GetChartDescriptor", instanceMock, "ExprField", "SPC_f", ChartTypesEnum.XBarChart, 5, 10) as ChartPanel;
            Assert.IsNotNull(result);
            Assert.AreEqual(result.ChartType, ChartTypesEnum.XBarChart);
            Assert.AreEqual(result.DataPoints, 10);
            Assert.AreEqual(result.SubgroupSize, 5);

            Assert.IsNotNull(instanceMock.ChartDescriptorExp);
            Assert.AreEqual(instanceMock.ChartDescriptorExp.Count, 1);
            Assert.AreEqual(instanceMock.ChartDescriptorExp["ExprFieldSPC_f"], chartDescriptorMock);

            Assert.IsNotNull(chartDescriptorMock.Charts);
            Assert.AreEqual(chartDescriptorMock.Charts.Count, 1);
            Assert.IsNotNull(chartDescriptorMock.Charts[0].DataSource);
            Assert.AreEqual(chartDescriptorMock.Charts[0].DataSource.Count, 1);
            Assert.AreEqual(chartDescriptorMock.Charts[0].DataSource[0].SampleValue, 1.22);
        }
예제 #27
0
        private void Page_Load(object sender, System.EventArgs e)
        {
            _questionId =
                Information.IsNumeric(Request["QuestionId"]) ? int.Parse(Request["QuestionId"]) : -1;
            _filterId =
                Information.IsNumeric(Request["FilterId"]) ? int.Parse(Request["FilterId"]) : -1;
            _sortOrder =
                Request["SortOrder"] == null ? "ans" : Request["SortOrder"];

            if (_questionId == -1)
            {
                Response.End();
            }
            else if (!NSurveyUser.Identity.IsAdmin &&
                     !NSurveyUser.Identity.HasAllSurveyAccess)
            {
                if (!new Question().CheckQuestionUser(_questionId, NSurveyUser.Identity.UserId))
                {
                    Response.End();
                }
            }

            ChartEngine     engine = new ChartEngine();
            ChartCollection charts = new ChartCollection(engine);

            engine.Size   = new Size(700, 500);
            engine.Charts = charts;


            PieChart pie = new PieChart();
            //pie.Colors = new Color[]{ Color.Red};

            ChartLegend legend = new ChartLegend();

            legend.Position         = LegendPosition.Right;
            legend.Width            = 200;
            legend.Background.Color = Color.FromArgb(245, 249, 251);

            pie.DataLabels.NumberFormat = "0.00";
            pie.Explosion         = 6;
            pie.Shadow.Visible    = true;
            pie.Shadow.Color      = Color.LightGray;
            pie.Shadow.OffsetY    = 5;
            engine.HasChartLegend = true;
            engine.Legend         = legend;
            engine.GridLines      = GridLines.None;


            SetQuestionData(engine, pie);
            SetMoreProperties(engine);

            charts.Add(pie);


            // send chart to browser
            Bitmap bmp;

            System.IO.MemoryStream memStream = new System.IO.MemoryStream();
            bmp = engine.GetBitmap();
            bmp.Save(memStream, System.Drawing.Imaging.ImageFormat.Png);
            memStream.WriteTo(Response.OutputStream);
            Response.End();
        }
        public async void CalculateFailedPercentAsync_PChartTest()
        {
            var editableRootMock = Mock.Create<IEditableRoot>();
            var privateAccessor = PrivateAccessor.ForType(typeof(SpcExpressionHelperModule));

            var parameters = new object[] { "FailedPercent_f", "SPC_f", null, 10, 39, "PChart" };
            var arrange = Mock.NonPublic.Arrange<Task<ChartPanel>>(typeof(SpcExpressionHelperModule), "GetChartDescriptorAsync",
                ArgExpr.IsAny<IEditableRoot>(), ArgExpr.IsAny<string>(), ArgExpr.IsAny<string>(), ArgExpr.IsAny<ChartTypesEnum>(),
                ArgExpr.IsAny<int>(), ArgExpr.IsAny<int>());

            //prepare chart descriptor
            var dataSourceMock = new MobileObservableCollection<SampleUnit> { CreateSample(0.4, 0.8648, 0.4, 0.0, 10) };
            var chartMock = Mock.Create<PChart>(Constructor.Mocked, Behavior.Loose);
            Mock.Arrange(() => chartMock.DataSource).Returns(dataSourceMock);
            Mock.Arrange(() => chartMock.IsChild).Returns(true);
            var charts = new ChartCollection { chartMock };

            var chartDescriptor = Mock.Create<ChartPanel>(Constructor.Mocked, Behavior.Loose);
            chartDescriptor.ChartType = ChartTypesEnum.PChart;
            chartDescriptor.Charts = charts;

            //test true
            arrange.Returns(TaskHelper.FromResult(chartDescriptor));
            var task = privateAccessor.CallMethod("CalculateFailedPercentExpressionAsync", editableRootMock, parameters) as Task<bool?>;
            Assert.IsNotNull(task);
            Assert.IsTrue((bool) await task);

            //test false
            parameters[4] = 41;
            task = privateAccessor.CallMethod("CalculateFailedPercentExpressionAsync", editableRootMock, parameters) as Task<bool?>;
            Assert.IsNotNull(task);
            Assert.IsFalse((bool) await task);
        }
예제 #29
0
        public override void Update()
        {
            var chartItemDataBuilder = CreateChartItemDataBuilder(ChartDisplayRange);

            // filter and orders
            var stats = chartItemDataBuilder.PrepareStatistic(StorageModel.GetFilteredCashPlayerStatistic());

            object previousGroupKey = null;

            chartItemDataBuilder.Prepare(stats.Length);

            var chartSeriesItems = new Dictionary <ChartSeries, List <ChartSeriesItem> >();

            var itemsCounter = 0;

            for (var statIndex = 0; statIndex < stats.Length; statIndex++)
            {
                var stat = stats[statIndex];

                var currentGroupKey = chartItemDataBuilder.BuildGroupKey(stat, statIndex);

                var isNew = !currentGroupKey.Equals(previousGroupKey);

                if (isNew)
                {
                    itemsCounter++;
                }

                previousGroupKey = currentGroupKey;

                foreach (var chartSerie in ChartCollection)
                {
                    ChartSeriesItem previousChartSeriesItem = null;
                    ChartSeriesItem chartSeriesItem         = null;

                    if (!chartSeriesItems.ContainsKey(chartSerie))
                    {
                        chartSeriesItems.Add(chartSerie, new List <ChartSeriesItem>());
                    }

                    if (isNew)
                    {
                        chartSeriesItem = new ChartSeriesItem
                        {
                            Format   = chartSerie.Format,
                            Category = chartItemDataBuilder.GetValueFromGroupKey(currentGroupKey)
                        };

                        previousChartSeriesItem = chartSeriesItems[chartSerie].LastOrDefault();
                        chartSeriesItems[chartSerie].Add(chartSeriesItem);
                    }
                    else
                    {
                        previousChartSeriesItem = chartSeriesItem = chartSeriesItems[chartSerie].LastOrDefault();
                    }

                    chartSerie.UpdateChartSeriesItem(chartSeriesItem, previousChartSeriesItem, stat, statIndex, stats.Length);
                }
            }

            if (ChartDisplayRange == ChartDisplayRange.Hands)
            {
                HandsCount = itemsCounter;
            }

            App.Current?.Dispatcher.Invoke(() => ChartCollection?.ForEach(x => x.ItemsCollection?.Clear()));

            if (chartSeriesItems.Count > 0)
            {
                chartSeriesItems.Keys.ForEach(charSerie =>
                {
                    charSerie.ItemsCollection = new ObservableCollection <ChartSeriesItem>(chartSeriesItems[charSerie]);
                });
            }
        }
예제 #30
0
    public override PicturePage.Picture GetPictureWithBitmap(int id)
    {
        ChartEngine engine = new ChartEngine();
        engine.Size = new Size(570, 300);
        engine.GridLines = WebChart.GridLines.None;
        engine.ShowXValues = true;
        engine.ShowYValues = true;
        engine.LeftChartPadding = 50;
        engine.BottomChartPadding = 50;
        engine.XAxisFont.StringFormat.LineAlignment = StringAlignment.Center;
        engine.XAxisFont.StringFormat.FormatFlags = StringFormatFlags.DirectionVertical;
        engine.XAxisFont.ForeColor = engine.YAxisFont.ForeColor = Color.Black;

        ChartCollection charts = new ChartCollection(engine);
        engine.Charts = charts;

        List<TransitCounter> counters = SessionManager.GetCachedCollection<TransitCounter>(
            "GetStatsSummary", SessionManager.Ticket, new TransitStatsQueryOptions(RequestType));

        string format;

        switch (RequestType)
        {
            case TransitStats.Type.Daily:
                format = "MMM d";
                break;
            case TransitStats.Type.Hourly:
                format = "htt";
                break;
            case TransitStats.Type.Monthly:
                format = "MMM";
                break;
            case TransitStats.Type.Weekly:
                format = "MMM dd";
                break;
            case TransitStats.Type.Yearly:
                format = "yyyy";
                break;
            default:
                throw new ArgumentOutOfRangeException("type");
        }

        Color fill = Color.Black;

        ColumnChart chart = new ColumnChart();
        chart.ShowLineMarkers = false;
        chart.ShowLegend = true;
        chart.Line.Color = Color.White;
        chart.Line.Width = 2;
        chart.Fill.Color = engine.Border.Color = fill;
        chart.Fill.LinearGradientMode = LinearGradientMode.Vertical;
        chart.MaxColumnWidth = 100;

        foreach (TransitCounter counter in counters)
        {
            chart.Data.Add(new ChartPoint(counter.Created.ToString(format), counter.Count));
        }

        charts.Add(chart);

        PicturePage.Picture picture = new PicturePage.Picture();
        picture.Id = 0;
        picture.Modified = DateTime.UtcNow;
        picture.Name = RequestType.ToString();

        MemoryStream ds = new MemoryStream();
        engine.GetBitmap().Save(ds, ImageFormat.Png);
        picture.Bitmap = new byte[ds.Length];
        MemoryStream ms = new MemoryStream(picture.Bitmap);
        ds.WriteTo(ms);

        return picture;
    }