Skip to content
This repository was archived by the owner on Mar 25, 2025. It is now read-only.

Commit 14ca1c3

Browse files
[NEW-FEATURE] Refactor TcoCore and TcoData Blazor libraries (#526)
* Create draft PR for #525 * added tcosequencerobserver, added context for tco task, some minor changes in dataview * added possibility to set update interval to diagnostics, some minor tweaks Co-authored-by: Specter-13 <Specter-13@users.noreply.github.com> Co-authored-by: David Spavor <david.spavor@gmail.com>
1 parent ed2aee8 commit 14ca1c3

File tree

11 files changed

+144
-17
lines changed

11 files changed

+144
-17
lines changed
Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,16 @@
11
@page "/diagnostics"
2-
<h3>Diagnostics</h3>
32

43
<RenderableContentControl Context="@Entry.PlcHammer.TECH_MAIN._app"
54
Presentation="Diagnostics" />
65

76

8-
9-
@*<RenderableContentControl Context="@Entry.PlcHammer.TECH_MAIN._app._station001._messenger"
10-
Presentation="Base" />*@
117
@code {
128

139
protected override void OnInitialized()
1410
{
15-
TcoDiagnosticsViewModel.SetDefaultCategory(eMessageCategory.Fatal);
11+
TcoDiagnosticsViewModel.SetDefaultCategory(eMessageCategory.Trace);
1612
TcoDiagnosticsView.SetDefaultDepth(7);
13+
TcoDiagnosticsView.SetDiagnosticsUpdateInterval(2500);
1714
base.OnInitialized();
1815
}
1916
}

src/TcOpen.Hammer/PlcHammer.Hmi.Blazor/Pages/Security.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<SecurityManagementView @ref="@securityManagementView"></SecurityManagementView>
1313
</Authorized>
1414
<NotAuthorized>
15-
<p>Sorry, you are not authorized to see UserManagement. Please log in as administrator.</p>
15+
<p>Sorry, you are not authorized to see user management. Please log in as administrator.</p>
1616
</NotAuthorized>
1717
</AuthorizeView>
1818

src/TcOpen.Inxton/src/TcOpen.Inxton.Local.Security.Blazor/Views/AccountManagementView.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
</div>
4242
</Authorized>
4343
<NotAuthorized>
44-
<p>Sorry, you are not log in. Please log in.</p>
44+
<p>Sorry, you are not logged in. Please log in.</p>
4545
</NotAuthorized>
4646
</AuthorizeView>
4747

src/TcOpen.Inxton/src/TcOpen.Inxton.Local.Security.Blazor/Views/SecurityManagementView.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
</div>
2626
</Authorized>
2727
<NotAuthorized>
28-
<p>Sorry, you are not authorized to see UserManagement. Please log in as administrator.</p>
28+
<p>Sorry, you are not authorized to access user management. Please log in as administrator.</p>
2929
</NotAuthorized>
3030
</AuthorizeView>
3131

src/TcoCore/src/TcOpen.Inxton.TcoCore.Blazor/TcoDiagnostics/TcoDiagnosticsView.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,14 @@ public void OnSelectedMessage(PlainTcoMessage message)
2929

3030

3131
}
32-
32+
public static int SetDiagnosticsUpdateInterval(int value) => _diagnosticsUpdateInterval = value;
33+
private static int _diagnosticsUpdateInterval { get; set; } = 2500;
3334
private Timer messageUpdateTimer;
3435
private void DiagnosticsUpdateTimer()
3536
{
3637
if (messageUpdateTimer == null)
3738
{
38-
messageUpdateTimer = new Timer(2500);
39+
messageUpdateTimer = new Timer(_diagnosticsUpdateInterval);
3940
messageUpdateTimer.Elapsed += MessageUpdateTimer_Elapsed;
4041
messageUpdateTimer.AutoReset = true;
4142
messageUpdateTimer.Enabled = true;

src/TcoCore/src/TcOpen.Inxton.TcoCore.Blazor/TcoDiagnostics/TcoDiagnosticsViewModel.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ public eMessageCategory MinMessageCategoryFilter
5050
public static eMessageCategory SetDefaultCategory(eMessageCategory item) => DefaulCategory = item;
5151

5252
public static eMessageCategory DefaulCategory { get; set; } = eMessageCategory.Info;
53+
5354

5455
bool diagnosticsRunning;
5556

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
@namespace TcoCore
2+
@inherits RenderableViewModelComponentBase<TcoSequencerObserverViewModel>
3+
4+
<table class="table table-hover">
5+
<thead>
6+
<tr>
7+
<th scope="col">Order</th>
8+
<th scope="col">ID</th>
9+
<th scope="col">Description</th>
10+
<th scope="col">Enabled</th>
11+
<th scope="col">Duration</th>
12+
</tr>
13+
</thead>
14+
<tbody>
15+
16+
@foreach (var step in Steps)
17+
{
18+
var rowActive = "";
19+
@if (step.IsActive)
20+
{
21+
rowActive = "fw-bolder";
22+
}
23+
<tr class="@rowActive">
24+
<th>@step.Order</th>
25+
<td>@step.ID</td>
26+
<td>@step.Description</td>
27+
<td>@step.Enabled</td>
28+
<td>@step.Duration</td>
29+
</tr>
30+
}
31+
32+
</tbody>
33+
34+
</table>
35+
36+
37+
@code {
38+
39+
[Parameter]
40+
public IVortexElement Context { get; set; }
41+
private IEnumerable<PlainStepDetails> Steps { get; set; } = new List<PlainStepDetails>();
42+
private IEnumerable<PlainStepDetails> PreviousSteps { get; set; } = new List<PlainStepDetails>();
43+
protected override void OnInitialized()
44+
{
45+
if (ViewModel == null)
46+
{
47+
ViewModel = new TcoSequencerObserverViewModel();
48+
ViewModel.Model = Context;
49+
}
50+
SetTimer();
51+
}
52+
53+
54+
private System.Timers.Timer messageUpdateTimer;
55+
private void SetTimer()
56+
{
57+
if (messageUpdateTimer == null)
58+
{
59+
messageUpdateTimer = new System.Timers.Timer(1000);
60+
messageUpdateTimer.Elapsed += MessageUpdateTimer_Elapsed;
61+
messageUpdateTimer.AutoReset = true;
62+
messageUpdateTimer.Enabled = true;
63+
}
64+
}
65+
66+
private async void MessageUpdateTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
67+
{
68+
69+
ViewModel?.UpdateStepsTable();
70+
if (ViewModel.Steps == null)
71+
{
72+
Steps = PreviousSteps;
73+
}
74+
else
75+
{
76+
Steps = ViewModel.Steps;
77+
PreviousSteps = Steps;
78+
await InvokeAsync(StateHasChanged);
79+
}
80+
81+
}
82+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
using Vortex.Connector;
7+
using Vortex.Presentation;
8+
9+
namespace TcoCore
10+
{
11+
public class TcoSequencerObserverViewModel : RenderableViewModelBase
12+
{
13+
14+
public void UpdateStepsTable()
15+
{
16+
Observer.Read();
17+
var steps = Observer._steps.Take(Observer._stepsCount.LastValue).Select(p =>
18+
{
19+
var plain = p.CreatePlainerType();
20+
plain.CopyCyclicToPlain(p);
21+
plain.IsActive = plain.Order == this.Observer._currentStepOrder.LastValue;
22+
return plain;
23+
});
24+
Steps = steps;
25+
26+
27+
}
28+
29+
public IEnumerable<PlainStepDetails> Steps { get; set; }
30+
public TcoSequencerObserver Observer { get; set; }
31+
public override object Model { get => Observer; set { Observer = value as TcoSequencerObserver; } }
32+
}
33+
}

src/TcoCore/src/TcOpen.Inxton.TcoCore.Blazor/TcoTask/TcoTaskView.razor

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
</div>
2626

2727
@code{
28+
[Parameter]
29+
public TcoTask Context { get; set; }
2830
public string StatusClass => ViewModel.Component._taskState.Synchron == 30 ? "btn-danger" : "btn-primary";
2931

3032
public bool IsError => ViewModel.Component._taskState.Synchron == 30;
@@ -40,4 +42,13 @@
4042
,
4143
(short)eTaskState.Done => () => { }
4244
};
45+
46+
protected override Task OnInitializedAsync()
47+
{
48+
if (ViewModel == null)
49+
{
50+
ViewModel = new TcoTaskViewModel() { Model = Context };
51+
}
52+
return base.OnInitializedAsync();
53+
}
4354
}

src/TcoData/src/Blazor/TcOpen.Inxton.Data.Blazor/Data/DataView.razor

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
@bind="@DataViewModel.SearchMode">
2727
@foreach (var item in eSearchModes)
2828
{
29-
<option class="form-control" value="@item.">@item.ToString() </option>
29+
<option class="form-control" value="@item">@item.ToString() </option>
3030
}
3131
</select>
3232
</div>
@@ -58,7 +58,12 @@
5858
<tbody>
5959
@foreach (var item in DataViewModel.ObservableRecords.ToList())
6060
{
61-
<tr @onclick="@(() => RowClicked(item))">
61+
var color = "white";
62+
@if (DataViewModel?.SelectedRecord?._EntityId == item._EntityId)
63+
{
64+
color = "#e9ecef";
65+
}
66+
<tr style="background-color: @color;" @onclick="@(() => RowClicked(item))">
6267
<td>@item._EntityId</td>
6368
</tr>
6469
}
@@ -346,8 +351,7 @@
346351
DataViewModel.SelectedRecord = item;
347352
dynamic dataExchange = DataViewModel.DataExchange;
348353
_data = (IVortexElement)dataExchange._data;
349-
StateHasChanged();
350-
354+
_isRowSelected = true;
351355
}
352356

353357
private async Task PageChanged(int pageNumber)
@@ -422,9 +426,6 @@
422426

423427
protected override async Task OnInitializedAsync()
424428
{
425-
IsLoading = true;
426-
await Filter();
427-
IsLoading = false;
428429
DataViewModel.Mode = ViewMode.Display;
429430
DataViewModel.SetDefaultButtonState();
430431
}

src/TcoData/src/Blazor/TcOpen.Inxton.Data.Blazor/Data/DataViewModel.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public DataViewModel(IRepository<T> repository, TcoDataExchange dataExchange) :
3030
{
3131
this.DataExchange = dataExchange;
3232
DataBrowser = CreateBrowsable(repository);
33+
FillObservableRecords();
3334
}
3435

3536
public List<IBrowsableDataObject> ObservableRecords { get; private set; } = new List<IBrowsableDataObject>();

0 commit comments

Comments
 (0)