| @@ -1,7 +1,9 @@ | |||
| @page "/account" | |||
| @page "/fundvelo/account/{FromRoute}" | |||
| @using cwebplusApp.Shared.Models; | |||
| @using cwebplusApp.Shared.Services; | |||
| @inject NavigationManager NavigationManager | |||
| @inject UserDataProvider UserDataProvider | |||
| @inject IStringLocalizer<Resources> i18n | |||
| @@ -1,5 +1,7 @@ | |||
| @page "/fundvelo/conclusion_found" | |||
| @using cwebplusApp.Shared.Services; | |||
| @inject NavigationManager NavigationManager | |||
| @inject IStringLocalizer<Resources> i18n | |||
| @inject PageHistoryManager PageHistoryManager | |||
| @@ -7,6 +7,7 @@ | |||
| @using System.Globalization; | |||
| @using Microsoft.AspNetCore.Components.Forms; | |||
| @using System.IO; | |||
| @inject NavigationManager NavigationManager | |||
| @inject IStringLocalizer<Resources> i18n | |||
| @inject PageHistoryManager PageHistoryManager | |||
| @@ -14,7 +15,6 @@ | |||
| @inject Toaster Toaster | |||
| @inject IJSRuntime JS | |||
| <div class="row px-3 h-100"> | |||
| <div class="row no-gutters align-items-center justify-content-center w-100" style="padding-top:1em"> | |||
| @if ("Found".Equals(FromRoute)) { | |||
| @@ -71,78 +71,143 @@ | |||
| </MatCard> | |||
| </div> | |||
| </div> | |||
| <div class="mat-layout-grid-cell mat-layout-grid-cell-span-1 justify-content-center" style="text-align: center"> | |||
| <MatRipple class="inputfile-mat-ripple" Color="@MatRippleColor.Default" @onclick="InitializeMapPosition"> | |||
| <label> | |||
| <svg xmlns="http://www.w3.org/2000/svg" height="48px" width="48px" viewBox="0 0 24 24" fill="#000000"> | |||
| <path d="M0 0h24v24H0V0z" fill="none" /> | |||
| <path d="M13 3.06V1h-2v2.06C6.83 3.52 3.52 6.83 3.06 11H1v2h2.06c.46 4.17 3.77 7.48 7.94 7.94V23h2v-2.06c4.17-.46 7.48-3.77 7.94-7.94H23v-2h-2.06c-.46-4.17-3.77-7.48-7.94-7.94zM12 19c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z" /> | |||
| <circle cx="12" cy="12" opacity=".3" r="2" /> | |||
| <path d="M12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm0 6c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z" /> | |||
| </svg> | |||
| </label> | |||
| </MatRipple> | |||
| </div> | |||
| <div class="mat-layout-grid-cell mat-layout-grid-cell-span-3"> | |||
| <div class="w-100 fv-osm-tile map-wrapper"> | |||
| <Map @ref="mapRef" MapOptions="@mapOptions"></Map> | |||
| @if ("Found".Equals(FromRoute)) {<!-- Gefundenes Velo--> | |||
| <div class="mat-layout-grid-cell mat-layout-grid-cell-span-1 justify-content-center" style="text-align: center"> | |||
| <MatRipple class="inputfile-mat-ripple" Color="@MatRippleColor.Default" @onclick="InitializeMapPosition"> | |||
| <label> | |||
| <svg xmlns="http://www.w3.org/2000/svg" height="48px" width="48px" viewBox="0 0 24 24" fill="#000000"> | |||
| <path d="M0 0h24v24H0V0z" fill="none" /> | |||
| <path d="M13 3.06V1h-2v2.06C6.83 3.52 3.52 6.83 3.06 11H1v2h2.06c.46 4.17 3.77 7.48 7.94 7.94V23h2v-2.06c4.17-.46 7.48-3.77 7.94-7.94H23v-2h-2.06c-.46-4.17-3.77-7.48-7.94-7.94zM12 19c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z" /> | |||
| <circle cx="12" cy="12" opacity=".3" r="2" /> | |||
| <path d="M12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm0 6c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z" /> | |||
| </svg> | |||
| </label> | |||
| </MatRipple> | |||
| </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"> | |||
| <MatStringField Class="w-100 form-check-label" Label="@getAddressLbl()" Outlined="true" Required="true" type="text" @bind-Value="@bicycleGeoPosition.Address"></MatStringField> | |||
| <div class="mat-layout-grid-cell mat-layout-grid-cell-span-3"> | |||
| <div class="w-100 fv-osm-tile map-wrapper"> | |||
| <Map @ref="mapRef" MapOptions="@mapOptions"></Map> | |||
| </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="@getPlaceLbl()" Outlined="true" Required="true" type="text" @bind-Value="@bicycleGeoPosition.City"></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"> | |||
| <MatTextField Class="w-100 form-check-label italic" Label="@i18n["Latitude"]" Outlined="true" ReadOnly="true" @bind-Value="@bicycleGeoPosition.Latitude"></MatTextField> | |||
| </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 italic" Label="@i18n["Longitude"]" Outlined="true" ReadOnly="true" @bind-Value="@bicycleGeoPosition.Longitude"></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-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"> | |||
| <MatStringField Class="w-100 form-check-label" Label="@getAddressLbl()" Outlined="true" Required="true" type="text" @bind-Value="@bicycleGeoPosition.Address"></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="@getPlaceLbl()" Outlined="true" Required="true" type="text" @bind-Value="@bicycleGeoPosition.City"></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"> | |||
| <MatTextField Class="w-100 form-check-label italic" Label="@i18n["Latitude"]" Outlined="true" ReadOnly="true" @bind-Value="@bicycleGeoPosition.Latitude"></MatTextField> | |||
| </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 italic" Label="@i18n["Longitude"]" Outlined="true" ReadOnly="true" @bind-Value="@bicycleGeoPosition.Longitude"></MatTextField> | |||
| </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-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"> | |||
| <MatSelectValue FullWidth="true" Outlined="true" Label="@i18n["Color"]" @bind-Value="selectedColor" Items="@Colors" ValueSelector="@(i=>i)"> | |||
| <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-8-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-4-tablet mat-layout-grid-cell-span-4-desktop"> | |||
| <MatSelectValue FullWidth="true" Outlined="true" Label="@i18n["Color"]" @bind-Value="selectedColor" Items="@Colors" ValueSelector="@(i=>i)"> | |||
| <ItemTemplate> | |||
| <div> | |||
| <span class="btn-sm" style="background-color:@context.Code; | |||
| display:initial; | |||
| border:1px solid black; | |||
| box-shadow:0.2em 0.2em 0.3em 0.025em #3f4244" /> | |||
| <span class="btn">@context?.Bezeichnung</span> | |||
| </div> | |||
| </ItemTemplate> | |||
| </MatSelectValue> | |||
| <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-4-tablet mat-layout-grid-cell-span-4-desktop"> | |||
| <div class="outlined"> | |||
| <MatAutocompleteList TItem="Brand" FullWidth="true" Label="@i18n["Brand"]" Items="@Brands" OnTextChanged="setBrandValue" @bind-Value="SelectedBrand" CustomStringSelector="@(i => i?.Bezeichnung)"> | |||
| <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-4-tablet mat-layout-grid-cell-span-4-desktop"> | |||
| <MatSelectValue FullWidth="true" Outlined="true" Label="@i18n["Type"]" @bind-Value="selectedBcType" Items="@BicycleTypes" ValueSelector="@(i=>i)"> | |||
| <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-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-12-desktop"> | |||
| <MatStringField Class="w-100 form-check-label" Label="@i18n["FrameNumber"]" Outlined="true" type="text"></MatStringField> | |||
| </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-12-desktop"> | |||
| <MatStringField Class="w-100 form-check-label" Label="@i18n["Remark"]" Outlined="true" type="text"></MatStringField> | |||
| </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="outlined"> | |||
| <MatAutocompleteList TItem="Brand" FullWidth="true" Label="@i18n["Brand"]" Items="@Brands" OnTextChanged="setBrandValue" @bind-Value="SelectedBrand" CustomStringSelector="@(i => i?.Bezeichnung)"> | |||
| </div> | |||
| } else { <!-- Vermisstes Velo--> | |||
| <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-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 FullWidth="true" Outlined="true" Label="@i18n["Color"]" @bind-Value="selectedColor" Items="@Colors" ValueSelector="@(i=>i)"> | |||
| <ItemTemplate> | |||
| <div> | |||
| <span class="btn-sm" style="background-color:@context.Code; | |||
| display:initial; | |||
| border:1px solid black; | |||
| 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)"> | |||
| <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 FullWidth="true" Outlined="true" Label="@i18n["Type"]" @bind-Value="selectedBcType" Items="@BicycleTypes" ValueSelector="@(i=>i)"> | |||
| <ItemTemplate> | |||
| <div> | |||
| <span>@context?.Bezeichnung</span> | |||
| </div> | |||
| </ItemTemplate> | |||
| </MatAutocompleteList> | |||
| </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"></MatStringField> | |||
| </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"> | |||
| <MatSelectValue FullWidth="true" Outlined="true" Label="@i18n["Type"]" @bind-Value="selectedBcType" Items="@BicycleTypes" ValueSelector="@(i=>i)"> | |||
| <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-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"> | |||
| <MatStringField Class="w-100 form-check-label" Label="@i18n["Age"]" Outlined="true" type="text"></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["Price"]" Outlined="true" type="text"></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"></MatStringField> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| } | |||
| </div> | |||
| </div> | |||
| </div> | |||
| @@ -1,7 +1,11 @@ | |||
| @page "/fundvelo/lost_found" | |||
| @using cwebplusApp.Shared.Services; | |||
| @using cwebplusApp.Shared.Models; | |||
| @inject NavigationManager NavigationManager | |||
| @inject PageHistoryManager PageHistoryManager | |||
| @inject ReportDataProvider ReportDataProvider | |||
| <div class="row px-3 h-100"> | |||
| <div class="row no-gutters align-items-center w-100"> | |||
| @@ -10,7 +14,7 @@ | |||
| <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="demo-mat-card"> | |||
| <MatCard Class="fv-mat-card"> | |||
| <MatCardContent> | |||
| <MatCardMedia Square="true" ImageUrl="./images/batch_found.png" @onclick="Found"></MatCardMedia> | |||
| </MatCardContent> | |||
| @@ -21,7 +25,7 @@ | |||
| <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="demo-mat-card"> | |||
| <MatCard Class="fv-mat-card"> | |||
| <MatCardContent> | |||
| <MatCardMedia Square="true" ImageUrl="./images/batch_missing.png" @onclick="Missing"></MatCardMedia> | |||
| </MatCardContent> | |||
| @@ -39,14 +43,17 @@ | |||
| protected override void OnInitialized() { | |||
| PageHistoryManager.AddPageToHistory(NavigationManager.Uri); | |||
| ReportDataProvider.Report = null; | |||
| base.OnInitialized(); | |||
| } | |||
| private void Found() { | |||
| NavigationManager.NavigateTo("fundvelo/keydata/Found"); | |||
| ReportDataProvider.Report = new FoundReport(); | |||
| NavigationManager.NavigateTo("fundvelo/keydata/Found/"); | |||
| } | |||
| private void Missing() { | |||
| ReportDataProvider.Report = new MissingReport(); | |||
| NavigationManager.NavigateTo("fundvelo/keydata/Missing"); | |||
| } | |||
| } | |||
| @@ -1,5 +1,7 @@ | |||
| @page "/fundvelo/conclusion_missing" | |||
| @using cwebplusApp.Shared.Services; | |||
| @inject NavigationManager NavigationManager | |||
| @inject IStringLocalizer<Resources> i18n | |||
| @inject PageHistoryManager PageHistoryManager | |||
| @@ -1,5 +1,7 @@ | |||
| @page "/caritas_services" | |||
| @using cwebplusApp.Shared.Services; | |||
| @inject NavigationManager NavigationManager | |||
| @inject PageHistoryManager PageHistoryManager | |||
| @@ -8,21 +10,21 @@ | |||
| <div class="mat-layout-grid w-100"> | |||
| <div class="mat-layout-grid-inner"> | |||
| <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="demo-mat-card"> | |||
| <MatCard class="fv-mat-card"> | |||
| <MatCardContent> | |||
| <MatCardMedia Square="true" ImageUrl="./images/batch_fundvelo.png" @onclick="FundVelo_LostFound"></MatCardMedia> | |||
| </MatCardContent> | |||
| </MatCard> | |||
| </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"> | |||
| <MatCard class="demo-mat-card"> | |||
| <MatCard class="fv-mat-card"> | |||
| <MatCardContent> | |||
| <MatCardMedia Square="true" ImageUrl="./images/batch_kulturlegi.png"></MatCardMedia> | |||
| </MatCardContent> | |||
| </MatCard> | |||
| </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"> | |||
| <MatCard class="demo-mat-card"> | |||
| <MatCard class="fv-mat-card"> | |||
| <MatCardContent> | |||
| <MatCardMedia Square="true" ImageUrl="./images/batch_markt.png"></MatCardMedia> | |||
| </MatCardContent> | |||
| @@ -1,4 +1,5 @@ | |||
| @page "/" | |||
| @using cwebplusApp.Shared.Services; | |||
| @using System.Threading; | |||
| @using Microsoft.Extensions.Configuration; | |||
| @@ -10,7 +11,7 @@ | |||
| @inject MasterDataService MasterDataService; | |||
| @inject Toaster Toaster; | |||
| @inject IConfiguration Configuration; | |||
| @inject ILFBicycleRest iLFBicycleRest; | |||
| @inject ILFBicycleRest ILFBicycleRest; | |||
| <div class="row h-100 justify-content-center"> | |||
| @@ -51,7 +52,7 @@ | |||
| showProgressCircle = true; | |||
| StateHasChanged(); | |||
| try { | |||
| iLFBicycleRest.Initialize(Configuration); | |||
| ILFBicycleRest.Initialize(Configuration); | |||
| await MasterDataService.SynchronizeMasterdata(); | |||
| } catch (Exception) { | |||
| Toaster.ShowWarning(i18n.GetString("Warning.Masterdata.Title"), i18n.GetString("Warning.Masterdata.Msg")); | |||
| @@ -1,6 +1,7 @@ | |||
| @page "/info" | |||
| @using cwebplusApp.Shared.Services; | |||
| @inject NavigationManager NavigationManager; | |||
| @inject IStringLocalizer<Resources> i18n | |||
| @inject PageHistoryManager PageHistoryManager | |||
| @@ -21,6 +21,7 @@ namespace CaritasPWA { | |||
| builder.Services.AddSingleton<ILFBicycleRest, LFBicycleRest>(); | |||
| builder.Services.AddSingleton<AppState>(); | |||
| builder.Services.AddSingleton<PageHistoryManager>(); | |||
| builder.Services.AddSingleton<ReportDataProvider>(); | |||
| builder.Services.AddScoped<Toaster>(); | |||
| builder.Services.AddScoped<UserDataProvider>(); | |||
| builder.Services.AddScoped<MasterDataService>(); | |||
| @@ -26,7 +26,7 @@ | |||
| }, | |||
| "nativeDebugging": false, | |||
| "applicationUrl": "https://localhost:5001;http://localhost:5000", | |||
| "jsWebView2Debugging": true, | |||
| "jsWebView2Debugging": false, | |||
| "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}" | |||
| } | |||
| } | |||
| @@ -0,0 +1,64 @@ | |||
| namespace cwebplusApp.Shared.Models { | |||
| public class FoundReport : Report { | |||
| public string Anrede { get; set; } // required | |||
| public string Vorname { get; set; } // required | |||
| public string Nachname { get; set; } // required | |||
| public bool AbholadresseIstKontakt { get; set; } // required | |||
| public int TypId { get; set; } // required | |||
| public int MarkeId { get; set; } // required | |||
| public int FarbeId { get; set; } // required | |||
| public string Bemerkung { get; set; } | |||
| public string Mobil { get; set; } | |||
| public string NeueMarke { get; set; } | |||
| public string Rahmennummer { get; set; } | |||
| public string Telefon { get; set; } | |||
| public string Foto { get; set; } | |||
| public GeographicInfo GeographicInfo { get; set; } // required | |||
| public string AbholAnrede { get; set; } // required when AbholadresseIstKontakt = false | |||
| public string AbholVorname { get; set; } // required when AbholadresseIstKontakt = false | |||
| public string AbholNachname { get; set; } // required when AbholadresseIstKontakt = false | |||
| public string AbholStrasse { get; set; } // required when AbholadresseIstKontakt = false | |||
| public string AbholPLZ { get; set; } // required when AbholadresseIstKontakt = false | |||
| public string AbholOrt { get; set; } // required when AbholadresseIstKontakt = false | |||
| public string AbholMail { get; set; } | |||
| public string AbholMobil { get; set; } | |||
| public string AbholTelefon { get; set; } | |||
| public FoundReport() : this("", "", "", true, -1, -1, -1, null) { | |||
| } | |||
| public FoundReport(string anrede, string vorname, string nachname, bool abholadresseIstKontakt, int typId, int markeId, int farbeId, GeographicInfo geographicInfo) { | |||
| this.Anrede = anrede; | |||
| this.Vorname = vorname; | |||
| this.Nachname = nachname; | |||
| this.AbholadresseIstKontakt = abholadresseIstKontakt; | |||
| this.TypId = typId; | |||
| this.MarkeId = markeId; | |||
| this.FarbeId = farbeId; | |||
| this.GeographicInfo = geographicInfo; | |||
| } | |||
| } | |||
| public class GeographicInfo { | |||
| public string Postcode { get; set; } | |||
| public string Town { get; set; } | |||
| public string Address { get; set; } | |||
| public double Latitude { get; set; } | |||
| public double Longitude { get; set; } | |||
| public GeographicInfo() : this("", "", "", 0.0, 0.0) { | |||
| } | |||
| public GeographicInfo(string town, string postcode, string address, double latitude, double longitude) { | |||
| this.Town = town; | |||
| this.Postcode = postcode; | |||
| this.Address = address; | |||
| this.Latitude = latitude; | |||
| this.Longitude = longitude; | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,44 @@ | |||
| namespace cwebplusApp.Shared.Models { | |||
| public class MissingReport : Report { | |||
| public string Anrede { get; set; } // required | |||
| public string Vorname { get; set; } // required | |||
| public string Nachname { get; set; } // required | |||
| public string Mail { get; set; } // required | |||
| public string PersonPLZ { get; set; } // required | |||
| public string PersonOrt { get; set; } // required | |||
| public string PersonStrasse { get; set; } // required | |||
| public int TypId { get; set; } // required | |||
| public int MarkeId { get; set; } // required | |||
| public int FarbeId { get; set; } // required | |||
| public int Alter { get; set; } | |||
| public double Preis { get; set; } | |||
| public string Foto { get; set; } | |||
| public string RahmenNummer { get; set; } | |||
| public string NeueMarke { get; set; } | |||
| public string Telefon { get; set; } | |||
| public string Mobil { get; set; } | |||
| public string Zusatz { get; set; } | |||
| public string Postfach { get; set; } | |||
| public string Bemerkung { get; set; } | |||
| public int SuchDienstId { get; set; } | |||
| public string SuchDienstNr { get; set; } | |||
| public MissingReport() : this("", "", "", "", "", "", "", -1, -1, -1) { | |||
| } | |||
| public MissingReport(string anrede, string vorname, string nachname, string mail, string personPLZ, | |||
| string personOrt, string personStrasse, int typId, int markeId, int farbeId) { | |||
| this.Anrede = anrede; | |||
| this.Vorname = vorname; | |||
| this.Nachname = nachname; | |||
| this.Mail = mail; | |||
| this.PersonPLZ = personPLZ; | |||
| this.PersonOrt = personOrt; | |||
| this.PersonStrasse = personStrasse; | |||
| this.TypId = typId; | |||
| this.MarkeId = markeId; | |||
| this.FarbeId = farbeId; | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,10 @@ | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.Linq; | |||
| using System.Threading.Tasks; | |||
| namespace cwebplusApp.Shared.Models { | |||
| public abstract class Report { | |||
| } | |||
| } | |||
| @@ -126,6 +126,9 @@ | |||
| <data name="Address" xml:space="preserve"> | |||
| <value>Adresse</value> | |||
| </data> | |||
| <data name="Age" xml:space="preserve"> | |||
| <value>Alter</value> | |||
| </data> | |||
| <data name="Bike.Child_Bycicle" xml:space="preserve"> | |||
| <value>Kindervelo</value> | |||
| </data> | |||
| @@ -291,6 +294,9 @@ | |||
| <data name="FoundBike" xml:space="preserve"> | |||
| <value>Gefundenes Velo</value> | |||
| </data> | |||
| <data name="FrameNumber" xml:space="preserve"> | |||
| <value>Rahmennummer</value> | |||
| </data> | |||
| <data name="fundvelo/account/Found" xml:space="preserve"> | |||
| <value>Fundvelo > Gefunden > Finderdaten</value> | |||
| </data> | |||
| @@ -357,6 +363,12 @@ | |||
| <data name="PlaceOfLoss" xml:space="preserve"> | |||
| <value>Verlustort</value> | |||
| </data> | |||
| <data name="Price" xml:space="preserve"> | |||
| <value>Preis</value> | |||
| </data> | |||
| <data name="Remark" xml:space="preserve"> | |||
| <value>Bemerkung</value> | |||
| </data> | |||
| <data name="Salutation" xml:space="preserve"> | |||
| <value>Anrede</value> | |||
| </data> | |||
| @@ -379,7 +391,7 @@ | |||
| <value>Die Stammdaten konnten nicht abgerufen werden. Es werden stattdessen die Standardwerte verwendet!</value> | |||
| </data> | |||
| <data name="Warning.Masterdata.Title" xml:space="preserve"> | |||
| <value>Die Stammdaten konnten nicht abgerufen werden!</value> | |||
| <value>Stammdaten nicht verfügbar!</value> | |||
| </data> | |||
| <data name="Warning.Nominatim.Msg" xml:space="preserve"> | |||
| <value>Die Adresse konnte beim Aufrufen des Nominatim-Dienstes nicht aufgelöst werden. Bitte geben Sie die Straße und Postleitzahl/Ort manuell ein.</value> | |||
| @@ -126,6 +126,9 @@ | |||
| <data name="Address" xml:space="preserve"> | |||
| <value>Adresse</value> | |||
| </data> | |||
| <data name="Age" xml:space="preserve"> | |||
| <value>Âge</value> | |||
| </data> | |||
| <data name="Bike.Child_Bycicle" xml:space="preserve"> | |||
| <value>Vélo pour enfants</value> | |||
| </data> | |||
| @@ -291,6 +294,9 @@ | |||
| <data name="FoundBike" xml:space="preserve"> | |||
| <value>Velo trouvè</value> | |||
| </data> | |||
| <data name="FrameNumber" xml:space="preserve"> | |||
| <value>Numéro de cadre</value> | |||
| </data> | |||
| <data name="fundvelo/account/Found" xml:space="preserve"> | |||
| <value>Velo >Trouvé > Data trouver</value> | |||
| </data> | |||
| @@ -357,6 +363,12 @@ | |||
| <data name="PlaceOfLoss" xml:space="preserve"> | |||
| <value>Lieu de la perte</value> | |||
| </data> | |||
| <data name="Price" xml:space="preserve"> | |||
| <value>Prix</value> | |||
| </data> | |||
| <data name="Remark" xml:space="preserve"> | |||
| <value>Comment</value> | |||
| </data> | |||
| <data name="Salutation" xml:space="preserve"> | |||
| <value>Salutation</value> | |||
| </data> | |||
| @@ -379,7 +391,7 @@ | |||
| <value>Les données de base n'ont pas pu être récupérées. Les valeurs par défaut sont utilisées à la place !</value> | |||
| </data> | |||
| <data name="Warning.Masterdata.Title" xml:space="preserve"> | |||
| <value>Impossible de récupérer les données de base !</value> | |||
| <value>Les données de base ne sont pas disponibles!</value> | |||
| </data> | |||
| <data name="Warning.Nominatim.Msg" xml:space="preserve"> | |||
| <value>L'adresse n'a pas pu être résolue en invoquant le service Nominatim. Veuillez saisir l'adresse en indiquant la rue et le code postal/ville.</value> | |||
| @@ -126,6 +126,9 @@ | |||
| <data name="Address" xml:space="preserve"> | |||
| <value>Indirizzo</value> | |||
| </data> | |||
| <data name="Age" xml:space="preserve"> | |||
| <value>Età</value> | |||
| </data> | |||
| <data name="Bike.Child_Bycicle" xml:space="preserve"> | |||
| <value>Bicicletta per bambino</value> | |||
| </data> | |||
| @@ -291,6 +294,9 @@ | |||
| <data name="FoundBike" xml:space="preserve"> | |||
| <value>Bicicletta trovata</value> | |||
| </data> | |||
| <data name="FrameNumber" xml:space="preserve"> | |||
| <value>Nummero telaio</value> | |||
| </data> | |||
| <data name="fundvelo/account/Found" xml:space="preserve"> | |||
| <value>Bicicletta > Trovata > Dati trovatore</value> | |||
| </data> | |||
| @@ -357,6 +363,12 @@ | |||
| <data name="PlaceOfLoss" xml:space="preserve"> | |||
| <value>Luogo della perdita</value> | |||
| </data> | |||
| <data name="Price" xml:space="preserve"> | |||
| <value>Prezzo</value> | |||
| </data> | |||
| <data name="Remark" xml:space="preserve"> | |||
| <value>Commento</value> | |||
| </data> | |||
| <data name="Salutation" xml:space="preserve"> | |||
| <value>Saluto</value> | |||
| </data> | |||
| @@ -379,7 +391,7 @@ | |||
| <value>Non è stato possibile recuperare i dati anagrafici. Vengono invece utilizzati i valori di default!</value> | |||
| </data> | |||
| <data name="Warning.Masterdata.Title" xml:space="preserve"> | |||
| <value>Impossibile recuperare i dati anagrafici!</value> | |||
| <value>Dati anagrafici non disponibili!</value> | |||
| </data> | |||
| <data name="Warning.Nominatim.Msg" xml:space="preserve"> | |||
| <value>L'indirizzo non può essere risolto invocando il servizio Nominatim. Si prega di digitare la via e CAP/città.</value> | |||
| @@ -126,6 +126,9 @@ | |||
| <data name="Address" xml:space="preserve"> | |||
| <value>Address</value> | |||
| </data> | |||
| <data name="Age" xml:space="preserve"> | |||
| <value>Age</value> | |||
| </data> | |||
| <data name="Bike.Child_Bycicle" xml:space="preserve"> | |||
| <value>Children Bycicle</value> | |||
| </data> | |||
| @@ -291,6 +294,9 @@ | |||
| <data name="FoundBike" xml:space="preserve"> | |||
| <value>Found Bike</value> | |||
| </data> | |||
| <data name="FrameNumber" xml:space="preserve"> | |||
| <value>Frame Number</value> | |||
| </data> | |||
| <data name="fundvelo/account/Found" xml:space="preserve"> | |||
| <value>Bicycle > Found > Founder data</value> | |||
| </data> | |||
| @@ -357,6 +363,12 @@ | |||
| <data name="PlaceOfLoss" xml:space="preserve"> | |||
| <value>Place Of Loss</value> | |||
| </data> | |||
| <data name="Price" xml:space="preserve"> | |||
| <value>Price</value> | |||
| </data> | |||
| <data name="Remark" xml:space="preserve"> | |||
| <value>Remark</value> | |||
| </data> | |||
| <data name="Salutation" xml:space="preserve"> | |||
| <value>Salutation</value> | |||
| </data> | |||
| @@ -379,7 +391,7 @@ | |||
| <value>The master data could not be retrieved. The default values are used instead!</value> | |||
| </data> | |||
| <data name="Warning.Masterdata.Title" xml:space="preserve"> | |||
| <value>Could not retreive master data!</value> | |||
| <value>Master data not available!</value> | |||
| </data> | |||
| <data name="Warning.Nominatim.Msg" xml:space="preserve"> | |||
| <value>The address could not be resolved invoking Nominatim service. Please type in the address street and zip/town.</value> | |||
| @@ -22,8 +22,6 @@ namespace cwebplusApp.Shared.Services { | |||
| public void Initialize(IConfiguration configuration) { | |||
| this.Configuration = configuration; | |||
| string hostBaseUrl = Configuration.GetValue<string>("host_base_url"); | |||
| Console.WriteLine("host_base_url: " + hostBaseUrl); | |||
| if (!String.IsNullOrEmpty(hostBaseUrl)) { | |||
| this.httpClient = new HttpClient { BaseAddress = new Uri(hostBaseUrl) }; | |||
| } | |||
| @@ -0,0 +1,28 @@ | |||
| using cwebplusApp.Shared.Models; | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.Linq; | |||
| using System.Threading.Tasks; | |||
| namespace cwebplusApp.Shared.Services { | |||
| public class ReportDataProvider { | |||
| public Report Report { get; set; } | |||
| public FoundReport GetFoundReport() { | |||
| if (Report is FoundReport) { | |||
| return (FoundReport)Report; | |||
| } | |||
| return null; | |||
| } | |||
| public MissingReport GetLostReport() { | |||
| if (Report is MissingReport) { | |||
| return (MissingReport)Report; | |||
| } | |||
| return null; | |||
| } | |||
| } | |||
| } | |||
| @@ -10,6 +10,7 @@ | |||
| <PropertyGroup> | |||
| <TargetFramework>net5.0</TargetFramework> | |||
| <ServiceWorkerAssetsManifest>service-worker-assets.js</ServiceWorkerAssetsManifest> | |||
| <Version>0.1.0</Version> | |||
| </PropertyGroup> | |||
| <ItemGroup> | |||
| @@ -2,5 +2,5 @@ | |||
| "host_base_url": "https://integrate.dynalias.net:9443/Fundvelo/", | |||
| "subresource_url_colors": "api/{0}/{1}/fundvelo/colors", | |||
| "subresource_url_brands": "api/{0}/{1}/fundvelo/brands", | |||
| "subresource_url_types=": "api/{0}/{1}/fundvelo/types" | |||
| "subresource_url_types": "api/{0}/{1}/fundvelo/types" | |||
| } | |||
| @@ -90,7 +90,7 @@ a { | |||
| } | |||
| .fv-mat-card { | |||
| border-radius: 20px; | |||
| border-radius: 10%; | |||
| } | |||
| .mat-icon-large { | |||
| @@ -204,7 +204,7 @@ div.outlined .mdc-text-field.mdc-text-field--fullwidth .mdc-floating-label.mdc-f | |||
| .fv-osm-tile { | |||
| border: 1px solid rgb(0 0 0 /.38); | |||
| border-radius: 20px; | |||
| border-radius: 10%; | |||
| } | |||
| #bicycleLocationMap { | |||