Browse Source

add search

master
jkpete 4 weeks ago
parent
commit
4bf6755941
  1. 34
      addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotSaveTable.cs
  2. 80
      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

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

@ -31,12 +31,13 @@ namespace EGFramework.UI @@ -31,12 +31,13 @@ namespace EGFramework.UI
EmptyData = typeof(T).EGenerateEmptyDictiontaryByType();
QueryPage.Register(() => QueryPageData<T>());
TableName = typeof(T).Name;
TitleData = typeof(T).EGenerateDictiontaryByType();
InitFunctionMenu();
InitTitle(typeof(T).EGenerateDictiontaryByType());
InitTitle(TitleData);
InitRowData(null);
InitPageMenu();
}
public void QueryPageData<T>() where T : new()
{
@ -91,7 +92,7 @@ namespace EGFramework.UI @@ -91,7 +92,7 @@ namespace EGFramework.UI
if (rowData.GetData().ContainsKey("Id")) primaryKey = "Id";
if (primaryKey == "")
{
this.EGAlert("Parmary key 'id' not defined!","Error");
this.EGAlert("Parmary key 'id' not defined!", "Error");
return;
}
int remove_count = SaveData.RemoveData(CurrentDataKey, rowData.GetData()[primaryKey]);
@ -103,5 +104,32 @@ namespace EGFramework.UI @@ -103,5 +104,32 @@ namespace EGFramework.UI
}
//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();
// });
// }
}
}
}

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

@ -96,10 +96,10 @@ namespace EGFramework.UI @@ -96,10 +96,10 @@ namespace EGFramework.UI
}
protected OptionButton FieldSelect { set; get; }
protected LineEdit SearchEdit { set; get; }
public virtual void InitFunctionMenu()
{
if (FunctionContainer == null)
{
FunctionContainer = this.CreateNode<BoxContainer>("FunctionContainer");
@ -119,7 +119,7 @@ namespace EGFramework.UI @@ -119,7 +119,7 @@ namespace EGFramework.UI
Button output = FunctionContainer.CreateNode<Button>("output");
output.Text = "Output";
output.Connect("pressed", Callable.From(()=>this.EGFileSave(TableName+".csv",OnOutputFile)));
output.Connect("pressed", Callable.From(() => this.EGFileSave(TableName + ".csv", OnOutputFile)));
output.FocusMode = FocusModeEnum.None;
output.CustomMinimumSize = MinimumFunctionButtonSize;
@ -128,32 +128,34 @@ namespace EGFramework.UI @@ -128,32 +128,34 @@ namespace EGFramework.UI
input.FocusMode = FocusModeEnum.None;
input.CustomMinimumSize = MinimumFunctionButtonSize;
OptionButton filedSelect = FunctionContainer.CreateNode<OptionButton>("filedSelect");
filedSelect.FocusMode = FocusModeEnum.None;
filedSelect.SizeFlagsHorizontal = SizeFlags.Expand | SizeFlags.ShrinkEnd;
filedSelect.CustomMinimumSize = MinimumFunctionButtonSize;
FieldSelect = FunctionContainer.CreateNode<OptionButton>("fieldSelect");
FieldSelect.FocusMode = FocusModeEnum.None;
FieldSelect.SizeFlagsHorizontal = SizeFlags.Expand | SizeFlags.ShrinkEnd;
FieldSelect.CustomMinimumSize = MinimumFunctionButtonSize;
foreach (string titleParam in TitleData.Keys)
{
filedSelect.AddItem(titleParam);
FieldSelect.AddItem(titleParam);
}
LineEdit searchEdit = FunctionContainer.CreateNode<LineEdit>("searchEdit");
searchEdit.PlaceholderText = "Please input search key";
searchEdit.SizeFlagsHorizontal = SizeFlags.ShrinkEnd;
searchEdit.CustomMinimumSize = new Vector2(MinimumFunctionButtonSize.X*2,MinimumFunctionButtonSize.Y);
SearchEdit = FunctionContainer.CreateNode<LineEdit>("searchEdit");
SearchEdit.PlaceholderText = "Please input search key";
SearchEdit.SizeFlagsHorizontal = SizeFlags.ShrinkEnd;
SearchEdit.CustomMinimumSize = new Vector2(MinimumFunctionButtonSize.X * 2, MinimumFunctionButtonSize.Y);
Button search = FunctionContainer.CreateNode<Button>("search");
search.Text = "Search";
search.FocusMode = FocusModeEnum.None;
search.SizeFlagsHorizontal = SizeFlags.ShrinkEnd;
search.CustomMinimumSize = MinimumFunctionButtonSize;
search.Connect("pressed", Callable.From(Search));
Button reset = FunctionContainer.CreateNode<Button>("reset");
reset.Text = "Reset";
reset.FocusMode = FocusModeEnum.None;
reset.SizeFlagsHorizontal = SizeFlags.ShrinkEnd;
reset.CustomMinimumSize = MinimumFunctionButtonSize;
reset.Connect("pressed", Callable.From(ResetSearch));
}
}
@ -337,6 +339,58 @@ namespace EGFramework.UI @@ -337,6 +339,58 @@ namespace EGFramework.UI
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()
{
this.PageChangedRealease.UnRegister();

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

@ -107,5 +107,21 @@ namespace EGFramework{ @@ -107,5 +107,21 @@ namespace EGFramework{
}
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 @@ -76,6 +76,7 @@ namespace EGFramework
IEnumerable<TData> GetAll<TData>(string dataKey) 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<Dictionary<string, object>> FindData(string dataKey, string columnName, string keyWords);
IEnumerable<string> GetKeys();
bool ContainsKey(string dataKey);
bool ContainsData(string dataKey,object id);

Loading…
Cancel
Save