WIP: rename pages

This commit is contained in:
Frede Hundewadt 2023-02-22 15:23:55 +01:00
parent b4819ce547
commit e740f32fd7
5 changed files with 8 additions and 158 deletions

View file

@ -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;
}
}
}

View file

@ -26,13 +26,13 @@ using Wonky.Entity.Views;
namespace Wonky.Client.Pages;
public partial class AdvisorActivityViewPage : IDisposable
public partial class AdvisorActivityViewEditPage : IDisposable
{
[Parameter] public string CompanyId { get; set; } = "";
[Parameter] public string OrderId { get; set; } = "";
[Inject] public HttpInterceptorService Interceptor { 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 NavigationManager Navigator { get; set; }
private ReportItemView ReportItem { get; set; } = new();
@ -55,7 +55,7 @@ public partial class AdvisorActivityViewPage : IDisposable
Working = false;
}
private void HandleFieldChanged(object sender, FieldChangedEventArgs e)
private void HandleFieldChanged(object? sender, FieldChangedEventArgs? e)
{
StateHasChanged();
}

View file

@ -33,11 +33,11 @@ using Wonky.Entity.Views;
namespace Wonky.Client.Pages;
public partial class AdvisorCustomerViewPage : IDisposable
public partial class AdvisorCustomerViewEditPage : IDisposable
{
[Parameter] public string CompanyId { 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 IAdvisorCustomerRepository CompanyRepo { get; set; }
[Inject] public IAdvisorCustomerHistoryRepository HistoryRepo { get; set; }
@ -380,7 +380,7 @@ public partial class AdvisorCustomerViewPage : IDisposable
/// </summary>
/// <param name="sender"></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);
// avoid nesting if by assuming ValidVat is false
@ -402,7 +402,7 @@ public partial class AdvisorCustomerViewPage : IDisposable
private void ValidationChanged(object sender, ValidationStateChangedEventArgs e)
{
ErpContext.OnFieldChanged -= HandleFieldChanged;
ErpContext.OnValidationStateChanged -= ValidationChanged;
ErpContext.OnValidationStateChanged -= ValidationChanged!;
ErpContext = new EditContext(Company);
@ -417,6 +417,6 @@ public partial class AdvisorCustomerViewPage : IDisposable
{
Interceptor.DisposeEvent();
ErpContext.OnFieldChanged -= HandleFieldChanged;
ErpContext.OnValidationStateChanged -= ValidationChanged;
ErpContext.OnValidationStateChanged -= ValidationChanged!;
}
}