/// <summary>
        /// Converts the pe column.
        /// </summary>
        /// <param name="extras">The extras.</param>
        /// <returns>[0] extra rows before main paty, [1] extra rows after</returns>
        public static List <Enum>[] convertPEColumn(this PropertyEntryColumn extras)
        {
            List <PropertyEntryColumn> extraList = extras.getEnumListFromFlags <PropertyEntryColumn>();

            List <Enum>[] output = { new List <Enum>(), new List <Enum>() };

            foreach (PropertyEntryColumn pec in extraList)
            {
                switch (pec)
                {
                case PropertyEntryColumn.none:
                    break;

                case PropertyEntryColumn.role_name:
                case PropertyEntryColumn.entry_unit:
                case PropertyEntryColumn.entry_importance:
                case PropertyEntryColumn.entry_description:
                case PropertyEntryColumn.property_description:
                    output[1].Add(pec);
                    break;

                default:
                case PropertyEntryColumn.entry_key:
                case PropertyEntryColumn.entry_name:
                case PropertyEntryColumn.role_letter:
                case PropertyEntryColumn.role_symbol:
                    output[0].Add(pec);
                    break;
                }
            }

            return(output);
        }
        /// <summary>
        /// Builds the consolidated column dictionary scanning all <see cref="imbSCI.Core.collection.PropertyCollectionExtended"/> items.
        /// </summary>
        /// <remarks>
        /// <para>If <c>__allowedColumns</c> are not specified it will include any newly column found inside collection</para>
        /// </remarks>
        /// <param name="obligatoryColumns">The obligatory columns.</param>
        /// <param name="__allowedColumns">The allowed columns.</param>
        /// <returns>Set of columns ready to be used for DataTable creation and for similar tasks</returns>
        public static PropertyEntryDictionary buildConsolidatedColumnDictionary(this IEnumerable <PropertyCollectionExtended> items, PropertyEntryColumn obligatoryColumns, object[] __allowedColumns = null)
        {
            List <PropertyEntryColumn> columnList = obligatoryColumns.getEnumListFromFlags <PropertyEntryColumn>();

            List <object> allowedColumns = __allowedColumns.getFlatList <object>();

            PropertyEntryDictionary output = new PropertyEntryDictionary();

            foreach (PropertyCollectionExtended pair in items)
            {
                foreach (object key in pair.Keys)
                {
                    if (!output.ContainsKey(key))
                    {
                        bool allowed = !allowedColumns.Any();
                        if (allowedColumns.Contains(key))
                        {
                            allowed = true;
                        }
                        if (allowed)
                        {
                            output.Add(key, pair.entries[key]);
                        }
                    }
                }
            }

            foreach (PropertyEntryColumn c in columnList)
            {
                if (!output.ContainsKey(c))
                {
                    PropertyEntry pe = new PropertyEntry(c, "", c.toColumnCaption(false), c.getDescriptionForKey());
                    output.Add(c, pe);
                }
            }

            //pel.Sort((x, y) => x.priority.CompareTo(y.priority));

            return(output);
        }
Example #3
0
        /// <summary>
        /// Builds the data table with columns specified - order of columns as specified
        /// </summary>
        /// <param name="columns">The columns.</param>
        /// <returns></returns>
        public DataTable getDataTable(params PropertyEntryColumn[] columns)
        {
            DataTable  output        = new DataTable();
            DataColumn dc_importance = null;

            output.TableName = name;

            //output.SetTitle(name);
            output.ExtendedProperties[templateFieldDataTable.description] = description;

            output.ExtendedProperties[templateFieldDataTable.data_rowcounttotal] = Count;

            // output.ExtendedProperties[templateFieldStyling.color_paletteRole] = palete;

            List <PropertyEntryColumn> columnList = columns.ToList();

            if ((!columnList.Any()) || columnList.Contains(PropertyEntryColumn.none))
            {
                columnList = defaultTableColumn.getEnumListFromFlags <PropertyEntryColumn>();
            }

            Int32 ci = 0;

            foreach (PropertyEntryColumn column in columnList)
            {
                if (column != PropertyEntryColumn.none)
                {
                    DataColumn dc = output.Columns.Add();
                    column.setDataColumn(dc);
                    if (column == PropertyEntryColumn.entry_importance)
                    {
                        dc_importance = dc;
                    }
                }
            }
            if (autoIncludeImportance)
            {
                if (dc_importance == null)
                {
                    DataColumn dc = output.Columns.Add();
                    PropertyEntryColumn.entry_importance.setDataColumn(dc);
                    dc.ExtendedProperties[templateFieldStyling.render_isHidden] = true;
                    dc_importance = dc;
                }
            }

            PropertyEntry entryMeta        = null;
            String        autocount_format = "D2";

            if (Count > 99)
            {
                autocount_format = "D3";
            }

            List <PropertyEntry> pel = entries.Values.ToList();

            pel.Sort((x, y) => x.priority.CompareTo(y.priority));
            Int32 c = 1;

            foreach (PropertyEntry entry in pel)
            {
                DataRow dr = output.NewRow();

                //entryMeta = entries[entry[PropertyEntryColumn.entry_key];

                foreach (DataColumn dc in output.Columns)
                {
                    PropertyEntryColumn column = (PropertyEntryColumn)dc.ExtendedProperties[templateFieldDataTable.col_name];
                    Object vl = "--";

                    switch (column)
                    {
                    case PropertyEntryColumn.autocount_idcolumn:
                        vl = c.ToString(autocount_format);
                        break;

                    default:
                        vl = entry.getColumn(column, this[entry[PropertyEntryColumn.entry_key]]);
                        break;
                    }

                    if (imbSciStringExtensions.isNullOrEmptyString(vl))
                    {
                        vl = "    ";
                    }

                    if (column == PropertyEntryColumn.autocount_idcolumn)
                    {
                        vl = c;
                    }

                    dr[dc] = vl;
                }
                output.Rows.Add(dr);
                c++;
            }

            return(output);
        }