Browse Source

cleanup Removing old dev section and canceled features

main
Jonathan McCaffrey 4 years ago
parent
commit
8d0c99b4b6
  1. 117
      IGP/Pages/Agile/AgilePage.razor
  2. 66
      IGP/Pages/Agile/AgilePage.razor.css
  3. 183
      IGP/Pages/Agile/Parts/BacklogComponent.razor
  4. 224
      IGP/Pages/Agile/Parts/SprintComponent.razor
  5. 133
      IGP/Pages/ChangeLogPage.razor
  6. 13
      IGP/Pages/ChangeLogPage.razor.css
  7. 106
      IGP/Pages/Comparision/ComparisionPage.razor
  8. 37
      IGP/Pages/Comparision/Parts/BuildLoaderComponent.razor
  9. 25
      IGP/Pages/Comparision/Parts/SandComponent.razor
  10. 1
      IGP/Pages/Database/DatabaseSinglePage.razor
  11. 117
      IGP/Pages/Documentation/DocumentationIndexPage.razor
  12. 123
      IGP/Pages/Documentation/DocumentationPage.razor
  13. 70
      IGP/Pages/Documentation/Parts/DocumentInnerNavComponent.razor
  14. 47
      IGP/Pages/Documentation/Parts/DocumentNavComponent.razor
  15. 8
      IGP/Pages/Home/HomePage.razor
  16. 88
      IGP/Pages/MakingOf/MakingOfPage.razor
  17. 188
      IGP/Pages/MakingOf/Parts/MakingOfColours.razor
  18. 49
      IGP/Pages/MakingOf/Parts/MakingOfColours.razor.css
  19. 16
      IGP/Pages/MakingOf/Parts/MakingOfDialogs.razor
  20. 188
      IGP/Pages/MakingOf/Parts/MakingOfDisplays.razor
  21. 58
      IGP/Pages/MakingOf/Parts/MakingOfFeedback.razor
  22. 35
      IGP/Pages/MakingOf/Parts/MakingOfForms.razor
  23. 80
      IGP/Pages/MakingOf/Parts/MakingOfNavigation.razor
  24. 19
      IGP/Pages/RoadMap/Parts/RoadMapComponent.razor
  25. 32
      IGP/Pages/RoadMap/RoadMapPage.razor
  26. 7
      IGP/_Imports.razor

117
IGP/Pages/Agile/AgilePage.razor

@ -1,117 +0,0 @@
@implements IDisposable;
@inject IAgileService AgileService;
@layout PageLayout
@inherits BasePage
@page "/agile"
@if (!AgileService.IsLoaded())
{
<LoadingComponent/>
}
else
{
<LayoutMediumContentComponent>
<WebsiteTitleComponent>Agile</WebsiteTitleComponent>
<div class="agileViewContainer">
@foreach (var sprint in AgileService.AgileSprintModels!
.OrderBy(e => e.EndDate).Reverse())
{
<details class="sprintDisplayContainer @sprint.GetSprintType().ToLower()"
open="@(sprint.GetSprintType() == SprintType.Current)">
<summary class="sprintSummary">
<div class="sprintTitle">@sprint.Name</div>
<div style="flex: 1; flex-grow: 1;"></div>
<div class="sprintDates">
<div class="sprintStartDate">
@if (sprint.StartDate != null)
{
<b>Start: </b>
@sprint.StartDate.Value.ToString("dd/MM/yyyy")
}
</div>
<div class="sprintEndDate">
@if (sprint.EndDate != null)
{
<b>End: </b>
@sprint.EndDate.Value.ToString("dd/MM/yyyy")
}
</div>
</div>
</summary>
<SprintComponent AgileSprint="sprint"></SprintComponent>
</details>
}
<details class="sprintDisplayContainer">
<summary class="sprintSummary">
<div class="sprintTitle">Backlog</div>
<div style="flex: 1; flex-grow: 1;"></div>
</summary>
<div>
<BacklogComponent Backlog=backlog></BacklogComponent>
</div>
</details>
</div>
<ContentDividerComponent></ContentDividerComponent>
<PaperComponent>
<InfoBodyComponent>
<InfoQuestionComponent>What is Agile?</InfoQuestionComponent>
<InfoAnswerComponent>
Agile is a work methodology for determing task assignment and release deadlines.
<br/><br/>
My agile practice will be creating tasks in a backlog. Assigning them to weekly sprints. And completing all tasks in the allotted time frame.
<br/><br/>
Any unfinished tasks are moved into the next sprint, or the sprint will be extended by a week.
</InfoAnswerComponent>
</InfoBodyComponent>
</PaperComponent>
</LayoutMediumContentComponent>
}
@code {
private readonly List<AgileTaskModel> backlog = new();
protected override void OnInitialized()
{
base.OnInitialized();
AgileService.Subscribe(HasChanged);
HasChanged();
}
void IDisposable.Dispose()
{
AgileService.Unsubscribe(HasChanged);
}
void HasChanged()
{
if (!AgileService.IsLoaded()) return;
backlog.Clear();
foreach (var task in AgileService.AgileTaskModels!)
{
if (task.AgileSprintModelId == null)
{
backlog.Add(task);
}
}
StateHasChanged();
}
protected override async Task OnInitializedAsync()
{
await AgileService.Load();
}
}

66
IGP/Pages/Agile/AgilePage.razor.css

@ -1,66 +0,0 @@

.agileViewContainer {
display: flex;
gap: 12px;
flex-direction: column;
}
.sprintDisplayContainer {
border: 4px solid var(--paper);
box-shadow: 0px 2px 12px rgba(0, 0, 0, 0.2);
border-radius: 2px;
padding: 25px;
margin: auto;
width: 100%;
background-color: var(--paper);
}
@media only screen and (max-width: 1025px) {
.sprintDisplayContainer {
padding: 2px;
}
}
.sprintSummary {
display: flex;
width: 100%;
}
.sprintDisplayContainer.current {
border-color: #042901;
background-color: var(--paper);
}
.sprintDisplayContainer.planned {
border-color: #2a2000;
background-color: var(--paper);
}
.sprintDisplayContainer.completed {
border-color: #2a2000;
background-color: var(--paper);
}
details .sprintSummary::before {
content: "+";
font-weight: bolder;
font-size: 1.5rem;
padding-right: 8px;
}
details[open] .sprintSummary::before {
content: "-";
}
.sprintTitle {
width: 400px;
font-size: 1.6rem;
font-weight: 800;
}
.sprintDates {
width: 160px;
text-align: right;
}

183
IGP/Pages/Agile/Parts/BacklogComponent.razor

