| <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); |
| </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> |
| <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"> |
| @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"; | |||||
| } | } | ||||
| } |
| </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> |
| <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> |
| 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; | ||||
| }); | }); |
| <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> |
| <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> |
| <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> |
| <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> |