diff --git a/addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotEditParam.cs b/addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotEditParam.cs index b4ba9d2..c0f21a8 100644 --- a/addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotEditParam.cs +++ b/addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotEditParam.cs @@ -18,6 +18,15 @@ namespace EGFramework.UI public override void Init(KeyValuePair editValue) { base.Init(editValue); + if (editValue.Key == "id" || editValue.Key == "ID" || editValue.Key == "Id") + { + this.ParamReadOnly = new Label(); + ParamReadOnly.Name = "ParamReadOnly"; + ParamReadOnly.SizeFlagsHorizontal = SizeFlags.ExpandFill; + ParamReadOnly.Text = editValue.Value.ToString(); + this.AddChild(ParamReadOnly); + return; + } if (editValue.Value is string || editValue.Value is null) { this.ParamEdit = new LineEdit(); diff --git a/addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotSaveTable.cs b/addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotSaveTable.cs index 38f8a4f..9324587 100644 --- a/addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotSaveTable.cs +++ b/addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotSaveTable.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.Linq; using Godot; +using MySqlX.XDevAPI.Relational; namespace EGFramework.UI { @@ -8,6 +9,9 @@ namespace EGFramework.UI { public IEGSaveData SaveData { set; get; } public Dictionary TitleList { set; get; } = new Dictionary(); + public string CurrentDataKey { set; get; } + + public EasyEvent QueryPage { set; get; } = new EasyEvent(); public void InitSaveData(IEGSaveData eGSaveData) where TSaveData : IEGSaveData { @@ -16,7 +20,7 @@ namespace EGFramework.UI } public void InitData(string key) where T : new() { - int count = SaveData.GetAll(key).Count(); + int count = SaveData.GetDataCount(key); if (PageAdapter == null) { PageAdapter = new EGodotTablePageAdapter(count, PageLimit); @@ -26,10 +30,74 @@ namespace EGFramework.UI PageAdapter.Reload(count, PageLimit); } this.Vertical = true; + CurrentDataKey = key; + QueryPage.Register(() => QueryPageData()); InitFunctionMenu(); InitTitle(typeof(T).EGenerateDictiontaryByType()); - InitRowData(SaveData.GetAll(key).EGenerateDictionaryByGroup()); + InitRowData(null); InitPageMenu(); + + } + + public void QueryPageData() where T : new() + { + if (PageAdapter.CurrentPage <= 1) + { + PageAdapter.CurrentPage = 1; + } + + TableData = SaveData.GetPage(CurrentDataKey, PageAdapter.CurrentPage, PageAdapter.PageLimit).EGenerateDictionaryByGroup(); + GD.Print(TableData.Count()); + } + + public void ModifyData(Dictionary eData) + { + string primaryKey = ""; + if (eData.ContainsKey("ID")) primaryKey = "ID"; + if (eData.ContainsKey("id")) primaryKey = "id"; + if (eData.ContainsKey("Id")) primaryKey = "Id"; + if (primaryKey == "") + { + this.EGAlert("Parmary key 'id' not defined!", "Error"); + return; + } + SaveData.UpdateData(CurrentDataKey, eData, eData[primaryKey]); + InitPageData(); + } + + + public override void InitPageData() + { + RowDataContainer.ClearChildren(); + QueryPage.Invoke(); + int pointer = 0; + foreach (Dictionary data in TableData) + { + EGodotTableRowData rowData = RowDataContainer.CreateNode("row" + pointer); + rowData.Init(data); + rowData.OnModify.Register(eData => + { + this.EGEditDialog(eData, ModifyData, "Modify"); + }); + rowData.OnDelete.Register(() => + { + string primaryKey = ""; + if (rowData.GetData().ContainsKey("ID")) primaryKey = "ID"; + if (rowData.GetData().ContainsKey("id")) primaryKey = "id"; + if (rowData.GetData().ContainsKey("Id")) primaryKey = "Id"; + if (primaryKey == "") + { + this.EGAlert("Parmary key 'id' not defined!","Error"); + return; + } + int remove_count = SaveData.RemoveData(CurrentDataKey, rowData.GetData()[primaryKey]); + PageAdapter.DataLength -= remove_count; + PageAdapter.Reload(PageAdapter.DataLength, PageLimit); + InitPageData(); + OnPageChanged.Invoke(); + }); + } + //base.InitPageData(); } } } \ No newline at end of file diff --git a/addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotTable.cs b/addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotTable.cs index d27591c..a0f9b62 100644 --- a/addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotTable.cs +++ b/addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotTable.cs @@ -176,6 +176,8 @@ namespace EGFramework.UI Label labelPage = PageContainer.CreateNode