Browse Source

add search

master
jkpete 1 month ago
parent
commit
4bf6755941
  1. 30
      addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotSaveTable.cs
  2. 76
      addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotTable.cs
  3. 16
      addons/EGFramework/Module/GenerateTools/Templete/Variant/EGVariantGenerator.cs
  4. 1
      addons/EGFramework/Module/SaveTools/SaveToolsInterface.cs

30
addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotSaveTable.cs

@ -31,8 +31,9 @@ namespace EGFramework.UI
EmptyData = typeof(T).EGenerateEmptyDictiontaryByType(); EmptyData = typeof(T).EGenerateEmptyDictiontaryByType();
QueryPage.Register(() => QueryPageData<T>()); QueryPage.Register(() => QueryPageData<T>());
TableName = typeof(T).Name; TableName = typeof(T).Name;
TitleData = typeof(T).EGenerateDictiontaryByType();
InitFunctionMenu(); InitFunctionMenu();
InitTitle(typeof(T).EGenerateDictiontaryByType()); InitTitle(TitleData);
InitRowData(null); InitRowData(null);
InitPageMenu(); InitPageMenu();
} }
@ -103,5 +104,32 @@ namespace EGFramework.UI
} }
//base.InitPageData(); //base.InitPageData();
} }
public override void ExecuteSearch()
{
RowDataContainer.ClearChildren();
string fieldName = FieldSelect.Text;
string keyWords = SearchEdit.Text;
// List<Dictionary<string, object>> SearchData = TableData.ESearchByKeyword(fieldName, keyWords);
// int dataPointer = 0;
// foreach (Dictionary<string, object> searchrow in SearchData)
// {
// EGodotTableRowData rowData = RowDataContainer.CreateNode<EGodotTableRowData>("row" + dataPointer);
// dataPointer++;
// rowData.Init(searchrow);
// rowData.OnModify.Register(data =>
// {
// this.EGEditDialog(data, rowData.OnDataEdit, "Modify");
// });
// rowData.OnDelete.Register(() =>
// {
// this.TableData.Remove(rowData.GetData());
// PageAdapter.DataLength--;
// PageAdapter.Reload(PageAdapter.DataLength, PageLimit);
// InitPageData();
// OnPageChanged.Invoke();
// });
// }
}
} }
} }

76
addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotTable.cs

