diff --git a/Jugenddienst Stunden/Converter/SecondsTimeConverter.cs b/Jugenddienst Stunden/Converter/SecondsTimeConverter.cs
index 51815ac..3741302 100644
--- a/Jugenddienst Stunden/Converter/SecondsTimeConverter.cs
+++ b/Jugenddienst Stunden/Converter/SecondsTimeConverter.cs
@@ -2,13 +2,20 @@
namespace Jugenddienst_Stunden.Converter;
internal class SecondsTimeConverter : IValueConverter {
+
private int seconds;
+ ///
+ /// Konvertiert eine Sekundenangabe nach Stunden:Minuten, auch bei mehr als 24 Stunden
+ ///
public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) {
if (value is null)
return "0:0";
if (value is int) {
seconds = (int)value;
+ }
+ if (value is double) {
+ seconds = (int)Math.Round((double)value);
} else {
int.TryParse((string?)value, out seconds);
}
diff --git a/Jugenddienst Stunden/Types/Hours.cs b/Jugenddienst Stunden/Types/Hours.cs
index e79afe5..82565c0 100644
--- a/Jugenddienst Stunden/Types/Hours.cs
+++ b/Jugenddienst Stunden/Types/Hours.cs
@@ -4,33 +4,40 @@ using System.Collections.ObjectModel;
namespace Jugenddienst_Stunden.Types;
-internal class Hours : ObservableObject {
- public int? Zeit;
- public int? Nominal;
+internal partial class Hours : ObservableObject {
+ public double? Zeit;
+ public double? Nominal;
//public Dictionary nominal_day_api;
public List? Nominal_day_api;
//public Dictionary nominal_week_api;
public List? Nominal_week_api;
- //public List time_line;
- public string? Zeit_total;
+ //public List time_line;
+ public double? Zeit_total;
- //https://stackoverflow.com/questions/29449641/deserialize-json-when-a-value-can-be-an-object-or-an-empty-array/29450279#29450279
- //[JsonConverter(typeof(JsonSingleOrEmptyArrayConverter))]
- //public Dictionary zeit_total_daily;
+ //https://stackoverflow.com/questions/29449641/deserialize-json-when-a-value-can-be-an-object-or-an-empty-array/29450279#29450279
+ //[JsonConverter(typeof(JsonSingleOrEmptyArrayConverter))]
+ //public Dictionary zeit_total_daily;
- public List zeit_total_daily_api;
+ public List zeit_total_daily_api;
public List? daytime;
- //public List wochensumme;
- public int overtime_month;
- public int overtime;
- //public List overtime_day;
- public int zeitausgleich;
- public int zeitausgleich_month;
- public int holiday;
- public int krankheit;
- public int weiterbildung;
- public int bereitschaft;
- public int bereitschaft_month;
+ //public List wochensumme;
+
+ [ObservableProperty]
+ public double overtime_month;
+
+ [ObservableProperty]
+ public double overtime;
+ //public List overtime_day;
+
+ [ObservableProperty]
+ public double zeitausgleich;
+
+ public double zeitausgleich_month;
+ public double holiday;
+ public double krankheit;
+ public double weiterbildung;
+ public double bereitschaft;
+ public double bereitschaft_month;
//public Operator operator_api;
public DateTime Today;
public DateTime Date;
diff --git a/Jugenddienst Stunden/Types/NominalDay.cs b/Jugenddienst Stunden/Types/NominalDay.cs
index 4d69374..6b158b3 100644
--- a/Jugenddienst Stunden/Types/NominalDay.cs
+++ b/Jugenddienst Stunden/Types/NominalDay.cs
@@ -2,6 +2,6 @@
internal class NominalDay {
public int day_number;
public int month_number;
- public int hours;
+ public double hours;
public DateOnly date;
}
diff --git a/Jugenddienst Stunden/Types/NominalWeek.cs b/Jugenddienst Stunden/Types/NominalWeek.cs
index 12cc07f..b43834a 100644
--- a/Jugenddienst Stunden/Types/NominalWeek.cs
+++ b/Jugenddienst Stunden/Types/NominalWeek.cs
@@ -2,5 +2,5 @@
internal class NominalWeek {
public int Week_number;
- public int Hours;
+ public double Hours;
}
diff --git a/Jugenddienst Stunden/Types/Sollstunden.cs b/Jugenddienst Stunden/Types/Sollstunden.cs
index d18bc7e..cea4268 100644
--- a/Jugenddienst Stunden/Types/Sollstunden.cs
+++ b/Jugenddienst Stunden/Types/Sollstunden.cs
@@ -3,5 +3,5 @@
public class Sollstunden {
public int Timetable { get; set; }
public int Wochentag { get; set; }
- public float Zeit { get; set; }
+ public double Zeit { get; set; }
}
diff --git a/Jugenddienst Stunden/Types/TimeDay.cs b/Jugenddienst Stunden/Types/TimeDay.cs
index ccdb79b..19957fd 100644
--- a/Jugenddienst Stunden/Types/TimeDay.cs
+++ b/Jugenddienst Stunden/Types/TimeDay.cs
@@ -5,5 +5,5 @@
///
internal struct TimeDay {
public int Day { get; set; }
- public decimal Hours { get; set; }
+ public double Hours { get; set; }
}
diff --git a/Jugenddienst Stunden/ViewModels/StundenViewModel.cs b/Jugenddienst Stunden/ViewModels/StundenViewModel.cs
index b2d39e3..315ce1e 100644
--- a/Jugenddienst Stunden/ViewModels/StundenViewModel.cs
+++ b/Jugenddienst Stunden/ViewModels/StundenViewModel.cs
@@ -56,10 +56,9 @@ internal partial class StundenViewModel : ObservableObject, IQueryAttributable,
public string Title { get; set; } = GlobalVar.Name + " " + GlobalVar.Surname;
- private Hours _hour;
- public Hours Hours {
- get => _hour;
- }
+ [ObservableProperty]
+ private Hours hours;
+
///
/// Mindest-Datum für den Datepicker
@@ -94,42 +93,42 @@ internal partial class StundenViewModel : ObservableObject, IQueryAttributable,
///
/// Monatsübersicht: Geleistete Stunden
///
- public string? ZeitCalculated {
+ public double? ZeitCalculated {
get => Hours.Zeit_total;
}
///
/// Monatsübersicht: Sollstunden
///
- public int? Nominal {
+ public double? Nominal {
get => Hours.Nominal;
}
///
/// Monatsübersicht: Differenz zwischen Soll und geleisteten Stunden
///
- public int? Overtime {
+ public double? Overtime {
get => Hours.overtime;
}
///
/// Monatsübersicht: Restüberstunden insgesamt
///
- public int OvertimeMonth {
+ public double OvertimeMonth {
get => Hours.overtime_month;
}
- public int Zeitausgleich {
+ public double Zeitausgleich {
get => Hours.zeitausgleich;
}
- public int ZeitausgleichMonth {
+ public double ZeitausgleichMonth {
get => Hours.zeitausgleich_month;
}
///
/// Monatsübersicht: Resturlaub
///
- public int Holiday {
+ public double Holiday {
get => Hours.holiday;
}
@@ -158,7 +157,7 @@ internal partial class StundenViewModel : ObservableObject, IQueryAttributable,
/// CTOR
///
public StundenViewModel() {
- _hour = new Hours();
+ Hours = new Hours();
LoadOverview = "Lade Summen für " + DateToday.ToString("MMMM");
@@ -202,7 +201,7 @@ internal partial class StundenViewModel : ObservableObject, IQueryAttributable,
private async Task LoadData() {
try {
BaseResponse dat = await HoursBase.LoadBase("hours&year=" + DateToday.ToString("yyyy") + "&month=" + DateToday.ToString("MM"));
- _hour = dat.hour;
+ Hours = dat.hour;
Settings = dat.settings;
if (Settings.Version != AppInfo.Current.VersionString.Substring(0, 5)) {
@@ -295,14 +294,14 @@ internal partial class StundenViewModel : ObservableObject, IQueryAttributable,
/// Refreshes all properties
///
private void RefreshProperties() {
+ OnPropertyChanged(nameof(Hours));
+ OnPropertyChanged(nameof(Title));
OnPropertyChanged(nameof(Nominal));
OnPropertyChanged(nameof(Overtime));
OnPropertyChanged(nameof(OvertimeMonth));
OnPropertyChanged(nameof(Zeitausgleich));
OnPropertyChanged(nameof(ZeitCalculated));
OnPropertyChanged(nameof(Holiday));
- OnPropertyChanged(nameof(Hours));
- OnPropertyChanged(nameof(Title));
OnPropertyChanged(nameof(MinimumDate));
OnPropertyChanged(nameof(MaximumDate));
OnPropertyChanged(nameof(LoadOverview));