|
@@ -16,277 +16,276 @@ using MessageBox = System.Windows.MessageBox;
|
|
|
using OpenFileDialog = Microsoft.Win32.OpenFileDialog;
|
|
|
using SaveFileDialog = Microsoft.Win32.SaveFileDialog;
|
|
|
|
|
|
-namespace PRS.Shared
|
|
|
+namespace PRS.Shared;
|
|
|
+
|
|
|
+internal class ScheduleItemGrid : DynamicDataGrid<Schedule>//, IDefaultGrid
|
|
|
{
|
|
|
- internal class ScheduleItemGrid : DynamicDataGrid<Schedule>
|
|
|
+ private readonly BitmapImage disabled = PRS.Shared.Resources.disabled.AsBitmapImage();
|
|
|
+
|
|
|
+ private readonly BitmapImage tick = PRS.Shared.Resources.tick.AsBitmapImage();
|
|
|
+
|
|
|
+ protected override void Init()
|
|
|
+ {
|
|
|
+ base.Init();
|
|
|
+ ActionColumns.Add(new DynamicTickColumn<Schedule, bool>(x => x.Active, tick, tick, disabled, CheckClick));
|
|
|
+ HiddenColumns.Add(x => x.Active);
|
|
|
+ HiddenColumns.Add(x => x.Title);
|
|
|
+ HiddenColumns.Add(x => x.DocumentClass);
|
|
|
+
|
|
|
+ AddButton("Export", PRS.Shared.Resources.download.AsBitmapImage(), SaveSchedules);
|
|
|
+ AddButton("Import", PRS.Shared.Resources.upload.AsBitmapImage(), LoadSchedules);
|
|
|
+ }
|
|
|
+
|
|
|
+ protected override void DoReconfigure(DynamicGridOptions options)
|
|
|
{
|
|
|
- private readonly BitmapImage disabled = PRS.Shared.Resources.disabled.AsBitmapImage();
|
|
|
+ base.DoReconfigure(options);
|
|
|
+ options.RecordCount = true;
|
|
|
+ options.SelectColumns = true;
|
|
|
+ options.MultiSelect = true;
|
|
|
+ }
|
|
|
|
|
|
- private readonly BitmapImage tick = PRS.Shared.Resources.tick.AsBitmapImage();
|
|
|
+ public CoreTable Schedules { get; set; }
|
|
|
|
|
|
- protected override void Init()
|
|
|
- {
|
|
|
- base.Init();
|
|
|
- ActionColumns.Add(new DynamicTickColumn<Schedule, bool>(x => x.Active, tick, tick, disabled, CheckClick));
|
|
|
- HiddenColumns.Add(x => x.Active);
|
|
|
- HiddenColumns.Add(x => x.Title);
|
|
|
- HiddenColumns.Add(x => x.DocumentClass);
|
|
|
-
|
|
|
- AddButton("Export", PRS.Shared.Resources.download.AsBitmapImage(), SaveSchedules);
|
|
|
- AddButton("Import", PRS.Shared.Resources.upload.AsBitmapImage(), LoadSchedules);
|
|
|
- }
|
|
|
+ public Type DocumentType { get; set; }
|
|
|
+ public Guid DocumentID { get; set; }
|
|
|
|
|
|
- protected override void DoReconfigure(DynamicGridOptions options)
|
|
|
+ private bool LoadSchedules(Button sender, CoreRow[] rows)
|
|
|
+ {
|
|
|
+ if (rows.Length != 1)
|
|
|
{
|
|
|
- base.DoReconfigure(options);
|
|
|
- options.RecordCount = true;
|
|
|
- options.SelectColumns = true;
|
|
|
- options.MultiSelect = true;
|
|
|
+ MessageBox.Show("Please select only one row to process");
|
|
|
+ return false;
|
|
|
}
|
|
|
|
|
|
- public CoreTable Schedules { get; set; }
|
|
|
-
|
|
|
- public Type DocumentType { get; set; }
|
|
|
- public Guid DocumentID { get; set; }
|
|
|
+ var row = rows.First();
|
|
|
|
|
|
- private bool LoadSchedules(Button sender, CoreRow[] rows)
|
|
|
+ var dlg = new OpenFileDialog();
|
|
|
+ dlg.Filter = "PRS Schedule Files (*.schedule)|*.schedule";
|
|
|
+ if (dlg.ShowDialog() == true)
|
|
|
{
|
|
|
- if (rows.Length != 1)
|
|
|
+ Progress.Show("");
|
|
|
+ var json = File.ReadAllText(dlg.FileName);
|
|
|
+ Schedule[] schedules = { };
|
|
|
+ try
|
|
|
{
|
|
|
- MessageBox.Show("Please select only one row to process");
|
|
|
- return false;
|
|
|
+ schedules = Serialization.Deserialize<Schedule[]>(json);
|
|
|
}
|
|
|
-
|
|
|
- var row = rows.First();
|
|
|
-
|
|
|
- var dlg = new OpenFileDialog();
|
|
|
- dlg.Filter = "PRS Schedule Files (*.schedule)|*.schedule";
|
|
|
- if (dlg.ShowDialog() == true)
|
|
|
+ catch
|
|
|
{
|
|
|
- Progress.Show("");
|
|
|
- var json = File.ReadAllText(dlg.FileName);
|
|
|
- Schedule[] schedules = { };
|
|
|
- try
|
|
|
- {
|
|
|
- schedules = Serialization.Deserialize<Schedule[]>(json);
|
|
|
- }
|
|
|
- catch
|
|
|
- {
|
|
|
- Progress.Close();
|
|
|
- MessageBox.Show("[" + Path.GetFileName(dlg.FileName) + "] is not a valid schedule file!");
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- if (!schedules.Any())
|
|
|
- {
|
|
|
- Progress.Close();
|
|
|
- MessageBox.Show("[" + Path.GetFileName(dlg.FileName) + "] does not contain any schedules!");
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- foreach (var schedule in schedules)
|
|
|
- {
|
|
|
- schedule.DocumentID = DocumentID;
|
|
|
- schedule.DocumentClass = DocumentType.EntityName();
|
|
|
- schedule.ID = Guid.Empty;
|
|
|
- schedule.Active = false;
|
|
|
- schedule.DueDate = DateTime.MinValue;
|
|
|
- }
|
|
|
-
|
|
|
- new Client<Schedule>().Save(schedules, "Imported from [" + Path.GetFileName(dlg.FileName) + "]");
|
|
|
Progress.Close();
|
|
|
- MessageBox.Show(string.Format("{0} schedules loaded from [{1}]", schedules.Length, Path.GetFileName(dlg.FileName)));
|
|
|
+ MessageBox.Show("[" + Path.GetFileName(dlg.FileName) + "] is not a valid schedule file!");
|
|
|
+ return false;
|
|
|
}
|
|
|
|
|
|
- return true;
|
|
|
- }
|
|
|
-
|
|
|
- private bool SaveSchedules(Button sender, CoreRow[] rows)
|
|
|
- {
|
|
|
- if (rows.Any())
|
|
|
+ if (!schedules.Any())
|
|
|
{
|
|
|
- MessageBox.Show("Please select at least one schedule before Exporting!");
|
|
|
+ Progress.Close();
|
|
|
+ MessageBox.Show("[" + Path.GetFileName(dlg.FileName) + "] does not contain any schedules!");
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- var names = new List<string>();
|
|
|
- rows.ForEach(r => names.Add(r.Get<Schedule, string>(c => c.Title)));
|
|
|
- var filename = DocumentType.Name + " (" + string.Join(" + ", names) + ")";
|
|
|
- Path.GetInvalidFileNameChars().ForEach(c => filename = filename.Replace(c.ToString(), ""));
|
|
|
- Path.GetInvalidPathChars().ForEach(c => filename = filename.Replace(c.ToString(), ""));
|
|
|
-
|
|
|
- var dlg = new SaveFileDialog();
|
|
|
- dlg.Filter = "PRS Schedule Files (*.schedule)|*.schedule";
|
|
|
- dlg.FileName = filename + ".schedule";
|
|
|
- dlg.AddExtension = false;
|
|
|
- if (dlg.ShowDialog() == true)
|
|
|
+ foreach (var schedule in schedules)
|
|
|
{
|
|
|
- Progress.Show("");
|
|
|
-
|
|
|
- Filter<Schedule> filter = null;
|
|
|
- foreach (var schedule in SelectedRows)
|
|
|
- if (filter == null)
|
|
|
- filter = new Filter<Schedule>(x => x.ID).IsEqualTo(schedule.Get<Schedule, Guid>(x => x.ID));
|
|
|
- else
|
|
|
- filter = filter.Or(x => x.ID).IsEqualTo(schedule.Get<Schedule, Guid>(x => x.ID));
|
|
|
-
|
|
|
- var schedules = new Client<Schedule>().Load(filter);
|
|
|
- foreach (var schedule in schedules)
|
|
|
- {
|
|
|
- schedule.DocumentID = DocumentID;
|
|
|
- schedule.DocumentClass = DocumentType.EntityName();
|
|
|
- schedule.ID = Guid.Empty;
|
|
|
- schedule.Active = false;
|
|
|
- schedule.DueDate = DateTime.MinValue;
|
|
|
- }
|
|
|
-
|
|
|
- var json = Serialization.Serialize(schedules);
|
|
|
- File.WriteAllText(dlg.FileName + ".schedule", json);
|
|
|
- Progress.Close();
|
|
|
- MessageBox.Show(string.Format("{0} schedules saved to [{1}]", SelectedRows.Length, Path.GetFileName(dlg.FileName)));
|
|
|
+ schedule.DocumentID = DocumentID;
|
|
|
+ schedule.DocumentClass = DocumentType.EntityName();
|
|
|
+ schedule.ID = Guid.Empty;
|
|
|
+ schedule.Active = false;
|
|
|
+ schedule.DueDate = DateTime.MinValue;
|
|
|
}
|
|
|
|
|
|
+ new Client<Schedule>().Save(schedules, "Imported from [" + Path.GetFileName(dlg.FileName) + "]");
|
|
|
+ Progress.Close();
|
|
|
+ MessageBox.Show(string.Format("{0} schedules loaded from [{1}]", schedules.Length, Path.GetFileName(dlg.FileName)));
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ private bool SaveSchedules(Button sender, CoreRow[] rows)
|
|
|
+ {
|
|
|
+ if (rows.Any())
|
|
|
+ {
|
|
|
+ MessageBox.Show("Please select at least one schedule before Exporting!");
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- private bool CheckClick(CoreRow row)
|
|
|
+ var names = new List<string>();
|
|
|
+ rows.ForEach(r => names.Add(r.Get<Schedule, string>(c => c.Title)));
|
|
|
+ var filename = DocumentType.Name + " (" + string.Join(" + ", names) + ")";
|
|
|
+ Path.GetInvalidFileNameChars().ForEach(c => filename = filename.Replace(c.ToString(), ""));
|
|
|
+ Path.GetInvalidPathChars().ForEach(c => filename = filename.Replace(c.ToString(), ""));
|
|
|
+
|
|
|
+ var dlg = new SaveFileDialog();
|
|
|
+ dlg.Filter = "PRS Schedule Files (*.schedule)|*.schedule";
|
|
|
+ dlg.FileName = filename + ".schedule";
|
|
|
+ dlg.AddExtension = false;
|
|
|
+ if (dlg.ShowDialog() == true)
|
|
|
{
|
|
|
- var Due = row.Get<Schedule, DateTime>(x => x.DueDate);
|
|
|
- if (Due.Equals(DateTime.MinValue))
|
|
|
- {
|
|
|
- MessageBox.Show("Schedule must have a due date!");
|
|
|
- return false;
|
|
|
- }
|
|
|
+ Progress.Show("");
|
|
|
|
|
|
- using (var client = new Client<Schedule>())
|
|
|
+ Filter<Schedule> filter = null;
|
|
|
+ foreach (var schedule in SelectedRows)
|
|
|
+ if (filter == null)
|
|
|
+ filter = new Filter<Schedule>(x => x.ID).IsEqualTo(schedule.Get<Schedule, Guid>(x => x.ID));
|
|
|
+ else
|
|
|
+ filter = filter.Or(x => x.ID).IsEqualTo(schedule.Get<Schedule, Guid>(x => x.ID));
|
|
|
+
|
|
|
+ var schedules = new Client<Schedule>().Load(filter);
|
|
|
+ foreach (var schedule in schedules)
|
|
|
{
|
|
|
- var schedule = client.Query(
|
|
|
- new Filter<Schedule>(x => x.ID).IsEqualTo(row.Get<Schedule, Guid>(x => x.ID)),
|
|
|
- Columns.Required<Schedule>().Add(x => x.Active))
|
|
|
- .ToObjects<Schedule>().First();
|
|
|
- schedule.Active = !schedule.Active;
|
|
|
- client.Save(schedule, schedule.Active ? "Activated Schedule" : "Disabled Schedule");
|
|
|
+ schedule.DocumentID = DocumentID;
|
|
|
+ schedule.DocumentClass = DocumentType.EntityName();
|
|
|
+ schedule.ID = Guid.Empty;
|
|
|
+ schedule.Active = false;
|
|
|
+ schedule.DueDate = DateTime.MinValue;
|
|
|
}
|
|
|
|
|
|
- return true;
|
|
|
+ var json = Serialization.Serialize(schedules);
|
|
|
+ File.WriteAllText(dlg.FileName + ".schedule", json);
|
|
|
+ Progress.Close();
|
|
|
+ MessageBox.Show(string.Format("{0} schedules saved to [{1}]", SelectedRows.Length, Path.GetFileName(dlg.FileName)));
|
|
|
}
|
|
|
|
|
|
- protected override void Reload(
|
|
|
- Filters<Schedule> criteria, Columns<Schedule> columns, ref SortOrder<Schedule>? sort,
|
|
|
- CancellationToken token, Action<CoreTable?, Exception?> action)
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ private bool CheckClick(CoreRow row)
|
|
|
+ {
|
|
|
+ var Due = row.Get<Schedule, DateTime>(x => x.DueDate);
|
|
|
+ if (Due.Equals(DateTime.MinValue))
|
|
|
{
|
|
|
- criteria.Add(new Filter<Schedule>(x => x.DocumentID).IsEqualTo(DocumentID));
|
|
|
- sort = new SortOrder<Schedule>(x => x.DueDate);
|
|
|
- base.Reload(criteria, columns, ref sort, token, action);
|
|
|
+ MessageBox.Show("Schedule must have a due date!");
|
|
|
+ return false;
|
|
|
}
|
|
|
|
|
|
- public override Schedule CreateItem()
|
|
|
+ using (var client = new Client<Schedule>())
|
|
|
{
|
|
|
- if(DocumentType is null)
|
|
|
- {
|
|
|
- throw new Exception("Cannot create item when DocumentType is null.");
|
|
|
- }
|
|
|
-
|
|
|
- var schedule = base.CreateItem();
|
|
|
- schedule.DocumentClass = DocumentType.EntityName();
|
|
|
- schedule.DocumentID = DocumentID;
|
|
|
- if (DocumentType == typeof(CustomModule) || DocumentType == typeof(ScheduledScript))
|
|
|
- schedule.ScheduleType = ScheduleType.None;
|
|
|
- return schedule;
|
|
|
+ var schedule = client.Query(
|
|
|
+ new Filter<Schedule>(x => x.ID).IsEqualTo(row.Get<Schedule, Guid>(x => x.ID)),
|
|
|
+ Columns.Required<Schedule>().Add(x => x.Active))
|
|
|
+ .ToObjects<Schedule>().First();
|
|
|
+ schedule.Active = !schedule.Active;
|
|
|
+ client.Save(schedule, schedule.Active ? "Activated Schedule" : "Disabled Schedule");
|
|
|
}
|
|
|
|
|
|
- public override void SaveItem(Schedule item)
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ protected override void Reload(
|
|
|
+ Filters<Schedule> criteria, Columns<Schedule> columns, ref SortOrder<Schedule>? sort,
|
|
|
+ CancellationToken token, Action<CoreTable?, Exception?> action)
|
|
|
+ {
|
|
|
+ criteria.Add(new Filter<Schedule>(x => x.DocumentID).IsEqualTo(DocumentID));
|
|
|
+ sort = new SortOrder<Schedule>(x => x.DueDate);
|
|
|
+ base.Reload(criteria, columns, ref sort, token, action);
|
|
|
+ }
|
|
|
+
|
|
|
+ public override Schedule CreateItem()
|
|
|
+ {
|
|
|
+ if(DocumentType is null)
|
|
|
{
|
|
|
- if(DocumentType is not null)
|
|
|
- {
|
|
|
- item.DocumentClass = DocumentType.EntityName();
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- if (string.IsNullOrWhiteSpace(item.DocumentClass))
|
|
|
- {
|
|
|
- throw new Exception("Cannot save item when DocumentType is null.");
|
|
|
- }
|
|
|
- }
|
|
|
- base.SaveItem(item);
|
|
|
+ throw new Exception("Cannot create item when DocumentType is null.");
|
|
|
}
|
|
|
|
|
|
- protected override void DoReconfigureEditors(DynamicEditorGrid grid, Schedule[] items)
|
|
|
- {
|
|
|
- base.DoReconfigureEditors(grid, items);
|
|
|
+ var schedule = base.CreateItem();
|
|
|
+ schedule.DocumentClass = DocumentType.EntityName();
|
|
|
+ schedule.DocumentID = DocumentID;
|
|
|
+ if (DocumentType == typeof(CustomModule) || DocumentType == typeof(ScheduledScript))
|
|
|
+ schedule.ScheduleType = ScheduleType.None;
|
|
|
+ return schedule;
|
|
|
+ }
|
|
|
|
|
|
- var frequency = grid.FindEditor("Frequency");
|
|
|
- if (frequency != null)
|
|
|
+ public override void SaveItem(Schedule item)
|
|
|
+ {
|
|
|
+ if(DocumentType is not null)
|
|
|
+ {
|
|
|
+ item.DocumentClass = DocumentType.EntityName();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (string.IsNullOrWhiteSpace(item.DocumentClass))
|
|
|
{
|
|
|
- var freq = (int)frequency.GetValue("Frequency");
|
|
|
- var period = grid.FindEditor("Period");
|
|
|
- period?.SetEnabled(freq > 0);
|
|
|
- var due = grid.FindEditor("DueDate");
|
|
|
- due?.SetEnabled(freq > 0);
|
|
|
+ throw new Exception("Cannot save item when DocumentType is null.");
|
|
|
}
|
|
|
+ }
|
|
|
+ base.SaveItem(item);
|
|
|
+ }
|
|
|
|
|
|
- var threshold = grid.FindEditor("Threshold");
|
|
|
- if (threshold != null)
|
|
|
- {
|
|
|
- var thresh = (int)threshold.GetValue("Threshold");
|
|
|
- var trigger = grid.FindEditor("Trigger");
|
|
|
- trigger?.SetEnabled(thresh > 0);
|
|
|
- var next = grid.FindEditor("DueThreshold");
|
|
|
- next?.SetEnabled(thresh > 0);
|
|
|
- }
|
|
|
+ protected override void DoReconfigureEditors(DynamicEditorGrid grid, Schedule[] items)
|
|
|
+ {
|
|
|
+ base.DoReconfigureEditors(grid, items);
|
|
|
|
|
|
- var scheduleTypeEditor = grid.FindEditor("ScheduleType");
|
|
|
- if(scheduleTypeEditor != null)
|
|
|
- {
|
|
|
- var scheduleType = (ScheduleType)scheduleTypeEditor.GetValue("ScheduleType");
|
|
|
- var taskTypeEditor = grid.FindEditor(nameof(Schedule.KanbanType));
|
|
|
- taskTypeEditor?.SetEnabled(scheduleType == ScheduleType.Task);
|
|
|
- }
|
|
|
+ var frequency = grid.FindEditor("Frequency");
|
|
|
+ if (frequency != null)
|
|
|
+ {
|
|
|
+ var freq = (int)frequency.GetValue("Frequency");
|
|
|
+ var period = grid.FindEditor("Period");
|
|
|
+ period?.SetEnabled(freq > 0);
|
|
|
+ var due = grid.FindEditor("DueDate");
|
|
|
+ due?.SetEnabled(freq > 0);
|
|
|
}
|
|
|
|
|
|
- protected override BaseEditor? GetEditor(object item, DynamicGridColumn column)
|
|
|
+ var threshold = grid.FindEditor("Threshold");
|
|
|
+ if (threshold != null)
|
|
|
{
|
|
|
- var types = new List<Type> { typeof(CustomModule), typeof(ScheduledScript), typeof(Employee), typeof(Equipment) };
|
|
|
+ var thresh = (int)threshold.GetValue("Threshold");
|
|
|
+ var trigger = grid.FindEditor("Trigger");
|
|
|
+ trigger?.SetEnabled(thresh > 0);
|
|
|
+ var next = grid.FindEditor("DueThreshold");
|
|
|
+ next?.SetEnabled(thresh > 0);
|
|
|
+ }
|
|
|
|
|
|
- var columns = new List<string> { "ScheduleType" };
|
|
|
- var schedule = (Schedule)item;
|
|
|
+ var scheduleTypeEditor = grid.FindEditor("ScheduleType");
|
|
|
+ if(scheduleTypeEditor != null)
|
|
|
+ {
|
|
|
+ var scheduleType = (ScheduleType)scheduleTypeEditor.GetValue("ScheduleType");
|
|
|
+ var taskTypeEditor = grid.FindEditor(nameof(Schedule.KanbanType));
|
|
|
+ taskTypeEditor?.SetEnabled(scheduleType == ScheduleType.Task);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- var documentType = schedule.DocumentType();
|
|
|
- if (documentType == typeof(CustomModule) || documentType == typeof(ScheduledScript))
|
|
|
- columns.AddRange(new[]
|
|
|
- {
|
|
|
- "Description", "LeadTime", "EmployeeLink.ID", "ManagerLink.ID", "Report.ID", "Threshold", "Trigger", "DueThreshold", "Rollover",
|
|
|
- "QAForm"
|
|
|
- });
|
|
|
+ protected override BaseEditor? GetEditor(object item, DynamicGridColumn column)
|
|
|
+ {
|
|
|
+ var types = new List<Type> { typeof(CustomModule), typeof(ScheduledScript), typeof(Employee), typeof(Equipment) };
|
|
|
|
|
|
- else if (documentType == typeof(Employee))
|
|
|
- columns.AddRange(new[] { "Description", "EmployeeLink.ID", "Threshold", "Trigger", "DueThreshold" });
|
|
|
+ var columns = new List<string> { "ScheduleType" };
|
|
|
+ var schedule = (Schedule)item;
|
|
|
|
|
|
- else if (documentType == typeof(Customer))
|
|
|
- columns.AddRange(new[] { "Threshold", "Trigger", "DueThreshold" });
|
|
|
+ var documentType = schedule.DocumentType();
|
|
|
+ if (documentType == typeof(CustomModule) || documentType == typeof(ScheduledScript))
|
|
|
+ columns.AddRange(new[]
|
|
|
+ {
|
|
|
+ "Description", "LeadTime", "EmployeeLink.ID", "ManagerLink.ID", "Report.ID", "Threshold", "Trigger", "DueThreshold", "Rollover",
|
|
|
+ "QAForm"
|
|
|
+ });
|
|
|
|
|
|
+ else if (documentType == typeof(Employee))
|
|
|
+ columns.AddRange(new[] { "Description", "EmployeeLink.ID", "Threshold", "Trigger", "DueThreshold" });
|
|
|
|
|
|
- if (types.Contains(documentType) && columns.Contains(column.ColumnName))
|
|
|
- return new NullEditor();
|
|
|
- return base.GetEditor(item, column);
|
|
|
- }
|
|
|
+ else if (documentType == typeof(Customer))
|
|
|
+ columns.AddRange(new[] { "Threshold", "Trigger", "DueThreshold" });
|
|
|
|
|
|
- public override DynamicEditorPages LoadEditorPages(Schedule item)
|
|
|
- {
|
|
|
- var pages = base.LoadEditorPages(item);
|
|
|
- foreach (var page in pages.ToArray())
|
|
|
- {
|
|
|
- if (page is IDynamicOneToManyGrid<Schedule, Kanban> && item.ScheduleType != ScheduleType.Task)
|
|
|
- pages = new DynamicEditorPages(pages.Where(x => x != page));
|
|
|
- else if (page is IDynamicOneToManyGrid<Schedule, Job> && item.ScheduleType != ScheduleType.Job)
|
|
|
- pages = new DynamicEditorPages(pages.Where(x => x != page));
|
|
|
- }
|
|
|
- return pages;
|
|
|
- }
|
|
|
|
|
|
- protected override void DefineLookups(ILookupEditorControl sender, Schedule[] items, bool async = true)
|
|
|
+ if (types.Contains(documentType) && columns.Contains(column.ColumnName))
|
|
|
+ return new NullEditor();
|
|
|
+ return base.GetEditor(item, column);
|
|
|
+ }
|
|
|
+
|
|
|
+ public override DynamicEditorPages LoadEditorPages(Schedule item)
|
|
|
+ {
|
|
|
+ var pages = base.LoadEditorPages(item);
|
|
|
+ foreach (var page in pages.ToArray())
|
|
|
{
|
|
|
- base.DefineLookups(sender, items, async);
|
|
|
+ if (page is IDynamicOneToManyGrid<Schedule, Kanban> && item.ScheduleType != ScheduleType.Task)
|
|
|
+ pages = new DynamicEditorPages(pages.Where(x => x != page));
|
|
|
+ else if (page is IDynamicOneToManyGrid<Schedule, Job> && item.ScheduleType != ScheduleType.Job)
|
|
|
+ pages = new DynamicEditorPages(pages.Where(x => x != page));
|
|
|
}
|
|
|
+ return pages;
|
|
|
+ }
|
|
|
+
|
|
|
+ protected override void DefineLookups(ILookupEditorControl sender, Schedule[] items, bool async = true)
|
|
|
+ {
|
|
|
+ base.DefineLookups(sender, items, async);
|
|
|
}
|
|
|
}
|