|
@@ -30,6 +30,8 @@ namespace InABox.DynamicGrid
|
|
|
|
|
|
public PageType PageType => PageType.Other;
|
|
|
|
|
|
+ protected DynamicGridCustomColumnsComponent<TMany> ColumnsComponent;
|
|
|
+
|
|
|
public DynamicOneToManyGrid()
|
|
|
{
|
|
|
Ready = false;
|
|
@@ -38,17 +40,7 @@ namespace InABox.DynamicGrid
|
|
|
|
|
|
property = CoreUtils.GetOneToManyProperty(typeof(TMany), typeof(TOne));
|
|
|
|
|
|
- /*var t = typeof(TMany).BaseType;
|
|
|
- if (t != null && t.IsConstructedGenericType && t.GetGenericTypeDefinition() == typeof(EntityForm<,>))
|
|
|
- {
|
|
|
- ActionColumns.Add(new DynamicImageColumn(QAEditImage, QAEditClick));
|
|
|
- if (DynamicGridUtils.PreviewReport != null)
|
|
|
- ActionColumns.Add(new DynamicImageColumn(QAPrintImage, QAPrintClick));
|
|
|
- HiddenColumns.Add(x => (x as IDigitalFormInstance).FormData);
|
|
|
- HiddenColumns.Add(x => (x as IDigitalFormInstance).FormCompleted);
|
|
|
- HiddenColumns.Add(x => (x as IDigitalFormInstance).FormCompletedBy.ID);
|
|
|
- HiddenColumns.Add(x => (x as IDigitalFormInstance).Form.ID);
|
|
|
- }*/
|
|
|
+ ColumnsComponent = new DynamicGridCustomColumnsComponent<TMany>(this, GetTag(), base.LoadColumns);
|
|
|
}
|
|
|
|
|
|
protected override void Init()
|
|
@@ -177,8 +169,6 @@ namespace InABox.DynamicGrid
|
|
|
var prop = (property.GetValue(map) as IEntityLink)!;
|
|
|
prop.ID = Item.ID;
|
|
|
prop.Synchronise(Item);
|
|
|
- //if (map.IsChanged())
|
|
|
- // new Client<TMany>().Save(map, "Updated by User");
|
|
|
}
|
|
|
|
|
|
new Client<TMany>().Save(Items.Where(x => x.IsChanged()), "Updated by User");
|
|
@@ -224,50 +214,17 @@ namespace InABox.DynamicGrid
|
|
|
|
|
|
protected override DynamicGridColumns LoadColumns()
|
|
|
{
|
|
|
- var tag = GetTag();
|
|
|
- var global = Task.Run(() => new GlobalConfiguration<DynamicGridColumns>(tag).Load());
|
|
|
- var user = Task.Run(() => new UserConfiguration<DynamicGridColumns>(tag).Load());
|
|
|
- Task.WaitAll(global, user);
|
|
|
- var columns = user.Result.Any() ? user.Result : global.Result;
|
|
|
- if (columns.Count == 0)
|
|
|
- columns.AddRange(base.LoadColumns().Where(x => !x.ColumnName.StartsWith(property.Name)));
|
|
|
- return columns;
|
|
|
+ return ColumnsComponent.LoadColumns();
|
|
|
}
|
|
|
|
|
|
protected override void SaveColumns(DynamicGridColumns columns)
|
|
|
{
|
|
|
- var tag = GetTag();
|
|
|
- new UserConfiguration<DynamicGridColumns>(tag).Save(columns);
|
|
|
+ ColumnsComponent.SaveColumns(columns);
|
|
|
}
|
|
|
protected override void LoadColumnsMenu(ContextMenu menu)
|
|
|
{
|
|
|
base.LoadColumnsMenu(menu);
|
|
|
- //menu.Items.Add(new Separator());
|
|
|
- var ResetColumns = new MenuItem { Header = "Reset Columns to Default" };
|
|
|
- ResetColumns.Click += ResetColumnsClick;
|
|
|
- menu.Items.Add(ResetColumns);
|
|
|
- if (Security.IsAllowed<CanSetDefaultColumns>())
|
|
|
- {
|
|
|
- menu.Items.Add(new Separator());
|
|
|
- var UpdateDefaultColumns = new MenuItem { Header = "Mark Columns as Default" };
|
|
|
- UpdateDefaultColumns.Click += UpdateDefaultColumnsClick;
|
|
|
- menu.Items.Add(UpdateDefaultColumns);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void ResetColumnsClick(object sender, RoutedEventArgs e)
|
|
|
- {
|
|
|
- VisibleColumns.Clear();
|
|
|
- SaveColumns(VisibleColumns);
|
|
|
- Refresh(true, true);
|
|
|
- }
|
|
|
-
|
|
|
- private void UpdateDefaultColumnsClick(object sender, RoutedEventArgs e)
|
|
|
- {
|
|
|
- var tag = GetTag();
|
|
|
- new GlobalConfiguration<DynamicGridColumns>(tag).Save(VisibleColumns);
|
|
|
- new UserConfiguration<DynamicGridColumns>(tag).Delete();
|
|
|
- Refresh(true, true);
|
|
|
+ ColumnsComponent.LoadColumnsMenu(menu);
|
|
|
}
|
|
|
|
|
|
protected override DynamicGridSettings LoadSettings()
|
|
@@ -277,11 +234,6 @@ namespace InABox.DynamicGrid
|
|
|
var user = Task.Run(() => new UserConfiguration<DynamicGridSettings>(tag).Load());
|
|
|
user.Wait();
|
|
|
|
|
|
- //var global = Task.Run(() => new GlobalConfiguration<DynamicGridSettings>(tag).Load());
|
|
|
- //global.Wait();
|
|
|
- //Task.WaitAll(user, global);
|
|
|
- //var columns = user.Result.Any() ? user.Result : global.Result;
|
|
|
-
|
|
|
return user.Result;
|
|
|
}
|
|
|
protected override void SaveSettings(DynamicGridSettings settings)
|
|
@@ -318,9 +270,6 @@ namespace InABox.DynamicGrid
|
|
|
Items.Add(item);
|
|
|
|
|
|
if (item is ISequenceable) Items = Items.AsQueryable().OrderBy(x => (x as ISequenceable)!.Sequence).ToList();
|
|
|
- //var sort = LookupFactory.DefineSort<TMany>();
|
|
|
- //if (sort != null)
|
|
|
- // Items = Items.AsQueryable().SortBy(sort.Expression).ToList();
|
|
|
}
|
|
|
|
|
|
protected override void DeleteItems(params CoreRow[] rows)
|
|
@@ -335,9 +284,6 @@ namespace InABox.DynamicGrid
|
|
|
protected override void Reload(Filters<TMany> criteria, Columns<TMany> columns, ref SortOrder<TMany>? sort,
|
|
|
Action<CoreTable?, Exception?> action)
|
|
|
{
|
|
|
- //var exp = BaseObject.DefaultSortOrder<TMany>().Expression;
|
|
|
- //Items = Items.AsQueryable().SortBy(exp).To
|
|
|
-
|
|
|
var results = new CoreTable();
|
|
|
results.LoadColumns(typeof(TMany));
|
|
|
|
|
@@ -356,10 +302,6 @@ namespace InABox.DynamicGrid
|
|
|
}
|
|
|
results.LoadRows(Items);
|
|
|
|
|
|
- //if (sort != null)
|
|
|
- // results.LoadRows(Items.AsQueryable().SortBy(sort.Expression));
|
|
|
- //else
|
|
|
- // results.LoadRows(Items.OrderBy(x=>x.Sort));
|
|
|
action.Invoke(results, null);
|
|
|
}
|
|
|
|
|
@@ -371,71 +313,6 @@ namespace InABox.DynamicGrid
|
|
|
return base.GetEditor(item, column);
|
|
|
}
|
|
|
|
|
|
- //protected override void EditorValueChanged(object item, string name, object value, List<String> changes)
|
|
|
- //{
|
|
|
- // Entity entity = (Entity)item;
|
|
|
-
|
|
|
- // Dictionary<String, String> previous = new Dictionary<string, string>();
|
|
|
-
|
|
|
- // if (entity.OriginalValues != null)
|
|
|
- // {
|
|
|
- // foreach (var key in entity.OriginalValues.Keys)
|
|
|
- // previous[key] = entity.OriginalValues.ToString();
|
|
|
- // }
|
|
|
-
|
|
|
- // base.EditorValueChanged(item, name, value, changes);
|
|
|
-
|
|
|
- // if (entity.OriginalValues != null)
|
|
|
- // {
|
|
|
- // foreach (var key in entity.OriginalValues.Keys)
|
|
|
- // {
|
|
|
- // if (key != name)
|
|
|
- // {
|
|
|
- // String oldval = entity.OriginalValues[key] != null ? entity.OriginalValues[key].ToString() : "";
|
|
|
- // if ((!previous.ContainsKey(key)) || (!previous[key].Equals(oldval)))
|
|
|
- // {
|
|
|
- // if (!changes.Contains(key))
|
|
|
- // changes.Add(key);
|
|
|
- // }
|
|
|
- // }
|
|
|
- // }
|
|
|
- // }
|
|
|
- //}
|
|
|
-
|
|
|
- /*private BitmapImage QAPrintImage(CoreRow arg)
|
|
|
- {
|
|
|
- return Wpf.Resources.print.AsBitmapImage();
|
|
|
- }
|
|
|
-
|
|
|
- private bool QAPrintClick(CoreRow arg)
|
|
|
- {
|
|
|
- var formid = arg.Get<TMany, Guid>(x => (x as IDigitalFormInstance).Form.ID);
|
|
|
- var model = new DigitalFormReportDataModel<TMany>(new Filter<TMany>("Parent.ID").IsEqualTo(Item.ID), formid);
|
|
|
- var section = formid.ToString();
|
|
|
-
|
|
|
- // TODO: This is a hack
|
|
|
- DynamicGridUtils.PrintMenu?.Invoke(null, section, model, true);
|
|
|
-
|
|
|
- return false;
|
|
|
- }*/
|
|
|
-
|
|
|
- /*private BitmapImage QAEditImage(CoreRow arg)
|
|
|
- {
|
|
|
- if (arg == null)
|
|
|
- return Wpf.Resources.pencil.AsBitmapImage();
|
|
|
- var completed = arg.Get<TMany, DateTime>(x => (x as IBaseDigitalFormInstance).FormCompleted);
|
|
|
- return completed.IsEmpty() ? Wpf.Resources.pencil.AsBitmapImage() : Wpf.Resources.view.AsBitmapImage();
|
|
|
- }
|
|
|
-
|
|
|
- private bool QAEditClick(CoreRow arg)
|
|
|
- {
|
|
|
- var item = LoadItem(arg);
|
|
|
- var result = DynamicFormEditWindow.EditDigitalForm(item as IDigitalFormInstance);
|
|
|
- if (result)
|
|
|
- SaveItem(item);
|
|
|
- return result;
|
|
|
- }*/
|
|
|
-
|
|
|
public override DynamicEditorPages LoadEditorPages(TMany item)
|
|
|
{
|
|
|
return item.ID != Guid.Empty ? base.LoadEditorPages(item) : new DynamicEditorPages();
|