Browse Source

Added some utility functions

Kenric Nugteren 5 months ago
parent
commit
e7a93780fa

+ 18 - 0
InABox.Core/Objects/AutoEntity/AutoEntityUnionGenerator.cs

@@ -88,6 +88,24 @@ namespace InABox.Core
             return this;
         }
         
+        public AutoEntityUnionTable<TInterface, TEntity> AliasField<TType>(Expression<Func<TInterface, object?>> target, IComplexFormulaNode<TEntity, TType> source)
+        {
+            var _tgt = new Column<TInterface>(target);
+            var _src = new ComplexColumn<TEntity, TType>(_tgt.Property, source); 
+            
+            _mappings.Add(new AutoEntityUnionMapping(_src, _tgt));
+            return this;
+        }
+        
+        public AutoEntityUnionTable<TInterface, TEntity> AliasField(Column<TInterface> target, Column<TEntity> source)
+        {
+            var _node = new ComplexFormulaFieldNode<TEntity, object?>(source.Property);
+            var _src = new ComplexColumn<TEntity, object?>(target.Property, _node); 
+            
+            _mappings.Add(new AutoEntityUnionMapping(_src, target));
+            return this;
+        }
+        
         public AutoEntityUnionTable<TInterface, TEntity> AliasField(Expression<Func<TInterface, object?>> target, string formatString, params Expression<Func<TEntity, object?>>[] fields)
         {
             var _tgt = new Column<TInterface>(target);

+ 10 - 0
InABox.Core/Query/Column.cs

@@ -140,6 +140,16 @@ namespace InABox.Core
             return new Column<TNew>(Property);
         }
 
+        public Column<T> SubColumn<TSub>(Column<TSub> subColumn)
+        {
+            return new Column<T>(Property + "." + subColumn.Property);
+        }
+        public static Column<T> SubColumn<TSub>(Expression<Func<T, TSub>> super, Column<TSub> sub)
+        {
+            var prefix = CoreUtils.GetFullPropertyName(super, ".") + ".";
+            return new Column<T>(prefix + sub.Property);
+        }
+
         public bool TryCast<TNew>([NotNullWhen(true)] out Column<TNew>? newColumn)
         {
             if(DatabaseSchema.Property(typeof(TNew), Property) is IProperty property)

+ 3 - 0
inabox.wpf/DynamicGrid/Grids/BaseDynamicGrid.cs

@@ -996,6 +996,9 @@ public abstract class BaseDynamicGrid : ContentControl, IDynamicGridUIComponentP
         ColumnList.AddRange(ActionColumns.Where(x => x.Position == DynamicActionColumnPosition.End));
 
         OnColumnsLoaded(ColumnList, ColumnGroupings);
+
+        VisibleColumns.Clear();
+        VisibleColumns.AddRange(ColumnList.OfType<DynamicGridColumn>());
         
         UIComponent.RefreshColumns(ColumnList, ColumnGroupings);
     }