Skip to content

Commit f8c4137

Browse files
committed
feature: supports to search/filter tags (#215)
1 parent 575f902 commit f8c4137

File tree

6 files changed

+50
-7
lines changed

6 files changed

+50
-7
lines changed

src/Resources/Locales/en_US.axaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -431,7 +431,6 @@
431431
<x:String x:Key="Text.Repository.Configure" xml:space="preserve">Configure this repository</x:String>
432432
<x:String x:Key="Text.Repository.Continue" xml:space="preserve">CONTINUE</x:String>
433433
<x:String x:Key="Text.Repository.Explore" xml:space="preserve">Open In File Browser</x:String>
434-
<x:String x:Key="Text.Repository.FilterBranchTip" xml:space="preserve">Filter Branches</x:String>
435434
<x:String x:Key="Text.Repository.FilterCommitPrefix" xml:space="preserve">FILTERED BY:</x:String>
436435
<x:String x:Key="Text.Repository.LocalBranches" xml:space="preserve">LOCAL BRANCHES</x:String>
437436
<x:String x:Key="Text.Repository.NavigateToCurrentHead" xml:space="preserve">Navigate To HEAD</x:String>
@@ -446,6 +445,7 @@
446445
<x:String x:Key="Text.Repository.Search.By" xml:space="preserve">Search By</x:String>
447446
<x:String x:Key="Text.Repository.Search.ByBaseInfo" xml:space="preserve">Information</x:String>
448447
<x:String x:Key="Text.Repository.Search.ByFile" xml:space="preserve">File</x:String>
448+
<x:String x:Key="Text.Repository.SearchBranchTag" xml:space="preserve">Search Branches &amp; Tags</x:String>
449449
<x:String x:Key="Text.Repository.Statistics" xml:space="preserve">Statistics</x:String>
450450
<x:String x:Key="Text.Repository.Submodules" xml:space="preserve">SUBMODULES</x:String>
451451
<x:String x:Key="Text.Repository.Submodules.Add" xml:space="preserve">ADD SUBMODULE</x:String>

src/Resources/Locales/zh_CN.axaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,6 @@
433433
<x:String x:Key="Text.Repository.Configure" xml:space="preserve">配置本仓库</x:String>
434434
<x:String x:Key="Text.Repository.Continue" xml:space="preserve">下一步</x:String>
435435
<x:String x:Key="Text.Repository.Explore" xml:space="preserve">在文件浏览器中打开</x:String>
436-
<x:String x:Key="Text.Repository.FilterBranchTip" xml:space="preserve">过滤显示分支</x:String>
437436
<x:String x:Key="Text.Repository.FilterCommitPrefix" xml:space="preserve">过滤规则 :</x:String>
438437
<x:String x:Key="Text.Repository.LocalBranches" xml:space="preserve">本地分支</x:String>
439438
<x:String x:Key="Text.Repository.NavigateToCurrentHead" xml:space="preserve">定位HEAD</x:String>
@@ -448,6 +447,7 @@
448447
<x:String x:Key="Text.Repository.Search.By" xml:space="preserve">搜索途径</x:String>
449448
<x:String x:Key="Text.Repository.Search.ByBaseInfo" xml:space="preserve">摘要</x:String>
450449
<x:String x:Key="Text.Repository.Search.ByFile" xml:space="preserve">文件</x:String>
450+
<x:String x:Key="Text.Repository.SearchBranchTag" xml:space="preserve">快速查找分支、标签</x:String>
451451
<x:String x:Key="Text.Repository.Statistics" xml:space="preserve">提交统计</x:String>
452452
<x:String x:Key="Text.Repository.Submodules" xml:space="preserve">子模块列表</x:String>
453453
<x:String x:Key="Text.Repository.Submodules.Add" xml:space="preserve">添加子模块</x:String>

src/Resources/Locales/zh_TW.axaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,6 @@
433433
<x:String x:Key="Text.Repository.Configure" xml:space="preserve">配置本倉庫</x:String>
434434
<x:String x:Key="Text.Repository.Continue" xml:space="preserve">下一步</x:String>
435435
<x:String x:Key="Text.Repository.Explore" xml:space="preserve">在檔案瀏覽器中開啟</x:String>
436-
<x:String x:Key="Text.Repository.FilterBranchTip" xml:space="preserve">過濾顯示分支</x:String>
437436
<x:String x:Key="Text.Repository.FilterCommitPrefix" xml:space="preserve">過濾規則 :</x:String>
438437
<x:String x:Key="Text.Repository.LocalBranches" xml:space="preserve">本地分支</x:String>
439438
<x:String x:Key="Text.Repository.NavigateToCurrentHead" xml:space="preserve">定位HEAD</x:String>
@@ -448,6 +447,7 @@
448447
<x:String x:Key="Text.Repository.Search.By" xml:space="preserve">查詢方式</x:String>
449448
<x:String x:Key="Text.Repository.Search.ByBaseInfo" xml:space="preserve">摘要</x:String>
450449
<x:String x:Key="Text.Repository.Search.ByFile" xml:space="preserve">檔案</x:String>
450+
<x:String x:Key="Text.Repository.SearchBranchTag" xml:space="preserve">快速查找分支、標籤</x:String>
451451
<x:String x:Key="Text.Repository.Statistics" xml:space="preserve">提交統計</x:String>
452452
<x:String x:Key="Text.Repository.Submodules" xml:space="preserve">子模組列表</x:String>
453453
<x:String x:Key="Text.Repository.Submodules.Add" xml:space="preserve">新增子模組</x:String>

src/ViewModels/Repository.cs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ public string SearchBranchFilter
9999
var builder = BuildBranchTree(_branches, _remotes);
100100
LocalBranchTrees = builder.Locals;
101101
RemoteBranchTrees = builder.Remotes;
102+
VisibleTags = BuildVisibleTags();
102103
}
103104
}
104105
}
@@ -145,6 +146,13 @@ public List<Models.Tag> Tags
145146
private set => SetProperty(ref _tags, value);
146147
}
147148

