barhen-pfw
2 years ago
committed by
barhen
24 changed files with 562 additions and 0 deletions
@ -0,0 +1,37 @@ |
|||||
|
|
||||
|
Microsoft Visual Studio Solution File, Format Version 12.00 |
||||
|
# Visual Studio Version 17 |
||||
|
VisualStudioVersion = 17.5.33530.505 |
||||
|
MinimumVisualStudioVersion = 10.0.40219.1 |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Biskilog Accounting.Server", "Server\Biskilog Accounting.Server.csproj", "{003D3EA8-7344-4667-AE14-E749071197A0}" |
||||
|
EndProject |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Biskilog Accounting.Client", "Client\Biskilog Accounting.Client.csproj", "{D0EA7A4F-F071-45AE-8A3E-0B17BA7CD8A7}" |
||||
|
EndProject |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Biskilog Accounting.Shared", "Shared\Biskilog Accounting.Shared.csproj", "{48490CB4-D5CE-46FE-9A7A-FBC91980D262}" |
||||
|
EndProject |
||||
|
Global |
||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution |
||||
|
Debug|Any CPU = Debug|Any CPU |
||||
|
Release|Any CPU = Release|Any CPU |
||||
|
EndGlobalSection |
||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution |
||||
|
{003D3EA8-7344-4667-AE14-E749071197A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{003D3EA8-7344-4667-AE14-E749071197A0}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{003D3EA8-7344-4667-AE14-E749071197A0}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{003D3EA8-7344-4667-AE14-E749071197A0}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
{D0EA7A4F-F071-45AE-8A3E-0B17BA7CD8A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{D0EA7A4F-F071-45AE-8A3E-0B17BA7CD8A7}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{D0EA7A4F-F071-45AE-8A3E-0B17BA7CD8A7}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{D0EA7A4F-F071-45AE-8A3E-0B17BA7CD8A7}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
{48490CB4-D5CE-46FE-9A7A-FBC91980D262}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{48490CB4-D5CE-46FE-9A7A-FBC91980D262}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{48490CB4-D5CE-46FE-9A7A-FBC91980D262}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{48490CB4-D5CE-46FE-9A7A-FBC91980D262}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
EndGlobalSection |
||||
|
GlobalSection(SolutionProperties) = preSolution |
||||
|
HideSolutionNode = FALSE |
||||
|
EndGlobalSection |
||||
|
GlobalSection(ExtensibilityGlobals) = postSolution |
||||
|
SolutionGuid = {96064220-88F8-4A9A-93BE-18714368EC27} |
||||
|
EndGlobalSection |
||||
|
EndGlobal |
@ -0,0 +1,12 @@ |
|||||
|
<Router AppAssembly="@typeof(App).Assembly"> |
||||
|
<Found Context="routeData"> |
||||
|
<RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" /> |
||||
|
<FocusOnNavigate RouteData="@routeData" Selector="h1" /> |
||||
|
</Found> |
||||
|
<NotFound> |
||||
|
<PageTitle>Not found</PageTitle> |
||||
|
<LayoutView Layout="@typeof(MainLayout)"> |
||||
|
<p role="alert">Sorry, there's nothing at this address.</p> |
||||
|
</LayoutView> |
||||
|
</NotFound> |
||||
|
</Router> |
@ -0,0 +1,25 @@ |
|||||
|
<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly"> |
||||
|
|
||||
|
<PropertyGroup> |
||||
|
<TargetFramework>net7.0</TargetFramework> |
||||
|
<Nullable>enable</Nullable> |
||||
|
<ImplicitUsings>enable</ImplicitUsings> |
||||
|
<ServiceWorkerAssetsManifest>service-worker-assets.js</ServiceWorkerAssetsManifest> |
||||
|
<AssemblyName>$(AssemblyName.Replace(' ', '_'))</AssemblyName> |
||||
|
</PropertyGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="7.0.5" /> |
||||
|
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="7.0.5" PrivateAssets="all" /> |
||||
|
<PackageReference Include="Microsoft.Extensions.Http" Version="7.0.0" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<ProjectReference Include="..\Shared\Biskilog Accounting.Shared.csproj" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<ServiceWorker Include="wwwroot\service-worker.js" PublishedContent="wwwroot\service-worker.published.js" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
</Project> |
@ -0,0 +1,6 @@ |
|||||
|
@namespace Biskilog_Accounting |
||||
|
@inherits LayoutComponentBase |
||||
|
|
||||
|
<main style="background-color: #eee;height:100vh;"> |
||||
|
@Body |
||||
|
</main> |
@ -0,0 +1,22 @@ |
|||||
|
.gradient-custom-2 { |
||||
|
/* fallback for old browsers */ |
||||
|
background: #fccb90; |
||||
|
/* Chrome 10-25, Safari 5.1-6 */ |
||||
|
/* Chrome 10-25, Safari 5.1-6 */ |
||||
|
background: -webkit-linear-gradient(to right, rgb(20 158 132 / 76%), rgb(10 10 56/100%)); |
||||
|
/* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */ |
||||
|
background: linear-gradient(to right, rgb(20 158 132 / 76%), rgb(10 10 56/100%)); |
||||
|
} |
||||
|
|
||||
|
@media (min-width: 768px) { |
||||
|
.gradient-form { |
||||
|
height: 100vh !important; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@media (min-width: 769px) { |
||||
|
.gradient-custom-2 { |
||||
|
border-top-right-radius: .3rem; |
||||
|
border-bottom-right-radius: .3rem; |
||||
|
} |
||||
|
} |
@ -0,0 +1,5 @@ |
|||||
|
@inherits LayoutComponentBase |
||||
|
|
||||
|
<main> |
||||
|
@Body |
||||
|
</main> |
@ -0,0 +1,132 @@ |
|||||
|
@layout AuthLayout |
||||
|
@page "/" |
||||
|
<style> |
||||
|
.gradient-custom-2 { |
||||
|
/* fallback for old browsers */ |
||||
|
background: #fccb90; |
||||
|
/* Chrome 10-25, Safari 5.1-6 */ |
||||
|
background: -webkit-linear-gradient(to right, rgb(20 158 132 / 76%), rgb(10 10 56/100%)); |
||||
|
/* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */ |
||||
|
background: linear-gradient(to right, rgb(20 158 132 / 76%), rgb(10 10 56/100%)); |
||||
|
} |
||||
|
|
||||
|
.login-buttons { |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
} |
||||
|
|
||||
|
.button-row { |
||||
|
display: flex; |
||||
|
flex-direction: row; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
margin-bottom: 10px; |
||||
|
} |
||||
|
|
||||
|
.facebook-button, .twitter-button, .google-button, .apple-button, .microsoft-button { |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
width: 40px; |
||||
|
height: 40px; |
||||
|
border-radius: 50%; |
||||
|
margin-right: 10px; |
||||
|
text-decoration: none; |
||||
|
color: #fff; |
||||
|
} |
||||
|
|
||||
|
.facebook-button { |
||||
|
background-color: #3B5998; |
||||
|
} |
||||
|
|
||||
|
.twitter-button { |
||||
|
background-color: #1DA1F2; |
||||
|
} |
||||
|
|
||||
|
.google-button { |
||||
|
background-color: #DB4437; |
||||
|
} |
||||
|
|
||||
|
.apple-button { |
||||
|
background-color: #000; |
||||
|
} |
||||
|
|
||||
|
.microsoft-button { |
||||
|
background-color: #00A4EF; |
||||
|
} |
||||
|
|
||||
|
</style> |
||||
|
<section class="h-100 gradient-form" style="background-color: #eee;"> |
||||
|
<div class="container py-5 h-100"> |
||||
|
<div class="row d-flex justify-content-center align-items-center h-100"> |
||||
|
<div class="col-xl-10"> |
||||
|
<div class="card rounded-3 text-black"> |
||||
|
<div class="row g-0"> |
||||
|
<div class="col-lg-6"> |
||||
|
<div class="card-body p-md-5 mx-md-4"> |
||||
|
|
||||
|
<div class="text-center"> |
||||
|
<img src="icon-512.png" |
||||
|
style="width: 185px;" alt="logo"> |
||||
|
<h4 class="mt-1 mb-5 pb-1">Biskilog Accounting</h4> |
||||
|
</div> |
||||
|
|
||||
|
<form> |
||||
|
<p>Please login to your account</p> |
||||
|
|
||||
|
<div class="form-outline mb-4"> |
||||
|
<input type="email" id="form2Example11" class="form-control" |
||||
|
placeholder="Phone number or email address" /> |
||||
|
<label class="form-label" for="form2Example11">Username</label> |
||||
|
</div> |
||||
|
|
||||
|
<div class="form-outline mb-4"> |
||||
|
<input type="password" id="form2Example22" class="form-control" /> |
||||
|
<label class="form-label" for="form2Example22">Password</label> |
||||
|
</div> |
||||
|
|
||||
|
<div class="text-center pt-1 mb-5 pb-1"> |
||||
|
<button class="btn btn-primary btn-block fa-lg gradient-custom-2 mb-3" type="button"> |
||||
|
Log |
||||
|
in |
||||
|
</button> |
||||
|
<a class="text-muted" href="#!">Forgot password?</a> |
||||
|
</div> |
||||
|
|
||||
|
<div class="d-flex align-items-center justify-content-center pb-4"> |
||||
|
<div class="login-buttons"> |
||||
|
<div class="button-row"> |
||||
|
<a href="#" class="facebook-button"><i class="fab fa-facebook-f"></i></a> |
||||
|
<a href="#" class="twitter-button"><i class="fab fa-twitter"></i></a> |
||||
|
<a href="#" class="google-button"><i class="fab fa-google"></i></a> |
||||
|
</div> |
||||
|
<div class="button-row"> |
||||
|
<a href="#" class="apple-button"><i class="fab fa-apple"></i></a> |
||||
|
<a href="#" class="microsoft-button"><i class="fab fa-windows"></i></a> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
</form> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col-lg-6 d-flex align-items-center gradient-custom-2"> |
||||
|
<div class="text-white px-3 py-4 p-md-5 mx-md-4"> |
||||
|
<h4 class="mb-4">We are more than just a company</h4> |
||||
|
<p class="small mb-0"> |
||||
|
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod |
||||
|
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud |
||||
|
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. |
||||
|
</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
@ -0,0 +1,3 @@ |
|||||
|
@page "/welcome" |
||||
|
|
||||
|
<h1>Hello, world!</h1> |
@ -0,0 +1,14 @@ |
|||||
|
using Biskilog_Accounting.Client; |
||||
|
using Microsoft.AspNetCore.Components.Web; |
||||
|
using Microsoft.AspNetCore.Components.WebAssembly.Hosting; |
||||
|
|
||||
|
var builder = WebAssemblyHostBuilder.CreateDefault(args); |
||||
|
builder.RootComponents.Add<App>("#app"); |
||||
|
builder.RootComponents.Add<HeadOutlet>("head::after"); |
||||
|
|
||||
|
builder.Services.AddHttpClient("Biskilog_Accounting.ServerAPI", client => client.BaseAddress = new Uri(builder.HostEnvironment.BaseAddress)); |
||||
|
|
||||
|
// Supply HttpClient instances that include access tokens when making requests to the server project
|
||||
|
builder.Services.AddScoped(sp => sp.GetRequiredService<IHttpClientFactory>().CreateClient("Biskilog_Accounting.ServerAPI")); |
||||
|
|
||||
|
await builder.Build().RunAsync(); |
@ -0,0 +1,38 @@ |
|||||
|
{ |
||||
|
"iisSettings": { |
||||
|
"iisExpress": { |
||||
|
"applicationUrl": "http://localhost:24369", |
||||
|
"sslPort": 44366 |
||||
|
} |
||||
|
}, |
||||
|
"profiles": { |
||||
|
"http": { |
||||
|
"commandName": "Project", |
||||
|
"dotnetRunMessages": true, |
||||
|
"launchBrowser": true, |
||||
|
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", |
||||
|
"applicationUrl": "http://localhost:5136", |
||||
|
"environmentVariables": { |
||||
|
"ASPNETCORE_ENVIRONMENT": "Development" |
||||
|
} |
||||
|
}, |
||||
|
"https": { |
||||
|
"commandName": "Project", |
||||
|
"dotnetRunMessages": true, |
||||
|
"launchBrowser": true, |
||||
|
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", |
||||
|
"applicationUrl": "https://localhost:7247;http://localhost:5136", |
||||
|
"environmentVariables": { |
||||
|
"ASPNETCORE_ENVIRONMENT": "Development" |
||||
|
} |
||||
|
}, |
||||
|
"IIS Express": { |
||||
|
"commandName": "IISExpress", |
||||
|
"launchBrowser": true, |
||||
|
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", |
||||
|
"environmentVariables": { |
||||
|
"ASPNETCORE_ENVIRONMENT": "Development" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,7 @@ |
|||||
|
@using System.Net.Http |
||||
|
@using System.Net.Http.Json |
||||
|
@using Microsoft.AspNetCore.Components.Routing |
||||
|
@using Microsoft.AspNetCore.Components.Web |
||||
|
@using Microsoft.AspNetCore.Components.WebAssembly.Http |
||||
|
@using Microsoft.JSInterop |
||||
|
@using Biskilog_Accounting.Client |
@ -0,0 +1,32 @@ |
|||||
|
h1:focus { |
||||
|
outline: none; |
||||
|
} |
||||
|
|
||||
|
#blazor-error-ui { |
||||
|
background: lightyellow; |
||||
|
bottom: 0; |
||||
|
box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2); |
||||
|
display: none; |
||||
|
left: 0; |
||||
|
padding: 0.6rem 1.25rem 0.7rem 1.25rem; |
||||
|
position: fixed; |
||||
|
width: 100%; |
||||
|
z-index: 1000; |
||||
|
} |
||||
|
|
||||
|
#blazor-error-ui .dismiss { |
||||
|
cursor: pointer; |
||||
|
position: absolute; |
||||
|
right: 0.75rem; |
||||
|
top: 0.5rem; |
||||
|
} |
||||
|
|
||||
|
.blazor-error-boundary { |
||||
|
background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121; |
||||
|
padding: 1rem 1rem 1rem 3.7rem; |
||||
|
color: white; |
||||
|
} |
||||
|
|
||||
|
.blazor-error-boundary::after { |
||||
|
content: "An error has occurred." |
||||
|
} |
After Width: | Height: | Size: 116 KiB |
@ -0,0 +1,37 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="en"> |
||||
|
|
||||
|
<head> |
||||
|
<meta charset="utf-8" /> |
||||
|
<title>Biskilog Accounting</title> |
||||
|
<base href="/" /> |
||||
|
<link href="css/app.css" rel="stylesheet" /> |
||||
|
<link href="manifest.json" rel="manifest" /> |
||||
|
<!-- Font Awesome --> |
||||
|
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" |
||||
|
rel="stylesheet" /> |
||||
|
<!-- Google Fonts --> |
||||
|
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap" |
||||
|
rel="stylesheet" /> |
||||
|
<!-- MDB --> |
||||
|
<link href="https://cdnjs.cloudflare.com/ajax/libs/mdb-ui-kit/6.2.0/mdb.min.css" |
||||
|
rel="stylesheet" /> |
||||
|
|
||||
|
<link href="Biskilog_Accounting.Client.styles.css" rel="stylesheet" /> |
||||
|
</head> |
||||
|
|
||||
|
<body> |
||||
|
<div id="app"> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
<div id="blazor-error-ui"> |
||||
|
An unhandled error has occurred. |
||||
|
<a href="" class="reload">Reload</a> |
||||
|
<a class="dismiss">🗙</a> |
||||
|
</div> |
||||
|
<script src="_framework/blazor.webassembly.js"></script> |
||||
|
<script>navigator.serviceWorker.register('service-worker.js');</script> |
||||
|
</body> |
||||
|
|
||||
|
</html> |
@ -0,0 +1,16 @@ |
|||||
|
{ |
||||
|
"name": "Biskilog Accounting", |
||||
|
"short_name": "Biskilog", |
||||
|
"start_url": "./", |
||||
|
"display": "standalone", |
||||
|
"background_color": "#ffffff", |
||||
|
"theme_color": "#03173d", |
||||
|
"prefer_related_applications": false, |
||||
|
"icons": [ |
||||
|
{ |
||||
|
"src": "icon-512.png", |
||||
|
"type": "image/png", |
||||
|
"sizes": "512x512" |
||||
|
} |
||||
|
] |
||||
|
} |
@ -0,0 +1,4 @@ |
|||||
|
// In development, always fetch from the network and do not enable offline support.
|
||||
|
// This is because caching would make development more difficult (changes would not
|
||||
|
// be reflected on the first load after each change).
|
||||
|
self.addEventListener('fetch', () => { }); |
@ -0,0 +1,47 @@ |
|||||
|
// Caution! Be sure you understand the caveats before publishing an application with
|
||||
|
// offline support. See https://aka.ms/blazor-offline-considerations
|
||||
|
|
||||
|
self.importScripts('./service-worker-assets.js'); |
||||
|
self.addEventListener('install', event => event.waitUntil(onInstall(event))); |
||||
|
self.addEventListener('activate', event => event.waitUntil(onActivate(event))); |
||||
|
self.addEventListener('fetch', event => event.respondWith(onFetch(event))); |
||||
|
|
||||
|
const cacheNamePrefix = 'offline-cache-'; |
||||
|
const cacheName = `${cacheNamePrefix}${self.assetsManifest.version}`; |
||||
|
const offlineAssetsInclude = [ /\.dll$/, /\.pdb$/, /\.wasm/, /\.html/, /\.js$/, /\.json$/, /\.css$/, /\.woff$/, /\.png$/, /\.jpe?g$/, /\.gif$/, /\.ico$/, /\.blat$/, /\.dat$/ ]; |
||||
|
const offlineAssetsExclude = [ /^service-worker\.js$/ ]; |
||||
|
|
||||
|
async function onInstall(event) { |
||||
|
console.info('Service worker: Install'); |
||||
|
|
||||
|
// Fetch and cache all matching items from the assets manifest
|
||||
|
const assetsRequests = self.assetsManifest.assets |
||||
|
.filter(asset => offlineAssetsInclude.some(pattern => pattern.test(asset.url))) |
||||
|
.filter(asset => !offlineAssetsExclude.some(pattern => pattern.test(asset.url))) |
||||
|
.map(asset => new Request(asset.url, { integrity: asset.hash, cache: 'no-cache' })); |
||||
|
await caches.open(cacheName).then(cache => cache.addAll(assetsRequests)); |
||||
|
} |
||||
|
|
||||
|
async function onActivate(event) { |
||||
|
console.info('Service worker: Activate'); |
||||
|
|
||||
|
// Delete unused caches
|
||||
|
const cacheKeys = await caches.keys(); |
||||
|
await Promise.all(cacheKeys |
||||
|
.filter(key => key.startsWith(cacheNamePrefix) && key !== cacheName) |
||||
|
.map(key => caches.delete(key))); |
||||
|
} |
||||
|
|
||||
|
async function onFetch(event) { |
||||
|
let cachedResponse = null; |
||||
|
if (event.request.method === 'GET') { |
||||
|
// For all navigation requests, try to serve index.html from cache
|
||||
|
const shouldServeIndexHtml = event.request.mode === 'navigate'; |
||||
|
|
||||
|
const request = shouldServeIndexHtml ? 'index.html' : event.request; |
||||
|
const cache = await caches.open(cacheName); |
||||
|
cachedResponse = await cache.match(request); |
||||
|
} |
||||
|
|
||||
|
return cachedResponse || fetch(event.request); |
||||
|
} |
@ -0,0 +1,20 @@ |
|||||
|
<Project Sdk="Microsoft.NET.Sdk.Web"> |
||||
|
|
||||
|
<PropertyGroup> |
||||
|
<TargetFramework>net7.0</TargetFramework> |
||||
|
<Nullable>enable</Nullable> |
||||
|
<ImplicitUsings>enable</ImplicitUsings> |
||||
|
<RootNamespace>Biskilog Accounting.Server</RootNamespace> |
||||
|
<AssemblyName>$(AssemblyName.Replace(' ', '_'))</AssemblyName> |
||||
|
</PropertyGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="7.0.5" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<ProjectReference Include="..\Client\Biskilog Accounting.Client.csproj" /> |
||||
|
<ProjectReference Include="..\Shared\Biskilog Accounting.Shared.csproj" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
</Project> |
@ -0,0 +1,31 @@ |
|||||
|
using Microsoft.AspNetCore.ResponseCompression; |
||||
|
|
||||
|
var builder = WebApplication.CreateBuilder(args); |
||||
|
|
||||
|
builder.Services.AddControllersWithViews(); |
||||
|
builder.Services.AddRazorPages(); |
||||
|
|
||||
|
var app = builder.Build(); |
||||
|
|
||||
|
// Configure the HTTP request pipeline.
|
||||
|
if (app.Environment.IsDevelopment()) |
||||
|
{ |
||||
|
app.UseWebAssemblyDebugging(); |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
|
||||
|
app.UseHsts(); |
||||
|
} |
||||
|
|
||||
|
app.UseHttpsRedirection(); |
||||
|
app.UseBlazorFrameworkFiles(); |
||||
|
app.UseStaticFiles(); |
||||
|
|
||||
|
app.UseRouting(); |
||||
|
|
||||
|
app.MapRazorPages(); |
||||
|
app.MapControllers(); |
||||
|
app.MapFallbackToFile("index.html"); |
||||
|
|
||||
|
app.Run(); |
@ -0,0 +1,44 @@ |
|||||
|
{ |
||||
|
"profiles": { |
||||
|
"http": { |
||||
|
"commandName": "Project", |
||||
|
"launchBrowser": true, |
||||
|
"environmentVariables": { |
||||
|
"ASPNETCORE_ENVIRONMENT": "Development" |
||||
|
}, |
||||
|
"dotnetRunMessages": true, |
||||
|
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", |
||||
|
"applicationUrl": "http://localhost:5136" |
||||
|
}, |
||||
|
"https": { |
||||
|
"commandName": "Project", |
||||
|
"launchBrowser": true, |
||||
|
"environmentVariables": { |
||||
|
"ASPNETCORE_ENVIRONMENT": "Development" |
||||
|
}, |
||||
|
"dotnetRunMessages": true, |
||||
|
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", |
||||
|
"applicationUrl": "https://localhost:7247;http://localhost:5136" |
||||
|
}, |
||||
|
"IIS Express": { |
||||
|
"commandName": "IISExpress", |
||||
|
"launchBrowser": true, |
||||
|
"environmentVariables": { |
||||
|
"ASPNETCORE_ENVIRONMENT": "Development" |
||||
|
}, |
||||
|
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}" |
||||
|
} |
||||
|
}, |
||||
|
"iisExpress": { |
||||
|
"applicationUrl": "http://localhost:24369", |
||||
|
"sslPort": 44366 |
||||
|
}, |
||||
|
"iisSettings": { |
||||
|
"windowsAuthentication": false, |
||||
|
"anonymousAuthentication": true, |
||||
|
"iisExpress": { |
||||
|
"applicationUrl": "http://localhost:54487/", |
||||
|
"sslPort": 44383 |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,8 @@ |
|||||
|
{ |
||||
|
"Logging": { |
||||
|
"LogLevel": { |
||||
|
"Default": "Information", |
||||
|
"Microsoft.AspNetCore": "Warning" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,9 @@ |
|||||
|
{ |
||||
|
"Logging": { |
||||
|
"LogLevel": { |
||||
|
"Default": "Information", |
||||
|
"Microsoft.AspNetCore": "Warning" |
||||
|
} |
||||
|
}, |
||||
|
"AllowedHosts": "*" |
||||
|
} |
@ -0,0 +1,12 @@ |
|||||
|
<Project Sdk="Microsoft.NET.Sdk"> |
||||
|
|
||||
|
<PropertyGroup> |
||||
|
<TargetFramework>net7.0</TargetFramework> |
||||
|
<Nullable>enable</Nullable> |
||||
|
<ImplicitUsings>enable</ImplicitUsings> |
||||
|
</PropertyGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<SupportedPlatform Include="browser" /> |
||||
|
</ItemGroup> |
||||
|
</Project> |
@ -0,0 +1 @@ |
|||||
|
/* Shared classes can be referenced by both the Client and Server */ |
Loading…
Reference in new issue