@ -96,10 +96,10 @@ namespace EGFramework.UI
} }
protected OptionButton FieldSelect { set; get; }
protected LineEdit SearchEdit { set; get; }
public virtual void InitFunctionMenu() public virtual void InitFunctionMenu()
{ {
if (FunctionContainer == null) if (FunctionContainer == null)
{ {
FunctionContainer = this.CreateNode<BoxContainer>("FunctionContainer"); FunctionContainer = this.CreateNode<BoxContainer>("FunctionContainer");
@ -128,32 +128,34 @@ namespace EGFramework.UI
input.FocusMode = FocusModeEnum.None; input.FocusMode = FocusModeEnum.None;
input.CustomMinimumSize = MinimumFunctionButtonSize; input.CustomMinimumSize = MinimumFunctionButtonSize;
OptionButton filedSelect = FunctionContainer.CreateNode<OptionButton>("filedSelect"); FieldSelect = FunctionContainer.CreateNode<OptionButton>("fieldSelect");
filedSelect.FocusMode = FocusModeEnum.None; FieldSelect.FocusMode = FocusModeEnum.None;
filedSelect.SizeFlagsHorizontal = SizeFlags.Expand | SizeFlags.ShrinkEnd; FieldSelect.SizeFlagsHorizontal = SizeFlags.Expand | SizeFlags.ShrinkEnd;
filedSelect.CustomMinimumSize = MinimumFunctionButtonSize; FieldSelect.CustomMinimumSize = MinimumFunctionButtonSize;
foreach (string titleParam in TitleData.Keys) foreach (string titleParam in TitleData.Keys)
{ {
filedSelect.AddItem(titleParam); FieldSelect.AddItem(titleParam);
} }
LineEdit searchEdit = FunctionContainer.CreateNode<LineEdit>("searchEdit"); SearchEdit = FunctionContainer.CreateNode<LineEdit>("searchEdit");
searchEdit.PlaceholderText = "Please input search key"; SearchEdit.PlaceholderText = "Please input search key";
searchEdit.SizeFlagsHorizontal = SizeFlags.ShrinkEnd; SearchEdit.SizeFlagsHorizontal = SizeFlags.ShrinkEnd;
searchEdit.CustomMinimumSize = new Vector2(MinimumFunctionButtonSize.X*2,MinimumFunctionButtonSize.Y); SearchEdit.CustomMinimumSize = new Vector2(MinimumFunctionButtonSize.X * 2, MinimumFunctionButtonSize.Y);
Button search = FunctionContainer.CreateNode<Button>("search"); Button search = FunctionContainer.CreateNode<Button>("search");
search.Text = "Search"; search.Text = "Search";
search.FocusMode = FocusModeEnum.None; search.FocusMode = FocusModeEnum.None;
search.SizeFlagsHorizontal = SizeFlags.ShrinkEnd; search.SizeFlagsHorizontal = SizeFlags.ShrinkEnd;
search.CustomMinimumSize = MinimumFunctionButtonSize; search.CustomMinimumSize = MinimumFunctionButtonSize;
search.Connect("pressed", Callable.From(Search));
Button reset = FunctionContainer.CreateNode<Button>("reset"); Button reset = FunctionContainer.CreateNode<Button>("reset");
reset.Text = "Reset"; reset.Text = "Reset";
reset.FocusMode = FocusModeEnum.None; reset.FocusMode = FocusModeEnum.None;
reset.SizeFlagsHorizontal = SizeFlags.ShrinkEnd; reset.SizeFlagsHorizontal = SizeFlags.ShrinkEnd;
reset.CustomMinimumSize = MinimumFunctionButtonSize; reset.CustomMinimumSize = MinimumFunctionButtonSize;
reset.Connect("pressed", Callable.From(ResetSearch));
} }
} }
@ -337,6 +339,58 @@ namespace EGFramework.UI
OnPageChanged.Invoke(); OnPageChanged.Invoke();
} }
} }
public void Search()
{
if (SearchEdit.Text == "" && FieldSelect.Text == "")
{
this.EGAlert("Please input key word in search edit and select a field.", "Message not enough!");
}
else
{
IsSearched = true;
PageContainer.Visible = false;
ExecuteSearch();
}
}
public void ResetSearch()
{
if (IsSearched)
{
IsSearched = false;
PageContainer.Visible = true;
InitPageData();
}
}
public virtual void ExecuteSearch()
{
RowDataContainer.ClearChildren();
string fieldName = FieldSelect.Text;
string keyWords = SearchEdit.Text;
List<Dictionary<string, object>> SearchData = TableData.ESearchByKeyword(fieldName, keyWords);
int dataPointer = 0;
foreach (Dictionary<string, object> searchrow in SearchData)
{
EGodotTableRowData rowData = RowDataContainer.CreateNode<EGodotTableRowData>("row" + dataPointer);
dataPointer++;
rowData.Init(searchrow);
rowData.OnModify.Register(data =>
{
this.EGEditDialog(data, rowData.OnDataEdit, "Modify");
});
rowData.OnDelete.Register(() =>
{
GD.Print("Delete : " + rowData.GetData()["Name"]);
this.TableData.Remove(rowData.GetData());
PageAdapter.DataLength--;
PageAdapter.Reload(PageAdapter.DataLength, PageLimit);
InitPageData();
OnPageChanged.Invoke();
});
}
}
public override void _ExitTree() public override void _ExitTree()
{ {
this.PageChangedRealease.UnRegister(); this.PageChangedRealease.UnRegister();

16
addons/EGFramework/Module/GenerateTools/Templete/Variant/EGVariantGenerator.cs

@ -107,5 +107,21 @@ namespace EGFramework{
} }
return ""; return "";
} }
public static List<Dictionary<string, object>> ESearchByKeyword(this List<Dictionary<string, object>> data, string fieldName, string keyWords)
{
List<Dictionary<string, object>> result = new List<Dictionary<string, object>>();
foreach (Dictionary<string, object> tablerow in data)
{
if (tablerow.ContainsKey(fieldName))
{
if (tablerow[fieldName].ToString().Contains(keyWords))
{
result.Add(tablerow);
}
}
}
return result;
}
} }
} }

1
addons/EGFramework/Module/SaveTools/SaveToolsInterface.cs

@ -76,6 +76,7 @@ namespace EGFramework
IEnumerable<TData> GetAll<TData>(string dataKey) where TData : new(); IEnumerable<TData> GetAll<TData>(string dataKey) where TData : new();
IEnumerable<TData> GetPage<TData>(string dataKey,int pageIndex,int pageSize) where TData : new(); IEnumerable<TData> GetPage<TData>(string dataKey,int pageIndex,int pageSize) where TData : new();
IEnumerable<TData> FindData<TData>(string dataKey,Expression<Func<TData, bool>> expression) where TData : new(); IEnumerable<TData> FindData<TData>(string dataKey,Expression<Func<TData, bool>> expression) where TData : new();
// IEnumerable<Dictionary<string, object>> FindData(string dataKey, string columnName, string keyWords);
IEnumerable<string> GetKeys(); IEnumerable<string> GetKeys();
bool ContainsKey(string dataKey); bool ContainsKey(string dataKey);
bool ContainsData(string dataKey,object id); bool ContainsData(string dataKey,object id);

Loading…
Cancel
Save