Пример #1
0
        internal void FillTable(TableDataSet dataSet)
        {
            int i = 0;

            // Fill 0 column
            for (i = 0; i < RowCount; i++)
            {
                if (!dataSet.IsInRange(i))
                {
                    break;
                }

                var control = new TextBlock();
                control.Text        = dataSet[i, 0];
                control.FontFamily  = TableFontFamily;
                control.FontSize    = TableFontSize;
                control.FontStyle   = TableFontStyle == FontStyles.Italic ? FontStyles.Italic : FontStyles.Normal;
                control.FontWeight  = TableFontWeight;
                control.FontStretch = TableFontStretch;

                Grid.SetColumn(control, 0);
                Grid.SetRow(control, i);
                TableGrid.Children.Add(control);
            }

            // Fill 2 column
            for (i = 0; i < RowCount; i++)
            {
                if (!dataSet.IsInRange(i))
                {
                    break;
                }

                var control = new TextBlock();
                control.HorizontalAlignment = HorizontalAlignment.Left;
                control.Text        = dataSet[i, 1];
                control.FontFamily  = TextFontFamily;
                control.FontSize    = TextFontSize;
                control.FontStyle   = TextFontStyle == FontStyles.Italic ? FontStyles.Italic : FontStyles.Normal;
                control.FontWeight  = TextFontWeight;
                control.FontStretch = TextFontStretch;
                Grid.SetColumn(control, 2);
                Grid.SetRow(control, i);
                TableGrid.Children.Add(control);
            }

            ActualRowCount = i;

            // Fill 1 column
            GridSplitter gs = new GridSplitter();

            gs.Name                = "GridSplitter";
            gs.Focusable           = false;
            gs.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;

            Grid.SetColumn(gs, 1);
            Grid.SetRowSpan(gs, RowCount);
            TableGrid.Children.Add(gs);
            TableGrid.UpdateLayout();
        }
Пример #2
0
        internal void Initialize(int rowCount, double rowHeight, GridLength col0Width, GridLength col1Width, GridLength col2Width, TableDataSet dataSet)
        {
            TableDataSet = dataSet;

            UpdateTableDefinition(rowCount, rowHeight, col0Width, col1Width, col2Width);

            FillTable(dataSet);
        }
        private int AddTableElement(TableInfo ci, TableDataSet dataSet, int seek = 0, Point mediaOffset = new Point())
        {
            var element = TableInfo.FromTableInfo(ci, dataSet, ref seek);

            AddCanvasElement(element, mediaOffset);

            return(seek);
        }
Пример #4
0
        private int FillTable(DrawingContext ctx, TableInfo ci, TableDataSet dataSet, int seek = 0, Point mediaOffset = new Point())
        {
            int i = 0;

            for (i = 0; i < ci.RowCount; i++)
            {
                if (!dataSet.IsInRange(i + seek))
                {
                    break;
                }

                var text = new FormattedText(dataSet[i + seek, 0], System.Globalization.CultureInfo.CurrentCulture,
                                             FlowDirection.LeftToRight,
                                             new Typeface(
                                                 new FontFamily(ci.FontFamily),
                                                 ci.FontStyle == FontStyles.Italic.ToString() ? FontStyles.Italic : FontStyles.Normal,
                                                 FontWeight.FromOpenTypeWeight(OverrideFontWeight == 0 ? ci.FontOpenTypeWeight : OverrideFontWeight),
                                                 FontStretch.FromOpenTypeStretch(ci.FontOpenTypeStretch)),
                                             Helper.ToEmSize(ci.FontSize, m_DpiY), Brushes.Black);

                var orig = ci.Location();
                var loc  = new Point(orig.X, orig.Y + ci.RowPixelHeight * i);
                loc.X += mediaOffset.X;
                loc.Y += mediaOffset.Y;

                ctx.DrawText(text, loc);
            }

            // Fill 2 column
            for (i = 0; i < ci.RowCount; i++)
            {
                if (!dataSet.IsInRange(i + seek))
                {
                    break;
                }

                var text = new FormattedText(dataSet[i + seek, 1], System.Globalization.CultureInfo.CurrentCulture,
                                             FlowDirection.LeftToRight,
                                             new Typeface(
                                                 new FontFamily(ci.TextFontFamily),
                                                 ci.TextFontStyle == FontStyles.Italic.ToString() ? FontStyles.Italic : FontStyles.Normal,
                                                 FontWeight.FromOpenTypeWeight(OverrideFontWeight == 0 ? ci.TextFontOpenTypeWeight : OverrideFontWeight),
                                                 FontStretch.FromOpenTypeStretch(ci.TextFontOpenTypeStretch)),
                                             Helper.ToEmSize(ci.TextFontSize, m_DpiY), Brushes.Black);

                var orig = ci.Location();
                var loc  = new Point(orig.X + ci.Col0Width + ci.Col1Width, orig.Y + ci.RowPixelHeight * i);
                loc.X += mediaOffset.X;
                loc.Y += mediaOffset.Y;

                ctx.DrawText(text, loc);
            }

            return(i + seek);
        }
