浏览代码

- Changes from roach

- checkbox to save user data
master
Flo Smilari 4 年前
父节点
当前提交
8cd3f452c4

+ 16
- 7
Pages/AccountPage.razor 查看文件

<div class="row no-gutters align-items-center w-100"> <div class="row no-gutters align-items-center w-100">
<div class="col-12"> <div class="col-12">
<MatTextField Class="w-100" Label="@I18n["Phone"]" Outlined="true" type="text" @bind-Value="@Account.Phone" <MatTextField Class="w-100" Label="@I18n["Phone"]" Outlined="true" type="text" @bind-Value="@Account.Phone"
OnKeyDown="@InputCursorHandler.OnConstrainedFieldKeyDownHandlerAsync" maxlength="20" pattern="^([0-9]*)$"></MatTextField>
OnKeyDown="@InputCursorHandler.OnConstrainedFieldKeyDownHandlerAsync" maxlength="20" pattern="^([0-9]*)$"></MatTextField>
</div> </div>
</div> </div>
<div class="row no-gutters align-items-center w-100"> <div class="row no-gutters align-items-center w-100">
<div class="col-12"> <div class="col-12">
<MatTextField Class="w-100" Label="@I18n["Mobile"]" Outlined="true" type="text" @bind-Value="@Account.Mobile" <MatTextField Class="w-100" Label="@I18n["Mobile"]" Outlined="true" type="text" @bind-Value="@Account.Mobile"
OnKeyDown="@InputCursorHandler.OnConstrainedFieldKeyDownHandlerAsync" maxlength="20" pattern="^([0-9]*)$"></MatTextField>
OnKeyDown="@InputCursorHandler.OnConstrainedFieldKeyDownHandlerAsync" maxlength="20" pattern="^([0-9]*)$"></MatTextField>
</div> </div>
</div> </div>
<div class="row no-gutters align-items-center w-100"> <div class="row no-gutters align-items-center w-100">
<div class="col-12"> <div class="col-12">
<MatStringField Class="w-100" Label="@I18n["Mail"]" Outlined="true" type="email" @bind-Value="@Account.Email" Required="true" <MatStringField Class="w-100" Label="@I18n["Mail"]" Outlined="true" type="email" @bind-Value="@Account.Email" Required="true"
OnKeyDown="@InputCursorHandler.OnKeyDownHandlerAsync" maxlength="50"></MatStringField>
OnKeyDown="@InputCursorHandler.OnKeyDownHandlerAsync" maxlength="50"></MatStringField>
</div> </div>
</div> </div>
</div> </div>
@if (!string.IsNullOrEmpty(FromRoute)) { @if (!string.IsNullOrEmpty(FromRoute)) {
<div class="row no-gutters justify-content-end w-100">
<div class="row no-gutters align-items-end justify-content-center" style="padding-bottom:2em">
<MatButton Class="w-100" Raised="true" @onclick="SaveUserData">@I18n["Save"]</MatButton>
<div class="row no-gutters align-items-center w-100">
<div>
<MatCheckbox @bind-Value="@saveBevorSend" Label="@I18n["SaveBevorSend"]" se></MatCheckbox>
</div> </div>
</div> </div>
@*<div class="row no-gutters justify-content-end w-100">
<div class="row no-gutters align-items-end justify-content-center" style="padding-bottom:2em">
<MatButton Class="w-100" Raised="true" @onclick="SaveUserData">@I18n["Save"]</MatButton>
</div>
</div>*@
<div class="row no-gutters align-items-end justify-content-center w-100" style="padding-bottom:2em"> <div class="row no-gutters align-items-end justify-content-center w-100" style="padding-bottom:2em">
<div class="col" style="padding-right:0.5em"> <div class="col" style="padding-right:0.5em">
<MatButton Class="w-100" Outlined="true" @onclick="Cancel">@I18n["Cancel"]</MatButton> <MatButton Class="w-100" Outlined="true" @onclick="Cancel">@I18n["Cancel"]</MatButton>
private UserData Account = new(); private UserData Account = new();
private bool saveBevorSend = true;
private string zipCityStringValue; private string zipCityStringValue;
private ZipCity selectedZipCity; private ZipCity selectedZipCity;
private ZipCity SelectedZipCity { private ZipCity SelectedZipCity {
return String.Format("{0} {1}", I18n.GetString("Zip"), I18n.GetString("City")); return String.Format("{0} {1}", I18n.GetString("Zip"), I18n.GetString("City"));
} }
private void Next() {
private async void Next() {
PageHistoryManager.AddPageToHistory(NavigationManager.Uri); PageHistoryManager.AddPageToHistory(NavigationManager.Uri);
try { try {
if (!string.IsNullOrEmpty(FromRoute) && saveBevorSend) {
await SaveUserData();
}
if ("Found".Equals(FromRoute)) { if ("Found".Equals(FromRoute)) {
UserDataProvider.MapReport(ReportDataProvider.Report, Account); UserDataProvider.MapReport(ReportDataProvider.Report, Account);
Validator.ValidateContact(ReportDataProvider.Report); Validator.ValidateContact(ReportDataProvider.Report);

+ 2
- 2
Pages/CaritasServicesPage.razor 查看文件

</MatCardContent> </MatCardContent>
</MatCard> </MatCard>
</div> </div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-2-phone mat-layout-grid-cell-span-3-tablet mat-layout-grid-cell-span-4-desktop">
@*<div class="mat-layout-grid-cell mat-layout-grid-cell-span-2-phone mat-layout-grid-cell-span-3-tablet mat-layout-grid-cell-span-4-desktop">
<MatCard class="fv-mat-card"> <MatCard class="fv-mat-card">
<MatCardContent> <MatCardContent>
<MatCardMedia Square="true" ImageUrl="./images/batch_kulturlegi.png"></MatCardMedia> <MatCardMedia Square="true" ImageUrl="./images/batch_kulturlegi.png"></MatCardMedia>
<MatCardMedia Square="true" ImageUrl="./images/batch_markt.png"></MatCardMedia> <MatCardMedia Square="true" ImageUrl="./images/batch_markt.png"></MatCardMedia>
</MatCardContent> </MatCardContent>
</MatCard> </MatCard>
</div>
</div>*@
</div> </div>
</div> </div>
</div> </div>

+ 6
- 6
Pages/Fundvelo/CaritasServiceFundVeloFoundKeyDataPage.razor 查看文件

<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-8-tablet mat-layout-grid-cell-span-12-desktop"> <div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-8-tablet mat-layout-grid-cell-span-12-desktop">
<div class="mat-layout-grid-inner"> <div class="mat-layout-grid-inner">
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-4-tablet mat-layout-grid-cell-span-4-desktop">
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-3-tablet mat-layout-grid-cell-span-3-desktop">
<MatSelectValue Class="required" FullWidth="true" Outlined="true" Label="@I18n["Color"]" @bind-Value="selectedColor" Items="@Colors" ValueSelector="@(i=>i)" <MatSelectValue Class="required" FullWidth="true" Outlined="true" Label="@I18n["Color"]" @bind-Value="selectedColor" Items="@Colors" ValueSelector="@(i=>i)"
@onkeydown="InputCursorHandler.OnKeyDownHandlerAsync"> @onkeydown="InputCursorHandler.OnKeyDownHandlerAsync">
<ItemTemplate> <ItemTemplate>
</ItemTemplate> </ItemTemplate>
</MatSelectValue> </MatSelectValue>
</div> </div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-4-tablet mat-layout-grid-cell-span-4-desktop">
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-3-tablet mat-layout-grid-cell-span-3-desktop">
<div class="outlined"> <div class="outlined">
<MatAutocompleteList TItem="Brand" FullWidth="true" Label="@I18n["Brand"]" Required="true" Items="@Brands" OnTextChanged="setBrandValue" @bind-Value="SelectedBrand" CustomStringSelector="@(i => i?.Bezeichnung)" <MatAutocompleteList TItem="Brand" FullWidth="true" Label="@I18n["Brand"]" Required="true" Items="@Brands" OnTextChanged="setBrandValue" @bind-Value="SelectedBrand" CustomStringSelector="@(i => i?.Bezeichnung)"
ShowClearButton="true" NumberOfElementsInPopup="6" @onkeydown="InputCursorHandler.OnKeyDownHandlerAsync"> ShowClearButton="true" NumberOfElementsInPopup="6" @onkeydown="InputCursorHandler.OnKeyDownHandlerAsync">
</MatAutocompleteList> </MatAutocompleteList>
</div> </div>
</div> </div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-4-tablet mat-layout-grid-cell-span-4-desktop">
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-3-tablet mat-layout-grid-cell-span-3-desktop">
<MatSelectValue Class="required" FullWidth="true" Outlined="true" Label="@I18n["Type"]" @bind-Value="selectedBcType" Items="@BicycleTypes" ValueSelector="@(i=>i)" <MatSelectValue Class="required" FullWidth="true" Outlined="true" Label="@I18n["Type"]" @bind-Value="selectedBcType" Items="@BicycleTypes" ValueSelector="@(i=>i)"
@onkeydown="InputCursorHandler.OnKeyDownHandlerAsync"> @onkeydown="InputCursorHandler.OnKeyDownHandlerAsync">
<ItemTemplate> <ItemTemplate>
</ItemTemplate> </ItemTemplate>
</MatSelectValue> </MatSelectValue>
</div> </div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-4-tablet mat-layout-grid-cell-span-4-desktop">
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-3-tablet mat-layout-grid-cell-span-3-desktop">
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-4-tablet mat-layout-grid-cell-span-12-desktop"> <div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-4-tablet mat-layout-grid-cell-span-12-desktop">
<MatStringField Class="w-100 form-check-label" Label="@I18n["FrameNumber"]" Outlined="true" type="text" @bind-Value="frameNumber" <MatStringField Class="w-100 form-check-label" Label="@I18n["FrameNumber"]" Outlined="true" type="text" @bind-Value="frameNumber"
OnKeyDown="@InputCursorHandler.OnKeyDownHandlerAsync" maxlength="20"></MatStringField> OnKeyDown="@InputCursorHandler.OnKeyDownHandlerAsync" maxlength="20"></MatStringField>
</div> </div>
</div> </div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-4-tablet mat-layout-grid-cell-span-4-desktop">
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-12-phone mat-layout-grid-cell-span-12-tablet mat-layout-grid-cell-span-12-desktop">
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-4-tablet mat-layout-grid-cell-span-12-desktop"> <div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-4-tablet mat-layout-grid-cell-span-12-desktop">
<MatStringField Class="w-100 form-check-label" Label="@I18n["Remark"]" Outlined="true" type="text" @bind-Value="remark" <MatStringField Class="w-100 form-check-label" Label="@I18n["Remark"]" Outlined="true" type="text" @bind-Value="remark"
OnKeyDown="@InputCursorHandler.OnKeyDownHandlerAsync" maxlength="1000"></MatStringField>
OnKeyDown="@InputCursorHandler.OnKeyDownHandlerAsync" maxlength="1000" rows="1" TextArea="true"></MatStringField>
</div> </div>
</div> </div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-4-tablet mat-layout-grid-cell-span-4-desktop"> <div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-4-tablet mat-layout-grid-cell-span-4-desktop">

+ 95
- 73
Pages/Fundvelo/CaritasServiceFundVeloLostFoundPage.razor 查看文件

@using cwebplusApp.Shared.Services; @using cwebplusApp.Shared.Services;
@using cwebplusApp.Shared.Models; @using cwebplusApp.Shared.Models;
@inject IStringLocalizer<Resources> I18n
@inject NavigationManager NavigationManager @inject NavigationManager NavigationManager
@inject PageHistoryManager PageHistoryManager @inject PageHistoryManager PageHistoryManager
@inject ReportDataProvider ReportDataProvider @inject ReportDataProvider ReportDataProvider
@inject UserDataProvider UserDataProvider @inject UserDataProvider UserDataProvider
@inject ReportRepositoryService ReportRepositoryService @inject ReportRepositoryService ReportRepositoryService
<div class="row px-3 h-100">
<div class="row no-gutters align-items-center w-100">
<div class="mat-layout-grid w-100">
<div class="mat-layout-grid-inner">
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-1">
</div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-2">
<MatCard Class="fv-mat-card">
<MatCardContent>
<MatCardMedia Square="true" ImageUrl="./images/batch_found.png" @onclick="Found"></MatCardMedia>
</MatCardContent>
</MatCard>
</div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-1">
</div>
<div class="row px-3 h-100">
<div class="row no-gutters align-items-center w-100">
<table class="w-100">
<tr>
<td class="text-center">
<span class="text-left" style="max-width: 100%;display:inline-block;font-size:smaller">
<p><a href="https://shop.caritas-luzern.ch/de/Velos-c75735006" target="_blank">Velos (caritas-luzern.ch)</a></p>
<p><a href="https://www.velostation.ch/de/velostationen/uebersichtskarte/luzern" target="_blank">Luzern – Forum Velostationen Schweiz</a></p>
<p><a href="https://www.nextbike.ch/de/" target="_blank">nextbike | Fahrradverleih in Luzern</a></p>
<p><a href="https://www.caritas-luzern.ch/was-wir-tun/caritas-betriebe/velomobilitaet-velodienste-velowerkstatt-veloverleih" target="_blank">Velomobilität Caritas Luzern: Velodienste, Velowerkstatt & Veloverleih (caritas-luzern.ch)</a></p>
</span>
</td>
</tr>
</table>
</div>
<div class="row no-gutters align-items-center w-100">
<div class="mat-layout-grid w-100">
<div class="mat-layout-grid-inner">
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-1">
</div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-2">
<MatCard Class="fv-mat-card">
<MatCardContent>
<MatCardMedia Square="true" ImageUrl="./images/batch_found.png" @onclick="Found"></MatCardMedia>
</MatCardContent>
</MatCard>
</div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-1">
</div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-1">
</div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-2">
<MatCard Class="fv-mat-card">
<MatCardContent>
<MatCardMedia Square="true" ImageUrl="./images/batch_missing.png" @onclick="Missing"></MatCardMedia>
</MatCardContent>
</MatCard>
</div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-1">
</div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-1">
</div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-2">
<MatCard Class="fv-mat-card">
<MatCardContent>
<MatCardMedia Square="true" ImageUrl="./images/batch_missing.png" @onclick="Missing"></MatCardMedia>
</MatCardContent>
</MatCard>
</div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-1">
</div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-1">
</div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-2" style="text-align:end">
@if (NbrPendingReports > 0) {
<div>
<MatChip Label="@NbrPendingReports.ToString()" Class="pending_batch"></MatChip>
</div>
}
<MatCard Class="fv-mat-card">
<MatCardContent>
<MatCardMedia Square="true" ImageUrl="./images/batch_pending.png" @onclick="Pending" Style="@getOpacity()"></MatCardMedia>
</MatCardContent>
</MatCard>
</div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-1">
</div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-1">
</div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-2" style="text-align:end">
@if (NbrPendingReports > 0)
{
<div>
<MatChip Label="@NbrPendingReports.ToString()" Class="pending_batch"></MatChip>
</div>
}
<MatCard Class="fv-mat-card">
<MatCardContent>
<MatCardMedia Square="true" ImageUrl="./images/batch_pending.png" @onclick="Pending" Style="@getOpacity()"></MatCardMedia>
</MatCardContent>
</MatCard>
</div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-1">
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div>
@code {
@code {
private int NbrPendingReports = 0;
private int NbrPendingReports = 0;
protected async override void OnInitialized() {
base.OnInitialized();
ReportDataProvider.Report = null;
ReportDataProvider.ReportRepositoryItem = null;
StateHasChanged();
NbrPendingReports = await ReportRepositoryService.GetNbrOfPendingReports();
StateHasChanged();
}
protected async override void OnInitialized()
{
base.OnInitialized();
ReportDataProvider.Report = null;
ReportDataProvider.ReportRepositoryItem = null;
StateHasChanged();
NbrPendingReports = await ReportRepositoryService.GetNbrOfPendingReports();
StateHasChanged();
}
private async void Found() {
Report report = new FoundReport();
UserDataProvider.MapReport(report, await UserDataProvider.Get());
ReportDataProvider.Report = report;
PageHistoryManager.AddPageToHistory(NavigationManager.Uri);
NavigationManager.NavigateTo("fundvelo/keydata/Found");
}
private async void Found()
{
Report report = new FoundReport();
UserDataProvider.MapReport(report, await UserDataProvider.Get());
ReportDataProvider.Report = report;
PageHistoryManager.AddPageToHistory(NavigationManager.Uri);
NavigationManager.NavigateTo("fundvelo/keydata/Found");
}
private async void Missing() {
Report report = new MissingReport();
UserDataProvider.MapReport(report, await UserDataProvider.Get());
ReportDataProvider.Report = report;
PageHistoryManager.AddPageToHistory(NavigationManager.Uri);
NavigationManager.NavigateTo("fundvelo/keydata/Missing");
}
private async void Missing()
{
Report report = new MissingReport();
UserDataProvider.MapReport(report, await UserDataProvider.Get());
ReportDataProvider.Report = report;
PageHistoryManager.AddPageToHistory(NavigationManager.Uri);
NavigationManager.NavigateTo("fundvelo/keydata/Missing");
}
private void Pending() {
if(NbrPendingReports > 0) {
NavigationManager.NavigateTo("fundvelo/pending_overview");
}
private void Pending()
{
if (NbrPendingReports > 0)
{
NavigationManager.NavigateTo("fundvelo/pending_overview");
} }
}
private string getOpacity() {
return NbrPendingReports > 0 ? "opacity:1.0" : "opacity:0.5";
}
private string getOpacity()
{
return NbrPendingReports > 0 ? "opacity:1.0" : "opacity:0.5";
} }
}

+ 73
- 61
Pages/Fundvelo/CaritasServiceFundVeloMissingKeyDataPage.razor 查看文件

</MatCard> </MatCard>
</div> </div>
</div> </div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-4-tablet mat-layout-grid-cell-span-4-desktop">
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-4-tablet mat-layout-grid-cell-span-8-desktop">
<div class="mat-layout-grid-inner"> <div class="mat-layout-grid-inner">
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-8-tablet mat-layout-grid-cell-span-12-desktop">
<MatSelectValue Class="required" FullWidth="true" Outlined="true" Label="@I18n["Color"]" @bind-Value="selectedColor" Items="@Colors" ValueSelector="@(i=>i)"
@onkeydown="InputCursorHandler.OnKeyDownHandlerAsync">
<ItemTemplate>
<div>
<span class="btn-sm" style="background-color:@context.Code;
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-4-tablet mat-layout-grid-cell-span-12-desktop">
<div class="mat-layout-grid-inner">
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-8-tablet mat-layout-grid-cell-span-6-desktop">
<div class="mat-layout-grid-inner">
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-8-tablet mat-layout-grid-cell-span-12-desktop">
<MatSelectValue Class="required" FullWidth="true" Outlined="true" Label="@I18n["Color"]" @bind-Value="selectedColor" Items="@Colors" ValueSelector="@(i=>i)"
@onkeydown="InputCursorHandler.OnKeyDownHandlerAsync">
<ItemTemplate>
<div>
<span class="btn-sm" style="background-color:@context.Code;
display:initial; display:initial;
border:1px solid black; border:1px solid black;
box-shadow:0.2em 0.2em 0.3em 0.025em #3f4244" /> box-shadow:0.2em 0.2em 0.3em 0.025em #3f4244" />
<span class="btn">@context?.Bezeichnung</span>
</div>
</ItemTemplate>
</MatSelectValue>
</div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-8-tablet mat-layout-grid-cell-span-12-desktop">
<div class="outlined">
<MatAutocompleteList TItem="Brand" FullWidth="true" Label="@I18n["Brand"]" Items="@Brands" OnTextChanged="setBrandValue" @bind-Value="SelectedBrand" CustomStringSelector="@(i => i?.Bezeichnung)" Required="true"
@onkeydown="InputCursorHandler.OnKeyDownHandlerAsync">
<ItemTemplate>
<div>
<span>@context?.Bezeichnung</span>
<span class="btn">@context?.Bezeichnung</span>
</div>
</ItemTemplate>
</MatSelectValue>
</div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-8-tablet mat-layout-grid-cell-span-12-desktop">
<div class="outlined">
<MatAutocompleteList TItem="Brand" FullWidth="true" Label="@I18n["Brand"]" Items="@Brands" OnTextChanged="setBrandValue" @bind-Value="SelectedBrand" CustomStringSelector="@(i => i?.Bezeichnung)" Required="true"
@onkeydown="InputCursorHandler.OnKeyDownHandlerAsync">
<ItemTemplate>
<div>
<span>@context?.Bezeichnung</span>
</div>
</ItemTemplate>
</MatAutocompleteList>
</div>
</div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-8-tablet mat-layout-grid-cell-span-12-desktop">
<MatSelectValue Class="required" FullWidth="true" Outlined="true" Label="@I18n["Type"]" @bind-Value="selectedBcType" Items="@BicycleTypes" ValueSelector="@(i=>i)"
@onkeydown="InputCursorHandler.OnKeyDownHandlerAsync">
<ItemTemplate>
<div>
<span>@context?.Bezeichnung</span>
</div>
</ItemTemplate>
</MatSelectValue>
</div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-8-tablet mat-layout-grid-cell-span-12-desktop">
<MatStringField Class="w-100 form-check-label" Label="@I18n["FrameNumber"]" Outlined="true" type="text" @bind-Value="frameNumber"
OnKeyDown="@InputCursorHandler.OnKeyDownHandlerAsync" maxlength="20"></MatStringField>
</div> </div>
</ItemTemplate>
</MatAutocompleteList>
</div>
</div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-8-tablet mat-layout-grid-cell-span-12-desktop">
<MatSelectValue Class="required" FullWidth="true" Outlined="true" Label="@I18n["Type"]" @bind-Value="selectedBcType" Items="@BicycleTypes" ValueSelector="@(i=>i)"
@onkeydown="InputCursorHandler.OnKeyDownHandlerAsync">
<ItemTemplate>
<div>
<span>@context?.Bezeichnung</span>
</div> </div>
</ItemTemplate>
</MatSelectValue>
</div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-8-tablet mat-layout-grid-cell-span-12-desktop">
<MatStringField Class="w-100 form-check-label" Label="@I18n["FrameNumber"]" Outlined="true" type="text" @bind-Value="frameNumber"
OnKeyDown="@InputCursorHandler.OnKeyDownHandlerAsync" maxlength="20"></MatStringField>
</div>
</div>
</div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-8-tablet mat-layout-grid-cell-span-4-desktop">
<div class="mat-layout-grid-inner">
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-4-tablet mat-layout-grid-cell-span-12-desktop">
<MatNumericUpDownField Class="w-100" Label="@I18n["Age"]" Outlined="true" @bind-Value="@age"
OnKeyDown="@InputCursorHandler.OnConstrainedFieldKeyDownHandlerAsync" pattern="^([0-9]*)$"></MatNumericUpDownField>
</div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-4-tablet mat-layout-grid-cell-span-12-desktop">
<MatTextField Class="w-100 form-check-label" Label="@I18n["Price"]" Format="0.00" Outlined="true" @bind-Value="@price"
OnKeyDown="@InputCursorHandler.OnConstrainedFieldKeyDownHandlerAsync" pattern="^([0-9]+,?[0-9]*|,[0-9]+)$"></MatTextField>
</div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-8-tablet mat-layout-grid-cell-span-12-desktop">
<MatSelectValue FullWidth="true" Outlined="true" Label="@I18n["SearchService"]" @bind-Value="selectedSearchService" Items="@SearchServices" ValueSelector="@(i=>i)"
@onkeydown="InputCursorHandler.OnKeyDownHandlerAsync">
<ItemTemplate>
<div>
<span>@context?.Bezeichnung</span>
</div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-8-tablet mat-layout-grid-cell-span-6-desktop">
<div class="mat-layout-grid-inner">
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-4-tablet mat-layout-grid-cell-span-12-desktop">
<MatNumericUpDownField Class="w-100" Label="@I18n["Age"]" Outlined="true" @bind-Value="@age"
OnKeyDown="@InputCursorHandler.OnConstrainedFieldKeyDownHandlerAsync" pattern="^([0-9]*)$"></MatNumericUpDownField>
</div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-4-tablet mat-layout-grid-cell-span-12-desktop">
<MatTextField Class="w-100 form-check-label" Label="@I18n["Price"]" Format="0.00" Outlined="true" @bind-Value="@price"
OnKeyDown="@InputCursorHandler.OnConstrainedFieldKeyDownHandlerAsync" pattern="^([0-9]+,?[0-9]*|,[0-9]+)$"></MatTextField>
</div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-8-tablet mat-layout-grid-cell-span-12-desktop">
<MatSelectValue FullWidth="true" Outlined="true" Label="@I18n["SearchService"]" @bind-Value="selectedSearchService" Items="@SearchServices" ValueSelector="@(i=>i)"
@onkeydown="InputCursorHandler.OnKeyDownHandlerAsync">
<ItemTemplate>
<div>
<span>@context?.Bezeichnung</span>
</div>
</ItemTemplate>
</MatSelectValue>
</div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-4-tablet mat-layout-grid-cell-span-12-desktop">
<MatStringField Class="w-100 form-check-label" Label="@I18n["SearchServiceNbr"]" Outlined="true" type="text" @bind-Value="searchServiceNbr"
OnKeyDown="@InputCursorHandler.OnKeyDownHandlerAsync" maxlength="20"></MatStringField>
</div>
@*<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-4-tablet mat-layout-grid-cell-span-12-desktop">
<MatStringField Class="w-100 form-check-label" Label="@I18n["Remark"]" Outlined="true" type="text" @bind-Value="remark"
OnKeyDown="@InputCursorHandler.OnKeyDownHandlerAsync" maxlength="1000" rows="2" TextArea="true"></MatStringField>
</div>*@
</div> </div>
</ItemTemplate>
</MatSelectValue>
</div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-4-tablet mat-layout-grid-cell-span-12-desktop">
<MatStringField Class="w-100 form-check-label" Label="@I18n["SearchServiceNbr"]" Outlined="true" type="text" @bind-Value="searchServiceNbr"
OnKeyDown="@InputCursorHandler.OnKeyDownHandlerAsync" maxlength="20"></MatStringField>
</div>
</div>
</div> </div>
<div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-4-tablet mat-layout-grid-cell-span-12-desktop"> <div class="mat-layout-grid-cell mat-layout-grid-cell-span-4-phone mat-layout-grid-cell-span-4-tablet mat-layout-grid-cell-span-12-desktop">
<MatStringField Class="w-100 form-check-label" Label="@I18n["Remark"]" Outlined="true" type="text" @bind-Value="remark" <MatStringField Class="w-100 form-check-label" Label="@I18n["Remark"]" Outlined="true" type="text" @bind-Value="remark"
OnKeyDown="@InputCursorHandler.OnKeyDownHandlerAsync" maxlength="1000"></MatStringField>
OnKeyDown="@InputCursorHandler.OnKeyDownHandlerAsync" maxlength="1000" rows="2" TextArea="true"></MatStringField>
</div> </div>
</div> </div>
</div> </div>

+ 1
- 1
Pages/InfoPage.razor 查看文件

<td class="text-center"> <td class="text-center">
<span class="text-left" style="max-width: 500px;display:inline-block;font-size:smaller"> <span class="text-left" style="max-width: 500px;display:inline-block;font-size:smaller">
<pre style="white-space:pre-line;font-family:'Ubuntu';margin-bottom:0">@I18n["App.Info"]</pre> <pre style="white-space:pre-line;font-family:'Ubuntu';margin-bottom:0">@I18n["App.Info"]</pre>
<p><a href="https://www.kulturlegi.ch">https://www.kulturlegi.ch</a></p>
<p><a href="https://www.kulturlegi.ch" target="_blank">https://www.kulturlegi.ch</a></p>
</span> </span>
</td> </td>
</tr> </tr>

+ 1
- 1
Program.cs 查看文件

config.ShowCloseButton = true; config.ShowCloseButton = true;
config.ShowProgressBar = true; config.ShowProgressBar = true;
config.MaximumOpacity = 100; config.MaximumOpacity = 100;
config.VisibleStateDuration = 5000;
config.VisibleStateDuration = 10000;
config.ShowTransitionDuration = 300; config.ShowTransitionDuration = 300;
config.HideTransitionDuration = 150; config.HideTransitionDuration = 150;
}); });

+ 3
- 0
Shared/ResourceFiles/Resources.de.resx 查看文件

<data name="Save" xml:space="preserve"> <data name="Save" xml:space="preserve">
<value>Speichern</value> <value>Speichern</value>
</data> </data>
<data name="SaveBevorSend" xml:space="preserve">
<value>Obige Angaben für weitere Meldungen speichern</value>
</data>
<data name="SearchService" xml:space="preserve"> <data name="SearchService" xml:space="preserve">
<value>Suchdienst</value> <value>Suchdienst</value>
</data> </data>

+ 3
- 0
Shared/ResourceFiles/Resources.fr.resx 查看文件

<data name="Save" xml:space="preserve"> <data name="Save" xml:space="preserve">
<value>Sauver</value> <value>Sauver</value>
</data> </data>
<data name="SaveBevorSend" xml:space="preserve">
<value>Enregistrer les données ci-dessus pour d'autres messages</value>
</data>
<data name="SearchService" xml:space="preserve"> <data name="SearchService" xml:space="preserve">
<value>Service de recherche</value> <value>Service de recherche</value>
</data> </data>

+ 3
- 0
Shared/ResourceFiles/Resources.it.resx 查看文件

<data name="Save" xml:space="preserve"> <data name="Save" xml:space="preserve">
<value>Salva</value> <value>Salva</value>
</data> </data>
<data name="SaveBevorSend" xml:space="preserve">
<value>Salva le informazioni di qui sopra per ulteriori messaggi</value>
</data>
<data name="SearchService" xml:space="preserve"> <data name="SearchService" xml:space="preserve">
<value>Servizio ritrovamento</value> <value>Servizio ritrovamento</value>
</data> </data>

+ 3
- 0
Shared/ResourceFiles/Resources.resx 查看文件

<data name="Save" xml:space="preserve"> <data name="Save" xml:space="preserve">
<value>Save</value> <value>Save</value>
</data> </data>
<data name="SaveBevorSend" xml:space="preserve">
<value>Save the above information for further messages</value>
</data>
<data name="SearchService" xml:space="preserve"> <data name="SearchService" xml:space="preserve">
<value>Search Service</value> <value>Search Service</value>
</data> </data>

正在加载...
取消
保存