Play Console and others
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
//using AndroidX.Browser.Trusted;
|
||||
|
||||
|
||||
namespace Jugenddienst_Stunden {
|
||||
public partial class App : Application {
|
||||
public App() {
|
||||
@@ -7,11 +6,42 @@ namespace Jugenddienst_Stunden {
|
||||
|
||||
MainPage = new AppShell();
|
||||
|
||||
//Models.Auth.Main(new string[] { "http://hours.dauni.mine.nu:81/appapi", "OTI6Y1JVUS9RTG1jMTZUbnN2c2JZRm5yRDNiUTZz" }); //Angelika
|
||||
//Models.Auth.Main(new string[] { "http://hours.dauni.mine.nu:81/appapi", "Njc6cjltcVJ1SmtITUtFZ3llUVpJcWJzc2NDejVZ" }); //Dario
|
||||
|
||||
//Models.Auth.Main(new string[] { "http://hours.dauni.mine.nu:81/appapi?hours", "MTQzfEFlMVRjQXdZMnI4RmpxZ0FSY3A0VEN2bVZYVXxodHRwOi8vaG91cnMuZGF1bmkubWluZS5udTo4MS9hcHBhcGk=" }); //Christine
|
||||
|
||||
}
|
||||
|
||||
|
||||
//protected override Window CreateWindow(IActivationState activationState) =>
|
||||
//new Window(new AppShell()) {
|
||||
// Width = 500,
|
||||
// Height = 900
|
||||
//};
|
||||
|
||||
|
||||
// protected override Window CreateWindow(IActivationState activationState) {
|
||||
// Window window = base.CreateWindow(activationState);
|
||||
// window.Activated += Window_Activated;
|
||||
// return window;
|
||||
// }
|
||||
|
||||
// private async void Window_Activated(object sender, EventArgs e) {
|
||||
//#if WINDOWS
|
||||
// const int DefaultWidth = 500;
|
||||
// const int DefaultHeight = 900;
|
||||
|
||||
// var window = sender as Window;
|
||||
|
||||
// // change window size.
|
||||
// window.Width = DefaultWidth;
|
||||
// window.Height = DefaultHeight;
|
||||
|
||||
// // give it some time to complete window resizing task.
|
||||
// await window.Dispatcher.DispatchAsync(() => { });
|
||||
|
||||
// var disp = DeviceDisplay.Current.MainDisplayInfo;
|
||||
|
||||
// // move to screen center
|
||||
// //window.X = (disp.Width / disp.Density - window.Width) / 2;
|
||||
// //window.Y = (disp.Height / disp.Density - window.Height) / 2;
|
||||
//#endif
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,20 +7,20 @@
|
||||
Shell.FlyoutBehavior="Disabled">
|
||||
|
||||
<TabBar>
|
||||
<ShellContent
|
||||
Title="Stunden"
|
||||
ContentTemplate="{DataTemplate views:StundenPage}"
|
||||
Icon="{OnPlatform 'icon_watch.png', iOS='icon_watch_ios.png', MacCatalyst='icon_watch_ios.png'}" />
|
||||
|
||||
<ShellContent
|
||||
Title="Notes"
|
||||
ContentTemplate="{DataTemplate views:AllNotesPage}"
|
||||
Icon="{OnPlatform 'icon_notes.png', iOS='icon_notes_ios.png', MacCatalyst='icon_notes_ios.png'}" />
|
||||
|
||||
<ShellContent
|
||||
Title="Stunden"
|
||||
ContentTemplate="{DataTemplate views:StundenPage}"
|
||||
Icon="{OnPlatform 'icon_watch.png', iOS='icon_about_ios.png', MacCatalyst='icon_watch_ios.png'}" />
|
||||
|
||||
<ShellContent
|
||||
Title="Login"
|
||||
ContentTemplate="{DataTemplate views:LoginPage}"
|
||||
Icon="{OnPlatform 'icon_about.png', iOS='icon_about_ios.png', MacCatalyst='icon_about_ios.png'}" />
|
||||
Icon="{OnPlatform 'icon_security.png', iOS='icon_security_ios.png', MacCatalyst='icon_security_ios.png'}" />
|
||||
</TabBar>
|
||||
|
||||
</Shell>
|
||||
@@ -1,7 +1,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net8.0-ios;net8.0-maccatalyst;net8.0-android34.0</TargetFrameworks>
|
||||
<TargetFrameworks>net8.0-maccatalyst;net8.0-android34.0</TargetFrameworks>
|
||||
<!-- Uncomment to also build the tizen app. You will need to install tizen by following this: https://github.com/Samsung/Tizen.NET -->
|
||||
<!-- <TargetFrameworks>$(TargetFrameworks);net8.0-tizen</TargetFrameworks> -->
|
||||
|
||||
@@ -31,20 +31,32 @@
|
||||
|
||||
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">11.0</SupportedOSPlatformVersion>
|
||||
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'">13.1</SupportedOSPlatformVersion>
|
||||
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">29.0</SupportedOSPlatformVersion>
|
||||
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">27.0</SupportedOSPlatformVersion>
|
||||
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</SupportedOSPlatformVersion>
|
||||
<TargetPlatformMinVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</TargetPlatformMinVersion>
|
||||
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'tizen'">6.5</SupportedOSPlatformVersion>
|
||||
<GenerateDocumentationFile>True</GenerateDocumentationFile>
|
||||
<PackageIcon>paket_icon.png</PackageIcon>
|
||||
<NeutralLanguage>de</NeutralLanguage>
|
||||
</PropertyGroup>
|
||||
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net8.0-maccatalyst|AnyCPU'">
|
||||
<Optimize>True</Optimize>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net8.0-maccatalyst|AnyCPU'">
|
||||
<Optimize>True</Optimize>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net8.0-android34.0|AnyCPU'">
|
||||
<Optimize>True</Optimize>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net8.0-windows10.0.26100.0</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net8.0-android34.0|AnyCPU'">
|
||||
<EmbedAssembliesIntoApk>False</EmbedAssembliesIntoApk>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<!-- App Icon -->
|
||||
<MauiIcon Include="Resources\AppIcon\appicon.svg" ForegroundFile="Resources\AppIcon\appiconfg.svg" Color="#512BD4" />
|
||||
@@ -63,6 +75,13 @@
|
||||
<MauiAsset Include="Resources\Raw\**" LogicalName="%(RecursiveDir)%(Filename)%(Extension)" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="..\paket_icon.png">
|
||||
<Pack>True</Pack>
|
||||
<PackagePath>\</PackagePath>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.2" />
|
||||
<PackageReference Include="Microsoft.Maui.Controls" Version="8.0.80">
|
||||
@@ -79,6 +98,9 @@
|
||||
<Compile Update="Views\LoginPage.xaml.cs">
|
||||
<DependentUpon>LoginPage.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Update="Views\StundePage.xaml.cs">
|
||||
<DependentUpon>StundePage.xaml</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
@@ -88,6 +110,9 @@
|
||||
<MauiXaml Update="Views\AllNotesPage.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</MauiXaml>
|
||||
<MauiXaml Update="Views\StundePage.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</MauiXaml>
|
||||
<MauiXaml Update="Views\NotePage.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</MauiXaml>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
//using BarcodeScanning;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Maui.LifecycleEvents;
|
||||
using ZXing.Net.Maui.Controls;
|
||||
|
||||
|
||||
@@ -15,11 +16,15 @@ namespace Jugenddienst_Stunden {
|
||||
})
|
||||
.UseBarcodeReader();
|
||||
|
||||
|
||||
|
||||
#if DEBUG
|
||||
builder.Logging.AddDebug();
|
||||
#endif
|
||||
|
||||
return builder.Build();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,8 @@ namespace Jugenddienst_Stunden.Models
|
||||
{
|
||||
internal class Stunde : ObservableObject {
|
||||
|
||||
|
||||
|
||||
//Default-Werte zum Testen
|
||||
|
||||
//Katharina
|
||||
@@ -29,6 +31,7 @@ namespace Jugenddienst_Stunden.Models
|
||||
//private static readonly string requestUrl = $"{BaseAddress}/appapi?hours";
|
||||
|
||||
public DateTime Date { get; set; }
|
||||
private static Hours Hours { get; set; }
|
||||
|
||||
|
||||
|
||||
@@ -38,9 +41,11 @@ namespace Jugenddienst_Stunden.Models
|
||||
//apiKey = "MTAyfEJZZnB1L3VwcnhoVms0dDlLZENPZWtUVy85b3xodHRwOi8vaG91cnMuZGF1bmkubWluZS5udTo4MS9hcHBhcGk=";
|
||||
//name = "Kathi";
|
||||
//surname = "Wegi";
|
||||
|
||||
//apiKey = "MTQzfEFlMVRjQXdZMnI4RmpxZ0FSY3A0VEN2bVZYVXxodHRwOi8vaG91cnMuZGF1bmkubWluZS5udTo4MS9hcHBhcGk=";
|
||||
//name = "Chri";
|
||||
//surname = "Fe";
|
||||
|
||||
//apiKey = "MTI3fDEyYURVdHVZVWRaZk91eDlNcjZDUFlTdmdkNHxodHRwOi8vaG91cnMuZGF1bmkubWluZS5udTo4MS9hcHBhcGk=";
|
||||
//name = "Ju";
|
||||
//surname = "Ze";
|
||||
@@ -49,6 +54,10 @@ namespace Jugenddienst_Stunden.Models
|
||||
//name = "Le";
|
||||
//surname = "Ma";
|
||||
|
||||
//apiKey = "OXxpM0lQcXcySUp0S3hHbzFSb3VqdStwRXlDQmd8aHR0cHM6Ly9ob3Vycy5waWRhLmluZm8vYXBwYXBp";
|
||||
//name = "Eli";
|
||||
//surname = "Gap";
|
||||
|
||||
|
||||
//Preferences.Default.Set("apiKey", apiKey);
|
||||
//Preferences.Default.Set("name", name);
|
||||
@@ -65,7 +74,7 @@ namespace Jugenddienst_Stunden.Models
|
||||
var tokendata = new TokenData(apiKey);
|
||||
|
||||
//string data = await Auth.GetApiDataWithAuthAsync(requestUrl, apiKey);
|
||||
string data = await Auth.GetApiDataWithAuthAsync(tokendata.url + "?hours&month=8", tokendata.apiKey);
|
||||
string data = await Auth.GetApiDataWithAuthAsync(tokendata.url + "?hours&month="+DateTime.Today.Month, tokendata.apiKey);
|
||||
|
||||
if (data == null) {
|
||||
throw new Exception("Keine Daten erhalten");
|
||||
@@ -112,10 +121,31 @@ namespace Jugenddienst_Stunden.Models
|
||||
|
||||
|
||||
}
|
||||
Hours = hours;
|
||||
return hours;
|
||||
}
|
||||
|
||||
public static DayTime LoadEntry(int id) {
|
||||
|
||||
DayTime hours = Hours.daytime.Find(x => x.id == id);
|
||||
|
||||
return hours;
|
||||
}
|
||||
|
||||
|
||||
public static Stunde Load(string filename) {
|
||||
filename = System.IO.Path.Combine(FileSystem.AppDataDirectory, filename);
|
||||
|
||||
if (!File.Exists(filename))
|
||||
throw new FileNotFoundException("Unable to find file on local storage.", filename);
|
||||
|
||||
return
|
||||
new() {
|
||||
//Filename = Path.GetFileName(filename),
|
||||
//Text = File.ReadAllText(filename),
|
||||
Date = File.GetLastWriteTime(filename)
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
using Microsoft.UI.Xaml;
|
||||
using Microsoft.Maui.LifecycleEvents;
|
||||
using Microsoft.UI.Xaml;
|
||||
|
||||
|
||||
// To learn more about WinUI, the WinUI project structure,
|
||||
// and more about our project templates, see: http://aka.ms/winui-project-info.
|
||||
@@ -17,6 +19,9 @@ namespace Jugenddienst_Stunden.WinUI {
|
||||
}
|
||||
|
||||
protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
BIN
Jugenddienst Stunden/Resources/Images/icon_security.png
Normal file
BIN
Jugenddienst Stunden/Resources/Images/icon_security.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.0 KiB |
BIN
Jugenddienst Stunden/Resources/Images/icon_security_ios.png
Normal file
BIN
Jugenddienst Stunden/Resources/Images/icon_security_ios.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.0 KiB |
19
Jugenddienst Stunden/Types/DayTime.cs
Normal file
19
Jugenddienst Stunden/Types/DayTime.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
namespace Jugenddienst_Stunden.Types {
|
||||
public class DayTime {
|
||||
public int? id;
|
||||
public int EmployeeId;
|
||||
public DateTime day;
|
||||
public int wday;
|
||||
public TimeOnly begin { get; set; }
|
||||
public TimeOnly end { get; set; }
|
||||
public string description { get; set; }
|
||||
public string? free;
|
||||
public bool? approved;
|
||||
public int? type;
|
||||
public int? project;
|
||||
public int? gemeinde;
|
||||
public TimeOnly night;
|
||||
public Dictionary<string, TimeOnly> total;
|
||||
public TimeOnly end_print;
|
||||
}
|
||||
}
|
||||
@@ -21,6 +21,7 @@ namespace Jugenddienst_Stunden.Types
|
||||
//[JsonConverter(typeof(JsonSingleOrEmptyArrayConverter<Hours>))]
|
||||
//public Dictionary<int,decimal> zeit_total_daily;
|
||||
public List<TimeDay> zeit_total_daily_api;
|
||||
public List<DayTime> daytime;
|
||||
//public List<string> wochensumme;
|
||||
public string overtime_month;
|
||||
public string overtime;
|
||||
@@ -37,5 +38,6 @@ namespace Jugenddienst_Stunden.Types
|
||||
public DateTime Date;
|
||||
public DateTime MinDate;
|
||||
public DateTime MaxDate;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
52
Jugenddienst Stunden/ViewModels/StundeViewModel.cs
Normal file
52
Jugenddienst Stunden/ViewModels/StundeViewModel.cs
Normal file
@@ -0,0 +1,52 @@
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Input;
|
||||
|
||||
namespace Jugenddienst_Stunden.ViewModels {
|
||||
internal class StundeViewModel : ObservableObject, IQueryAttributable {
|
||||
|
||||
public int id { get; set; }
|
||||
|
||||
private Types.DayTime _stunde;
|
||||
public string Description {
|
||||
get => _stunde.description;
|
||||
set {
|
||||
if (_stunde.description != value) {
|
||||
_stunde.description = value;
|
||||
OnPropertyChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int Identifier => (int)_stunde.id;
|
||||
|
||||
public ICommand SaveCommand { get; private set; }
|
||||
public ICommand DeleteCommand { get; private set; }
|
||||
|
||||
|
||||
|
||||
//private async Task Save() {
|
||||
// _stunde.Date = DateTime.Now;
|
||||
// _stunde.Save();
|
||||
// await Shell.Current.GoToAsync($"..?saved={_stunde.Filename}");
|
||||
//}
|
||||
|
||||
//private async Task Delete() {
|
||||
// _stunde.Delete();
|
||||
// await Shell.Current.GoToAsync($"..?deleted={_stunde.Filename}");
|
||||
//}
|
||||
|
||||
async void IQueryAttributable.ApplyQueryAttributes(IDictionary<string, object> query) {
|
||||
if (query.ContainsKey("load")) {
|
||||
DateTime heute = DateTime.Now;
|
||||
//_stunde = await Models.Stunde.LoadDay(heute);
|
||||
//_stunde = await Models.Stunde.LoadData();
|
||||
//RefreshProperties();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -15,23 +15,18 @@ namespace Jugenddienst_Stunden.ViewModels {
|
||||
public string Surname => AppInfo.VersionString;
|
||||
public string MoreInfoUrl => "https://aka.ms/maui";
|
||||
public string Message => "Hier werden deine geleisteten Arbeitsstunden aufgelistet";
|
||||
public string LoadOverview => "Lade Summen für " + DateTime.Today.ToString("MMMM");
|
||||
public static DateTime GetDay = DateTime.Today;
|
||||
public string ShowDay => "Zeit an Tag " + GetDay.ToString("ddd d. MMM") + ": ";
|
||||
|
||||
public int id { get; set; }
|
||||
public ICommand SelectEntryCommand { get; }
|
||||
|
||||
public ICommand LoadDataCommand { get; private set; }
|
||||
public object Stunden { get; }
|
||||
|
||||
public static int GetDay = DateTime.Today.Day;
|
||||
public string ShowDay => "Zeit an Tag " + GetDay + ": ";
|
||||
|
||||
|
||||
/* 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;
|
||||
@@ -52,6 +47,10 @@ namespace Jugenddienst_Stunden.ViewModels {
|
||||
get => _hour.overtime_month;
|
||||
}
|
||||
|
||||
public List<DayTime> DayTimes {
|
||||
get => _hour.daytime;
|
||||
}
|
||||
|
||||
public DateTime MinimumDate {
|
||||
//get => _hour.MinDate;
|
||||
//get => DateTime.Today.AddDays(-21);
|
||||
@@ -69,12 +68,13 @@ namespace Jugenddienst_Stunden.ViewModels {
|
||||
set {
|
||||
if (dateToday != value) {
|
||||
dateToday = value;
|
||||
GetDay = dateToday.Day;
|
||||
GetDay = value;
|
||||
OnPropertyChanged();
|
||||
_ = LoadDay(value); // Use discard operator to explicitly ignore the returned Task
|
||||
//RefreshProperties();
|
||||
//RefreshProperties();
|
||||
OnPropertyChanged(nameof(TimeDay));
|
||||
OnPropertyChanged(nameof(ShowDay));
|
||||
OnPropertyChanged(nameof(DayTimes));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -83,9 +83,6 @@ namespace Jugenddienst_Stunden.ViewModels {
|
||||
get => _hour.Date;
|
||||
}
|
||||
|
||||
//public Dictionary<int, decimal> ZeitTotalDaily {
|
||||
// get => _hour.zeit_total_daily;
|
||||
//}
|
||||
|
||||
public List<TimeDay> ZeitTotalDaily {
|
||||
get => _hour.zeit_total_daily_api;
|
||||
@@ -133,20 +130,24 @@ namespace Jugenddienst_Stunden.ViewModels {
|
||||
_hour = new Types.Hours();
|
||||
LoadDataCommand = new AsyncRelayCommand(LoadData);
|
||||
|
||||
SelectEntryCommand = new AsyncRelayCommand<ViewModels.StundeViewModel>(SelectEntryAsync);
|
||||
|
||||
}
|
||||
|
||||
//protected void OnPropertyChanged(string propertyName) {
|
||||
// PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
||||
//}
|
||||
private async Task SelectEntryAsync(ViewModels.StundeViewModel entry) {
|
||||
if (entry != null)
|
||||
await Shell.Current.GoToAsync($"{nameof(Views.StundePage)}?load={entry.id}");
|
||||
}
|
||||
|
||||
|
||||
|
||||
//public async Task LoadData() =>
|
||||
// await Models.Stunde.LoadData();
|
||||
|
||||
public event EventHandler<string> AlertEvent;
|
||||
|
||||
public async Task LoadData() {
|
||||
try {
|
||||
_hour = await Models.Stunde.LoadData();
|
||||
RefreshProperties();
|
||||
} catch (Exception e) {
|
||||
AlertEvent?.Invoke(this, e.Message);
|
||||
}
|
||||
@@ -156,8 +157,11 @@ namespace Jugenddienst_Stunden.ViewModels {
|
||||
try {
|
||||
_hour = await Models.Stunde.LoadDay(date);
|
||||
if (_hour.zeit_total_daily_api != null) {
|
||||
TimeDay = _hour.zeit_total_daily_api.Where(static p => p.Day == GetDay).ToList() ?? new List<TimeDay> { new TimeDay { Day = GetDay, Hours = 0 } };
|
||||
RefreshProperties();
|
||||
TimeDay = _hour.zeit_total_daily_api.Where(static p => p.Day == GetDay.Day).ToList() ?? new List<TimeDay> { new TimeDay { Day = GetDay.Day, Hours = 0 } };
|
||||
//RefreshProperties();
|
||||
OnPropertyChanged(nameof(ShowDay));
|
||||
OnPropertyChanged(nameof(TimeDay));
|
||||
OnPropertyChanged(nameof(DayTimes));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
AlertEvent?.Invoke(this, e.Message);
|
||||
|
||||
18
Jugenddienst Stunden/Views/StundePage.xaml
Normal file
18
Jugenddienst Stunden/Views/StundePage.xaml
Normal file
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||
xmlns:models="clr-namespace:Jugenddienst_Stunden.ViewModels"
|
||||
x:Class="Jugenddienst_Stunden.Views.StundePage"
|
||||
Title="StundePage">
|
||||
|
||||
<ContentPage.BindingContext>
|
||||
<models:StundeViewModel />
|
||||
</ContentPage.BindingContext>
|
||||
|
||||
<VerticalStackLayout>
|
||||
<Label
|
||||
Text="Welcome to .NET MAUI!"
|
||||
VerticalOptions="Center"
|
||||
HorizontalOptions="Center" />
|
||||
</VerticalStackLayout>
|
||||
</ContentPage>
|
||||
9
Jugenddienst Stunden/Views/StundePage.xaml.cs
Normal file
9
Jugenddienst Stunden/Views/StundePage.xaml.cs
Normal file
@@ -0,0 +1,9 @@
|
||||
namespace Jugenddienst_Stunden.Views;
|
||||
|
||||
public partial class StundePage : ContentPage
|
||||
{
|
||||
public StundePage()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
@@ -9,72 +9,96 @@
|
||||
<models:StundenViewModel />
|
||||
</ContentPage.BindingContext>
|
||||
|
||||
<VerticalStackLayout Spacing="10" Margin="15">
|
||||
<ScrollView Margin="5">
|
||||
<VerticalStackLayout Spacing="10" Margin="10">
|
||||
|
||||
<Label Text="{Binding Message}" />
|
||||
<Label Text="{Binding Message}" />
|
||||
|
||||
<Button Text="Lade aktuelle Daten" Command="{Binding LoadDataCommand}" />
|
||||
<Button Text="{Binding LoadOverview}" Command="{Binding LoadDataCommand}" />
|
||||
|
||||
<Grid RowDefinitions="Auto,Auto,Auto,Auto,Auto" ColumnDefinitions="Auto,*" Margin="10">
|
||||
<Label Text="Soll:" Grid.Row="0" Background="DarkSalmon" />
|
||||
<Label Text="Gearbeitet:" Grid.Row="1" />
|
||||
<Label Text="Berechnet:" Grid.Row="2" />
|
||||
<Label Text="Überstunden Monat:" Grid.Row="3" Margin="0,0,15,0" />
|
||||
<Label Text="Überstunden Jahr:" Grid.Row="4" />
|
||||
<Grid RowDefinitions="Auto,Auto,Auto,Auto,Auto" ColumnDefinitions="Auto,*" Margin="10">
|
||||
<Label Text="Soll:" Grid.Row="0" Background="DarkSalmon" />
|
||||
<Label Text="Gearbeitet:" Grid.Row="1" />
|
||||
<Label Text="Berechnet:" Grid.Row="2" />
|
||||
<Label Text="Überstunden Monat:" Grid.Row="3" Margin="0,0,15,0" />
|
||||
<Label Text="Überstunden Jahr:" Grid.Row="4" />
|
||||
|
||||
|
||||
<Label Grid.Row="0" Grid.Column="1" HorizontalTextAlignment="End" Padding="0,0,5,0" Text="{Binding Nominal}" Background="DarkSalmon" />
|
||||
<Label Grid.Row="1" Grid.Column="1" HorizontalTextAlignment="End" Padding="0,0,5,0" Text="{Binding ZeitDone}" />
|
||||
<Label Grid.Row="2" Grid.Column="1" HorizontalTextAlignment="End" Padding="0,0,5,0" Text="{Binding ZeitCalculated}" />
|
||||
<Label Grid.Row="3" Grid.Column="1" HorizontalTextAlignment="End" Padding="0,0,5,0" Text="{Binding OvertimeMonth}" />
|
||||
<Label Grid.Row="4" Grid.Column="1" HorizontalTextAlignment="End" Padding="0,0,5,0" Text="{Binding Overtime}" />
|
||||
</Grid>
|
||||
<Label Grid.Row="0" Grid.Column="1" HorizontalTextAlignment="End" Padding="0,0,5,0" Text="{Binding Nominal}" Background="DarkSalmon" />
|
||||
<Label Grid.Row="1" Grid.Column="1" HorizontalTextAlignment="End" Padding="0,0,5,0" Text="{Binding ZeitDone}" />
|
||||
<Label Grid.Row="2" Grid.Column="1" HorizontalTextAlignment="End" Padding="0,0,5,0" Text="{Binding ZeitCalculated}" />
|
||||
<Label Grid.Row="3" Grid.Column="1" HorizontalTextAlignment="End" Padding="0,0,5,0" Text="{Binding OvertimeMonth}" />
|
||||
<Label Grid.Row="4" Grid.Column="1" HorizontalTextAlignment="End" Padding="0,0,5,0" Text="{Binding Overtime}" />
|
||||
</Grid>
|
||||
|
||||
|
||||
<BoxView HeightRequest="1" Color="Red"/>
|
||||
<BoxView HeightRequest="1" Color="Red"/>
|
||||
|
||||
<Grid RowDefinitions="Auto" ColumnDefinitions="Auto,*">
|
||||
<DatePicker Grid.Column="0" MinimumDate="{Binding MinimumDate}"
|
||||
<Grid RowDefinitions="Auto" ColumnDefinitions="Auto,*">
|
||||
<DatePicker Grid.Column="0" MinimumDate="{Binding MinimumDate}"
|
||||
MaximumDate="{Binding MaximumDate}"
|
||||
Date="{Binding DateToday}" Format="dddd, d. MMM. yyyy" />
|
||||
<Border Grid.Column="1" Margin="15,0,0,0" Padding="15,0,0,0">
|
||||
<Label Text="{Binding TimeDay[0].Hours}" VerticalOptions="Center"></Label>
|
||||
</Border>
|
||||
</Grid>
|
||||
Date="{Binding DateToday}" Format="dddd, d. MMM yyyy" />
|
||||
<Border Grid.Column="1" Margin="15,0,0,0" Padding="15,0,0,0">
|
||||
<Label Text="{Binding TimeDay[0].Hours}" VerticalOptions="Center"></Label>
|
||||
</Border>
|
||||
</Grid>
|
||||
|
||||
|
||||
<Grid ColumnDefinitions="*,*,*">
|
||||
<Picker x:Name="pick_gemeinde" Title="Gemeinde" ItemsSource="{Binding Options}" SelectedItem="{Binding SelectedOption, Mode=TwoWay}" Grid.Column="0" >
|
||||
</Picker>
|
||||
<Picker x:Name="pick_projekt" Title="Projekt" ItemsSource="{Binding OptionsProjekt}" SelectedItem="{Binding SelectedOption, Mode=TwoWay}" Grid.Column="1" >
|
||||
</Picker>
|
||||
<Picker x:Name="pick_freistellung" Title="Freistellung" ItemsSource="{Binding OptionsFreistellung}" SelectedItem="{Binding SelectedOption, Mode=TwoWay}" Grid.Column="2" >
|
||||
</Picker>
|
||||
</Grid>
|
||||
<Entry x:Name="entry" Placeholder="Tätigkeit" />
|
||||
<!--<Grid ColumnDefinitions="*,*,*">
|
||||
<Picker x:Name="pick_gemeinde" Title="Gemeinde" ItemsSource="{Binding Options}" SelectedItem="{Binding SelectedOption, Mode=TwoWay}" Grid.Column="0" >
|
||||
</Picker>
|
||||
<Picker x:Name="pick_projekt" Title="Projekt" ItemsSource="{Binding OptionsProjekt}" SelectedItem="{Binding SelectedOption, Mode=TwoWay}" Grid.Column="1" >
|
||||
</Picker>
|
||||
<Picker x:Name="pick_freistellung" Title="Freistellung" ItemsSource="{Binding OptionsFreistellung}" SelectedItem="{Binding SelectedOption, Mode=TwoWay}" Grid.Column="2" >
|
||||
</Picker>
|
||||
</Grid>
|
||||
<Entry x:Name="entry" Placeholder="Tätigkeit" />
|
||||
|
||||
|
||||
<FlexLayout Direction="Row" AlignItems="Start" Wrap="Wrap">
|
||||
<Border Background="LightGreen">
|
||||
<HorizontalStackLayout>
|
||||
<Label Text="Beginn" TextColor="Gray" VerticalTextAlignment="Center" HorizontalTextAlignment="End" Padding="0,0,10,0" Margin="5,0,0,13"></Label>
|
||||
<TimePicker HorizontalOptions="Center" TextColor="Gray" Format="HH:mm" MinimumWidthRequest="80" />
|
||||
</HorizontalStackLayout>
|
||||
</Border>
|
||||
<Border Background="OrangeRed">
|
||||
<HorizontalStackLayout>
|
||||
<Label Text="Ende" TextColor="White" VerticalTextAlignment="Center" HorizontalTextAlignment="End" Padding="0,0,10,0" Margin="5,0,0,13"></Label>
|
||||
<TimePicker TextColor="White" Format="HH:mm" MinimumWidthRequest="80" />
|
||||
</HorizontalStackLayout>
|
||||
</Border>
|
||||
</FlexLayout>
|
||||
<FlexLayout Direction="Row" AlignItems="Start" Wrap="Wrap">
|
||||
<Border Background="LightGreen">
|
||||
<HorizontalStackLayout>
|
||||
<Label Text="Beginn" TextColor="Gray" VerticalTextAlignment="Center" HorizontalTextAlignment="End" Padding="0,0,10,0" Margin="5,0,0,13"></Label>
|
||||
<TimePicker x:Name="TimeBegin" HorizontalOptions="Center" TextColor="Gray" Format="HH:mm" MinimumWidthRequest="80" />
|
||||
</HorizontalStackLayout>
|
||||
</Border>
|
||||
<Border Background="OrangeRed">
|
||||
<HorizontalStackLayout>
|
||||
<Label Text="Ende" TextColor="White" VerticalTextAlignment="Center" HorizontalTextAlignment="End" Padding="0,0,10,0" Margin="5,0,0,13"></Label>
|
||||
<TimePicker x:Name="TimeEnd" TextColor="White" Format="HH:mm" MinimumWidthRequest="80" />
|
||||
</HorizontalStackLayout>
|
||||
</Border>
|
||||
</FlexLayout>-->
|
||||
|
||||
|
||||
<!--<ListView ItemsSource="{Binding DayTimes}" VerticalScrollBarVisibility="Never" ItemSelected="{Binding SelectEntryCommand}">-->
|
||||
<ListView ItemsSource="{Binding DayTimes}" VerticalScrollBarVisibility="Never">
|
||||
<ListView.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<ViewCell>
|
||||
<Grid Padding="15,10,0,10">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<HorizontalStackLayout Grid.Row="0" Grid.Column="0">
|
||||
<Label Grid.Row="0" Grid.Column="0" Text="{Binding begin}"/>
|
||||
<Label Text="bis" Padding="10,0,10,0"/>
|
||||
<Label Grid.Row="0" Grid.Column="1" Text="{Binding end}"/>
|
||||
</HorizontalStackLayout>
|
||||
|
||||
<Label Text="{Binding ShowDay}"></Label>
|
||||
<Label Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Text="{Binding description}" Padding="0,0,0,5"/>
|
||||
</Grid>
|
||||
</ViewCell>
|
||||
</DataTemplate>
|
||||
</ListView.ItemTemplate>
|
||||
</ListView>
|
||||
|
||||
|
||||
|
||||
</VerticalStackLayout>
|
||||
|
||||
</VerticalStackLayout>
|
||||
</ScrollView>
|
||||
</ContentPage>
|
||||
@@ -22,4 +22,8 @@ public partial class StundenPage : ContentPage {
|
||||
protected void OnDateSelected(object sender, DateChangedEventArgs e) {
|
||||
DateTime selectedDate = e.NewDate;
|
||||
}
|
||||
|
||||
private void ListView_ItemSelected(object sender, SelectedItemChangedEventArgs e) {
|
||||
throw new Exception();
|
||||
}
|
||||
}
|
||||
BIN
paket_icon.png
Normal file
BIN
paket_icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.8 KiB |
Reference in New Issue
Block a user