Explorar o código

Implemented EntityFormLookups to sort by Form Number

frogsoftware hai 1 ano
pai
achega
7f33ab3413

+ 3 - 1
InABox.Core/DataModel/DataModel.cs

@@ -428,10 +428,12 @@ namespace InABox.Core
 
             var newColumns = _tables[tableName].Columns as Columns<TType>;
 
+            var newSort = LookupFactory.DefineSort<TType>();
+
             IQueryDef? query = null;
             requiredQueries?.TryGetValue(tableName, out query);
 
-            if (query == null) return new QueryDef<TType>(newFilter, newColumns, null);
+            if (query == null) return new QueryDef<TType>(newFilter, newColumns, newSort);
 
             if (query.Columns != null) newColumns = query.Columns as Columns<TType>;
             return new QueryDef<TType>(

+ 13 - 0
InABox.Core/DigitalForms/Forms/DigitalFormInstanceLookups.cs

@@ -0,0 +1,13 @@
+namespace InABox.Core
+{
+    public abstract class DigitalFormInstanceLookups<TEntity,TLink,TForm> : EntityLookup<TForm> 
+        where TEntity : Entity
+        where TLink : IEntityLink<TEntity>, new()
+        where TForm : EntityForm<TEntity,TLink,TForm>, new()
+    {
+        public override Filter<TForm>? DefineFilter() => null;
+
+        public override SortOrder<TForm> DefineSortOrder() =>
+            new SortOrder<TForm>(x => x.Number, SortDirection.Ascending);
+    }
+}

+ 5 - 0
InABox.Core/ILookupDefinition.cs

@@ -68,6 +68,7 @@ namespace InABox.Core
         public IColumns DefineColumns();
         public IFilter? DefineFilter(BaseObject[] items);
         public IColumns DefineFilterColumns();
+        public ISortOrder? DefineSortOrder();
         public void OnCreateItem(BaseObject[] parent, BaseObject lookup);
     }
 
@@ -94,6 +95,8 @@ namespace InABox.Core
         {
         }
 
+        public virtual SortOrder<TEntity>? DefineSortOrder() => null;
+
         void ILookupDefinitionGenerator.OnCreateItem(BaseObject[] parents, BaseObject lookup) => OnCreateItem(parents as TEntity[], lookup as TLookup);
 
         IColumns ILookupDefinitionGenerator.DefineColumns() => DefineColumns();
@@ -101,6 +104,8 @@ namespace InABox.Core
         IFilter? ILookupDefinitionGenerator.DefineFilter(BaseObject[] items) => DefineFilter(items as TEntity[]);
 
         IColumns ILookupDefinitionGenerator.DefineFilterColumns() => DefineFilterColumns();
+
+        ISortOrder? ILookupDefinitionGenerator.DefineSortOrder() => DefineSortOrder();
     }
 
     public static class LookupFactory