Пример #5
0
        public override ITableDataSet GetTableDataSet(Action <TableDataSetOptions> configureDataSet)
        {
            var tableDataSetOptions = new TableDataSetOptions();

            configureDataSet?.Invoke(tableDataSetOptions);

            var tableDataSet = new TableDataSet <TItem>(items.Where(Filter.Compile()).AsQueryable())
            {
                PageableOptions = tableDataSetOptions.PageableOptions,
                SortingOptions  = new SortingOptions()
            };

            return(tableDataSet);
        }
        public override ITableDataSet GetTableDataSet(Action <TableDataSetOptions> configureDataSet)
        {
            var tableDataSetOptions = new TableDataSetOptions();

            configureDataSet?.Invoke(tableDataSetOptions);

            var tableDataSet = new TableDataSet <TItem>(items.Where(Filter.Compile()).AsQueryable(), new FilterExpressionTreeBuilder <TItem>())
            {
                PageableOptions = tableDataSetOptions.PageableOptions,
                SortingOptions  = tableDataSetOptions.SortingOptions,
                GridViewEvents  = tableDataSetOptions.GridViewEvents,
                GroupingOptions = tableDataSetOptions.GroupingOptions,
            };

            return(tableDataSet);
        }
Пример #7
0
        private void DrawRearPage(DrawingContext ctx, LayoutProperties prop)
        {
            var student     = Student;
            var mediaOffset = prop.OffsetInPixel;

            foreach (var ci in prop.m_CaptionInfo.Where(t => Helper.IsNoneBinding(t.XlsColumn)))
            {
                DrawFormattedText(ctx, ci.CaptionText, ci, mediaOffset);
            }

            if (prop.LayoutType == LayoutType.School9Attachment || prop.LayoutType == LayoutType.School11Attachment)
            {
                foreach (var caption in prop.m_CaptionInfo.Where(t => t.XlsColumn == "засвоїв/ла"))
                {
                    DrawFormattedText(ctx, Helper.educationRecived[1][student.Sex], caption, mediaOffset);
                }
            }

            foreach (var caption in prop.m_CaptionInfo.Where(t => t.XlsColumn == "Регистрационный номер"))
            {
                DrawFormattedText(ctx, student.RegisterNumber, caption, mediaOffset);
            }

            var m_TableDataSet = new TableDataSet(DisciplineLabels, student.Assessments, IsSkipEmplyLines, IsAssessmentsOnLastLine);
            var seek           = 0;

            foreach (var tbl in prop.m_Table.OrderBy(t => t.Left + t.Top).AsParallel())
            {
                FillTable(ctx, tbl, m_TableDataSet, seek, mediaOffset);
                seek += tbl.RowCount;
            }
            //foreach (var tbl in prop.m_Table.Where(t => t.XlsColumn == "Оценки слева").OrderBy(t => t.Top))
            //    seek = FillTable(ctx, tbl, m_TableDataSet, seek, mediaOffset);
            //foreach (var tbl in prop.m_Table.Where(t => t.XlsColumn == "Оценки справа").OrderBy(t => t.Top))
            //    seek = FillTable(ctx, tbl, m_TableDataSet, seek, mediaOffset);

            foreach (var smb in prop.m_ZSumbolInfo.OrderBy(t => t.Top))
            {
                DrawZSumbol(ctx, smb.Path, smb.StrokeThickness, mediaOffset);
            }
        }
Пример #8
0
        public IQueryable <T> Set <T>(TableDataSet set)
        {
            switch (set)
            {
            case TableDataSet.Filtered:
                return((IQueryable <T>)Filtered);

            case TableDataSet.Mapped:
                return((IQueryable <T>)Mapped);

            case TableDataSet.Ordered:
                return((IQueryable <T>)Ordered);

            case TableDataSet.Paged:
                return((IQueryable <T>)Paged);

            case TableDataSet.Source:
                return((IQueryable <T>)Source);
            }
            return(null);
        }
