/// <summary>
        ///     Create test image formatting rules.
        /// </summary>
        /// <returns></returns>
        public static List <ColumnFormatting> CreateTestImageFormattingRules()
        {
            var formats = new List <ColumnFormatting>();

            var format1 = new ColumnFormatting
            {
                QueryColumnId  = new Guid("{7EE81FB6-F037-4031-A2B0-D5E585B8BA4E}"),
                ColumnName     = "Column1",
                ColumnType     = DatabaseType.Int32Type,
                ShowText       = true,
                FormattingRule = new ImageFormattingRule
                {
                    ThumbnailScaleId = new EntityRef(7969),
                    ThumbnailSizeId  = new EntityRef(11807)
                }
            };

            var format2 = new ColumnFormatting
            {
                QueryColumnId  = new Guid("{8EE81FB6-F037-4031-A2B0-D5E585B8BA4E}"),
                ColumnName     = "Column2",
                ColumnType     = DatabaseType.IdentifierType,
                ShowText       = false,
                FormattingRule = new ImageFormattingRule
                {
                    ThumbnailScaleId = new EntityRef("core", "scaleImageProportionally"),
                    ThumbnailSizeId  = new EntityRef("console", "smallThumbnail")
                }
            };

            formats.Add(format1);
            formats.Add(format2);

            return(formats);
        }
        /// <summary>
        /// </summary>
        /// <param name="formats1"></param>
        /// <param name="formats2"></param>
        public static void CompareColumnFormats(IList <ColumnFormatting> formats1, IList <ColumnFormatting> formats2)
        {
            Assert.AreEqual(formats1.Count, formats2.Count, "The count of formats is invalid.");

            for (int i = 0; i < formats1.Count; i++)
            {
                ColumnFormatting cf1 = formats1[i];
                ColumnFormatting cf2 = formats2[i];

                Assert.AreEqual(cf1.QueryColumnId, cf2.QueryColumnId, "Format Index:{0} QueryColumnId is invalid.", i.ToString(CultureInfo.InvariantCulture));
                Assert.AreEqual(cf1.ColumnName, cf2.ColumnName, "Format Index:{0} ColumnName is invalid.", i.ToString(CultureInfo.InvariantCulture));
                Assert.AreEqual(cf1.ColumnType.GetType( ), cf2.ColumnType.GetType( ), "Format Index:{0} ColumnType is invalid.", i.ToString(CultureInfo.InvariantCulture));
                Assert.AreEqual(cf1.ShowText, cf2.ShowText, "Format Index:{0} ShowText is invalid.", i.ToString(CultureInfo.InvariantCulture));

                Assert.IsNotNull(cf1.FormattingRule, "Format Index:{0} FormattingRule 1 should not be null.", i.ToString(CultureInfo.InvariantCulture));
                Assert.IsNotNull(cf2.FormattingRule, "Format Index:{0} FormattingRule 2 should not be null.", i.ToString(CultureInfo.InvariantCulture));

                if (cf1.FormattingRule is ColorFormattingRule)
                {
                    var cfr1 = cf1.FormattingRule as ColorFormattingRule;
                    var cfr2 = cf2.FormattingRule as ColorFormattingRule;
                    CompareColorFormattingRules(i, cfr1, cfr2);
                }
                else if (cf1.FormattingRule is IconFormattingRule)
                {
                    var ifr1 = cf1.FormattingRule as IconFormattingRule;
                    var ifr2 = cf2.FormattingRule as IconFormattingRule;
                    CompareIconFormattingRules(i, ifr1, ifr2);
                }
                else if (cf1.FormattingRule is BarFormattingRule)
                {
                    var bfr1 = cf1.FormattingRule as BarFormattingRule;
                    var bfr2 = cf2.FormattingRule as BarFormattingRule;
                    CompareBarFormattingRules(i, bfr1, bfr2);
                }
                else if (cf1.FormattingRule is ImageFormattingRule)
                {
                    var imfr1 = cf1.FormattingRule as ImageFormattingRule;
                    var imfr2 = cf2.FormattingRule as ImageFormattingRule;
                    CompareImageFormattingRules(i, imfr1, imfr2);
                }
                else
                {
                    Assert.Fail("The formatting rule is invalid.");
                }
            }
        }
