Bessere Trennung manueller / automatischer Login
Umstellung auf Sekunden wegen aktualisierter Hauptanwendung
Umstellung auf Toasts bei Informationsmeldungen
Abstände und Sichtbarkeiten vereinheitlicht
Upgrade auf .NET9
This commit is contained in:
2025-02-15 22:59:06 +01:00
parent 65d5dc94df
commit 4449b4ad0e
18 changed files with 268 additions and 121 deletions

View File

@@ -5,6 +5,8 @@ using Jugenddienst_Stunden.Types;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Windows.Input;
using CommunityToolkit.Maui.Alerts;
using CommunityToolkit.Maui.Core;
namespace Jugenddienst_Stunden.ViewModels;
@@ -13,8 +15,6 @@ namespace Jugenddienst_Stunden.ViewModels;
/// </summary>
internal partial class StundenViewModel : ObservableObject, IQueryAttributable, INotifyPropertyChanged {
public string LoadOverview => "Lade Summen für " + DateTime.Today.ToString("MMMM");
public ICommand NewEntryCommand { get; }
public ICommand SelectEntryCommand { get; }
public ICommand LoadDataCommand { get; private set; }
@@ -25,6 +25,13 @@ internal partial class StundenViewModel : ObservableObject, IQueryAttributable,
public event EventHandler<string> AlertEvent;
public event EventHandler<string> InfoEvent;
/// <summary>
/// Beschriftung Button Monatsübersicht
/// </summary>
[ObservableProperty]
private string loadOverview;
//private HoursBase HoursBase = new HoursBase();
internal Settings Settings = new Settings();
@@ -45,7 +52,7 @@ internal partial class StundenViewModel : ObservableObject, IQueryAttributable,
/// </summary>
[ObservableProperty]
private List<DayTime> dayTimes = new List<DayTime>();
public string Title { get; set; } = GlobalVar.Name + " " + GlobalVar.Surname;
private Hours _hour;
@@ -76,7 +83,7 @@ internal partial class StundenViewModel : ObservableObject, IQueryAttributable,
set {
if (dateToday != value) {
dateToday = value;
//GetDay = value;
LoadOverview = "Lade Summen für " + dateToday.ToString("MMMM");
//OnPropertyChanged();
Task.Run(() => LoadDay(value));
}
@@ -93,28 +100,28 @@ internal partial class StundenViewModel : ObservableObject, IQueryAttributable,
/// <summary>
/// Monatsübersicht: Sollstunden
/// </summary>
public string? Nominal {
public int? Nominal {
get => Hours.Nominal;
}
/// <summary>
/// Monatsübersicht: Differenz zwischen Soll und geleisteten Stunden
/// </summary>
public string? Overtime {
public int? Overtime {
get => Hours.overtime;
}
/// <summary>
/// Monatsübersicht: Restüberstunden insgesamt
/// </summary>
public string OvertimeMonth {
public int OvertimeMonth {
get => Hours.overtime_month;
}
/// <summary>
/// Monatsübersicht: Resturlaub
/// </summary>
public string Holiday {
public int Holiday {
get => Hours.holiday;
}
@@ -138,12 +145,15 @@ internal partial class StundenViewModel : ObservableObject, IQueryAttributable,
private bool doContinue = true;
/// <summary>
/// CTOR
/// </summary>
public StundenViewModel() {
_hour = new Hours();
LoadOverview = "Lade Summen für " + DateToday.ToString("MMMM");
LoadDataCommand = new AsyncRelayCommand(LoadData);
NewEntryCommand = new AsyncRelayCommand(NewEntryAsync);
SelectEntryCommand = new AsyncRelayCommand<DayTime>(SelectEntryAsync);
@@ -183,7 +193,7 @@ internal partial class StundenViewModel : ObservableObject, IQueryAttributable,
/// </summary>
private async Task LoadData() {
try {
BaseResponse dat = await HoursBase.LoadBase("hours");
BaseResponse dat = await HoursBase.LoadBase("hours&month=" + DateToday.ToString("MM"));
_hour = dat.hour;
//_hour = await HoursBase.LoadData();
RefreshProperties();
@@ -198,6 +208,7 @@ internal partial class StundenViewModel : ObservableObject, IQueryAttributable,
/// </summary>
public async Task LoadDay(DateTime date) {
DayTotal = new TimeOnly(0);
Sollstunden = new TimeOnly(0);
try {
//_dayTimes = await HoursBase.LoadDay(date);
BaseResponse dat = await HoursBase.LoadBase("date=" + date.ToString("yyyy-MM-dd"));
@@ -206,6 +217,7 @@ internal partial class StundenViewModel : ObservableObject, IQueryAttributable,
Settings = dat.settings;
GemeindeAktivSet = Settings.GemeindeAktivSet;
ProjektAktivSet = Settings.ProjektAktivSet;
OnPropertyChanged(nameof(GemeindeAktivSet));
OnPropertyChanged(nameof(ProjektAktivSet));
@@ -241,23 +253,25 @@ internal partial class StundenViewModel : ObservableObject, IQueryAttributable,
} finally {
OnPropertyChanged(nameof(DayTotal));
OnPropertyChanged(nameof(Sollstunden));
OnPropertyChanged(nameof(DateToday));
OnPropertyChanged(nameof(LoadOverview));
//OnPropertyChanged(nameof(DayTimes));
}
}
async void IQueryAttributable.ApplyQueryAttributes(IDictionary<string, object> query) {
if (query.ContainsKey("date")) {
await LoadDay(Convert.ToDateTime(query["date"]));
}
}
/// <summary>
/// Seite aktualisieren
/// </summary>
private async Task RefreshItemsAsync() {
IsRefreshing = true;
// Fügen Sie hier die Logik zum Aktualisieren der Daten hinzu
//await Task.Delay(2000); // Simuliert eine Datenaktualisierung
await LoadDay(DateToday);
@@ -277,6 +291,7 @@ internal partial class StundenViewModel : ObservableObject, IQueryAttributable,
OnPropertyChanged(nameof(Title));
OnPropertyChanged(nameof(MinimumDate));
OnPropertyChanged(nameof(MaximumDate));
OnPropertyChanged(nameof(LoadOverview));
}
protected void OnPropertyChanged([CallerMemberName] string propertyName = null) {