Пример #9
0
        private void DrawFrontPage(DrawingContext ctx, LayoutProperties prop)
        {
            var student     = Student;
            var mediaOffset = prop.OffsetInPixel;

            foreach (var ci in prop.m_CaptionInfo.Where(t => Helper.IsNoneBinding(t.XlsColumn)))
            {
                DrawFormattedText(ctx, ci.CaptionText, ci, mediaOffset);
            }

            foreach (var column in XLSColumnBinding.GetXLSColums(prop.LayoutType))
            {
                if (string.IsNullOrEmpty(column))
                {
                    continue;
                }

                foreach (var caption in prop.m_CaptionInfo.Where(t => t.XlsColumn == column))
                {
                    DrawFormattedText(ctx, student.GetValue(column), caption, mediaOffset);
                }
            }

            var m_TableDataSet = new TableDataSet(DisciplineLabels, student.Assessments, IsSkipEmplyLines, IsAssessmentsOnLastLine);

            int seek = 0;

            foreach (var tbl in prop.m_Table.OrderBy(t => t.Left + t.Top).AsParallel())
            {
                FillTable(ctx, tbl, m_TableDataSet, seek, mediaOffset);
                seek += tbl.RowCount;
            }
            //foreach (var tbl in prop.m_Table.Where(t => t.XlsColumn == "Оценки слева").OrderBy(t => t.Top))
            //    seek = FillTable(ctx, tbl, m_TableDataSet, seek, mediaOffset);
            //foreach (var tbl in prop.m_Table.Where(t => t.XlsColumn == "Оценки справа").OrderBy(t => t.Top))
            //    seek = FillTable(ctx, tbl, m_TableDataSet, seek, mediaOffset);
        }
Пример #10
0
        public void GridBodyRendererShouldRenderTBodyTag()
        {
            //Arrange
            var modelBuilder = new ModelBuilder();

            modelBuilder.Entity <WeatherForecast>()
            .Property(p => p.Date)
            .HasOrder(2)
            .HasValueFormatter(d => d.ToShortDateString());

            modelBuilder.Entity <WeatherForecast>()
            .Property(p => p.Summary)
            .HasOrder(1)
            .HasValueFormatter(s => $"{s}!");

            var configurationProvider  = new GridConfigurationProvider(modelBuilder.Model);
            var rendererContextFactory = new GridRendererContextFactory(configurationProvider);

            var source = Enumerable.Range(1, 20).Select(index =>
                                                        new WeatherForecast
            {
                Date         = DateTime.Now.AddDays(index),
                TemperatureC = 120,
                Summary      = "test"
            }).AsQueryable();

            var tableDataSet = new TableDataSet <WeatherForecast>(source);

            tableDataSet.GoToPage(0);
            var rendererTreeBuilder = new RenderTreeBuilder(new TestRenderer());
            var rendererContext     = rendererContextFactory.CreateRendererContext(tableDataSet, rendererTreeBuilder);
            var gridBodyRenderer    = new GridBodyRenderer(NullLogger <GridBodyRenderer> .Instance);

            //Act
            gridBodyRenderer.Render(rendererContext);
        }
