Compare commits
17 Commits
1.0.7
...
83118103d9
| Author | SHA1 | Date | |
|---|---|---|---|
| 83118103d9 | |||
| 5ecf6c7537 | |||
| 7540b6e6ad | |||
| 8937332942 | |||
| a0345cad94 | |||
| 6b4bffe5ec | |||
| 093679c9bb | |||
| 7f9e3f622a | |||
| 54ed791c5b | |||
| c88bf148d4 | |||
| 1a8eeec85d | |||
| 1b4f73a913 | |||
| 2f0be4cc5c | |||
| 21af63c02c | |||
| c4fdc266b5 | |||
| 6d6eaf836b | |||
| 67d662a0a7 |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -396,3 +396,5 @@ FodyWeavers.xsd
|
||||
|
||||
# JetBrains Rider
|
||||
*.sln.iml
|
||||
/.idea
|
||||
/var
|
||||
|
||||
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 19 KiB |
@@ -5,13 +5,11 @@
|
||||
/// </summary>
|
||||
public partial class App : Application {
|
||||
|
||||
/// <summary>
|
||||
/// Initialisiert eine neue Instanz der <see cref="App"/>-Klasse.
|
||||
/// </summary>
|
||||
public App() {
|
||||
InitializeComponent();
|
||||
|
||||
MainPage = new AppShell();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initialisiert eine neue Instanz der <see cref="App"/>-Klasse.
|
||||
/// </summary>
|
||||
public App() {
|
||||
InitializeComponent();
|
||||
MainPage = new AppShell();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,13 +2,20 @@
|
||||
|
||||
namespace Jugenddienst_Stunden.Converter;
|
||||
internal class SecondsTimeConverter : IValueConverter {
|
||||
|
||||
private int seconds;
|
||||
|
||||
/// <summary>
|
||||
/// Konvertiert eine Sekundenangabe nach Stunden:Minuten, auch bei mehr als 24 Stunden
|
||||
/// </summary>
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -27,8 +27,8 @@
|
||||
<ApplicationId>com.companyname.jugenddienststunden</ApplicationId>
|
||||
|
||||
<!-- Versions -->
|
||||
<ApplicationDisplayVersion>1.0.7</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>8</ApplicationVersion>
|
||||
<ApplicationDisplayVersion>1.0.9</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>10</ApplicationVersion>
|
||||
|
||||
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">11.0</SupportedOSPlatformVersion>
|
||||
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'">13.1</SupportedOSPlatformVersion>
|
||||
@@ -39,14 +39,14 @@
|
||||
<GenerateDocumentationFile>True</GenerateDocumentationFile>
|
||||
<PackageIcon>paket_icon.png</PackageIcon>
|
||||
<NeutralLanguage>de</NeutralLanguage>
|
||||
<PackageVersion>1.0.7</PackageVersion>
|
||||
<PackageVersion>1.0.9</PackageVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net8.0-maccatalyst|AnyCPU'">
|
||||
<ApplicationId>com.companyname.jugenddienststunden</ApplicationId>
|
||||
<ApplicationDisplayVersion>1.0.7</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>8</ApplicationVersion>
|
||||
<ApplicationDisplayVersion>1.0.9</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>10</ApplicationVersion>
|
||||
<Optimize>False</Optimize>
|
||||
<Deterministic>True</Deterministic>
|
||||
</PropertyGroup>
|
||||
@@ -54,8 +54,8 @@
|
||||
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net8.0-maccatalyst|AnyCPU'">
|
||||
<Optimize>True</Optimize>
|
||||
<ApplicationId>com.companyname.jugenddienststunden</ApplicationId>
|
||||
<ApplicationDisplayVersion>1.0.7</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>8</ApplicationVersion>
|
||||
<ApplicationDisplayVersion>1.0.9</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>10</ApplicationVersion>
|
||||
<Deterministic>True</Deterministic>
|
||||
</PropertyGroup>
|
||||
|
||||
@@ -65,8 +65,8 @@
|
||||
<DebugSymbols>True</DebugSymbols>
|
||||
<Optimize>False</Optimize>
|
||||
<Deterministic>True</Deterministic>
|
||||
<ApplicationDisplayVersion>1.0.7</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>8</ApplicationVersion>
|
||||
<ApplicationDisplayVersion>1.0.9</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>10</ApplicationVersion>
|
||||
<AndroidKeyStore>False</AndroidKeyStore>
|
||||
</PropertyGroup>
|
||||
|
||||
@@ -76,8 +76,8 @@
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net8.0-windows10.0.26100.0|AnyCPU'">
|
||||
<ApplicationId>com.companyname.jugenddienststunden</ApplicationId>
|
||||
<ApplicationDisplayVersion>1.0.7</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>8</ApplicationVersion>
|
||||
<ApplicationDisplayVersion>1.0.9</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>10</ApplicationVersion>
|
||||
<DefineConstants>$(DefineConstants);DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION</DefineConstants>
|
||||
<Deterministic>True</Deterministic>
|
||||
<Optimize>False</Optimize>
|
||||
@@ -89,8 +89,8 @@
|
||||
<DebugSymbols>False</DebugSymbols>
|
||||
<Optimize>True</Optimize>
|
||||
<Deterministic>True</Deterministic>
|
||||
<ApplicationDisplayVersion>1.0.7</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>8</ApplicationVersion>
|
||||
<ApplicationDisplayVersion>1.0.9</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>10</ApplicationVersion>
|
||||
<RunAOTCompilation>False</RunAOTCompilation>
|
||||
<PublishTrimmed>True</PublishTrimmed>
|
||||
<AndroidKeyStore>False</AndroidKeyStore>
|
||||
@@ -98,8 +98,8 @@
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net8.0-windows10.0.26100.0|AnyCPU'">
|
||||
<ApplicationId>com.companyname.jugenddienststunden</ApplicationId>
|
||||
<ApplicationDisplayVersion>1.0.7</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>8</ApplicationVersion>
|
||||
<ApplicationDisplayVersion>1.0.9</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>10</ApplicationVersion>
|
||||
<Optimize>True</Optimize>
|
||||
<Deterministic>True</Deterministic>
|
||||
</PropertyGroup>
|
||||
@@ -109,42 +109,46 @@
|
||||
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
||||
<AssemblyVersion>1.0.7</AssemblyVersion>
|
||||
<FileVersion>1.0.7</FileVersion>
|
||||
<AssemblyVersion>1.0.9</AssemblyVersion>
|
||||
<FileVersion>1.0.9</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net8.0-android|AnyCPU'">
|
||||
<ApplicationDisplayVersion>1.0.7</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>8</ApplicationVersion>
|
||||
<ApplicationDisplayVersion>1.0.9</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>10</ApplicationVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net8.0-android|AnyCPU'">
|
||||
<ApplicationDisplayVersion>1.0.7</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>8</ApplicationVersion>
|
||||
<ApplicationDisplayVersion>1.0.9</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>10</ApplicationVersion>
|
||||
<DebugSymbols>True</DebugSymbols>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net8.0-windows10.0.19041.0|AnyCPU'">
|
||||
<ApplicationVersion>8</ApplicationVersion>
|
||||
<ApplicationVersion>10</ApplicationVersion>
|
||||
<DefineConstants>$(DefineConstants);DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION</DefineConstants>
|
||||
<ApplicationDisplayVersion>1.0.7</ApplicationDisplayVersion>
|
||||
<ApplicationDisplayVersion>1.0.9</ApplicationDisplayVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net8.0-windows10.0.19041.0|AnyCPU'">
|
||||
<ApplicationVersion>8</ApplicationVersion>
|
||||
<ApplicationDisplayVersion>1.0.7</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>10</ApplicationVersion>
|
||||
<ApplicationDisplayVersion>1.0.9</ApplicationDisplayVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net9.0-android35.0|AnyCPU'">
|
||||
<WarningLevel>8</WarningLevel>
|
||||
<ApplicationDisplayVersion>1.0.7</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>8</ApplicationVersion>
|
||||
<ApplicationDisplayVersion>1.0.9</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>10</ApplicationVersion>
|
||||
<EnableLLVM>True</EnableLLVM>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net9.0-android35.0|AnyCPU'">
|
||||
<WarningLevel>8</WarningLevel>
|
||||
<ApplicationDisplayVersion>1.0.7</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>8</ApplicationVersion>
|
||||
<ApplicationDisplayVersion>1.0.9</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>10</ApplicationVersion>
|
||||
<EnableLLVM>True</EnableLLVM>
|
||||
<DebugSymbols>False</DebugSymbols>
|
||||
<AndroidEnableProfiledAot>False</AndroidEnableProfiledAot>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net9.0-ios|AnyCPU'">
|
||||
@@ -159,16 +163,16 @@
|
||||
<WarningLevel>8</WarningLevel>
|
||||
<NoWarn>1701;1702</NoWarn>
|
||||
<WarningsAsErrors>$(WarningsAsErrors);NU1605</WarningsAsErrors>
|
||||
<ApplicationDisplayVersion>1.0.7</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>8</ApplicationVersion>
|
||||
<ApplicationDisplayVersion>1.0.9</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>10</ApplicationVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net9.0-windows10.0.26100.0|AnyCPU'">
|
||||
<WarningLevel>8</WarningLevel>
|
||||
<NoWarn>1701;1702</NoWarn>
|
||||
<WarningsAsErrors>$(WarningsAsErrors);NU1605</WarningsAsErrors>
|
||||
<ApplicationDisplayVersion>1.0.7</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>8</ApplicationVersion>
|
||||
<ApplicationDisplayVersion>1.0.9</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>10</ApplicationVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
@@ -252,18 +256,18 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="CommunityToolkit.Maui" Version="11.1.0" />
|
||||
<PackageReference Include="CommunityToolkit.Maui" Version="12.2.0" />
|
||||
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.4.0" />
|
||||
<PackageReference Include="Microsoft.Maui.Controls" Version="9.0.40">
|
||||
<PackageReference Include="Microsoft.Maui.Controls" Version="9.0.110">
|
||||
<TreatAsUsed>true</TreatAsUsed>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.Maui.Controls.Compatibility" Version="9.0.40" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="9.0.2" />
|
||||
<PackageReference Include="Microsoft.Maui.Graphics" Version="9.0.40" />
|
||||
<PackageReference Include="Microsoft.NET.Runtime.MonoAOTCompiler.Task" Version="9.0.2" />
|
||||
<PackageReference Include="Microsoft.NET.Runtime.WebAssembly.Wasi.Sdk" Version="9.0.2" />
|
||||
<PackageReference Include="Microsoft.Maui.Controls.Compatibility" Version="9.0.110" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="9.0.9" />
|
||||
<PackageReference Include="Microsoft.Maui.Graphics" Version="9.0.110" />
|
||||
<PackageReference Include="Microsoft.NET.Runtime.MonoAOTCompiler.Task" Version="9.0.9" />
|
||||
<PackageReference Include="Microsoft.NET.Runtime.WebAssembly.Wasi.Sdk" Version="9.0.9" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||
<PackageReference Include="ZXing.Net.Maui.Controls" Version="0.4.0" />
|
||||
<PackageReference Include="ZXing.Net.Maui.Controls" Version="0.5.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@@ -15,7 +15,9 @@ public static class MauiProgram {
|
||||
builder
|
||||
.UseMauiApp<App>()
|
||||
// Initialize the .NET MAUI Community Toolkit by adding the below line of code
|
||||
.UseMauiCommunityToolkit()
|
||||
.UseMauiCommunityToolkit(options => {
|
||||
options.SetShouldEnableSnackbarOnWindows(true);
|
||||
})
|
||||
.ConfigureFonts(fonts => {
|
||||
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
|
||||
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
|
||||
|
||||
@@ -1,49 +1,49 @@
|
||||
namespace Jugenddienst_Stunden.Models;
|
||||
internal class Note {
|
||||
public string Filename { get; set; }
|
||||
public string Text { get; set; }
|
||||
public DateTime Date { get; set; }
|
||||
public string Filename { get; set; }
|
||||
public string Text { get; set; }
|
||||
public DateTime Date { get; set; }
|
||||
|
||||
public void Save() =>
|
||||
public void Save() =>
|
||||
File.WriteAllText(System.IO.Path.Combine(FileSystem.AppDataDirectory, Filename), Text);
|
||||
|
||||
public void Delete() =>
|
||||
File.Delete(System.IO.Path.Combine(FileSystem.AppDataDirectory, Filename));
|
||||
public void Delete() =>
|
||||
File.Delete(System.IO.Path.Combine(FileSystem.AppDataDirectory, Filename));
|
||||
|
||||
public static Note Load(string filename) {
|
||||
filename = System.IO.Path.Combine(FileSystem.AppDataDirectory, filename);
|
||||
public static Note 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);
|
||||
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)
|
||||
};
|
||||
}
|
||||
return
|
||||
new() {
|
||||
Filename = Path.GetFileName(filename),
|
||||
Text = File.ReadAllText(filename),
|
||||
Date = File.GetLastWriteTime(filename)
|
||||
};
|
||||
}
|
||||
|
||||
public static IEnumerable<Note> LoadAll() {
|
||||
// Get the folder where the notes are stored.
|
||||
string appDataPath = FileSystem.AppDataDirectory;
|
||||
public static IEnumerable<Note> LoadAll() {
|
||||
// Get the folder where the notes are stored.
|
||||
string appDataPath = FileSystem.AppDataDirectory;
|
||||
|
||||
// Use Linq extensions to load the *.notes.txt files.
|
||||
return Directory
|
||||
// Use Linq extensions to load the *.notes.txt files.
|
||||
return Directory
|
||||
|
||||
// Select the file names from the directory
|
||||
.EnumerateFiles(appDataPath, "*.notes.txt")
|
||||
// Select the file names from the directory
|
||||
.EnumerateFiles(appDataPath, "*.notes.txt")
|
||||
|
||||
// Each file name is used to load a note
|
||||
.Select(filename => Note.Load(Path.GetFileName(filename)))
|
||||
// Each file name is used to load a note
|
||||
.Select(filename => Note.Load(Path.GetFileName(filename)))
|
||||
|
||||
// With the final collection of notes, order them by date
|
||||
.OrderByDescending(note => note.Date);
|
||||
}
|
||||
// With the final collection of notes, order them by date
|
||||
.OrderByDescending(note => note.Date);
|
||||
}
|
||||
|
||||
public Note() {
|
||||
Filename = $"{Path.GetRandomFileName()}.notes.txt";
|
||||
Date = DateTime.Now;
|
||||
Text = "";
|
||||
}
|
||||
public Note() {
|
||||
Filename = $"{Path.GetRandomFileName()}.notes.txt";
|
||||
Date = DateTime.Now;
|
||||
Text = "";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,9 @@
|
||||
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
|
||||
xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
|
||||
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
|
||||
IgnorableNamespaces="uap rescap">
|
||||
xmlns:com="http://schemas.microsoft.com/appx/manifest/com/windows10"
|
||||
xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10"
|
||||
IgnorableNamespaces="uap rescap com desktop">
|
||||
|
||||
<Identity Name="JugenddienstStunden" Publisher="CN=User Name" Version="0.0.0.0" />
|
||||
|
||||
@@ -36,6 +38,26 @@
|
||||
<uap:DefaultTile Square71x71Logo="Resources\Windows\Small\$placeholder$.png" Wide310x150Logo="Resources\Windows\Wide\$placeholder$.png" Square310x310Logo="Resources\Windows\$placeholder$.png" ShortName="Stunden"/>
|
||||
<uap:SplashScreen Image="Resources\Windows\Splash\$placeholder$.png" BackgroundColor="#F7931D"/>
|
||||
</uap:VisualElements>
|
||||
|
||||
<Extensions>
|
||||
|
||||
<!-- Specify which CLSID to activate when notification is clicked -->
|
||||
<desktop:Extension Category="windows.toastNotificationActivation">
|
||||
<desktop:ToastNotificationActivation ToastActivatorCLSID="6e919706-2634-4d97-a93c-2213b2acc334" />
|
||||
</desktop:Extension>
|
||||
|
||||
<!-- Register COM CLSID -->
|
||||
<com:Extension Category="windows.comServer">
|
||||
<com:ComServer>
|
||||
<com:ExeServer Executable="Jugenddienst Stunden.exe" DisplayName="$targetnametoken$" Arguments="----AppNotificationActivated:">
|
||||
<!-- Example path to executable: CommunityToolkit.Maui.Sample\CommunityToolkit.Maui.Sample.exe -->
|
||||
<com:Class Id="6e919706-2634-4d97-a93c-2213b2acc334" />
|
||||
</com:ExeServer>
|
||||
</com:ComServer>
|
||||
</com:Extension>
|
||||
|
||||
</Extensions>
|
||||
|
||||
</Application>
|
||||
</Applications>
|
||||
|
||||
|
||||
@@ -7,10 +7,10 @@
|
||||
<!-- Note: For Android please see also Platforms\Android\Resources\values\colors.xml -->
|
||||
|
||||
<Color x:Key="Primary">#F7931D</Color>
|
||||
<Color x:Key="PrimaryDark">#ac99ea</Color>
|
||||
<Color x:Key="PrimaryDark">#EC8A16</Color>
|
||||
<Color x:Key="PrimaryDarkText">#242424</Color>
|
||||
<Color x:Key="Secondary">#DFD8F7</Color>
|
||||
<Color x:Key="SecondaryDarkText">#9880e5</Color>
|
||||
<Color x:Key="SecondaryDarkText">#EC8A16</Color>
|
||||
<Color x:Key="Tertiary">#2B0B98</Color>
|
||||
|
||||
<Color x:Key="TransparentColor">Transparent</Color>
|
||||
|
||||
@@ -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<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;
|
||||
//public List<string> 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<Hours>))]
|
||||
//public Dictionary<int,decimal> 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<Hours>))]
|
||||
//public Dictionary<int,decimal> zeit_total_daily;
|
||||
|
||||
public List<TimeDay> zeit_total_daily_api;
|
||||
public List<TimeDay> zeit_total_daily_api;
|
||||
public List<DayTime>? daytime;
|
||||
//public List<string> wochensumme;
|
||||
public int overtime_month;
|
||||
public int overtime;
|
||||
//public List<string> 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<string> wochensumme;
|
||||
|
||||
[ObservableProperty]
|
||||
public double overtime_month;
|
||||
|
||||
[ObservableProperty]
|
||||
public double overtime;
|
||||
//public List<string> 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;
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
internal class NominalDay {
|
||||
public int day_number;
|
||||
public int month_number;
|
||||
public int hours;
|
||||
public double hours;
|
||||
public DateOnly date;
|
||||
}
|
||||
|
||||
@@ -2,5 +2,5 @@
|
||||
|
||||
internal class NominalWeek {
|
||||
public int Week_number;
|
||||
public int Hours;
|
||||
public double Hours;
|
||||
}
|
||||
|
||||
@@ -30,4 +30,9 @@ public class Settings {
|
||||
public List<Freistellung>? Freistellungen { get; set; }
|
||||
|
||||
public List<Sollstunden> Nominal { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Version der API
|
||||
/// </summary>
|
||||
public string Version { get; set; }
|
||||
}
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
|
||||
@@ -5,5 +5,5 @@
|
||||
/// </summary>
|
||||
internal struct TimeDay {
|
||||
public int Day { get; set; }
|
||||
public decimal Hours { get; set; }
|
||||
public double Hours { get; set; }
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ using System.Runtime.CompilerServices;
|
||||
using System.Windows.Input;
|
||||
using CommunityToolkit.Maui.Alerts;
|
||||
using CommunityToolkit.Maui.Core;
|
||||
using static System.Runtime.InteropServices.JavaScript.JSType;
|
||||
|
||||
|
||||
namespace Jugenddienst_Stunden.ViewModels;
|
||||
@@ -55,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;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Mindest-Datum für den Datepicker
|
||||
@@ -83,7 +83,7 @@ internal partial class StundenViewModel : ObservableObject, IQueryAttributable,
|
||||
set {
|
||||
if (dateToday != value) {
|
||||
dateToday = value;
|
||||
LoadOverview = "Lade Summen für " + dateToday.ToString("MMMM");
|
||||
LoadOverview = "Lade Summen für " + dateToday.ToString("MMMM yy");
|
||||
//OnPropertyChanged();
|
||||
Task.Run(() => LoadDay(value));
|
||||
}
|
||||
@@ -93,35 +93,42 @@ internal partial class StundenViewModel : ObservableObject, IQueryAttributable,
|
||||
/// <summary>
|
||||
/// Monatsübersicht: Geleistete Stunden
|
||||
/// </summary>
|
||||
public string? ZeitCalculated {
|
||||
public double? ZeitCalculated {
|
||||
get => Hours.Zeit_total;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Monatsübersicht: Sollstunden
|
||||
/// </summary>
|
||||
public int? Nominal {
|
||||
public double? Nominal {
|
||||
get => Hours.Nominal;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Monatsübersicht: Differenz zwischen Soll und geleisteten Stunden
|
||||
/// </summary>
|
||||
public int? Overtime {
|
||||
public double? Overtime {
|
||||
get => Hours.overtime;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Monatsübersicht: Restüberstunden insgesamt
|
||||
/// </summary>
|
||||
public int OvertimeMonth {
|
||||
public double OvertimeMonth {
|
||||
get => Hours.overtime_month;
|
||||
}
|
||||
|
||||
public double Zeitausgleich {
|
||||
get => Hours.zeitausgleich;
|
||||
}
|
||||
public double ZeitausgleichMonth {
|
||||
get => Hours.zeitausgleich_month;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Monatsübersicht: Resturlaub
|
||||
/// </summary>
|
||||
public int Holiday {
|
||||
public double Holiday {
|
||||
get => Hours.holiday;
|
||||
}
|
||||
|
||||
@@ -150,7 +157,7 @@ internal partial class StundenViewModel : ObservableObject, IQueryAttributable,
|
||||
/// CTOR
|
||||
/// </summary>
|
||||
public StundenViewModel() {
|
||||
_hour = new Hours();
|
||||
Hours = new Hours();
|
||||
|
||||
LoadOverview = "Lade Summen für " + DateToday.ToString("MMMM");
|
||||
|
||||
@@ -193,8 +200,13 @@ internal partial class StundenViewModel : ObservableObject, IQueryAttributable,
|
||||
/// </summary>
|
||||
private async Task LoadData() {
|
||||
try {
|
||||
BaseResponse dat = await HoursBase.LoadBase("hours&month=" + DateToday.ToString("MM"));
|
||||
_hour = dat.hour;
|
||||
BaseResponse dat = await HoursBase.LoadBase("hours&year=" + DateToday.ToString("yyyy") + "&month=" + DateToday.ToString("MM"));
|
||||
Hours = dat.hour;
|
||||
Settings = dat.settings;
|
||||
|
||||
if (Settings.Version != AppInfo.Current.VersionString.Substring(0, 5)) {
|
||||
InfoEvent?.Invoke(this, "Version: " + Settings.Version + " verfügbar (" + AppInfo.Current.VersionString.Substring(0, 5) + " installiert)");
|
||||
}
|
||||
//_hour = await HoursBase.LoadData();
|
||||
RefreshProperties();
|
||||
} catch (Exception e) {
|
||||
@@ -218,11 +230,9 @@ internal partial class StundenViewModel : ObservableObject, IQueryAttributable,
|
||||
GemeindeAktivSet = Settings.GemeindeAktivSet;
|
||||
ProjektAktivSet = Settings.ProjektAktivSet;
|
||||
|
||||
|
||||
OnPropertyChanged(nameof(GemeindeAktivSet));
|
||||
OnPropertyChanged(nameof(ProjektAktivSet));
|
||||
|
||||
|
||||
List<Sollstunden> _soll;
|
||||
TimeSpan span = TimeSpan.Zero;
|
||||
bool merker = false;
|
||||
@@ -249,7 +259,10 @@ internal partial class StundenViewModel : ObservableObject, IQueryAttributable,
|
||||
} catch (Exception e) {
|
||||
DayTimes = new List<DayTime>();
|
||||
//TODO: hier könnte auch ein Fehler kommen, dann wäre InfoEvent falsch.
|
||||
InfoEvent?.Invoke(this, e.Message);
|
||||
|
||||
if (Settings.Version != null && Settings.Version != AppInfo.Current.VersionString.Substring(0, 5)) {
|
||||
InfoEvent?.Invoke(this, "Version: " + Settings.Version + " verfügbar (" + AppInfo.Current.VersionString.Substring(0, 5) + " installiert)");
|
||||
} else { InfoEvent?.Invoke(this, e.Message); }
|
||||
} finally {
|
||||
OnPropertyChanged(nameof(DayTotal));
|
||||
OnPropertyChanged(nameof(Sollstunden));
|
||||
@@ -257,7 +270,6 @@ internal partial class StundenViewModel : ObservableObject, IQueryAttributable,
|
||||
OnPropertyChanged(nameof(LoadOverview));
|
||||
//OnPropertyChanged(nameof(DayTimes));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
async void IQueryAttributable.ApplyQueryAttributes(IDictionary<string, object> query) {
|
||||
@@ -282,13 +294,14 @@ internal partial class StundenViewModel : ObservableObject, IQueryAttributable,
|
||||
/// Refreshes all properties
|
||||
/// </summary>
|
||||
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));
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<?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:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
|
||||
xmlns:viewModels="clr-namespace:Jugenddienst_Stunden.ViewModels"
|
||||
x:Class="Jugenddienst_Stunden.Views.AllNotesPage"
|
||||
Title="Deine Notizen"
|
||||
@@ -15,6 +16,12 @@
|
||||
<ToolbarItem Text="Neue Notiz" Command="{Binding NewCommand}" IconImageSource="{FontImage Glyph='+', Color=Black, Size=22}" />
|
||||
</ContentPage.ToolbarItems>
|
||||
|
||||
<ContentPage.Behaviors>
|
||||
<toolkit:StatusBarBehavior
|
||||
StatusBarColor="{AppThemeBinding Dark={StaticResource OffBlack}, Light={StaticResource Primary}}"
|
||||
StatusBarStyle="LightContent" />
|
||||
</ContentPage.Behaviors>
|
||||
|
||||
<VerticalStackLayout Margin="20,0,0,0">
|
||||
<Label Text="Werden nur lokal gespeichert"/>
|
||||
|
||||
@@ -26,7 +33,7 @@
|
||||
SelectionChangedCommand="{Binding SelectNoteCommand}"
|
||||
SelectionChangedCommandParameter="{Binding Source={RelativeSource Self}, Path=SelectedItem}">
|
||||
|
||||
<!-- Designate how the collection of items are laid out -->
|
||||
<!-- Designate how the collection of items is laid out -->
|
||||
<CollectionView.ItemsLayout>
|
||||
<LinearItemsLayout Orientation="Vertical" ItemSpacing="10" />
|
||||
</CollectionView.ItemsLayout>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<?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:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
|
||||
xmlns:models="clr-namespace:Jugenddienst_Stunden.ViewModels"
|
||||
xmlns:zxing="clr-namespace:ZXing.Net.Maui.Controls;assembly=ZXing.Net.MAUI.Controls"
|
||||
xmlns:conv="clr-namespace:Jugenddienst_Stunden.Converter"
|
||||
@@ -18,44 +19,50 @@
|
||||
</ResourceDictionary>
|
||||
</ContentPage.Resources>
|
||||
|
||||
<ContentPage.Behaviors>
|
||||
<toolkit:StatusBarBehavior
|
||||
StatusBarColor="{AppThemeBinding Dark={StaticResource OffBlack}, Light={StaticResource Primary}}"
|
||||
StatusBarStyle="LightContent" />
|
||||
</ContentPage.Behaviors>
|
||||
|
||||
<ScrollView>
|
||||
<VerticalStackLayout Spacing="10" Margin="15,0">
|
||||
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<HorizontalStackLayout Spacing="10" HorizontalOptions="Start" Grid.Column="0">
|
||||
<Label FontSize="22" FontAttributes="Bold" Text="{Binding AppTitle}" Margin="0,4,0,0" />
|
||||
<Label FontSize="22" Text="{Binding Version}" Margin="0,4,0,0" />
|
||||
</HorizontalStackLayout>
|
||||
<HorizontalStackLayout HorizontalOptions="End" Spacing="10" Grid.Column="1">
|
||||
<Label Text="Login QR/manuell" Margin="0,12,0,0"/>
|
||||
<Switch x:Name="LoginSwitch" IsToggled="False" Toggled="Switch_Toggled"/>
|
||||
<HorizontalStackLayout Spacing="5" HorizontalOptions="Start" Grid.Column="0">
|
||||
<Label FontSize="20" FontAttributes="Bold" Text="{Binding AppTitle}" Margin="0,7,0,0" />
|
||||
<Label FontSize="16" Text="{Binding Version}" Margin="0,11,0,0" />
|
||||
</HorizontalStackLayout>
|
||||
<Grid Grid.Column="1" ColumnDefinitions="*,50" ColumnSpacing="10">
|
||||
<Label Text="Login QR/manuell" VerticalOptions="Center" Grid.Column="0"/>
|
||||
<Switch x:Name="LoginSwitch" IsToggled="False" Toggled="Switch_Toggled" VerticalOptions="Center" Grid.Column="1"/>
|
||||
</Grid>
|
||||
</Grid>
|
||||
|
||||
<Label x:Name="ServerLabel" Text="{Binding Server}" IsVisible="{Binding Server, Converter={StaticResource StringVisibilityConverter}}" />
|
||||
|
||||
<VerticalStackLayout x:Name="LoginQR">
|
||||
<VerticalStackLayout x:Name="LoginQR" Margin="0,20,0,0">
|
||||
<Label Text="Login mit QR-Code" FontSize="32" HorizontalOptions="Start" />
|
||||
<Label x:Name="Message" Text="{Binding Message}" Margin="0,15" />
|
||||
|
||||
<Border HeightRequest="300" Padding="0">
|
||||
<zxing:CameraBarcodeReaderView x:Name="barcodeScannerView"
|
||||
BarcodesDetected="BarcodesDetected"
|
||||
HorizontalOptions="FillAndExpand"
|
||||
VerticalOptions="FillAndExpand"/>
|
||||
<zxing:CameraBarcodeReaderView
|
||||
x:Name="barcodeScannerView"
|
||||
BarcodesDetected="BarcodesDetected"
|
||||
HorizontalOptions="FillAndExpand"
|
||||
VerticalOptions="FillAndExpand"/>
|
||||
</Border>
|
||||
</VerticalStackLayout>
|
||||
|
||||
<VerticalStackLayout x:Name="LoginManual" Spacing="15">
|
||||
<Label Text="Manueller Login" FontSize="32" HorizontalOptions="Start" />
|
||||
<Entry x:Name="UsernameEntry" Placeholder="Benutzername" Keyboard="Email" />
|
||||
<VerticalStackLayout x:Name="LoginManual" Spacing="25">
|
||||
<Label Text="Manueller Login" FontSize="32" HorizontalOptions="Start" Margin="0, 20, 0, 0" />
|
||||
<Entry x:Name="UsernameEntry" Placeholder="Benutzername (Mailadresse)" Keyboard="Email" />
|
||||
<Entry x:Name="PasswordEntry" Placeholder="Passwort" IsPassword="True" />
|
||||
<Entry x:Name="ServerEntry" Placeholder="Server" Keyboard="Url" />
|
||||
<Button Text="Login" Clicked="OnLoginButtonClicked" />
|
||||
<Entry x:Name="ServerEntry" Placeholder="Server (gleich wie im Browser)" Keyboard="Url" />
|
||||
<Button Text="Login" Clicked="OnLoginButtonClicked" TextColor="{AppThemeBinding Dark={StaticResource White}, Light={StaticResource White}}" />
|
||||
</VerticalStackLayout>
|
||||
</VerticalStackLayout>
|
||||
|
||||
|
||||
@@ -1,12 +1,21 @@
|
||||
<?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:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
|
||||
xmlns:viewModels="clr-namespace:Jugenddienst_Stunden.ViewModels"
|
||||
x:Class="Jugenddienst_Stunden.Views.NotePage"
|
||||
Title="Notiz">
|
||||
|
||||
<ContentPage.BindingContext>
|
||||
<viewModels:NoteViewModel />
|
||||
</ContentPage.BindingContext>
|
||||
|
||||
<ContentPage.Behaviors>
|
||||
<toolkit:StatusBarBehavior
|
||||
StatusBarColor="{AppThemeBinding Dark={StaticResource OffBlack}, Light={StaticResource Primary}}"
|
||||
StatusBarStyle="LightContent" />
|
||||
</ContentPage.Behaviors>
|
||||
|
||||
<VerticalStackLayout Spacing="10" Margin="5">
|
||||
<Editor x:Name="TextEditor"
|
||||
Placeholder="Gib deine Notiz ein"
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<?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:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
|
||||
xmlns:models="clr-namespace:Jugenddienst_Stunden.ViewModels"
|
||||
xmlns:conv="clr-namespace:Jugenddienst_Stunden.Converter"
|
||||
x:Class="Jugenddienst_Stunden.Views.StundePage"
|
||||
@@ -17,6 +18,12 @@
|
||||
</ResourceDictionary>
|
||||
</ContentPage.Resources>
|
||||
|
||||
<ContentPage.Behaviors>
|
||||
<toolkit:StatusBarBehavior
|
||||
StatusBarColor="{AppThemeBinding Dark={StaticResource OffBlack}, Light={StaticResource Primary}}"
|
||||
StatusBarStyle="LightContent" />
|
||||
</ContentPage.Behaviors>
|
||||
|
||||
<VerticalStackLayout Spacing="10" Margin="10">
|
||||
|
||||
<Label Text="{Binding SubTitle}" FontSize="Medium" FontAttributes="Bold" Margin="4,0,0,0" />
|
||||
@@ -70,8 +77,15 @@
|
||||
<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 DayTime.Id, Converter={StaticResource IntBoolConverter}}" IsVisible="{Binding FreistellungEnabled}" />
|
||||
<Button Grid.Column="1" Text="Speichern"
|
||||
TextColor="{AppThemeBinding Dark={StaticResource White}, Light={StaticResource White}}"
|
||||
Command="{Binding SaveCommand}" />
|
||||
<Button Grid.Column="0" Text="Löschen"
|
||||
Command="{Binding DeleteConfirmCommand}"
|
||||
IsEnabled="{Binding DayTime.Id, Converter={StaticResource IntBoolConverter}}"
|
||||
IsVisible="{Binding FreistellungEnabled}"
|
||||
BackgroundColor="{StaticResource Gray500}"
|
||||
TextColor="{AppThemeBinding Dark={StaticResource White}, Light={StaticResource White}}"/>
|
||||
</Grid>
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<?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:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
|
||||
xmlns:mmodels="clr-namespace:Jugenddienst_Stunden.Models"
|
||||
xmlns:models="clr-namespace:Jugenddienst_Stunden.ViewModels"
|
||||
xmlns:conv="clr-namespace:Jugenddienst_Stunden.Converter"
|
||||
@@ -21,17 +22,22 @@
|
||||
</ResourceDictionary>
|
||||
</ContentPage.Resources>
|
||||
|
||||
<ContentPage.Behaviors>
|
||||
<toolkit:StatusBarBehavior
|
||||
StatusBarColor="{AppThemeBinding Dark={StaticResource OffBlack}, Light={StaticResource Primary}}"
|
||||
StatusBarStyle="LightContent" />
|
||||
</ContentPage.Behaviors>
|
||||
|
||||
<ContentPage.ToolbarItems>
|
||||
<!--<ToolbarItem Text="Lade Liste" Command="{Binding RefreshListCommand}"/>-->
|
||||
<ToolbarItem Text="Neuer Eintrag" IconImageSource="{StaticResource ToolbarIcon}" Command="{Binding NewEntryCommand}" />
|
||||
|
||||
</ContentPage.ToolbarItems>
|
||||
|
||||
<RefreshView x:Name="MyRefreshView" Command="{Binding RefreshCommand}" IsRefreshing="{Binding IsRefreshing}" Margin="10" Padding="10">
|
||||
<VerticalStackLayout Spacing="10" Margin="10">
|
||||
<Grid RowDefinitions="50,*,Auto,80">
|
||||
<!--<VerticalStackLayout Spacing="10" Margin="10">-->
|
||||
|
||||
<Grid RowDefinitions="Auto" ColumnDefinitions="Auto,*" HeightRequest="50">
|
||||
<Grid RowDefinitions="Auto" ColumnDefinitions="Auto,*" HeightRequest="50" Grid.Row="0">
|
||||
<DatePicker Grid.Column="0" MinimumDate="{Binding MinimumDate}"
|
||||
MaximumDate="{Binding MaximumDate}"
|
||||
Date="{Binding DateToday}" Format="dddd, d. MMMM yyyy" />
|
||||
@@ -46,11 +52,13 @@
|
||||
|
||||
<CollectionView
|
||||
ItemsSource="{Binding DayTimes}"
|
||||
x:Name="stundeItems" Margin="0"
|
||||
HeightRequest="300"
|
||||
x:Name="stundeItems" Margin="0,0,0,20"
|
||||
|
||||
SelectionMode="Single"
|
||||
SelectionChangedCommand="{Binding SelectEntryCommand}"
|
||||
SelectionChangedCommandParameter="{Binding Source={RelativeSource Self}, Path=SelectedItem}">
|
||||
SelectionChangedCommandParameter="{Binding Source={RelativeSource Self}, Path=SelectedItem}"
|
||||
VerticalOptions="Start"
|
||||
Grid.Row="1">
|
||||
|
||||
<CollectionView.ItemsLayout>
|
||||
<LinearItemsLayout Orientation="Vertical" ItemSpacing="0" />
|
||||
@@ -110,27 +118,32 @@
|
||||
|
||||
</CollectionView>
|
||||
|
||||
<BoxView HeightRequest="1" />
|
||||
|
||||
<Button Text="{Binding LoadOverview}" Command="{Binding LoadDataCommand}" />
|
||||
<Border Padding="2" HeightRequest="125">
|
||||
<Grid RowDefinitions="Auto,Auto,Auto,Auto,Auto,*" ColumnDefinitions="Auto,*" Margin="10,2">
|
||||
<!--<BoxView HeightRequest="1" Grid.Row="2" Margin="0,5,0,15" />-->
|
||||
<Button Text="{Binding LoadOverview}"
|
||||
Grid.Row="2"
|
||||
Command="{Binding LoadDataCommand}"
|
||||
TextColor="{AppThemeBinding Dark={StaticResource White}, Light={StaticResource White}}" />
|
||||
<Border Padding="2" Grid.Row="3" Margin="0,10,0,0">
|
||||
<Grid RowDefinitions="Auto,Auto,Auto,Auto,Auto,*" ColumnDefinitions="Auto,Auto,*,Auto" Margin="10,2">
|
||||
<Label Grid.Row="0" Text="Soll:" />
|
||||
<Label Grid.Row="1" Text="Summe:" />
|
||||
<Label Grid.Row="2" Text="Differenz:" Margin="0,0,15,0" />
|
||||
<BoxView Grid.Row="3" Grid.ColumnSpan="2" HeightRequest="1" Color="LightGrey" Margin="0,5"/>
|
||||
<Label Grid.Row="4" Text="Restüberstunden:" />
|
||||
<Label Grid.Row="5" Text="Resturlaub:" />
|
||||
<!--<BoxView Grid.Row="3" Grid.ColumnSpan="4" HeightRequest="1" Color="LightGrey" Margin="0,5"/>-->
|
||||
<Label Grid.Row="0" Grid.Column="2" Text="Restüberstunden:" Margin="15,0,0,0" />
|
||||
<Label Grid.Row="1" Grid.Column="2" Text="Zeitausgleich:" Margin="15,0,0,0" />
|
||||
<Label Grid.Row="2" Grid.Column="2" Text="Resturlaub:" Margin="15,0,0,0" />
|
||||
|
||||
<Label Grid.Row="0" Grid.Column="1" HorizontalTextAlignment="End" Padding="0,0,5,0" Text="{Binding Nominal, Converter={StaticResource secToTime}}" ToolTipProperties.Text="Sollstunden" />
|
||||
<Label Grid.Row="1" Grid.Column="1" HorizontalTextAlignment="End" Padding="0,0,5,0" Text="{Binding ZeitCalculated, Converter={StaticResource secToTime}}" ToolTipProperties.Text="Geleistete Stunden" />
|
||||
<Label Grid.Row="2" Grid.Column="1" HorizontalTextAlignment="End" Padding="0,0,5,0" Text="{Binding OvertimeMonth, Converter={StaticResource secToTime}}" />
|
||||
<Label Grid.Row="4" Grid.Column="1" HorizontalTextAlignment="End" Padding="0,0,5,0" Text="{Binding Overtime, Converter={StaticResource secToTime}}" />
|
||||
<Label Grid.Row="5" Grid.Column="1" HorizontalTextAlignment="End" Padding="0,0,5,0" Text="{Binding Holiday, Converter={StaticResource secToTime}}" />
|
||||
<Label Grid.Row="0" Grid.Column="3" HorizontalTextAlignment="End" Padding="0,0,5,0" Text="{Binding Overtime, Converter={StaticResource secToTime}}" />
|
||||
<Label Grid.Row="1" Grid.Column="3" HorizontalTextAlignment="End" Padding="0,0,5,0" Text="{Binding Zeitausgleich, Converter={StaticResource secToTime}}" />
|
||||
<Label Grid.Row="2" Grid.Column="3" HorizontalTextAlignment="End" Padding="0,0,5,0" Text="{Binding Holiday, Converter={StaticResource secToTime}}" />
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
</VerticalStackLayout>
|
||||
</Grid>
|
||||
<!--</VerticalStackLayout>-->
|
||||
|
||||
</RefreshView>
|
||||
</ContentPage>
|
||||
@@ -10,8 +10,6 @@ namespace Jugenddienst_Stunden.Views;
|
||||
/// </summary>
|
||||
public partial class StundenPage : ContentPage {
|
||||
|
||||
private int heightValue = 300;
|
||||
|
||||
/// <summary>
|
||||
/// CTOR
|
||||
/// </summary>
|
||||
@@ -25,17 +23,7 @@ public partial class StundenPage : ContentPage {
|
||||
if (!CheckLogin()) {
|
||||
NavigateToTargetPage();
|
||||
}
|
||||
#if ANDROID
|
||||
heightValue = 280;
|
||||
#elif IOS
|
||||
heightValue = 280;
|
||||
#elif WINDOWS
|
||||
heightValue = 320;
|
||||
#else
|
||||
heightValue = 300;
|
||||
#endif
|
||||
|
||||
SizeChanged += OnPageSizeChanged;
|
||||
}
|
||||
|
||||
private void Vm_AlertEvent(object? sender, string e) {
|
||||
@@ -55,7 +43,7 @@ public partial class StundenPage : ContentPage {
|
||||
MainThread.BeginInvokeOnMainThread(async () => {
|
||||
CancellationTokenSource cts = new CancellationTokenSource();
|
||||
ToastDuration duration = ToastDuration.Short;
|
||||
double fontSize = 20;
|
||||
double fontSize = 16;
|
||||
var toast = Toast.Make(e, duration, fontSize);
|
||||
await toast.Show(cts.Token);
|
||||
});
|
||||
@@ -77,13 +65,4 @@ public partial class StundenPage : ContentPage {
|
||||
await Navigation.PushAsync(new LoginPage());
|
||||
}
|
||||
|
||||
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 - heightValue; //Datepicker Height 50, Monatssummen Height 125, Titel + Navigation Height xyz
|
||||
}
|
||||
}
|
||||
BIN
Uhr.afdesign
BIN
Uhr.afdesign
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 33 KiB |
BIN
appicon.afdesign
BIN
appicon.afdesign
Binary file not shown.
Binary file not shown.
BIN
paket_icon.png
BIN
paket_icon.png
Binary file not shown.
|
Before Width: | Height: | Size: 5.8 KiB |
BIN
splash.afdesign
BIN
splash.afdesign
Binary file not shown.
BIN
splash.pdf
BIN
splash.pdf
Binary file not shown.
Reference in New Issue
Block a user