Skip to content

Commit 189f6e9

Browse files
committed
CactuseSecurity#2867: corrected timing of initial reordering and emancipated logic from Dropdown component's properties
1 parent e30f7b0 commit 189f6e9

File tree

3 files changed

+28
-19
lines changed

3 files changed

+28
-19
lines changed

roles/ui/files/FWO.UI/Pages/NetworkModelling/EditAppRole.razor

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -318,9 +318,13 @@
318318
/// <summary>
319319
/// Updates the app server's visual elements after reordering the collection.
320320
/// </summary>
321-
private void OnCollectionReordered()
321+
private void OnCollectionReordered(List<ModellingAppServer> orderedCollection)
322322
{
323-
AppRoleHandler.AppServerToAdd = orderByDropdown.Collection;
323+
if (AppRoleHandler != null && orderedCollection != null)
324+
{
325+
AppRoleHandler.AppServerToAdd = orderedCollection;
326+
}
327+
324328
InvokeAsync(StateHasChanged);
325329
}
326330
}

roles/ui/files/FWO.UI/Pages/NetworkModelling/EditAppRoleLeftSide.razor

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,13 @@
8585
/// <summary>
8686
/// Updates the app server's visual elements after reordering the collection.
8787
/// </summary>
88-
private void OnCollectionReordered()
88+
private void OnCollectionReordered(List<ModellingAppServer> orderedCollection)
8989
{
90-
AppRoleHandler.AppServersInArea = orderByDropdown.Collection;
90+
if (AppRoleHandler != null && orderedCollection != null)
91+
{
92+
AppRoleHandler.AppServersInArea = orderedCollection;
93+
}
94+
9195
InvokeAsync(StateHasChanged);
9296
}
9397
}

roles/ui/files/FWO.UI/Shared/OrderByDropdown.razor

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
/// Callback to communicate that the reordering process has been completed.
4444
/// </summary>
4545
[Parameter, EditorRequired]
46-
public EventCallback CollectionReordered { get; set; }
46+
public EventCallback<List<TCollectionItem>> CollectionReordered { get; set; }
4747

4848
/// <summary>
4949
/// Backing field of property 'SelectedProperty'.
@@ -93,18 +93,15 @@
9393
/// The visual elements for the implemented order modes.
9494
/// </summary>
9595
private List<OrderMode> orderModes = new List<OrderMode> {OrderMode.Asc, OrderMode.Desc};
96+
97+
private bool initialized = false;
9698

97-
98-
protected override void OnAfterRender(bool firstRender)
99+
protected override void OnParametersSet()
99100
{
100-
if (firstRender)
101+
if (!initialized && ElementProperties != null && ElementProperties.Any())
101102
{
102-
if(propertyDropdown != null && propertyDropdown.Elements != null && propertyDropdown.Elements.Any())
103-
{
104-
SelectedProperty = propertyDropdown.Elements.First();
105-
}
106-
107-
StateHasChanged();
103+
SelectedProperty = ElementProperties.First();
104+
initialized = true;
108105
}
109106
}
110107

@@ -113,16 +110,15 @@
113110
/// </summary>
114111
private void ReorderCollection()
115112
{
116-
if(propertyDropdown != null && Collection != null && !string.IsNullOrEmpty(propertyDropdown.SelectedElement))
113+
if(Collection != null && !string.IsNullOrEmpty(SelectedProperty))
117114
{
118115
if(SelectedProperty.Equals("Ip") && typeof(TCollectionItem) == typeof(ModellingAppServer))
119116
{
120117
Collection = Collection.OrderBy(GetIPAddressRange, new IPAddressRangeComparer()).ToList<TCollectionItem>();
121118
}
122119
else
123120
{
124-
string keySelectorProperty = propertyDropdown.SelectedElement;
125-
Func<TCollectionItem, object> keySelector = GetGenericOrderByExpression<TCollectionItem>(keySelectorProperty);
121+
Func<TCollectionItem, object> keySelector = GetGenericOrderByExpression<TCollectionItem>(SelectedProperty);
126122
Collection = Collection.OrderBy(keySelector).ToList();
127123
}
128124

@@ -131,8 +127,13 @@
131127
Collection.Reverse();
132128
}
133129

134-
InvokeAsync(StateHasChanged);
135-
CollectionReordered.InvokeAsync();
130+
if (initialized)
131+
{
132+
InvokeAsync(StateHasChanged);
133+
134+
}
135+
136+
CollectionReordered.InvokeAsync(Collection);
136137
}
137138
else
138139
{

0 commit comments

Comments
 (0)