Compare commits

...

2 Commits

Author SHA1 Message Date
Tomasi - Developing
463f526fe7 v1.1.0 2026-02-09 13:49:42 +01:00
Tomasi - Developing
1a4550cdc1 Drectory Build and Packages 2026-02-02 15:41:03 +01:00
9 changed files with 155 additions and 40 deletions

View File

@ -7,22 +7,22 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Asp.Versioning.Mvc" Version="8.1.0" /> <PackageReference Include="Asp.Versioning.Mvc" />
<PackageReference Include="AspNetCore.HealthChecks.SqlServer" Version="9.0.0" /> <PackageReference Include="AspNetCore.HealthChecks.SqlServer" />
<PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="9.0.0" /> <PackageReference Include="AspNetCore.HealthChecks.UI.Client" />
<PackageReference Include="Azure.Identity" Version="1.13.2" /> <PackageReference Include="Azure.Identity" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.4" /> <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.4"> <PackageReference Include="Microsoft.EntityFrameworkCore.Design">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>
<PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore" Version="9.0.4" /> <PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore" />
<PackageReference Include="Octokit" Version="14.0.0" /> <PackageReference Include="Octokit" />
<PackageReference Include="Serilog" Version="4.2.0" /> <PackageReference Include="Serilog" />
<PackageReference Include="Serilog.AspNetCore" Version="9.0.0" /> <PackageReference Include="Serilog.AspNetCore" />
<PackageReference Include="Serilog.Sinks.Seq" Version="9.0.0" /> <PackageReference Include="Serilog.Sinks.Seq" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="8.1.1" /> <PackageReference Include="Swashbuckle.AspNetCore" />
<PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="8.1.1" /> <PackageReference Include="Swashbuckle.AspNetCore.Annotations" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -17,11 +17,11 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="AutoMapper" Version="14.0.0" /> <PackageReference Include="AutoMapper" />
<PackageReference Include="ExcelDataReader" Version="3.7.0" /> <PackageReference Include="ExcelDataReader" />
<PackageReference Include="ExcelDataReader.DataSet" Version="3.7.0" /> <PackageReference Include="ExcelDataReader.DataSet" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.4" /> <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" />
<PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="8.1.1" /> <PackageReference Include="Swashbuckle.AspNetCore.Annotations" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -7,12 +7,12 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.DataProtection" Version="9.0.4" /> <PackageReference Include="Microsoft.AspNetCore.DataProtection" />
<PackageReference Include="Microsoft.AspNetCore.Identity" Version="2.3.1" /> <PackageReference Include="Microsoft.AspNetCore.Identity" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="9.0.4" /> <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.4" /> <PackageReference Include="Microsoft.EntityFrameworkCore" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.4" /> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.4"> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>

7
Directory.Build.props Normal file
View File

@ -0,0 +1,7 @@
<Project>
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
</Project>

39
Directory.Packages.props Normal file
View File

@ -0,0 +1,39 @@
<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="MailKit" Version="4.11.0" />
<PackageVersion Include="Microsoft.AspNetCore.Http.Features" Version="5.0.17" />
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.4" />
<PackageVersion Include="Microsoft.Extensions.Options" Version="9.0.4" />
<PackageVersion Include="Octokit" Version="14.0.0" />
<PackageVersion Include="Microsoft.AspNetCore.DataProtection" Version="9.0.4" />
<PackageVersion Include="Microsoft.AspNetCore.Identity" Version="2.3.1" />
<PackageVersion Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="9.0.4" />
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="9.0.4" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.4" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.4" />
<PackageVersion Include="AutoMapper" Version="14.0.0" />
<PackageVersion Include="ExcelDataReader" Version="3.7.0" />
<PackageVersion Include="ExcelDataReader.DataSet" Version="3.7.0" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.4" />
<PackageVersion Include="Swashbuckle.AspNetCore.Annotations" Version="8.1.1" />
<PackageVersion Include="Asp.Versioning.Mvc" Version="8.1.0" />
<PackageVersion Include="AspNetCore.HealthChecks.SqlServer" Version="9.0.0" />
<PackageVersion Include="AspNetCore.HealthChecks.UI.Client" Version="9.0.0" />
<PackageVersion Include="Azure.Identity" Version="1.13.2" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.4" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.4" />
<PackageVersion Include="Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore" Version="9.0.4" />
<PackageVersion Include="Serilog" Version="4.2.0" />
<PackageVersion Include="Serilog.AspNetCore" Version="9.0.0" />
<PackageVersion Include="Serilog.Sinks.Seq" Version="9.0.0" />
<PackageVersion Include="Swashbuckle.AspNetCore" Version="8.1.1" />
</ItemGroup>
</Project>

