From 650581c9c21ac6a931caccd1d91fa1f76332c75d Mon Sep 17 00:00:00 2001 From: Jonathan McCaffrey Date: Fri, 1 Apr 2022 18:15:12 -0400 Subject: [PATCH] feat(Immortal) Added a back button --- IGP/Dialog/EntityDialogComponent.razor | 123 +++++++++++++++++++-- IGP/Dialog/EntityDialogComponent.razor.css | 59 +--------- IGP/Portals/EntityDialogPortal.razor | 2 +- Services/IServices.cs | 3 + Services/Website/EntityDialogService.cs | 29 +++++ 5 files changed, 145 insertions(+), 71 deletions(-) diff --git a/IGP/Dialog/EntityDialogComponent.razor b/IGP/Dialog/EntityDialogComponent.razor index 46236d2..00bd483 100644 --- a/IGP/Dialog/EntityDialogComponent.razor +++ b/IGP/Dialog/EntityDialogComponent.razor @@ -1,8 +1,15 @@ -@inject IEntityDialogService entityDialogService +@implements IDisposable; + +@inject IEntityDialogService entityDialogService +
-
@if (entity == null) @@ -12,6 +19,14 @@ else {
+ @if (entityDialogService.HasHistory()) + { + + } +
@entity.Info().Name
@@ -40,27 +55,111 @@
+ + +@code { + + protected override void OnInitialized() { - if (entityDialogService.GetEntityId() == null) - { - return; - } + entityDialogService.Subscribe(OnUpdate); + } + + public void Dispose() { + entityDialogService.Unsubscribe(OnUpdate); + } - entity = DATA.Get()[EntityId]; + void OnUpdate() + { + StateHasChanged(); } + public void CloseDialog() { entityDialogService.CloseDialog(); } -} \ No newline at end of file +} + diff --git a/IGP/Dialog/EntityDialogComponent.razor.css b/IGP/Dialog/EntityDialogComponent.razor.css index cac846e..5f28270 100644 --- a/IGP/Dialog/EntityDialogComponent.razor.css +++ b/IGP/Dialog/EntityDialogComponent.razor.css @@ -1,58 +1 @@ - -.dialogBackground { - position: fixed; - top: 0; - left: 0; - width: 100vw; - height: 100vh; - background-color: rgba(0, 0, 0, 0.5); - display: flex; -} - -.dialogContainer { - margin-left: auto; - margin-right: auto; - margin-top: 64px; - width: 800px; - height: 600px; - - background-color: var(--background); - border-width: var(--dialog-border-width); - border-style: solid; - border-color: var(--dialog-border-color); - border-radius: var(--dialog-radius); - - - box-shadow: 1px 2px 2px black; - -} - -.dialogHeader { - width: 100%; - background-color: var(--accent); - - border-top-left-radius: var(--dialog-radius); - border-top-right-radius: var(--dialog-radius); - border-bottom: 4px solid black; -} - -.dialogTitle { - padding: 16px; - font-size: 2rem; - font-weight: bold; -} - -.dialogContent { - flex-grow: 1; - padding: 6px; - overflow-y: auto; - overflow-x: hidden; - - height: 500px; -} - -.dialogFooter { - width: 100%; - height: 6px; - background-color: var(--paper); -} \ No newline at end of file + \ No newline at end of file diff --git a/IGP/Portals/EntityDialogPortal.razor b/IGP/Portals/EntityDialogPortal.razor index 64821ac..85f74c5 100644 --- a/IGP/Portals/EntityDialogPortal.razor +++ b/IGP/Portals/EntityDialogPortal.razor @@ -4,7 +4,7 @@ @if (entityDialogService.HasDialog()) { - + } diff --git a/Services/IServices.cs b/Services/IServices.cs index fa7a2bd..4b505f7 100644 --- a/Services/IServices.cs +++ b/Services/IServices.cs @@ -26,10 +26,13 @@ public interface IEntityDialogService public void AddDialog(string entityId); public void CloseDialog(); + + public void BackDialog(); public string? GetEntityId(); public bool HasDialog(); + public bool HasHistory(); } public interface IWebsiteService { diff --git a/Services/Website/EntityDialogService.cs b/Services/Website/EntityDialogService.cs index 46e8092..a88a444 100644 --- a/Services/Website/EntityDialogService.cs +++ b/Services/Website/EntityDialogService.cs @@ -2,9 +2,12 @@ namespace Services.Website; +//TODO Move to a database folder, with EntityService, EntityFilterService public class EntityDialogService : IEntityDialogService { private string? entityId = null; + + private List history = new List(); private event Action _onChange; @@ -23,6 +26,7 @@ public class EntityDialogService : IEntityDialogService public void AddDialog(string id) { entityId = id; + history.Add(id); NotifyDataChanged(); } @@ -30,9 +34,29 @@ public class EntityDialogService : IEntityDialogService public void CloseDialog() { entityId = null; + history.Clear(); NotifyDataChanged(); } + + public void BackDialog() + { + if (history.Count > 1) + { + history.RemoveAt(history.Count - 1); + + if (history.Count == 0) + { + entityId = null; + NotifyDataChanged(); + + return; + } + + entityId = history.Last(); + NotifyDataChanged(); + } + } public bool HasDialog() @@ -40,6 +64,11 @@ public class EntityDialogService : IEntityDialogService return entityId != null; } + public bool HasHistory() + { + return history.Count > 1; + } + public string? GetEntityId() { return entityId;