4 Commits

Author SHA1 Message Date
Penry 9204fed54c fix: #72 fixed that the height of the PrivateEntityCard.razor changes when don't having all dropdown menues (#74)
Build Docker Linux ARM64 / build-docker-linux-arm64 (push) Successful in 1m25s
Build Docker Linux ARM64 Release / build-docker-linux-arm64-release (push) Successful in 25s
Reviewed-on: #74
2026-06-12 20:48:42 +02:00
Penry 406d0f5652 fix: #60 fixed that the Global or Private Entity Card Title chnages height of the Card (#73)
Build Docker Linux ARM64 / build-docker-linux-arm64 (push) Successful in 2m54s
Reviewed-on: #73
2026-06-12 20:05:05 +02:00
Penry 9cd651bdfe Fixed GlobalEntity Problems and removed Season and Episode on Movie Entitys (#70)
Build Docker Linux ARM64 / build-docker-linux-arm64 (push) Successful in 1m22s
Reviewed-on: #70
Fixed Issue #63
Fixed Issue #68
Fixed Issue #69
2026-06-07 22:02:10 +02:00
Penry 96336fd637 Fixed Workflow Syntax (#67)
Build Docker Linux ARM64 / build-docker-linux-arm64 (push) Successful in 38s
Reviewed-on: #67
2026-06-07 21:21:30 +02:00
4 changed files with 58 additions and 50 deletions
@@ -5,7 +5,7 @@
<MudCardMedia Image="@GlobalEntity.PicturePath" Height="400" Style="object-fit: contain;"/> <MudCardMedia Image="@GlobalEntity.PicturePath" Height="400" Style="object-fit: contain;"/>
</MudPaper> </MudPaper>
<MudCardContent> <MudCardContent>
<MudText Typo="Typo.h5">@GlobalEntity.Title</MudText> <MudText Typo="Typo.h5" Style="overflow: hidden; text-overflow: ellipsis; white-space: nowrap;">@GlobalEntity.Title</MudText>
</MudCardContent> </MudCardContent>
<MudCardActions> <MudCardActions>
<MudTooltip Text="Add to shared List"> <MudTooltip Text="Add to shared List">
@@ -120,6 +120,9 @@
//Picture //Picture
private IBrowserFile? _pictureFile; private IBrowserFile? _pictureFile;
private string _pictureBase64;
private string? _pictureContentType;
private string? _pictureExtension;
private class GlobalEntityFormModel private class GlobalEntityFormModel
{ {
@@ -165,8 +168,11 @@
using var ms = new MemoryStream(); using var ms = new MemoryStream();
await stream.CopyToAsync(ms); await stream.CopyToAsync(ms);
var base64 = Convert.ToBase64String(ms.ToArray()); _pictureContentType = _pictureFile.ContentType;
_imagePreview = $"data:{_pictureFile.ContentType};base64,{base64}"; _pictureExtension = Path.GetExtension(_pictureFile.Name);
_pictureBase64 = Convert.ToBase64String(ms.ToArray());
_imagePreview = $"data:{_pictureFile.ContentType};base64,{_pictureBase64}";
} }
private void Cancel() => MudDialog.Cancel(); private void Cancel() => MudDialog.Cancel();
@@ -191,13 +197,10 @@
try try
{ {
string fileName = $"{Guid.NewGuid()}{Path.GetExtension(_pictureFile.Name)}"; string fileName = $"{Guid.NewGuid()}{_pictureExtension}";
string picturePath = Path.Combine("wwwroot", "Pictures", fileName); string picturePath = Path.Combine("wwwroot", "Pictures", fileName);
await using (var fs = File.Create(picturePath)) await File.WriteAllBytesAsync(picturePath, Convert.FromBase64String(_pictureBase64));
{
await _pictureFile.OpenReadStream(maxAllowedSize: 10_000_000).CopyToAsync(fs);
}
var entity = new GlobalEntity var entity = new GlobalEntity
{ {
@@ -151,7 +151,7 @@
private async Task OnNewEntity(GlobalEntity entity) private async Task OnNewEntity(GlobalEntity entity)
{ {
_globalEntities.Add(entity); _globalEntities.Insert(0, entity);
await RefreshPage(); await RefreshPage();
} }
@@ -17,7 +17,7 @@
<MudStack Class="pa-3" Spacing="2"> <MudStack Class="pa-3" Spacing="2">
<!--<editor-fold desc="Options">--> <!--<editor-fold desc="Options">-->
<MudStack Row="true" AlignItems="AlignItems.Center" Justify="Justify.SpaceBetween"> <MudStack Row="true" AlignItems="AlignItems.Center" Justify="Justify.SpaceBetween">
<MudText Typo="Typo.h6">@PrivateEntity.GlobalEntity.Title</MudText> <MudText Typo="Typo.h6" Style="overflow: hidden; text-overflow: ellipsis; white-space: nowrap">@PrivateEntity.GlobalEntity.Title</MudText>
<MudMenu Icon="@Icons.Material.Filled.MoreVert" Color="Color.Default" Dense="true"> <MudMenu Icon="@Icons.Material.Filled.MoreVert" Color="Color.Default" Dense="true">
<MudMenuItem>Edit</MudMenuItem> <MudMenuItem>Edit</MudMenuItem>
<MudMenuItem OnClick="@(() => OnRemove.InvokeAsync())">Remove</MudMenuItem> <MudMenuItem OnClick="@(() => OnRemove.InvokeAsync())">Remove</MudMenuItem>
@@ -40,45 +40,50 @@
</MudSelect> </MudSelect>
<!--</editor-fold>--> <!--</editor-fold>-->
<!--<editor-fold desc="Dropdown-Season">--> <!-- @if (PrivateEntity.GlobalEntity.MediaType.Name == "Series" || PrivateEntity.GlobalEntity.MediaType.Name == "Anime") -->
<MudSelect <!--{-->
T="int?" <!--<editor-fold desc="Dropdown-Season">-->
Value="PrivateEntity.Season" <MudSelect
ValueChanged="@(newSeason => OnSeasonChange.InvokeAsync(newSeason))" T="int?"
Dense="true" Value="PrivateEntity.Season"
Variant="Variant.Outlined" ValueChanged="@(newSeason => OnSeasonChange.InvokeAsync(newSeason))"
Label=""> Dense="true"
@{ Variant="Variant.Outlined"
int? currentSeason = PrivateEntity.Season ?? 1; Label=""
int? startOffsetSeason = currentSeason > 1 ? -1 : 0; Class="@(PrivateEntity.GlobalEntity.MediaType.Name == "Series" ? "" : "invisible")">
} @{
@for (int? i = startOffsetSeason; i <= 5; i++) int? currentSeason = PrivateEntity.Season ?? 1;
{ int? startOffsetSeason = currentSeason > 1 ? -1 : 0;
int? season = currentSeason + i; }
<MudSelectItem Value="@season">Staffel @season</MudSelectItem> @for (int? i = startOffsetSeason; i <= 5; i++)
} {
</MudSelect> int? season = currentSeason + i;
<!--</editor-fold>--> <MudSelectItem Value="@season">Staffel @season</MudSelectItem>
}
</MudSelect>
<!--</editor-fold>-->
<!--<editor-fold desc="Dropdown-Episode">--> <!--<editor-fold desc="Dropdown-Episode">-->
<MudSelect <MudSelect
T="int?" T="int?"
Value="PrivateEntity.Episode" Value="PrivateEntity.Episode"
ValueChanged="@(newEpisode => OnEpisodeChange.InvokeAsync(newEpisode))" ValueChanged="@(newEpisode => OnEpisodeChange.InvokeAsync(newEpisode))"
Dense="true" Dense="true"
Variant="Variant.Outlined" Variant="Variant.Outlined"
Label=""> Label=""
@{ Class="@(PrivateEntity.GlobalEntity.MediaType.Name == "Series" ? "" : "invisible")">
int? currentEpisode = PrivateEntity.Episode ?? 1; @{
int? startOffsetEpisode = currentEpisode > 1 ? -1 : 0; int? currentEpisode = PrivateEntity.Episode ?? 1;
} int? startOffsetEpisode = currentEpisode > 1 ? -1 : 0;
@for (int? i = startOffsetEpisode; i <= 5; i++) }
{ @for (int? i = startOffsetEpisode; i <= 5; i++)
int? episode = currentEpisode + i; {
<MudSelectItem Value="@episode">Episode @episode</MudSelectItem> int? episode = currentEpisode + i;
} <MudSelectItem Value="@episode">Episode @episode</MudSelectItem>
</MudSelect> }
<!--</editor-fold>--> </MudSelect>
<!--</editor-fold>-->
<!--}-->
<!--<editor-fold desc="Details Button">--> <!--<editor-fold desc="Details Button">-->
<MudStack Row="true" Justify="Justify.FlexEnd"> <MudStack Row="true" Justify="Justify.FlexEnd">