123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading;
- using InABox.Configuration;
- using InABox.Core;
- using InABox.DynamicGrid;
- namespace PRSDesktop.Forms.Export;
- internal class ExportColumns : IGlobalConfigurationSettings
- {
- public List<ExportColumn> Columns { get; set; }
- }
- internal class ExportGrid : DynamicGrid<ExportColumn>
- {
- private ExportColumns _columns = new();
- private readonly Dictionary<string, Type> _properties;
- private readonly Type _Type;
- public ExportGrid(Type type)
- {
- _Type = type;
- _properties = CoreUtils.PropertyList(_Type, x => true, true);
- }
- protected override void Init()
- {
- base.Init();
- ActionColumns.Add(new DynamicRowMovementColumn(DynamicRowMovement.Up, SwapRows));
- ActionColumns.Add(new DynamicRowMovementColumn(DynamicRowMovement.Down, SwapRows));
- }
- protected override void DoReconfigure(DynamicGridOptions options)
- {
- base.DoReconfigure(options);
- options.RecordCount = true;
- }
- 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<ExportColumn>();
- columns.Add(x => x.Name, width: 0);
- columns.Add(x => x.Property, width: 0);
- columns.Add(x => x.Format, width: 50);
- return columns;
- }
- protected override void Reload(
- Filters<ExportColumn> criteria, Columns<ExportColumn> columns, ref SortOrder<ExportColumn>? sort,
- CancellationToken token, Action<CoreTable?, Exception?> action)
- {
- _columns = new GlobalConfiguration<ExportColumns>(_Type.Name).Load();
- if (_columns.Columns == null || _columns.Columns.Count == 0)
- {
- if (_columns.Columns == null)
- _columns.Columns = new List<ExportColumn>();
- foreach (var prop in _properties.Keys)
- _columns.Columns.Add(new ExportColumn { Property = prop, Name = prop, Format = "" });
- new GlobalConfiguration<ExportColumns>(_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<string, object> criteria, List<string> columns, string sort)
- //{
- // _columns = new GlobalConfiguration<ExportColumns>(_Type.Name).Load();
- // if ((_columns.Columns == null) || (_columns.Columns.Count == 0))
- // {
- // if (_columns.Columns == null)
- // _columns.Columns = new List<ExportColumn>();
- // foreach (String prop in _properties.Keys)
- // _columns.Columns.Add(new ExportColumn() { Property = prop, Name = prop, Format = "" });
- // new GlobalConfiguration<ExportColumns>(_Type.Name).Save(_columns);
- // }
- // DataTable result = new DataTable();
- // result.LoadColumns(typeof(ExportColumn));
- // result.LoadRows(_columns.Columns);
- // return result;
- //}
- public override ExportColumn LoadItem(CoreRow row)
- {
- var index = Data.Rows.IndexOf(row);
- return _columns.Columns[index];
- }
- public override void SaveItem(ExportColumn item)
- {
- new GlobalConfiguration<ExportColumns>(_Type.Name).Save(_columns);
- }
- public override void DeleteItems(params CoreRow[] rows)
- {
- foreach (var row in rows.OrderByDescending(x => x.Index))
- _columns.Columns.RemoveAt(row.Index);
- new GlobalConfiguration<ExportColumns>(_Type.Name).Save(_columns);
- }
- }
|