mirror of
https://github.com/immense/Remotely.git
synced 2025-10-26 11:27:15 +00:00
104 lines
3.0 KiB
Plaintext
104 lines
3.0 KiB
Plaintext
@inherits AuthComponentBase
|
|
@attribute [Authorize]
|
|
@inject IDataService DataService
|
|
@inject IModalService ModalService
|
|
|
|
<button id="alertsButton" class="btn btn-info" @onclick="ToggleOpen">
|
|
<span class="oi oi-bell"></span>
|
|
<span id="alertsCount">
|
|
@_alerts.Count
|
|
</span>
|
|
</button>
|
|
|
|
<div id="alertsFrame" class="bg-secondary @FrameClass">
|
|
<div class="text-right">
|
|
<button id="clearAllAlertsButton" class="btn btn-secondary mt-2 mr-2 align-top" @onclick="ClearAllAlerts">
|
|
Clear All
|
|
</button>
|
|
<button id="closeAlertsFrameButton" class="btn btn-secondary btn-sm mt-2 mr-2 align-top" @onclick="ToggleOpen">
|
|
<span class="oi oi-x pointer"></span>
|
|
</button>
|
|
</div>
|
|
|
|
<div id="alertsBody" class="mt-3">
|
|
@foreach (var alert in _alerts)
|
|
{
|
|
<div @key="alert.ID" id="@alert.ID" class="card border-primary mb-3 mr-2 ml-2">
|
|
<div class="card-header">@alert.CreatedOn.ToString()</div>
|
|
<div class="card-body">
|
|
<h6 class="card-title">@alert.Device?.DeviceName</h6>
|
|
|
|
<p class="card-text">@alert.Message</p>
|
|
|
|
@if (!string.IsNullOrWhiteSpace(alert.Details))
|
|
{
|
|
<div class="small">
|
|
<button class="btn btn-link" @onclick="() => ShowAlertDetails(alert)">
|
|
View Details
|
|
</button>
|
|
</div>
|
|
}
|
|
|
|
<div class="text-right">
|
|
<button alert="@alert.ID"
|
|
class="btn btn-sm btn-secondary alert-dismiss-button"
|
|
type="button"
|
|
@onclick="()=> { _ = ClearAlert(alert); }">
|
|
Dismiss
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
|
|
@code {
|
|
private readonly List<Alert> _alerts = new();
|
|
private bool _isOpen;
|
|
|
|
private string FrameClass => _isOpen ? "open" : null;
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
await base.OnInitializedAsync();
|
|
|
|
if (IsAuthenticated)
|
|
{
|
|
GetAlerts();
|
|
}
|
|
}
|
|
|
|
private async Task ClearAlert(Alert alert)
|
|
{
|
|
await DataService.DeleteAlert(alert);
|
|
_alerts.Remove(alert);
|
|
}
|
|
|
|
private async Task ClearAllAlerts()
|
|
{
|
|
await DataService.DeleteAllAlerts(User.OrganizationID, User.UserName);
|
|
_alerts.Clear();
|
|
}
|
|
|
|
private void GetAlerts()
|
|
{
|
|
_alerts.Clear();
|
|
var alerts = DataService.GetAlerts(User.Id);
|
|
if (alerts.Any())
|
|
{
|
|
_alerts.AddRange(alerts);
|
|
}
|
|
}
|
|
|
|
private void ShowAlertDetails(Alert alert)
|
|
{
|
|
ModalService.ShowModal($"Alert Details for {alert.Device?.DeviceName}", alert.Details.Split('\n'));
|
|
}
|
|
|
|
private void ToggleOpen()
|
|
{
|
|
_isOpen = !_isOpen;
|
|
}
|
|
}
|