remove logging - invert if
remove unused imports remove unused variables refactor namespace minimize the number of visible toasts bump CSS file name version
This commit is contained in:
parent
79ec577930
commit
1afb245c7c
7 changed files with 148 additions and 400 deletions
|
@ -54,8 +54,7 @@ public class CabinetDrawerService : ICabinetDrawerService
|
|||
var drawer = await _asyncStorageService
|
||||
.GetItemAsync<ActivityDrawer>($"{companyId}.{ActivityDrawer.Label}");
|
||||
if (drawer == null) force = true;
|
||||
if (force)
|
||||
{
|
||||
if (!force) return drawer ?? new ActivityDrawer();
|
||||
var result = await _activityRepo.GetCustomerActivities(companyId);
|
||||
drawer = new ActivityDrawer
|
||||
{
|
||||
|
@ -63,8 +62,6 @@ public class CabinetDrawerService : ICabinetDrawerService
|
|||
Content = result
|
||||
};
|
||||
await StoreActivityDrawerAsync(companyId, drawer);
|
||||
}
|
||||
_logger.LogDebug("ActivityDrawer {}", JsonSerializer.Serialize(drawer, _options));
|
||||
return drawer ?? new ActivityDrawer();
|
||||
}
|
||||
|
||||
|
@ -81,8 +78,7 @@ public class CabinetDrawerService : ICabinetDrawerService
|
|||
.GetItemAsync<CatalogDrawer>($"{countryCode}.{CatalogDrawer.Label}");
|
||||
|
||||
if (drawer == null) force = true;
|
||||
if (force)
|
||||
{
|
||||
if (!force) return drawer ?? new CatalogDrawer();
|
||||
var result = await _catalogRepo.GetPriceList(countryCode);
|
||||
drawer = new CatalogDrawer
|
||||
{
|
||||
|
@ -90,8 +86,6 @@ public class CabinetDrawerService : ICabinetDrawerService
|
|||
Content = result
|
||||
};
|
||||
await StoreCatalogDrawerAsync(countryCode, drawer);
|
||||
}
|
||||
_logger.LogDebug("CatalogDrawer {}", JsonSerializer.Serialize(drawer, _options));
|
||||
return drawer ?? new CatalogDrawer();
|
||||
}
|
||||
|
||||
|
@ -108,8 +102,7 @@ public class CabinetDrawerService : ICabinetDrawerService
|
|||
.GetItemAsync<InfoDrawer>($"{companyId}.{InfoDrawer.Label}");
|
||||
|
||||
if (drawer == null) force = true;
|
||||
if (force)
|
||||
{
|
||||
if (!force) return drawer ?? new InfoDrawer();
|
||||
var result = await _customerRepo.GetCompanyById(companyId);
|
||||
drawer = new InfoDrawer
|
||||
{
|
||||
|
@ -117,8 +110,6 @@ public class CabinetDrawerService : ICabinetDrawerService
|
|||
Content = result
|
||||
};
|
||||
await StoreInfoDrawerAsync(companyId, drawer);
|
||||
}
|
||||
_logger.LogDebug("InfoDrawer {}", JsonSerializer.Serialize(drawer, _options));
|
||||
return drawer ?? new InfoDrawer();
|
||||
}
|
||||
|
||||
|
@ -135,8 +126,7 @@ public class CabinetDrawerService : ICabinetDrawerService
|
|||
.GetItemAsync<InventoryDrawer>($"{companyId}.{InventoryDrawer.Label}");
|
||||
|
||||
if (drawer == null) force = true;
|
||||
if (force)
|
||||
{
|
||||
if (!force) return drawer ?? new InventoryDrawer();
|
||||
var result = await _historyRepo.GetInventory(companyId);
|
||||
drawer = new InventoryDrawer
|
||||
{
|
||||
|
@ -144,8 +134,6 @@ public class CabinetDrawerService : ICabinetDrawerService
|
|||
Content = result
|
||||
};
|
||||
await StoreInventoryDrawerAsync(companyId, drawer);
|
||||
}
|
||||
_logger.LogDebug("InventoryDrawer {}", JsonSerializer.Serialize(drawer, _options));
|
||||
return drawer ?? new InventoryDrawer();
|
||||
}
|
||||
|
||||
|
@ -161,8 +149,7 @@ public class CabinetDrawerService : ICabinetDrawerService
|
|||
var drawer = await _asyncStorageService
|
||||
.GetItemAsync<InvoiceDrawer>($"{companyId}.{InvoiceDrawer.Label}");
|
||||
if (drawer == null) force = true;
|
||||
if (force)
|
||||
{
|
||||
if (!force) return drawer ?? new InvoiceDrawer();
|
||||
var result = await _historyRepo.GetInvoiceList(companyId);
|
||||
drawer = new InvoiceDrawer
|
||||
{
|
||||
|
@ -170,9 +157,6 @@ public class CabinetDrawerService : ICabinetDrawerService
|
|||
Content = result
|
||||
};
|
||||
await StoreInvoiceDrawerAsync(companyId, drawer);
|
||||
}
|
||||
_logger.LogDebug("InvoiceDrawer {}", JsonSerializer.Serialize(drawer, _options));
|
||||
|
||||
return drawer ?? new InvoiceDrawer();
|
||||
}
|
||||
|
||||
|
@ -189,8 +173,7 @@ public class CabinetDrawerService : ICabinetDrawerService
|
|||
.GetItemAsync<StatisticDrawer>($"{companyId}.{StatisticDrawer.Label}");
|
||||
|
||||
if (drawer == null) force = true;
|
||||
if (force)
|
||||
{
|
||||
if (!force) return drawer ?? new StatisticDrawer();
|
||||
var result = await _historyRepo.GetProductInvoiceLines(companyId);
|
||||
var content = result.Select(x => new HistoryFilter
|
||||
{
|
||||
|
@ -207,8 +190,6 @@ public class CabinetDrawerService : ICabinetDrawerService
|
|||
Content = content
|
||||
};
|
||||
await StoreStatisticDrawerAsync(companyId, drawer);
|
||||
}
|
||||
_logger.LogDebug("StatisticDrawer {}", JsonSerializer.Serialize(drawer, _options));
|
||||
return drawer ?? new StatisticDrawer();
|
||||
}
|
||||
|
||||
|
|
|
@ -16,8 +16,6 @@
|
|||
|
||||
using System.Text.Json;
|
||||
using Blazored.LocalStorage;
|
||||
using Microsoft.AspNetCore.DataProtection.KeyManagement;
|
||||
using Wonky.Client.Models;
|
||||
using Wonky.Entity.DTO;
|
||||
|
||||
namespace Wonky.Client.Local.Services;
|
||||
|
|
|
@ -15,7 +15,9 @@
|
|||
|
||||
using System.Text.Json;
|
||||
using Blazored.LocalStorage;
|
||||
using Blazored.Toast;
|
||||
using Blazored.Toast.Services;
|
||||
using Blazored.Toast.Configuration;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.AspNetCore.Components.Forms;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
@ -47,7 +49,7 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
[Inject] public VatInfoLookupService VatService { get; set; }
|
||||
[Inject] public ILocalStorageService Storage { get; set; }
|
||||
[Inject] public IUserInfoService UserInfoService { get; set; }
|
||||
[Inject] public IOptions<AppInfo?>? AppInfo { get; set; }
|
||||
[Inject] public IOptions<AppInfo>? AppInfo { get; set; }
|
||||
[Inject] public ICabinetDrawerService DrawerService { get; set; }
|
||||
|
||||
// ###########################################################################
|
||||
|
@ -65,8 +67,8 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
private List<ContactDto> _contacts = new();
|
||||
private string VatState { get; set; } = "the-ugly";
|
||||
private bool _validVat;
|
||||
private bool _hasFolded;
|
||||
private string _currentVat = "";
|
||||
// private bool _hasFolded;
|
||||
// private string _currentVat = "";
|
||||
private string _countryCode = "dk";
|
||||
private string _visitStateCss = "the-ugly";
|
||||
private int _enableActivity = 1;
|
||||
|
@ -81,14 +83,16 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
private string _invoiceLink = "";
|
||||
private string _newActivityLink = "";
|
||||
private int _enableLink = 1;
|
||||
private ActivityDrawer _activityDrawer = new();
|
||||
private InventoryDrawer _inventoryDrawer = new();
|
||||
private InvoiceDrawer _invoiceDrawer = new();
|
||||
private StatisticDrawer _statisticDrawer = new();
|
||||
// private ActivityDrawer _activityDrawer = new();
|
||||
// private InventoryDrawer _inventoryDrawer = new();
|
||||
// private InvoiceDrawer _invoiceDrawer = new();
|
||||
// private StatisticDrawer _statisticDrawer = new();
|
||||
private UserManagerEditView _userInfo = new();
|
||||
private InfoDrawer _infoDrawer = new();
|
||||
private CompanyDto _company = new();
|
||||
private string _companyId = "";
|
||||
// private string _companyId = "";
|
||||
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
/*
|
||||
|
@ -153,7 +157,7 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
* toggle view button text
|
||||
*/
|
||||
_toggleButtonText = _company.IsHidden == 0 ? "Udelad kunde i oversigt" : "Brug Normal Visning";
|
||||
_currentVat = _company.VatNumber;
|
||||
// _currentVat = _company.VatNumber;
|
||||
_company.CountryCode = _userInfo.CountryCode.ToLower();
|
||||
/*
|
||||
* visit interval init
|
||||
|
@ -193,7 +197,7 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
/*
|
||||
* this is only used if user has selected to show closed companies
|
||||
*/
|
||||
_hasFolded = true;
|
||||
// _hasFolded = true;
|
||||
VatState = "the-dead";
|
||||
_visitStateCss = "the-dead";
|
||||
}
|
||||
|
@ -206,14 +210,11 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
_validVat = _company.ValidVat == 1; // true/false flag set if InfoDrawer.Company has a valid vatNumber
|
||||
VatState = _company.ValidVat == 1 ? "the-good" : "no-vat"; // assign css class
|
||||
}
|
||||
/*
|
||||
* create search address from address
|
||||
*/
|
||||
|
||||
if (_countryIsDk)
|
||||
{
|
||||
_companyVatAddress = PrepareVatAddress(_company);
|
||||
}
|
||||
await GetContacts(CompanyId);
|
||||
}
|
||||
/*
|
||||
* remove loading image
|
||||
|
@ -221,39 +222,43 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
_working = false;
|
||||
}
|
||||
|
||||
|
||||
protected override async Task OnAfterRenderAsync(bool firstRender)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(_companyId))
|
||||
if (firstRender)
|
||||
{
|
||||
_companyId = CompanyId;
|
||||
await GetContacts(CompanyId);
|
||||
_ = await HistoryRepo.RequestErpSync(CompanyId, _company.HistorySync, false);
|
||||
_invoiceDrawer = await DrawerService.GetInvoiceDrawerAsync(CompanyId, true);
|
||||
_inventoryDrawer = await DrawerService.GetInventoryDrawerAsync(CompanyId, true);
|
||||
_activityDrawer = await DrawerService.GetActivityDrawerAsync(CompanyId, true);
|
||||
_statisticDrawer = await DrawerService.GetStatisticDrawerAsync(CompanyId, true);
|
||||
_ = await DrawerService.GetInvoiceDrawerAsync(CompanyId);
|
||||
_ = await DrawerService.GetInventoryDrawerAsync(CompanyId);
|
||||
_ = await DrawerService.GetActivityDrawerAsync(CompanyId);
|
||||
_ = await DrawerService.GetStatisticDrawerAsync(CompanyId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private async Task ReloadHistory()
|
||||
{
|
||||
Toaster.ShowInfo("Afventer svar fra tjenester ...");
|
||||
_enableLink = 0;
|
||||
_enableActivity = 0;
|
||||
|
||||
Toaster.ShowWarning("Arbejder på sagen ...");
|
||||
var newSync = await HistoryRepo.RequestErpSync(CompanyId, _company.HistorySync, false);
|
||||
var newSync = await HistoryRepo.RequestErpSync(CompanyId, _company.HistorySync, true);
|
||||
if (!string.IsNullOrWhiteSpace(newSync))
|
||||
{
|
||||
_infoDrawer = await DrawerService.GetInfoDrawerAsync(CompanyId, true);
|
||||
_invoiceDrawer = await DrawerService.GetInvoiceDrawerAsync(CompanyId, true);
|
||||
_inventoryDrawer = await DrawerService.GetInventoryDrawerAsync(CompanyId, true);
|
||||
_activityDrawer = await DrawerService.GetActivityDrawerAsync(CompanyId, true);
|
||||
_statisticDrawer = await DrawerService.GetStatisticDrawerAsync(CompanyId, true);
|
||||
_company = _infoDrawer.Content;
|
||||
_ = await DrawerService.GetInvoiceDrawerAsync(CompanyId, true);
|
||||
_ = await DrawerService.GetInventoryDrawerAsync(CompanyId, true);
|
||||
_ = await DrawerService.GetActivityDrawerAsync(CompanyId, true);
|
||||
_ = await DrawerService.GetStatisticDrawerAsync(CompanyId, true);
|
||||
}
|
||||
Toaster.ShowSuccess("Data er snart klar ....");
|
||||
_enableLink = 1;
|
||||
_enableActivity = _company.ValidVat;
|
||||
// StateHasChanged();
|
||||
Toaster.ShowSuccess("Alle tjenester har svaret.");
|
||||
}
|
||||
|
||||
|
||||
private void ToggleErpEdit()
|
||||
{
|
||||
_erpEditDisabled = !_erpEditDisabled;
|
||||
|
@ -280,6 +285,9 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* Request contacts for company
|
||||
*/
|
||||
private async Task GetContacts(string companyId)
|
||||
{
|
||||
/*
|
||||
|
@ -293,12 +301,18 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* Show vat number lookup form only danish companies
|
||||
*/
|
||||
private void OpenVatLookupModal()
|
||||
{
|
||||
_vatLookupPopup.Show();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Callback from vat lookup overlay with registration infomration
|
||||
*/
|
||||
private void SelectedCompanyCallback(VirkRegInfo regInfo)
|
||||
{
|
||||
_validVat = regInfo.States[0].State.ToLower() == "normal";
|
||||
|
@ -320,6 +334,9 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* Show contact overlay
|
||||
*/
|
||||
private void OpenContactPopup(ContactDto contact)
|
||||
{
|
||||
/*
|
||||
|
@ -332,10 +349,11 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
_contactViewPopup.Show();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Create request to update contact information
|
||||
/// </summary>
|
||||
/// <param name="contact"></param>
|
||||
|
||||
/*
|
||||
* Callback from contact overlay
|
||||
* Create / Update contact depending on contactId present
|
||||
*/
|
||||
private async Task WriteContactCallback(ContactDto contact)
|
||||
{
|
||||
if (_working)
|
||||
|
@ -369,10 +387,10 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
_working = false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Delete contact information
|
||||
/// </summary>
|
||||
/// <param name="contactId"></param>
|
||||
|
||||
/*
|
||||
* Delete contact callback
|
||||
*/
|
||||
private async Task DeleteContactCallback(string contactId)
|
||||
{
|
||||
if (_working)
|
||||
|
@ -393,10 +411,10 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
_working = false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Update CRM data
|
||||
/// </summary>
|
||||
/// <returns>true/false</returns>
|
||||
|
||||
/*
|
||||
* Execute post requset - updating CRM data (non ERP related)
|
||||
*/
|
||||
private async Task PostCrmData()
|
||||
{
|
||||
if (_working)
|
||||
|
@ -417,10 +435,10 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
Toaster.ShowSuccess("Dine CRM data er opdateret.");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Update ERP data
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
|
||||
/*
|
||||
* Execute post requset - updating ERP data (notifying office)
|
||||
*/
|
||||
private async Task UpdateErpData()
|
||||
{
|
||||
if (_working)
|
||||
|
@ -439,12 +457,19 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
Toaster.ShowSuccess("ERP data er opdateret. Notifikation til kontoret er sendt.");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Update Vat Number
|
||||
/// </summary>
|
||||
/// <returns>true/false</returns>
|
||||
|
||||
/*
|
||||
* Execute post requset - updating CVR/VAT/MOMS/ORG
|
||||
* many names for the same thing
|
||||
* execpt moms is local - VAT is global
|
||||
*/
|
||||
private async Task UpdateVatNumber()
|
||||
{
|
||||
/*
|
||||
* prevent duped actions
|
||||
*/
|
||||
if (_working)
|
||||
return;
|
||||
/*
|
||||
* VAT format validation
|
||||
*/
|
||||
|
@ -453,9 +478,6 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
Toaster.ShowError($"Moms Nummer ugyldigt");
|
||||
return;
|
||||
}
|
||||
|
||||
if (_working)
|
||||
return;
|
||||
_working = true;
|
||||
_vatEditDisabled = true;
|
||||
Toaster.ShowInfo("Vent venligst ...");
|
||||
|
@ -470,11 +492,11 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
Toaster.ShowSuccess("Moms Nr. er opdateret.");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Prepare vat address from InfoDrawer.Company model
|
||||
/// </summary>
|
||||
/// <param name="company"></param>
|
||||
/// <returns></returns>
|
||||
|
||||
/*
|
||||
* Prepare vat address
|
||||
* used to lookup danish company
|
||||
*/
|
||||
private static VatAddress PrepareVatAddress(CompanyDto company)
|
||||
{
|
||||
var digits = "1234567890".ToCharArray();
|
||||
|
@ -511,19 +533,18 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Force enable activity
|
||||
/// </summary>
|
||||
/*
|
||||
* Force enable activioty - even if company has turned keys and shut down
|
||||
*/
|
||||
private void ForceActivity()
|
||||
{
|
||||
_enableActivity = _enableActivity == 0 ? 1 : 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Context field change event callback
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
|
||||
/*
|
||||
* Input form field change event
|
||||
*/
|
||||
private void HandleFieldChanged(object? sender, FieldChangedEventArgs? e)
|
||||
{
|
||||
|
||||
|
@ -544,11 +565,10 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
StateHasChanged();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Context validation change event callback
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
|
||||
/*
|
||||
* Input form validation process
|
||||
*/
|
||||
private void ValidationChanged(object sender, ValidationStateChangedEventArgs e)
|
||||
{
|
||||
_erpContext.OnFieldChanged -= HandleFieldChanged;
|
||||
|
@ -560,9 +580,10 @@ public partial class AdvisorCustomerViewEditPage : IDisposable
|
|||
_erpContext.OnValidationStateChanged += ValidationChanged!;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Dispose
|
||||
/// </summary>
|
||||
|
||||
/*
|
||||
* Required IDispose interface implementation
|
||||
*/
|
||||
public void Dispose()
|
||||
{
|
||||
Interceptor.DisposeEvent();
|
||||
|
|
|
@ -93,7 +93,7 @@ public partial class SystemUserCreatePage : IDisposable
|
|||
/*
|
||||
* Map form input to a model the backend expects
|
||||
*/
|
||||
NewUserDto = Mapper.MapCreateUser(UserForm);
|
||||
NewUserDto = MapUtils.MapCreateUser(UserForm);
|
||||
/*
|
||||
* Send Post Request
|
||||
*/
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
<div class="content d-none d-print-block">
|
||||
@Body
|
||||
</div>
|
||||
<BlazoredToasts Position="ToastPosition.TopRight" Timeout="10" />
|
||||
<BlazoredToasts Position="ToastPosition.TopRight" Timeout="5" MaxToastCount="3" ShowProgressBar="true" />
|
||||
</main>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -1,252 +0,0 @@
|
|||
body {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.draft-expires-msg {
|
||||
font-size: 0.8em;
|
||||
}
|
||||
.busy-signal {
|
||||
float: right;
|
||||
z-index: 100;
|
||||
position: relative;
|
||||
top: 1px;
|
||||
right: 10px;
|
||||
}
|
||||
.workDate {
|
||||
font-variant: small-caps;
|
||||
}
|
||||
|
||||
.action-link-element {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.i-larger {
|
||||
font-size: 1.3rem;
|
||||
}
|
||||
|
||||
.btn.btn-edit {
|
||||
color: #030303;
|
||||
background-color: #a2a2ec;
|
||||
}
|
||||
|
||||
html, body {
|
||||
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
||||
}
|
||||
|
||||
h1,h2:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
a, .btn-link {
|
||||
color: #0071c1;
|
||||
}
|
||||
|
||||
/*.btn-primary {*/
|
||||
/* color: #fff;*/
|
||||
/* background-color: #1b6ec2;*/
|
||||
/* border-color: #1861ac;*/
|
||||
/*}*/
|
||||
|
||||
.inno {
|
||||
color: #ffaa00;
|
||||
}
|
||||
|
||||
.inno-display {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.inno-hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.content {
|
||||
padding-top: 1.1rem;
|
||||
}
|
||||
|
||||
.valid.modified:not([type=checkbox]) {
|
||||
outline: 1px solid #26b050;
|
||||
}
|
||||
|
||||
.invalid {
|
||||
outline: 1px solid red;
|
||||
}
|
||||
|
||||
.validation-message {
|
||||
color: red;
|
||||
}
|
||||
|
||||
/* begin state elements */
|
||||
.state {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
min-width: 16px;
|
||||
min-height: 16px;
|
||||
}
|
||||
.the-good {
|
||||
color: green;
|
||||
}
|
||||
.the-bad {
|
||||
color: orange;
|
||||
}
|
||||
.the-ugly {
|
||||
color: red;
|
||||
}
|
||||
.the-dead {
|
||||
color: black;
|
||||
}
|
||||
.the-fast {
|
||||
color: orange;
|
||||
}
|
||||
.the-draw {
|
||||
color: mediumpurple;
|
||||
}
|
||||
.the-good-bg {
|
||||
background-color: green;
|
||||
}
|
||||
.the-bad-bg {
|
||||
background-color: orange;
|
||||
}
|
||||
.the-ugly-bg {
|
||||
background-color: red;
|
||||
}
|
||||
.the-draw-bg {
|
||||
background-color: mediumpurple;
|
||||
}
|
||||
.no-vat-bg {
|
||||
background-color: lightskyblue;
|
||||
}
|
||||
.the-dead-bg {
|
||||
background-color: black;
|
||||
}
|
||||
/* end state elements */
|
||||
|
||||
/* led elements */
|
||||
.led-box {
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
margin: auto;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.led-red {
|
||||
margin: 5px;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
background-color: #F00;
|
||||
border-radius: 50%;
|
||||
box-shadow: rgba(0, 0, 0, 0.2) 0 -1px 7px 1px, inset #441313 0 -1px 9px, rgba(255, 0, 0, 0.5) 0 2px 12px;
|
||||
-webkit-animation: blinkRed 0.5s infinite;
|
||||
-moz-animation: blinkRed 0.5s infinite;
|
||||
-ms-animation: blinkRed 0.5s infinite;
|
||||
-o-animation: blinkRed 0.5s infinite;
|
||||
animation: blinkRed 0.5s infinite;
|
||||
animation-iteration-count: infinite;
|
||||
}
|
||||
|
||||
@-webkit-keyframes blinkRed {
|
||||
from { background-color: #F00; }
|
||||
50% { background-color: #A00; box-shadow: rgba(0, 0, 0, 0.2) 0 -1px 7px 1px, inset #441313 0 -1px 9px, rgba(255, 0, 0, 0.5) 0 2px 0;}
|
||||
to { background-color: #F00; }
|
||||
}
|
||||
@-moz-keyframes blinkRed {
|
||||
from { background-color: #F00; }
|
||||
50% { background-color: #A00; box-shadow: rgba(0, 0, 0, 0.2) 0 -1px 7px 1px, inset #441313 0 -1px 9px, rgba(255, 0, 0, 0.5) 0 2px 0;}
|
||||
to { background-color: #F00; }
|
||||
}
|
||||
@-ms-keyframes blinkRed {
|
||||
from { background-color: #F00; }
|
||||
50% { background-color: #A00; box-shadow: rgba(0, 0, 0, 0.2) 0 -1px 7px 1px, inset #441313 0 -1px 9px, rgba(255, 0, 0, 0.5) 0 2px 0;}
|
||||
to { background-color: #F00; }
|
||||
}
|
||||
@-o-keyframes blinkRed {
|
||||
from { background-color: #F00; }
|
||||
50% { background-color: #A00; box-shadow: rgba(0, 0, 0, 0.2) 0 -1px 7px 1px, inset #441313 0 -1px 9px, rgba(255, 0, 0, 0.5) 0 2px 0;}
|
||||
to { background-color: #F00; }
|
||||
}
|
||||
@keyframes blinkRed {
|
||||
from { background-color: #F00; }
|
||||
50% { background-color: #A00; box-shadow: rgba(0, 0, 0, 0.2) 0 -1px 7px 1px, inset #441313 0 -1px 9px, rgba(255, 0, 0, 0.5) 0 2px 0;}
|
||||
to { background-color: #F00; }
|
||||
}
|
||||
|
||||
.led-yellow {
|
||||
margin: 0 auto;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
background-color: #FF0;
|
||||
border-radius: 50%;
|
||||
box-shadow: rgba(0, 0, 0, 0.2) 0 -1px 7px 1px, inset #808002 0 -1px 9px, #FF0 0 2px 12px;
|
||||
-webkit-animation: blinkYellow 1s infinite;
|
||||
-moz-animation: blinkYellow 1s infinite;
|
||||
-ms-animation: blinkYellow 1s infinite;
|
||||
-o-animation: blinkYellow 1s infinite;
|
||||
animation: blinkYellow 1s infinite;
|
||||
}
|
||||
|
||||
@-webkit-keyframes blinkYellow {
|
||||
from { background-color: #FF0; }
|
||||
50% { background-color: #AA0; box-shadow: rgba(0, 0, 0, 0.2) 0 -1px 7px 1px, inset #808002 0 -1px 9px, #FF0 0 2px 0; }
|
||||
to { background-color: #FF0; }
|
||||
}
|
||||
@-moz-keyframes blinkYellow {
|
||||
from { background-color: #FF0; }
|
||||
50% { background-color: #AA0; box-shadow: rgba(0, 0, 0, 0.2) 0 -1px 7px 1px, inset #808002 0 -1px 9px, #FF0 0 2px 0; }
|
||||
to { background-color: #FF0; }
|
||||
}
|
||||
@-ms-keyframes blinkYellow {
|
||||
from { background-color: #FF0; }
|
||||
50% { background-color: #AA0; box-shadow: rgba(0, 0, 0, 0.2) 0 -1px 7px 1px, inset #808002 0 -1px 9px, #FF0 0 2px 0; }
|
||||
to { background-color: #FF0; }
|
||||
}
|
||||
@-o-keyframes blinkYellow {
|
||||
from { background-color: #FF0; }
|
||||
50% { background-color: #AA0; box-shadow: rgba(0, 0, 0, 0.2) 0 -1px 7px 1px, inset #808002 0 -1px 9px, #FF0 0 2px 0; }
|
||||
to { background-color: #FF0; }
|
||||
}
|
||||
@keyframes blinkYellow {
|
||||
from { background-color: #FF0; }
|
||||
50% { background-color: #AA0; box-shadow: rgba(0, 0, 0, 0.2) 0 -1px 7px 1px, inset #808002 0 -1px 9px, #FF0 0 2px 0; }
|
||||
to { background-color: #FF0; }
|
||||
}
|
||||
|
||||
.led-green {
|
||||
margin: 0 auto;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
background-color: #ABFF00;
|
||||
border-radius: 50%;
|
||||
box-shadow: rgba(0, 0, 0, 0.2) 0 -1px 7px 1px, inset #304701 0 -1px 9px, #89FF00 0 2px 12px;
|
||||
}
|
||||
|
||||
.led-blue {
|
||||
margin: 0 auto;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
background-color: #24E0FF;
|
||||
border-radius: 50%;
|
||||
box-shadow: rgba(0, 0, 0, 0.2) 0 -1px 7px 1px, inset #006 0 -1px 9px, #3F8CFF 0 2px 14px;
|
||||
}
|
||||
/* end led elements */
|
||||
|
||||
.footer {
|
||||
border-top: 2px solid orange;
|
||||
position: relative;
|
||||
margin-top: -150px;
|
||||
height: 150px;
|
||||
width: 100%;
|
||||
clear: both;
|
||||
padding-top: 20px;
|
||||
}
|
||||
|
||||
footer.version {
|
||||
display: block;
|
||||
font-weight: bold;
|
||||
padding: 0 10px 0 0;
|
||||
}
|
||||
|
||||
.back-to-top {
|
||||
position: fixed;
|
||||
bottom: 25px;
|
||||
right: 25px;
|
||||
display: none;
|
||||
}
|
|
@ -14,7 +14,7 @@
|
|||
<link href="/bootstrap/css/bootstrap.min.css" rel="stylesheet" >
|
||||
<link href="/bootstrap/css/bootstrap-icons.min.css" rel="stylesheet" >
|
||||
<link href="/flag-icons/flag-icons.css" rel="stylesheet" >
|
||||
<link href="/css/20230607.css" rel="stylesheet" >
|
||||
<link href="/css/20230614.css" rel="stylesheet" >
|
||||
<link href="/css/print.css" rel="stylesheet" >
|
||||
<link href="/Wonky.Client.styles.css" rel="stylesheet" >
|
||||
<link href="/_content/Blazored.Toast/blazored-toast.min.css" rel="stylesheet" >
|
||||
|
|
Loading…
Reference in a new issue