using System; using System.Collections.Generic; using System.Linq; using InABox.Configuration; using InABox.Core; using InABox.DynamicGrid; namespace PRSDesktop.Forms.Export { internal class ExportColumns : IGlobalConfigurationSettings { public List Columns { get; set; } } internal class ExportGrid : DynamicGrid { private ExportColumns _columns = new(); private readonly Dictionary _properties; private readonly Type _Type; public ExportGrid(Type type) { _Type = type; _properties = CoreUtils.PropertyList(_Type, x => true, true); Options.AddRange(DynamicGridOption.RecordCount); ActionColumns.Add(new DynamicRowMovementColumn(DynamicRowMovement.Up, SwapRows)); ActionColumns.Add(new DynamicRowMovementColumn(DynamicRowMovement.Down, SwapRows)); } private bool SwapRows(int arg1, int arg2) { var item = _columns.Columns[arg1]; _columns.Columns.Remove(item); _columns.Columns.Insert(arg2, item); return true; } private DynamicGridColumns ExportGrid_OnLoadColumns(object sender, DynamicGridColumns master) { var columns = new DynamicGridColumns(); columns.Add(new DynamicGridColumn { ColumnName = "Name", /* Type = typeof(String), */ Width = 0 }); var col = new DynamicGridColumn { ColumnName = "Property", /* Type = typeof(String), */ Width = 0 }; foreach (var key in _properties.Keys) col.Lookups[key] = key; columns.Add(col); columns.Add(new DynamicGridColumn { ColumnName = "Format", /* Type = typeof(String), */ Width = 50 }); return columns; } protected override void Reload(Filters criteria, Columns columns, ref SortOrder sort, Action action) { _columns = new GlobalConfiguration(_Type.Name).Load(); if (_columns.Columns == null || _columns.Columns.Count == 0) { if (_columns.Columns == null) _columns.Columns = new List(); foreach (var prop in _properties.Keys) _columns.Columns.Add(new ExportColumn { Property = prop, Name = prop, Format = "" }); new GlobalConfiguration(_Type.Name).Save(_columns); } var result = new CoreTable(); result.LoadColumns(typeof(ExportColumn)); result.LoadRows(_columns.Columns); action.Invoke(result, null); } //protected override DataTable Reload(Dictionary criteria, List columns, string sort) //{ // _columns = new GlobalConfiguration(_Type.Name).Load(); // if ((_columns.Columns == null) || (_columns.Columns.Count == 0)) // { // if (_columns.Columns == null) // _columns.Columns = new List(); // foreach (String prop in _properties.Keys) // _columns.Columns.Add(new ExportColumn() { Property = prop, Name = prop, Format = "" }); // new GlobalConfiguration(_Type.Name).Save(_columns); // } // DataTable result = new DataTable(); // result.LoadColumns(typeof(ExportColumn)); // result.LoadRows(_columns.Columns); // return result; //} protected override ExportColumn LoadItem(CoreRow row) { var index = Data.Rows.IndexOf(row); return _columns.Columns[index]; } public override void SaveItem(ExportColumn item) { new GlobalConfiguration(_Type.Name).Save(_columns); } protected override void DeleteItems(params CoreRow[] rows) { foreach (var row in rows.OrderByDescending(x => x.Index)) _columns.Columns.RemoveAt(row.Index); new GlobalConfiguration(_Type.Name).Save(_columns); } } }