@ -1,183 +0,0 @@
<div class="sprintContainer">
<div class="tasksContainer">
@foreach (var task in Backlog)
{
<div class="taskContainer @task.Status.ToLower()">
<div class="taskName">@task.Name</div>
<div class="taskDetails">
<LayoutRowComponent>
<LayoutColumnComponent>
<div class="taskType">
<b>Type: </b>@task.Task.Replace("_", " ")
</div>
<div class="taskStatus">
<b>Status: </b>@task.Status.Replace("_", " ")
</div>
<div class="taskPriority">
<b>Priority: </b>@task.Priority
</div>
</LayoutColumnComponent>
<LayoutColumnComponent>
@if (task.Finished != null)
{
<div class="taskFinished">
<b>Finished: </b>@task.Finished
</div>
}
<div class="taskCreated">
<b>Created: </b>@task.Created
</div>
</LayoutColumnComponent>
</LayoutRowComponent>
</div>
<div class="taskDescription">
<b>Description: </b>@task.Description
</div>
<div class="taskNotes">
<b>Notes: </b>@task.Notes
</div>
</div>
}
</div>
</div>
<style>
.sprintContainer {
display: flex;
flex-direction: column;
gap: 12px;
padding-top: 16px;
}
@@media only screen and (max-width: 1025px) {
.sprintContainer {
display: flex;
flex-direction: column;
gap: 6px;
border: none;
margin-top: 12px;
box-shadow: none;
padding: 8px;
}
}
.tasksContainer {
grid-area: tasks;
display: flex;
flex-direction: column;
gap: 20px;
padding: 25px;
align-items: stretch;
justify-content: stretch;
justify-items: stretch;
}
.taskContainer {
padding: 25px;
border: 1px dashed rgba(0,0,0,0.6);
box-shadow: 0px 2px 6px rgba(0,0,0,0.1);
}
.taskContainer.@StatusType.In_Progress.ToLower() {
border-color: #030129;
background-color: #2c3a4c;
}
.taskContainer.@StatusType.Todo.ToLower() {
border-color: #2a2000;
background-color: #ffbf0029;
}
.taskContainer.@StatusType.To_Test.ToLower() {
border-color: #030129;
background-color: #2c3a4c;
}
.taskContainer.@StatusType.Canceled.ToLower() {
border-color: #290102;
background-color: #4C2C33;
}
.taskContainer.@StatusType.Done.ToLower() {
border-color: #042901;
background-color: #2E4C2C;
}
.taskName {
font-weight: bold;
grid-area: name;
}
.taskCreated {
grid-area: created;
}
.taskFinished {
grid-area: finished;
}
.taskStatus {
grid-area: status;
}
.taskDescription {
margin-top: 10px;
grid-area: description;
}
.taskNotes {
grid-area: notes;
}
@@media only screen and (max-width: 1025px) {
.tasksContainer {
padding: 0px;
margin-top: 12px;
padding-top: 12px;
border-top: 4px solid rgba(0,0,0,0.4)
}
.taskContainer {
padding: 2px;
border: none;
box-shadow: none;
}
.taskContainer.@StatusType.In_Progress.ToLower() {
border-color: transparent;
background-color: transparent;
}
.taskContainer.@StatusType.Todo.ToLower() {
border-color: transparent;
background-color: transparent;
}
.taskContainer.@StatusType.Canceled.ToLower() {
border-color: transparent;
background-color: transparent;
}
.taskContainer.@StatusType.Done.ToLower() {
border-color: transparent;
background-color: transparent;
}
}
</style>
@code {
[Parameter]
public List<AgileTaskModel> Backlog { get; set; } = default!;
}

224
IGP/Pages/Agile/Parts/SprintComponent.razor

@ -1,224 +0,0 @@
<div class="sprintContainer">
<div class="sprintStatus">
<b>Status: </b>@AgileSprint.GetSprintType()
</div>
<div class="sprintDescription">
<b>Description: </b>@AgileSprint.Description
</div>
<div class="sprintNotes">
<b>Notes: </b>@AgileSprint.Notes
</div>
<div class="tasksContainer">
@if (AgileSprint.AgileTaskModels.Count > 0)
{
@foreach (var task in AgileSprint.AgileTaskModels.OrderBy(x => x.OrderPriority))
{
<div class="taskContainer @task.Status.ToLower() @task.Task.ToLower()">
<div class="taskName">@task.Name</div>
<div class="taskDetails">
<LayoutRowComponent>
<LayoutColumnComponent>
<div class="taskType">
<b>Type: </b>@task.Task.Replace("_", " ")
</div>
<div class="taskStatus">
<b>Status: </b>@task.Status.Replace("_", " ")
</div>
<div class="taskPriority">
<b>Priority: </b>@task.Priority
</div>
</LayoutColumnComponent>
<LayoutColumnComponent>
@if (task.Finished != null)
{
<div class="taskFinished">
<b>Finished: </b>@task.Finished.Value.ToString("dd/MM/yyyy")
</div>
}
<div class="taskCreated">
<b>Created: </b>@task.Created!.Value.ToString("dd/MM/yyyy")
</div>
</LayoutColumnComponent>
</LayoutRowComponent>
</div>
<div class="taskDescription">
<b>Description: </b>@task.Description
</div>
<div class="taskNotes">
<b>Notes: </b>@task.Notes
</div>
</div>
}
}
else
{
<div>Add Tasks...</div>
}
</div>
</div>
<style>
.sprintContainer {
display: flex;
flex-direction: column;
gap: 12px;
padding-top: 16px;
}
.sprintDescription {
grid-area: description;
}
@@media only screen and (max-width: 1025px) {
.sprintContainer {
display: flex;
flex-direction: column;
gap: 6px;
border: none;
margin-top: 12px;
box-shadow: none;
padding: 8px;
}
.sprintStartDate {
text-align: left;
}
.sprintEndDate {
text-align: left;
}
}
.tasksContainer {
grid-area: tasks;
display: flex;
flex-direction: column;
gap: 20px;
padding: 25px;
align-items: stretch;
justify-content: stretch;
justify-items: stretch;
}
.taskContainer {
padding: 25px;
border: 1px dashed rgba(0,0,0,0.6);
box-shadow: 0px 2px 6px rgba(0,0,0,0.1);
}
.taskContainer.@StatusType.In_Progress.ToLower() {
border-color: #030129;
background-color: #2c3a4c;
}
.taskContainer.@StatusType.Todo.ToLower() {
border-color: #2a2000;
background-color: #ffbf0029;
}
.taskContainer.@StatusType.To_Test.ToLower() {
border-color: #030129;
background-color: #2c3a4c;
}
.taskContainer.@StatusType.Canceled.ToLower() {
border-color: #290102;
background-color: #4C2C33;
}
.taskContainer.@StatusType.Done.ToLower() {
border-color: #042901;
background-color: #2E4C2C;
}
.taskContainer.@TaskType.Bug.ToLower() {
border-style: dotted;
border-width: 8px;
}
.taskContainer.@TaskType.Document.ToLower() {
border-style: dashed;
border-width: 2px;
}
.taskName {
font-weight: bold;
grid-area: name;
font-size: 1.2rem;
}
.taskDetails {
font-size: 0.8rem;
}
.taskCreated {
grid-area: created;
}
.taskFinished {
grid-area: finished;
}
.taskStatus {
grid-area: status;
}
.taskDescription {
margin-top: 10px;
grid-area: description;
}
.taskNotes {
grid-area: notes;
}
@@media only screen and (max-width: 1025px) {
.tasksContainer {
padding: 0px;
margin-top: 12px;
padding-top: 12px;
border-top: 4px solid rgba(0,0,0,0.4)
}
.taskContainer {
padding: 2px;
border: none;
box-shadow: none;
}
.taskContainer.@StatusType.In_Progress.ToLower() {
border-color: transparent;
background-color: transparent;
}
.taskContainer.@StatusType.Todo.ToLower() {
border-color: transparent;
background-color: transparent;
}
.taskContainer.@StatusType.Canceled.ToLower() {
border-color: transparent;
background-color: transparent;
}
.taskContainer.@StatusType.Done.ToLower() {
border-color: transparent;
background-color: transparent;
}
}
</style>
@code {
[Parameter]
public AgileSprintModel AgileSprint { get; set; } = default!;
}

