|
|
@@ -0,0 +1,54 @@
|
|
|
+using InABox.Clients;
|
|
|
+using InABox.Core;
|
|
|
+using Syncfusion.SfDataGrid.XForms;
|
|
|
+using System;
|
|
|
+using System.Collections.Generic;
|
|
|
+using System.Linq;
|
|
|
+using System.Text;
|
|
|
+using Xamarin.Forms;
|
|
|
+
|
|
|
+namespace comal.timesheets
|
|
|
+{
|
|
|
+ public abstract class MobileGrid<TEntity> : SfDataGrid, BaseMobileGrid<TEntity> where TEntity : Entity, IRemotable, IPersistent, new()
|
|
|
+ {
|
|
|
+ List<string> ColumnNames = new List<string>();
|
|
|
+
|
|
|
+ CoreTable Data;
|
|
|
+
|
|
|
+ public Columns<TEntity> VisibleColumns { get; set; }
|
|
|
+
|
|
|
+ public MobileGrid(Filter<TEntity> filter, Columns<TEntity> columns, SortOrder<TEntity> sortOrder)
|
|
|
+ {
|
|
|
+ Data = new Client<TEntity>().Query(filter, CheckColumns(columns), sortOrder);
|
|
|
+ Grid grid = new Grid();
|
|
|
+ grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) });
|
|
|
+ }
|
|
|
+
|
|
|
+ public void Init(Filter<TEntity> filter, Columns<TEntity> columns, SortOrder<TEntity> sortOrder)
|
|
|
+ {
|
|
|
+ Data = new Client<TEntity>().Query(filter, CheckColumns(columns), sortOrder);
|
|
|
+ }
|
|
|
+
|
|
|
+ private Columns<TEntity> CheckColumns(Columns<TEntity> columns)
|
|
|
+ {
|
|
|
+ foreach (var colname in ColumnNames)
|
|
|
+ {
|
|
|
+ if (!columns.ColumnNames().Contains(colname))
|
|
|
+ columns.Add(new Column<TEntity>(colname));
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!columns.ColumnNames().Contains("ID"))
|
|
|
+ columns.Add(new Column<TEntity>(x => x.ID));
|
|
|
+
|
|
|
+ return columns;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void DefineVisibleColumns(Columns<TEntity> columns)
|
|
|
+ {
|
|
|
+ foreach(var colname in columns.ColumnNames())
|
|
|
+ ColumnNames.Add(colname);
|
|
|
+
|
|
|
+ VisibleColumns = columns;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|