Пример #11
0
        internal void Initialize(int rowCount, double rowHeight, GridLength col0Width, GridLength col1Width, GridLength col2Width, TableDataSet dataSet, ref int seek)
        {
            int i = 0;

            RowCount       = rowCount;
            RowHeight      = rowHeight;
            RowPixelHeight = rowHeight * MainWindow.DpiY / 2.54d / 100d;

            ColumnDefinition c1 = new ColumnDefinition();

            c1.Width = col0Width;// new GridLength(col0Width, GridUnitType.Auto);
            ColumnDefinition c2 = new ColumnDefinition();

            c2.Width = col1Width;// new GridLength(col1Width, GridUnitType.Auto);
            ColumnDefinition c3 = new ColumnDefinition();

            c3.Width = col2Width;// new GridLength(col2Width, GridUnitType.Auto);

            TableGrid.ColumnDefinitions.Add(c1);
            TableGrid.ColumnDefinitions.Add(c2);
            TableGrid.ColumnDefinitions.Add(c3);

            for (i = 0; i < rowCount; i++)
            {
                RowDefinition row = new RowDefinition();
                row.Height = new GridLength(RowPixelHeight, GridUnitType.Pixel);
                TableGrid.RowDefinitions.Add(row);
            }

            // Fill 0 column
            for (i = 0; i < rowCount; i++)
            {
                if (!dataSet.IsInRange(i + seek))
                {
                    break;
                }

                var control = new TextBlock();
                control.Text        = dataSet[i + seek, 0];
                control.FontFamily  = TableFontFamily;
                control.FontSize    = TableFontSize;
                control.FontStyle   = TableFontStyle == FontStyles.Italic ? FontStyles.Italic : FontStyles.Normal;
                control.FontWeight  = TableFontWeight;
                control.FontStretch = TableFontStretch;

                Grid.SetColumn(control, 0);
                Grid.SetRow(control, i);
                TableGrid.Children.Add(control);
            }

            // Fill 2 column
            for (i = 0; i < rowCount; i++)
            {
                if (!dataSet.IsInRange(i + seek))
                {
                    break;
                }

                var control = new TextBlock();
                control.HorizontalAlignment = HorizontalAlignment.Left;
                control.Text        = dataSet[i + seek, 1];
                control.FontFamily  = TableFontFamily;
                control.FontSize    = TableFontSize;
                control.FontStyle   = TableFontStyle == FontStyles.Italic ? FontStyles.Italic : FontStyles.Normal;
                control.FontWeight  = TableFontWeight;
                control.FontStretch = TableFontStretch;
                Grid.SetColumn(control, 2);
                Grid.SetRow(control, i);
                TableGrid.Children.Add(control);
            }

            // Fill 1 column
            GridSplitter gs = new GridSplitter();

            gs.Name                = "GridSplitter";
            gs.Focusable           = false;
            gs.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;

            Grid.SetColumn(gs, 1);
            Grid.SetRowSpan(gs, rowCount);
            TableGrid.Children.Add(gs);
            TableGrid.UpdateLayout();

            seek += i;
        }
        public void LoadLayout(LayoutProperties prop, StudentInfo student, List <string> disciplineLabels, bool isSkipEmplyLines = false, bool isAssessmentsOnLastLine = false)
        {
            using (new WaitCursor())
            {
                if (prop != null)
                {
                    var mediaOffset = prop.OffsetInPixel;

                    ClearLayout();

                    ImageBackground.Stretch = Stretch.Fill;
                    ImageBackground.Source  = LayoutFileReader.ByteToImageSource(prop.BackgroundImage);

                    Canvas.SetLeft(ImageBackground, mediaOffset.X);
                    Canvas.SetTop(ImageBackground, mediaOffset.Y);

                    // Add labels without data binding.
                    foreach (var ci in prop.m_CaptionInfo.Where(t => Helper.IsNoneBinding(t.XlsColumn)).AsParallel())
                    {
                        AddSpanElement(ci.CaptionText, ci, mediaOffset);
                    }

                    // Add labels with data binding.
                    foreach (var column in XLSColumnBinding.GetXLSColums(prop.LayoutType).AsParallel())
                    {
                        if (Helper.IsNoneBinding(column))
                        {
                            continue;
                        }

                        foreach (var caption in prop.m_CaptionInfo.Where(t => t.XlsColumn == column))
                        {
                            AddSpanElement(student.GetValue(column), caption, mediaOffset);
                        }
                    }



                    // Add tables.
                    var m_TableDataSet = new TableDataSet(disciplineLabels, student.Assessments, isSkipEmplyLines, isAssessmentsOnLastLine);
                    var seek           = 0;

                    foreach (var tbl in prop.m_Table.OrderBy(t => t.Left + t.Top).AsParallel())
                    {
                        AddTableElement(tbl, m_TableDataSet.Range(seek, tbl.RowCount), mediaOffset);
                        seek += tbl.RowCount;
                    }

                    //foreach (var tbl in prop.m_Table.Where(t => t.XlsColumn == "Оценки слева").OrderBy(t => t.Top).AsParallel())
                    //    seek = AddTableElement(tbl, m_TableDataSet, seek, mediaOffset);
                    //foreach (var tbl in prop.m_Table.Where(t => t.XlsColumn == "Оценки справа").OrderBy(t => t.Top).AsParallel())
                    //    seek = AddTableElement(tbl, m_TableDataSet, seek, mediaOffset);

                    // Add guide lines.
                    foreach (var ci in prop.m_GuideLineInfo)
                    {
                        AddGuigeLine(ci, mediaOffset);
                    }
                    // Add sumbols.
                    foreach (var ci in prop.m_ZSumbolInfo)
                    {
                        AddZSumbolElement(ci, mediaOffset);
                    }
                }
            }
        }
        private void AddTableElement(TableInfo ci, TableDataSet dataSet, Point mediaOffset = new Point())
        {
            var element = TableInfo.FromTableInfo(ci, dataSet);

            AddCanvasElement(element, mediaOffset);
        }
Пример #14
0
 protected override async Task OnParametersSetAsync()
 {
     TableDataSet = GetTableDataSet();
     await TableDataSet.GoToPage(0);
 }