using System; using System.Linq; using System.Windows; using Comal.Classes; using InABox.Clients; using InABox.Core; using InABox.DynamicGrid; namespace PRSDesktop { public class JobTrackerGrid : DynamicDataGrid, IJobControl, IDataModelSource { public event DataModelUpdateEvent OnUpdateDataModel; public string SectionName => "Job Trackers"; public DataModel DataModel(Selection selection) { var ids = ExtractValues(x => x.ID, selection).ToArray(); return new BaseDataModel(new Filter(x => x.ID).InList(ids)); } protected override void DoReconfigure(FluentList options) { base.DoReconfigure(options); options .BeginUpdate() .Add(DynamicGridOption.MultiSelect) .Add(DynamicGridOption.SelectColumns) .EndUpdate(); } public Job Job { get; set; } public JobPanelSettings Settings { get; set; } protected override bool CanCreateItems() { return Job.ID != Guid.Empty; } protected override JobTracker CreateItem() { var result = base.CreateItem(); result.JobLink.ID = Job.ID; result.JobLink.Synchronise(Job); return result; } protected override void Reload(Filters criteria, Columns columns, ref SortOrder sort, Action action) { criteria.Add(new Filter(x => x.JobLink.ID).IsEqualTo(Job.ID)); base.Reload(criteria, columns, ref sort, action); } protected override void CustomiseEditor(JobTracker[] items, DynamicGridColumn column, BaseEditor editor) { if (String.Equals(column.ColumnName, "JobLink.ID")) editor.Editable = Editable.Hidden; base.CustomiseEditor(items, column, editor); } } }