Exemple #1
0
 static bool ShowGroupHeader(Xbrl.Taxonomy.GenericRelationshipNetwork netGroupTable, object node)
 {
     if (netGroupTable.GetRelationshipsFrom(node).Count == 1)
     {
         var child = netGroupTable.GetRelationshipsFrom(node).First().Target;
         if (child is Xbrl.Table.Table)
         {
             var tableLabel = Regex.Replace(XbrlUtils.GetVerboseLabel(child as Xbrl.Table.Table).ToLower(), @"[^0-9a-zA-Z]", string.Empty);
             var groupLabel = Regex.Replace(XbrlUtils.GetLabel(node).ToLower(), @"[^0-9a-zA-Z]", string.Empty);
             return(!tableLabel.Contains(groupLabel));
         }
     }
     return(true);
 }
Exemple #2
0
        void TraverseTableTree(Report report, Xbrl.Taxonomy.GenericRelationshipNetwork netGroupTable, object node, int depth = 0)
        {
            if (node is Xbrl.Table.Table)
            {
                var defTable = node as Xbrl.Table.Table;
                foreach (var table in XbrlUtils.FindTableSet(report.TableModel, defTable))
                {
                    var tableInfo = new Table(report, table);
                    if (table.GetAxis(Xbrl.Table.AxisType.Z).SliceCount > 1 || XbrlUtils.HasOpenAspectNodes(table.GetAxis(Xbrl.Table.AxisType.Z)))
                    {
                        Lines.Add(new TableTreeLine(null, tableInfo.Title, depth));
                        for (uint z = 0; z < table.Shape.Z; ++z)
                        {
                            if (table.ContainsFactsInZSlice(z))
                            {
                                tableInfo = new Table(report, table, z);
                                Lines.Add(new TableTreeLine(tableInfo, string.Join(", ", tableInfo.GetZHeaders()), depth + 1));
                            }
                        }
                    }
                    else if (table.ContainsFacts)
                    {
                        Lines.Add(new TableTreeLine(tableInfo, tableInfo.Title, depth));
                    }
                }
            }
            else
            {
                if (ShowGroupHeader(netGroupTable, node))
                {
                    Lines.Add(new TableTreeLine(null, XbrlUtils.GetLabel(node), depth++));
                }

                foreach (var rel in netGroupTable.GetRelationshipsFrom(node))
                {
                    TraverseTableTree(report, netGroupTable, rel.Target, depth);
                }
            }
        }