示例#1
0
        QuarterPeriod createQuarterPeriod(YearPeriod Year, string Name, DateTime StratDate, DateTime EndDate, IObjectSpace objectSpace)
        {
            var quarter = objectSpace.CreateObject <QuarterPeriod>();

            quarter.YearPeriod = Year;
            quarter.PeriodName = Name;
            quarter.StartDate  = StratDate;
            quarter.EndDate    = EndDate;
            return(quarter);
        }
        public override IEnumerable <IFigure> Convert(DataTable table, Stock stock)
        {
            var series = new List <IFigure>();

            foreach (DataRow row in table.Rows)
            {
                if (row[Descriptor.ValueFormat.Name] == DBNull.Value)
                {
                    continue;
                }

                IPeriod period;
                if (Descriptor.TimeFormat != null)
                {
                    if (Descriptor.TimeFormat.Type == typeof(int))
                    {
                        var year = ( int )row[Descriptor.TimeFormat.Name];
                        period = new YearPeriod(year);
                    }
                    else
                    {
                        var date = (DateTime)row[Descriptor.TimeFormat.Name];
                        period = new DayPeriod(date);
                    }
                }
                else
                {
                    // TODO: is this a proper default?
                    period = new DayPeriod(DateTime.Now);
                }

                var entity = CreateEntity(stock, period, row[Descriptor.ValueFormat.Name]);
                series.Add(entity);
            }

            return(series);
        }
示例#3
0
        public void Report(ReportContext context)
        {
            var table = new Table();

            table.CellSpacing = 5;

            table.Columns.Add(new TableColumn {
                Width = new GridLength(200), Background = Brushes.AliceBlue
            });
            Count.Times(i => table.Columns.Add(new TableColumn {
                Width = GridLength.Auto
            }));

            var rowGroup = new TableRowGroup();

            table.RowGroups.Add(rowGroup);

            var row = new TableRow {
                Background = Brushes.AliceBlue
            };

            row.Cells.Add(new TableCell());

            for (int year = EndYear - Count + 1; year <= EndYear; ++year)
            {
                row.Cell("{0,8}", year).TextAlignment = TextAlignment.Right;
            }

            rowGroup.Rows.Add(row);

            foreach (var dataRow in Rows)
            {
                row = new TableRow();

                var series = ( IFigureSeries )context.ProvideValue(dataRow.Value) ?? FigureSeries.Empty;

                var cell = row.Cell(GetHeader(dataRow, series));
                cell.TextAlignment = TextAlignment.Left;

                for (int year = EndYear - Count + 1; year <= EndYear; ++year)
                {
                    var period = new YearPeriod(year);
                    var value  = series.SingleOrDefault(v => v.Period.Equals(period));
                    if (value == null)
                    {
                        row.Cell("n.a.").TextAlignment = TextAlignment.Right;
                    }
                    else if (dataRow.Round)
                    {
                        row.Cell("{0:#,0}", value.Value).TextAlignment = TextAlignment.Right;
                    }
                    else if (dataRow.InMillions)
                    {
                        row.Cell("{0:#,0.00}", value.Value / 1000 / 1000).TextAlignment = TextAlignment.Right;
                    }
                    else
                    {
                        row.Cell("{0:#,0.00}", value.Value).TextAlignment = TextAlignment.Right;
                    }
                }

                rowGroup.Rows.Add(row);
            }

            context.Document.Blocks.Add(table);
        }