Compare commits
12 Commits
8e5b62c2ef
...
10.000
| Author | SHA1 | Date | |
|---|---|---|---|
| 6a9c90ef4b | |||
| 07672d3463 | |||
| 64d18102be | |||
| 626b31a3ce | |||
| f51bd2bb44 | |||
| 0d5961566b | |||
| 8cac6f0f2b | |||
| 3e162c84b3 | |||
| d218b291aa | |||
| d9b40a6dcc | |||
| db26149bc4 | |||
| 1cdd8631bb |
398
.gitignore
vendored
Normal file
398
.gitignore
vendored
Normal file
@ -0,0 +1,398 @@
|
||||
## Ignore Visual Studio temporary files, build results, and
|
||||
## files generated by popular Visual Studio add-ons.
|
||||
##
|
||||
## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
|
||||
|
||||
# User-specific files
|
||||
*.rsuser
|
||||
*.suo
|
||||
*.user
|
||||
*.userosscache
|
||||
*.sln.docstates
|
||||
|
||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||
*.userprefs
|
||||
|
||||
# Mono auto generated files
|
||||
mono_crash.*
|
||||
|
||||
# Build results
|
||||
[Dd]ebug/
|
||||
[Dd]ebugPublic/
|
||||
[Rr]elease/
|
||||
[Rr]eleases/
|
||||
x64/
|
||||
x86/
|
||||
[Ww][Ii][Nn]32/
|
||||
[Aa][Rr][Mm]/
|
||||
[Aa][Rr][Mm]64/
|
||||
bld/
|
||||
[Bb]in/
|
||||
[Oo]bj/
|
||||
[Ll]og/
|
||||
[Ll]ogs/
|
||||
|
||||
# Visual Studio 2015/2017 cache/options directory
|
||||
.vs/
|
||||
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||
#wwwroot/
|
||||
|
||||
# Visual Studio 2017 auto generated files
|
||||
Generated\ Files/
|
||||
|
||||
# MSTest test Results
|
||||
[Tt]est[Rr]esult*/
|
||||
[Bb]uild[Ll]og.*
|
||||
|
||||
# NUnit
|
||||
*.VisualState.xml
|
||||
TestResult.xml
|
||||
nunit-*.xml
|
||||
|
||||
# Build Results of an ATL Project
|
||||
[Dd]ebugPS/
|
||||
[Rr]eleasePS/
|
||||
dlldata.c
|
||||
|
||||
# Benchmark Results
|
||||
BenchmarkDotNet.Artifacts/
|
||||
|
||||
# .NET Core
|
||||
project.lock.json
|
||||
project.fragment.lock.json
|
||||
artifacts/
|
||||
|
||||
# ASP.NET Scaffolding
|
||||
ScaffoldingReadMe.txt
|
||||
|
||||
# StyleCop
|
||||
StyleCopReport.xml
|
||||
|
||||
# Files built by Visual Studio
|
||||
*_i.c
|
||||
*_p.c
|
||||
*_h.h
|
||||
*.ilk
|
||||
*.meta
|
||||
*.obj
|
||||
*.iobj
|
||||
*.pch
|
||||
*.pdb
|
||||
*.ipdb
|
||||
*.pgc
|
||||
*.pgd
|
||||
*.rsp
|
||||
*.sbr
|
||||
*.tlb
|
||||
*.tli
|
||||
*.tlh
|
||||
*.tmp
|
||||
*.tmp_proj
|
||||
*_wpftmp.csproj
|
||||
*.log
|
||||
*.tlog
|
||||
*.vspscc
|
||||
*.vssscc
|
||||
.builds
|
||||
*.pidb
|
||||
*.svclog
|
||||
*.scc
|
||||
|
||||
# Chutzpah Test files
|
||||
_Chutzpah*
|
||||
|
||||
# Visual C++ cache files
|
||||
ipch/
|
||||
*.aps
|
||||
*.ncb
|
||||
*.opendb
|
||||
*.opensdf
|
||||
*.sdf
|
||||
*.cachefile
|
||||
*.VC.db
|
||||
*.VC.VC.opendb
|
||||
|
||||
# Visual Studio profiler
|
||||
*.psess
|
||||
*.vsp
|
||||
*.vspx
|
||||
*.sap
|
||||
|
||||
# Visual Studio Trace Files
|
||||
*.e2e
|
||||
|
||||
# TFS 2012 Local Workspace
|
||||
$tf/
|
||||
|
||||
# Guidance Automation Toolkit
|
||||
*.gpState
|
||||
|
||||
# ReSharper is a .NET coding add-in
|
||||
_ReSharper*/
|
||||
*.[Rr]e[Ss]harper
|
||||
*.DotSettings.user
|
||||
|
||||
# TeamCity is a build add-in
|
||||
_TeamCity*
|
||||
|
||||
# DotCover is a Code Coverage Tool
|
||||
*.dotCover
|
||||
|
||||
# AxoCover is a Code Coverage Tool
|
||||
.axoCover/*
|
||||
!.axoCover/settings.json
|
||||
|
||||
# Coverlet is a free, cross platform Code Coverage Tool
|
||||
coverage*.json
|
||||
coverage*.xml
|
||||
coverage*.info
|
||||
|
||||
# Visual Studio code coverage results
|
||||
*.coverage
|
||||
*.coveragexml
|
||||
|
||||
# NCrunch
|
||||
_NCrunch_*
|
||||
.*crunch*.local.xml
|
||||
nCrunchTemp_*
|
||||
|
||||
# MightyMoose
|
||||
*.mm.*
|
||||
AutoTest.Net/
|
||||
|
||||
# Web workbench (sass)
|
||||
.sass-cache/
|
||||
|
||||
# Installshield output folder
|
||||
[Ee]xpress/
|
||||
|
||||
# DocProject is a documentation generator add-in
|
||||
DocProject/buildhelp/
|
||||
DocProject/Help/*.HxT
|
||||
DocProject/Help/*.HxC
|
||||
DocProject/Help/*.hhc
|
||||
DocProject/Help/*.hhk
|
||||
DocProject/Help/*.hhp
|
||||
DocProject/Help/Html2
|
||||
DocProject/Help/html
|
||||
|
||||
# Click-Once directory
|
||||
publish/
|
||||
|
||||
# Publish Web Output
|
||||
*.[Pp]ublish.xml
|
||||
*.azurePubxml
|
||||
# Note: Comment the next line if you want to checkin your web deploy settings,
|
||||
# but database connection strings (with potential passwords) will be unencrypted
|
||||
*.pubxml
|
||||
*.publishproj
|
||||
|
||||
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
||||
# checkin your Azure Web App publish settings, but sensitive information contained
|
||||
# in these scripts will be unencrypted
|
||||
PublishScripts/
|
||||
|
||||
# NuGet Packages
|
||||
*.nupkg
|
||||
# NuGet Symbol Packages
|
||||
*.snupkg
|
||||
# The packages folder can be ignored because of Package Restore
|
||||
**/[Pp]ackages/*
|
||||
# except build/, which is used as an MSBuild target.
|
||||
!**/[Pp]ackages/build/
|
||||
# Uncomment if necessary however generally it will be regenerated when needed
|
||||
#!**/[Pp]ackages/repositories.config
|
||||
# NuGet v3's project.json files produces more ignorable files
|
||||
*.nuget.props
|
||||
*.nuget.targets
|
||||
|
||||
# Microsoft Azure Build Output
|
||||
csx/
|
||||
*.build.csdef
|
||||
|
||||
# Microsoft Azure Emulator
|
||||
ecf/
|
||||
rcf/
|
||||
|
||||
# Windows Store app package directories and files
|
||||
AppPackages/
|
||||
BundleArtifacts/
|
||||
Package.StoreAssociation.xml
|
||||
_pkginfo.txt
|
||||
*.appx
|
||||
*.appxbundle
|
||||
*.appxupload
|
||||
|
||||
# Visual Studio cache files
|
||||
# files ending in .cache can be ignored
|
||||
*.[Cc]ache
|
||||
# but keep track of directories ending in .cache
|
||||
!?*.[Cc]ache/
|
||||
|
||||
# Others
|
||||
ClientBin/
|
||||
~$*
|
||||
*~
|
||||
*.dbmdl
|
||||
*.dbproj.schemaview
|
||||
*.jfm
|
||||
*.pfx
|
||||
*.publishsettings
|
||||
orleans.codegen.cs
|
||||
|
||||
# Including strong name files can present a security risk
|
||||
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
|
||||
#*.snk
|
||||
|
||||
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
||||
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
||||
#bower_components/
|
||||
|
||||
# RIA/Silverlight projects
|
||||
Generated_Code/
|
||||
|
||||
# Backup & report files from converting an old project file
|
||||
# to a newer Visual Studio version. Backup files are not needed,
|
||||
# because we have git ;-)
|
||||
_UpgradeReport_Files/
|
||||
Backup*/
|
||||
UpgradeLog*.XML
|
||||
UpgradeLog*.htm
|
||||
ServiceFabricBackup/
|
||||
*.rptproj.bak
|
||||
|
||||
# SQL Server files
|
||||
*.mdf
|
||||
*.ldf
|
||||
*.ndf
|
||||
|
||||
# Business Intelligence projects
|
||||
*.rdl.data
|
||||
*.bim.layout
|
||||
*.bim_*.settings
|
||||
*.rptproj.rsuser
|
||||
*- [Bb]ackup.rdl
|
||||
*- [Bb]ackup ([0-9]).rdl
|
||||
*- [Bb]ackup ([0-9][0-9]).rdl
|
||||
|
||||
# Microsoft Fakes
|
||||
FakesAssemblies/
|
||||
|
||||
# GhostDoc plugin setting file
|
||||
*.GhostDoc.xml
|
||||
|
||||
# Node.js Tools for Visual Studio
|
||||
.ntvs_analysis.dat
|
||||
node_modules/
|
||||
|
||||
# Visual Studio 6 build log
|
||||
*.plg
|
||||
|
||||
# Visual Studio 6 workspace options file
|
||||
*.opt
|
||||
|
||||
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
||||
*.vbw
|
||||
|
||||
# Visual Studio 6 auto-generated project file (contains which files were open etc.)
|
||||
*.vbp
|
||||
|
||||
# Visual Studio 6 workspace and project file (working project files containing files to include in project)
|
||||
*.dsw
|
||||
*.dsp
|
||||
|
||||
# Visual Studio 6 technical files
|
||||
*.ncb
|
||||
*.aps
|
||||
|
||||
# Visual Studio LightSwitch build output
|
||||
**/*.HTMLClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/ModelManifest.xml
|
||||
**/*.Server/GeneratedArtifacts
|
||||
**/*.Server/ModelManifest.xml
|
||||
_Pvt_Extensions
|
||||
|
||||
# Paket dependency manager
|
||||
.paket/paket.exe
|
||||
paket-files/
|
||||
|
||||
# FAKE - F# Make
|
||||
.fake/
|
||||
|
||||
# CodeRush personal settings
|
||||
.cr/personal
|
||||
|
||||
# Python Tools for Visual Studio (PTVS)
|
||||
__pycache__/
|
||||
*.pyc
|
||||
|
||||
# Cake - Uncomment if you are using it
|
||||
# tools/**
|
||||
# !tools/packages.config
|
||||
|
||||
# Tabs Studio
|
||||
*.tss
|
||||
|
||||
# Telerik's JustMock configuration file
|
||||
*.jmconfig
|
||||
|
||||
# BizTalk build output
|
||||
*.btp.cs
|
||||
*.btm.cs
|
||||
*.odx.cs
|
||||
*.xsd.cs
|
||||
|
||||
# OpenCover UI analysis results
|
||||
OpenCover/
|
||||
|
||||
# Azure Stream Analytics local run output
|
||||
ASALocalRun/
|
||||
|
||||
# MSBuild Binary and Structured Log
|
||||
*.binlog
|
||||
|
||||
# NVidia Nsight GPU debugger configuration file
|
||||
*.nvuser
|
||||
|
||||
# MFractors (Xamarin productivity tool) working folder
|
||||
.mfractor/
|
||||
|
||||
# Local History for Visual Studio
|
||||
.localhistory/
|
||||
|
||||
# Visual Studio History (VSHistory) files
|
||||
.vshistory/
|
||||
|
||||
# BeatPulse healthcheck temp database
|
||||
healthchecksdb
|
||||
|
||||
# Backup folder for Package Reference Convert tool in Visual Studio 2017
|
||||
MigrationBackup/
|
||||
|
||||
# Ionide (cross platform F# VS Code tools) working folder
|
||||
.ionide/
|
||||
|
||||
# Fody - auto-generated XML schema
|
||||
FodyWeavers.xsd
|
||||
|
||||
# VS Code files for those working on multiple tools
|
||||
.vscode/*
|
||||
!.vscode/settings.json
|
||||
!.vscode/tasks.json
|
||||
!.vscode/launch.json
|
||||
!.vscode/extensions.json
|
||||
*.code-workspace
|
||||
|
||||
# Local History for Visual Studio Code
|
||||
.history/
|
||||
|
||||
# Windows Installer files from build outputs
|
||||
*.cab
|
||||
*.msi
|
||||
*.msix
|
||||
*.msm
|
||||
*.msp
|
||||
|
||||
# JetBrains Rider
|
||||
*.sln.iml
|
||||
Binary file not shown.
Binary file not shown.
12
GottfriedsNackenWebseite/DataAccess/Data/IUserData.cs
Normal file
12
GottfriedsNackenWebseite/DataAccess/Data/IUserData.cs
Normal file
@ -0,0 +1,12 @@
|
||||
using DataAccess.Models;
|
||||
|
||||
namespace DataAccess.Data;
|
||||
|
||||
public interface IUserData
|
||||
{
|
||||
Task<IEnumerable<UserModel>> GetUsers();
|
||||
Task<UserModel?> GetUser(int id);
|
||||
Task InsertUser(UserModel user);
|
||||
Task UpdateUser(UserModel user);
|
||||
Task DeleteUser(int id);
|
||||
}
|
||||
43
GottfriedsNackenWebseite/DataAccess/Data/UserData.cs
Normal file
43
GottfriedsNackenWebseite/DataAccess/Data/UserData.cs
Normal file
@ -0,0 +1,43 @@
|
||||
using DataAccess.DbAccess;
|
||||
using DataAccess.Models;
|
||||
|
||||
namespace DataAccess.Data;
|
||||
|
||||
public class UserData : IUserData
|
||||
{
|
||||
private readonly ISqlDataAccess _db;
|
||||
|
||||
public UserData(ISqlDataAccess db)
|
||||
{
|
||||
_db = db;
|
||||
}
|
||||
|
||||
public Task<IEnumerable<UserModel>> GetUsers()
|
||||
{
|
||||
return _db.LoadData<UserModel, dynamic>("dbo.spUser_GetAll", new { });
|
||||
}
|
||||
|
||||
public async Task<UserModel?> GetUser(int id)
|
||||
{
|
||||
IEnumerable<UserModel> results = await _db.LoadData<UserModel, dynamic>(
|
||||
"dbo.spUser_Get",
|
||||
new { Id = id });
|
||||
|
||||
return results.FirstOrDefault();
|
||||
}
|
||||
|
||||
public Task InsertUser(UserModel user)
|
||||
{
|
||||
return _db.SaveData("dbo.spUser_Insert", new { user.FirstName, user.LastName });
|
||||
}
|
||||
|
||||
public Task UpdateUser(UserModel user)
|
||||
{
|
||||
return _db.SaveData("dbo.spUser_Update", user);
|
||||
}
|
||||
|
||||
public Task DeleteUser(int id)
|
||||
{
|
||||
return _db.SaveData("dbo.spUser_Delete", new { Id = id });
|
||||
}
|
||||
}
|
||||
15
GottfriedsNackenWebseite/DataAccess/DataAccess.csproj
Normal file
15
GottfriedsNackenWebseite/DataAccess/DataAccess.csproj
Normal file
@ -0,0 +1,15 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Dapper" Version="2.0.123" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="6.0.0" />
|
||||
<PackageReference Include="System.Data.SqlClient" Version="4.8.3" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@ -0,0 +1,33 @@
|
||||
namespace DataAccess.DbAccess;
|
||||
|
||||
/// <summary>
|
||||
/// Stellt Methoden zur Ausführung von CRUD-Operationen bereit.
|
||||
/// </summary>
|
||||
public interface ISqlDataAccess
|
||||
{
|
||||
/// <summary>
|
||||
/// Liest Daten aus der Datenbank (Read Operationen).
|
||||
/// </summary>
|
||||
/// <typeparam name="TData">Typ der Objekte die zurückgegeben werden.</typeparam>
|
||||
/// <typeparam name="TParam">Typ des Objekts das die Parameter für die SQL-Query enthält.</typeparam>
|
||||
/// <param name="storedProcedureName">Name der StoredProcedure die ausgeführt werden soll.</param>
|
||||
/// <param name="parameters">Das Objekt das die Parameter enthält.</param>
|
||||
/// <param name="connectionId">Der Name des ConnectionStrings der für die Verbindung verwendet werden soll.</param>
|
||||
/// <returns>Die Ergebnisse der Anfrage.</returns>
|
||||
Task<IEnumerable<TData>> LoadData<TData, TParam>(
|
||||
string storedProcedureName,
|
||||
TParam parameters,
|
||||
string connectionId = "Default");
|
||||
|
||||
/// <summary>
|
||||
/// Führt eine SQL-Anfrage aus, die keinen Rückgabewert hat (Create, Update und Delete Operationen).
|
||||
/// </summary>
|
||||
/// <typeparam name="TParam">Typ des Objekts das die Parameter für die SQL-Query enthält.</typeparam>
|
||||
/// <param name="storedProcedureName">Name der StoredProcedure die ausgeführt werden soll.</param>
|
||||
/// <param name="parameters">Das Objekt das die Parameter enthält.</param>
|
||||
/// <param name="connectionId">Der Name des ConnectionStrings der für die Verbindung verwendet werden soll.</param>
|
||||
Task SaveData<TParam>(
|
||||
string storedProcedureName,
|
||||
TParam parameters,
|
||||
string connectionId = "Default");
|
||||
}
|
||||
@ -0,0 +1,38 @@
|
||||
using Dapper;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
|
||||
namespace DataAccess.DbAccess;
|
||||
|
||||
public class SqlDataAccess : ISqlDataAccess
|
||||
{
|
||||
private readonly IConfiguration _config;
|
||||
|
||||
public SqlDataAccess(IConfiguration config)
|
||||
{
|
||||
_config = config;
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<TData>> LoadData<TData, TParam>(
|
||||
string storedProcedureName,
|
||||
TParam parameters,
|
||||
string connectionId = "Default")
|
||||
{
|
||||
using IDbConnection connection = new SqlConnection(_config.GetConnectionString(connectionId));
|
||||
|
||||
return await connection.QueryAsync<TData>(storedProcedureName, parameters,
|
||||
commandType: CommandType.StoredProcedure);
|
||||
}
|
||||
|
||||
public async Task SaveData<TParam>(
|
||||
string storedProcedureName,
|
||||
TParam parameters,
|
||||
string connectionId = "Default")
|
||||
{
|
||||
using IDbConnection connection = new SqlConnection(_config.GetConnectionString(connectionId));
|
||||
|
||||
await connection.ExecuteAsync(storedProcedureName, parameters,
|
||||
commandType: CommandType.StoredProcedure);
|
||||
}
|
||||
}
|
||||
8
GottfriedsNackenWebseite/DataAccess/Models/UserModel.cs
Normal file
8
GottfriedsNackenWebseite/DataAccess/Models/UserModel.cs
Normal file
@ -0,0 +1,8 @@
|
||||
namespace DataAccess.Models;
|
||||
|
||||
public class UserModel
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string FirstName { get; set; } = string.Empty;
|
||||
public string LastName { get; set; } = string.Empty;
|
||||
}
|
||||
@ -0,0 +1,77 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<Name>GottfriedsNackenDB</Name>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectVersion>4.1</ProjectVersion>
|
||||
<ProjectGuid>{79f8ac31-e467-4f7c-ac3b-cfadc3290750}</ProjectGuid>
|
||||
<DSP>Microsoft.Data.Tools.Schema.Sql.Sql130DatabaseSchemaProvider</DSP>
|
||||
<OutputType>Database</OutputType>
|
||||
<RootPath>
|
||||
</RootPath>
|
||||
<RootNamespace>GottfriedsNackenDB</RootNamespace>
|
||||
<AssemblyName>GottfriedsNackenDB</AssemblyName>
|
||||
<ModelCollation>1033, CI</ModelCollation>
|
||||
<DefaultFileStructure>BySchemaAndSchemaType</DefaultFileStructure>
|
||||
<DeployToDatabase>True</DeployToDatabase>
|
||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||
<TargetLanguage>CS</TargetLanguage>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<SqlServerVerification>False</SqlServerVerification>
|
||||
<IncludeCompositeObjects>True</IncludeCompositeObjects>
|
||||
<TargetDatabaseSet>True</TargetDatabaseSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<BuildScriptName>$(MSBuildProjectName).sql</BuildScriptName>
|
||||
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<DefineDebug>false</DefineDebug>
|
||||
<DefineTrace>true</DefineTrace>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<BuildScriptName>$(MSBuildProjectName).sql</BuildScriptName>
|
||||
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<DefineDebug>true</DefineDebug>
|
||||
<DefineTrace>true</DefineTrace>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">11.0</VisualStudioVersion>
|
||||
<!-- Default to the v11.0 targets path if the targets file for the current VS version is not found -->
|
||||
<SSDTExists Condition="Exists('$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets')">True</SSDTExists>
|
||||
<VisualStudioVersion Condition="'$(SSDTExists)' == ''">11.0</VisualStudioVersion>
|
||||
</PropertyGroup>
|
||||
<Import Condition="'$(SQLDBExtensionsRefPath)' != ''" Project="$(SQLDBExtensionsRefPath)\Microsoft.Data.Tools.Schema.SqlTasks.targets" />
|
||||
<Import Condition="'$(SQLDBExtensionsRefPath)' == ''" Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets" />
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties" />
|
||||
<Folder Include="dbo" />
|
||||
<Folder Include="dbo\Tables" />
|
||||
<Folder Include="dbo\StoredProcedures" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Build Include="dbo\Tables\User.sql" />
|
||||
<Build Include="dbo\StoredProcedures\spUser_GetAll.sql" />
|
||||
<Build Include="dbo\StoredProcedures\spUser_Get.sql" />
|
||||
<Build Include="dbo\StoredProcedures\spUser_Delete.sql" />
|
||||
<Build Include="dbo\StoredProcedures\spUser_Insert.sql" />
|
||||
<Build Include="dbo\StoredProcedures\spUser_Update.sql" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="GottfriedsNackenDB.publish.xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PostDeploy Include="Script.PostDeployment.sql" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@ -0,0 +1,10 @@
|
||||
/* Wird nur ausgeführt, wenn es keine Einträge in [dbo].[User] */
|
||||
IF not exists (SELECT 1 FROM [dbo].[User])
|
||||
BEGIN
|
||||
INSERT INTO [dbo].[User] (FirstName, LastName)
|
||||
VALUES
|
||||
('Gottfried Wilhelm', 'Leibniz'),
|
||||
('Albert', 'Einstein'),
|
||||
('Curry', 'Wurst'),
|
||||
('Brat', 'Wurst')
|
||||
END
|
||||
@ -0,0 +1,8 @@
|
||||
CREATE PROCEDURE [dbo].[spUser_Delete]
|
||||
@Id int
|
||||
AS
|
||||
BEGIN
|
||||
DELETE
|
||||
FROM [dbo].[User]
|
||||
WHERE Id = @Id;
|
||||
END
|
||||
@ -0,0 +1,8 @@
|
||||
CREATE PROCEDURE [dbo].[spUser_Get]
|
||||
@Id int
|
||||
AS
|
||||
BEGIN
|
||||
SELECT Id, FirstName, LastName
|
||||
FROM [dbo].[User]
|
||||
WHERE Id = @Id;
|
||||
END
|
||||
@ -0,0 +1,6 @@
|
||||
CREATE PROCEDURE [dbo].[spUser_GetAll]
|
||||
AS
|
||||
BEGIN
|
||||
SELECT Id, FirstName, LastName
|
||||
FROM [dbo].[User];
|
||||
END
|
||||
@ -0,0 +1,8 @@
|
||||
CREATE PROCEDURE [dbo].[spUser_Insert]
|
||||
@FirstName nvarchar(50),
|
||||
@LastName nvarchar(50)
|
||||
AS
|
||||
BEGIN
|
||||
INSERT INTO [dbo].[User] (FirstName, LastName)
|
||||
VALUES (@FirstName, @LastName);
|
||||
END
|
||||
@ -0,0 +1,10 @@
|
||||
CREATE PROCEDURE [dbo].[spUser_Update]
|
||||
@Id int,
|
||||
@FirstName nvarchar(50),
|
||||
@LastName nvarchar(50)
|
||||
AS
|
||||
BEGIN
|
||||
UPDATE [dbo].[User]
|
||||
SET FirstName = @FirstName, LastName = @LastName
|
||||
WHERE Id = @Id;
|
||||
END
|
||||
@ -0,0 +1,6 @@
|
||||
CREATE TABLE [dbo].[User]
|
||||
(
|
||||
[Id] INT NOT NULL PRIMARY KEY IDENTITY,
|
||||
[FirstName] NVARCHAR(50) NOT NULL,
|
||||
[LastName] NVARCHAR(50) NOT NULL
|
||||
)
|
||||
@ -0,0 +1,9 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
@ -0,0 +1,32 @@
|
||||
using System.Numerics;
|
||||
|
||||
namespace GottfriedsNackenUtility;
|
||||
|
||||
/// <summary>
|
||||
/// Bietet nütliche mathematische Funktionen.
|
||||
/// </summary>
|
||||
public static class MathHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// Enumeriert die Zahlen der Fibonacci-Folge.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Der Datentyp ist <see cref="BigInteger"/>, da es ein paar Fibonacci-Zahlen gibt die nicht von <see cref="int"/> dargestellt werden können.
|
||||
/// </remarks>
|
||||
public static IEnumerable<BigInteger> Fibonacci()
|
||||
{
|
||||
BigInteger i = 0;
|
||||
BigInteger j = 1;
|
||||
|
||||
while (true)
|
||||
{
|
||||
BigInteger fib = i + j;
|
||||
|
||||
i = j;
|
||||
j = fib;
|
||||
|
||||
yield return fib;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,42 @@
|
||||
using System.Numerics;
|
||||
|
||||
namespace GottfriedsNackenUtility;
|
||||
|
||||
/// <summary>
|
||||
/// Hier sind suspiziöse Funktionen versteckt.
|
||||
/// </summary>
|
||||
public static class SusHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// Dies ist der ausgeklügelste fake-Fortschrittbalkensalgorithmus den die Welt je erblickt hat.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Dieser Task läuft in einer Endlosschleife und MUSS mit Hilfe des Abbruchtokens abgebrochen werden!
|
||||
/// </remarks>
|
||||
/// <param name="progressChangedCallback">Das callback das aufgerufen wird, wenn der Fortschritt sich geändert hat.
|
||||
/// Gibt einen Int zwischen 0 und 100 zurück oder -1, wenn der Fortschrittsbalken auf einen "indefinite" Zustand wechseln soll.</param>
|
||||
/// <param name="cancellationToken">Ein Abbruchtoken, das beim Warten auf den Abschluss der Aufgabe überwacht werden soll.</param>
|
||||
public static async Task UpdateDefinitelyNotFakeProgress(Action<int> progressChangedCallback, CancellationToken cancellationToken)
|
||||
{
|
||||
try
|
||||
{
|
||||
foreach (BigInteger fibonacci in MathHelper.Fibonacci())
|
||||
{
|
||||
await Task.Delay(250 + (int)(fibonacci % 420), cancellationToken);
|
||||
|
||||
if (cancellationToken.IsCancellationRequested)
|
||||
break;
|
||||
|
||||
if (fibonacci.IsEven && (int)(fibonacci % 42) == 0)
|
||||
{
|
||||
progressChangedCallback(-1);
|
||||
await Task.Delay(1337, cancellationToken);
|
||||
continue;
|
||||
}
|
||||
|
||||
progressChangedCallback((int)(fibonacci % 69));
|
||||
}
|
||||
}
|
||||
catch (TaskCanceledException) { }
|
||||
}
|
||||
}
|
||||
@ -3,7 +3,13 @@ Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.1.32210.238
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GottfriedsNackenWebseite", "GottfriedsNackenWebseite\GottfriedsNackenWebseite.csproj", "{464DD643-DAD9-4E16-BB24-36F789ED4C15}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GottfriedsNackenWebseite", "GottfriedsNackenWebseite\GottfriedsNackenWebseite.csproj", "{464DD643-DAD9-4E16-BB24-36F789ED4C15}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GottfriedsNackenUtility", "GottfriedsNackenUtility\GottfriedsNackenUtility.csproj", "{0122762F-9961-4D28-8AA9-0D6AE7630208}"
|
||||
EndProject
|
||||
Project("{00D1A9C2-B5F0-4AF3-8072-F6C62B433612}") = "GottfriedsNackenDB", "GottfriedsNackenDB\GottfriedsNackenDB.sqlproj", "{79F8AC31-E467-4F7C-AC3B-CFADC3290750}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataAccess", "DataAccess\DataAccess.csproj", "{023715EE-C9DB-417F-9B77-28BF48A30D41}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
@ -15,6 +21,20 @@ Global
|
||||
{464DD643-DAD9-4E16-BB24-36F789ED4C15}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{464DD643-DAD9-4E16-BB24-36F789ED4C15}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{464DD643-DAD9-4E16-BB24-36F789ED4C15}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{0122762F-9961-4D28-8AA9-0D6AE7630208}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{0122762F-9961-4D28-8AA9-0D6AE7630208}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{0122762F-9961-4D28-8AA9-0D6AE7630208}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{0122762F-9961-4D28-8AA9-0D6AE7630208}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{79F8AC31-E467-4F7C-AC3B-CFADC3290750}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{79F8AC31-E467-4F7C-AC3B-CFADC3290750}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{79F8AC31-E467-4F7C-AC3B-CFADC3290750}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
|
||||
{79F8AC31-E467-4F7C-AC3B-CFADC3290750}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{79F8AC31-E467-4F7C-AC3B-CFADC3290750}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{79F8AC31-E467-4F7C-AC3B-CFADC3290750}.Release|Any CPU.Deploy.0 = Release|Any CPU
|
||||
{023715EE-C9DB-417F-9B77-28BF48A30D41}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{023715EE-C9DB-417F-9B77-28BF48A30D41}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{023715EE-C9DB-417F-9B77-28BF48A30D41}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{023715EE-C9DB-417F-9B77-28BF48A30D41}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
||||
@ -0,0 +1,60 @@
|
||||
<MudContainer MaxWidth="MaxWidth.ExtraSmall">
|
||||
<MudCard Elevation="4">
|
||||
<MudCardHeader>
|
||||
<CardHeaderAvatar>
|
||||
<MudAvatar Image="images/leibniz_icon.jpg"></MudAvatar>
|
||||
</CardHeaderAvatar>
|
||||
<CardHeaderContent>
|
||||
<MudText>Gottfried Wilhelm Leibniz</MudText>
|
||||
</CardHeaderContent>
|
||||
<CardHeaderActions>
|
||||
<MudAvatar Rounded="true" Image="images/german.jpg"></MudAvatar>
|
||||
</CardHeaderActions>
|
||||
</MudCardHeader>
|
||||
<MudCardMedia Image="images/leibniz.jpg" Height="250">
|
||||
|
||||
</MudCardMedia>
|
||||
<MudCardContent>
|
||||
<MudSimpleTable Style="overflow-x: auto;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Intelligenzquotient</td>
|
||||
<td>149</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Wissenschaftliche Arbeiten</td>
|
||||
<td>23</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Alter</td>
|
||||
<td>70</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Google-Ergebnisse</td>
|
||||
<td>6.760.000</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Nackengröße</td>
|
||||
<td>69</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</MudSimpleTable>
|
||||
<MudText Class="mt-1">
|
||||
Gottfried Wilhelm Leibniz (* 21. Juni / 1. Juli 1646 in Leipzig; † 14. November 1716 in Hannover) war ein
|
||||
deutscher Philosoph, Mathematiker, Jurist, Historiker und politischer Berater der frühen Aufklärung. Er gilt
|
||||
als der universale Geist seiner Zeit und war einer der bedeutendsten Philosophen des ausgehenden 17. und
|
||||
beginnenden 18. Jahrhunderts sowie einer der wichtigsten Vordenker der Aufklärung.
|
||||
</MudText>
|
||||
</MudCardContent>
|
||||
<MudCardActions>
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Favorite" Color="Color.Default" />
|
||||
<MudText>1337</MudText>
|
||||
<MudIconButton Class="ml-2" Icon="@Icons.Material.Filled.Share" Color="Color.Default" />
|
||||
</MudCardActions>
|
||||
</MudCard>
|
||||
</MudContainer>
|
||||
|
||||
|
||||
@code {
|
||||
|
||||
}
|
||||
@ -0,0 +1,235 @@
|
||||
@using System.Diagnostics
|
||||
|
||||
<!-- Hidden Alerts -->
|
||||
<div hidden="@(_alert == AlertState.None)">
|
||||
<MudContainer MaxWidth="MaxWidth.Small">
|
||||
<MudGrid>
|
||||
<MudItem xs="1"></MudItem>
|
||||
<MudItem xs="8">
|
||||
@if (_alert == AlertState.Correct)
|
||||
{
|
||||
<MudAlert Severity="Severity.Success">Korrekt!</MudAlert>
|
||||
}
|
||||
else if (_alert == AlertState.Invalid)
|
||||
{
|
||||
<MudAlert Severity="Severity.Error">Eingabe ungültig!</MudAlert>
|
||||
}
|
||||
</MudItem>
|
||||
<MudItem xs="2">
|
||||
@if (_alert == AlertState.Correct)
|
||||
{
|
||||
<MudIconButton Icon="@Icons.Filled.Replay" Color="Color.Primary" aria-label="nochmal spielen" OnClick="@PlayAgain" />
|
||||
}
|
||||
</MudItem>
|
||||
<MudItem xs="1"></MudItem>
|
||||
</MudGrid>
|
||||
</MudContainer>
|
||||
</div>
|
||||
|
||||
<!-- Matrix mit Buchstabenfeldern -->
|
||||
<div class="d-flex justify-center mt-2 mb-2">
|
||||
<div>
|
||||
@foreach (CharData[] guess in _previousGuesses)
|
||||
{
|
||||
<div class="d-flex mb-2">
|
||||
@foreach (CharData cd in guess)
|
||||
{
|
||||
if (cd.State == CharState.Correct)
|
||||
{
|
||||
<MudPaper Style="border-color: green; border-width: 4px;" Class="mr-2" Width="60px" Height="60px" Outlined="true">
|
||||
<MudText Typo="Typo.h3" Align="Align.Center">@cd.Char</MudText>
|
||||
</MudPaper>
|
||||
}
|
||||
else if (cd.State == CharState.Misplaced)
|
||||
{
|
||||
<MudPaper Style="border-color: yellow; border-width: 4px;" Class="mr-2" Width="60px" Height="60px" Outlined="true">
|
||||
<MudText Typo="Typo.h3" Align="Align.Center">@cd.Char</MudText>
|
||||
</MudPaper>
|
||||
}
|
||||
else
|
||||
{
|
||||
<MudPaper Style="border-width: 4px;" Class="mr-2" Width="60px" Height="60px" Outlined="true">
|
||||
<MudText Typo="Typo.h3" Align="Align.Center">@cd.Char</MudText>
|
||||
</MudPaper>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@*
|
||||
<MudTextField T="string" FullWidth="true" Immediate="true" @bind-Value="Input" Label="Bla" Variant="Variant.Outlined" MaxLength="ColumnCount" Counter="ColumnCount" />
|
||||
<MudTextField T="string" FullWidth="true" Immediate="true" @bind-Value="Input" Label="Blub" Variant="Variant.Outlined" MaxLength="ColumnCount" Counter="ColumnCount" />
|
||||
*@
|
||||
<!-- Input dialogue feld -->
|
||||
<MudContainer MaxWidth="MaxWidth.Small">
|
||||
<MudGrid Spacing="2">
|
||||
<MudItem xs="1" />
|
||||
<MudItem xs="8">
|
||||
<MudTextField @ref="_textField" T="string" FullWidth="true" Immediate="true" @bind-Value="Input" Label="Dein Tipp:" Variant="Variant.Outlined" MaxLength="ColumnCount" Mask="@InputMask" Counter="ColumnCount" OnKeyDown="OnKeyDown" />
|
||||
@*<input Type="text" value="@Input"/>*@
|
||||
</MudItem>
|
||||
<MudItem xs="2">
|
||||
<MudButton style="height: 56px; margin-top: 6px;" Class="justify-center" Disabled="Input.Length != ColumnCount"
|
||||
Size="Size.Large" Variant="Variant.Outlined" EndIcon="@Icons.Material.Filled.Send" Color="Color.Primary" OnClick=@OnEnterGuessClick>OK</MudButton>
|
||||
</MudItem>
|
||||
<MudItem xs="1" />
|
||||
</MudGrid>
|
||||
</MudContainer>
|
||||
|
||||
@code {
|
||||
|
||||
private enum AlertState
|
||||
{
|
||||
None,
|
||||
Correct,
|
||||
Invalid
|
||||
}
|
||||
|
||||
public enum CharState
|
||||
{
|
||||
None,
|
||||
Correct,
|
||||
Misplaced,
|
||||
Wrong
|
||||
}
|
||||
|
||||
public struct CharData
|
||||
{
|
||||
public char Char;
|
||||
public CharState State;
|
||||
|
||||
public CharData(char c, CharState state)
|
||||
{
|
||||
Char = c;
|
||||
State = state;
|
||||
}
|
||||
}
|
||||
|
||||
private bool _found = false;
|
||||
|
||||
private AlertState _alert = AlertState.None;
|
||||
|
||||
private List<CharData[]> _previousGuesses = new();
|
||||
|
||||
private MudTextField<string> _textField = default!;
|
||||
|
||||
[Parameter]
|
||||
public string Input { get; set; } = String.Empty;
|
||||
|
||||
[Parameter]
|
||||
public int ColumnCount { get; set; }
|
||||
|
||||
public string? Secret { get; set; } = null;
|
||||
|
||||
[Parameter]
|
||||
public IMask InputMask { get; set; } = new RegexMask("^.*$");
|
||||
|
||||
/// <summary>
|
||||
/// Prüft ob die getätigte Eingabe eine mögliche Lösung ist.
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public Func<string, bool> CheckInput { get; set; } = _ => true;
|
||||
|
||||
/// <summary>
|
||||
/// Wird ausgelöst wenn eine Eingabe getätigt und validiert wurde.
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public EventCallback<CharData[]> InputValidated { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Wird ausgelöst wenn ein neues Secret generiert werden muss.
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public EventCallback GenerateSecret { get; set; }
|
||||
|
||||
public async Task OnKeyDown(KeyboardEventArgs e)
|
||||
{
|
||||
_alert = AlertState.None;
|
||||
|
||||
if (e.Code == "Enter" || e.Code == "NumpadEnter")
|
||||
{
|
||||
if(_found)
|
||||
{
|
||||
await PlayAgain();
|
||||
}
|
||||
else
|
||||
{
|
||||
await OnEnterGuessClick();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public async Task OnEnterGuessClick()
|
||||
{
|
||||
if (Input.Length != ColumnCount || _found) return;
|
||||
|
||||
if (!CheckInput(Input))
|
||||
{
|
||||
_alert = AlertState.Invalid;
|
||||
StateHasChanged();
|
||||
return;
|
||||
}
|
||||
|
||||
if (Secret == null)
|
||||
await GenerateSecret.InvokeAsync();
|
||||
|
||||
if(await TestInput(Input))
|
||||
{
|
||||
_found = true;
|
||||
_alert = AlertState.Correct;
|
||||
}
|
||||
|
||||
await _textField.Clear();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Prüft ob die Eingabe korrekt ist.
|
||||
/// </summary>
|
||||
private async Task<bool> TestInput(string input)
|
||||
{
|
||||
CharData[] validatedInput = new CharData[ColumnCount];
|
||||
|
||||
bool correct = true;
|
||||
|
||||
for (int i = 0; i < ColumnCount; i++)
|
||||
{
|
||||
char guessedChar = char.ToUpper(input[i]);
|
||||
|
||||
CharState state;
|
||||
|
||||
if (guessedChar == char.ToUpper(Secret![i]))
|
||||
{
|
||||
state = CharState.Correct;
|
||||
}
|
||||
else if (Secret.Contains(guessedChar, StringComparison.InvariantCultureIgnoreCase))
|
||||
{
|
||||
state = CharState.Misplaced;
|
||||
correct = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
state = CharState.Wrong;
|
||||
correct = false;
|
||||
}
|
||||
|
||||
validatedInput[i] = new CharData(guessedChar, state);
|
||||
}
|
||||
|
||||
_previousGuesses.Add(validatedInput);
|
||||
|
||||
await InputValidated.InvokeAsync(validatedInput);
|
||||
|
||||
return correct;
|
||||
}
|
||||
|
||||
public async Task PlayAgain()
|
||||
{
|
||||
_previousGuesses.Clear();
|
||||
_alert = AlertState.None;
|
||||
_found = false;
|
||||
|
||||
await GenerateSecret.InvokeAsync();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,101 @@
|
||||
<!-- Matrix mit Buchstabenfeldern -->
|
||||
<div class="d-flex justify-center mt-2 mb-2">
|
||||
<div>
|
||||
@{
|
||||
int index = 0;
|
||||
|
||||
for (int row = 0; row < Math.Ceiling((double)Keys.Length / KeysPerRow); row++)
|
||||
{
|
||||
<div class="d-flex mb-2">
|
||||
@for (int i = 0; i < KeysPerRow && index < Keys.Length; i++, index++)
|
||||
{
|
||||
char key = Keys[index];
|
||||
|
||||
char upperKey = char.ToUpper(key);
|
||||
|
||||
_knownKeyStates.TryGetValue(upperKey, out var keyState);
|
||||
|
||||
if (keyState == WordleComponent.CharState.Correct)
|
||||
{
|
||||
<MudButton Variant="Variant.Outlined" Class="mr-2" Style="width: 5em; height: 5em" Color="Color.Success">
|
||||
<MudText Typo="Typo.h5">@upperKey</MudText>
|
||||
</MudButton>
|
||||
}
|
||||
else if (keyState == WordleComponent.CharState.Misplaced)
|
||||
{
|
||||
<MudButton Variant="Variant.Outlined" Class="mr-2" Style="width: 5em; height: 5em" Color="Color.Warning">
|
||||
<MudText Typo="Typo.h5">@upperKey</MudText>
|
||||
</MudButton>
|
||||
}
|
||||
else if (keyState == WordleComponent.CharState.Wrong)
|
||||
{
|
||||
<MudButton Disabled="true" Variant="Variant.Outlined" Class="mr-2" Style="width: 5em; height: 5em" Color="Color.Error">
|
||||
<MudText Typo="Typo.h5">@upperKey</MudText>
|
||||
</MudButton>
|
||||
}
|
||||
else
|
||||
{
|
||||
<MudButton Variant="Variant.Outlined" Class="mr-2" Style="width: 5em; height: 5em">
|
||||
<MudText Typo="Typo.h5">@upperKey</MudText>
|
||||
</MudButton>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@code {
|
||||
|
||||
[Parameter]
|
||||
public char[] Keys { get; set; } = Array.Empty<char>();
|
||||
|
||||
private Dictionary<char, WordleComponent.CharState> _knownKeyStates = new();
|
||||
|
||||
[Parameter]
|
||||
public int KeysPerRow { get; set; } = 10;
|
||||
|
||||
[Parameter]
|
||||
public string Secret { get; set; } = string.Empty;
|
||||
|
||||
[Parameter]
|
||||
public EventCallback<char> KeyPressed { get; set; }
|
||||
|
||||
private async Task ButtonPressed(char c)
|
||||
{
|
||||
await KeyPressed.InvokeAsync(c);
|
||||
}
|
||||
|
||||
public void UpdateKeyInfo(WordleComponent.CharData cd)
|
||||
{
|
||||
_knownKeyStates.TryGetValue(cd.Char, out var oldState);
|
||||
|
||||
WordleComponent.CharState newState = WordleComponent.CharState.None;
|
||||
|
||||
switch (cd.State)
|
||||
{
|
||||
case WordleComponent.CharState.Correct:
|
||||
newState = WordleComponent.CharState.Correct;
|
||||
break;
|
||||
case WordleComponent.CharState.Misplaced:
|
||||
// Den besseren Zustand nicht durch schlechteren ersetzen
|
||||
if (oldState != WordleComponent.CharState.Correct)
|
||||
{
|
||||
newState = WordleComponent.CharState.Misplaced;
|
||||
}
|
||||
break;
|
||||
case WordleComponent.CharState.Wrong:
|
||||
newState = WordleComponent.CharState.Wrong;
|
||||
break;
|
||||
}
|
||||
|
||||
_knownKeyStates[cd.Char] = newState;
|
||||
}
|
||||
|
||||
public void ResetKeyInfo()
|
||||
{
|
||||
_knownKeyStates.Clear();
|
||||
StateHasChanged();
|
||||
}
|
||||
}
|
||||
@ -8,9 +8,18 @@
|
||||
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="wwwroot\nomen.txt" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.15.0" />
|
||||
<PackageReference Include="MudBlazor" Version="6.0.7" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\DataAccess\DataAccess.csproj" />
|
||||
<ProjectReference Include="..\GottfriedsNackenUtility\GottfriedsNackenUtility.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@ -2,6 +2,8 @@
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ActiveDebugProfile>GottfriedsNackenWebseite</ActiveDebugProfile>
|
||||
<RazorPage_SelectedScaffolderID>RazorPageScaffolder</RazorPage_SelectedScaffolderID>
|
||||
<RazorPage_SelectedScaffolderCategoryPath>root/Common/RazorPage</RazorPage_SelectedScaffolderCategoryPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<DebuggerFlavor>ProjectDebugger</DebuggerFlavor>
|
||||
|
||||
@ -0,0 +1,31 @@
|
||||
namespace GottfriedsNackenWebseite.Numberle;
|
||||
|
||||
public abstract class AstNode
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public class AstBinaryExpression : AstNode
|
||||
{
|
||||
public AstNode Left;
|
||||
public AstNode Right;
|
||||
|
||||
public string Operator;
|
||||
|
||||
public AstBinaryExpression(string @operator, AstNode left, AstNode right)
|
||||
{
|
||||
Operator = @operator;
|
||||
Left = left;
|
||||
Right = right;
|
||||
}
|
||||
}
|
||||
|
||||
public class AstNumericLiteral : AstNode
|
||||
{
|
||||
public int Value;
|
||||
|
||||
public AstNumericLiteral(int value)
|
||||
{
|
||||
Value = value;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,104 @@
|
||||
namespace GottfriedsNackenWebseite.Numberle;
|
||||
|
||||
public class Parser
|
||||
{
|
||||
private string _input = string.Empty;
|
||||
|
||||
private readonly Tokenizer _tokenizer = new();
|
||||
|
||||
private Token _lookahead;
|
||||
|
||||
private TokenType NextTokenType => _lookahead.Type;
|
||||
|
||||
public AstNode Parse(string input)
|
||||
{
|
||||
_input = input;
|
||||
_tokenizer.Init(_input);
|
||||
|
||||
// Prime the tokenizer to obtain the first token
|
||||
// which is our lookahead. The lookahead is used
|
||||
// for predictive parsing.
|
||||
_lookahead = _tokenizer.GetNextToken();
|
||||
|
||||
// Parse recursively starting from the main entry point, the Program:
|
||||
|
||||
return ParseEqualityExpression();
|
||||
}
|
||||
|
||||
private AstNode ParseBinaryExpression(Func<AstNode> builder, TokenType operatorType)
|
||||
{
|
||||
AstNode left = builder();
|
||||
|
||||
while (_lookahead.Type == operatorType)
|
||||
{
|
||||
string @operator = (string)Consume(operatorType).Value!;
|
||||
|
||||
AstNode right = builder();
|
||||
|
||||
left = new AstBinaryExpression(@operator, left, right);
|
||||
}
|
||||
|
||||
return left;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// EqualityExpression
|
||||
/// : AdditiveExpression
|
||||
/// | AdditiveExpression '=' EqualityExpression
|
||||
/// ;
|
||||
/// </summary>
|
||||
private AstNode ParseEqualityExpression()
|
||||
{
|
||||
return ParseBinaryExpression(ParseAdditiveExpression, TokenType.Equals);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// AdditiveExpression:
|
||||
/// : MultiplicativeExpression
|
||||
/// | MultiplicativeExpression ADDITIVE_OPERATOR AdditiveExpression
|
||||
/// ;
|
||||
/// </summary>
|
||||
private AstNode ParseAdditiveExpression()
|
||||
{
|
||||
return ParseBinaryExpression(ParseMultiplicativeExpression, TokenType.AdditiveOperator);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// MultiplicativeExpression:
|
||||
/// : NumericLiteral
|
||||
/// | MultiplicativeExpression MULTIPLICATIVE_OPERATOR NumericLiteral
|
||||
/// ;
|
||||
/// </summary>
|
||||
private AstNode ParseMultiplicativeExpression()
|
||||
{
|
||||
return ParseBinaryExpression(ParseNumericLiteral, TokenType.MultiplicativeOperator);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// AstNumericLiteral
|
||||
/// : NumberLiteral
|
||||
/// ;
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private AstNumericLiteral ParseNumericLiteral()
|
||||
{
|
||||
Token token = Consume(TokenType.NumberLiteral);
|
||||
|
||||
return new AstNumericLiteral((int)token.Value!);
|
||||
}
|
||||
|
||||
private Token Consume(TokenType type)
|
||||
{
|
||||
Token token = _lookahead;
|
||||
|
||||
if (token.Type == TokenType.EndOfFile)
|
||||
throw new Exception($"Unexpected end of input, expected \"{type}\"");
|
||||
|
||||
if (token.Type != type)
|
||||
throw new Exception($"Unexpected token \"{token.Type}\", expected \"{type}\"");
|
||||
|
||||
_lookahead = _tokenizer.GetNextToken();
|
||||
|
||||
return token;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,116 @@
|
||||
namespace GottfriedsNackenWebseite.Numberle;
|
||||
|
||||
public enum TokenType
|
||||
{
|
||||
Unknown,
|
||||
EndOfFile,
|
||||
|
||||
AdditiveOperator,
|
||||
MultiplicativeOperator,
|
||||
Equals,
|
||||
|
||||
NumberLiteral
|
||||
}
|
||||
|
||||
public struct Token
|
||||
{
|
||||
public TokenType Type;
|
||||
public object? Value;
|
||||
}
|
||||
|
||||
public class Tokenizer
|
||||
{
|
||||
private string _input = string.Empty;
|
||||
private int _cursor = 0;
|
||||
|
||||
public void Init(string input)
|
||||
{
|
||||
_input = input;
|
||||
_cursor = 0;
|
||||
}
|
||||
|
||||
public bool HasMoreTokens => _cursor < _input.Length;
|
||||
|
||||
/// <summary>
|
||||
/// Gibt das aktuelle Zeichen der Eingabe zurück oder das Null-Zeichen ('\0') wenn das Ende der Eingabe erreicht wurde.
|
||||
/// </summary>
|
||||
private char CurrentChar => HasMoreTokens ? _input[_cursor] : '\0';
|
||||
|
||||
public Token GetNextToken()
|
||||
{
|
||||
if (!HasMoreTokens)
|
||||
{
|
||||
return new Token
|
||||
{
|
||||
Type = TokenType.EndOfFile
|
||||
};
|
||||
}
|
||||
|
||||
Token token = new Token
|
||||
{
|
||||
Type = TokenType.Unknown,
|
||||
Value = null
|
||||
};
|
||||
|
||||
switch (CurrentChar)
|
||||
{
|
||||
case '+':
|
||||
token.Type = TokenType.AdditiveOperator;
|
||||
token.Value = "+";
|
||||
_cursor++;
|
||||
break;
|
||||
case '-':
|
||||
token.Type = TokenType.AdditiveOperator;
|
||||
token.Value = "-";
|
||||
_cursor++;
|
||||
break;
|
||||
case '*':
|
||||
token.Type = TokenType.MultiplicativeOperator;
|
||||
token.Value = "*";
|
||||
_cursor++;
|
||||
break;
|
||||
case '/':
|
||||
token.Type = TokenType.MultiplicativeOperator;
|
||||
token.Value = "/";
|
||||
_cursor++;
|
||||
break;
|
||||
case '=':
|
||||
token.Type = TokenType.Equals;
|
||||
token.Value = "=";
|
||||
_cursor++;
|
||||
break;
|
||||
default:
|
||||
if (char.IsDigit(CurrentChar))
|
||||
{
|
||||
token.Type = TokenType.NumberLiteral;
|
||||
|
||||
int value = 0;
|
||||
|
||||
while (true)
|
||||
{
|
||||
if (!HasMoreTokens)
|
||||
break;
|
||||
|
||||
char c = CurrentChar;
|
||||
|
||||
if (char.IsDigit(c))
|
||||
{
|
||||
value *= 10;
|
||||
value += c - '0';
|
||||
|
||||
_cursor++;
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
token.Value = value;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return token;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,96 @@
|
||||
@page "/databasetest"
|
||||
|
||||
@using DataAccess.Data
|
||||
@using DataAccess.Models
|
||||
@inject IUserData _userData
|
||||
|
||||
<PageTitle>Database Test</PageTitle>
|
||||
|
||||
<MudContainer MaxWidth="MaxWidth.Small">
|
||||
<MudTable Items="@_users" Hover="true" Breakpoint="Breakpoint.Sm" Loading="_loading">
|
||||
<ToolBarContent>
|
||||
<MudText Typo="Typo.h6">Nutzer</MudText>
|
||||
<MudSpacer />
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Refresh" OnClick="RefreshUserList" />
|
||||
</ToolBarContent>
|
||||
|
||||
<HeaderContent>
|
||||
<MudTh>Id</MudTh>
|
||||
<MudTh>First Name</MudTh>
|
||||
<MudTh>Last Name</MudTh>
|
||||
<MudTh/>
|
||||
</HeaderContent>
|
||||
<RowTemplate>
|
||||
<MudTd DataLabel="Nr">@context.Id</MudTd>
|
||||
<MudTd DataLabel="First Name">@context.FirstName</MudTd>
|
||||
<MudTd DataLabel="Last Name">@context.LastName</MudTd>
|
||||
<MudTd>
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Delete" OnClick="() => DeleteUser(context)" />
|
||||
</MudTd>
|
||||
</RowTemplate>
|
||||
|
||||
<PagerContent>
|
||||
<MudTablePager/>
|
||||
</PagerContent>
|
||||
</MudTable>
|
||||
|
||||
<MudPaper Class="pa-4 mt-2">
|
||||
<MudForm @bind-IsValid="_newUserValid" >
|
||||
|
||||
<MudText Typo="Typo.h4">Neuen Nutzer erstellen:</MudText>
|
||||
<MudTextField T="string" Label="Vorname" @bind-Value="_newUser.FirstName" Immediate="true" Required="true" RequiredError="Vorname muss angegeben werden!"/>
|
||||
<MudTextField T="string" Label="Nachname" @bind-Value="_newUser.LastName" Immediate="true" Required="true" RequiredError="Nachname muss angegeben werden!"/>
|
||||
<MudButton Class="mt-2" Variant="Variant.Filled" Color="Color.Primary" Disabled="!_newUserValid" OnClick="AddUser">Hinzufügen</MudButton>
|
||||
</MudForm>
|
||||
</MudPaper>
|
||||
|
||||
</MudContainer>
|
||||
|
||||
@code {
|
||||
private bool _newUserValid;
|
||||
|
||||
private UserModel _newUser = new();
|
||||
|
||||
private bool _loading;
|
||||
|
||||
private IEnumerable<UserModel> _users = Enumerable.Empty<UserModel>();
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
await RefreshUserList();
|
||||
|
||||
await base.OnInitializedAsync();
|
||||
}
|
||||
|
||||
private async Task RefreshUserList()
|
||||
{
|
||||
_loading = true;
|
||||
|
||||
try
|
||||
{
|
||||
_users = await _userData.GetUsers();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine($"Failed to load users. Exception: {e}");
|
||||
}
|
||||
|
||||
_loading = false;
|
||||
}
|
||||
|
||||
private async Task AddUser()
|
||||
{
|
||||
await _userData.InsertUser(_newUser);
|
||||
|
||||
await RefreshUserList();
|
||||
|
||||
_newUser = new UserModel();
|
||||
}
|
||||
|
||||
private async Task DeleteUser(UserModel user)
|
||||
{
|
||||
await _userData.DeleteUser(user.Id);
|
||||
|
||||
await RefreshUserList();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,37 @@
|
||||
@page "/nackendex"
|
||||
|
||||
<PageTitle>NackenDex</PageTitle>
|
||||
<MudText Class="mt-2 mb-2" Align="Align.Center">Ihr NackenDex für die besten Quartettkarten</MudText>
|
||||
|
||||
<MudContainer>
|
||||
<MudPaper Elevation="25" Class="m-1">
|
||||
<MudGrid Spacing="2">
|
||||
<MudItem Class="ml-2">
|
||||
<MudAutocomplete T="string" Label="Suche..."></MudAutocomplete>
|
||||
</MudItem>
|
||||
<MudSpacer />
|
||||
<MudItem Class="mr-2 mt-2">
|
||||
<MudChipSet @bind-SelectedChips="selected" Filter="filter">
|
||||
<MudChip Text="Deutsch"></MudChip>
|
||||
<MudChip Text="Nacken"></MudChip>
|
||||
<MudChip Text="Intelligenz"></MudChip>
|
||||
<MudChip Text="Alter"></MudChip>
|
||||
</MudChipSet>
|
||||
</MudItem>
|
||||
</MudGrid>
|
||||
</MudPaper>
|
||||
</MudContainer>
|
||||
|
||||
<MudGrid Justify="Justify.Center" Class="mt-8">
|
||||
@for(int i = 0; i < 10; i++)
|
||||
{
|
||||
<MudItem>
|
||||
<GottfriedsNackenWebseite.Components.NackenKarte></GottfriedsNackenWebseite.Components.NackenKarte>
|
||||
</MudItem>
|
||||
}
|
||||
</MudGrid>
|
||||
|
||||
@code {
|
||||
bool filter = true;
|
||||
MudChip[] selected;
|
||||
}
|
||||
@ -0,0 +1,218 @@
|
||||
@page "/numberle"
|
||||
|
||||
@using GottfriedsNackenWebseite.Components
|
||||
@using GottfriedsNackenWebseite.Numberle
|
||||
@using GottfriedsNackenUtility
|
||||
@using System.Diagnostics
|
||||
@using System.Numerics
|
||||
|
||||
<PageTitle>Nacken Numberle</PageTitle>
|
||||
<MudText Align="Align.Center" Class="mt-2 mb-2"> Gebe eine (korrekte) mathematische Gleichung ein:</MudText>
|
||||
|
||||
<WordleComponent ColumnCount="8" GenerateSecret="OnGenerateNewSecret" InputMask="@_inputMask" CheckInput="CheckInput" InputValidated="OnInputValidated" @ref="_wordle" />
|
||||
|
||||
<WordleKeyboardComponent @ref="_keyboard" KeyPressed="KeyboardKeyPressed" Keys="Chars" />
|
||||
|
||||
<MudOverlay @bind-Visible="_showLoadingOverlay" DarkBackground="true">
|
||||
<MudCard>
|
||||
<MudCardHeader>
|
||||
<MudText Typo="Typo.h5">Bitte warten...</MudText>
|
||||
</MudCardHeader>
|
||||
<MudCardContent>
|
||||
<MudText>Erzeuge eine unknackbare Formel mit roher Gewalt!</MudText>
|
||||
<MudProgressLinear Color="Color.Secondary" Indeterminate="_progress < 0" Value="_progress" Class="my-7"/>
|
||||
</MudCardContent>
|
||||
</MudCard>
|
||||
</MudOverlay>
|
||||
|
||||
@code
|
||||
{
|
||||
private static readonly IMask _inputMask = new RegexMask(@"^[0-9+\-*/=]{0,8}$");
|
||||
|
||||
private readonly Parser _parser = new();
|
||||
|
||||
private WordleComponent _wordle = default!;
|
||||
private WordleKeyboardComponent _keyboard = default!;
|
||||
|
||||
private bool _showLoadingOverlay;
|
||||
private int _progress;
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
await base.OnInitializedAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Prüft ob input eine gültige Gleichung ist.
|
||||
/// </summary>
|
||||
private bool CheckInput(string input)
|
||||
{
|
||||
try
|
||||
{
|
||||
AstNode ast = _parser.Parse(input);
|
||||
|
||||
// Äußerste Node muss '=' sein.
|
||||
if (ast is not AstBinaryExpression binExp || binExp.Operator != "=")
|
||||
return false;
|
||||
|
||||
(decimal value, int equalSigns) = CrunchyValidaty(ast);
|
||||
|
||||
// Wir akzeptieren nur, wenn es exakt ein Gleichheitszeichen gibt und die Gleichung erfüllt ist.
|
||||
return value == 1 && equalSigns == 1;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Berechnet den Wert der gegebenen (Teil-)Gleichung und zählt wie viele Gleichheitszeichen darin vorkommen.
|
||||
/// </summary>
|
||||
/// <param name="node">Die zu berechnende Gleichung.</param>
|
||||
/// <returns>Den Wert der Gleichung und die Anzahl Gleichheitszeichen</returns>
|
||||
private (decimal Value, int equalSigns) CrunchyValidaty(AstNode node)
|
||||
{
|
||||
switch (node)
|
||||
{
|
||||
case AstNumericLiteral number:
|
||||
return (number.Value, 0);
|
||||
case AstBinaryExpression binary:
|
||||
|
||||
(decimal Value, int equalSigns) left = CrunchyValidaty(binary.Left);
|
||||
(decimal Value, int equalSigns) right = CrunchyValidaty(binary.Right);
|
||||
|
||||
int equalsSigns = left.equalSigns + right.equalSigns;
|
||||
|
||||
switch (binary.Operator)
|
||||
{
|
||||
case "+":
|
||||
return (left.Value + right.Value, equalsSigns);
|
||||
case "-":
|
||||
return (left.Value - right.Value, equalsSigns);
|
||||
case "*":
|
||||
return (left.Value * right.Value, equalsSigns);
|
||||
case "/":
|
||||
return (left.Value / right.Value, equalsSigns);
|
||||
case "=":
|
||||
return (left.Value == right.Value ? 1 : 0, equalsSigns + 1);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return (0, 0);
|
||||
}
|
||||
|
||||
return (0, 0);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Die Zeichen aus denen eine Antwort besteht.
|
||||
/// </summary>
|
||||
private static readonly char[] Chars = {
|
||||
'=', '+', '-', '*', '/',
|
||||
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Generiert ein neues Geheimnis und zeigt während dessen den Ladebalken an.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private async Task OnGenerateNewSecret()
|
||||
{
|
||||
_keyboard.ResetKeyInfo();
|
||||
|
||||
CancellationTokenSource cts = new CancellationTokenSource();
|
||||
|
||||
Task? amazingTask = null;
|
||||
|
||||
try
|
||||
{
|
||||
// Ladebalkenaktualisierer starten
|
||||
amazingTask = SusHelper.UpdateDefinitelyNotFakeProgress(progress =>
|
||||
{
|
||||
_progress = progress;
|
||||
StateHasChanged();
|
||||
}, cts.Token);
|
||||
|
||||
_showLoadingOverlay = true;
|
||||
|
||||
_wordle.Secret = await Task.Run(GenerateFormula);
|
||||
|
||||
_showLoadingOverlay = false;
|
||||
}
|
||||
finally
|
||||
{
|
||||
// Ladebalkenaktualisierer stoppen
|
||||
cts.Cancel();
|
||||
if (amazingTask != null)
|
||||
await amazingTask;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Erzeugt eine neue (gültige) Formel.
|
||||
/// </summary>
|
||||
/// <returns>Die Formel</returns>
|
||||
private string GenerateFormula()
|
||||
{
|
||||
int charCount = 8;
|
||||
|
||||
char[] formula = new char[charCount];
|
||||
|
||||
// Gleichzeichen plazieren
|
||||
int equalsIndex = Random.Shared.Next(1, charCount - 1);
|
||||
formula[equalsIndex] = '=';
|
||||
|
||||
// Ersetzt das Zeichen mit Index "index" durch einen Zufälligen wert.
|
||||
// TODO: ein etwas gewiefterer Algorithmus würde nicht schaden.
|
||||
void PlaceRandomChar(int index)
|
||||
{
|
||||
char left = (index > 0) ? formula[index - 1] : '\0';
|
||||
char right = (index < charCount - 1) ? formula[index + 1] : '\0';
|
||||
|
||||
bool canPlaceOperator = char.IsDigit(left) && char.IsDigit(right);
|
||||
|
||||
if (canPlaceOperator)
|
||||
formula[index] = Chars[Random.Shared.Next(1, Chars.Length)];
|
||||
else
|
||||
formula[index] = Chars[Random.Shared.Next(6, Chars.Length)];
|
||||
}
|
||||
|
||||
// ROHE GEWALT!
|
||||
while (true)
|
||||
{
|
||||
for (int i = 0; i < formula.Length; i++)
|
||||
{
|
||||
if (i == equalsIndex)
|
||||
i++;
|
||||
|
||||
PlaceRandomChar(i);
|
||||
|
||||
string str = new string(formula);
|
||||
|
||||
Debug.WriteLine(str);
|
||||
|
||||
if (CheckInput(str))
|
||||
{
|
||||
return str;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async Task KeyboardKeyPressed(char key)
|
||||
{
|
||||
// TODO: Virtuelles Keyboard
|
||||
//await _wordle.SetText(_wordle.Input + key); //Input += key;
|
||||
await Task.CompletedTask;
|
||||
}
|
||||
|
||||
private void OnInputValidated(WordleComponent.CharData[] data)
|
||||
{
|
||||
// Auswertung in das Keyboard packen
|
||||
foreach (WordleComponent.CharData cd in data)
|
||||
{
|
||||
_keyboard.UpdateKeyInfo(cd);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,155 @@
|
||||
@page "/wordle"
|
||||
|
||||
<PageTitle>Nacken Wordle</PageTitle>
|
||||
<MudText Align="Align.Center" Class="mt-2 mb-2"> Rate ein Wort mit 5 Buchstaben:</MudText>
|
||||
|
||||
<!-- Hidden Alerts -->
|
||||
<div hidden="@hideAlert">
|
||||
<MudContainer MaxWidth="MaxWidth.Small">
|
||||
<MudGrid>
|
||||
<MudItem xs="1"></MudItem>
|
||||
<MudItem xs="8">
|
||||
<MudAlert Severity="Severity.Success">Korrekt!</MudAlert>
|
||||
</MudItem>
|
||||
<MudItem xs="2">
|
||||
<MudIconButton Icon="@Icons.Filled.Replay" Color="Color.Primary" aria-label="nochmal spielen" OnClick="@PlayAgain"></MudIconButton>
|
||||
</MudItem>
|
||||
<MudItem xs="1"></MudItem>
|
||||
</MudGrid>
|
||||
</MudContainer>
|
||||
</div>
|
||||
|
||||
<!-- Matrix mit Buchstabenfeldern -->
|
||||
<div class="d-flex justify-center mt-2 mb-2">
|
||||
<div>
|
||||
@foreach(var guess in PreviousGuesses)
|
||||
{
|
||||
<div class="d-flex mb-2">
|
||||
@for(int i = 0; i < 5; i++)
|
||||
{
|
||||
char guessedChar = char.ToUpper(guess[i]);
|
||||
|
||||
if(guessedChar == char.ToUpper(secret[i]))
|
||||
{
|
||||
<MudPaper Style="border-color: green; border-width: 4px;" Class="mr-2" Width="60px" Height="60px" Outlined="true">
|
||||
<MudText Typo="Typo.h3" Align="Align.Center">@guessedChar</MudText>
|
||||
</MudPaper>
|
||||
}
|
||||
else if (secret.Contains(guessedChar, StringComparison.InvariantCultureIgnoreCase))
|
||||
{
|
||||
<MudPaper Style="border-color: yellow; border-width: 4px;" Class="mr-2" Width="60px" Height="60px" Outlined="true">
|
||||
<MudText Typo="Typo.h3" Align="Align.Center">@guessedChar</MudText>
|
||||
</MudPaper>
|
||||
}
|
||||
else
|
||||
{
|
||||
<MudPaper Style="border-width: 4px;" Class="mr-2" Width="60px" Height="60px" Outlined="true">
|
||||
<MudText Typo="Typo.h3" Align="Align.Center">@guessedChar</MudText>
|
||||
</MudPaper>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Input dialogue feld -->
|
||||
<MudContainer MaxWidth="MaxWidth.Small" @onkeyup="@Check4Enter">
|
||||
<MudGrid Spacing="2">
|
||||
<MudItem xs="1"></MudItem>
|
||||
<MudItem xs="8">
|
||||
<MudTextField Class="" @ref="textField" T="string" FullWidth="true" @bind-Value="Input" Label="Dein Tipp:" Variant="Variant.Outlined" MaxLength="5" Mask="@_inputMask">Hi</MudTextField>
|
||||
</MudItem>
|
||||
<MudItem xs="2">
|
||||
<MudButton style="height:56px; margin-top:6px;" Class="justify-center" Size="Size.Large" Variant="Variant.Outlined" EndIcon="@Icons.Material.Filled.Send" Color="Color.Primary" OnClick=@ButtonOnClick>OK</MudButton>
|
||||
</MudItem>
|
||||
<MudItem xs="1"></MudItem>
|
||||
</MudGrid>
|
||||
</MudContainer>
|
||||
|
||||
@code {
|
||||
public string Input { get; set; }
|
||||
|
||||
public bool hideAlert = true;
|
||||
|
||||
public MudTextField<string> textField;
|
||||
|
||||
public List<string> PreviousGuesses = new List<string>();
|
||||
public List<string> SecretList = new List<string>();
|
||||
|
||||
//Keine Ahnung wie das funktionert... Danke StackOverflow :)
|
||||
/// <summary>
|
||||
/// Eine Regexmaske die alle Strings matched die 0 bis 5 Buchstaben enthalten.
|
||||
/// </summary>
|
||||
private IMask _inputMask = new RegexMask(@"^[A-Za-z]{0,5}$");
|
||||
|
||||
public string secret = "penis";
|
||||
private bool found = false;
|
||||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
try
|
||||
{
|
||||
string text = File.ReadAllText("./wwwroot/nomen.txt");
|
||||
string[] splitArray = text.Split(",");
|
||||
|
||||
foreach(var w in splitArray)
|
||||
{
|
||||
SecretList.Add(w);
|
||||
}
|
||||
|
||||
Random r = new Random();
|
||||
|
||||
secret = SecretList.ElementAt<string>(r.Next(SecretList.Count));
|
||||
Console.WriteLine("[SECRET]: " + secret.ToLower());
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine(e);
|
||||
}
|
||||
}
|
||||
|
||||
public void Check4Enter(KeyboardEventArgs e)
|
||||
{
|
||||
if (e.Code == "Enter" || e.Code == "NumpadEnter")
|
||||
{
|
||||
if(found)
|
||||
{
|
||||
PlayAgain();
|
||||
}
|
||||
else
|
||||
{
|
||||
ButtonOnClick();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void ButtonOnClick()
|
||||
{
|
||||
if(Input != null && Input.Length == 5 && !found)
|
||||
{
|
||||
PreviousGuesses.Add(Input);
|
||||
if(secret.ToLower() == Input.ToLower())
|
||||
{
|
||||
found = true;
|
||||
textField.Clear();
|
||||
hideAlert = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
textField.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void PlayAgain()
|
||||
{
|
||||
PreviousGuesses.Clear();
|
||||
hideAlert = true;
|
||||
found = false;
|
||||
|
||||
Random r = new Random();
|
||||
secret = SecretList.ElementAt<string>(r.Next(SecretList.Count));
|
||||
Console.WriteLine("[SECRET]: " + secret.ToLower());
|
||||
}
|
||||
}
|
||||
@ -1,3 +1,5 @@
|
||||
using DataAccess.Data;
|
||||
using DataAccess.DbAccess;
|
||||
using GottfriedsNackenWebseite.Data;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.AspNetCore.Components.Web;
|
||||
@ -11,6 +13,9 @@ builder.Services.AddServerSideBlazor();
|
||||
builder.Services.AddSingleton<WeatherForecastService>();
|
||||
builder.Services.AddMudServices();
|
||||
|
||||
builder.Services.AddSingleton<ISqlDataAccess, SqlDataAccess>();
|
||||
builder.Services.AddSingleton<IUserData, UserData>();
|
||||
|
||||
var app = builder.Build();
|
||||
|
||||
// Configure the HTTP request pipeline.
|
||||
|
||||
@ -14,6 +14,18 @@
|
||||
<MudNavLink Href="fetchdata" Match=NavLinkMatch.Prefix>
|
||||
Fetch data
|
||||
</MudNavLink>
|
||||
<MudNavLink Href="wordle" Match=NavLinkMatch.Prefix>
|
||||
Nacken Wordle
|
||||
</MudNavLink>
|
||||
<MudNavLink Href="nackendex" Match=NavLinkMatch.Prefix>
|
||||
NackenDex
|
||||
</MudNavLink>
|
||||
<MudNavLink Href="numberle" Match=NavLinkMatch.Prefix>
|
||||
Nacken Numberle
|
||||
</MudNavLink>
|
||||
<MudNavLink Href="databasetest" Match=NavLinkMatch.Prefix>
|
||||
Datenbank Test
|
||||
</MudNavLink>
|
||||
</MudNavMenu>
|
||||
@*
|
||||
<div class="top-row ps-3 navbar navbar-dark">
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
{
|
||||
"DetailedErrors": true,
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
}
|
||||
"DetailedErrors": true,
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
@ -1,9 +1,12 @@
|
||||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
},
|
||||
"AllowedHosts": "*",
|
||||
"ConnectionStrings": {
|
||||
"Default": "PLACEHOLDER"
|
||||
}
|
||||
},
|
||||
"AllowedHosts": "*"
|
||||
}
|
||||
|
||||
@ -1,248 +0,0 @@
|
||||
{
|
||||
"runtimeTarget": {
|
||||
"name": ".NETCoreApp,Version=v6.0",
|
||||
"signature": ""
|
||||
},
|
||||
"compilationOptions": {},
|
||||
"targets": {
|
||||
".NETCoreApp,Version=v6.0": {
|
||||
"GottfriedsNackenWebseite/1.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.VisualStudio.Azure.Containers.Tools.Targets": "1.15.0",
|
||||
"MudBlazor": "6.0.7"
|
||||
},
|
||||
"runtime": {
|
||||
"GottfriedsNackenWebseite.dll": {}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Authorization/6.0.2": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Metadata": "6.0.2",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "6.0.0",
|
||||
"Microsoft.Extensions.Options": "6.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.AspNetCore.Authorization.dll": {
|
||||
"assemblyVersion": "6.0.0.0",
|
||||
"fileVersion": "6.0.222.6412"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Components/6.0.2": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Authorization": "6.0.2",
|
||||
"Microsoft.AspNetCore.Components.Analyzers": "6.0.2"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.AspNetCore.Components.dll": {
|
||||
"assemblyVersion": "6.0.0.0",
|
||||
"fileVersion": "6.0.222.6412"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Components.Analyzers/6.0.2": {},
|
||||
"Microsoft.AspNetCore.Components.Forms/6.0.2": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Components": "6.0.2"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.AspNetCore.Components.Forms.dll": {
|
||||
"assemblyVersion": "6.0.0.0",
|
||||
"fileVersion": "6.0.222.6412"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Components.Web/6.0.2": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Components": "6.0.2",
|
||||
"Microsoft.AspNetCore.Components.Forms": "6.0.2",
|
||||
"Microsoft.Extensions.DependencyInjection": "6.0.0",
|
||||
"Microsoft.JSInterop": "6.0.2",
|
||||
"System.IO.Pipelines": "6.0.2"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.AspNetCore.Components.Web.dll": {
|
||||
"assemblyVersion": "6.0.0.0",
|
||||
"fileVersion": "6.0.222.6412"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Metadata/6.0.2": {
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.AspNetCore.Metadata.dll": {
|
||||
"assemblyVersion": "6.0.0.0",
|
||||
"fileVersion": "6.0.222.6412"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection/6.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
|
||||
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions/6.0.0": {},
|
||||
"Microsoft.Extensions.Logging.Abstractions/6.0.0": {},
|
||||
"Microsoft.Extensions.Options/6.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
|
||||
"Microsoft.Extensions.Primitives": "6.0.0"
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Primitives/6.0.0": {
|
||||
"dependencies": {
|
||||
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
|
||||
}
|
||||
},
|
||||
"Microsoft.JSInterop/6.0.2": {
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.JSInterop.dll": {
|
||||
"assemblyVersion": "6.0.0.0",
|
||||
"fileVersion": "6.0.222.6412"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.VisualStudio.Azure.Containers.Tools.Targets/1.15.0": {},
|
||||
"MudBlazor/6.0.7": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Components": "6.0.2",
|
||||
"Microsoft.AspNetCore.Components.Web": "6.0.2"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/MudBlazor.dll": {
|
||||
"assemblyVersion": "6.0.7.0",
|
||||
"fileVersion": "6.0.7.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.IO.Pipelines/6.0.2": {
|
||||
"runtime": {
|
||||
"lib/net6.0/System.IO.Pipelines.dll": {
|
||||
"assemblyVersion": "6.0.0.0",
|
||||
"fileVersion": "6.0.222.6406"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Runtime.CompilerServices.Unsafe/6.0.0": {}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"GottfriedsNackenWebseite/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"Microsoft.AspNetCore.Authorization/6.0.2": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-AjwO1PjN75weiC0KzznybEZh5rr+VjH3c2wvuRT6Qmd8cv2+/6hBn/peelGkZUzYBY0l7QA22jwmjKKeeNYsIQ==",
|
||||
"path": "microsoft.aspnetcore.authorization/6.0.2",
|
||||
"hashPath": "microsoft.aspnetcore.authorization.6.0.2.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.Components/6.0.2": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-UXojpKtmaJkGRUzGgGY2LcmAqWaubEJ0ewEm/wmchn89hQPuqMG/Zm+Matl1pSMCDIbxuGegYzUs9zIqbS1VNA==",
|
||||
"path": "microsoft.aspnetcore.components/6.0.2",
|
||||
"hashPath": "microsoft.aspnetcore.components.6.0.2.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.Components.Analyzers/6.0.2": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-jHMdjIrlqm1T6BqBzCpuMAdj1mSpmcEF0wNXIKh7xS6jKAdKOy8aWKTbFI022dW8ZgjC4UNpp9UTuMDVu9/T/w==",
|
||||
"path": "microsoft.aspnetcore.components.analyzers/6.0.2",
|
||||
"hashPath": "microsoft.aspnetcore.components.analyzers.6.0.2.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.Components.Forms/6.0.2": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-8cABkvHPvBhwMVzOl3ZzVPafDk/ZcUoCA8I7a9jcndpFYNztqtN6IP7i1KSJYk4EYG5nSEf3v1d4F6ufmTKwSA==",
|
||||
"path": "microsoft.aspnetcore.components.forms/6.0.2",
|
||||
"hashPath": "microsoft.aspnetcore.components.forms.6.0.2.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.Components.Web/6.0.2": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-xtQB9yaO7Yki9qHWx48Xuk1/t3cGeOtog+ObSn64rK7knLICd9NpKZa5cw/0ttqzxCo0QHwtk/KAhY9qu4RX7w==",
|
||||
"path": "microsoft.aspnetcore.components.web/6.0.2",
|
||||
"hashPath": "microsoft.aspnetcore.components.web.6.0.2.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.Metadata/6.0.2": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-SE6xWyaY2n9LsfwNwppyqwVIRtS1RcYPaIFoqyTi8HA6l2Zze40lIvdTSTtDQC+EZpdDRmQY3CPQi9ZlCqOwTg==",
|
||||
"path": "microsoft.aspnetcore.metadata/6.0.2",
|
||||
"hashPath": "microsoft.aspnetcore.metadata.6.0.2.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-k6PWQMuoBDGGHOQTtyois2u4AwyVcIwL2LaSLlTZQm2CYcJ1pxbt6jfAnpWmzENA/wfrYRI/X9DTLoUkE4AsLw==",
|
||||
"path": "microsoft.extensions.dependencyinjection/6.0.0",
|
||||
"hashPath": "microsoft.extensions.dependencyinjection.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-xlzi2IYREJH3/m6+lUrQlujzX8wDitm4QGnUu6kUXTQAWPuZY8i+ticFJbzfqaetLA6KR/rO6Ew/HuYD+bxifg==",
|
||||
"path": "microsoft.extensions.dependencyinjection.abstractions/6.0.0",
|
||||
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Abstractions/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-/HggWBbTwy8TgebGSX5DBZ24ndhzi93sHUBDvP1IxbZD7FDokYzdAr6+vbWGjw2XAfR2EJ1sfKUotpjHnFWPxA==",
|
||||
"path": "microsoft.extensions.logging.abstractions/6.0.0",
|
||||
"hashPath": "microsoft.extensions.logging.abstractions.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Options/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-dzXN0+V1AyjOe2xcJ86Qbo233KHuLEY0njf/P2Kw8SfJU+d45HNS2ctJdnEnrWbM9Ye2eFgaC5Mj9otRMU6IsQ==",
|
||||
"path": "microsoft.extensions.options/6.0.0",
|
||||
"hashPath": "microsoft.extensions.options.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Primitives/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-9+PnzmQFfEFNR9J2aDTfJGGupShHjOuGw4VUv+JB044biSHrnmCIMD+mJHmb2H7YryrfBEXDurxQ47gJZdCKNQ==",
|
||||
"path": "microsoft.extensions.primitives/6.0.0",
|
||||
"hashPath": "microsoft.extensions.primitives.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.JSInterop/6.0.2": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-0Fg5C5U+XNS5Mb5jYojUGaCDjQqV5IuzyETXt+9NA0QXRgedbm0uYjNpjbIOcOroPSIgo1E3VIg0EDNtE2CuYQ==",
|
||||
"path": "microsoft.jsinterop/6.0.2",
|
||||
"hashPath": "microsoft.jsinterop.6.0.2.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.VisualStudio.Azure.Containers.Tools.Targets/1.15.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-63WC4TTNYIGp0pRf9yGrXVqVyPWTtY/r4tFBCOx5d14QVdQPIUqGzE9TWDO1/lOwg+aN0/S3DZTUw9kBSHT/Mg==",
|
||||
"path": "microsoft.visualstudio.azure.containers.tools.targets/1.15.0",
|
||||
"hashPath": "microsoft.visualstudio.azure.containers.tools.targets.1.15.0.nupkg.sha512"
|
||||
},
|
||||
"MudBlazor/6.0.7": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-7NYG50IAgGAmWEWBNzjEOjWmyk9PEkSTDnGMppXzoS1F4CBJe7KkyhDFFHPBpuTpNqJ4r7Xw36R+LPgw7mKoFA==",
|
||||
"path": "mudblazor/6.0.7",
|
||||
"hashPath": "mudblazor.6.0.7.nupkg.sha512"
|
||||
},
|
||||
"System.IO.Pipelines/6.0.2": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-cb5OfQjnz+zjpJJei+f3QYK7+wWZrDdNHf3DykO6QCacpNZ80tuNgq1DC2kqlrjfEu+cMUTvulxPIrCMbBkjqg==",
|
||||
"path": "system.io.pipelines/6.0.2",
|
||||
"hashPath": "system.io.pipelines.6.0.2.nupkg.sha512"
|
||||
},
|
||||
"System.Runtime.CompilerServices.Unsafe/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==",
|
||||
"path": "system.runtime.compilerservices.unsafe/6.0.0",
|
||||
"hashPath": "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512"
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,19 +0,0 @@
|
||||
{
|
||||
"runtimeOptions": {
|
||||
"tfm": "net6.0",
|
||||
"frameworks": [
|
||||
{
|
||||
"name": "Microsoft.NETCore.App",
|
||||
"version": "6.0.0"
|
||||
},
|
||||
{
|
||||
"name": "Microsoft.AspNetCore.App",
|
||||
"version": "6.0.0"
|
||||
}
|
||||
],
|
||||
"configProperties": {
|
||||
"System.GC.Server": true,
|
||||
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,77 +0,0 @@
|
||||
{
|
||||
"ContentRoots": [
|
||||
"/src/GottfriedsNackenWebseite/wwwroot/",
|
||||
"/root/.nuget/fallbackpackages/mudblazor/6.0.7/staticwebassets/",
|
||||
"/src/GottfriedsNackenWebseite/obj/Debug/net6.0/scopedcss/bundle/"
|
||||
],
|
||||
"Root": {
|
||||
"Children": {
|
||||
"css": {
|
||||
"Children": {
|
||||
"site.css": {
|
||||
"Children": null,
|
||||
"Asset": {
|
||||
"ContentRootIndex": 0,
|
||||
"SubPath": "css/site.css"
|
||||
},
|
||||
"Patterns": null
|
||||
}
|
||||
},
|
||||
"Asset": null,
|
||||
"Patterns": null
|
||||
},
|
||||
"favicon.ico": {
|
||||
"Children": null,
|
||||
"Asset": {
|
||||
"ContentRootIndex": 0,
|
||||
"SubPath": "favicon.ico"
|
||||
},
|
||||
"Patterns": null
|
||||
},
|
||||
"_content": {
|
||||
"Children": {
|
||||
"MudBlazor": {
|
||||
"Children": {
|
||||
"MudBlazor.min.css": {
|
||||
"Children": null,
|
||||
"Asset": {
|
||||
"ContentRootIndex": 1,
|
||||
"SubPath": "MudBlazor.min.css"
|
||||
},
|
||||
"Patterns": null
|
||||
},
|
||||
"MudBlazor.min.js": {
|
||||
"Children": null,
|
||||
"Asset": {
|
||||
"ContentRootIndex": 1,
|
||||
"SubPath": "MudBlazor.min.js"
|
||||
},
|
||||
"Patterns": null
|
||||
}
|
||||
},
|
||||
"Asset": null,
|
||||
"Patterns": null
|
||||
}
|
||||
},
|
||||
"Asset": null,
|
||||
"Patterns": null
|
||||
},
|
||||
"GottfriedsNackenWebseite.styles.css": {
|
||||
"Children": null,
|
||||
"Asset": {
|
||||
"ContentRootIndex": 2,
|
||||
"SubPath": "GottfriedsNackenWebseite.styles.css"
|
||||
},
|
||||
"Patterns": null
|
||||
}
|
||||
},
|
||||
"Asset": null,
|
||||
"Patterns": [
|
||||
{
|
||||
"ContentRootIndex": 0,
|
||||
"Pattern": "**",
|
||||
"Depth": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@ -1 +0,0 @@
|
||||
{"ContentRoots":["D:\\Development\\Git\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\wwwroot\\","C:\\Users\\Simon\\.nuget\\packages\\mudblazor\\6.0.7\\staticwebassets\\","D:\\Development\\Git\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\obj\\Debug\\net6.0\\scopedcss\\bundle\\"],"Root":{"Children":{"css":{"Children":{"site.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"css/site.css"},"Patterns":null}},"Asset":null,"Patterns":null},"favicon.ico":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"favicon.ico"},"Patterns":null},"images":{"Children":{"gitea_icon.svg":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"images/gitea_icon.svg"},"Patterns":null}},"Asset":null,"Patterns":null},"_content":{"Children":{"MudBlazor":{"Children":{"MudBlazor.min.css":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"MudBlazor.min.css"},"Patterns":null},"MudBlazor.min.js":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"MudBlazor.min.js"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":null},"GottfriedsNackenWebseite.styles.css":{"Children":null,"Asset":{"ContentRootIndex":2,"SubPath":"GottfriedsNackenWebseite.styles.css"},"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":0,"Pattern":"**","Depth":0}]}}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,9 +0,0 @@
|
||||
{
|
||||
"DetailedErrors": true,
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,9 +0,0 @@
|
||||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
},
|
||||
"AllowedHosts": "*"
|
||||
}
|
||||
@ -1 +0,0 @@
|
||||
/app/bin/Debug/net6.0/GottfriedsNackenWebseite.dll
|
||||
@ -1 +0,0 @@
|
||||
--additionalProbingPath /root/.nuget/fallbackpackages
|
||||
@ -1 +0,0 @@
|
||||
Skipped
|
||||
@ -1 +0,0 @@
|
||||
Fast
|
||||
@ -1 +0,0 @@
|
||||
7e122aa9e8dde6f044f3f4f221027ed0ac5b750e9b43617c0c49dc1fd09ee07e
|
||||
@ -1 +0,0 @@
|
||||
GottfriedsNackenWebseite
|
||||
@ -1 +0,0 @@
|
||||
Unknown
|
||||
@ -1 +0,0 @@
|
||||
94H1R5Aep2wzd9q/3CrmWv6ZUzdlXB1CEk7WUwi5Bls=
|
||||
@ -1 +0,0 @@
|
||||
zKJ/WZY3g220YHM5bNaYPMqmDLxCCVXZVlZsKhWnsZw=
|
||||
@ -1 +0,0 @@
|
||||
sha256:75b6f8a6cd0551998773ec19750853913a5dffa3dc09b9e57be6f645fafd512f
|
||||
@ -1 +0,0 @@
|
||||
Linux
|
||||
@ -1 +0,0 @@
|
||||
DotNetCore
|
||||
@ -1 +0,0 @@
|
||||
{"D:\\Development\\Git\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite":"/src/","C:\\Users\\Simon\\.nuget\\packages\\":"/root/.nuget/fallbackpackages"}
|
||||
@ -1 +0,0 @@
|
||||
ID=.; if [ -e /etc/os-release ]; then . /etc/os-release; fi; if [ $ID = alpine ] && [ -e /remote_debugger/linux-musl-x64/vsdbg ]; then VSDBGPATH=/remote_debugger/linux-musl-x64; else VSDBGPATH=/remote_debugger; fi; $VSDBGPATH/vsdbg --interpreter=vscode
|
||||
@ -1,4 +0,0 @@
|
||||
// <autogenerated />
|
||||
using System;
|
||||
using System.Reflection;
|
||||
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName = "")]
|
||||
@ -1,24 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Reflection;
|
||||
|
||||
[assembly: Microsoft.Extensions.Configuration.UserSecrets.UserSecretsIdAttribute("c5e2b492-e35a-40f7-a290-9076aa64b35e")]
|
||||
[assembly: System.Reflection.AssemblyCompanyAttribute("GottfriedsNackenWebseite")]
|
||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("GottfriedsNackenWebseite")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("GottfriedsNackenWebseite")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
|
||||
// Generated by the MSBuild WriteCodeFragment class.
|
||||
|
||||
@ -1 +0,0 @@
|
||||
d38f8963fe89a77ac1d1cbe95f2c4249f98122c9
|
||||
@ -1,60 +0,0 @@
|
||||
is_global = true
|
||||
build_property.TargetFramework = net6.0
|
||||
build_property.TargetPlatformMinVersion =
|
||||
build_property.UsingMicrosoftNETSdkWeb = true
|
||||
build_property.ProjectTypeGuids =
|
||||
build_property.InvariantGlobalization =
|
||||
build_property.PlatformNeutralAssembly =
|
||||
build_property._SupportedPlatformList = Linux,macOS,Windows
|
||||
build_property.RootNamespace = GottfriedsNackenWebseite
|
||||
build_property.RootNamespace = GottfriedsNackenWebseite
|
||||
build_property.ProjectDir = D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\
|
||||
build_property.RazorLangVersion = 6.0
|
||||
build_property.SupportLocalizedComponentNames =
|
||||
build_property.GenerateRazorMetadataSourceChecksumAttributes =
|
||||
build_property.MSBuildProjectDirectory = D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite
|
||||
build_property._RazorSourceGeneratorDebug =
|
||||
|
||||
[D:/Development/Git/GottfriedsNackenWebseite/GottfriedsNackenWebseite/GottfriedsNackenWebseite/App.razor]
|
||||
build_metadata.AdditionalFiles.TargetPath = QXBwLnJhem9y
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
||||
[D:/Development/Git/GottfriedsNackenWebseite/GottfriedsNackenWebseite/GottfriedsNackenWebseite/Pages/Counter.razor]
|
||||
build_metadata.AdditionalFiles.TargetPath = UGFnZXNcQ291bnRlci5yYXpvcg==
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
||||
[D:/Development/Git/GottfriedsNackenWebseite/GottfriedsNackenWebseite/GottfriedsNackenWebseite/Pages/FetchData.razor]
|
||||
build_metadata.AdditionalFiles.TargetPath = UGFnZXNcRmV0Y2hEYXRhLnJhem9y
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
||||
[D:/Development/Git/GottfriedsNackenWebseite/GottfriedsNackenWebseite/GottfriedsNackenWebseite/Pages/Index.razor]
|
||||
build_metadata.AdditionalFiles.TargetPath = UGFnZXNcSW5kZXgucmF6b3I=
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
||||
[D:/Development/Git/GottfriedsNackenWebseite/GottfriedsNackenWebseite/GottfriedsNackenWebseite/Shared/SurveyPrompt.razor]
|
||||
build_metadata.AdditionalFiles.TargetPath = U2hhcmVkXFN1cnZleVByb21wdC5yYXpvcg==
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
||||
[D:/Development/Git/GottfriedsNackenWebseite/GottfriedsNackenWebseite/GottfriedsNackenWebseite/_Imports.razor]
|
||||
build_metadata.AdditionalFiles.TargetPath = X0ltcG9ydHMucmF6b3I=
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
||||
[D:/Development/Git/GottfriedsNackenWebseite/GottfriedsNackenWebseite/GottfriedsNackenWebseite/Shared/MainLayout.razor]
|
||||
build_metadata.AdditionalFiles.TargetPath = U2hhcmVkXE1haW5MYXlvdXQucmF6b3I=
|
||||
build_metadata.AdditionalFiles.CssScope = b-gqdahrvza0
|
||||
|
||||
[D:/Development/Git/GottfriedsNackenWebseite/GottfriedsNackenWebseite/GottfriedsNackenWebseite/Shared/NavMenu.razor]
|
||||
build_metadata.AdditionalFiles.TargetPath = U2hhcmVkXE5hdk1lbnUucmF6b3I=
|
||||
build_metadata.AdditionalFiles.CssScope = b-31q1khypux
|
||||
|
||||
[D:/Development/Git/GottfriedsNackenWebseite/GottfriedsNackenWebseite/GottfriedsNackenWebseite/Pages/Error.cshtml]
|
||||
build_metadata.AdditionalFiles.TargetPath = UGFnZXNcRXJyb3IuY3NodG1s
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
||||
[D:/Development/Git/GottfriedsNackenWebseite/GottfriedsNackenWebseite/GottfriedsNackenWebseite/Pages/_Host.cshtml]
|
||||
build_metadata.AdditionalFiles.TargetPath = UGFnZXNcX0hvc3QuY3NodG1s
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
||||
[D:/Development/Git/GottfriedsNackenWebseite/GottfriedsNackenWebseite/GottfriedsNackenWebseite/Pages/_Layout.cshtml]
|
||||
build_metadata.AdditionalFiles.TargetPath = UGFnZXNcX0xheW91dC5jc2h0bWw=
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
@ -1,17 +0,0 @@
|
||||
// <auto-generated/>
|
||||
global using global::Microsoft.AspNetCore.Builder;
|
||||
global using global::Microsoft.AspNetCore.Hosting;
|
||||
global using global::Microsoft.AspNetCore.Http;
|
||||
global using global::Microsoft.AspNetCore.Routing;
|
||||
global using global::Microsoft.Extensions.Configuration;
|
||||
global using global::Microsoft.Extensions.DependencyInjection;
|
||||
global using global::Microsoft.Extensions.Hosting;
|
||||
global using global::Microsoft.Extensions.Logging;
|
||||
global using global::System;
|
||||
global using global::System.Collections.Generic;
|
||||
global using global::System.IO;
|
||||
global using global::System.Linq;
|
||||
global using global::System.Net.Http;
|
||||
global using global::System.Net.Http.Json;
|
||||
global using global::System.Threading;
|
||||
global using global::System.Threading.Tasks;
|
||||
@ -1 +0,0 @@
|
||||
5860763757f4f08c7ebdea1b3a94a18109f17861
|
||||
@ -1,18 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Reflection;
|
||||
|
||||
[assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ProvideApplicationPartFactoryAttribute("Microsoft.AspNetCore.Mvc.ApplicationParts.ConsolidatedAssemblyApplicationPartFact" +
|
||||
"ory, Microsoft.AspNetCore.Mvc.Razor")]
|
||||
|
||||
// Generated by the MSBuild WriteCodeFragment class.
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@ -1 +0,0 @@
|
||||
5e00081e6f55722c455377fd1889506ad2eb921b
|
||||
@ -1,36 +0,0 @@
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\bin\Debug\net6.0\appsettings.Development.json
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\bin\Debug\net6.0\appsettings.json
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\bin\Debug\net6.0\GottfriedsNackenWebseite.staticwebassets.runtime.json
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\bin\Debug\net6.0\GottfriedsNackenWebseite.exe
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\bin\Debug\net6.0\GottfriedsNackenWebseite.deps.json
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\bin\Debug\net6.0\GottfriedsNackenWebseite.runtimeconfig.json
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\bin\Debug\net6.0\GottfriedsNackenWebseite.dll
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\bin\Debug\net6.0\GottfriedsNackenWebseite.pdb
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\obj\Debug\net6.0\GottfriedsNackenWebseite.csproj.AssemblyReference.cache
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\obj\Debug\net6.0\GottfriedsNackenWebseite.GeneratedMSBuildEditorConfig.editorconfig
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\obj\Debug\net6.0\GottfriedsNackenWebseite.AssemblyInfoInputs.cache
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\obj\Debug\net6.0\GottfriedsNackenWebseite.AssemblyInfo.cs
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\obj\Debug\net6.0\GottfriedsNackenWebseite.csproj.CoreCompileInputs.cache
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\obj\Debug\net6.0\GottfriedsNackenWebseite.MvcApplicationPartsAssemblyInfo.cache
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\obj\Debug\net6.0\GottfriedsNackenWebseite.RazorAssemblyInfo.cache
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\obj\Debug\net6.0\GottfriedsNackenWebseite.RazorAssemblyInfo.cs
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\obj\Debug\net6.0\staticwebassets.build.json
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\obj\Debug\net6.0\staticwebassets.development.json
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\obj\Debug\net6.0\scopedcss\Shared\MainLayout.razor.rz.scp.css
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\obj\Debug\net6.0\scopedcss\Shared\NavMenu.razor.rz.scp.css
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\obj\Debug\net6.0\scopedcss\bundle\GottfriedsNackenWebseite.styles.css
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\obj\Debug\net6.0\scopedcss\projectbundle\GottfriedsNackenWebseite.bundle.scp.css
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\obj\Debug\net6.0\GottfriedsNackenWebseite.dll
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\obj\Debug\net6.0\refint\GottfriedsNackenWebseite.dll
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\obj\Debug\net6.0\GottfriedsNackenWebseite.pdb
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\obj\Debug\net6.0\GottfriedsNackenWebseite.genruntimeconfig.cache
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\obj\Debug\net6.0\ref\GottfriedsNackenWebseite.dll
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\bin\Debug\net6.0\Microsoft.AspNetCore.Authorization.dll
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\bin\Debug\net6.0\Microsoft.AspNetCore.Components.dll
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\bin\Debug\net6.0\Microsoft.AspNetCore.Components.Forms.dll
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\bin\Debug\net6.0\Microsoft.AspNetCore.Components.Web.dll
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\bin\Debug\net6.0\Microsoft.AspNetCore.Metadata.dll
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\bin\Debug\net6.0\Microsoft.JSInterop.dll
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\bin\Debug\net6.0\MudBlazor.dll
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\bin\Debug\net6.0\System.IO.Pipelines.dll
|
||||
D:\Development\Git\GottfriedsNackenWebseite\GottfriedsNackenWebseite\GottfriedsNackenWebseite\obj\Debug\net6.0\GottfriedsNackenWebseite.csproj.CopyComplete
|
||||
Binary file not shown.
@ -1 +0,0 @@
|
||||
0895882d0e5188a53aa20c8ed1490d86b90832e5
|
||||
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
@ -1,70 +0,0 @@
|
||||
.page[b-gqdahrvza0] {
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
main[b-gqdahrvza0] {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.sidebar[b-gqdahrvza0] {
|
||||
background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%);
|
||||
}
|
||||
|
||||
.top-row[b-gqdahrvza0] {
|
||||
background-color: #f7f7f7;
|
||||
border-bottom: 1px solid #d6d5d5;
|
||||
justify-content: flex-end;
|
||||
height: 3.5rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.top-row[b-gqdahrvza0] a, .top-row .btn-link[b-gqdahrvza0] {
|
||||
white-space: nowrap;
|
||||
margin-left: 1.5rem;
|
||||
}
|
||||
|
||||
.top-row a:first-child[b-gqdahrvza0] {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
@media (max-width: 640.98px) {
|
||||
.top-row:not(.auth)[b-gqdahrvza0] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.top-row.auth[b-gqdahrvza0] {
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.top-row a[b-gqdahrvza0], .top-row .btn-link[b-gqdahrvza0] {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 641px) {
|
||||
.page[b-gqdahrvza0] {
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.sidebar[b-gqdahrvza0] {
|
||||
width: 250px;
|
||||
height: 100vh;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.top-row[b-gqdahrvza0] {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.top-row[b-gqdahrvza0], article[b-gqdahrvza0] {
|
||||
padding-left: 2rem !important;
|
||||
padding-right: 1.5rem !important;
|
||||
}
|
||||
}
|
||||
@ -1,62 +0,0 @@
|
||||
.navbar-toggler[b-31q1khypux] {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
.top-row[b-31q1khypux] {
|
||||
height: 3.5rem;
|
||||
background-color: rgba(0,0,0,0.4);
|
||||
}
|
||||
|
||||
.navbar-brand[b-31q1khypux] {
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
.oi[b-31q1khypux] {
|
||||
width: 2rem;
|
||||
font-size: 1.1rem;
|
||||
vertical-align: text-top;
|
||||
top: -2px;
|
||||
}
|
||||
|
||||
.nav-item[b-31q1khypux] {
|
||||
font-size: 0.9rem;
|
||||
padding-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.nav-item:first-of-type[b-31q1khypux] {
|
||||
padding-top: 1rem;
|
||||
}
|
||||
|
||||
.nav-item:last-of-type[b-31q1khypux] {
|
||||
padding-bottom: 1rem;
|
||||
}
|
||||
|
||||
.nav-item[b-31q1khypux] a {
|
||||
color: #d7d7d7;
|
||||
border-radius: 4px;
|
||||
height: 3rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
line-height: 3rem;
|
||||
}
|
||||
|
||||
.nav-item[b-31q1khypux] a.active {
|
||||
background-color: rgba(255,255,255,0.25);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.nav-item[b-31q1khypux] a:hover {
|
||||
background-color: rgba(255,255,255,0.1);
|
||||
color: white;
|
||||
}
|
||||
|
||||
@media (min-width: 641px) {
|
||||
.navbar-toggler[b-31q1khypux] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.collapse[b-31q1khypux] {
|
||||
/* Never collapse the sidebar for wide screens */
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
@ -1,134 +0,0 @@
|
||||
/* _content/GottfriedsNackenWebseite/Shared/MainLayout.razor.rz.scp.css */
|
||||
.page[b-gqdahrvza0] {
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
main[b-gqdahrvza0] {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.sidebar[b-gqdahrvza0] {
|
||||
background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%);
|
||||
}
|
||||
|
||||
.top-row[b-gqdahrvza0] {
|
||||
background-color: #f7f7f7;
|
||||
border-bottom: 1px solid #d6d5d5;
|
||||
justify-content: flex-end;
|
||||
height: 3.5rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.top-row[b-gqdahrvza0] a, .top-row .btn-link[b-gqdahrvza0] {
|
||||
white-space: nowrap;
|
||||
margin-left: 1.5rem;
|
||||
}
|
||||
|
||||
.top-row a:first-child[b-gqdahrvza0] {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
@media (max-width: 640.98px) {
|
||||
.top-row:not(.auth)[b-gqdahrvza0] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.top-row.auth[b-gqdahrvza0] {
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.top-row a[b-gqdahrvza0], .top-row .btn-link[b-gqdahrvza0] {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 641px) {
|
||||
.page[b-gqdahrvza0] {
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.sidebar[b-gqdahrvza0] {
|
||||
width: 250px;
|
||||
height: 100vh;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.top-row[b-gqdahrvza0] {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.top-row[b-gqdahrvza0], article[b-gqdahrvza0] {
|
||||
padding-left: 2rem !important;
|
||||
padding-right: 1.5rem !important;
|
||||
}
|
||||
}
|
||||
/* _content/GottfriedsNackenWebseite/Shared/NavMenu.razor.rz.scp.css */
|
||||
.navbar-toggler[b-31q1khypux] {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
.top-row[b-31q1khypux] {
|
||||
height: 3.5rem;
|
||||
background-color: rgba(0,0,0,0.4);
|
||||
}
|
||||
|
||||
.navbar-brand[b-31q1khypux] {
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
.oi[b-31q1khypux] {
|
||||
width: 2rem;
|
||||
font-size: 1.1rem;
|
||||
vertical-align: text-top;
|
||||
top: -2px;
|
||||
}
|
||||
|
||||
.nav-item[b-31q1khypux] {
|
||||
font-size: 0.9rem;
|
||||
padding-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.nav-item:first-of-type[b-31q1khypux] {
|
||||
padding-top: 1rem;
|
||||
}
|
||||
|
||||
.nav-item:last-of-type[b-31q1khypux] {
|
||||
padding-bottom: 1rem;
|
||||
}
|
||||
|
||||
.nav-item[b-31q1khypux] a {
|
||||
color: #d7d7d7;
|
||||
border-radius: 4px;
|
||||
height: 3rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
line-height: 3rem;
|
||||
}
|
||||
|
||||
.nav-item[b-31q1khypux] a.active {
|
||||
background-color: rgba(255,255,255,0.25);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.nav-item[b-31q1khypux] a:hover {
|
||||
background-color: rgba(255,255,255,0.1);
|
||||
color: white;
|
||||
}
|
||||
|
||||
@media (min-width: 641px) {
|
||||
.navbar-toggler[b-31q1khypux] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.collapse[b-31q1khypux] {
|
||||
/* Never collapse the sidebar for wide screens */
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
@ -1,134 +0,0 @@
|
||||
/* _content/GottfriedsNackenWebseite/Shared/MainLayout.razor.rz.scp.css */
|
||||
.page[b-gqdahrvza0] {
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
main[b-gqdahrvza0] {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.sidebar[b-gqdahrvza0] {
|
||||
background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%);
|
||||
}
|
||||
|
||||
.top-row[b-gqdahrvza0] {
|
||||
background-color: #f7f7f7;
|
||||
border-bottom: 1px solid #d6d5d5;
|
||||
justify-content: flex-end;
|
||||
height: 3.5rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.top-row[b-gqdahrvza0] a, .top-row .btn-link[b-gqdahrvza0] {
|
||||
white-space: nowrap;
|
||||
margin-left: 1.5rem;
|
||||
}
|
||||
|
||||
.top-row a:first-child[b-gqdahrvza0] {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
@media (max-width: 640.98px) {
|
||||
.top-row:not(.auth)[b-gqdahrvza0] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.top-row.auth[b-gqdahrvza0] {
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.top-row a[b-gqdahrvza0], .top-row .btn-link[b-gqdahrvza0] {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 641px) {
|
||||
.page[b-gqdahrvza0] {
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.sidebar[b-gqdahrvza0] {
|
||||
width: 250px;
|
||||
height: 100vh;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.top-row[b-gqdahrvza0] {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.top-row[b-gqdahrvza0], article[b-gqdahrvza0] {
|
||||
padding-left: 2rem !important;
|
||||
padding-right: 1.5rem !important;
|
||||
}
|
||||
}
|
||||
/* _content/GottfriedsNackenWebseite/Shared/NavMenu.razor.rz.scp.css */
|
||||
.navbar-toggler[b-31q1khypux] {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
.top-row[b-31q1khypux] {
|
||||
height: 3.5rem;
|
||||
background-color: rgba(0,0,0,0.4);
|
||||
}
|
||||
|
||||
.navbar-brand[b-31q1khypux] {
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
.oi[b-31q1khypux] {
|
||||
width: 2rem;
|
||||
font-size: 1.1rem;
|
||||
vertical-align: text-top;
|
||||
top: -2px;
|
||||
}
|
||||
|
||||
.nav-item[b-31q1khypux] {
|
||||
font-size: 0.9rem;
|
||||
padding-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.nav-item:first-of-type[b-31q1khypux] {
|
||||
padding-top: 1rem;
|
||||
}
|
||||
|
||||
.nav-item:last-of-type[b-31q1khypux] {
|
||||
padding-bottom: 1rem;
|
||||
}
|
||||
|
||||
.nav-item[b-31q1khypux] a {
|
||||
color: #d7d7d7;
|
||||
border-radius: 4px;
|
||||
height: 3rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
line-height: 3rem;
|
||||
}
|
||||
|
||||
.nav-item[b-31q1khypux] a.active {
|
||||
background-color: rgba(255,255,255,0.25);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.nav-item[b-31q1khypux] a:hover {
|
||||
background-color: rgba(255,255,255,0.1);
|
||||
color: white;
|
||||
}
|
||||
|
||||
@media (min-width: 641px) {
|
||||
.navbar-toggler[b-31q1khypux] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.collapse[b-31q1khypux] {
|
||||
/* Never collapse the sidebar for wide screens */
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
@ -1,139 +0,0 @@
|
||||
{
|
||||
"Version": 1,
|
||||
"Hash": "1YRPa6M3x7IGRU5VKhtwunHOBRGQ4hg23mVSW7w7LWo=",
|
||||
"Source": "GottfriedsNackenWebseite",
|
||||
"BasePath": "_content/GottfriedsNackenWebseite",
|
||||
"Mode": "Default",
|
||||
"ManifestType": "Build",
|
||||
"ReferencedProjectsConfiguration": [],
|
||||
"DiscoveryPatterns": [
|
||||
{
|
||||
"Name": "GottfriedsNackenWebseite\\wwwroot",
|
||||
"Source": "GottfriedsNackenWebseite",
|
||||
"ContentRoot": "D:\\Development\\Git\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\wwwroot\\",
|
||||
"BasePath": "_content/GottfriedsNackenWebseite",
|
||||
"Pattern": "**"
|
||||
}
|
||||
],
|
||||
"Assets": [
|
||||
{
|
||||
"Identity": "C:\\Users\\Simon\\.nuget\\packages\\mudblazor\\6.0.7\\staticwebassets\\MudBlazor.min.css",
|
||||
"SourceId": "MudBlazor",
|
||||
"SourceType": "Package",
|
||||
"ContentRoot": "C:\\Users\\Simon\\.nuget\\packages\\mudblazor\\6.0.7\\staticwebassets\\",
|
||||
"BasePath": "_content/MudBlazor",
|
||||
"RelativePath": "MudBlazor.min.css",
|
||||
"AssetKind": "All",
|
||||
"AssetMode": "All",
|
||||
"AssetRole": "Primary",
|
||||
"RelatedAsset": "",
|
||||
"AssetTraitName": "",
|
||||
"AssetTraitValue": "",
|
||||
"CopyToOutputDirectory": "Never",
|
||||
"CopyToPublishDirectory": "PreserveNewest",
|
||||
"OriginalItemSpec": "C:\\Users\\Simon\\.nuget\\packages\\mudblazor\\6.0.7\\staticwebassets\\MudBlazor.min.css"
|
||||
},
|
||||
{
|
||||
"Identity": "C:\\Users\\Simon\\.nuget\\packages\\mudblazor\\6.0.7\\staticwebassets\\MudBlazor.min.js",
|
||||
"SourceId": "MudBlazor",
|
||||
"SourceType": "Package",
|
||||
"ContentRoot": "C:\\Users\\Simon\\.nuget\\packages\\mudblazor\\6.0.7\\staticwebassets\\",
|
||||
"BasePath": "_content/MudBlazor",
|
||||
"RelativePath": "MudBlazor.min.js",
|
||||
"AssetKind": "All",
|
||||
"AssetMode": "All",
|
||||
"AssetRole": "Primary",
|
||||
"RelatedAsset": "",
|
||||
"AssetTraitName": "",
|
||||
"AssetTraitValue": "",
|
||||
"CopyToOutputDirectory": "Never",
|
||||
"CopyToPublishDirectory": "PreserveNewest",
|
||||
"OriginalItemSpec": "C:\\Users\\Simon\\.nuget\\packages\\mudblazor\\6.0.7\\staticwebassets\\MudBlazor.min.js"
|
||||
},
|
||||
{
|
||||
"Identity": "D:\\Development\\Git\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\obj\\Debug\\net6.0\\scopedcss\\bundle\\GottfriedsNackenWebseite.styles.css",
|
||||
"SourceId": "GottfriedsNackenWebseite",
|
||||
"SourceType": "Computed",
|
||||
"ContentRoot": "D:\\Development\\Git\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\obj\\Debug\\net6.0\\scopedcss\\bundle\\",
|
||||
"BasePath": "_content/GottfriedsNackenWebseite",
|
||||
"RelativePath": "GottfriedsNackenWebseite.styles.css",
|
||||
"AssetKind": "All",
|
||||
"AssetMode": "CurrentProject",
|
||||
"AssetRole": "Primary",
|
||||
"RelatedAsset": "",
|
||||
"AssetTraitName": "ScopedCss",
|
||||
"AssetTraitValue": "ApplicationBundle",
|
||||
"CopyToOutputDirectory": "Never",
|
||||
"CopyToPublishDirectory": "PreserveNewest",
|
||||
"OriginalItemSpec": "D:\\Development\\Git\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\obj\\Debug\\net6.0\\scopedcss\\bundle\\GottfriedsNackenWebseite.styles.css"
|
||||
},
|
||||
{
|
||||
"Identity": "D:\\Development\\Git\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\obj\\Debug\\net6.0\\scopedcss\\projectbundle\\GottfriedsNackenWebseite.bundle.scp.css",
|
||||
"SourceId": "GottfriedsNackenWebseite",
|
||||
"SourceType": "Computed",
|
||||
"ContentRoot": "D:\\Development\\Git\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\obj\\Debug\\net6.0\\scopedcss\\projectbundle\\",
|
||||
"BasePath": "_content/GottfriedsNackenWebseite",
|
||||
"RelativePath": "GottfriedsNackenWebseite.bundle.scp.css",
|
||||
"AssetKind": "All",
|
||||
"AssetMode": "Reference",
|
||||
"AssetRole": "Primary",
|
||||
"RelatedAsset": "",
|
||||
"AssetTraitName": "ScopedCss",
|
||||
"AssetTraitValue": "ProjectBundle",
|
||||
"CopyToOutputDirectory": "Never",
|
||||
"CopyToPublishDirectory": "PreserveNewest",
|
||||
"OriginalItemSpec": "D:\\Development\\Git\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\obj\\Debug\\net6.0\\scopedcss\\projectbundle\\GottfriedsNackenWebseite.bundle.scp.css"
|
||||
},
|
||||
{
|
||||
"Identity": "D:\\Development\\Git\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\wwwroot\\css\\site.css",
|
||||
"SourceId": "GottfriedsNackenWebseite",
|
||||
"SourceType": "Discovered",
|
||||
"ContentRoot": "D:\\Development\\Git\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\wwwroot\\",
|
||||
"BasePath": "_content/GottfriedsNackenWebseite",
|
||||
"RelativePath": "css/site.css",
|
||||
"AssetKind": "All",
|
||||
"AssetMode": "All",
|
||||
"AssetRole": "Primary",
|
||||
"RelatedAsset": "",
|
||||
"AssetTraitName": "",
|
||||
"AssetTraitValue": "",
|
||||
"CopyToOutputDirectory": "Never",
|
||||
"CopyToPublishDirectory": "PreserveNewest",
|
||||
"OriginalItemSpec": "wwwroot\\css\\site.css"
|
||||
},
|
||||
{
|
||||
"Identity": "D:\\Development\\Git\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\wwwroot\\favicon.ico",
|
||||
"SourceId": "GottfriedsNackenWebseite",
|
||||
"SourceType": "Discovered",
|
||||
"ContentRoot": "D:\\Development\\Git\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\wwwroot\\",
|
||||
"BasePath": "_content/GottfriedsNackenWebseite",
|
||||
"RelativePath": "favicon.ico",
|
||||
"AssetKind": "All",
|
||||
"AssetMode": "All",
|
||||
"AssetRole": "Primary",
|
||||
"RelatedAsset": "",
|
||||
"AssetTraitName": "",
|
||||
"AssetTraitValue": "",
|
||||
"CopyToOutputDirectory": "Never",
|
||||
"CopyToPublishDirectory": "PreserveNewest",
|
||||
"OriginalItemSpec": "wwwroot\\favicon.ico"
|
||||
},
|
||||
{
|
||||
"Identity": "D:\\Development\\Git\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\wwwroot\\images\\gitea_icon.svg",
|
||||
"SourceId": "GottfriedsNackenWebseite",
|
||||
"SourceType": "Discovered",
|
||||
"ContentRoot": "D:\\Development\\Git\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\wwwroot\\",
|
||||
"BasePath": "_content/GottfriedsNackenWebseite",
|
||||
"RelativePath": "images/gitea_icon.svg",
|
||||
"AssetKind": "All",
|
||||
"AssetMode": "All",
|
||||
"AssetRole": "Primary",
|
||||
"RelatedAsset": "",
|
||||
"AssetTraitName": "",
|
||||
"AssetTraitValue": "",
|
||||
"CopyToOutputDirectory": "Never",
|
||||
"CopyToPublishDirectory": "PreserveNewest",
|
||||
"OriginalItemSpec": "wwwroot\\images\\gitea_icon.svg"
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -1 +0,0 @@
|
||||
{"ContentRoots":["D:\\Development\\Git\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\wwwroot\\","C:\\Users\\Simon\\.nuget\\packages\\mudblazor\\6.0.7\\staticwebassets\\","D:\\Development\\Git\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\GottfriedsNackenWebseite\\obj\\Debug\\net6.0\\scopedcss\\bundle\\"],"Root":{"Children":{"css":{"Children":{"site.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"css/site.css"},"Patterns":null}},"Asset":null,"Patterns":null},"favicon.ico":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"favicon.ico"},"Patterns":null},"images":{"Children":{"gitea_icon.svg":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"images/gitea_icon.svg"},"Patterns":null}},"Asset":null,"Patterns":null},"_content":{"Children":{"MudBlazor":{"Children":{"MudBlazor.min.css":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"MudBlazor.min.css"},"Patterns":null},"MudBlazor.min.js":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"MudBlazor.min.js"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":null},"GottfriedsNackenWebseite.styles.css":{"Children":null,"Asset":{"ContentRootIndex":2,"SubPath":"GottfriedsNackenWebseite.styles.css"},"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":0,"Pattern":"**","Depth":0}]}}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user