View File

@ -25,6 +25,17 @@ All beta versions (0.x.x) can be found here →
--- ---
### **[1.1.0]** *2026-02-09* 🚀
#### ✨ Added
- **Desert Storm Player Sorting in Info Dialog**
Players can now be **sorted directly** in the **Desert Storm info dialog**:
- Participated
- Start Player Did not participate
- Substitute Player Did not participate
This makes it easier to **track participation** and quickly see who was active and who missed Desert Storm.
### **[1.0.1]** *2026-02-02* 🎉 ### **[1.0.1]** *2026-02-02* 🎉
#### ✨ Added #### ✨ Added
- **Zombie Siege Perfect Checkbox** - **Zombie Siege Perfect Checkbox**

View File

@ -16,29 +16,61 @@
</h5> </h5>
<div class="card-body"> <div class="card-body">
<h5 class="card-title">Opponent: <span class="text-primary">{{desertStormDetail.opponentName}}</span></h5> <h5 class="card-title">Opponent: <span class="text-primary">{{desertStormDetail.opponentName}}</span></h5>
<p class="card-text">Team: <span class="text-primary">{{desertStormDetail.team}}</span></p> <p class="card-text mb-1">Team: <span class="text-primary">{{desertStormDetail.team}}</span></p>
<p class="card-text">Server: <span class="text-primary">{{desertStormDetail.opponentServer}}</span></p> <p class="card-text mb-1">Server: <span class="text-primary">{{desertStormDetail.opponentServer}}</span></p>
<p class="card-text">Opponent participants: <span class="text-primary">{{desertStormDetail.opposingParticipants}}</span></p> <p class="card-text mb-1">Opponent participants: <span class="text-primary">{{desertStormDetail.opposingParticipants}}</span></p>
<p class="card-text">Allianz participants: <span class="text-primary">{{desertStormDetail.participants | number}}</span></p> <p class="card-text mb-1">Allianz participants: <span class="text-primary">{{desertStormDetail.participants | number}}</span></p>
<hr> <hr>
<div> <div>
<p class="card-text">Creator: <span class="text-primary">{{desertStormDetail.createdBy}}</span></p> <p class="card-text mb-1">Creator: <span class="text-primary">{{desertStormDetail.createdBy}}</span></p>
@if (desertStormDetail.modifiedOn) { @if (desertStormDetail.modifiedOn) {
<p class="card-text">Modified: <span class="text-primary">{{desertStormDetail.modifiedOn | date: 'dd.MM.yyyy HH:mm'}}</span> <p class="card-text mb-1">Modified: <span class="text-primary">{{desertStormDetail.modifiedOn | date: 'dd.MM.yyyy HH:mm'}}</span>
by <span class="text-primary">{{desertStormDetail.modifiedBy}}</span></p> by <span class="text-primary">{{desertStormDetail.modifiedBy}}</span></p>
} }
</div> </div>
<hr> <hr>
<div class="d-flex justify-content-between"> <div class="d-flex justify-content-between">
<p>Registered: <span class="text-primary">{{registeredPlayers}}</span></p> <p class="mb-1">Registered: <span class="text-primary">{{registeredPlayers}}</span></p>
<p>Start player: <span class="text-primary">{{startedPlayers}}</span></p> <p class="mb-1">Start player: <span class="text-primary">{{startedPlayers}}</span></p>
<p>Participated: <span class="text-primary">{{participatedPlayers}}</span></p> <p class="mb-1">Participated: <span class="text-primary">{{participatedPlayers}}</span></p>
</div> </div>
<hr> <hr>
<p class="card-text text-center">Players</p> <p class="card-text text-center mb-1">Players</p>
<div class="d-flex justify-content-center gap-2 mb-3 flex-wrap">
<button type="button"
class="btn btn-sm rounded-pill px-3"
[ngClass]="filterType === 'ALL' ? 'btn-dark' : 'btn-outline-dark'"
(click)="filterType='ALL'">
All
</button>
<button type="button"
class="btn btn-sm rounded-pill px-3"
[ngClass]="filterType === 'PARTICIPATED' ? 'btn-success' : 'btn-outline-success'"
(click)="filterType='PARTICIPATED'">
Participated
</button>
<button type="button"
class="btn btn-sm rounded-pill px-3"
[ngClass]="filterType === 'START_NOT_PARTICIPATED' ? 'btn-danger' : 'btn-outline-danger'"
(click)="filterType='START_NOT_PARTICIPATED'">
Starter · Not participated
</button>
<button type="button"
class="btn btn-sm rounded-pill px-3"
[ngClass]="filterType === 'SUB_NOT_PARTICIPATED' ? 'btn-warning' : 'btn-outline-warning'"
(click)="filterType='SUB_NOT_PARTICIPATED'">
Substitute · Not participated
</button>
</div>
<div ngbScrollSpy class="bg-light p-3 rounded-2 mb-3" style="height: 200px"> <div ngbScrollSpy class="bg-light p-3 rounded-2 mb-3" style="height: 200px">
<div class="row"> <div class="row">
@for (player of desertStormDetail.desertStormParticipants; track player.id; let i = $index) { @for (player of filteredPlayers; track player.id; let i = $index) {
@if (player.registered) { @if (player.registered) {
<div class="col-12 col-md-6 mb-4"> <div class="col-12 col-md-6 mb-4">
<div class="d-flex flex-column align-items-center border p-3" <div class="d-flex flex-column align-items-center border p-3"

View File

@ -18,6 +18,32 @@ export class DesertStormDetailComponent implements OnInit {
public registeredPlayers: number = 0; public registeredPlayers: number = 0;
public participatedPlayers: number = 0; public participatedPlayers: number = 0;
public startedPlayers: number = 0; public startedPlayers: number = 0;
filterType: 'ALL' | 'PARTICIPATED' | 'START_NOT_PARTICIPATED' | 'SUB_NOT_PARTICIPATED' = 'ALL';
get filteredPlayers() {
if (this.desertStormDetail?.desertStormParticipants) {
return this.desertStormDetail.desertStormParticipants.filter(player => {
if (!player.registered) return false;
switch (this.filterType) {
case 'PARTICIPATED':
return player.participated;
case 'START_NOT_PARTICIPATED':
return player.startPlayer && !player.participated;
case 'SUB_NOT_PARTICIPATED':
return !player.startPlayer && !player.participated;
default:
return true;
}
});
}
return [];
}
ngOnInit() { ngOnInit() {

View File

@ -11,11 +11,11 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="MailKit" Version="4.11.0" /> <PackageReference Include="MailKit" />
<PackageReference Include="Microsoft.AspNetCore.Http.Features" Version="5.0.17" /> <PackageReference Include="Microsoft.AspNetCore.Http.Features" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.4" /> <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" />
<PackageReference Include="Microsoft.Extensions.Options" Version="9.0.4" /> <PackageReference Include="Microsoft.Extensions.Options" />
<PackageReference Include="Octokit" Version="14.0.0" /> <PackageReference Include="Octokit" />
</ItemGroup> </ItemGroup>
</Project> </Project>