Add DateBinding to Datepicker

And keep order
This commit is contained in:
2024-09-08 16:15:34 +02:00
parent b06ea066fd
commit b51984066b
6 changed files with 92 additions and 54 deletions

View File

@@ -3,11 +3,13 @@ using System.Diagnostics;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Jugenddienst_Stunden.Types;
using ZXing.QrCode.Internal;
namespace Jugenddienst_Stunden.Models {
namespace Jugenddienst_Stunden.Models
{
class Auth {
class Auth {
public Hours hours;

View File

@@ -1,36 +0,0 @@

using CommunityToolkit.Mvvm.ComponentModel;
using Jugenddienst_Stunden.Types;
using Newtonsoft.Json;
namespace Jugenddienst_Stunden.Models
{
public class Hours : ObservableObject {
public string zeit;
public string nominal;
//public Dictionary<DateOnly,NominalDay> nominal_day_api;
public List<NominalDay> nominal_day_api;
//public Dictionary<int,NominalWeek> nominal_week_api;
public List<NominalWeek> nominal_week_api;
//public List<string> time_line;
public string 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<Hours>))]
//public Dictionary<int,decimal> zeit_total_daily;
public List<TimeDay> zeit_total_daily_api;
//public List<string> wochensumme;
public string overtime_month;
public string overtime;
//public List<string> overtime_day;
public string zeitausgleich;
public string zeitausgleich_month;
public string holiday;
public string krankheit;
public string weiterbildung;
public string bereitschaft;
public string bereitschaft_month;
//public Operator operator_api;
}
}

View File

@@ -4,10 +4,12 @@ using Microsoft.Maui.Networking;
using Microsoft.Maui.Controls;
using System;
using System.Text;
using Jugenddienst_Stunden.Types;
namespace Jugenddienst_Stunden.Models {
internal class Stunde : ObservableObject {
namespace Jugenddienst_Stunden.Models
{
internal class Stunde : ObservableObject {
//Default-Werte zum Testen

View File

@@ -0,0 +1,41 @@

using CommunityToolkit.Mvvm.ComponentModel;
using Jugenddienst_Stunden.Models;
using Newtonsoft.Json;
namespace Jugenddienst_Stunden.Types
{
public class Hours : ObservableObject
{
public string zeit;
public string nominal;
//public Dictionary<DateOnly,NominalDay> nominal_day_api;
public List<NominalDay> nominal_day_api;
//public Dictionary<int,NominalWeek> nominal_week_api;
public List<NominalWeek> nominal_week_api;
//public List<string> time_line;
public string 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<Hours>))]
//public Dictionary<int,decimal> zeit_total_daily;
public List<TimeDay> zeit_total_daily_api;
//public List<string> wochensumme;
public string overtime_month;
public string overtime;
//public List<string> overtime_day;
public string zeitausgleich;
public string zeitausgleich_month;
public string holiday;
public string krankheit;
public string weiterbildung;
public string bereitschaft;
public string bereitschaft_month;
//public Operator operator_api;
public DateTime Today;
public DateTime Date;
public DateTime MinDate;
public DateTime MaxDate;
}
}

View File

@@ -9,9 +9,8 @@ using System.ComponentModel;
using Jugenddienst_Stunden.Types;
namespace Jugenddienst_Stunden.ViewModels
{
internal class StundenViewModel : ObservableObject {
namespace Jugenddienst_Stunden.ViewModels {
internal class StundenViewModel : ObservableObject {
public string Name => AppInfo.Name;
public string Surname => AppInfo.VersionString;
public string MoreInfoUrl => "https://aka.ms/maui";
@@ -19,8 +18,19 @@ namespace Jugenddienst_Stunden.ViewModels
public ICommand LoadDataCommand { get; private set; }
public object Stunden { get; }
private Models.Hours _hour;
public Models.Hours Hours {
/* Nicht gemergte Änderung aus Projekt "Jugenddienst Stunden (net8.0-ios)"
Vor:
private Models.Hours _hour;
public Models.Hours Hours {
get => _hour;
Nach:
private Hours _hour;
public Hours Hours {
get => _hour;
*/
private Types.Hours _hour;
public Types.Hours Hours {
get => _hour;
}
public string ZeitDone {
@@ -39,6 +49,22 @@ namespace Jugenddienst_Stunden.ViewModels
get => _hour.overtime_month;
}
public DateTime MinimumDate {
//get => _hour.MinDate;
get => DateTime.Today.AddDays(-21);
}
public DateTime MaximumDate {
//get => _hour.MaxDate;
get => DateTime.Today.AddDays(5);
}
public DateTime DateToday {
//get => _hour.Today;
get => DateTime.Today;
}
public DateTime Date {
get => _hour.Date;
}
//public Dictionary<int, decimal> ZeitTotalDaily {
// get => _hour.zeit_total_daily;
//}
@@ -85,9 +111,9 @@ namespace Jugenddienst_Stunden.ViewModels
"Krankheit",
"Elternzeit"
};
_hour = new Models.Hours();
_hour = new Types.Hours();
LoadDataCommand = new AsyncRelayCommand(LoadData);
}
//protected void OnPropertyChanged(string propertyName) {
@@ -123,6 +149,9 @@ namespace Jugenddienst_Stunden.ViewModels
OnPropertyChanged(nameof(Title));
OnPropertyChanged(nameof(ZeitTotalDaily));
OnPropertyChanged(nameof(TimeDay));
OnPropertyChanged(nameof(MinimumDate));
OnPropertyChanged(nameof(MaximumDate));
OnPropertyChanged(nameof(DateToday));
}

View File

@@ -33,9 +33,9 @@
<BoxView HeightRequest="1" Color="Red"/>
<DatePicker MinimumDate="01/01/2024"
MaximumDate="12/31/2024"
Date="06/21/2024" Format="dddd, d. MMM. yyyy" />
<DatePicker MinimumDate="{Binding MinimumDate}"
MaximumDate="{Binding MaximumDate}"
Date="{Binding DateToday}" Format="dddd, d. MMM. yyyy" />
<Grid ColumnDefinitions="Auto,Auto,Auto">
<Picker x:Name="pick_gemeinde" Title="Gemeinde" ItemsSource="{Binding Options}" SelectedItem="{Binding SelectedOption, Mode=TwoWay}" Grid.Column="0" >
@@ -47,11 +47,11 @@
</Grid>
<Entry x:Name="entry" Placeholder="Tätigkeit" />
<Grid ColumnDefinitions="2*,Auto,2*,Auto">
<Label Text="Beginn" Grid.Column="0" Background="Green" VerticalTextAlignment="Center" HorizontalTextAlignment="End" Padding="0,0,10,0"></Label>
<TimePicker HorizontalOptions="Center" Grid.Column="1" Background="Green" />
<Label Text="Beginn" Grid.Column="0" Background="LightGreen" TextColor="Gray" VerticalTextAlignment="Center" HorizontalTextAlignment="End" Padding="0,0,10,0"></Label>
<TimePicker HorizontalOptions="Center" Grid.Column="1" Background="LightGreen" TextColor="Gray" />
<Label Text="Ende" Grid.Column="2" Background="Red" VerticalTextAlignment="Center" HorizontalTextAlignment="End" Padding="0,0,10,0"></Label>
<TimePicker HorizontalOptions="Center" Grid.Column="3" Background="Red" />
<Label Text="Ende" Grid.Column="2" Background="OrangeRed" TextColor="White" VerticalTextAlignment="Center" HorizontalTextAlignment="End" Padding="0,0,10,0"></Label>
<TimePicker HorizontalOptions="Center" Grid.Column="3" Background="OrangeRed" TextColor="White" />
</Grid>
<Label Text="Zeit an Tag 1:"></Label>