|
@@ -14,17 +14,24 @@ using System.Windows.Controls;
|
|
|
|
|
|
namespace PRSDesktop;
|
|
namespace PRSDesktop;
|
|
|
|
|
|
|
|
+public class KanbanGridSettings : IUserConfigurationSettings
|
|
|
|
+{
|
|
|
|
+ public string[] RecentTags { get; set; } = [];
|
|
|
|
+}
|
|
|
|
+
|
|
public abstract class BaseKanbanGrid : DynamicDataGrid<Kanban>
|
|
public abstract class BaseKanbanGrid : DynamicDataGrid<Kanban>
|
|
{
|
|
{
|
|
protected abstract TaskPanelProperties Properties { get; }
|
|
protected abstract TaskPanelProperties Properties { get; }
|
|
|
|
|
|
|
|
+ protected KanbanGridSettings Settings { get; private set; }
|
|
|
|
+
|
|
public BaseKanbanGrid()
|
|
public BaseKanbanGrid()
|
|
{
|
|
{
|
|
|
|
+ Settings = new UserConfiguration<KanbanGridSettings>().Load();
|
|
|
|
+
|
|
ActionColumns.Add(new DynamicImageColumn(PRSDesktop.Resources.menu.AsBitmapImage(), FormMenuClick));
|
|
ActionColumns.Add(new DynamicImageColumn(PRSDesktop.Resources.menu.AsBitmapImage(), FormMenuClick));
|
|
|
|
|
|
HiddenColumns.Add(x => x.EmployeeLink.ID);
|
|
HiddenColumns.Add(x => x.EmployeeLink.ID);
|
|
-
|
|
|
|
- OnCustomiseEditor += CustomiseEditor;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
protected override void DoValidate(Kanban[] items, List<string> errors)
|
|
protected override void DoValidate(Kanban[] items, List<string> errors)
|
|
@@ -73,7 +80,7 @@ public abstract class BaseKanbanGrid : DynamicDataGrid<Kanban>
|
|
TaskPanel.ManageSubscribers(kanban);
|
|
TaskPanel.ManageSubscribers(kanban);
|
|
}
|
|
}
|
|
|
|
|
|
- private void CustomiseEditor(IDynamicEditorForm sender, Kanban[]? items, DynamicGridColumn column, BaseEditor editor)
|
|
|
|
|
|
+ protected override void CustomiseEditor(IDynamicEditorForm sender, Kanban[]? items, DynamicGridColumn column, BaseEditor editor)
|
|
{
|
|
{
|
|
var kanban = items?.FirstOrDefault();
|
|
var kanban = items?.FirstOrDefault();
|
|
if (kanban is null) return;
|
|
if (kanban is null) return;
|
|
@@ -107,6 +114,33 @@ public abstract class BaseKanbanGrid : DynamicDataGrid<Kanban>
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ protected override void OnCreateEditorControl(string column, BaseEditor editor, IDynamicEditorControl control)
|
|
|
|
+ {
|
|
|
|
+ base.OnCreateEditorControl(column, editor, control);
|
|
|
|
+
|
|
|
|
+ if(column == nameof(Kanban.Tags) && control is TagsEditorControl tagsEditor)
|
|
|
|
+ {
|
|
|
|
+ tagsEditor.RecentTags = Settings.RecentTags.ToList();
|
|
|
|
+ tagsEditor.OnRecentTagsChanged += TagsEditor_OnRecentTagsChanged;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void TagsEditor_OnRecentTagsChanged(IEnumerable<string> tags)
|
|
|
|
+ {
|
|
|
|
+ var lst = tags.ToArray();
|
|
|
|
+ if(lst.Length > 15)
|
|
|
|
+ {
|
|
|
|
+ var newArr = new string[15];
|
|
|
|
+ Array.Copy(lst, lst.Length - 15, newArr, 0, 15);
|
|
|
|
+ Settings.RecentTags = newArr;
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ Settings.RecentTags = lst;
|
|
|
|
+ }
|
|
|
|
+ new UserConfiguration<KanbanGridSettings>().Save(Settings);
|
|
|
|
+ }
|
|
|
|
+
|
|
private bool IsFullControl(Kanban[] kanbans)
|
|
private bool IsFullControl(Kanban[] kanbans)
|
|
{
|
|
{
|
|
foreach (var kanban in kanbans)
|
|
foreach (var kanban in kanbans)
|