Anpassungen Detailseite
Auswahlliste Gemeinden und Projekte
This commit is contained in:
@@ -53,6 +53,8 @@ namespace Jugenddienst_Stunden.Models {
|
||||
string apiUrl = args[0]; // Ersetzen Sie dies durch die tatsächliche URL der API
|
||||
string bearerToken = args[1]; // Ersetzen Sie hier durch Ihr tatsächliches Token
|
||||
|
||||
Preferences.Default.Set("apiUrl", apiUrl);
|
||||
|
||||
string data = await GetApiDataWithAuthAsync(apiUrl, bearerToken);
|
||||
|
||||
if (data != null) {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using Jugenddienst_Stunden.ViewModels;
|
||||
using Newtonsoft.Json;
|
||||
using System.Text;
|
||||
|
||||
@@ -41,25 +42,19 @@ namespace Jugenddienst_Stunden.Models {
|
||||
//throw new Exception("Keine Internetverbindung");
|
||||
} else {
|
||||
var tokendata = new TokenData(apiKey);
|
||||
|
||||
//try {
|
||||
string data = await Auth.GetApiDataWithAuthAsync(tokendata.url, tokendata.apiKey);
|
||||
if (data == "\"Lalala\"") {
|
||||
throw new Exception("Problem mit Token");
|
||||
}
|
||||
if (data != null) {
|
||||
OperatorVar = Newtonsoft.Json.JsonConvert.DeserializeObject<Operator>(data);
|
||||
Preferences.Default.Set("name", OperatorVar.name);
|
||||
Preferences.Default.Set("surname", OperatorVar.surname);
|
||||
}
|
||||
//} catch (Exception e) {
|
||||
// //AlertEvent?.Invoke(this, e.Message);
|
||||
// await App.Current.MainPage.DisplayAlert("Fehler",
|
||||
// e.Message,
|
||||
// "OK");
|
||||
//}
|
||||
|
||||
|
||||
|
||||
string data = await Auth.GetApiDataWithAuthAsync(tokendata.url, tokendata.apiKey);
|
||||
if (data == "\"Lalala\"") {
|
||||
throw new Exception("Problem mit Token");
|
||||
}
|
||||
if (data != null) {
|
||||
OperatorVar = JsonConvert.DeserializeObject<Operator>(data);
|
||||
Preferences.Default.Set("name", OperatorVar.name);
|
||||
Preferences.Default.Set("surname", OperatorVar.surname);
|
||||
Preferences.Default.Set("apiUrl", tokendata.url);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
return OperatorVar;
|
||||
|
||||
@@ -12,7 +12,8 @@ using System.Collections.Generic;
|
||||
namespace Jugenddienst_Stunden.Models {
|
||||
internal class Stunde : ObservableObject {
|
||||
|
||||
|
||||
public DateTime Date { get; set; }
|
||||
private static Hours Hours { get; set; }
|
||||
|
||||
//Default-Werte zum Testen
|
||||
|
||||
@@ -25,48 +26,22 @@ namespace Jugenddienst_Stunden.Models {
|
||||
public static string apiKey = Preferences.Default.Get("apiKey", "MTQzfEFlMVRjQXdZMnI4RmpxZ0FSY3A0VEN2bVZYVXxodHRwOi8vaG91cnMuZGF1bmkubWluZS5udTo4MS9hcHBhcGk=");
|
||||
public static string name = Preferences.Default.Get("name", "Christine");
|
||||
public static string surname = Preferences.Default.Get("surname", "Feichter");
|
||||
public static string apiUrl = Preferences.Default.Get("apiUrl", "https://");
|
||||
|
||||
//Damian
|
||||
//public static string apiKey = Preferences.Default.Get("apiKey", "MTU0fGpkQUNYTGkvcjMvVk4rNkMyK0dDQkJmMkFwVXxodHRwOi8vaG91cnMuZGF1bmkubWluZS5udTo4MS9hcHBhcGk=");
|
||||
|
||||
//private static readonly string requestUrl = $"{BaseAddress}/appapi?hours";
|
||||
|
||||
public DateTime Date { get; set; }
|
||||
private static Hours Hours { get; set; }
|
||||
|
||||
|
||||
|
||||
public static async Task<Hours> LoadData() {
|
||||
|
||||
//Temporär fix für virtuelle App
|
||||
//apiKey = "MTAyfEJZZnB1L3VwcnhoVms0dDlLZENPZWtUVy85b3xodHRwOi8vaG91cnMuZGF1bmkubWluZS5udTo4MS9hcHBhcGk=";
|
||||
//name = "Kathi";
|
||||
//surname = "Wegi";
|
||||
|
||||
//apiKey = "MTQzfEFlMVRjQXdZMnI4RmpxZ0FSY3A0VEN2bVZYVXxodHRwOi8vaG91cnMuZGF1bmkubWluZS5udTo4MS9hcHBhcGk=";
|
||||
//name = "Chri";
|
||||
//surname = "Fe";
|
||||
|
||||
//apiKey = "MTI3fDEyYURVdHVZVWRaZk91eDlNcjZDUFlTdmdkNHxodHRwOi8vaG91cnMuZGF1bmkubWluZS5udTo4MS9hcHBhcGk=";
|
||||
//name = "Ju";
|
||||
//surname = "Ze";
|
||||
|
||||
//apiKey = "M3wvK09XQkZod1l4SXlVcGVWazdlUmYrTnBWaUl8aHR0cHM6Ly9ob3Vycy5waWRhLmluZm8vYXBwYXBp";
|
||||
//name = "Le";
|
||||
//surname = "Ma";
|
||||
|
||||
//apiKey = "OXxzTkxVWjJqdmI2VXFrdUhtcktwK1d1YU41cTh8aHR0cDovL2hvdXJzLmRhdW5pLm1pbmUubnU6ODEvYXBwYXBp";
|
||||
//name = "Eli";
|
||||
//surname = "Gap";
|
||||
|
||||
//apiKey = "NXw5eFF0RVQ5TFBMTXFVeFIzQURtd01idHFUb2d8aHR0cDovL2hvdXJzLmRhdW5pLm1pbmUubnU6ODEvYXBwYXBp"; //Johannes Fink
|
||||
|
||||
//Preferences.Default.Set("apiKey", apiKey);
|
||||
//Preferences.Default.Set("name", name);
|
||||
//Preferences.Default.Set("surname", surname);
|
||||
|
||||
|
||||
|
||||
|
||||
Hours hours = new Hours();
|
||||
|
||||
@@ -88,9 +63,6 @@ namespace Jugenddienst_Stunden.Models {
|
||||
}
|
||||
|
||||
hours = JsonConvert.DeserializeObject<Hours>(data);
|
||||
//Preferences.Default.Set("name", hours.operator_api.name);
|
||||
//Preferences.Default.Set("surname", hours.operator_api.surname);
|
||||
|
||||
|
||||
}
|
||||
return hours;
|
||||
@@ -99,7 +71,6 @@ namespace Jugenddienst_Stunden.Models {
|
||||
|
||||
public static async Task<List<DayTime>> LoadDay(DateTime date) {
|
||||
|
||||
|
||||
List<DayTime> daytimes = new List<DayTime>();
|
||||
|
||||
if (Connectivity.Current.NetworkAccess == NetworkAccess.None) {
|
||||
@@ -121,25 +92,23 @@ namespace Jugenddienst_Stunden.Models {
|
||||
|
||||
//daytimes = System.Text.Json.JsonSerializer.Deserialize<List<DayTime>>(data);
|
||||
daytimes = JsonConvert.DeserializeObject<List<DayTime>>(data);
|
||||
//Preferences.Default.Set("name", hours.operator_api.name);
|
||||
//Preferences.Default.Set("surname", hours.operator_api.surname);
|
||||
|
||||
|
||||
}
|
||||
//Hours = hours;
|
||||
return daytimes;
|
||||
}
|
||||
public event EventHandler<string> AlertEvent;
|
||||
|
||||
|
||||
public static async Task<DayTime> LoadEntry(int id) {
|
||||
|
||||
var tokendata = new TokenData(apiKey);
|
||||
|
||||
var data = await Auth.GetApiDataWithAuthAsync(tokendata.url + "?id=" + id, tokendata.apiKey);
|
||||
if(String.IsNullOrEmpty(data))
|
||||
AlertEvent?.Invoke(this, "Auswahl enthält keine Daten");
|
||||
|
||||
//DayTime hours = Hours.daytime.Find(x => x.id == id);
|
||||
DayTime hours = JsonConvert.DeserializeObject<DayTime>(data);
|
||||
hours.TimeSpanVon = hours.begin.ToTimeSpan();
|
||||
hours.TimeSpanBis = hours.end.ToTimeSpan();
|
||||
|
||||
return hours;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
namespace Jugenddienst_Stunden.Types {
|
||||
using Jugenddienst_Stunden.Models;
|
||||
using System.Collections.ObjectModel;
|
||||
|
||||
namespace Jugenddienst_Stunden.Types {
|
||||
public class DayTime {
|
||||
public int? id;
|
||||
public int EmployeeId;
|
||||
@@ -10,10 +13,15 @@
|
||||
public string? free;
|
||||
public bool? approved;
|
||||
public int? type;
|
||||
public int? project;
|
||||
public int? projekt;
|
||||
public int? gemeinde;
|
||||
public TimeOnly night;
|
||||
public Dictionary<string, TimeOnly> total;
|
||||
public TimeOnly end_print;
|
||||
public TimeSpan TimeSpanVon { get; set; }
|
||||
public TimeSpan TimeSpanBis { get; set; }
|
||||
public Collection<Projekt> Projekte { get; set; }
|
||||
public Collection<Gemeinde> Gemeinden { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,15 +6,18 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace Jugenddienst_Stunden.Types
|
||||
{
|
||||
internal class Gemeinde
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
/// <summary>
|
||||
/// Repräsentiert eine Gemeinde mit einer eindeutigen Id und einem Namen.
|
||||
/// </summary>
|
||||
public class Gemeinde {
|
||||
/// <summary>
|
||||
/// Eindeutige Id der Gemeinde.
|
||||
/// </summary>
|
||||
public int Id { get; set; }
|
||||
|
||||
public Gemeinde(int id, string name)
|
||||
{
|
||||
Id = id;
|
||||
Name = name;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Name der Gemeinde.
|
||||
/// </summary>
|
||||
public string Name { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,9 +6,18 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace Jugenddienst_Stunden.Types
|
||||
{
|
||||
internal class Projekt
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// Repräsentiert ein Projekt mit einer eindeutigen ID und einem Namen.
|
||||
/// </summary>
|
||||
public class Projekt {
|
||||
/// <summary>
|
||||
/// Holt oder setzt die eindeutige ID des Projekts.
|
||||
/// </summary>
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Holt oder setzt den Namen des Projekts.
|
||||
/// </summary>
|
||||
public string Name { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +1,18 @@
|
||||
using CommunityToolkit.Mvvm.Input;
|
||||
using System.Windows.Input;
|
||||
using Microsoft.Maui.Dispatching;
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
//using BarcodeScanning;
|
||||
|
||||
namespace Jugenddienst_Stunden.ViewModels {
|
||||
internal class LoginViewModel {
|
||||
public class LoginViewModel {
|
||||
public string AppTitle => AppInfo.Name;
|
||||
public string Version => AppInfo.VersionString;
|
||||
|
||||
public string Message => "Scanne den QR-Code von deinem Benutzerprofil auf der Stundenseite.";
|
||||
|
||||
public string Server { get; set; } = "Server: " + Preferences.Default.Get("apiUrl", "https://");
|
||||
|
||||
public string Title { get; set; } = Preferences.Default.Get("name", "") + " " + Preferences.Default.Get("surname", "");
|
||||
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ using Jugenddienst_Stunden.Models;
|
||||
using Jugenddienst_Stunden.Types;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
@@ -14,18 +15,32 @@ namespace Jugenddienst_Stunden.ViewModels {
|
||||
|
||||
public int id { get; set; }
|
||||
|
||||
private Types.DayTime _stunde;
|
||||
private DayTime _stunde;
|
||||
public DayTime Stunde { get => _stunde; }
|
||||
|
||||
public string Description {
|
||||
get => _stunde.description;
|
||||
set {
|
||||
if (_stunde.description != value) {
|
||||
_stunde.description = value;
|
||||
OnPropertyChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
public ObservableCollection<Gemeinde> OptionsGemeinde { get; private set; }
|
||||
public ObservableCollection<Projekt> OptionsProjekt { get; private set; }
|
||||
public ObservableCollection<string> OptionsFreistellung { get; }
|
||||
|
||||
//public TimeSpan Von {
|
||||
// get => _stunde.begin.ToTimeSpan();
|
||||
// set {
|
||||
// if (_stunde.begin.ToTimeSpan() != value) {
|
||||
// _stunde.begin = TimeOnly.FromTimeSpan(value);
|
||||
// OnPropertyChanged(nameof(Von));
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
//public TimeSpan Bis {
|
||||
// get => _stunde.end.ToTimeSpan();
|
||||
// set {
|
||||
// if (_stunde.end.ToTimeSpan() != value) {
|
||||
// _stunde.end = TimeOnly.FromTimeSpan(value);
|
||||
// OnPropertyChanged(nameof(Bis));
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
|
||||
public string SubTitle { get; set; } = DateTime.Today.ToString("dddd, d. MMM. yyyy");
|
||||
|
||||
@@ -36,14 +51,22 @@ namespace Jugenddienst_Stunden.ViewModels {
|
||||
|
||||
|
||||
public StundeViewModel() {
|
||||
_stunde = new Types.DayTime();
|
||||
_stunde = new DayTime();
|
||||
//SaveCommand = new AsyncRelayCommand(Save);
|
||||
//DeleteCommand = new AsyncRelayCommand(Delete);
|
||||
|
||||
|
||||
OptionsFreistellung = new ObservableCollection<string> {
|
||||
"Urlaub",
|
||||
"Krankheit",
|
||||
"Elternzeit"
|
||||
};
|
||||
}
|
||||
|
||||
public StundeViewModel(Types.DayTime stunde) {
|
||||
public StundeViewModel(DayTime stunde) {
|
||||
_stunde = stunde;
|
||||
|
||||
|
||||
|
||||
//SaveCommand = new AsyncRelayCommand(Save);
|
||||
//DeleteCommand = new AsyncRelayCommand(Delete);
|
||||
}
|
||||
@@ -59,13 +82,70 @@ namespace Jugenddienst_Stunden.ViewModels {
|
||||
// await Shell.Current.GoToAsync($"..?deleted={_stunde.Filename}");
|
||||
//}
|
||||
|
||||
public event EventHandler<string> AlertEvent;
|
||||
public event EventHandler<string> ErrorEvent;
|
||||
|
||||
async void IQueryAttributable.ApplyQueryAttributes(IDictionary<string, object> query) {
|
||||
if (query.ContainsKey("load")) {
|
||||
//DateTime heute = DateTime.Now;
|
||||
_stunde = await Models.Stunde.LoadEntry(Convert.ToInt32(query["load"]));
|
||||
if (String.IsNullOrEmpty(_stunde.description)) {
|
||||
AlertEvent?.Invoke(this, "Eintrag hat keine Daten zurückgegeben");
|
||||
}
|
||||
SubTitle = _stunde.day.ToString("dddd, d. MMM. yyyy");
|
||||
|
||||
OptionsProjekt = new ObservableCollection<Projekt>(_stunde.Projekte);
|
||||
OptionsGemeinde = new ObservableCollection<Gemeinde>(_stunde.Gemeinden);
|
||||
OnPropertyChanged(nameof(OptionsGemeinde));
|
||||
OnPropertyChanged(nameof(OptionsProjekt));
|
||||
|
||||
//OptionsProjekt.FirstOrDefault(x => x.Id == _stunde.projekt);
|
||||
|
||||
SelectedOptionGemeinde = OptionsGemeinde.FirstOrDefault(item => item.Id == _stunde.gemeinde) ?? new Gemeinde();
|
||||
OnPropertyChanged(nameof(SelectedOptionGemeinde));
|
||||
|
||||
|
||||
SelectedOptionProjekt = OptionsProjekt.FirstOrDefault(Projekt => Projekt.Id == _stunde.projekt) ?? new Projekt();
|
||||
OnPropertyChanged(nameof(SelectedOptionProjekt));
|
||||
|
||||
OnPropertyChanged(nameof(Stunde));
|
||||
OnPropertyChanged(nameof(SubTitle));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private Gemeinde _selectedGemeinde;
|
||||
public Gemeinde SelectedOptionGemeinde {
|
||||
get => _selectedGemeinde;
|
||||
set {
|
||||
if (_selectedGemeinde != value) {
|
||||
_selectedGemeinde = value;
|
||||
OnPropertyChanged(nameof(SelectedOptionGemeinde));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Projekt _selectedProjekt;
|
||||
public Projekt SelectedOptionProjekt {
|
||||
get => _selectedProjekt;
|
||||
set {
|
||||
if (_selectedProjekt != value) {
|
||||
_selectedProjekt = value;
|
||||
//new AsyncRelayCommand(LoadData);
|
||||
OnPropertyChanged(nameof(SelectedOptionProjekt));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private string selectedFreistellung;
|
||||
public string SelectedOptionFreistellung {
|
||||
get => selectedFreistellung;
|
||||
set {
|
||||
if (selectedFreistellung != value) {
|
||||
selectedFreistellung = value;
|
||||
//new AsyncRelayCommand(LoadData);
|
||||
OnPropertyChanged(nameof(SelectedOptionFreistellung));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,43 +94,16 @@ namespace Jugenddienst_Stunden.ViewModels {
|
||||
|
||||
public string Title { get; set; } = Preferences.Default.Get("name", "") + " " + Preferences.Default.Get("surname", "");
|
||||
|
||||
//public ObservableCollection<string> Options { get; }
|
||||
//public ObservableCollection<string> OptionsProjekt { get; }
|
||||
//public ObservableCollection<string> OptionsFreistellung { get; }
|
||||
|
||||
public List<TimeDay> TimeDay { get; set; }
|
||||
|
||||
//private string selectedOption;
|
||||
//public string SelectedOption {
|
||||
// get => selectedOption;
|
||||
// set {
|
||||
// if (selectedOption != value) {
|
||||
// selectedOption = value;
|
||||
// //new AsyncRelayCommand(LoadData);
|
||||
// OnPropertyChanged(nameof(SelectedOption));
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
|
||||
|
||||
public StundenViewModel() {
|
||||
|
||||
|
||||
// Options = new ObservableCollection<string> {
|
||||
// "Gemeinde 1",
|
||||
// "Gemeinde 2",
|
||||
// "Gemeinde 3",
|
||||
// "Gemeinde 4"
|
||||
//};
|
||||
// OptionsProjekt = new ObservableCollection<string> {
|
||||
// "Projekt 1",
|
||||
// "Projekt 2",
|
||||
// "Projekt 3"
|
||||
//};
|
||||
// OptionsFreistellung = new ObservableCollection<string> {
|
||||
// "Urlaub",
|
||||
// "Krankheit",
|
||||
// "Elternzeit"
|
||||
//};
|
||||
|
||||
_hour = new Types.Hours();
|
||||
LoadDataCommand = new AsyncRelayCommand(LoadData);
|
||||
|
||||
|
||||
@@ -15,13 +15,13 @@
|
||||
<ToolbarItem Text="Add" Command="{Binding NewCommand}" IconImageSource="{FontImage Glyph='+', Color=Black, Size=22}" />
|
||||
</ContentPage.ToolbarItems>
|
||||
|
||||
<VerticalStackLayout>
|
||||
<VerticalStackLayout Margin="20,0,0,0">
|
||||
<Label Text="Werden nur lokal gespeichert"/>
|
||||
|
||||
<!-- Display notes in a list -->
|
||||
<CollectionView x:Name="notesCollection"
|
||||
ItemsSource="{Binding AllNotes}"
|
||||
Margin="20"
|
||||
Margin="0,20,0,0"
|
||||
SelectionMode="Single"
|
||||
SelectionChangedCommand="{Binding SelectNoteCommand}"
|
||||
SelectionChangedCommandParameter="{Binding Source={RelativeSource Self}, Path=SelectedItem}">
|
||||
|
||||
@@ -17,7 +17,8 @@
|
||||
</HorizontalStackLayout>
|
||||
|
||||
|
||||
<Label Text="{Binding Message}" HeightRequest="110" />
|
||||
<Label Text="{Binding Message}" HeightRequest="40" />
|
||||
<Label Text="{Binding Server}" HeightRequest="40" Margin="0,0,0,40" />
|
||||
|
||||
<zxing:CameraBarcodeReaderView x:Name="barcodeScannerView"
|
||||
BarcodesDetected="BarcodesDetected"
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using Jugenddienst_Stunden.Models;
|
||||
using Jugenddienst_Stunden.ViewModels;
|
||||
using Microsoft.Maui.Controls;
|
||||
using System.Collections.Generic;
|
||||
using ZXing.Net.Maui;
|
||||
@@ -9,6 +10,7 @@ public partial class LoginPage : ContentPage {
|
||||
|
||||
private DateTime _lastDetectionTime;
|
||||
private readonly TimeSpan _detectionInterval = TimeSpan.FromSeconds(5);
|
||||
private readonly LoginViewModel _loginViewModel = new LoginViewModel();
|
||||
|
||||
public LoginPage() {
|
||||
InitializeComponent();
|
||||
@@ -42,6 +44,9 @@ public partial class LoginPage : ContentPage {
|
||||
Preferences.Default.Set("apiKey", barcode.Value);
|
||||
Preferences.Default.Set("name", op.name);
|
||||
Preferences.Default.Set("surname", op.surname);
|
||||
//Preferences.Default.Set("apiUrl", Pre);
|
||||
_loginViewModel.Server = Preferences.Default.Get("apiUrl", "");
|
||||
|
||||
|
||||
await DisplayAlert("Login erfolgreich", op.name + " " + op.surname, "OK");
|
||||
} catch (Exception e) {
|
||||
@@ -51,8 +56,6 @@ public partial class LoginPage : ContentPage {
|
||||
"OK");
|
||||
}
|
||||
|
||||
|
||||
|
||||
});
|
||||
} else {
|
||||
MainThread.InvokeOnMainThreadAsync(() => {
|
||||
@@ -64,17 +67,6 @@ public partial class LoginPage : ContentPage {
|
||||
}
|
||||
}
|
||||
|
||||
//if (first is null) {
|
||||
// return;
|
||||
//}
|
||||
//Dispatcher.DispatchAsync(async () => {
|
||||
// await DisplayAlert("Scan-Ergebnis", $"Barcode: {first.Value}", "OK");
|
||||
//});
|
||||
//MainThread.InvokeOnMainThreadAsync(() => {
|
||||
// DisplayAlert("Barcode erkannt", $"Barcode: {first.Format} - {first.Value}", "OK");
|
||||
// Models.Stunde.apiKey = first.Value;
|
||||
//});
|
||||
|
||||
}
|
||||
|
||||
protected override void OnDisappearing() {
|
||||
@@ -90,6 +82,4 @@ public partial class LoginPage : ContentPage {
|
||||
barcodeScannerView.IsDetecting = true;
|
||||
barcodeScannerView.CameraLocation = CameraLocation.Rear;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,22 +3,22 @@
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||
xmlns:viewModels="clr-namespace:Jugenddienst_Stunden.ViewModels"
|
||||
x:Class="Jugenddienst_Stunden.Views.NotePage"
|
||||
Title="Note">
|
||||
Title="Notiz">
|
||||
<ContentPage.BindingContext>
|
||||
<viewModels:NoteViewModel />
|
||||
</ContentPage.BindingContext>
|
||||
<VerticalStackLayout Spacing="10" Margin="5">
|
||||
<Editor x:Name="TextEditor"
|
||||
Placeholder="Enter your note"
|
||||
Placeholder="Gib deine Notiz ein"
|
||||
Text="{Binding Text}"
|
||||
HeightRequest="80" />
|
||||
|
||||
<Grid ColumnDefinitions="*,*" ColumnSpacing="4">
|
||||
<Button Text="Save"
|
||||
<Button Text="Speichern"
|
||||
Command="{Binding SaveCommand}" />
|
||||
|
||||
<Button Grid.Column="1"
|
||||
Text="Delete"
|
||||
Text="Löschen"
|
||||
Command="{Binding DeleteCommand}" />
|
||||
</Grid>
|
||||
</VerticalStackLayout>
|
||||
|
||||
@@ -12,6 +12,30 @@
|
||||
<VerticalStackLayout Spacing="10" Margin="10">
|
||||
<Label Text="{Binding SubTitle}" />
|
||||
|
||||
<Grid ColumnDefinitions="*,*,*">
|
||||
<Picker x:Name="pick_gemeinde" Title="Gemeinde" ItemsSource="{Binding OptionsGemeinde}" SelectedItem="{Binding SelectedOptionGemeinde, Mode=TwoWay}" ItemDisplayBinding="{Binding Name}" Grid.Column="0" >
|
||||
</Picker>
|
||||
<Picker x:Name="pick_projekt" Title="Projekt" ItemsSource="{Binding OptionsProjekt}" SelectedItem="{Binding SelectedOptionProjekt, Mode=TwoWay}" ItemDisplayBinding="{Binding Name}" Grid.Column="1" >
|
||||
</Picker>
|
||||
<Picker x:Name="pick_freistellung" Title="Freistellung" ItemsSource="{Binding OptionsFreistellung}" SelectedItem="{Binding SelectedOptionFreistellung, Mode=TwoWay}" Grid.Column="2" >
|
||||
</Picker>
|
||||
</Grid>
|
||||
|
||||
<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" Time="{Binding Stunde.TimeSpanVon}" />
|
||||
</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" Time="{Binding Stunde.TimeSpanBis}" />
|
||||
</HorizontalStackLayout>
|
||||
</Border>
|
||||
</FlexLayout>
|
||||
|
||||
<Grid Padding="5,10,5,10">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
@@ -21,11 +45,13 @@
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<HorizontalStackLayout Grid.Row="0" Grid.Column="0">
|
||||
<Label Grid.Row="0" Grid.Column="0" Text="{Binding Stunde.begin}"/>
|
||||
<Label Text="bis" Padding="10,0,10,0"/>
|
||||
<Label Grid.Row="0" Grid.Column="1" Text="{Binding Stunde.end}"/>
|
||||
</HorizontalStackLayout>
|
||||
|
||||
|
||||
<!--<Label Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Text="{Binding Stunde.description}" Padding="0,0,0,5"/>-->
|
||||
|
||||
@@ -34,9 +60,7 @@
|
||||
|
||||
<Grid ColumnDefinitions="*,*" ColumnSpacing="4">
|
||||
<Button Text="Save" />
|
||||
|
||||
<Button Grid.Column="1"
|
||||
Text="Delete" />
|
||||
<Button Grid.Column="1" Text="Delete" />
|
||||
</Grid>
|
||||
</VerticalStackLayout>
|
||||
</ContentPage>
|
||||
Reference in New Issue
Block a user