Skip to content

Commit 2bd666e

Browse files
authored
Merge pull request #632 from immense/jaredg-fix-scripts-page
Fix Scripts page.
2 parents 0857b38 + eb7cfc1 commit 2bd666e

File tree

6 files changed

+64
-52
lines changed

6 files changed

+64
-52
lines changed

Server/Components/Scripts/RunScript.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<span class="align-top">Show only mine</span>
1616
</div>
1717
</div>
18-
<TreeView DataSource="ParentPage.FilteredScriptNodes"
18+
<TreeView DataSource="ParentPage.TreeNodes"
1919
ItemTypeSelector="x => x.ItemType"
2020
ItemHeaderSelector="x => x.Name"
2121
ItemSelected="ScriptSelected"

Server/Components/Scripts/SavedScripts.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@
149149
<span class="align-top">Show only mine</span>
150150
</div>
151151
</div>
152-
<TreeView DataSource="ParentPage.FilteredScriptNodes"
152+
<TreeView DataSource="ParentPage.TreeNodes"
153153
ItemTypeSelector="x => x.ItemType"
154154
ItemHeaderSelector="x => x.Name"
155155
ItemSelected="ScriptSelected"

Server/Components/Scripts/ScriptSchedules.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
<input type="checkbox" @bind="ParentPage.ShowOnlyMyScripts" />
7272
<span class="align-top">Show only mine</span>
7373
</div>
74-
<TreeView DataSource="ParentPage.FilteredScriptNodes"
74+
<TreeView DataSource="ParentPage.TreeNodes"
7575
ItemTypeSelector="x => x.ItemType"
7676
ItemHeaderSelector="x => x.Name"
7777
ItemSelected="ScriptSelected"

Server/Components/Scripts/ScriptTreeNode.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public class ScriptTreeNode
1212
public string Id { get; } = Guid.NewGuid().ToString();
1313
public TreeItemType ItemType { get; set; }
1414
public string Name { get; init; }
15+
public ScriptTreeNode? ParentNode { get; set; }
1516
public List<ScriptTreeNode> ChildItems { get; } = new();
1617
public SavedScript Script { get; init; }
1718
}

Server/Pages/ScriptsPage.razor

Lines changed: 58 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@
3232

3333

3434
@code {
35-
private IEnumerable<ScriptTreeNode>? _filteredScriptNodes;
35+
private readonly List<ScriptTreeNode> _treeNodes = new();
36+
private IEnumerable<SavedScript> _allScripts = Enumerable.Empty<SavedScript>();
37+
3638
private bool _showOnlyMyScripts = true;
3739

3840
[Parameter]
@@ -43,34 +45,24 @@
4345
get => _showOnlyMyScripts;
4446
set
4547
{
46-
_filteredScriptNodes = null;
4748
_showOnlyMyScripts = value;
49+
_treeNodes.Clear();
4850
}
4951
}
5052

51-
public List<ScriptTreeNode> TreeNodes { get; } = new();
5253

53-
public IEnumerable<ScriptTreeNode> FilteredScriptNodes
54+
public IEnumerable<ScriptTreeNode> TreeNodes
5455
{
5556
get
5657
{
57-
if (_filteredScriptNodes?.Any() == true)
58+
if (_treeNodes?.Any() == true)
5859
{
59-
return _filteredScriptNodes;
60+
return _treeNodes;
6061
}
6162

62-
if (ShowOnlyMyScripts)
63-
{
64-
_filteredScriptNodes = TreeNodes.Where(x =>
65-
x.Script.CreatorId == User.Id);
66-
}
67-
else
68-
{
69-
_filteredScriptNodes = TreeNodes.Where(x =>
70-
x.Script.IsPublic || x.Script.CreatorId == User.Id);
71-
}
63+
RefreshTreeNodes();
7264

73-
return _filteredScriptNodes;
65+
return _treeNodes;
7466
}
7567
}
7668

@@ -85,31 +77,9 @@
8577

