Exemplo n.º 1
0
        public static SourceField GetInstance(CacheField cacheField, int index)
        {
            IList <PivotTableGroup> pivotGroupings  = new List <PivotTableGroup>();
            PivotTableGroup         pivotTableGroup = PivotTableGroup.GetInstance(cacheField, index);

            if (pivotTableGroup != null)
            {
                pivotGroupings.Add(pivotTableGroup);
            }

            return(new SourceField()
            {
                Index = index,
                Name = cacheField.Name,
                NumberFmtId = cacheField.NumberFormatId ?? 0,
                // ECMA-376 Appendix B.2 Line 1284 shows that default value is "false"
                Items = SharedItems.GetInstance(cacheField),
                PivotGrouping = pivotGroupings
            });
        }
Exemplo n.º 2
0
        private static void BuildGroup(PivotTableGroup group, int level, int levels, Stack <bool> startRow, StringBuilder builder)
        {
            if (startRow.Count == 0)
            {
                builder.AppendFormat("<tr>");
                startRow.Push(true);
            }

            int rowSpan = group.Count + (group.HasChildGroups && group.ShowTotal == ShowTotal.Top ? 1 : 0);

            builder.AppendFormat(@"<td{1} class=""group"">{0}</td>", group.Name, rowSpan > 1 ? string.Format(@" rowSpan=""{0}""", rowSpan) : "");

            if (group.ShowTotal == ShowTotal.Top)
            {
                BuildPrefixCells(level, levels, builder);
                BuildValues(group.FormatValues, builder);
                builder.Append("</tr>");
                startRow.Pop();
            }

            BuildGroups(group.ChildGroups, level + 1, levels, startRow, builder);

            if (group.ShowTotal == ShowTotal.Bottom && !group.HasChildGroups)
            {
                BuildValues(group.FormatValues, builder);
                builder.Append("</tr>");
                startRow.Pop();
            }

            if (group.ShowTotal == ShowTotal.Bottom && !group.ContainsNoOrSingleChild(true))
            {
                builder.Append(@"<tr class=""total"">");
                builder.AppendFormat(@"<td class=""group"">{0}</td>", group.TotalName);
                BuildPrefixCells(level, levels, builder);
                BuildValues(group.FormatValues, builder);
                builder.Append("</tr>");
            }
        }
Exemplo n.º 3
0
        private static void BuildGroup(PivotTableGroup group, int level, int levels, Stack<bool> startRow, StringBuilder builder)
        {
            if (startRow.Count == 0)
            {
                builder.AppendFormat("<tr>");
                startRow.Push(true);
            }

            int rowSpan = GetRowSpan(group);
            builder.AppendFormat(@"<td{1} class=""group"">{0}</td>", group.Name, rowSpan > 1 ? string.Format(@" rowSpan=""{0}""", rowSpan) : "");

            if (group.ShowTotal == ShowTotal.Top)
            {
                BuildPrefixCells(level, levels, builder);
                BuildValues(group.FormatValues, builder);
                builder.Append("</tr>");
                startRow.Pop();
            }

            BuildGroups(group.Groups, level + 1, levels, startRow, builder);

            if (group.ShowTotal == ShowTotal.Bottom && !group.HasChildGroups)
            {
                BuildValues(group.FormatValues, builder);
                builder.Append("</tr>");
                startRow.Pop();
            }

            if (group.ShowTotal == ShowTotal.Bottom && !group.ContainsNoOrSingleChild(true))
            {
                builder.Append(@"<tr class=""total"">");
                builder.AppendFormat(@"<td class=""group"">{0}</td>", group.TotalName);
                BuildPrefixCells(level, levels, builder);
                BuildValues(group.FormatValues, builder);
                builder.Append("</tr>");
            }
        }
Exemplo n.º 4
0
        private static int GetRowSpanIncludingTotals(PivotTableGroup group)
        {
            var childRowSpans = group.Groups.Sum(cg => GetRowSpanIncludingTotals(cg));

            return(Math.Max(childRowSpans, 1) + (/*group.ShowTotal == ShowTotal.Bottom &&*/ !group.ContainsNoOrSingleChild(true) ? 1 : 0));
        }
Exemplo n.º 5
0
 private static int GetRowSpan(PivotTableGroup group)
 {
     return(group.Groups.Sum(cg => GetRowSpanIncludingTotals(cg)));
 }
Exemplo n.º 6
0
 private static int GetRowSpanIncludingTotals(PivotTableGroup group)
 {
     var childRowSpans = group.Groups.Sum(cg => GetRowSpanIncludingTotals(cg));
     return Math.Max(childRowSpans, 1) + (/*group.ShowTotal == ShowTotal.Bottom &&*/ !group.ContainsNoOrSingleChild(true) ? 1 : 0);
 }
Exemplo n.º 7
0
 private static int GetRowSpan(PivotTableGroup group)
 {
     return group.Groups.Sum(cg => GetRowSpanIncludingTotals(cg));
 }