133
IGP/Pages/ChangeLogPage.razor

@ -1,133 +0,0 @@
@page "/changelog"
@implements IDisposable;
@inject IGitService GitService;
@inherits BasePage
@inject IDataCollectionService DataCollectionService
@layout PageLayout
@if (GitService.IsLoaded())
{
<LayoutMediumContentComponent>
<WebsiteTitleComponent>Change Log</WebsiteTitleComponent>
<PaperComponent>
<FormLayoutComponent>
<FormCheckboxComponent Label="Show Important"
Info="Only show important patches. Like database updates to the latest game patch."
Value="@isViewImportant"
OnChange="OnChangeClicked">
</FormCheckboxComponent>
</FormLayoutComponent>
</PaperComponent>
<PaperComponent>
@foreach (var patch in Patches.OrderBy(x => x.Date).Reverse())
{
@if (!patch.Important.Equals("True") && isViewImportant)
{
continue;
}
var daysAgo = Math.Floor(DateTime.Now.Subtract(patch.Date).TotalDays);
<div class="patchContainer">
<div style="display: flex; justify-content: space-between;">
<div style="font-size: 1.2rem; font-weight: bolder; margin-bottom:4px;">
@patch.Name
</div>
<div>
@if (daysAgo == 0)
{
<i>Today</i>
}
else if (daysAgo < 8)
{
<i>@daysAgo days ago</i>
}
else
{
<i>@patch.Date.ToString("dd/MM/yyyy")</i>
}
</div>
</div>
<div>
@foreach (var change in Changes.FindAll(e => e.GitPatchModelId == patch.Id))
{
@if (!change.Important.Equals("True") && isViewImportant)
{
continue;
}
<div style="display: flex; justify-content: space-between; ">
<div>
<div>
<b>
<span>- @change.Name </span>
@if (change.Commit != CommitType.None)
{
<span>(@change.Commit)</span>
}
<span>: </span>
</b> @((MarkupString)change.Description)
</div>
</div>
</div>
}
</div>
</div>
}
</PaperComponent>
</LayoutMediumContentComponent>
}
else
{
<LoadingComponent/>
}
@code {
private IEnumerable<GitPatchModel> Patches => GitService.GitPatchModels;
private List<GitChangeModel> Changes => GitService.GitChangeModels;
private bool isViewImportant = true;
protected override void OnInitialized()
{
base.OnInitialized();
GitService.Subscribe(HasChanged);
}
void IDisposable.Dispose()
{
GitService.Unsubscribe(HasChanged);
}
void OnChangeClicked(ChangeEventArgs changeEventArgs)
{
isViewImportant = (bool)changeEventArgs.Value!;
StateHasChanged();
}
void HasChanged()
{
StateHasChanged();
}
protected override async Task OnInitializedAsync()
{
await GitService.Load();
}
}

13
IGP/Pages/ChangeLogPage.razor.css

@ -1,13 +0,0 @@
.patchContainer {
padding: 16px;
}
@media only screen and (max-width: 1025px) {
.patchContainer {
border: none;
padding-left: 8px;
padding-right: 8px;
padding-top: 16px;
padding-bottom: 16px;
}
}

106
IGP/Pages/Comparision/ComparisionPage.razor

@ -1,106 +0,0 @@
@layout PageLayout
@inherits BasePage
@implements IDisposable
@inject IToastService ToastService
<div style="display:grid; gap: 8px;padding: 16px; height: 94vh; width: 90vw; margin: auto; margin-top: 32px;
grid-template-columns: 27% 25% 25% 23%; grid-template-rows: auto;
grid-template-areas: 'loader sand compare compare' ;">
<div style="grid-area: loader; border: 2px solid black; padding: 20px;">
Comparision Loader
<BuildLoaderComponent></BuildLoaderComponent>
</div>
<div style="grid-area: sand; border: 2px solid black; padding: 20px;">
Sand
<SandComponent></SandComponent>
</div>
<div style="grid-area: compare; border: 2px solid black; padding: 20px;">
Comparision Charts
</div>
</div>
@code {
[Inject]
IKeyService KeyService { get; set; } = default!;
[Inject]
IImmortalSelectionService FilterService { get; set; } = default!;
[Inject]
IBuildOrderService BuildOrderService { get; set; } = default!;
[Inject]
IEconomyService EconomyService { get; set; } = default!;
[Inject]
ITimingService TimingService { get; set; } = default!;
Dictionary<int, List<EntityModel>> completedEntities = new();
List<EntityModel> entities = EntityModel.GetListOnlyHotkey();
protected override void OnInitialized()
{
base.OnInitialized();
KeyService.Subscribe(HandleClick);
FilterService.Subscribe(StateHasChanged);
EconomyService.Subscribe(StateHasChanged);
TimingService.Subscribe(HandleTimingChanged);
EconomyService.Calculate(BuildOrderService, TimingService, 0);
}
void IDisposable.Dispose()
{
KeyService.Unsubscribe(HandleClick);
FilterService.Unsubscribe(StateHasChanged);
TimingService.Unsubscribe(StateHasChanged);
EconomyService.Unsubscribe(StateHasChanged);
}
protected void HandleTimingChanged()
{
EconomyService.Calculate(BuildOrderService, TimingService, BuildOrderService.GetLastRequestInterval());
}
protected void HandleClick()
{
var hotkey = KeyService.GetHotkey();
var hotkeyGroup = KeyService.GetHotkeyGroup();
var isHoldSpace = KeyService.IsHoldingSpace();
var faction = FilterService.GetFaction();
var immortal = FilterService.GetImmortal();
if (hotkey == "`")
{
BuildOrderService.RemoveLast();
EconomyService.Calculate(BuildOrderService, TimingService, BuildOrderService.GetLastRequestInterval());
StateHasChanged();
return;
}
var entity = EntityModel.GetFrom(hotkey!, hotkeyGroup, isHoldSpace, faction, immortal);
if (entity == null)
{
return;
}
if (BuildOrderService.Add(entity, EconomyService))
{
EconomyService.Calculate(BuildOrderService, TimingService, BuildOrderService.GetLastRequestInterval());
}
}
}

37
IGP/Pages/Comparision/Parts/BuildLoaderComponent.razor

@ -1,37 +0,0 @@
@implements IDisposable
<div>
<Button Color="Color.Primary" @onclick="OnLoad">Load</Button>
<button @onclick="OnLoad">Load</button>
</div>
<div>
<textarea @bind="buildData" @bind:event="oninput"
style="background-color: #36393F; width: 330px; height: 400px;">
</textarea>
</div>
@code {
string buildData = "";
[Inject]
IBuildComparisonService BuildComparisionService { get; set; } = default!;
protected override void OnInitialized()
{
base.OnInitialized();
BuildComparisionService.Subscribe(StateHasChanged);
}
void IDisposable.Dispose()
{
BuildComparisionService.Unsubscribe(StateHasChanged);
}
void OnLoad()
{
BuildComparisionService.LoadJson(buildData);
}
}

25
IGP/Pages/Comparision/Parts/SandComponent.razor

@ -1,25 +0,0 @@
@implements IDisposable
<div>
<textarea readonly style="background-color: #36393F; width: 330px; height: 400px;">
@BuildComparisonService.AsJson()
</textarea>
</div>
@code {
[Inject]
IBuildComparisonService BuildComparisonService { get; set; } = default!;
protected override void OnInitialized()
{
base.OnInitialized();
BuildComparisonService.Subscribe(StateHasChanged);
}
void IDisposable.Dispose()
{
BuildComparisonService.Unsubscribe(StateHasChanged);
}
}

1
IGP/Pages/Database/DatabaseSinglePage.razor

@ -11,7 +11,6 @@
<LayoutLargeContentComponent> <LayoutLargeContentComponent>
<PaperComponent> <PaperComponent>
<FormDisplayComponent Label="Patch"> <FormDisplayComponent Label="Patch">
<Display> <Display>

117
IGP/Pages/Documentation/DocumentationIndexPage.razor

@ -1,117 +0,0 @@
@layout PageLayout
@inherits BasePage
@inject IDocumentationService DocumentationService
@implements IDisposable
@page "/docs"
@if (!DocumentationService.IsLoaded())
{
<LoadingComponent/>
}
else
{
<LayoutMediumContentComponent>
<PaperComponent>
@foreach (var docSection in DocumentationService.DocSectionModels)
{
<div class="docSectionContainer">
<div class="docSectionTitle">@docSection.Name</div>
<div class="docContentContainer">
@foreach (var docContent in docSection.DocumentationModels)
{
<NavLink class="docContentLink" href="@docContent.GetDocLink()">
<div class="docContentName">@docContent.Name</div>
<div class="docContentDescription">@docContent.Description</div>
</NavLink>
}
</div>
</div>
}
</PaperComponent>
</LayoutMediumContentComponent>
}
<style>
.docSectionContainer {
width: 100%;
padding: 8px;
}
.docSectionTitle {
font-size: 3rem;
font-weight: bold;
text-align: center;
margin-bottom: 32px;
}
.docContentContainer {
display: grid;
gap: 12px;
grid-template-columns: 1fr 1fr;
}
@@media only screen and (max-width: 1025px) {
.docContentContainer {
grid-template-columns: 1fr;
}
}
.docContentName {
font-weight: bold;
font-size: 1.6rem;
}
.docContentDescription {
font-weight: normal;
}
.docContentLink {
background-color: var(--paper);
border: 1px solid var(--paper-border);
border-radius: 2px;
padding-left: 12px;
padding-right: 12px;
padding-top: 24px;
padding-bottom: 24px;
color: white;
display: flex;
flex-direction: column;
gap: 12px;
text-align: center;
margin-left: 12px;
margin-right: 12px;
}
.docContentLink:hover {
background-color: var(--paper-hover);
border-color: var(--paper-border-hover);
text-decoration: none;
box-shadow: 0 4px 6px rgba(0,0,0,0.6);
transform: translateY(-2px) scale(1.01);
}
</style>
@code {
[Parameter]
public string? Text { get; set; }
protected override void OnInitialized()
{
base.OnInitialized();
DocumentationService.Subscribe(StateHasChanged);
DocumentationService.Load();
}
void IDisposable.Dispose()
{
DocumentationService.Unsubscribe(StateHasChanged);
}
}

123
IGP/Pages/Documentation/DocumentationPage.razor

@ -1,123 +0,0 @@
@layout PageLayout
@inherits BasePage
@inject IDocumentationService DocumentationService
@implements IDisposable
@page "/docs/{href1}/{href2?}/{href3?}/{href4?}/{href5?}"
@if (!DocumentationService.IsLoaded())
{
<LoadingComponent/>
}
else
{
<LayoutWithSidebarComponent>
<Sidebar>
<DocumentNavComponent
Connections="DocumentationService.DocConnectionModels"
Documents="DocumentationService.DocContentModels"/>
</Sidebar>
<Content>
<PaperComponent>
@foreach (var doc in DocumentationService.DocContentModels)
{
if (!doc.Href.Equals(Href))
{
continue;
}
<DocumentComponent DocContentModel="doc"/>
}
</PaperComponent>
</Content>
</LayoutWithSidebarComponent>
}
<style>
pre code {
color: white;
}
h1 {
display: block;
font-size: 2em;
margin-top: 0.67em;
margin-bottom: 0.67em;
margin-left: 0;
margin-right: 0;
font-weight: bold;
}
h2 {
display: block;
font-size: 1.5em;
margin-top: 0.83em;
margin-bottom: 0.83em;
margin-left: 0;
margin-right: 0;
font-weight: bold;
}
li {
display: list-item;
}
p {
display: block;
margin-top: 1em;
margin-bottom: 1em;
margin-left: 0;
margin-right: 0;
}
ul {
display: block;
list-style-type: disc;
margin-top: 1em;
margin-bottom: 1em;
margin-left: 0;
margin-right: 0;
padding-left: 40px;
}
pre {
background: black;
padding: 2px;
}
</style>
@code {
[Parameter]
public string? Href1 { get; set; }
[Parameter]
public string? Href2 { get; set; }
[Parameter]
public string? Href3 { get; set; }
[Parameter]
public string? Href4 { get; set; }
[Parameter]
public string? Href5 { get; set; }
private string Href => Href5 ?? Href4 ?? Href3 ?? Href2 ?? Href1 ?? "";
protected override void OnInitialized()
{
base.OnInitialized();
DocumentationService.Subscribe(StateHasChanged);
DocumentationService.Load();
}
void IDisposable.Dispose()
{
DocumentationService.Unsubscribe(StateHasChanged);
}
}

70
IGP/Pages/Documentation/Parts/DocumentInnerNavComponent.razor

