/// <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); }
/// <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); }