8678
public async Task RefreshScripts()
8779
{
88-
TreeNodes.Clear();
89-
_filteredScriptNodes = null;
90-
91-
var allScripts = await DataService.GetSavedScriptsWithoutContent(User.Id, User.OrganizationID);
92-
93-
foreach (var script in allScripts)
94-
{
95-
var root = BuildFolderPath(script.FolderPath);
96-
root.Add(new ScriptTreeNode()
97-
{
98-
Name = script.Name,
99-
Script = script,
100-
ItemType = TreeItemType.Item
101-
});
102-
}
80+
_treeNodes.Clear();
10381

104-
TreeNodes.Sort((a, b) =>
105-
{
106-
if (a.ItemType != b.ItemType)
107-
{
108-
return Comparer.Default.Compare(a.ItemType, b.ItemType);
109-
}
110-
111-
return Comparer.Default.Compare(a.Name, b.Name);
112-
});
82+
_allScripts = await DataService.GetSavedScriptsWithoutContent(User.Id, User.OrganizationID);
11383
}
11484

11585
protected override async Task OnInitializedAsync()
@@ -119,13 +89,14 @@
11989
}
12090

12191

122-
private List<ScriptTreeNode> BuildFolderPath(string folderPath)
92+
private void CreateTreeNode(SavedScript script)
12393
{
124-
var root = TreeNodes;
94+
var root = _treeNodes;
95+
ScriptTreeNode? targetParent = null;
12596

126-
if (!string.IsNullOrWhiteSpace(folderPath))
97+
if (!string.IsNullOrWhiteSpace(script.FolderPath))
12798
{
128-
var paths = folderPath.Split("/", StringSplitOptions.RemoveEmptyEntries);
99+
var paths = script.FolderPath.Split("/", StringSplitOptions.RemoveEmptyEntries);
129100
for (var i = 0; i < paths.Length; i++)
130101
{
131102
var existingParent = root.Find(x => x.Name == paths[i]);
@@ -135,18 +106,58 @@
135106
var newItem = new ScriptTreeNode()
136107
{
137108
Name = paths[i],
138-
ItemType = TreeItemType.Folder
109+
ItemType = TreeItemType.Folder,
110+
ParentNode = existingParent
139111
};
140112
root.Add(newItem);
141113
root = newItem.ChildItems;
114+
targetParent = newItem;
142115
}
143116
else
144117
{
145118
root = existingParent.ChildItems;
119+
targetParent = existingParent;
146120
}
147121
}
148122
}
149123

150-
return root;
124+
var scriptNode = new ScriptTreeNode()
125+
{
126+
Name = script.Name,
127+
Script = script,
128+
ItemType = TreeItemType.Item,
129+
ParentNode = targetParent
130+
};
131+
132+
root.Add(scriptNode);
133+
}
134+
135+
private void RefreshTreeNodes()
136+
{
137+
_treeNodes.Clear();
138+
139+
foreach (var script in _allScripts)
140+
{
141+
var showScript = ShowOnlyMyScripts ?
142+
script.CreatorId == User.Id :
143+
script.CreatorId == User.Id || script.IsPublic;
144+
145+
if (!showScript)
146+
{
147+
continue;
148+
}
149+
150+
CreateTreeNode(script);
151+
}
152+
153+
_treeNodes.Sort((a, b) =>
154+
{
155+
if (a.ItemType != b.ItemType)
156+
{
157+
return Comparer.Default.Compare(a.ItemType, b.ItemType);
158+
}
159+
160+
return Comparer.Default.Compare(a.Name, b.Name);
161+
});
151162
}
152163
}

Server/Services/DataService.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -655,12 +655,12 @@ public async Task ClearLogs(string currentUserName)
655655
{
656656
if (currentUser.IsServerAdmin)
657657
{
658-
dbContext.EventLogs.RemoveRange(dbContext.EventLogs);
658+
await dbContext.EventLogs.ExecuteDeleteAsync();
659659
}
660660
else
661661
{
662662
var eventLogs = dbContext.EventLogs.Where(x => x.OrganizationID == currentUser.OrganizationID);
663-
dbContext.EventLogs.RemoveRange(eventLogs);
663+
await eventLogs.ExecuteDeleteAsync();
664664
}
665665

666666
await dbContext.SaveChangesAsync();

0 commit comments

Comments
 (0)