Settings so halb und a bissi aufgeräumt ...

This commit is contained in:
2024-10-20 17:58:26 +02:00
parent fbd650c174
commit 996dbadaf1
27 changed files with 707 additions and 931 deletions

View File

@@ -49,19 +49,19 @@ public partial class LoginPage : ContentPage {
if ((currentTime - _lastDetectionTime) > _detectionInterval) {
_lastDetectionTime = currentTime;
foreach (var barcode in e.Results) {
if (Stunde.apiKey != barcode.Value) {
if (HoursBase.apiKey != barcode.Value) {
_ = MainThread.InvokeOnMainThreadAsync(async () => {
//await DisplayAlert("Barcode erkannt", $"Barcode: {barcode.Format} - {barcode.Value}", "OK");
try {
var tokendata = new TokenData(barcode.Value);
var op = await Models.Operator.LoadData(barcode.Value);
Models.Stunde.apiKey = barcode.Value;
Models.Stunde.name = op.name;
Models.Stunde.surname = op.surname;
Models.Stunde.EmployeeId = int.Parse(op.id);
var op = await Models.HoursBase.LoadOperator(barcode.Value);
Models.HoursBase.apiKey = barcode.Value;
Models.HoursBase.name = op.name;
Models.HoursBase.surname = op.surname;
Models.HoursBase.EmployeeId = int.Parse(op.id);
Title = op.name + " " + op.surname;
ServerLabel.Text = "Server: " + tokendata.url.Replace("/appapi", "").Replace("https://", "").Replace("http://", "");
ServerLabel.Text = "Server: " + tokendata.Url.Replace("/appapi", "").Replace("https://", "").Replace("http://", "");
Preferences.Default.Set("apiKey", barcode.Value);
Preferences.Default.Set("name", op.name);
@@ -122,18 +122,18 @@ public partial class LoginPage : ContentPage {
return;
}
try {
Types.User response = await Auth.AuthUserPass(username, password, server);
Types.User response = await BaseFunc.AuthUserPass(username, password, server);
var tokendata = new TokenData(response.token);
var op = await Models.Operator.LoadData(response.token);
Models.Stunde.apiKey = response.token;
Models.Stunde.name = op.name;
Models.Stunde.surname = op.surname;
Models.Stunde.EmployeeId = int.Parse(op.id);
var tokendata = new TokenData(response.Token);
var op = await Models.HoursBase.LoadOperator(response.Token);
Models.HoursBase.apiKey = response.Token;
Models.HoursBase.name = op.name;
Models.HoursBase.surname = op.surname;
Models.HoursBase.EmployeeId = int.Parse(op.id);
Title = op.name + " " + op.surname;
ServerLabel.Text = "Server: " + tokendata.url.Replace("/appapi", "").Replace("https://", "").Replace("http://", "");
ServerLabel.Text = "Server: " + tokendata.Url.Replace("/appapi", "").Replace("https://", "").Replace("http://", "");
Preferences.Default.Set("apiKey", response.token);
Preferences.Default.Set("apiKey", response.Token);
Preferences.Default.Set("name", op.name);
Preferences.Default.Set("surname", op.surname);
Preferences.Default.Set("EmployeeId", int.Parse(op.id));

View File

@@ -25,12 +25,12 @@
<HorizontalStackLayout>
<Label Text="Beginn" VerticalTextAlignment="Center" HorizontalTextAlignment="End" Padding="0,0,10,0" Margin="5,0,0,0" MinimumWidthRequest="60"></Label>
<TimePicker x:Name="TimeBegin" HorizontalOptions="Center" Format="HH:mm" MinimumWidthRequest="80" Time="{Binding Stunde.TimeSpanVon}" Margin="0,0,0,-5" />
<TimePicker x:Name="TimeBegin" HorizontalOptions="Center" Format="HH:mm" MinimumWidthRequest="80" Time="{Binding DayTime.TimeSpanVon}" Margin="0,0,0,-5" />
</HorizontalStackLayout>
<HorizontalStackLayout>
<Label Text="Ende" VerticalTextAlignment="Center" HorizontalTextAlignment="End" Padding="0,0,10,0" Margin="5,0,0,0" MinimumWidthRequest="60"></Label>
<TimePicker x:Name="TimeEnd" Format="HH:mm" MinimumWidthRequest="80" Time="{Binding Stunde.TimeSpanBis}" Margin="0,0,0,-5" />
<TimePicker x:Name="TimeEnd" Format="HH:mm" MinimumWidthRequest="80" Time="{Binding DayTime.TimeSpanBis}" Margin="0,0,0,-5" />
</HorizontalStackLayout>
</FlexLayout>
@@ -38,21 +38,21 @@
<Frame Padding="5,2,5,10">
<Grid ColumnDefinitions="*,*,*">
<Picker x:Name="pick_gemeinde" Title="Gemeinde" ItemsSource="{Binding OptionsGemeinde}" SelectedItem="{Binding SelectedOptionGemeinde, Mode=TwoWay}" ItemDisplayBinding="{Binding Name}" Grid.Column="0" IsVisible="{Binding Settings.GemeindeAktivSet}">
<Picker x:Name="pick_gemeinde" Title="Gemeinde" ItemsSource="{Binding OptionsGemeinde}" SelectedItem="{Binding DayTime.GemeindeAktiv, Mode=TwoWay}" ItemDisplayBinding="{Binding Name}" Grid.Column="0" IsVisible="{Binding GemeindeAktivSet}">
</Picker>
<Picker x:Name="pick_projekt" Title="Projekt" ItemsSource="{Binding OptionsProjekt}" SelectedItem="{Binding SelectedOptionProjekt, Mode=TwoWay}" ItemDisplayBinding="{Binding Name}" Grid.Column="1" IsVisible="{Binding Settings.ProjektAktivSet}">
<Picker x:Name="pick_projekt" Title="Projekt" ItemsSource="{Binding OptionsProjekt}" SelectedItem="{Binding DayTime.ProjektAktiv, Mode=TwoWay}" ItemDisplayBinding="{Binding Name}" Grid.Column="1" IsVisible="{Binding ProjektAktivSet}">
</Picker>
<Picker x:Name="pick_freistellung" Title="Freistellung" ItemsSource="{Binding OptionsFreistellung}" SelectedItem="{Binding SelectedOptionFreistellung, Mode=TwoWay}" ItemDisplayBinding="{Binding Name}" Grid.Column="2" >
<Picker x:Name="pick_freistellung" Title="Freistellung" ItemsSource="{Binding OptionsFreistellung}" SelectedItem="{Binding DayTime.FreistellungAktiv, Mode=TwoWay}" ItemDisplayBinding="{Binding Name}" Grid.Column="2" >
</Picker>
</Grid>
</Frame>
<Editor Placeholder="Beschreibung" Text="{Binding Stunde.description}" MinimumHeightRequest="40" AutoSize="TextChanges" FontSize="18" />
<Editor Placeholder="Beschreibung" Text="{Binding DayTime.Description}" MinimumHeightRequest="40" AutoSize="TextChanges" FontSize="18" />
<Grid ColumnDefinitions="*,*" ColumnSpacing="4">
<Button Text="Speichern" Command="{Binding SaveCommand}" />
<Button Grid.Column="1" Text="Löschen" Command="{Binding DeleteConfirmCommand}" IsEnabled="{Binding Stunde.id, Converter={StaticResource IntBoolConverter}}" />
<Button Grid.Column="1" Text="Löschen" Command="{Binding DeleteConfirmCommand}" IsEnabled="{Binding DayTime.Id, Converter={StaticResource IntBoolConverter}}" />
</Grid>
<BoxView HeightRequest="1" Margin="5,10"/>
@@ -81,15 +81,15 @@
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<HorizontalStackLayout Grid.Row="0" Grid.Column="0">
<Label Grid.Column="0" Text="{Binding begin}"/>
<Label Grid.Column="0" Text="{Binding Begin}"/>
<Label Text="bis" Padding="5,0,5,0"/>
<Label Text="{Binding end}"/>
<Label Text="{Binding GemeindeAktiv.Name}" Margin="10,0,0,0"/>
<Label Text="{Binding ProjektAktiv.Name}" Margin="10,0,0,0"/>
<Label Text="{Binding End}"/>
<Label Text="{Binding GemeindeAktiv.Name}" Margin="10,0,0,0" IsVisible="{Binding Source={RelativeSource AncestorType={x:Type ContentPage}}, Path=BindingContext.GemeindeAktivSet}"/>
<Label Text="{Binding ProjektAktiv.Name}" Margin="10,0,0,0" IsVisible="{Binding Source={RelativeSource AncestorType={x:Type ContentPage}}, Path=BindingContext.ProjektAktivSet}"/>
<Label Text="{Binding FreistellungAktiv.Name}" Margin="10,0,0,0"/>
</HorizontalStackLayout>
<Label Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Text="{Binding description}" Padding="0,0,0,15"/>
<Label Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Text="{Binding Description}" Padding="0,0,0,15"/>
</Grid>
</DataTemplate>
</CollectionView.ItemTemplate>

View File

@@ -74,15 +74,15 @@
</Grid.ColumnDefinitions>
<HorizontalStackLayout Grid.Row="0" HorizontalOptions="FillAndExpand">
<Label Grid.Column="0" Text="{Binding begin}" />
<Label Grid.Column="0" Text="{Binding Begin}" />
<Label Text="bis" Padding="5,0,5,0" />
<Label Text="{Binding end}" />
<Label Text="{Binding GemeindeAktiv.Name}" Margin="10,0,0,0" IsVisible="{Binding GemeindeAktivSet}" />
<Label Text="{Binding ProjektAktiv.Name}" Margin="10,0,0,0" IsVisible="{Binding ProjektAktivSet}" />
<Label Text="{Binding End}" />
<Label Text="{Binding GemeindeAktiv.Name}" Margin="10,0,0,0" IsVisible="{Binding Source={RelativeSource AncestorType={x:Type ContentPage}}, Path=BindingContext.GemeindeAktivSet}" />
<Label Text="{Binding ProjektAktiv.Name}" Margin="10,0,0,0" IsVisible="{Binding Source={RelativeSource AncestorType={x:Type ContentPage}}, Path=BindingContext.ProjektAktivSet}" />
<Label Text="{Binding FreistellungAktiv.Id}" Margin="10,0,0,0" />
</HorizontalStackLayout>
<Label Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Text="{Binding description}" Padding="0,0,0,15"/>
<Label Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Text="{Binding Description}" Padding="0,0,0,15"/>
</Grid>
</DataTemplate>
</CollectionView.ItemTemplate>

View File

@@ -7,58 +7,58 @@ namespace Jugenddienst_Stunden.Views;
/// </summary>
public partial class StundenPage : ContentPage {
/// <summary>
/// CTOR
/// </summary>
public StundenPage() {
InitializeComponent();
if (BindingContext is StundenViewModel vm) {
vm.AlertEvent += Vm_AlertEvent;
vm.InfoEvent += Vm_InfoEvent;
}
if (!CheckLogin()) {
NavigateToTargetPage();
}
//// Bildschirmh<6D>he abrufen
//var screenHeight = DeviceDisplay.MainDisplayInfo.Height / DeviceDisplay.MainDisplayInfo.Density;
/// <summary>
/// CTOR
/// </summary>
public StundenPage() {
InitializeComponent();
if (BindingContext is StundenViewModel vm) {
vm.AlertEvent += Vm_AlertEvent;
vm.InfoEvent += Vm_InfoEvent;
}
if (!CheckLogin()) {
NavigateToTargetPage();
}
//// Bildschirmh<6D>he abrufen
//var screenHeight = DeviceDisplay.MainDisplayInfo.Height / DeviceDisplay.MainDisplayInfo.Density;
//// Berechnen der gew<65>nschten H<>he
//var desiredHeight = screenHeight - 450; // Abz<62>glich der Stunden<65>bersicht
//stundeItems.HeightRequest = desiredHeight;
//// Berechnen der gew<65>nschten H<>he
//var desiredHeight = screenHeight - 450; // Abz<62>glich der Stunden<65>bersicht
//stundeItems.HeightRequest = desiredHeight;
SizeChanged += OnPageSizeChanged;
}
SizeChanged += OnPageSizeChanged;
}
private void Vm_AlertEvent(object? sender, string e) {
DisplayAlert("Fehler:", e, "OK");
}
private void Vm_InfoEvent(object? sender, string e) {
DisplayAlert("Information:", e, "OK");
}
private void Vm_AlertEvent(object? sender, string e) {
DisplayAlert("Fehler:", e, "OK");
}
private void Vm_InfoEvent(object? sender, string e) {
DisplayAlert("Information:", e, "OK");
}
/// <summary>
/// Beim Laden der Seite den Titel setzen
/// </summary>
protected override void OnAppearing() {
base.OnAppearing();
Title = Preferences.Default.Get("name", "Nicht") + " " + Preferences.Default.Get("surname", "eingeloggt");
}
/// <summary>
/// Beim Laden der Seite den Titel setzen
/// </summary>
protected override void OnAppearing() {
base.OnAppearing();
Title = Preferences.Default.Get("name", "Nicht") + " " + Preferences.Default.Get("surname", "eingeloggt");
}
private bool CheckLogin() {
return Preferences.Default.Get("apiKey", "") != "";
}
private bool CheckLogin() {
return Preferences.Default.Get("apiKey", "") != "";
}
private async void NavigateToTargetPage() {
await Navigation.PushAsync(new LoginPage());
}
private async void NavigateToTargetPage() {
await Navigation.PushAsync(new LoginPage());
}
private void OnPageSizeChanged(object sender, EventArgs e) {
double windowHeight = this.Height;
AdjustLayout(windowHeight);
}
private void OnPageSizeChanged(object sender, EventArgs e) {
double windowHeight = this.Height;
AdjustLayout(windowHeight);
}
private void AdjustLayout(double height) {
// Passen Sie Ihre UI-Elemente basierend auf der Fensterh<72>he an
stundeItems.HeightRequest = height - 280; //Datepicker Height 50, Monatssummen Height 125, Titel + Navigation Height xyz
}
private void AdjustLayout(double height) {
// Passen Sie Ihre UI-Elemente basierend auf der Fensterh<72>he an
stundeItems.HeightRequest = height - 280; //Datepicker Height 50, Monatssummen Height 125, Titel + Navigation Height xyz
}
}