149+
[JsonIgnore]
150+
public List<Models.Tag> VisibleTags
151+
{
152+
get => _visibleTags;
153+
private set => SetProperty(ref _visibleTags, value);
154+
}
155+
148156
[JsonIgnore]
149157
public List<string> Submodules
150158
{
@@ -295,6 +303,7 @@ public void Close()
295303
_localBranchTrees.Clear();
296304
_remoteBranchTrees.Clear();
297305
_tags.Clear();
306+
_visibleTags.Clear();
298307
_submodules.Clear();
299308
_searchedCommits.Clear();
300309
}
@@ -633,6 +642,7 @@ public void RefreshTags()
633642
Dispatcher.UIThread.Invoke(() =>
634643
{
635644
Tags = tags;
645+
VisibleTags = BuildVisibleTags();
636646
});
637647
}
638648

@@ -1827,6 +1837,25 @@ private BranchTreeNode.Builder BuildBranchTree(List<Models.Branch> branches, Lis
18271837
return builder;
18281838
}
18291839

1840+
private List<Models.Tag> BuildVisibleTags()
1841+
{
1842+
var visible = new List<Models.Tag>();
1843+
if (string.IsNullOrEmpty(_searchBranchFilter))
1844+
{
1845+
visible.AddRange(_tags);
1846+
}
1847+
else
1848+
{
1849+
foreach (var t in _tags)
1850+
{
1851+
if (t.Name.Contains(_searchBranchFilter, StringComparison.OrdinalIgnoreCase))
1852+
visible.Add(t);
1853+
}
1854+
}
1855+
1856+
return visible;
1857+
}
1858+
18301859
private string _fullpath = string.Empty;
18311860
private string _gitDir = string.Empty;
18321861

@@ -1854,6 +1883,7 @@ private BranchTreeNode.Builder BuildBranchTree(List<Models.Branch> branches, Lis
18541883
private List<BranchTreeNode> _remoteBranchTrees = new List<BranchTreeNode>();
18551884
private List<Models.Worktree> _worktrees = new List<Models.Worktree>();
18561885
private List<Models.Tag> _tags = new List<Models.Tag>();
1886+
private List<Models.Tag> _visibleTags = new List<Models.Tag>();
18571887
private List<string> _submodules = new List<string>();
18581888
private bool _includeUntracked = true;
18591889

src/Views/Repository.axaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@
206206
BorderThickness="1"
207207
CornerRadius="4"
208208
BorderBrush="{DynamicResource Brush.Border2}"
209-
Watermark="{DynamicResource Text.Repository.FilterBranchTip}"
209+
Watermark="{DynamicResource Text.Repository.SearchBranchTag}"
210210
Text="{Binding SearchBranchFilter, Mode=TwoWay}"
211211
VerticalContentAlignment="Center">
212212
<TextBox.InnerLeftContent>
@@ -375,10 +375,9 @@
375375
</ToggleButton>
376376
<DataGrid Grid.Row="7"
377377
x:Name="tagsList"
378-
MaxHeight="200"
379378
Margin="8,0,4,0"
380379
Background="Transparent"
381-
ItemsSource="{Binding Tags}"
380+
ItemsSource="{Binding VisibleTags}"
382381
SelectionMode="Single"
383382
CanUserReorderColumns="False"
384383
CanUserResizeColumns="False"
@@ -391,7 +390,8 @@
391390
VerticalScrollBarVisibility="Auto"
392391
IsVisible="{Binding IsTagGroupExpanded, Mode=OneWay}"
393392
SelectionChanged="OnTagDataGridSelectionChanged"
394-
ContextRequested="OnTagContextRequested">
393+
ContextRequested="OnTagContextRequested"
394+
PropertyChanged="OnTagPropertyChanged">
395395
<DataGrid.Styles>
396396
<Style Selector="DataGridRow">
397397
<Setter Property="CornerRadius" Value="4" />

src/Views/Repository.axaml.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System;
12
using System.Collections.Generic;
23

34
using Avalonia;
@@ -279,6 +280,18 @@ private void OnTagContextRequested(object sender, ContextRequestedEventArgs e)
279280
e.Handled = true;
280281
}
281282

283+
private void OnTagPropertyChanged(object sender, AvaloniaPropertyChangedEventArgs e)
284+
{
285+
if (e.Property == DataGrid.ItemsSourceProperty && DataContext is ViewModels.Repository vm)
286+
{
287+
if (vm.VisibleTags == null)
288+
return;
289+
290+
var desiredHeight = tagsList.RowHeight * vm.VisibleTags.Count;
291+
tagsList.Height = Math.Min(200, desiredHeight);
292+
}
293+
}
294+
282295
private void OnToggleFilter(object sender, RoutedEventArgs e)
283296
{
284297
if (sender is ToggleButton toggle)

0 commit comments

Comments
 (0)