Esempio n. 3
0
 public static void Main(string[] args)
 {
     Simple.Run();
     MultipleSheet.Run();
     NumberFormats.Run();
     ColumnFormatting.Run();
     RowFormatting.Run();
     Alignment.Run();
     Border.Run();
     DataValidation.Run();
     RightToLeft.Run();
     Zip64Small.Run();
     SheetProtection.Run();
     Large.Run();
     StyledLarge.Run();
     StyledLargeCreateStyles.Run();
     Zip64Huge.Run();
 }
        /// <summary>
        ///     Create test color formatting rules.
        /// </summary>
        /// <returns></returns>
        public static List <ColumnFormatting> CreateTestColorFormattingRules( )
        {
            var formats = new List <ColumnFormatting>( );

            var format1 = new ColumnFormatting
            {
                QueryColumnId  = new Guid("{7EE81FB6-F037-4031-A2B0-D5E585B8BA4E}"),
                ColumnName     = "Column1",
                ColumnType     = DatabaseType.Int32Type,
                ShowText       = true,
                FormattingRule = new ColorFormattingRule
                {
                    Rules = new List <ColorRule>
                    {
                        new ColorRule
                        {
                            BackgroundColor = new ColorInfo
                            {
                                A = 0,
                                B = 0,
                                R = 0,
                                G = 255
                            },
                            ForegroundColor = new ColorInfo
                            {
                                A = 0,
                                B = 0,
                                R = 255,
                                G = 0
                            },
                            Condition = new Condition
                            {
                                ColumnName = "Column1",
                                ColumnType = DatabaseType.Int32Type,
                                Operator   = ConditionType.LessThan,
                                Arguments  = new List <TypedValue>
                                {
                                    new TypedValue
                                    {
                                        Type  = DatabaseType.Int32Type,
                                        Value = 20
                                    }
                                }
                            }
                        }
                    }
                }
            };

            var format2 = new ColumnFormatting
            {
                QueryColumnId  = new Guid("{8EE81FB6-F037-4031-A2B0-D5E585B8BA4E}"),
                ColumnName     = "Column2",
                ColumnType     = DatabaseType.IdentifierType,
                ShowText       = false,
                FormattingRule = new ColorFormattingRule
                {
                    Rules = new List <ColorRule>
                    {
                        new ColorRule
                        {
                            BackgroundColor = new ColorInfo
                            {
                                A = 10,
                                B = 10,
                                R = 0,
                                G = 255
                            },
                            ForegroundColor = new ColorInfo
                            {
                                A = 0,
                                B = 0,
                                R = 255,
                                G = 5
                            },
                            Condition = new Condition
                            {
                                ColumnName = "Column2",
                                ColumnType = DatabaseType.IdentifierType,
                                Operator   = ConditionType.GreaterThanOrEqual,
                                Arguments  = new List <TypedValue>
                                {
                                    new TypedValue
                                    {
                                        Type  = DatabaseType.IdentifierType,
                                        Value = 100L
                                    }
                                }
                            }
                        }
                    }
                }
            };

            formats.Add(format1);
            formats.Add(format2);

            return(formats);
        }
        /// <summary>
        ///     Create test bar formatting rules.
        /// </summary>
        /// <returns></returns>
        public static List <ColumnFormatting> CreateTestBarFormattingRules( )
        {
            var formats = new List <ColumnFormatting>( );

            var format1 = new ColumnFormatting
            {
                QueryColumnId  = new Guid("{7EE81FB6-F037-4031-A2B0-D5E585B8BA4E}"),
                ColumnName     = "Column1",
                ColumnType     = DatabaseType.Int32Type,
                ShowText       = true,
                FormattingRule = new BarFormattingRule
                {
                    Color = new ColorInfo
                    {
                        A = 0,
                        B = 0,
                        R = 0,
                        G = 255
                    },
                    Minimum = new TypedValue
                    {
                        Type  = DatabaseType.Int32Type,
                        Value = 0
                    },
                    Maximum = new TypedValue
                    {
                        Type  = DatabaseType.Int32Type,
                        Value = 100
                    }
                }
            };

            var format2 = new ColumnFormatting
            {
                QueryColumnId  = new Guid("{8EE81FB6-F037-4031-A2B0-D5E585B8BA4E}"),
                ColumnName     = "Column2",
                ColumnType     = DatabaseType.IdentifierType,
                ShowText       = false,
                FormattingRule = new BarFormattingRule
                {
                    Color = new ColorInfo
                    {
                        A = 0,
                        B = 0,
                        R = 100,
                        G = 0
                    },
                    Minimum = new TypedValue
                    {
                        Type  = DatabaseType.IdentifierType,
                        Value = 100L
                    },
                    Maximum = new TypedValue
                    {
                        Type  = DatabaseType.IdentifierType,
                        Value = 1000L
                    }
                }
            };

            formats.Add(format1);
            formats.Add(format2);

            return(formats);
        }
        /// <summary>
        /// Builds the column format rules for the report columns.
        /// </summary>
        /// <param name="reportColumns">The report columns.</param>
        /// <param name="context">The context.</param>
        /// <returns>
        /// List{ColumnFormatting}.
        /// </returns>
        internal static List <ColumnFormatting> BuildColumnFormats(IEntityCollection <ReportColumn> reportColumns, IReportToQueryContext context)
        {
            List <ColumnFormatting> reportColumnFormats = new List <ColumnFormatting>();

            foreach (ReportColumn reportColumn in reportColumns)
            {
                ColumnFormatting columnFormatting = null;
                if (reportColumn.ColumnDisplayFormat != null && reportColumn.ColumnExpression != null)
                {
                    Formatting.ImageFormattingRule imageFormattingRule = null;
                    if (reportColumn.ColumnDisplayFormat.FormatImageScale != null &&
                        reportColumn.ColumnDisplayFormat.FormatImageSize != null)
                    {
                        imageFormattingRule = new Formatting.ImageFormattingRule
                        {
                            ThumbnailSizeId  = new Model.EntityRef(reportColumn.ColumnDisplayFormat.FormatImageSize.Id),
                            ThumbnailScaleId = new Model.EntityRef(reportColumn.ColumnDisplayFormat.FormatImageScale.Id),
                        };
                    }


                    columnFormatting = new ColumnFormatting
                    {
                        EntityId             = reportColumn.Id,
                        ColumnName           = reportColumn.Name,
                        DecimalPlaces        = reportColumn.ColumnDisplayFormat.FormatDecimalPlaces ?? 0,
                        ShowText             = reportColumn.ColumnDisplayFormat.ColumnShowText ?? false,
                        DisableDefaultFormat = reportColumn.ColumnDisplayFormat.DisableDefaultFormat ?? false,
                        Prefix         = reportColumn.ColumnDisplayFormat.FormatPrefix,
                        Suffix         = reportColumn.ColumnDisplayFormat.FormatSuffix,
                        Lines          = reportColumn.ColumnDisplayFormat.MaxLineCount ?? 0,
                        FormattingRule = imageFormattingRule ?? null
                    };
                    // Column Type
                    columnFormatting.ColumnType = TypedValueHelper.GetDatabaseType(reportColumn.ColumnExpression.ReportExpressionResultType);

                    DisplayFormat displayFormat = reportColumn.ColumnDisplayFormat;
                    // Format String
                    if (displayFormat.DateColumnFormat != null)
                    {
                        columnFormatting.DateFormat = displayFormat.DateColumnFormat;
                    }
                    if (displayFormat.DateTimeColumnFormat != null)
                    {
                        columnFormatting.DateTimeFormat = displayFormat.DateTimeColumnFormat;
                    }
                    if (displayFormat.TimeColumnFormat != null)
                    {
                        columnFormatting.TimeFormat = displayFormat.TimeColumnFormat;
                    }

                    // Text Alignment
                    if (displayFormat.FormatAlignment != null)
                    {
                        columnFormatting.Alignment = displayFormat.FormatAlignment;
                    }

                    if (displayFormat.EntityListColumnFormat != null)
                    {
                        columnFormatting.EntityListColumnFormat = displayFormat.EntityListColumnFormat;
                    }
                }
                // Formatting Rule
                if (reportColumn.ColumnFormattingRule != null && reportColumn.ColumnExpression != null)
                {
                    if (columnFormatting == null)
                    {
                        columnFormatting = new ColumnFormatting
                        {
                            EntityId   = reportColumn.Id,
                            ColumnName = reportColumn.Name,
                        }
                    }
                    ;
                    columnFormatting.FormattingRule = BuildColumnFormatRule(reportColumn.ColumnFormattingRule, columnFormatting.ColumnType, context);
                }

                if (columnFormatting != null && reportColumn.ColumnExpression != null)
                {
                    reportColumnFormats.Add(columnFormatting);
                }
            }

            return(reportColumnFormats);
        }