WIP: rename pages
This commit is contained in:
parent
b4819ce547
commit
e740f32fd7
5 changed files with 8 additions and 158 deletions
|
@ -1,150 +0,0 @@
|
||||||
|
|
||||||
// Copyright (C) 2022 FCS Frede's Computer Services.
|
|
||||||
// This program is free software: you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU Affero General Public License as
|
|
||||||
// published by the Free Software Foundation, either version 3 of the
|
|
||||||
// License, or (at your option) any later version.
|
|
||||||
//
|
|
||||||
// This program is distributed in the hope that it will be useful,
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
// GNU Affero General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU Affero General Public License
|
|
||||||
// along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html]
|
|
||||||
//
|
|
||||||
|
|
||||||
using System.Globalization;
|
|
||||||
using Microsoft.AspNetCore.Components;
|
|
||||||
using Microsoft.AspNetCore.Components.Forms;
|
|
||||||
using Microsoft.AspNetCore.Components.Rendering;
|
|
||||||
|
|
||||||
namespace Wonky.Client.Helpers;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// InputDateTime Component
|
|
||||||
/// </summary>
|
|
||||||
/// <typeparam name="TValue"></typeparam>
|
|
||||||
public class InputDateTime<TValue> : InputDate<TValue>
|
|
||||||
{
|
|
||||||
private const string DateFormat = "yyyy-MM-ddTHH:mm";
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// BuildTender
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="builder"></param>
|
|
||||||
protected override void BuildRenderTree(RenderTreeBuilder builder)
|
|
||||||
{
|
|
||||||
builder.OpenElement(0, "input");
|
|
||||||
builder.AddMultipleAttributes(1, AdditionalAttributes);
|
|
||||||
builder.AddAttribute(2, "type", "datetime-local");
|
|
||||||
builder.AddAttribute(3, "class", CssClass);
|
|
||||||
builder.AddAttribute(4, "value", BindConverter.FormatValue(CurrentValueAsString));
|
|
||||||
builder.AddAttribute(5, "onchange",
|
|
||||||
EventCallback.Factory.CreateBinder<string>(this, __value => CurrentValueAsString = __value,
|
|
||||||
CurrentValueAsString));
|
|
||||||
builder.CloseElement();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Format value as string
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="value"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
protected override string FormatValueAsString(TValue value)
|
|
||||||
{
|
|
||||||
return value switch
|
|
||||||
{
|
|
||||||
DateTime dateTimeValue =>
|
|
||||||
BindConverter.FormatValue(dateTimeValue, DateFormat, CultureInfo.InvariantCulture),
|
|
||||||
DateTimeOffset dateTimeOffsetValue => BindConverter.FormatValue(dateTimeOffsetValue, DateFormat,
|
|
||||||
CultureInfo.InvariantCulture),
|
|
||||||
_ => string.Empty
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// TryParseValueFromString
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="value"></param>
|
|
||||||
/// <param name="result"></param>
|
|
||||||
/// <param name="validationErrorMessage"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
/// <exception cref="InvalidOperationException"></exception>
|
|
||||||
protected override bool TryParseValueFromString(string value, out TValue result, out string validationErrorMessage)
|
|
||||||
{
|
|
||||||
// Unwrap nullable types. We don't have to deal with receiving empty values for nullable
|
|
||||||
// types here, because the underlying InputBase already covers that.
|
|
||||||
var targetType = Nullable.GetUnderlyingType(typeof(TValue)) ?? typeof(TValue);
|
|
||||||
|
|
||||||
bool success;
|
|
||||||
if (targetType == typeof(DateTime))
|
|
||||||
{
|
|
||||||
success = TryParseDateTime(value, out result);
|
|
||||||
}
|
|
||||||
else if (targetType == typeof(DateTimeOffset))
|
|
||||||
{
|
|
||||||
success = TryParseDateTimeOffset(value, out result);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
throw new InvalidOperationException($"The type '{targetType}' is not a supported date type.");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (success)
|
|
||||||
{
|
|
||||||
validationErrorMessage = null;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
validationErrorMessage = string.Format(ParsingErrorMessage, FieldIdentifier.FieldName);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// TrypParseDateTime
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="value"></param>
|
|
||||||
/// <param name="result"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
private static bool TryParseDateTime(string value, out TValue result)
|
|
||||||
{
|
|
||||||
var success =
|
|
||||||
BindConverter.TryConvertToDateTime(value, CultureInfo.InvariantCulture, DateFormat, out var parsedValue);
|
|
||||||
if (success)
|
|
||||||
{
|
|
||||||
result = (TValue)(object)parsedValue;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
result = default;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// TryParseDateTimeOffset
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="value"></param>
|
|
||||||
/// <param name="result"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
private static bool TryParseDateTimeOffset(string value, out TValue result)
|
|
||||||
{
|
|
||||||
var success =
|
|
||||||
BindConverter.TryConvertToDateTimeOffset(value, CultureInfo.InvariantCulture, DateFormat,
|
|
||||||
out var parsedValue);
|
|
||||||
if (success)
|
|
||||||
{
|
|
||||||
result = (TValue)(object)parsedValue;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
result = default;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -26,13 +26,13 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Pages;
|
namespace Wonky.Client.Pages;
|
||||||
|
|
||||||
public partial class AdvisorActivityViewPage : IDisposable
|
public partial class AdvisorActivityViewEditPage : IDisposable
|
||||||
{
|
{
|
||||||
[Parameter] public string CompanyId { get; set; } = "";
|
[Parameter] public string CompanyId { get; set; } = "";
|
||||||
[Parameter] public string OrderId { get; set; } = "";
|
[Parameter] public string OrderId { get; set; } = "";
|
||||||
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
||||||
[Inject] public IAdvisorActivityRepository AdvisorActivityRepo { get; set; }
|
[Inject] public IAdvisorActivityRepository AdvisorActivityRepo { get; set; }
|
||||||
[Inject] public ILogger<AdvisorActivityViewPage> Logger { get; set; }
|
[Inject] public ILogger<AdvisorActivityViewEditPage> Logger { get; set; }
|
||||||
[Inject] public IToastService Toaster { get; set; }
|
[Inject] public IToastService Toaster { get; set; }
|
||||||
[Inject] public NavigationManager Navigator { get; set; }
|
[Inject] public NavigationManager Navigator { get; set; }
|
||||||
private ReportItemView ReportItem { get; set; } = new();
|
private ReportItemView ReportItem { get; set; } = new();
|
||||||
|
@ -55,7 +55,7 @@ public partial class AdvisorActivityViewPage : IDisposable
|
||||||
Working = false;
|
Working = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void HandleFieldChanged(object sender, FieldChangedEventArgs e)
|
private void HandleFieldChanged(object? sender, FieldChangedEventArgs? e)
|
||||||
{
|
{
|
||||||
StateHasChanged();
|
StateHasChanged();
|
||||||
}
|
}
|
|
@ -33,11 +33,11 @@ using Wonky.Entity.Views;
|
||||||
|
|
||||||
namespace Wonky.Client.Pages;
|
namespace Wonky.Client.Pages;
|
||||||
|
|
||||||
public partial class AdvisorCustomerViewPage : IDisposable
|
public partial class AdvisorCustomerViewEditPage : IDisposable
|
||||||
{
|
{
|
||||||
[Parameter] public string CompanyId { get; set; } = "";
|
[Parameter] public string CompanyId { get; set; } = "";
|
||||||
[Inject] public IToastService Toaster { get; set; }
|
[Inject] public IToastService Toaster { get; set; }
|
||||||
[Inject] public ILogger<AdvisorCustomerViewPage> Logger { get; set; }
|
[Inject] public ILogger<AdvisorCustomerViewEditPage> Logger { get; set; }
|
||||||
[Inject] public NavigationManager Navigator { get; set; }
|
[Inject] public NavigationManager Navigator { get; set; }
|
||||||
[Inject] public IAdvisorCustomerRepository CompanyRepo { get; set; }
|
[Inject] public IAdvisorCustomerRepository CompanyRepo { get; set; }
|
||||||
[Inject] public IAdvisorCustomerHistoryRepository HistoryRepo { get; set; }
|
[Inject] public IAdvisorCustomerHistoryRepository HistoryRepo { get; set; }
|
||||||
|
@ -380,7 +380,7 @@ public partial class AdvisorCustomerViewPage : IDisposable
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="sender"></param>
|
/// <param name="sender"></param>
|
||||||
/// <param name="e"></param>
|
/// <param name="e"></param>
|
||||||
private void HandleFieldChanged(object sender, FieldChangedEventArgs e)
|
private void HandleFieldChanged(object? sender, FieldChangedEventArgs? e)
|
||||||
{
|
{
|
||||||
NextVisit = LastVisit.AddDays(Company.Interval * 7);
|
NextVisit = LastVisit.AddDays(Company.Interval * 7);
|
||||||
// avoid nesting if by assuming ValidVat is false
|
// avoid nesting if by assuming ValidVat is false
|
||||||
|
@ -402,7 +402,7 @@ public partial class AdvisorCustomerViewPage : IDisposable
|
||||||
private void ValidationChanged(object sender, ValidationStateChangedEventArgs e)
|
private void ValidationChanged(object sender, ValidationStateChangedEventArgs e)
|
||||||
{
|
{
|
||||||
ErpContext.OnFieldChanged -= HandleFieldChanged;
|
ErpContext.OnFieldChanged -= HandleFieldChanged;
|
||||||
ErpContext.OnValidationStateChanged -= ValidationChanged;
|
ErpContext.OnValidationStateChanged -= ValidationChanged!;
|
||||||
|
|
||||||
ErpContext = new EditContext(Company);
|
ErpContext = new EditContext(Company);
|
||||||
|
|
||||||
|
@ -417,6 +417,6 @@ public partial class AdvisorCustomerViewPage : IDisposable
|
||||||
{
|
{
|
||||||
Interceptor.DisposeEvent();
|
Interceptor.DisposeEvent();
|
||||||
ErpContext.OnFieldChanged -= HandleFieldChanged;
|
ErpContext.OnFieldChanged -= HandleFieldChanged;
|
||||||
ErpContext.OnValidationStateChanged -= ValidationChanged;
|
ErpContext.OnValidationStateChanged -= ValidationChanged!;
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue