Skip to content
This repository was archived by the owner on Dec 5, 2024. It is now read-only.

Commit ef194a8

Browse files
Merge branch 'enhancements/tree-tests' into fixes/nested-meta-file
2 parents 6b69389 + 79ea6c4 commit ef194a8

File tree

4 files changed

+871
-9
lines changed

4 files changed

+871
-9
lines changed

src/GitHub.Api/UI/TreeBase.cs

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,30 @@ public interface ITreeNode
2626

2727
public abstract class TreeBase<TNode, TData> where TNode : class, ITreeNode where TData : struct, ITreeData
2828
{
29+
protected ILogging Logger { get; }
30+
31+
protected TreeBase()
32+
{
33+
Logger = Logging.GetLogger(GetType());
34+
}
35+
2936
public abstract IEnumerable<string> GetCheckedFiles();
3037

3138
public void Load(IEnumerable<TData> treeDatas)
3239
{
40+
Logger.Trace("Load");
41+
3342
var collapsedFolders = new HashSet<string>(GetCollapsedFolders());
3443
var selectedNodePath = SelectedNodePath;
3544
var checkedFiles = new HashSet<string>(GetCheckedFiles());
45+
var pathSeparator = PathSeparator;
3646

3747
Clear();
3848

3949
var displayRootLevel = DisplayRootNode ? 1 : 0;
4050

51+
var isCheckable = IsCheckable;
52+
4153
var isSelected = IsSelectable && selectedNodePath != null && Title == selectedNodePath;
4254
AddNode(Title, Title, -1 + displayRootLevel, true, false, false, false, isSelected, false, null);
4355

@@ -48,12 +60,12 @@ public void Load(IEnumerable<TData> treeDatas)
4860

4961
foreach (var treeData in treeDatas)
5062
{
51-
var parts = treeData.Path.Split(new[] { PathSeparator }, StringSplitOptions.None);
63+
var parts = treeData.Path.Split(new[] { pathSeparator }, StringSplitOptions.None);
5264
for (var i = 0; i < parts.Length; i++)
5365
{
5466
var label = parts[i];
5567
var level = i + 1;
56-
var nodePath = String.Join(PathSeparator, parts, 0, level);
68+
var nodePath = String.Join(pathSeparator, parts, 0, level);
5769
var isFolder = i < parts.Length - 1;
5870
var alreadyExists = folders.Contains(nodePath);
5971
if (!alreadyExists)
@@ -95,7 +107,7 @@ public void Load(IEnumerable<TData> treeDatas)
95107
{
96108
isActive = treeData.IsActive;
97109
treeNodeTreeData = treeData;
98-
isChecked = checkedFiles.Contains(nodePath);
110+
isChecked = isCheckable && checkedFiles.Contains(nodePath);
99111
}
100112

101113
isSelected = selectedNodePath != null && nodePath == selectedNodePath;
@@ -105,19 +117,20 @@ public void Load(IEnumerable<TData> treeDatas)
105117
}
106118
}
107119

108-
if (IsCheckable && checkedFiles.Any())
120+
if (isCheckable && checkedFiles.Any())
109121
{
110-
for (var index = Nodes.Count - 1; index >= 0; index--)
122+
var nodes = Nodes;
123+
for (var index = nodes.Count - 1; index >= 0; index--)
111124
{
112-
var node = Nodes[index];
125+
var node = nodes[index];
113126
if (node.Level >= 0 && node.IsFolder)
114127
{
115128
bool? anyChecked = null;
116129
bool? allChecked = null;
117130

118-
for (var i = index + 1; i < Nodes.Count; i++)
131+
for (var i = index + 1; i < nodes.Count; i++)
119132
{
120-
var nodeCompare = Nodes[i];
133+
var nodeCompare = nodes[i];
121134
if (nodeCompare.Level < node.Level + 1)
122135
{
123136
break;

0 commit comments

Comments
 (0)