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
{
+
+
+@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;