@ -1,70 +0,0 @@
@if (Document!.DocumentationModels.Count > 0)
{
<div class="docInnerNavContainer">
@foreach (var innerDoc in Document.DocumentationModels)
{
var linkStyle = $"docInnerNavButton inner_{Layers}";
<NavLink class="@linkStyle" href="@innerDoc.GetDocLink()">@innerDoc.Name</NavLink>
<DocumentInnerNavComponent Document="@innerDoc" Layers="@IncrementLayers()"/>
}
</div>
}
<style>
.docInnerNavContainer {
display: flex;
flex-direction: column;
}
.docInnerNavButton a {
color: white;
}
.docInnerNavButton a:hover {
color: white;
}
.docInnerNavButton {
padding: 8px;
margin-left: 8px;
color: white;
}
.inner_1 {
margin-left: 8px;
}
.inner_2 {
margin-left: 16px;
}
.inner_3 {
margin-left: 24px;
}
</style>
@code {
[Parameter]
public DocContentModel? Document { get; set; } = default!;
[Parameter]
public int Layers { get; set; } = 1;
public int IncrementLayers()
{
return Layers + 1;
}
private string GetLink(DocContentModel doc)
{
return $"docs/{doc.Href}";
}
}

47
IGP/Pages/Documentation/Parts/DocumentNavComponent.razor

@ -1,47 +0,0 @@
<div class="docNavContainer">
@foreach (var doc in Documents)
{
if (doc.Parent == null)
{
<NavLink class="docNavButton" href="@doc.GetDocLink()">@doc.Name</NavLink>
<DocumentInnerNavComponent Document="@doc"/>
}
}
</div>
<style>
.docNavContainer {
display: flex;
flex-direction: column;
gap: 8px;
}
.docNavButton a {
color: white;
}
.docNavButton a:hover {
color: white;
}
.docNavButton {
padding: 8px;
color: white;
}
</style>
@code {
[Parameter]
public List<DocContentModel> Documents { get; set; } = default!;
[Parameter]
public List<DocConnectionModel> Connections { get; set; } = default!;
private string GetLink(DocContentModel doc)
{
return $"docs/{doc.Href}";
}
}

8
IGP/Pages/Home/HomePage.razor

@ -48,14 +48,6 @@
</div> </div>
</PaperComponent> </PaperComponent>
<ContentDividerComponent></ContentDividerComponent>
<AlertComponent>
<Title>Under Construction</Title>
<Message>Website is still being made. Check out <NavLink Href="/roadmap">Road Map</NavLink> for future plans, <NavLink Href="/agile">Agile</NavLink> for present tasks, and <NavLink Href="/changelog">Change Log</NavLink> for past changes.</Message>
</AlertComponent>
</LayoutMediumContentComponent> </LayoutMediumContentComponent>
<style> <style>

88
IGP/Pages/MakingOf/MakingOfPage.razor

@ -1,88 +0,0 @@
@page "/makingof"
@inherits BasePage
@inject IDataCollectionService DataCollectionService
@layout PageLayout
<LayoutLargeContentComponent>
<WebsiteTitleComponent>Making Of</WebsiteTitleComponent>
<AlertComponent Type="@SeverityType.Warning">
<Title>Under Construction</Title>
<Message>This page is still being worked on. It will list the tech and design choices made for this website. It's is strictly for educational and reference purposes, and it has nothing to do with IMMORTAL: Gates of Pyre.</Message>
</AlertComponent>
<ContentDividerComponent></ContentDividerComponent>
<FormLayoutComponent>
<FormDisplayComponent Label="Tech Stack">
<Display>Blazor (C# and HTML)</Display>
</FormDisplayComponent>
<FormDisplayComponent Label="Stack Details">
<Display>This is a Static Single Page Application hosted on Azure.</Display>
</FormDisplayComponent>
</FormLayoutComponent>
<ContentDividerComponent></ContentDividerComponent>
<MakingOfColours></MakingOfColours>
<ContentDividerComponent></ContentDividerComponent>
<DevOnlyComponent>
<MakingOfSectionComponent Title="Empty">
<MakingOfComponent>
<Title>
Empty
</Title>
<Description>
Empty
</Description>
<Example>
Empty
</Example>
<Usage>
<CodeComponent>Empty</CodeComponent>
</Usage>
<Code>
<CodeComponent>Empty</CodeComponent>
</Code>
</MakingOfComponent>
</MakingOfSectionComponent>
</DevOnlyComponent>
<DevOnlyComponent>
<MakingOfSectionComponent Title="Dialogs">
<MakingOfDialogs></MakingOfDialogs>
</MakingOfSectionComponent>
</DevOnlyComponent>
<DevOnlyComponent>
<FormLayoutComponent>
<FormEscapeCodeComponent></FormEscapeCodeComponent>
</FormLayoutComponent>
</DevOnlyComponent>
<MakingOfSectionComponent Title="Displays">
<MakingOfDisplays></MakingOfDisplays>
</MakingOfSectionComponent>
<DevOnlyComponent>
<MakingOfSectionComponent Title="Navigation">
<MakingOfNavigation></MakingOfNavigation>
</MakingOfSectionComponent>
</DevOnlyComponent>
<MakingOfSectionComponent Title="Feedback">
<MakingOfFeedback></MakingOfFeedback>
</MakingOfSectionComponent>
<MakingOfSectionComponent Title="Forms">
<MakingOfForms></MakingOfForms>
</MakingOfSectionComponent>
</LayoutLargeContentComponent>

188
IGP/Pages/MakingOf/Parts/MakingOfColours.razor

@ -1,188 +0,0 @@
<div>Colors</div>
<div class="colorContainer">
<CodeComponent>
--accent: @accent;
--primary: @primary;
--primary-border: @primary_border;
--primary-hover: @primary_hover;
--primary-border-hover: @primary_border_hover;
--background: @background;
--secondary: @secondary;
--secondary-hover: @secondary_hover;
--secondary-border-hover: @secondary_border_hover;
--paper: @paper;
--paper-border: @paper_border;
--info: @info;
--info-border: @info_border;
--info-secondary: @info_secondary;
--info-secondary-border: @info_secondary_border;
</CodeComponent>
<br/>
<div class="color accent">
<div>Accent</div>
<div>
Base: <input type="color" value="@accent" @onchange="e => accent = e.Value!.ToString()!"/>
</div>
</div>
<div class="color primary">
<div>Primary</div>
<div>
Base: <input type="color" value="@primary" @onchange="e => primary = e.Value!.ToString()!"/>
</div>
<div>
Border: <input type="color" value="@primary_border" @onchange="e => primary_border = e.Value!.ToString()!"/>
</div>
<div>
Hover Base: <input type="color" value="@primary_hover" @onchange="e => primary_hover = e.Value!.ToString()!"/>
</div>
<div>
Hover Border: <input type="color" value="@primary_border_hover" @onchange="e => primary_border_hover = e.Value!.ToString()!"/>
</div>
</div>
<div class="color secondary">
<div>Secondary</div>
<div>
Base: <input type="color" value="@secondary" @onchange="e => secondary = e.Value!.ToString()!"/>
</div>
<div>
Hover Base: <input type="color" value="@secondary_hover" @onchange="e => secondary_hover = e.Value!.ToString()!"/>
</div>
<div>
Hover Border: <input type="color" value="@secondary_border_hover" @onchange="e => secondary_border_hover = e.Value!.ToString()!"/>
</div>
</div>
<div class="color paper">
<div>Paper</div>
<div>
Base: <input type="color" value="@paper" @onchange="e => paper = e.Value!.ToString()!"/>
</div>
<div>
Border: <input type="color" value="@paper_border" @onchange="e => paper_border = e.Value!.ToString()!"/>
</div>
</div>
<div class="color background">
<div>Background</div>
<div>
Base: <input type="color" value="@background" @onchange="e => background = e.Value!.ToString()!"/>
</div>
</div>
<div class="color info">
<div>Info</div>
<div>
Base: <input type="color" value="@info" @onchange="e => info = e.Value!.ToString()!"/>
</div>
<div>
Border: <input type="color" value="@info_border" @onchange="e => info_border = e.Value!.ToString()!"/>
</div>
</div>
<div class="color info_secondary">
<div>Info Secondary</div>
<div>
Base: <input type="color" value="@info_secondary" @onchange="e => info_secondary = e.Value!.ToString()!"/>
</div>
<div>
Border: <input type="color" value="@info_secondary_border" @onchange="e => info_secondary_border = e.Value!.ToString()!"/>
</div>
</div>
</div>
<style>
:root {
--accent: @accent;
--primary: @primary;
--primary-border: @primary_border;
--primary-hover: @primary_hover;
--primary-border-hover: @primary_border_hover;
--background: @background;
--secondary: @secondary;
--secondary-hover: @secondary_hover;
--secondary-border-hover: @secondary_border_hover;
--paper: @paper;
--paper-border: @paper_border;
--info: @info;
--info-border: @info_border;
--info-secondary: @info_secondary;
--info-secondary-border: @info_secondary_border;
}
.colorContainer {
display: flex;
flex-direction: column;
}
.color {
padding: 12px;
display: flex;
flex-direction: row;
gap: 32px;
align-items: center;
}
.accent {
background-color: var(--accent);
}
.primary {
background-color: var(--primary);
border: 1px solid var(--primary-border);
}
.primary:hover {
background-color: var(--primary-hover);
border-color: var(--primary-border-hover);
}
.secondary {
background-color: var(--secondary);
border: 1px solid var(--secondary);
}
.secondary:hover {
background-color: var(--secondary-hover);
border-color: var(--secondary-border-hover);
}
.paper {
background-color: var(--paper);
border: 4px solid var(--paper-border);
}
.background {
background-color: var(--background);
}
.info {
background-color: var(--info);
border: 1px solid var(--info-border);
}
.info_secondary {
background-color: var(--info-secondary);
border: 1px solid var(--info-secondary-border);
}
</style>
@code {
string accent = "#432462";
string primary = "#4308a3";
string primary_border = "#2c0b62";
string primary_hover = "#5e00f7";
string primary_border_hover = "#a168ff";
string background = "#161618";
string secondary = "#23133e";
string secondary_hover = "#2a0070";
string secondary_border_hover = "#a168ff";
string paper = "#252526";
string paper_border = "#151516";
string info = "#451376";
string info_border = "#210b36";
string info_secondary = "#4c3e59";
string info_secondary_border = "#7e58a2";
}

49
IGP/Pages/MakingOf/Parts/MakingOfColours.razor.css

@ -1,49 +0,0 @@
.colorContainer {
display: flex;
flex-direction: column;
}
.color {
padding: 12px;
display: flex;
flex-direction: row;
gap: 32px;
align-items: center;
}
.accent {
background-color: var(--accent);
}
.primary {
background-color: var(--primary);
border: 1px solid var(--primary-border);
}
.primary:hover {
background-color: var(--primary-hover);
border-color: var(--primary-border-hover);
}
.secondary {
background-color: var(--secondary);
border: 1px solid var(--secondary);
}
.secondary:hover {
background-color: var(--secondary-hover);
border-color: var(--secondary-border-hover);
}
.paper {
background-color: var(--paper);
border: 4px solid var(--paper-border);
}
.background {
background-color: var(--background);
}
.info {
background-color: var(--info);
}

16
IGP/Pages/MakingOf/Parts/MakingOfDialogs.razor

@ -1,16 +0,0 @@
<MakingOfComponent>
<Title>Dialog</Title>
<Description>...</Description>
<Example>
</Example>
<Usage>
//TODO
</Usage>
<Code>
//TODO
</Code>
</MakingOfComponent>
@code {
}

188
IGP/Pages/MakingOf/Parts/MakingOfDisplays.razor

@ -1,188 +0,0 @@
<MakingOfComponent>
<Title>
Entity Display
</Title>
<Description>
Display element for holding entity information.
</Description>
<Example>
<LayoutRowComponent>
<EntityDisplayComponent Title="Example Entity Info">
<div>
Example Entity Content
</div>
@for (var i = 0; i < 1; i++)
{
<div>
-@i Example Entity Content
</div>
}
<div>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
</div>
</EntityDisplayComponent>
<EntityDisplayComponent Title="Example Entity Info">
<div>
Example Entity Content
</div>
@for (var i = 0; i < 2; i++)
{
<div>
-@i Example Entity Content
</div>
}
<div>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation.
</div>
</EntityDisplayComponent>
<EntityDisplayComponent Title="Example Entity Info">
<div>
Example Entity Content
</div>
@for (var i = 0; i < 1; i++)
{
<div>
-@i Example Entity Content
</div>
}
<div>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
</div>
</EntityDisplayComponent>
</LayoutRowComponent>
</Example>
<Usage>
<CodeComponent>
&lt;LayoutRowComponent&gt;
&lt;EntityDisplayComponent Title=&quot;Example Entity Info&quot;&gt;
&lt;div&gt;
Example Entity Content
&lt;/div&gt;
@@for (var i = 0; i &lt; 1; i++) {
&lt;div&gt;
-@@i Example Entity Content
&lt;/div&gt;
}
&lt;div&gt;
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
&lt;/div&gt;
&lt;/EntityDisplayComponent&gt;
&lt;EntityDisplayComponent Title=&quot;Example Entity Info&quot;&gt;
&lt;div&gt;
Example Entity Content
&lt;/div&gt;
@@for (var i = 0; i &lt; 2; i++) {
&lt;div&gt;
-@@i Example Entity Content
&lt;/div&gt;
}
&lt;div&gt;
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation.
&lt;/div&gt;
&lt;/EntityDisplayComponent&gt;
&lt;EntityDisplayComponent Title=&quot;Example Entity Info&quot;&gt;
&lt;div&gt;
Example Entity Content
&lt;/div&gt;
@@for (var i = 0; i &lt; 1; i++) {
&lt;div&gt;
-@@i Example Entity Content
&lt;/div&gt;
}
&lt;div&gt;
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
&lt;/div&gt;
&lt;/EntityDisplayComponent&gt;
&lt;/LayoutRowComponent&gt;
</CodeComponent>
</Usage>
<Code>
<CodeComponent>
&lt;div class=&quot;entityDisplaySection&quot;&gt;
&lt;div class=&quot;entityDisplayHeader&quot;&gt;
&lt;div class=&quot;entityDisplayTitle&quot;&gt;
@@Title
&lt;/div&gt;
&lt;div class=&quot;entityDisplayBorder&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
@@ChildContent
&lt;/div&gt;
&lt;style&gt;
.entityDisplaySection {
position: relative;
padding: 8px;
display: flex;
gap: 12px;
flex-direction: column;
margin-top: 14px;
margin-top: 20px;
padding: 12px;
background-color: var(--info);
border-top-right-radius: 12px;
border-bottom-left-radius: 2px;
border-bottom-right-radius: 2px;
}
.entityDisplayHeader {
bottom: 100%;
position: absolute;
white-space: pre;
width: 100%;
line-height: 0px;
right: 0px;
top: -4px;
display: flex;
}
.entityDisplayTitle {
font-weight: 800;
font-size: 1.4rem;
padding-right: 8px;
text-shadow: 3px 0 0 var(--info), -3px 0 0 var(--info), 0 3px 0 var(--info), 0 -3px 0 var(--info), 2px 2px var(--info), -2px -2px 0 var(--info), 2px -2px 0 var(--info), -2px 2px 0 var(--info);
}
@@@@media only screen and (max-width: 1025px) {
.entityDisplayHeader {
position: inherit;
width: 100%;
margin: 0px;
}
.entityDisplaySection {
position: inherit;
width: 100%;
margin: 0px;
max-width: none;
border-top-right-radius: 0px;
border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px;
}
.entityDisplayTitle {
position: inherit;
margin: 0px;
}
}
&lt;/style&gt;
@@code {
[Parameter] public RenderFragment ChildContent { get; set; }
[Parameter] public string Title { get; set; }
}
</CodeComponent>
</Code>
</MakingOfComponent>

58
IGP/Pages/MakingOf/Parts/MakingOfFeedback.razor

@ -1,58 +0,0 @@
<WebsiteTitleComponent>
Feedback
</WebsiteTitleComponent>
<MakingOfComponent>
<Title>
Loading
</Title>
<Description>
Indicates a component is being loaded (a component that relies on JSON)
</Description>
<Example>
<div style="width: 300px; height: 450px;">
<LoadingComponent/>
</div>
</Example>
<Usage>
<CodeComponent>Empty</CodeComponent>
</Usage>
<Code>
<CodeComponent>Empty</CodeComponent>
</Code>
</MakingOfComponent>
<MakingOfComponent>
<Title>Alert Message</Title>
<Description>Used to convey important information to the viewer. Comes in Yellow (Warning), Blue (Information), Red (Error), and Green (Success). Mostly used to warn viewers of pre-alpha or incomplete content being viewed.</Description>
<Example>
<AlertComponent Type="@SeverityType.Warning">
<Title>Warning Alert Title</Title>
<Message>Warning Alert Message</Message>
</AlertComponent>
<AlertComponent Type="@SeverityType.Information">
<Title>Information Alert Title</Title>
<Message>Information Alert Message</Message>
</AlertComponent>
<AlertComponent Type="@SeverityType.Error">
<Title>Error Alert Title</Title>
<Message>Error Alert Message</Message>
</AlertComponent>
<AlertComponent Type="@SeverityType.Success">
<Title>Succsess Alert Title</Title>
<Message>Succsess Alert Message</Message>
</AlertComponent>
</Example>
<Usage>
<CodeComponent>&lt;AlertComponent Type=SeverityType.Warning&gt;<br/> &lt;Title&gt;Warning Alert Title&lt;/Title&gt;<br/> &lt;Message&gt;Warning Alert Message&lt;/Message&gt;<br/>&lt;/AlertComponent&gt;<br/>&lt;AlertComponent Type=SeverityType.Information&gt;<br/> &lt;Title&gt;Information Alert Title&lt;/Title&gt;<br/> &lt;Message&gt;Information Alert Message&lt;/Message&gt;<br/>&lt;/AlertComponent&gt;<br/>&lt;AlertComponent Type=SeverityType.Error&gt;<br/> &lt;Title&gt;Error Alert Title&lt;/Title&gt;<br/> &lt;Message&gt;Error Alert Message&lt;/Message&gt;<br/>&lt;/AlertComponent&gt;<br/>&lt;AlertComponent Type=SeverityType.Success&gt;<br/> &lt;Title&gt;Succsess Alert Title&lt;/Title&gt;<br/> &lt;Message&gt;Succsess Alert Message&lt;/Message&gt;<br/>&lt;/AlertComponent&gt;<br/></CodeComponent>
</Usage>
<Code>
<CodeComponent>@@using Components.Pages.Utils<br/><br/>&lt;div class=&quot;alertContainer @@Type.ToString().ToLower()&quot;&gt;<br/> @@if (Title != null) {<br/> &lt;div class=&quot;alertTitle&quot;&gt;<br/> @@Title<br/> &lt;/div&gt;<br/> }<br/> @@if (Message != null) {<br/> &lt;div&gt;<br/> @@Message<br/> &lt;/div&gt;<br/><br/> }<br/>&lt;/div&gt;<br/>&lt;style&gt;<br/> .alertContainer {<br/> border: 4px solid;<br/> border-radius: 4px;<br/> padding: 16px;<br/> display: flex;<br/> flex-direction: column;<br/> justify-items: stretch;<br/> width: 100%;<br/> }<br/><br/> .alertContainer.@@SeverityType.Warning.ToString().ToLower() {<br/> border-color: #2a2000;<br/> background-color: #ffbf0029;<br/> }<br/><br/> .alertContainer.@@SeverityType.Error.ToString().ToLower() {<br/> border-color: #290102;<br/> background-color: #4C2C33;<br/> }<br/><br/> .alertContainer.@@SeverityType.Information.ToString().ToLower() {<br/> border-color: #030129;<br/> background-color: #2c3a4c;<br/> }<br/><br/> .alertContainer.@@SeverityType.Success.ToString().ToLower() {<br/> border-color: #042901;<br/> background-color: #2E4C2C;<br/> }<br/><br/> .alertTitle {<br/> font-weight: 800;<br/> }<br/><br/>&lt;/style&gt;<br/>@@code {<br/> [Parameter] public RenderFragment? Title { get; set; }<br/> [Parameter] public RenderFragment? Message { get; set; }<br/> [Parameter] public SeverityType Type { get; set; } = SeverityType.Warning;<br/>}</CodeComponent>
</Code>
</MakingOfComponent>
@code {
}

35
IGP/Pages/MakingOf/Parts/MakingOfForms.razor

@ -1,35 +0,0 @@
<MakingOfComponent>
<Title>Form Text</Title>
<Description>Add Text Input</Description>
<Example>
<FormLayoutComponent>
<FormTextComponent Label="Label Text" Info="Info Text" Placeholder="Placeholder Text..." Value="Value Text"/>
<FormTextAreaComponent Label="Label Text" Info="Info Text" Placeholder="Placeholder Text..." Value="Value Text"/>
</FormLayoutComponent>
</Example>
<Usage>
//TODO
</Usage>
<Code>
//TODO
</Code>
</MakingOfComponent>
<MakingOfComponent>
<Title>Form Area</Title>
<Description>Add Text Body Input</Description>
<Example>
<FormTextAreaComponent Label="Label Text" Info="Info Text" Placeholder="Placeholder Text..." Value="Value Text"/>
</Example>
<Usage>
//TODO
</Usage>
<Code>
//TODO
</Code>
</MakingOfComponent>
@code {
}

80
IGP/Pages/MakingOf/Parts/MakingOfNavigation.razor

@ -1,80 +0,0 @@
<MakingOfComponent>
<Title>
Nav Section with Nav Links
</Title>
<Description>
Group specfic webpages. Each webpage link is used to navigate to that specific webpage. If on the webpage, the link turns dark gray. It can be clicked again to leave the page and return to home.
</Description>
<Example>
<DesktopNavSectionComponent Section=@(new WebSectionModel { Name = "Example Section" })
Children=@(new List<WebPageModel> { new() { Name = "Example Page", Href = "immortal-makingof", IsPrivate = "False" }, new() { Name = "Database", Href = "immortal-database", IsPrivate = "False" } })>
</DesktopNavSectionComponent>
</Example>
<Usage>
<CodeComponent>
&lt;DesktopNavSectionComponent Section=@@(new WebSectionModel{Name = &quot;Example Section&quot;})
Children=@@(new List&lt;WebPageModel&gt;{new WebPageModel{Name=&quot;Example Page&quot;, Href = &quot;immortal-makingof&quot;, IsPrivate = false}, new WebPageModel{Name=&quot;Database&quot;, Href = &quot;immortal-database&quot;, IsPrivate = false}})&gt;
&lt;/DesktopNavSectionComponent&gt;
</CodeComponent>
</Usage>
<Code>
<CodeComponent>
@@using Model.Website;
@@using Model.Website.Enums;
&lt;div class=&quot;sectionContainer&quot;&gt;
&lt;div class=&quot;sectionHeader&quot;&gt;
&lt;div class=&quot;sectionTitle&quot;&gt;
@@Section.Name
&lt;/div&gt;
&lt;/div&gt;
@@foreach (var childPage in Children) {
if (childPage.IsPrivate) {
continue;
}
&lt;NavLinkComponent Page=childPage&gt;&lt;/NavLinkComponent&gt;
}
&lt;/div&gt;
&lt;style&gt;
.sectionContainer {
display: flex;
flex-direction: column;
gap: 4px;
justify-content: flex-start;
position: relative;
margin-top: 12px;
padding: 18px;
width: 300px;
margin-left: 4px;
}
.sectionHeader {
bottom: 100%;
position: absolute;
top: 0px;
left: -8px;
padding-right: 12px;
padding-left: 4px;
width: 100%;
display: flex;
line-height: 0px;
}
.sectionTitle {
font-weight: bold;
padding-right: 8px;
margin-top: -2px;
white-space: pre;
}
&lt;/style&gt;
@@code {
[Parameter] public WebSectionModel? Section { get; set; }
[Parameter] public List&lt;WebPageModel&gt;? Children { get; set; }
}
</CodeComponent>
</Code>
</MakingOfComponent>

19
IGP/Pages/RoadMap/Parts/RoadMapComponent.razor

@ -1,19 +0,0 @@
<PanelComponent>
<div class="roadMapTitle">@RoadMap.Name</div>
<div>@((MarkupString)RoadMap.Description)</div>
</PanelComponent>
<style>
.roadMapTitle {
font-weight: 800;
font-size: 1.2rem;
}
</style>
@code {
[Parameter]
public ImmortalRoadMapModel? RoadMap { get; set; }
}

32
IGP/Pages/RoadMap/RoadMapPage.razor

@ -1,32 +0,0 @@
@layout PageLayout
@inherits BasePage
@inject IDataCollectionService DataCollectionService
@page "/roadmap"
<LayoutMediumContentComponent>
<WebsiteTitleComponent>Road Map</WebsiteTitleComponent>
<div class="roadMapsContainer">
@foreach (var roadMap in data)
{
<RoadMapComponent RoadMap=roadMap/>
}
</div>
</LayoutMediumContentComponent>
<style>
.roadMapsContainer {
display: flex;
gap: 20px;
flex-wrap: wrap;
align-items: stretch;
justify-content: center;
}
</style>
@code {
readonly List<ImmortalRoadMapModel> data = ImmortalRoadMapModel.Data;
}

7
IGP/_Imports.razor

@ -8,25 +8,18 @@
@using Components.Shared @using Components.Shared
@using IGP.Dialog @using IGP.Dialog
@using IGP.Pages @using IGP.Pages
@using IGP.Pages.Agile.Parts
@using IGP.Pages.BuildCalculator @using IGP.Pages.BuildCalculator
@using IGP.Pages.BuildCalculator.Parts @using IGP.Pages.BuildCalculator.Parts
@using IGP.Pages.Comparision
@using IGP.Pages.Comparision.Parts
@using IGP.Pages.Database.Entity @using IGP.Pages.Database.Entity
@using IGP.Pages.Database.Entity.Parts @using IGP.Pages.Database.Entity.Parts
@using IGP.Pages.Database.Parts @using IGP.Pages.Database.Parts
@using IGP.Pages.Documentation
@using IGP.Pages.Documentation.Parts
@using IGP.Pages.EconomyComparison @using IGP.Pages.EconomyComparison
@using IGP.Pages.EconomyComparison.Parts @using IGP.Pages.EconomyComparison.Parts
@using IGP.Pages.Home @using IGP.Pages.Home
@using IGP.Pages.Home.Parts @using IGP.Pages.Home.Parts
@using IGP.Pages.MakingOf.Parts
@using IGP.Pages.MemoryTester.Parts @using IGP.Pages.MemoryTester.Parts
@using IGP.Pages.Notes @using IGP.Pages.Notes
@using IGP.Pages.Notes.Parts @using IGP.Pages.Notes.Parts
@using IGP.Pages.RoadMap.Parts
@using IGP.Portals @using IGP.Portals
@using IGP.Utils @using IGP.Utils
@using Markdig @using Markdig

Loading…
Cancel
Save