Compare commits
62 Commits
56d54b5dea
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 46150d3a69 | |||
| 85834466f1 | |||
| 7da6f554a8 | |||
| dc0395c7d3 | |||
| 026aebd5ad | |||
| 3974fcfb91 | |||
| 410e7e23b7 | |||
| 6655cdeee7 | |||
| 1f7a0819fc | |||
| 73f29cea08 | |||
| b63d8330f7 | |||
| ad7aabd9e0 | |||
| 7680fae30b | |||
| 9e9b25ae6f | |||
| cf3f6e647b | |||
| c0ea4a094e | |||
| 1bc78306b8 | |||
| 826717c47f | |||
| a5964a68f8 | |||
| 424fdd248a | |||
| 7ca2f82ad7 | |||
| fd20f8ca7d | |||
| 5d4f141580 | |||
| 2baa295e1f | |||
| b8d2210cc5 | |||
| 8b5d5a05e4 | |||
| 02d6e2f5e9 | |||
| 22d245972c | |||
| c95ee06449 | |||
| df5c5480d8 | |||
| e641189c9d | |||
| 071d2f5e35 | |||
| ff4941d38c | |||
| 4b2fe6d551 | |||
| b02232855d | |||
| f5e8984ab8 | |||
| 2ac56f9672 | |||
| e464b9ecab | |||
| 720a99991f | |||
| 80f44c3931 | |||
| db48f05686 | |||
| e90621c2fd | |||
| 2246847145 | |||
| 3d10256b9f | |||
| 1f71062691 | |||
| 831512a64b | |||
| 8f203b2ba1 | |||
| d320476084 | |||
| e28f74b354 | |||
| 764192891c | |||
| b653a00238 | |||
| 25776b3b00 | |||
| cacbe6979e | |||
| e820457176 | |||
| 38ff4e3e89 | |||
| 65ab4bcf05 | |||
| 0bb95ee9a6 | |||
| f084aedb0b | |||
| 079ced6af7 | |||
| 730bff71ef | |||
| 01d8b383e1 | |||
| 83ee8c3ae4 |
@@ -25,7 +25,7 @@ jobs:
|
|||||||
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_CALM_MUD_04916B210 }}
|
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_CALM_MUD_04916B210 }}
|
||||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
action: "upload"
|
action: "upload"
|
||||||
app_location: "IGP"
|
app_location: "Web"
|
||||||
api_location: ""
|
api_location: ""
|
||||||
output_location: "./wwwroot"
|
output_location: "./wwwroot"
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ jobs:
|
|||||||
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_NICE_COAST_0F8B08010 }}
|
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_NICE_COAST_0F8B08010 }}
|
||||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
action: "upload"
|
action: "upload"
|
||||||
app_location: "IGP"
|
app_location: "Web"
|
||||||
api_location: ""
|
api_location: ""
|
||||||
output_location: "./wwwroot"
|
output_location: "./wwwroot"
|
||||||
|
|
||||||
|
|||||||
@@ -137,6 +137,7 @@ DocProject/Help/html
|
|||||||
|
|
||||||
# Click-Once directory
|
# Click-Once directory
|
||||||
publish/
|
publish/
|
||||||
|
publish_release/
|
||||||
|
|
||||||
# Publish Web Output
|
# Publish Web Output
|
||||||
*.[Pp]ublish.xml
|
*.[Pp]ublish.xml
|
||||||
@@ -264,3 +265,6 @@ __pycache__/
|
|||||||
|
|
||||||
**/.vs/
|
**/.vs/
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|
||||||
|
|
||||||
|
publish_release/
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
3.0
|
||||||
Vendored
+3
-3
@@ -7,7 +7,7 @@
|
|||||||
"type": "process",
|
"type": "process",
|
||||||
"args": [
|
"args": [
|
||||||
"build",
|
"build",
|
||||||
"${workspaceFolder}/IGP/IGP.csproj",
|
"${workspaceFolder}/Web/Web.csproj",
|
||||||
"/property:GenerateFullPaths=true",
|
"/property:GenerateFullPaths=true",
|
||||||
"/consoleloggerparameters:NoSummary"
|
"/consoleloggerparameters:NoSummary"
|
||||||
],
|
],
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
"type": "process",
|
"type": "process",
|
||||||
"args": [
|
"args": [
|
||||||
"publish",
|
"publish",
|
||||||
"${workspaceFolder}/IGP/IGP.csproj",
|
"${workspaceFolder}/Web/Web.csproj",
|
||||||
"/property:GenerateFullPaths=true",
|
"/property:GenerateFullPaths=true",
|
||||||
"/consoleloggerparameters:NoSummary"
|
"/consoleloggerparameters:NoSummary"
|
||||||
],
|
],
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
"watch",
|
"watch",
|
||||||
"run",
|
"run",
|
||||||
"--project",
|
"--project",
|
||||||
"${workspaceFolder}/IGP/IGP.csproj"
|
"${workspaceFolder}/Web/Web.csproj"
|
||||||
],
|
],
|
||||||
"problemMatcher": "$msCompile"
|
"problemMatcher": "$msCompile"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<RootNamespace>IGP.Calculator.Cli</RootNamespace>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\Services\Services.csproj" />
|
||||||
|
<ProjectReference Include="..\Model\Model.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
+155
@@ -0,0 +1,155 @@
|
|||||||
|
using IGP.Calculator.Cli.Services;
|
||||||
|
using Model.Entity;
|
||||||
|
using Model.Entity.Data;
|
||||||
|
using Services.Immortal;
|
||||||
|
using Services.Website;
|
||||||
|
|
||||||
|
var faction = DataType.FACTION_QRath;
|
||||||
|
var immortal = DataType.IMMORTAL_Orzum;
|
||||||
|
var attackTime = 1500;
|
||||||
|
var entityNames = new List<string>();
|
||||||
|
|
||||||
|
for (var i = 0; i < args.Length; i++)
|
||||||
|
switch (args[i].ToLower())
|
||||||
|
{
|
||||||
|
case "--faction" when i + 1 < args.Length:
|
||||||
|
var f = args[++i].ToLower();
|
||||||
|
faction = f switch
|
||||||
|
{
|
||||||
|
"qrath" => DataType.FACTION_QRath,
|
||||||
|
"aru" => DataType.FACTION_Aru,
|
||||||
|
_ => throw new Exception($"Unknown faction '{args[i]}'. Use QRath or Aru.")
|
||||||
|
};
|
||||||
|
immortal = f switch
|
||||||
|
{
|
||||||
|
"qrath" => DataType.IMMORTAL_Orzum,
|
||||||
|
"aru" => DataType.IMMORTAL_Mala,
|
||||||
|
_ => immortal
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
case "--immortal" when i + 1 < args.Length:
|
||||||
|
var im = args[++i];
|
||||||
|
immortal = im switch
|
||||||
|
{
|
||||||
|
nameof(DataType.IMMORTAL_Orzum) => DataType.IMMORTAL_Orzum,
|
||||||
|
nameof(DataType.IMMORTAL_Ajari) => DataType.IMMORTAL_Ajari,
|
||||||
|
nameof(DataType.IMMORTAL_Atzlan) => DataType.IMMORTAL_Atzlan,
|
||||||
|
nameof(DataType.IMMORTAL_Mala) => DataType.IMMORTAL_Mala,
|
||||||
|
nameof(DataType.IMMORTAL_Xol) => DataType.IMMORTAL_Xol,
|
||||||
|
_ => throw new Exception($"Unknown immortal '{im}'.")
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
case "--attack-time" or "-a" when i + 1 < args.Length:
|
||||||
|
attackTime = int.Parse(args[++i]);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
entityNames.Add(args[i]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
var toastService = new ToastService();
|
||||||
|
var storageService = new NullStorageService();
|
||||||
|
var timingService = new TimingService(storageService);
|
||||||
|
timingService.SetAttackTime(attackTime);
|
||||||
|
var buildOrderService = new BuildOrderService(toastService, timingService);
|
||||||
|
var economyService = new EconomyService();
|
||||||
|
|
||||||
|
buildOrderService.Reset(faction);
|
||||||
|
economyService.Calculate(buildOrderService, timingService, 0);
|
||||||
|
|
||||||
|
Console.WriteLine($"Faction: {(faction == DataType.FACTION_QRath ? "Q'Rath" : "Aru")}");
|
||||||
|
Console.WriteLine($"Immortal: {immortal.Replace("IMMORTAL_", "")}");
|
||||||
|
Console.WriteLine($"Attack Time: {attackTime}s");
|
||||||
|
Console.WriteLine(new string('-', 50));
|
||||||
|
|
||||||
|
foreach (var name in entityNames)
|
||||||
|
{
|
||||||
|
if (name.StartsWith("wait ", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
var seconds = int.Parse(name[5..]);
|
||||||
|
buildOrderService.AddWait(seconds);
|
||||||
|
economyService.Calculate(buildOrderService, timingService, buildOrderService.GetLastRequestInterval());
|
||||||
|
Console.WriteLine($" Wait {seconds}s -> now at interval {buildOrderService.GetLastRequestInterval()}");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (name.StartsWith("waitto ", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
var interval = int.Parse(name[7..]);
|
||||||
|
buildOrderService.AddWaitTo(interval);
|
||||||
|
economyService.Calculate(buildOrderService, timingService, buildOrderService.GetLastRequestInterval());
|
||||||
|
Console.WriteLine($" Wait to {interval}s -> now at interval {buildOrderService.GetLastRequestInterval()}");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var entity = FindEntity(name, faction, immortal);
|
||||||
|
if (entity == null)
|
||||||
|
{
|
||||||
|
Console.WriteLine($" ERROR: '{name}' not found for this faction/immortal.");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var beforeInterval = buildOrderService.GetLastRequestInterval();
|
||||||
|
var added = buildOrderService.Add(entity, economyService);
|
||||||
|
if (added)
|
||||||
|
{
|
||||||
|
economyService.Calculate(buildOrderService, timingService, buildOrderService.GetLastRequestInterval());
|
||||||
|
var startedAt = buildOrderService.GetLastRequestInterval();
|
||||||
|
var production = entity.Production();
|
||||||
|
var completedAt = production != null ? startedAt + production.BuildTime : startedAt;
|
||||||
|
var cost = production != null
|
||||||
|
? $" [{production.Alloy}a/{production.Ether}e/{production.Pyre}p, {production.BuildTime}s]"
|
||||||
|
: "";
|
||||||
|
Console.WriteLine($" {entity.GetName(),-25} start={startedAt,4}s done={completedAt,4}s{cost}");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Console.WriteLine($" ERROR: Could not add '{name}'.");
|
||||||
|
var toasts = toastService.GetToasts();
|
||||||
|
if (toasts.Count > 0)
|
||||||
|
{
|
||||||
|
var lastToast = toasts[0];
|
||||||
|
Console.WriteLine($" Reason: {lastToast.Title} - {lastToast.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Console.WriteLine(new string('-', 50));
|
||||||
|
|
||||||
|
var lastInterval = buildOrderService.GetLastRequestInterval();
|
||||||
|
var finalEconomy = economyService.GetEconomy(timingService.GetAttackTime());
|
||||||
|
var lastEconomy = economyService.GetEconomy(lastInterval);
|
||||||
|
|
||||||
|
Console.WriteLine($"Army Attacking At: {timingService.GetAttackTime()}s");
|
||||||
|
Console.WriteLine("");
|
||||||
|
Console.WriteLine($"At attack time ({timingService.GetAttackTime()}s):");
|
||||||
|
Console.WriteLine($" Alloy: {finalEconomy.Alloy,10:F1}");
|
||||||
|
Console.WriteLine($" Ether: {finalEconomy.Ether,10:F1}");
|
||||||
|
Console.WriteLine($" Pyre: {finalEconomy.Pyre,10:F1}");
|
||||||
|
Console.WriteLine("");
|
||||||
|
Console.WriteLine($"At last build action ({lastInterval}s):");
|
||||||
|
Console.WriteLine($" Alloy: {lastEconomy.Alloy,10:F1}");
|
||||||
|
Console.WriteLine($" Ether: {lastEconomy.Ether,10:F1}");
|
||||||
|
Console.WriteLine($" Pyre: {lastEconomy.Pyre,10:F1}");
|
||||||
|
|
||||||
|
static EntityModel? FindEntity(string name, string faction, string immortal)
|
||||||
|
{
|
||||||
|
var candidates = EntityModel.GetList()
|
||||||
|
.Where(e => e.Info()?.Name?.Equals(name, StringComparison.OrdinalIgnoreCase) == true)
|
||||||
|
.Where(e => e.Faction()?.Faction == faction)
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
if (candidates.Count == 0)
|
||||||
|
candidates = EntityModel.GetList()
|
||||||
|
.Where(e => e.Info()?.Name?.Equals(name, StringComparison.OrdinalIgnoreCase) == true)
|
||||||
|
.Where(e => e.Faction() == null || e.Faction()!.Faction == DataType.FACTION_Neutral)
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
if (candidates.Count == 0) return null;
|
||||||
|
if (candidates.Count == 1) return candidates[0];
|
||||||
|
|
||||||
|
var vanguardMatch = candidates.FirstOrDefault(e => e.VanguardAdded()?.ImmortalId == immortal);
|
||||||
|
if (vanguardMatch != null) return vanguardMatch;
|
||||||
|
|
||||||
|
return candidates.FirstOrDefault(e => e.VanguardAdded() == null);
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
using Services;
|
||||||
|
|
||||||
|
namespace IGP.Calculator.Cli.Services;
|
||||||
|
|
||||||
|
public class NullStorageService : IStorageService
|
||||||
|
{
|
||||||
|
private readonly Dictionary<string, object?> _store = new();
|
||||||
|
|
||||||
|
public void Subscribe(Action action)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Unsubscribe(Action action)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public T GetValue<T>(string forKey)
|
||||||
|
{
|
||||||
|
if (_store.TryGetValue(forKey, out var value) && value is T typed)
|
||||||
|
return typed;
|
||||||
|
return default!;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetValue<T>(string key, T value)
|
||||||
|
{
|
||||||
|
_store[key] = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task Load()
|
||||||
|
{
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,9 +1,10 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk.Razor">
|
<Project Sdk="Microsoft.NET.Sdk.Razor">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<RootNamespace>Components</RootNamespace>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
|
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
|
||||||
@@ -15,17 +16,17 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<SupportedPlatform Include="browser" />
|
<SupportedPlatform Include="browser"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Markdig" Version="0.28.1" />
|
<PackageReference Include="Markdig" Version="0.28.1"/>
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="6.0.8" />
|
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="8.0.14"/>
|
||||||
<PackageReference Include="Microsoft.Extensions.Localization" Version="7.0.0-preview.7.22376.6" />
|
<PackageReference Include="Microsoft.Extensions.Localization" Version="8.0.14"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Folder Include="Inputs\" />
|
<Folder Include="Inputs\"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -33,6 +34,6 @@
|
|||||||
<ProjectReference Include="..\Services\Services.csproj" />
|
<ProjectReference Include="..\Services\Services.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Remove="Inputs\" />
|
<None Remove="Inputs\"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -21,7 +21,6 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment ChildContent { get; set; } = default!;
|
||||||
public RenderFragment ChildContent { get; set; } = default!;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.devOnlyTitle {
|
.devOnlyTitle {
|
||||||
background-color: rgba(20,20,20,0.75);
|
background-color: rgba(20, 20, 20, 0.75);
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
color: orange;
|
color: orange;
|
||||||
font-weight: bolder;
|
font-weight: bolder;
|
||||||
@@ -30,14 +30,14 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.devOnlyContent {
|
.devOnlyContent {
|
||||||
background-color: rgba(20,20,20,0.75);
|
background-color: rgba(20, 20, 20, 0.75);
|
||||||
width: 100%;
|
width: 100%;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.devOnlyTitleContainer {
|
.devOnlyTitleContainer {
|
||||||
background: repeating-linear-gradient( 45deg, blue, blue 50px, orange 51px, orange 100px);
|
background: repeating-linear-gradient(45deg, blue, blue 50px, orange 51px, orange 100px);
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
border-left: 6px dashed orange;
|
border-left: 6px dashed orange;
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
|
|
||||||
.devOnlyContentContainer {
|
.devOnlyContentContainer {
|
||||||
border: 6px dashed orange;
|
border: 6px dashed orange;
|
||||||
background: repeating-linear-gradient( 45deg, blue, blue 50px, orange 51px, orange 100px);
|
background: repeating-linear-gradient(45deg, blue, blue 50px, orange 51px, orange 100px);
|
||||||
box-shadow: 5px 5px 5px blue;
|
box-shadow: 5px 5px 5px blue;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
}
|
}
|
||||||
@@ -58,11 +58,9 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Inject]
|
[Inject] NavigationManager NavigationManager { get; set; } = default!;
|
||||||
NavigationManager NavigationManager { get; set; } = default!;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment ChildContent { get; set; } = default!;
|
||||||
public RenderFragment ChildContent { get; set; } = default!;
|
|
||||||
|
|
||||||
bool isOnDev;
|
bool isOnDev;
|
||||||
|
|
||||||
|
|||||||
@@ -69,10 +69,8 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment ChildContent { get; set; } = default!;
|
||||||
public RenderFragment ChildContent { get; set; } = default!;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string Title { get; set; } = default!;
|
||||||
public string Title { get; set; } = default!;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
border: 1px solid var(--info-secondary-border);
|
border: 1px solid var(--info-secondary-border);
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
|
|
||||||
box-shadow: 0 3px 8px rgba(0,0,0,0.5);
|
box-shadow: 0 3px 8px rgba(0, 0, 0, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -55,13 +55,10 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment ChildContent { get; set; } = default!;
|
||||||
public RenderFragment ChildContent { get; set; } = default!;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string InfoText { get; set; } = default!;
|
||||||
public string InfoText { get; set; } = default!;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public int? Margin { get; set; }
|
||||||
public int? Margin { get; set; }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -70,13 +70,13 @@
|
|||||||
.makingOfContainer summary {
|
.makingOfContainer summary {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
padding: 12px;
|
padding: 12px;
|
||||||
background-color: rgba(0,0,0, 0.1);
|
background-color: rgba(0, 0, 0, 0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.shownCode {
|
.shownCode {
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
padding: 12px;
|
padding: 12px;
|
||||||
background-color: rgba(0,0,0, 0.1);
|
background-color: rgba(0, 0, 0, 0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.makingOfContainer details[open] .shownCode {
|
.makingOfContainer details[open] .shownCode {
|
||||||
@@ -97,20 +97,15 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment Title { get; set; } = default!;
|
||||||
public RenderFragment Title { get; set; } = default!;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment Description { get; set; } = default!;
|
||||||
public RenderFragment Description { get; set; } = default!;
|
|
||||||
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment Example { get; set; } = default!;
|
||||||
public RenderFragment Example { get; set; } = default!;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment Usage { get; set; } = default!;
|
||||||
public RenderFragment Usage { get; set; } = default!;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment Code { get; set; } = default!;
|
||||||
public RenderFragment Code { get; set; } = default!;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
<style>
|
<style>
|
||||||
.makingOfSection {
|
.makingOfSection {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
background-color: rgba(0,0,0, 0.1);
|
background-color: rgba(0, 0, 0, 0.1);
|
||||||
padding: 25px;
|
padding: 25px;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
border: 2px black dashed;
|
border: 2px black dashed;
|
||||||
@@ -22,11 +22,9 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string Title { get; set; } = default!;
|
||||||
public string Title { get; set; } = default!;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment ChildContent { get; set; } = default!;
|
||||||
public RenderFragment ChildContent { get; set; } = default!;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -15,7 +15,6 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment ChildContent { get; set; } = default!;
|
||||||
public RenderFragment ChildContent { get; set; } = default!;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -18,10 +18,8 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment ChildContent { get; set; } = default!;
|
||||||
public RenderFragment ChildContent { get; set; } = default!;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string Title { get; set; } = default!;
|
||||||
public string Title { get; set; } = default!;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -52,13 +52,10 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment? Title { get; set; }
|
||||||
public RenderFragment? Title { get; set; }
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment? Message { get; set; }
|
||||||
public RenderFragment? Message { get; set; }
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string Type { get; set; } = SeverityType.Warning;
|
||||||
public string Type { get; set; } = SeverityType.Warning;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -58,11 +58,10 @@ else
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public ToastModel? Toast { get; set; }
|
||||||
public ToastModel? Toast { get; set; } = default!;
|
|
||||||
|
|
||||||
private float removalTime = 1300;
|
private readonly float removalTime = 1300;
|
||||||
private float fadeoutTime = 1200;
|
private readonly float fadeoutTime = 1200;
|
||||||
|
|
||||||
private float Opacity()
|
private float Opacity()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -51,20 +51,15 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string Label { get; set; } = "";
|
||||||
public string Label { get; set; } = "";
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string Info { get; set; } = "";
|
||||||
public string Info { get; set; } = "";
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public EventCallback<ChangeEventArgs> OnChange { get; set; }
|
||||||
public EventCallback<ChangeEventArgs> OnChange { get; set; }
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public bool ReadOnly { get; set; }
|
||||||
public bool ReadOnly { get; set; }
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public bool Value { get; set; }
|
||||||
public bool Value { get; set; }
|
|
||||||
|
|
||||||
private string labelId = "";
|
private string labelId = "";
|
||||||
|
|
||||||
|
|||||||
@@ -35,23 +35,18 @@
|
|||||||
</style>
|
</style>
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
//TODO Clean up
|
//TODO Clean up
|
||||||
[Parameter]
|
[Parameter] public string Label { get; set; } = default!;
|
||||||
public string Label { get; set; } = default!;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string Info { get; set; } = default!;
|
||||||
public string Info { get; set; } = default!;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment? Display { get; set; }
|
||||||
public RenderFragment? Display { get; set; }
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public EventCallback<ChangeEventArgs> OnChange { get; set; }
|
||||||
public EventCallback<ChangeEventArgs> OnChange { get; set; }
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public bool? ReadOnly { get; set; }
|
||||||
public bool? ReadOnly { get; set; }
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string? Value { get; set; }
|
||||||
public string? Value { get; set; }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -2,11 +2,11 @@
|
|||||||
<div class="escapeCodeContainer">
|
<div class="escapeCodeContainer">
|
||||||
<textarea style="background-color: #2C2E33; width: 100%; border:3px solid #A8ADB9; border-radius:1px; padding: 8px;"
|
<textarea style="background-color: #2C2E33; width: 100%; border:3px solid #A8ADB9; border-radius:1px; padding: 8px;"
|
||||||
rows="8"
|
rows="8"
|
||||||
@onchange="OnChange" />
|
@onchange="OnChange"/>
|
||||||
|
|
||||||
<textarea style="background-color: #2C2E33; width: 100%; border:3px solid #A8ADB9; border-radius:1px; padding: 8px;"
|
<textarea style="background-color: #2C2E33; width: 100%; border:3px solid #A8ADB9; border-radius:1px; padding: 8px;"
|
||||||
rows="8"
|
rows="8"
|
||||||
@bind="Output" />
|
@bind="Output"/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
}
|
}
|
||||||
<div>
|
<div>
|
||||||
<input readonly="@MemoryQuestion.IsRevealed"
|
<input readonly="@MemoryQuestion.IsRevealed"
|
||||||
class="formTextInput @(MemoryQuestion.IsRevealed ? "revealed" : IsSubmitted == false ? "guess" : int.Parse(guess ?? string.Empty) == MemoryQuestion.Answer ? "correct" : "wrong")"
|
class="formTextInput @(MemoryQuestion.IsRevealed ? "revealed" : !IsSubmitted ? "guess" : int.Parse(guess ?? string.Empty) == MemoryQuestion.Answer ? "correct" : "wrong")"
|
||||||
placeholder="guess..."
|
placeholder="guess..."
|
||||||
type="number"
|
type="number"
|
||||||
value="@guess"
|
value="@guess"
|
||||||
@@ -73,20 +73,15 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string Label { get; set; } = "";
|
||||||
public string Label { get; set; } = "";
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string Info { get; set; } = "";
|
||||||
public string Info { get; set; } = "";
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public EventCallback<AnswerEventArgs> OnChange { get; set; }
|
||||||
public EventCallback<AnswerEventArgs> OnChange { get; set; } = default!;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public MemoryQuestionModel MemoryQuestion { get; set; } = default!;
|
||||||
public MemoryQuestionModel MemoryQuestion { get; set; } = default!;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public bool IsSubmitted { get; set; }
|
||||||
public bool IsSubmitted { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
private string? guess = "";
|
private string? guess = "";
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment? ChildContent { get; set; }
|
||||||
public RenderFragment? ChildContent { get; set; }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -4,7 +4,6 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment? ChildContent { get; set; }
|
||||||
public RenderFragment? ChildContent { get; set; }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -4,7 +4,6 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment? ChildContent { get; set; }
|
||||||
public RenderFragment? ChildContent { get; set; }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -38,17 +38,13 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment? FormLabelComponent { get; set; }
|
||||||
public RenderFragment? FormLabelComponent { get; set; }
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string Id { get; set; } = default!;
|
||||||
public string Id { get; set; } = default!;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment? FormInfoComponent { get; set; }
|
||||||
public RenderFragment? FormInfoComponent { get; set; }
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public EventCallback<ChangeEventArgs> OnChange { get; set; }
|
||||||
public EventCallback<ChangeEventArgs> OnChange { get; set; }
|
|
||||||
|
|
||||||
void OnInputChanged(ChangeEventArgs changeEventArgs)
|
void OnInputChanged(ChangeEventArgs changeEventArgs)
|
||||||
{
|
{
|
||||||
@@ -73,16 +69,12 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public bool ReadOnly { get; set; }
|
||||||
public bool ReadOnly { get; set; } = false;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public int Value { get; set; }
|
||||||
public int Value { get; set; } = 0;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public int Min { get; set; }
|
||||||
public int Min { get; set; } = 0;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public int Max { get; set; } = 2048;
|
||||||
public int Max { get; set; } = 2048;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -17,16 +17,12 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment? FormLabelComponent { get; set; }
|
||||||
public RenderFragment? FormLabelComponent { get; set; }
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment? FormInfoComponent { get; set; }
|
||||||
public RenderFragment? FormInfoComponent { get; set; }
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment? ChildContent { get; set; }
|
||||||
public RenderFragment? ChildContent { get; set; }
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public EventCallback<ChangeEventArgs> OnChange { get; set; }
|
||||||
public EventCallback<ChangeEventArgs> OnChange { get; set; }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
type="text"
|
type="text"
|
||||||
rows="@Rows"
|
rows="@Rows"
|
||||||
value="@Value"
|
value="@Value"
|
||||||
@onchange="OnChange" />
|
@onchange="OnChange"/>
|
||||||
</div>
|
</div>
|
||||||
@if (Info != "")
|
@if (Info != "")
|
||||||
{
|
{
|
||||||
@@ -56,32 +56,23 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment? FormLabelComponent { get; set; }
|
||||||
public RenderFragment? FormLabelComponent { get; set; }
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment? FormInfoComponent { get; set; }
|
||||||
public RenderFragment? FormInfoComponent { get; set; }
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public EventCallback<ChangeEventArgs> OnChange { get; set; }
|
||||||
public EventCallback<ChangeEventArgs> OnChange { get; set; }
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public bool? ReadOnly { get; set; }
|
||||||
public bool? ReadOnly { get; set; }
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string? Value { get; set; }
|
||||||
public string? Value { get; set; }
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public int Rows { get; set; } = 4;
|
||||||
public int Rows { get; set; } = 4;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string Label { get; set; } = "";
|
||||||
public string Label { get; set; } = "";
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string Info { get; set; } = "";
|
||||||
public string Info { get; set; } = "";
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string Placeholder { get; set; } = "";
|
||||||
public string Placeholder { get; set; } = "";
|
|
||||||
|
|
||||||
private string labelId = "";
|
private string labelId = "";
|
||||||
|
|
||||||
|
|||||||
@@ -52,34 +52,25 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string Id { get; set; } = "";
|
||||||
public string Id { get; set; } = "";
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string Label { get; set; } = "";
|
||||||
public string Label { get; set; } = "";
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string Info { get; set; } = "";
|
||||||
public string Info { get; set; } = "";
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string Placeholder { get; set; } = "";
|
||||||
public string Placeholder { get; set; } = "";
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public EventCallback<ChangeEventArgs> OnInput { get; set; }
|
||||||
public EventCallback<ChangeEventArgs> OnInput { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public EventCallback<ChangeEventArgs> OnChange { get; set; }
|
||||||
public EventCallback<ChangeEventArgs> OnChange { get; set; }
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public EventCallback OnFocus { get; set; }
|
||||||
public EventCallback OnFocus { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public bool ReadOnly { get; set; }
|
||||||
public bool ReadOnly { get; set; }
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string Value { get; set; } = "";
|
||||||
public string Value { get; set; } = "";
|
|
||||||
|
|
||||||
private string labelId = "";
|
private string labelId = "";
|
||||||
|
|
||||||
|
|||||||
@@ -98,20 +98,15 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string Label { get; set; } = "";
|
||||||
public string Label { get; set; } = "";
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string Info { get; set; } = "";
|
||||||
public string Info { get; set; } = "";
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public EventCallback<ChangeEventArgs> OnChange { get; set; }
|
||||||
public EventCallback<ChangeEventArgs> OnChange { get; set; }
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public bool ReadOnly { get; set; }
|
||||||
public bool ReadOnly { get; set; }
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public bool Value { get; set; }
|
||||||
public bool Value { get; set; }
|
|
||||||
|
|
||||||
private string labelId = "";
|
private string labelId = "";
|
||||||
|
|
||||||
|
|||||||
@@ -37,10 +37,8 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment? InfoQuestionComponent { get; set; }
|
||||||
public RenderFragment? InfoQuestionComponent { get; set; }
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment? InfoAnswerComponent { get; set; }
|
||||||
public RenderFragment? InfoAnswerComponent { get; set; }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -36,14 +36,11 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment ChildContent { get; set; } = default!;
|
||||||
public RenderFragment ChildContent { get; set; } = default!;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public EventCallback<EventArgs> OnClick { get; set; }
|
||||||
public EventCallback<EventArgs> OnClick { get; set; } = default!;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public MyButtonType MyButtonType { get; set; }
|
||||||
public MyButtonType MyButtonType { get; set; } = default!;
|
|
||||||
|
|
||||||
private void ButtonClicked(EventArgs eventArgs)
|
private void ButtonClicked(EventArgs eventArgs)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -7,76 +7,75 @@
|
|||||||
{
|
{
|
||||||
styleClass = "selected";
|
styleClass = "selected";
|
||||||
}
|
}
|
||||||
|
|
||||||
<button @onclick="@(e => OnChangeChoice(choice))" class="groupChoiceButton @styleClass">@choice</button>
|
<button @onclick="@(e => OnChangeChoice(choice))" class="groupChoiceButton @styleClass">@choice</button>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<style>
|
<style>
|
||||||
|
|
||||||
.groupButtonContainerContainer {
|
.groupButtonContainerContainer {
|
||||||
margin: auto;
|
margin: auto;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
justify-items: flex-start;
|
justify-items: flex-start;
|
||||||
}
|
}
|
||||||
.groupButtonContainer {
|
|
||||||
|
.groupButtonContainer {
|
||||||
display: flex;
|
display: flex;
|
||||||
background-color: var(--background);
|
background-color: var(--background);
|
||||||
gap: 2px;
|
gap: 2px;
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.groupChoiceButton {
|
.groupChoiceButton {
|
||||||
background-color: var(--primary);
|
background-color: var(--primary);
|
||||||
color: white;
|
color: white;
|
||||||
padding: 12px;
|
padding: 12px;
|
||||||
border: 1px solid var(--primary);
|
border: 1px solid var(--primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
.groupChoiceButton:hover {
|
.groupChoiceButton:hover {
|
||||||
background-color: var(--primary-hover);
|
background-color: var(--primary-hover);
|
||||||
border-color: var(--primary-border-hover);
|
border-color: var(--primary-border-hover);
|
||||||
}
|
}
|
||||||
|
|
||||||
.selected {
|
.selected {
|
||||||
background-color: var(--secondary);
|
background-color: var(--secondary);
|
||||||
color: white;
|
color: white;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.selected:hover {
|
.selected:hover {
|
||||||
background-color: var(--secondary-hover);
|
background-color: var(--secondary-hover);
|
||||||
border-color: var(--secondary-border-hover);
|
border-color: var(--secondary-border-hover);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.groupButtonContainer .groupChoiceButton:first-child {
|
.groupButtonContainer .groupChoiceButton:first-child {
|
||||||
border-top-left-radius: 8px;
|
border-top-left-radius: 8px;
|
||||||
border-bottom-left-radius: 8px;
|
border-bottom-left-radius: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.groupButtonContainer .groupChoiceButton:last-child {
|
.groupButtonContainer .groupChoiceButton:last-child {
|
||||||
border-top-right-radius: 8px;
|
border-top-right-radius: 8px;
|
||||||
border-bottom-right-radius: 8px;
|
border-bottom-right-radius: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string Choice { get; set; } = default!;
|
||||||
public string Choice { get; set; } = default!;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public List<string> Choices { get; set; } = default!;
|
||||||
public List<string> Choices { get; set; } = default!;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public EventCallback<string> OnClick { get; set; }
|
||||||
public EventCallback<string> OnClick { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
protected override void OnInitialized()
|
protected override void OnInitialized()
|
||||||
|
|||||||
@@ -23,7 +23,6 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string Href { get; set; } = "";
|
||||||
public string Href { get; set; } = "";
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -23,7 +23,6 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string Href { get; set; } = "";
|
||||||
public string Href { get; set; } = "";
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -14,10 +14,9 @@ else
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string EntityId { get; set; } = default!;
|
||||||
public string EntityId { get; set; } = default!;
|
|
||||||
|
|
||||||
private EntityModel Entity => DATA.Get()[EntityId];
|
private EntityModel Entity => EntityData.Get()[EntityId];
|
||||||
|
|
||||||
void EntityLabelClicked()
|
void EntityLabelClicked()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -24,12 +24,10 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment ChildContent { get; set; } = default!;
|
||||||
public RenderFragment ChildContent { get; set; } = default!;
|
|
||||||
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string Href { get; set; } = "";
|
||||||
public string Href { get; set; } = "";
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -37,19 +37,17 @@
|
|||||||
|
|
||||||
.searchHotkey {
|
.searchHotkey {
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
background-color: rgba(255,255,255,0.05);
|
background-color: rgba(255, 255, 255, 0.05);
|
||||||
border: 2px solid rgba(255,255,255,0.25);
|
border: 2px solid rgba(255, 255, 255, 0.25);
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment ChildContent { get; set; } = default!;
|
||||||
public RenderFragment ChildContent { get; set; } = default!;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string Id { get; set; } = default!;
|
||||||
public string Id { get; set; } = default!;
|
|
||||||
|
|
||||||
private string _userAgent = "";
|
private string _userAgent = "";
|
||||||
|
|
||||||
|
|||||||
@@ -29,11 +29,9 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment ChildContent { get; set; } = default!;
|
||||||
public RenderFragment ChildContent { get; set; } = default!;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string Id { get; set; } = default!;
|
||||||
public string Id { get; set; } = default!;
|
|
||||||
|
|
||||||
private void ButtonClicked(EventArgs eventArgs)
|
private void ButtonClicked(EventArgs eventArgs)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -12,7 +12,6 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment? ChildContent { get; set; }
|
||||||
public RenderFragment? ChildContent { get; set; }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -23,7 +23,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@media only screen and (min-width: 1024px) {
|
@@media only screen and (min-width: 1024px) {
|
||||||
.lrg_container {
|
.lrg_container {
|
||||||
margin-top: 50px;
|
margin-top: 50px;
|
||||||
@@ -34,7 +33,6 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment? ChildContent { get; set; }
|
||||||
public RenderFragment? ChildContent { get; set; }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -33,7 +33,6 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment? ChildContent { get; set; }
|
||||||
public RenderFragment? ChildContent { get; set; }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -29,7 +29,6 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment? ChildContent { get; set; }
|
||||||
public RenderFragment? ChildContent { get; set; }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -21,7 +21,6 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment? ChildContent { get; set; }
|
||||||
public RenderFragment? ChildContent { get; set; }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -39,7 +39,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@media only screen and (min-width: 1024px) {
|
@@media only screen and (min-width: 1024px) {
|
||||||
.layoutWithSidebar {
|
.layoutWithSidebar {
|
||||||
margin-top: 50px;
|
margin-top: 50px;
|
||||||
@@ -50,10 +49,8 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment Sidebar { get; set; } = default!;
|
||||||
public RenderFragment Sidebar { get; set; } = default!;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment Content { get; set; } = default!;
|
||||||
public RenderFragment Content { get; set; } = default!;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -24,7 +24,6 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment ChildContent { get; set; } = default!;
|
||||||
public RenderFragment ChildContent { get; set; } = default!;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -21,7 +21,6 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment? ChildContent { get; set; }
|
||||||
public RenderFragment? ChildContent { get; set; }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -3,11 +3,9 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Inject]
|
[Inject] protected HttpClient Http { get; set; } = default!;
|
||||||
protected HttpClient Http { get; set; } = default!;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public string MarkdownFileName { get; set; } = default!;
|
||||||
public string MarkdownFileName { get; set; } = default!;
|
|
||||||
|
|
||||||
private string MarkdownText { get; set; } = "";
|
private string MarkdownText { get; set; } = "";
|
||||||
|
|
||||||
|
|||||||
@@ -62,7 +62,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.clickOffBackground.clickOffVisible {
|
.clickOffBackground.clickOffVisible {
|
||||||
visibility:visible;
|
visibility: visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sectionButton {
|
.sectionButton {
|
||||||
@@ -78,7 +78,7 @@
|
|||||||
left: 0;
|
left: 0;
|
||||||
width: 100vw;
|
width: 100vw;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
background-color: rgba(255,255,255,0.1);
|
background-color: rgba(255, 255, 255, 0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.menuHeader {
|
.menuHeader {
|
||||||
@@ -106,11 +106,11 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sectionNav {
|
.sectionNav {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.websiteTitle {
|
.websiteTitle {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
@@ -166,11 +166,9 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public List<WebSectionModel> WebSections { get; set; } = default!;
|
||||||
public List<WebSectionModel> WebSections { get; set; } = default!;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public List<WebPageModel> WebPages { get; set; } = default!;
|
||||||
public List<WebPageModel> WebPages { get; set; } = default!;
|
|
||||||
|
|
||||||
|
|
||||||
protected override void OnInitialized()
|
protected override void OnInitialized()
|
||||||
|
|||||||
@@ -12,7 +12,9 @@
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
<NavLink target="@Links.GetTarget(Page.Href)" @onclick="() => { NavigationService.ChangeNavigationState(NavigationStateType.Default); NavigationService.ChangeNavigationSectionId(-1); }" href="@Page.Href" class="desktopNavLink">
|
<NavLink target="@Links.GetTarget(Page.Href)"
|
||||||
|
@onclick="() => { NavigationService.ChangeNavigationState(NavigationStateType.Default); NavigationService.ChangeNavigationSectionId(-1); }"
|
||||||
|
href="@Page.Href" class="desktopNavLink">
|
||||||
<div class="navName">
|
<div class="navName">
|
||||||
@Page.Name
|
@Page.Name
|
||||||
</div>
|
</div>
|
||||||
@@ -65,10 +67,9 @@ else
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public WebPageModel Page { get; set; } = default!;
|
||||||
public WebPageModel Page { get; set; } = default!;
|
|
||||||
|
|
||||||
bool isOnPage = false;
|
bool isOnPage;
|
||||||
|
|
||||||
protected override Task OnParametersSetAsync()
|
protected override Task OnParametersSetAsync()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
<DesktopNavLinkComponent Page=childPage></DesktopNavLinkComponent>
|
<DesktopNavLinkComponent Page=childPage></DesktopNavLinkComponent>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
@@ -24,7 +25,6 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public WebSectionModel Section { get; set; } = default!;
|
||||||
public WebSectionModel Section { get; set; } = default!;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -2,7 +2,8 @@
|
|||||||
<div class="mobileNavSectionsContainer">
|
<div class="mobileNavSectionsContainer">
|
||||||
@foreach (var webSection in WebSections)
|
@foreach (var webSection in WebSections)
|
||||||
{
|
{
|
||||||
<div class="mobileNavSectionButton" @onclick="() => OnSectionClicked(webSection)" @onclick:preventDefault="true" @onclick:stopPropagation="true">
|
<div class="mobileNavSectionButton" @onclick="() => OnSectionClicked(webSection)"
|
||||||
|
@onclick:preventDefault="true" @onclick:stopPropagation="true">
|
||||||
<div class="mobileNavSectionButtonText">
|
<div class="mobileNavSectionButtonText">
|
||||||
<i class="fa-solid @webSection.Icon" style="font-size: 28px;"></i>
|
<i class="fa-solid @webSection.Icon" style="font-size: 28px;"></i>
|
||||||
</div>
|
</div>
|
||||||
@@ -11,7 +12,8 @@
|
|||||||
<SearchIconButtonComponent/>
|
<SearchIconButtonComponent/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="fullPageButton @(selectedSection != null)" @onclick="OnPageClicked" @onclick:stopPropagation="false" @onclick:preventDefault="false">
|
<div class="fullPageButton @(selectedSection != null)" @onclick="OnPageClicked" @onclick:stopPropagation="false"
|
||||||
|
@onclick:preventDefault="false">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@if (selectedSection != null)
|
@if (selectedSection != null)
|
||||||
@@ -27,7 +29,9 @@
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
<div class="mobileNavPageButton" @onclick="() => OnPageLinkClicked(webPage)" @onclick:preventDefault="true" @onclick:stopPropagation="true">
|
|
||||||
|
<div class="mobileNavPageButton" @onclick="() => OnPageLinkClicked(webPage)"
|
||||||
|
@onclick:preventDefault="true" @onclick:stopPropagation="true">
|
||||||
<div class="mobileNavPageButtonText">
|
<div class="mobileNavPageButtonText">
|
||||||
@webPage.Name
|
@webPage.Name
|
||||||
</div>
|
</div>
|
||||||
@@ -45,7 +49,7 @@
|
|||||||
height: 100vh;
|
height: 100vh;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
display: none;
|
display: none;
|
||||||
background-color: rgba(0,0,0,0.6);
|
background-color: rgba(0, 0, 0, 0.6);
|
||||||
}
|
}
|
||||||
|
|
||||||
.fullPageButton.True {
|
.fullPageButton.True {
|
||||||
@@ -53,11 +57,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.mobileFooter {
|
.mobileFooter {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
background-color: rgba(0,0,0,1);
|
background-color: rgba(0, 0, 0, 1);
|
||||||
width: 100vw;
|
width: 100vw;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
display: none;
|
display: none;
|
||||||
@@ -143,11 +145,9 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
#if NO_SQL
|
#if NO_SQL
|
||||||
[Parameter]
|
[Parameter] public List<WebSectionModel> WebSections { get; set; } = default!;
|
||||||
public List<WebSectionModel> WebSections { get; set; } = default!;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public List<WebPageModel> WebPages { get; set; } = default!;
|
||||||
public List<WebPageModel> WebPages { get; set; } = default!;
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
[Parameter]
|
[Parameter]
|
||||||
@@ -157,8 +157,7 @@
|
|||||||
public DbSet<WebPageModel> WebPages { get; set; }
|
public DbSet<WebPageModel> WebPages { get; set; }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
[Inject]
|
[Inject] public NavigationManager NavigationManager { get; set; } = default!;
|
||||||
public NavigationManager NavigationManager { get; set; } = default!;
|
|
||||||
|
|
||||||
|
|
||||||
private WebSectionModel? selectedSection;
|
private WebSectionModel? selectedSection;
|
||||||
|
|||||||
@@ -17,7 +17,8 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="fullPageButton @navOpen" @onclick="OnNavClicked" @onclick:stopPropagation="false" @onclick:preventDefault="false">
|
<div class="fullPageButton @navOpen" @onclick="OnNavClicked" @onclick:stopPropagation="false"
|
||||||
|
@onclick:preventDefault="false">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
@@ -40,6 +41,7 @@
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
<NavLink href="@webPage.Href" class="tabletNavItem" @onclick="OnPageClicked">
|
<NavLink href="@webPage.Href" class="tabletNavItem" @onclick="OnPageClicked">
|
||||||
@webPage.Name
|
@webPage.Name
|
||||||
</NavLink>
|
</NavLink>
|
||||||
@@ -58,7 +60,7 @@
|
|||||||
height: 100vh;
|
height: 100vh;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
display: none;
|
display: none;
|
||||||
background-color: rgba(0,0,0,0.6);
|
background-color: rgba(0, 0, 0, 0.6);
|
||||||
}
|
}
|
||||||
|
|
||||||
.fullPageButton.True {
|
.fullPageButton.True {
|
||||||
@@ -71,7 +73,7 @@
|
|||||||
|
|
||||||
.tabletNav {
|
.tabletNav {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
background-color: rgba(30,30,30,0.98);
|
background-color: rgba(30, 30, 30, 0.98);
|
||||||
display: none;
|
display: none;
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
padding: 32px;
|
padding: 32px;
|
||||||
@@ -108,7 +110,7 @@
|
|||||||
top: 0;
|
top: 0;
|
||||||
display: flex;
|
display: flex;
|
||||||
background-color: var(--accent);
|
background-color: var(--accent);
|
||||||
border-bottom: 4px solid rgba(0,0,0,0.95);
|
border-bottom: 4px solid rgba(0, 0, 0, 0.95);
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -125,7 +127,7 @@
|
|||||||
|
|
||||||
.tabletButton {
|
.tabletButton {
|
||||||
border: 2px solid black;
|
border: 2px solid black;
|
||||||
background-color: rgba(0,0,0,0.3);
|
background-color: rgba(0, 0, 0, 0.3);
|
||||||
width: 80px;
|
width: 80px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -133,7 +135,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.tabletButton:hover {
|
.tabletButton:hover {
|
||||||
background-color: rgba(0,0,0,0.7);
|
background-color: rgba(0, 0, 0, 0.7);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -153,11 +155,9 @@
|
|||||||
@code {
|
@code {
|
||||||
|
|
||||||
#if NO_SQL
|
#if NO_SQL
|
||||||
[Parameter]
|
[Parameter] public List<WebSectionModel> WebSections { get; set; } = default!;
|
||||||
public List<WebSectionModel> WebSections { get; set; } = default!;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public List<WebPageModel> WebPages { get; set; } = default!;
|
||||||
public List<WebPageModel> WebPages { get; set; } = default!;
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
[Parameter]
|
[Parameter]
|
||||||
|
|||||||
@@ -5,14 +5,11 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment ChildContent { get; set; } = default!;
|
||||||
public RenderFragment ChildContent { get; set; } = default!;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public WebDeploymentType DeploymentType { get; set; }
|
||||||
public WebDeploymentType DeploymentType { get; set; }
|
|
||||||
|
|
||||||
[Inject]
|
[Inject] public NavigationManager MyNavigationManager { get; set; } = default!;
|
||||||
public NavigationManager MyNavigationManager { get; set; } = default!;
|
|
||||||
|
|
||||||
bool isDisplayable;
|
bool isDisplayable;
|
||||||
|
|
||||||
|
|||||||
@@ -11,11 +11,9 @@ else
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment ChildContent { get; set; } = default!;
|
||||||
public RenderFragment ChildContent { get; set; } = default!;
|
|
||||||
|
|
||||||
[Inject]
|
[Inject] public NavigationManager MyNavigationManager { get; set; } = default!;
|
||||||
public NavigationManager MyNavigationManager { get; set; } = default!;
|
|
||||||
|
|
||||||
bool isDisplayable;
|
bool isDisplayable;
|
||||||
|
|
||||||
|
|||||||
@@ -1,31 +1,6 @@
|
|||||||
@inject IVariableService VariableService
|
<div class="footerContainer" xmlns="http://www.w3.org/1999/html">
|
||||||
|
|
||||||
<div class="footerContainer" xmlns="http://www.w3.org/1999/html">
|
|
||||||
<div class="footerSocials">
|
|
||||||
|
|
||||||
<a class="footerIcon" href="https://github.com/JonathanMcCaffrey/IGP-Fan-Reference/discussions" target="_blank">
|
|
||||||
<i class="fa-brands fa-github"></i>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a class="footerIcon" href="mailto:igpfanreference@jonathanmccaffrey.com" target="_blank">
|
|
||||||
<i class="fa-solid fa-envelope"></i>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a class="footerIcon" href="https://discord.gg/uMq8bMGeeN" target="_blank">
|
|
||||||
<i class="fa-brands fa-discord"></i>
|
|
||||||
</a>
|
|
||||||
<a class="footerIcon" href="https://www.youtube.com/channel/UCQx88d5C12yp4l7uszNYrdQ" target="_blank">
|
|
||||||
<i class="fa-brands fa-youtube"></i>
|
|
||||||
</a>
|
|
||||||
<a class="footerIcon" href="https://www.twitch.tv/jonathanmccaffrey" target="_blank">
|
|
||||||
<i class="fa-brands fa-twitch"></i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="footerDivider"></div>
|
<div class="footerDivider"></div>
|
||||||
|
|
||||||
<div class="footerLastUpdated">Website updated <a href="https://github.com/JonathanMcCaffrey/IGP-Fan-Reference/commits/main"><b>@VariableService.Variables["LastUpdated"]</b></a></div>
|
|
||||||
|
|
||||||
<div class="footerDisclaimer">
|
<div class="footerDisclaimer">
|
||||||
This website is fan-made and not affiliated with <b>SunSpear Games</b> in any way.
|
This website is fan-made and not affiliated with <b>SunSpear Games</b> in any way.
|
||||||
</div>
|
</div>
|
||||||
@@ -36,20 +11,19 @@
|
|||||||
.footerIcon {
|
.footerIcon {
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
padding: 8px;
|
padding: 8px;
|
||||||
background-color: rgba(255,255,255,0.05);
|
background-color: rgba(255, 255, 255, 0.05);
|
||||||
border: 2px solid rgba(255,255,255,0.1);
|
border: 2px solid rgba(255, 255, 255, 0.1);
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
line-height: 0;
|
line-height: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.footerIcon:hover {
|
.footerIcon:hover {
|
||||||
color: #8fc5ff;
|
color: #8fc5ff;
|
||||||
background-color: rgba(200,200,255,0.1);
|
background-color: rgba(200, 200, 255, 0.1);
|
||||||
border: 2px solid rgba(140,140,255,0.4);
|
border: 2px solid rgba(140, 140, 255, 0.4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.footerContainer {
|
.footerContainer {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -69,7 +43,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.footerDivider {
|
.footerDivider {
|
||||||
background-color: rgba(255,255,255,0.12);
|
background-color: rgba(255, 255, 255, 0.12);
|
||||||
height: 1px;
|
height: 1px;
|
||||||
width: 128px;
|
width: 128px;
|
||||||
margin: auto;
|
margin: auto;
|
||||||
|
|||||||
@@ -10,10 +10,8 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment Dividee { get; set; } = default!;
|
||||||
public RenderFragment Dividee { get; set; } = default!;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment Divider { get; set; } = default!;
|
||||||
public RenderFragment Divider { get; set; } = default!;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
<div style="display:flex; flex-direction:column; align-items:center;padding-right: 12px;padding-left: 4px; font-family:monospace">
|
<div
|
||||||
|
style="display:flex; flex-direction:column; align-items:center;padding-right: 12px;padding-left: 4px; font-family:monospace">
|
||||||
<div style="height: 0px;display:flex; flex-direction:row; ">
|
<div style="height: 0px;display:flex; flex-direction:row; ">
|
||||||
<div style="font-size: 18px; height: 0px;">
|
<div style="font-size: 18px; height: 0px;">
|
||||||
∑
|
∑
|
||||||
@@ -12,13 +13,10 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment LoopEnd { get; set; } = default!;
|
||||||
public RenderFragment LoopEnd { get; set; } = default!;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment LoopStart { get; set; } = default!;
|
||||||
public RenderFragment LoopStart { get; set; } = default!;
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment IndexSymbol { get; set; } = default!;
|
||||||
public RenderFragment IndexSymbol { get; set; } = default!;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
u {
|
u {
|
||||||
text-decoration-color: inherit;
|
text-decoration-color: inherit;
|
||||||
text-decoration-thickness:1px;
|
text-decoration-thickness: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.spoiler:hover {
|
.spoiler:hover {
|
||||||
@@ -22,7 +22,6 @@
|
|||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter] public RenderFragment ChildContent { get; set; } = default!;
|
||||||
public RenderFragment ChildContent { get; set; } = default!;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
|
||||||
|
|
||||||
<PropertyGroup>
|
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
|
||||||
<Nullable>enable</Nullable>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
|
|
||||||
<DefineConstants>TRACE;</DefineConstants>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
|
|
||||||
<DefineConstants>TRACE;</DefineConstants>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.8" />
|
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="6.0.8">
|
|
||||||
<PrivateAssets>all</PrivateAssets>
|
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
||||||
</PackageReference>
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\Model\Model.csproj" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
#if NO_SQL
|
|
||||||
#else
|
|
||||||
|
|
||||||
using Microsoft.EntityFrameworkCore;
|
|
||||||
using Model;
|
|
||||||
using Model.Doc;
|
|
||||||
using Model.Git;
|
|
||||||
using Model.Notes;
|
|
||||||
using Model.Website;
|
|
||||||
using Model.Work.Tasks;
|
|
||||||
|
|
||||||
namespace Contexts;
|
|
||||||
|
|
||||||
public class DatabaseContext : DbContext
|
|
||||||
{
|
|
||||||
public DatabaseContext(DbContextOptions<DatabaseContext> options) : base(options)
|
|
||||||
{
|
|
||||||
Database.EnsureCreated();
|
|
||||||
}
|
|
||||||
|
|
||||||
public DbSet<AgileSprintModel> AgileSprintModels { get; set; } = default!;
|
|
||||||
public DbSet<AgileTaskModel> AgileTaskModels { get; set; } = default!;
|
|
||||||
public DbSet<GitChangeModel> GitChangeModels { get; set; } = default!;
|
|
||||||
public DbSet<GitPatchModel> GitPatchModels { get; set; } = default!;
|
|
||||||
public DbSet<WebPageModel> WebPageModels { get; set; } = default!;
|
|
||||||
public DbSet<WebSectionModel> WebSectionModels { get; set; } = default!;
|
|
||||||
public DbSet<DocContentModel> DocContentModels { get; set; } = default!;
|
|
||||||
public DbSet<DocConnectionModel> DocConnectionModels { get; set; } = default!;
|
|
||||||
public DbSet<DocSectionModel> DocSectionModels { get; set; } = default!;
|
|
||||||
public DbSet<NoteContentModel> NoteContentModels { get; set; } = default!;
|
|
||||||
public DbSet<NoteConnectionModel> NoteConnectionModels { get; set; } = default!;
|
|
||||||
public DbSet<NoteSectionModel> NoteSectionModels { get; set; } = default!;
|
|
||||||
public DbSet<Variable> Variables { get; set; } = default!;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
|
||||||
|
WORKDIR /src
|
||||||
|
COPY . .
|
||||||
|
RUN dotnet publish Web/Web.csproj -c Release -o /app/publish
|
||||||
|
|
||||||
|
FROM nginx:alpine AS final
|
||||||
|
WORKDIR /usr/share/nginx/html
|
||||||
|
COPY --from=build /app/publish/wwwroot ./
|
||||||
|
COPY nginx.conf /etc/nginx/nginx.conf
|
||||||
@@ -0,0 +1,107 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.0.32112.339
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Model", "Model\Model.csproj", "{F4D758C2-349F-49F2-86E2-7DAB2B53BB61}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Services", "Services\Services.csproj", "{4F56F39D-D34C-4987-8C3F-3A8E03A2D7E6}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Web", "Web\Web.csproj", "{4A54E237-4FF6-4459-91D9-9249AE3E72E0}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CLI", "CLI\CLI.csproj", "{F8A23FFE-7FCC-4C28-B5CF-DBE435284AFA}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Components", "Components\Components.csproj", "{C0ACFFEB-8098-4119-9C28-3A4D671C2514}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests", "Tests\Tests.csproj", "{1460CB4C-7E8E-41F0-8DF2-174C69A3E366}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{F4D758C2-349F-49F2-86E2-7DAB2B53BB61}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{F4D758C2-349F-49F2-86E2-7DAB2B53BB61}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{F4D758C2-349F-49F2-86E2-7DAB2B53BB61}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{F4D758C2-349F-49F2-86E2-7DAB2B53BB61}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{F4D758C2-349F-49F2-86E2-7DAB2B53BB61}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{F4D758C2-349F-49F2-86E2-7DAB2B53BB61}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{F4D758C2-349F-49F2-86E2-7DAB2B53BB61}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{F4D758C2-349F-49F2-86E2-7DAB2B53BB61}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{F4D758C2-349F-49F2-86E2-7DAB2B53BB61}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{F4D758C2-349F-49F2-86E2-7DAB2B53BB61}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{F4D758C2-349F-49F2-86E2-7DAB2B53BB61}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{F4D758C2-349F-49F2-86E2-7DAB2B53BB61}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{4F56F39D-D34C-4987-8C3F-3A8E03A2D7E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{4F56F39D-D34C-4987-8C3F-3A8E03A2D7E6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{4F56F39D-D34C-4987-8C3F-3A8E03A2D7E6}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{4F56F39D-D34C-4987-8C3F-3A8E03A2D7E6}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{4F56F39D-D34C-4987-8C3F-3A8E03A2D7E6}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{4F56F39D-D34C-4987-8C3F-3A8E03A2D7E6}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{4F56F39D-D34C-4987-8C3F-3A8E03A2D7E6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{4F56F39D-D34C-4987-8C3F-3A8E03A2D7E6}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{4F56F39D-D34C-4987-8C3F-3A8E03A2D7E6}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{4F56F39D-D34C-4987-8C3F-3A8E03A2D7E6}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{4F56F39D-D34C-4987-8C3F-3A8E03A2D7E6}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{4F56F39D-D34C-4987-8C3F-3A8E03A2D7E6}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{4A54E237-4FF6-4459-91D9-9249AE3E72E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{4A54E237-4FF6-4459-91D9-9249AE3E72E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{4A54E237-4FF6-4459-91D9-9249AE3E72E0}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{4A54E237-4FF6-4459-91D9-9249AE3E72E0}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{4A54E237-4FF6-4459-91D9-9249AE3E72E0}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{4A54E237-4FF6-4459-91D9-9249AE3E72E0}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{4A54E237-4FF6-4459-91D9-9249AE3E72E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{4A54E237-4FF6-4459-91D9-9249AE3E72E0}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{4A54E237-4FF6-4459-91D9-9249AE3E72E0}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{4A54E237-4FF6-4459-91D9-9249AE3E72E0}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{4A54E237-4FF6-4459-91D9-9249AE3E72E0}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{4A54E237-4FF6-4459-91D9-9249AE3E72E0}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{F8A23FFE-7FCC-4C28-B5CF-DBE435284AFA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{F8A23FFE-7FCC-4C28-B5CF-DBE435284AFA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{F8A23FFE-7FCC-4C28-B5CF-DBE435284AFA}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{F8A23FFE-7FCC-4C28-B5CF-DBE435284AFA}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{F8A23FFE-7FCC-4C28-B5CF-DBE435284AFA}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{F8A23FFE-7FCC-4C28-B5CF-DBE435284AFA}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{F8A23FFE-7FCC-4C28-B5CF-DBE435284AFA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{F8A23FFE-7FCC-4C28-B5CF-DBE435284AFA}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{F8A23FFE-7FCC-4C28-B5CF-DBE435284AFA}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{F8A23FFE-7FCC-4C28-B5CF-DBE435284AFA}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{F8A23FFE-7FCC-4C28-B5CF-DBE435284AFA}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{F8A23FFE-7FCC-4C28-B5CF-DBE435284AFA}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{C0ACFFEB-8098-4119-9C28-3A4D671C2514}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{C0ACFFEB-8098-4119-9C28-3A4D671C2514}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{C0ACFFEB-8098-4119-9C28-3A4D671C2514}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{C0ACFFEB-8098-4119-9C28-3A4D671C2514}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{C0ACFFEB-8098-4119-9C28-3A4D671C2514}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{C0ACFFEB-8098-4119-9C28-3A4D671C2514}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{C0ACFFEB-8098-4119-9C28-3A4D671C2514}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{C0ACFFEB-8098-4119-9C28-3A4D671C2514}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{C0ACFFEB-8098-4119-9C28-3A4D671C2514}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{C0ACFFEB-8098-4119-9C28-3A4D671C2514}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{C0ACFFEB-8098-4119-9C28-3A4D671C2514}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{C0ACFFEB-8098-4119-9C28-3A4D671C2514}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{1460CB4C-7E8E-41F0-8DF2-174C69A3E366}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{1460CB4C-7E8E-41F0-8DF2-174C69A3E366}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{1460CB4C-7E8E-41F0-8DF2-174C69A3E366}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{1460CB4C-7E8E-41F0-8DF2-174C69A3E366}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{1460CB4C-7E8E-41F0-8DF2-174C69A3E366}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{1460CB4C-7E8E-41F0-8DF2-174C69A3E366}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{1460CB4C-7E8E-41F0-8DF2-174C69A3E366}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{1460CB4C-7E8E-41F0-8DF2-174C69A3E366}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{1460CB4C-7E8E-41F0-8DF2-174C69A3E366}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{1460CB4C-7E8E-41F0-8DF2-174C69A3E366}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{1460CB4C-7E8E-41F0-8DF2-174C69A3E366}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{1460CB4C-7E8E-41F0-8DF2-174C69A3E366}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {19100811-B909-4D20-9AE0-2EB579A55B3A}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
@@ -1,95 +0,0 @@
|
|||||||
@inject IVariableService VariableService
|
|
||||||
@inject IStorageService StorageService
|
|
||||||
@inject IPermissionService PermissionService
|
|
||||||
|
|
||||||
|
|
||||||
<Router AppAssembly="@typeof(App).Assembly">
|
|
||||||
<Found Context="routeData">
|
|
||||||
@if (isLoaded)
|
|
||||||
{
|
|
||||||
<RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)"/>
|
|
||||||
<FocusOnNavigate RouteData="@routeData" Selector="h1"/>
|
|
||||||
}
|
|
||||||
</Found>
|
|
||||||
<NotFound>
|
|
||||||
<PageTitle>Not found</PageTitle>
|
|
||||||
<LayoutView Layout="@typeof(MainLayout)">
|
|
||||||
<p role="alert">Sorry, there's nothing at this address.</p>
|
|
||||||
</LayoutView>
|
|
||||||
</NotFound>
|
|
||||||
</Router>
|
|
||||||
|
|
||||||
<EntityDialogPortal/>
|
|
||||||
<ToastPortal/>
|
|
||||||
<SearchPortal/>
|
|
||||||
<ConfirmationDialogPortal/>
|
|
||||||
|
|
||||||
|
|
||||||
@if (PermissionService.GetIsDataCollectionEnabled())
|
|
||||||
{
|
|
||||||
<NavigationTracker />
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<style>
|
|
||||||
a {
|
|
||||||
color: white;
|
|
||||||
font-weight: 700;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:hover {
|
|
||||||
color: white;
|
|
||||||
text-decoration: underline;
|
|
||||||
text-decoration-color: #8fc5ff;
|
|
||||||
text-decoration-thickness: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
:root {
|
|
||||||
--severity-warning-color: #2a2000;
|
|
||||||
--severity-warning-border-color: #755c13;
|
|
||||||
--severity-error-color: #290102;
|
|
||||||
--severity-error-border-color: #4C2C33;
|
|
||||||
--severity-information-color: #030129;
|
|
||||||
--severity-information-border-color: #2c3a4c;
|
|
||||||
--severity-success-color: #042901;
|
|
||||||
--severity-success-border-color: #2E4C2C;
|
|
||||||
|
|
||||||
--accent: #432462;
|
|
||||||
--primary: #4308a3;
|
|
||||||
--primary-border: #2c0b62;
|
|
||||||
--primary-hover: #5e00f7;
|
|
||||||
--primary-border-hover: #a168ff;
|
|
||||||
--background: #161618;
|
|
||||||
--secondary: #23133e;
|
|
||||||
--secondary-hover: #2a0070;
|
|
||||||
--secondary-border-hover: #a168ff;
|
|
||||||
--paper: #252526;
|
|
||||||
--paper-border: #151516;
|
|
||||||
|
|
||||||
--paper-hover: #52366f;
|
|
||||||
--paper-border-hover: #653497;
|
|
||||||
|
|
||||||
--info: #451376;
|
|
||||||
--info-border: #210b36;
|
|
||||||
|
|
||||||
--dialog-border-color: black;
|
|
||||||
--dialog-border-width: 2px;
|
|
||||||
--dialog-radius: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
|
|
||||||
@code {
|
|
||||||
private bool isLoaded = false;
|
|
||||||
|
|
||||||
protected override async Task OnInitializedAsync()
|
|
||||||
{
|
|
||||||
await VariableService.Load();
|
|
||||||
await StorageService.Load();
|
|
||||||
isLoaded = true;
|
|
||||||
StateHasChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
Binary file not shown.
@@ -1,115 +0,0 @@
|
|||||||
@using Services.Website
|
|
||||||
@implements IDisposable;
|
|
||||||
@inject IMyDialogService MyDialogService
|
|
||||||
@inject IJSRuntime JsRuntime
|
|
||||||
|
|
||||||
|
|
||||||
@inject NavigationManager NavigationManager
|
|
||||||
|
|
||||||
@if (MyDialogService.IsVisible)
|
|
||||||
{
|
|
||||||
<div class="confirmDialogBackground" onclick="@CloseDialog">
|
|
||||||
<div class="confirmDialogContainer"
|
|
||||||
@onclick:preventDefault="true"
|
|
||||||
@onclick:stopPropagation="true">
|
|
||||||
|
|
||||||
<div class="confirmDialogHeader">
|
|
||||||
@MyDialogService.GetDialogContents().Title
|
|
||||||
</div>
|
|
||||||
<div class="confirmDialogBody">
|
|
||||||
@MyDialogService.GetDialogContents().Message
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="confirmDialogFooter">
|
|
||||||
<ButtonComponent MyButtonType="MyButtonType.Secondary" OnClick="MyDialogService.GetDialogContents().OnCancel">
|
|
||||||
Cancel
|
|
||||||
</ButtonComponent>
|
|
||||||
<ButtonComponent MyButtonType="MyButtonType.Primary" OnClick="MyDialogService.GetDialogContents().OnConfirm">
|
|
||||||
@MyDialogService.GetDialogContents().ConfirmButtonLabel
|
|
||||||
</ButtonComponent>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.pageContents * {
|
|
||||||
filter: blur(2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.confirmDialogBackground {
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100vw;
|
|
||||||
height: 100vh;
|
|
||||||
background-color: rgba(0, 0, 0, 0.5);
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.confirmDialogContainer {
|
|
||||||
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);
|
|
||||||
|
|
||||||
padding: 8px;
|
|
||||||
|
|
||||||
|
|
||||||
box-shadow: 1px 2px 2px black;
|
|
||||||
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.confirmDialogHeader {
|
|
||||||
font-size: 1.4em;
|
|
||||||
padding: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.confirmDialogBody {
|
|
||||||
padding: 12px;
|
|
||||||
flex-grow: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.confirmDialogFooter {
|
|
||||||
display: flex;
|
|
||||||
gap: 12px;
|
|
||||||
justify-content: flex-end;
|
|
||||||
padding: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@code {
|
|
||||||
|
|
||||||
protected override void OnInitialized()
|
|
||||||
{
|
|
||||||
base.OnInitialized();
|
|
||||||
|
|
||||||
MyDialogService.Subscribe(StateHasChanged);
|
|
||||||
}
|
|
||||||
|
|
||||||
void IDisposable.Dispose()
|
|
||||||
{
|
|
||||||
MyDialogService.Unsubscribe(StateHasChanged);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void CloseDialog()
|
|
||||||
{
|
|
||||||
MyDialogService.Hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
-67
@@ -1,67 +0,0 @@
|
|||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
|
||||||
# Visual Studio Version 17
|
|
||||||
VisualStudioVersion = 17.0.32112.339
|
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IGP", "IGP.csproj", "{172D35E4-8E7B-40D1-96D6-BE2A2043CFCA}"
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Model", "..\Model\Model.csproj", "{77395F7A-BE93-470C-9F10-F48FFA445B63}"
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Components", "..\Components\Components.csproj", "{0419E7CD-0971-4A56-A61F-C090DF60FAF6}"
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Contexts", "..\Contexts\Contexts.csproj", "{F7775F3A-E541-4292-B45F-A18C65637E33}"
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Services", "..\Services\Services.csproj", "{621178C8-4E8B-478E-80E5-7478F0E7B67E}"
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IGP_Convert", "..\IGP_Convert\IGP_Convert.csproj", "{82F1848E-4BF6-4B16-A9DD-574AF566712B}"
|
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestAutomation", "..\TestAutomation\TestAutomation.csproj", "{8B49D038-D013-460D-9C4F-817CAFFEB06F}"
|
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Playground", "..\Playground\Playground.csproj", "{7DAA5F32-CF40-4A5B-B4FD-410D1F2BC3D7}"
|
|
||||||
EndProject
|
|
||||||
Global
|
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
|
||||||
Debug|Any CPU = Debug|Any CPU
|
|
||||||
Release|Any CPU = Release|Any CPU
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
|
||||||
{172D35E4-8E7B-40D1-96D6-BE2A2043CFCA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{172D35E4-8E7B-40D1-96D6-BE2A2043CFCA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{172D35E4-8E7B-40D1-96D6-BE2A2043CFCA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{172D35E4-8E7B-40D1-96D6-BE2A2043CFCA}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{77395F7A-BE93-470C-9F10-F48FFA445B63}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{77395F7A-BE93-470C-9F10-F48FFA445B63}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{77395F7A-BE93-470C-9F10-F48FFA445B63}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{77395F7A-BE93-470C-9F10-F48FFA445B63}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{0419E7CD-0971-4A56-A61F-C090DF60FAF6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{0419E7CD-0971-4A56-A61F-C090DF60FAF6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{0419E7CD-0971-4A56-A61F-C090DF60FAF6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{0419E7CD-0971-4A56-A61F-C090DF60FAF6}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{F7775F3A-E541-4292-B45F-A18C65637E33}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{F7775F3A-E541-4292-B45F-A18C65637E33}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{F7775F3A-E541-4292-B45F-A18C65637E33}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{F7775F3A-E541-4292-B45F-A18C65637E33}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{621178C8-4E8B-478E-80E5-7478F0E7B67E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{621178C8-4E8B-478E-80E5-7478F0E7B67E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{621178C8-4E8B-478E-80E5-7478F0E7B67E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{621178C8-4E8B-478E-80E5-7478F0E7B67E}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{82F1848E-4BF6-4B16-A9DD-574AF566712B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{82F1848E-4BF6-4B16-A9DD-574AF566712B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{82F1848E-4BF6-4B16-A9DD-574AF566712B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{82F1848E-4BF6-4B16-A9DD-574AF566712B}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{8B49D038-D013-460D-9C4F-817CAFFEB06F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{8B49D038-D013-460D-9C4F-817CAFFEB06F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{8B49D038-D013-460D-9C4F-817CAFFEB06F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{8B49D038-D013-460D-9C4F-817CAFFEB06F}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{7DAA5F32-CF40-4A5B-B4FD-410D1F2BC3D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{7DAA5F32-CF40-4A5B-B4FD-410D1F2BC3D7}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{7DAA5F32-CF40-4A5B-B4FD-410D1F2BC3D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{7DAA5F32-CF40-4A5B-B4FD-410D1F2BC3D7}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
|
||||||
HideSolutionNode = FALSE
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
|
||||||
SolutionGuid = {19100811-B909-4D20-9AE0-2EB579A55B3A}
|
|
||||||
EndGlobalSection
|
|
||||||
EndGlobal
|
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
@if (StyleType.Equals("Plain"))
|
|
||||||
{
|
|
||||||
<div>
|
|
||||||
<b id="entityName">@Entity?.Info().Name</b>
|
|
||||||
@if (Entity?.Info().Descriptive != DescriptiveType.None)
|
|
||||||
{
|
|
||||||
<span>, @Entity?.Info().Descriptive.Replace("_", " ")</span>
|
|
||||||
}
|
|
||||||
</div>
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
<div class="entityHeader">
|
|
||||||
<div id="entityName" class="entityHeaderText">
|
|
||||||
@Entity?.Info().Name
|
|
||||||
</div>
|
|
||||||
<div style="font-size:1.4rem;">
|
|
||||||
<b>@Entity?.EntityType.Replace("_", " ")</b>
|
|
||||||
@if (Entity?.Info().Descriptive != DescriptiveType.None)
|
|
||||||
{
|
|
||||||
<span>
|
|
||||||
<b>:</b> @Entity!.Info().Descriptive.Replace("_", " ")
|
|
||||||
</span>
|
|
||||||
}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.entityHeader {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: row;
|
|
||||||
gap: 4px;
|
|
||||||
justify-content: space-between;
|
|
||||||
margin-bottom: 22px;
|
|
||||||
width: 100%;
|
|
||||||
margin-left: -6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.entityHeaderText {
|
|
||||||
font-size: 2rem;
|
|
||||||
font-weight: 900;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@media only screen and (max-width: 1025px) {
|
|
||||||
.entityHeader {
|
|
||||||
flex-direction: column;
|
|
||||||
justify-content: normal;
|
|
||||||
margin-left: 4px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
}
|
|
||||||
|
|
||||||
@code {
|
|
||||||
|
|
||||||
[CascadingParameter]
|
|
||||||
public EntityModel? Entity { get; set; } = default!;
|
|
||||||
|
|
||||||
|
|
||||||
[CascadingParameter]
|
|
||||||
public string StyleType { get; set; } = "Detailed";
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,86 +0,0 @@
|
|||||||
@inject HttpClient httpClient
|
|
||||||
|
|
||||||
@if (content == null)
|
|
||||||
{
|
|
||||||
<LoadingComponent/>
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
<div class="doc">
|
|
||||||
<div class="docHeader">
|
|
||||||
<div class="docTitle">@docFrontMatter.Title</div>
|
|
||||||
<div class="docDates">
|
|
||||||
<div class="docDateUpdated"><b>Updated</b>: @docFrontMatter.UpdatedDate.ToString("MM/dd/yyyy")</div>
|
|
||||||
<div class="docDateCreated"><b>Created</b>: @docFrontMatter.CreatedDate.ToString("MM/dd/yyyy")</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="docContent">@((MarkupString)Markdown.ToHtml(content, Pipeline))</div>
|
|
||||||
<div class="docFooter">
|
|
||||||
<LinkButtonComponent Href="@GitUrl">
|
|
||||||
Edit on GitHub <i class="fa-brands fa-github" style="font-size: 24px; margin-left: 5px;"></i>
|
|
||||||
</LinkButtonComponent>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
}
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.docTitle {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.docHeader {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
}
|
|
||||||
|
|
||||||
.docDates {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
.docFooter {
|
|
||||||
display: flex;
|
|
||||||
justify-content: flex-end;
|
|
||||||
}
|
|
||||||
|
|
||||||
th {
|
|
||||||
padding: 8px;
|
|
||||||
border: 1px solid gray;
|
|
||||||
}
|
|
||||||
td {
|
|
||||||
padding: 8px;
|
|
||||||
border: 1px solid gray;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
@code {
|
|
||||||
|
|
||||||
[Parameter]
|
|
||||||
public DocContentModel DocContentModel { get; set; } = default!;
|
|
||||||
|
|
||||||
DocFrontMatterModel docFrontMatter = null!;
|
|
||||||
private string? content;
|
|
||||||
|
|
||||||
private string Filepath => $"content/docs/{DocContentModel.Content}.md";
|
|
||||||
private string GitUrl => $"{Project.GitResourcesUrl}/{Filepath}";
|
|
||||||
private MarkdownPipeline Pipeline => MarkdownFiles.Pipeline;
|
|
||||||
|
|
||||||
private async Task<DocFrontMatterModel> LoadContent()
|
|
||||||
{
|
|
||||||
content = await MarkdownFiles.LoadMarkdown(httpClient, Filepath);
|
|
||||||
|
|
||||||
return docFrontMatter =
|
|
||||||
await MarkdownFiles.LoadFrontMatter<DocFrontMatterModel>(httpClient, Filepath);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override async Task OnParametersSetAsync()
|
|
||||||
{
|
|
||||||
await LoadContent();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override async Task OnInitializedAsync()
|
|
||||||
{
|
|
||||||
await LoadContent();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
<div class="noteNavContainer">
|
|
||||||
@foreach (var note in Notes)
|
|
||||||
{
|
|
||||||
if (note.Parent == null)
|
|
||||||
{
|
|
||||||
<NavLink class="noteNavButton" href="@note.GetNoteLink()">@note.Name</NavLink>
|
|
||||||
<NoteInnerNavComponent Note="@note"/>
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.noteNavContainer {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
gap: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.noteNavButton a {
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.noteNavButton a:hover {
|
|
||||||
color: white;
|
|
||||||
background-color: var(--primary-hover);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.noteNavButton {
|
|
||||||
padding: 8px;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
|
|
||||||
@code {
|
|
||||||
|
|
||||||
[Parameter]
|
|
||||||
public List<NoteContentModel> Notes { get; set; } = default!;
|
|
||||||
|
|
||||||
[Parameter]
|
|
||||||
public List<NoteConnectionModel> Connections { get; set; } = default!;
|
|
||||||
|
|
||||||
}
|
|
||||||
Binary file not shown.
@@ -1,31 +0,0 @@
|
|||||||
---
|
|
||||||
title: Cheat Sheet
|
|
||||||
summary: Handy links or quick information on this project.
|
|
||||||
created_date: 2022-04-11
|
|
||||||
updated_date: 2022-04-11
|
|
||||||
---
|
|
||||||
|
|
||||||
# Overview
|
|
||||||
|
|
||||||
This document will contain quick reference information on this project.
|
|
||||||
|
|
||||||
## Dev Team
|
|
||||||
|
|
||||||
| Name | Role | Discord |
|
|
||||||
|--------------------|------------|------------------------|
|
|
||||||
| Jonathan McCaffrey | Maintainer | JonathanMcCaffrey#3544 |
|
|
||||||
|
|
||||||
## Project Links
|
|
||||||
|
|
||||||
| Name | Purpose | Link |
|
|
||||||
|------------|-------------------------------------------------------------------|----------------------------------------------------------------|
|
|
||||||
| Production | Customer facing version of website. `main` branch. | https://www.igpfanreference.com/ |
|
|
||||||
| Develop | Development/testing version of website. `develop` branch. | https://calm-mud-04916b210.1.azurestaticapps.net/ |
|
|
||||||
| GitRepo | Where all the dev work goes. | https://github.com/JonathanMcCaffrey/IGP-Fan-Reference |
|
|
||||||
| CI | Deployment CI logs. See if a new build has successfully released. | https://github.com/JonathanMcCaffrey/IGP-Fan-Reference/actions |
|
|
||||||
|
|
||||||
## Educational Links
|
|
||||||
|
|
||||||
| Name | Purpose | Link |
|
|
||||||
|--------|---------------------------------------|----------------------------------------------------------------|
|
|
||||||
| Blazor | Getting started information on Blazor | https://dotnet.microsoft.com/en-us/apps/aspnet/web-apps/blazor |
|
|
||||||
@@ -1,103 +0,0 @@
|
|||||||
---
|
|
||||||
title: Project Data
|
|
||||||
summary: Using data in this project.
|
|
||||||
created_date: 2022-04-11
|
|
||||||
updated_date: 2022-04-11
|
|
||||||
---
|
|
||||||
|
|
||||||
# Overview
|
|
||||||
|
|
||||||
This document will contain general information on data in this project.
|
|
||||||
|
|
||||||
## General Note
|
|
||||||
|
|
||||||
This project is a work in progress. As such, most of the data in the website doesn't follow the document. Ideally, this
|
|
||||||
will be fixed over time.
|
|
||||||
|
|
||||||
## SQL
|
|
||||||
|
|
||||||
Relational data is stored in a local SQL database.
|
|
||||||
|
|
||||||
This data is converted into JSON so it can be handled by Blazor WASM.
|
|
||||||
|
|
||||||
<i>Currently, Blazor WASM has a bug that prevents SQL from being used in production. Although, given SQL doesn't seem to
|
|
||||||
provide much, aside from increased build times and load times, it might just be best to use the design principals of
|
|
||||||
SQL, and it's interface, without using the actual technology in production.</i>
|
|
||||||
|
|
||||||
The data is then loaded in by a Service, via it's load method.
|
|
||||||
|
|
||||||
```csharp
|
|
||||||
// Using Component
|
|
||||||
protected override async Task OnInitializedAsync()
|
|
||||||
{
|
|
||||||
await AgileService.Load();
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
```csharp
|
|
||||||
// Loading Service
|
|
||||||
public async Task Load()
|
|
||||||
{
|
|
||||||
if (isLoaded) return;
|
|
||||||
AgileSprintModels =
|
|
||||||
(await httpClient.GetFromJsonAsync<AgileSprintModel[]>("generated/AgileSprintModels.json")
|
|
||||||
?? Array.Empty<AgileSprintModel>()).ToList();
|
|
||||||
AgileTaskModels =
|
|
||||||
(await httpClient.GetFromJsonAsync<AgileTaskModel[]>("generated/AgileTaskModels.json")
|
|
||||||
?? Array.Empty<AgileTaskModel>()).ToList();
|
|
||||||
SortSql();
|
|
||||||
isLoaded = true;
|
|
||||||
NotifyDataChanged();
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
We create a `SortSql()` method to handle adjusting the data to match what SQL would of given us.
|
|
||||||
|
|
||||||
```csharp
|
|
||||||
private void SortSql()
|
|
||||||
{
|
|
||||||
foreach (var agileTask in AgileTaskModels!)
|
|
||||||
{
|
|
||||||
if (agileTask.AgileSprintModelId != null)
|
|
||||||
{
|
|
||||||
SprintById(agileTask.AgileSprintModelId.Value)?.AgileTaskModels.Add(agileTask);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
We could also create indexes, or whatever other functionality we lose by SQL not working in production.
|
|
||||||
|
|
||||||
Then it's only a matter of using said data.
|
|
||||||
|
|
||||||
```csharp
|
|
||||||
@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>
|
|
||||||
```
|
|
||||||
|
|
||||||
## Localized Strings
|
|
||||||
|
|
||||||
Localized strings are handled in the Localizations.resx file.
|
|
||||||
|
|
||||||
Most text isn't using localized strings yet. And English is the only plan of support in the short term, and probably in
|
|
||||||
the long term as well.
|
|
||||||
|
|
||||||
## Markdown Files
|
|
||||||
|
|
||||||
Documents and Notes are markdown files located in the `wwwroot/content` folder.
|
|
||||||
|
|
||||||
Navigation to these pages is handled via the SQL data.
|
|
||||||
@@ -1,93 +0,0 @@
|
|||||||
---
|
|
||||||
title: Setup
|
|
||||||
summary: Get set up on developing this web project.
|
|
||||||
created_date: 3/30/2022
|
|
||||||
updated_date: 4/7/2022
|
|
||||||
---
|
|
||||||
|
|
||||||
# Overview
|
|
||||||
|
|
||||||
This document will contain general setup notes for the project.
|
|
||||||
|
|
||||||
## Prerequisite
|
|
||||||
|
|
||||||
To understand content in this document, it is recommended to have some software development experience. Particularly
|
|
||||||
using GitHub and Visual Studio.
|
|
||||||
|
|
||||||
- [GitHub Documentation](https://docs.github.com/en/get-started)
|
|
||||||
|
|
||||||
- [Visual Studio Documentation](https://visualstudio.microsoft.com/vs/getting-started/)
|
|
||||||
|
|
||||||
To make updates to this website, it is recommended to understand HTML/CSS and C#.
|
|
||||||
|
|
||||||
- [C# Documentation](https://docs.microsoft.com/en-us/dotnet/csharp/)
|
|
||||||
- [Mozilla's HTML Documentation](https://developer.mozilla.org/en-US/docs/Learn/HTML/Introduction_to_HTML/Getting_started)
|
|
||||||
- [W3SCHOOLS' HTML Documentation](https://www.w3schools.com/html/)
|
|
||||||
|
|
||||||
Further, you should understand the product and clients this website is for. So it is recommended to play "Immortal:
|
|
||||||
Gates of Pyre".
|
|
||||||
|
|
||||||
- [IGP Website](https://gatesofpyre.com/)
|
|
||||||
- **Please Note:** This product currently has restricted access with it is in a pre-alpha state. If you are not
|
|
||||||
aware or interested in IGP, I recommend to wait for product release. Otherwise, check out their discord for steps
|
|
||||||
of getting access.
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
|
|
||||||
Download and install Visual Studio preview.
|
|
||||||
|
|
||||||
**Note:** Visual Studio Preview currently doesn't work on Mac for this project. Use a PC, or Rider.
|
|
||||||
|
|
||||||
[https://visualstudio.microsoft.com/vs/preview/](https://visualstudio.microsoft.com/vs/preview/)
|
|
||||||
|
|
||||||
When installing, ensure you have selected "Workloads | **ASP.NET and web development**" and "Individual components | **
|
|
||||||
.NET WebAssembly build tools**".
|
|
||||||
|
|
||||||
## Download Project
|
|
||||||
|
|
||||||
Get this project from GitHub.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git clone https://github.com/JonathanMcCaffrey/IGP-Fan-Reference.git
|
|
||||||
```
|
|
||||||
|
|
||||||
## Project Tree
|
|
||||||
|
|
||||||
```
|
|
||||||
C:.
|
|
||||||
├───.github
|
|
||||||
│ └───workflows # Workflows to deploy website
|
|
||||||
├───Components # Components used be website
|
|
||||||
├───Contexts
|
|
||||||
├───IGP
|
|
||||||
│ ├───Pages # Website pages
|
|
||||||
│ └───wwwroot
|
|
||||||
│ ├───css
|
|
||||||
│ ├───generated # Files generated by IGP_Convert. Do not edit
|
|
||||||
│ ├───image
|
|
||||||
│ └───javascript
|
|
||||||
├───IGP_Convert # Converts SQL into JSON for Blazor Wasm
|
|
||||||
├───Model # Data models
|
|
||||||
└───Services # Web services
|
|
||||||
```
|
|
||||||
|
|
||||||
## Running
|
|
||||||
|
|
||||||
- Open `IGP/IGP.sln`.
|
|
||||||
- Click the green RUN button in Visual Studio.
|
|
||||||
- A local copy of the IGP Website should have launched on your machine.
|
|
||||||
|
|
||||||
## Publishing
|
|
||||||
|
|
||||||
Code committed to the `main` branch will automatically be deployed to [production](https://www.igpfanreference.com/).
|
|
||||||
|
|
||||||
Code committed to the `develop` branch will automatically be deployed
|
|
||||||
to [development](https://calm-mud-04916b210.1.azurestaticapps.net/).
|
|
||||||
|
|
||||||
_This is handle via the files in `.github/workflow`. Look into
|
|
||||||
these [GitHub Actions Documents](https://docs.github.com/en/actions) if curious about how this CI system works._
|
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
Nothing that some good internet searches cannot resolved. But you can also contact the project maintainer
|
|
||||||
on [Discord](https://discord.gg/uMq8bMGeeN).
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
[{"Id":0,"Name":"Easy Tasks","Description":"General tasks that I can grab when too tired to program","StartDate":null,"EndDate":null,"Notes":null,"AgileTaskModels":[]},{"Id":1,"Name":"Agile Sprint","Description":"Changelogs and sprint views were going to be pushed till later, but I am feeling inspired by the IGP Content Creators\u0027 minimum weekly lifecycle requirement. So I am going to focus on agile-related tasks, and handle roadmap tasks after this initial sprint. All weekly sprints will release on Sunday, starting next Sunday.","StartDate":"2022-02-14T00:00:00","EndDate":"2022-02-20T00:00:00","Notes":null,"AgileTaskModels":[]},{"Id":2,"Name":"SQL Update","Description":"The SQL update is big enough to be a full sprint in of itself, and I spent less time this week for development. Will just extend sprint by 2 week, and remove all non SQL tasks from the sprint.","StartDate":"2022-02-20T00:00:00","EndDate":"2022-03-27T00:00:00","Notes":null,"AgileTaskModels":[]},{"Id":3,"Name":"Database Page","Description":"Improvements to the Database page","StartDate":"2022-03-27T00:00:00","EndDate":"2022-04-03T00:00:00","Notes":null,"AgileTaskModels":[]},{"Id":4,"Name":"Branding","Description":"Improve streaming branding around the website","StartDate":"2022-04-03T00:00:00","EndDate":"2022-04-10T00:00:00","Notes":null,"AgileTaskModels":[]},{"Id":5,"Name":"Calculators","Description":"Improve Calculators","StartDate":"2022-04-10T00:00:00","EndDate":"2022-04-24T00:00:00","Notes":null,"AgileTaskModels":[]},{"Id":6,"Name":"Infrastructure Misc","Description":"Localization, Analytics, and Test Automation","StartDate":"2022-04-24T00:00:00","EndDate":"2022-05-08T00:00:00","Notes":null,"AgileTaskModels":[]},{"Id":7,"Name":"Damage Calculator and Lists","Description":"Sort unit data by damage output. Select a attack and defense unit to see hits to kill.","StartDate":"2022-05-08T00:00:00","EndDate":"2022-05-22T00:00:00","Notes":null,"AgileTaskModels":[]},{"Id":8,"Name":"More Test Automation and CI","Description":"More test automation work. Integrate into CI","StartDate":"2022-05-22T00:00:00","EndDate":"2022-06-05T00:00:00","Notes":null,"AgileTaskModels":[]}]
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
|||||||
[{"Id":1,"ParentId":null,"DocSectionModelId":1,"Href":"setup","DocumentationModels":[],"Parent":null,"PageOrder":0,"CreatedDate":"2022-03-30T00:00:00","UpdatedDate":"2022-04-07T00:00:00","Name":"Development Setup","Description":"Get set up on developing this web project.","Content":"setup"},{"Id":2,"ParentId":null,"DocSectionModelId":1,"Href":"project-data","DocumentationModels":[],"Parent":null,"PageOrder":0,"CreatedDate":"2022-04-11T00:00:00","UpdatedDate":"2022-04-11T00:00:00","Name":"Project Data","Description":"Using data in this project.","Content":"project-data"},{"Id":3,"ParentId":null,"DocSectionModelId":1,"Href":"cheat-sheet","DocumentationModels":[],"Parent":null,"PageOrder":0,"CreatedDate":"2022-04-11T00:00:00","UpdatedDate":"2022-04-11T00:00:00","Name":"Cheat Sheet","Description":"Handy links or quick information on this project.","Content":"cheat-sheet"}]
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
[{"Id":1,"Name":"Start","DocumentationModels":[]}]
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
|||||||
[{"Id":1,"Name":"Database UX Patch","Date":"2022-03-13T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":2,"Name":"Thrum Stats Hotfix","Date":"2022-03-12T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":3,"Name":"Memory Tester Patch","Date":"2022-03-01T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":4,"Name":"Hide Pyre Hotfix","Date":"2022-02-20T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":5,"Name":"Stream Patch 1","Date":"2022-02-20T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":6,"Name":"Agile UI Hotfix","Date":"2022-02-20T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":7,"Name":"Armor Patch","Date":"2022-02-19T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":8,"Name":"Home Page Patch","Date":"2022-02-19T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":9,"Name":"Mobile Menu Hotfix 2","Date":"2022-02-19T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":10,"Name":"Mobile Menu Hotfix","Date":"2022-02-19T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":11,"Name":"Mobile Menu Patch","Date":"2022-02-19T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":12,"Name":"0.0.6.8375a Patch","Date":"2022-02-18T00:00:00","GitChangeModels":[],"Important":"True"},{"Id":13,"Name":"Google Tracking Hotfix","Date":"2022-02-18T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":14,"Name":"Privacy Policy Patch","Date":"2022-02-17T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":15,"Name":"Home Page Quick Hotfix","Date":"2022-02-16T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":16,"Name":"Early Agile Patch","Date":"2022-02-16T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":17,"Name":"Form Text Rendering Hotfix","Date":"2022-02-15T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":18,"Name":"Reducing Timing Interval Hotfix","Date":"2022-02-15T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":19,"Name":"Changelog Patch","Date":"2022-02-14T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":20,"Name":"SQL Patch","Date":"2022-03-26T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":21,"Name":"Stream Patch 2","Date":"2022-03-30T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":22,"Name":"0.0.6.8900a Patch","Date":"2022-03-30T00:00:00","GitChangeModels":[],"Important":"True"},{"Id":23,"Name":"Database Links Patch","Date":"2022-04-01T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":24,"Name":"Open Source Patch","Date":"2022-04-03T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":25,"Name":"Stream Patch 3","Date":"2022-04-03T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":26,"Name":"Notes/Docs Patch","Date":"2022-04-10T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":27,"Name":"Stream Patch 4","Date":"2022-04-10T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":28,"Name":"Passive Patch","Date":"2022-04-12T00:00:00","GitChangeModels":[],"Important":"True"},{"Id":29,"Name":"0.0.6.9121a Patch","Date":"2022-04-13T00:00:00","GitChangeModels":[],"Important":"True"},{"Id":30,"Name":"Stream Patch 5","Date":"2022-04-13T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":31,"Name":"BuildCalc Hotfix","Date":"2022-04-13T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":32,"Name":"Search Patch","Date":"2022-04-16T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":33,"Name":"Search Hotfix","Date":"2022-04-16T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":34,"Name":"Stream Patch 6","Date":"2022-04-17T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":35,"Name":"v0.0.6.9201a Patch","Date":"2022-04-18T00:00:00","GitChangeModels":[],"Important":"True"},{"Id":36,"Name":"Build Calc Free Money Hotfix","Date":"2022-04-18T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":37,"Name":"BuildCalc Pyre Patch","Date":"2022-04-24T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":38,"Name":"Stream Patch 7","Date":"2022-04-24T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":39,"Name":"v0.0.6.9513a Patch","Date":"2022-04-28T00:00:00","GitChangeModels":[],"Important":"True"},{"Id":40,"Name":"v0.0.6.9553a Patch","Date":"2022-04-29T00:00:00","GitChangeModels":[],"Important":"True"},{"Id":41,"Name":"Stream Patch 8","Date":"2022-04-29T00:00:00","GitChangeModels":[],"Important":"False"}]
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
[{"Id":1,"ParentId":null,"NoteSectionModelId":3,"Href":"holdout","CreatedDate":"2022-02-18T00:00:00","UpdatedDate":"2022-02-18T00:00:00","Name":"Coop Holdout, Some distant place (Nuath)","Description":"First coop test map in pre-alpha.","Content":"coop/holdout","LoadedContent":null,"IsHidden":"False","IsPreAlpha":"True","NoteContentModels":[],"Parent":null,"PageOrder":0},{"Id":2,"ParentId":null,"NoteSectionModelId":2,"Href":"hotkeys","CreatedDate":"2022-04-13T00:00:00","UpdatedDate":"2022-04-13T00:00:00","Name":"Custom HotKey Setup","Description":"Customize your hotkeys in the pre-alpha.","Content":"settings/hotkeys","LoadedContent":null,"IsHidden":"False","IsPreAlpha":"True","NoteContentModels":[],"Parent":null,"PageOrder":0},{"Id":3,"ParentId":null,"NoteSectionModelId":1,"Href":"armor-types","CreatedDate":"2022-04-13T00:00:00","UpdatedDate":"2022-04-13T00:00:00","Name":"Armor Types","Description":"Heavy, Medium, and Light. What does it mean?","Content":"the-basics/armor-types","LoadedContent":null,"IsHidden":"False","IsPreAlpha":"True","NoteContentModels":[],"Parent":null,"PageOrder":0}]
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
[{"Id":1,"Name":"The Basics","NoteContentModels":[]},{"Id":2,"Name":"Game Settings","NoteContentModels":[]},{"Id":3,"Name":"PVE Content","NoteContentModels":[]}]
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
[{"Key":"GamePatch","Value":"0.0.6.10097a"},{"Key":"LastUpdated","Value":"August 27, 2022"}]
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
[{"Id":1,"WebSectionModelId":2,"Name":"Database","Description":"Database of game information","Href":"database","IsPrivate":"False"},{"Id":2,"WebSectionModelId":1,"Name":"Build Calculator","Description":"Build order calculator for determining army timings","Href":"build-calculator","IsPrivate":"False"},{"Id":3,"WebSectionModelId":1,"Name":"Harass Calculator","Description":"Alloy harassment calculator","Href":"harass-calculator","IsPrivate":"False"},{"Id":4,"WebSectionModelId":1,"Name":"Memory Tester","Description":"Testing memory","Href":"memory-tester","IsPrivate":"False"},{"Id":5,"WebSectionModelId":1,"Name":"Comparion Charts","Description":"Ecnomy charts to compare build orders","Href":"comparison-charts","IsPrivate":"True"},{"Id":6,"WebSectionModelId":2,"Name":"Notes","Description":"General player notes","Href":"notes","IsPrivate":"False"},{"Id":7,"WebSectionModelId":2,"Name":"Key Mapping","Description":"General key mapping info","Href":"keymapping","IsPrivate":"True"},{"Id":8,"WebSectionModelId":4,"Name":"Milestones","Description":"Link to Milestones on GitHub","Href":"https://github.com/JonathanMcCaffrey/IGP-Fan-Reference/milestones","IsPrivate":"False"},{"Id":9,"WebSectionModelId":4,"Name":"Commits","Description":"Link to Commits on GitHub","Href":"https://github.com/JonathanMcCaffrey/IGP-Fan-Reference/commits/main","IsPrivate":"False"},{"Id":10,"WebSectionModelId":4,"Name":"Tasks","Description":"Link to Tasks on GitHub","Href":"https://github.com/JonathanMcCaffrey/IGP-Fan-Reference/projects/3","IsPrivate":"False"},{"Id":11,"WebSectionModelId":4,"Name":"Code","Description":"Link to Code on GitHub","Href":"https://github.com/JonathanMcCaffrey/IGP-Fan-Reference","IsPrivate":"False"},{"Id":12,"WebSectionModelId":2,"Name":"Documentation","Description":"Explaining how to use this website","Href":"documentation","IsPrivate":"True"},{"Id":13,"WebSectionModelId":3,"Name":"About","Description":"Answering general questions on the website","Href":"about","IsPrivate":"False"},{"Id":14,"WebSectionModelId":3,"Name":"Contact","Description":"My contact info","Href":"contact","IsPrivate":"False"},{"Id":15,"WebSectionModelId":3,"Name":"Streams","Description":"Stream info","Href":"streams","IsPrivate":"False"},{"Id":16,"WebSectionModelId":4,"Name":"Wiki","Description":"Link to Wiki on GitHub","Href":"https://github.com/JonathanMcCaffrey/IGP-Fan-Reference/wiki","IsPrivate":"False"},{"Id":17,"WebSectionModelId":5,"Name":"Permissions","Description":"Permission Settings","Href":"permissions","IsPrivate":"False"},{"Id":18,"WebSectionModelId":5,"Name":"Data Collection","Description":"Data Collection Settings","Href":"data-collection","IsPrivate":"True"},{"Id":19,"WebSectionModelId":5,"Name":"Storage","Description":"Storage Settings","Href":"storage","IsPrivate":"False"},{"Id":20,"WebSectionModelId":1,"Name":"Economy Comparison","Description":"Compare economies","Href":"economy-comparison","IsPrivate":"False"}]
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
[{"Id":1,"Name":"Tools","Description":"Tools Stuff","Order":1,"IsPrivate":"False","Icon":"fa-screwdriver-wrench","OnlyIcon":false,"WebPageModels":[]},{"Id":2,"Name":"Resources","Description":"Resources Stuff","Order":2,"IsPrivate":"False","Icon":"fa-toolbox","OnlyIcon":false,"WebPageModels":[]},{"Id":3,"Name":"General","Description":"About Stuff","Order":3,"IsPrivate":"False","Icon":"fa-circle-info","OnlyIcon":false,"WebPageModels":[]},{"Id":4,"Name":"Development","Description":"Development Stuff","Order":4,"IsPrivate":"False","Icon":"fa-code","OnlyIcon":false,"WebPageModels":[]},{"Id":5,"Name":"Settings","Description":"Settings Stuff","Order":5,"IsPrivate":"False","Icon":"fa-gear","OnlyIcon":false,"WebPageModels":[]}]
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
|
||||||
|
|
||||||
<PropertyGroup>
|
|
||||||
<OutputType>Exe</OutputType>
|
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
|
||||||
<Nullable>enable</Nullable>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\Contexts\Contexts.csproj" />
|
|
||||||
<ProjectReference Include="..\Model\Model.csproj" />
|
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite.Core" Version="6.0.8" />
|
|
||||||
|
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.8" />
|
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="6.0.8">
|
|
||||||
<PrivateAssets>all</PrivateAssets>
|
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="6.0.8" />
|
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.8" />
|
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.8">
|
|
||||||
<PrivateAssets>all</PrivateAssets>
|
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
||||||
</PackageReference>
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
using System.Text.Json;
|
|
||||||
using Contexts;
|
|
||||||
using Microsoft.EntityFrameworkCore;
|
|
||||||
|
|
||||||
var webProjectName = "IGP";
|
|
||||||
var projectPath = $"{Environment.CurrentDirectory}/../../../..";
|
|
||||||
var webPath = $"{projectPath}/{webProjectName}/wwwroot/generated";
|
|
||||||
|
|
||||||
var options = new DbContextOptionsBuilder<DatabaseContext>();
|
|
||||||
options.UseSqlite($"Filename={projectPath}/{webProjectName}/Database.db");
|
|
||||||
|
|
||||||
// Load our database
|
|
||||||
using (var db = new DatabaseContext(options.Options))
|
|
||||||
{
|
|
||||||
// And save data in format Blazor Wasm can use
|
|
||||||
File.WriteAllTextAsync($"{webPath}/GitPatchModels.json", JsonSerializer.Serialize(db.GitPatchModels));
|
|
||||||
File.WriteAllTextAsync($"{webPath}/GitChangeModels.json", JsonSerializer.Serialize(db.GitChangeModels));
|
|
||||||
File.WriteAllTextAsync($"{webPath}/AgileSprintModels.json", JsonSerializer.Serialize(db.AgileSprintModels));
|
|
||||||
File.WriteAllTextAsync($"{webPath}/AgileTaskModels.json", JsonSerializer.Serialize(db.AgileTaskModels));
|
|
||||||
File.WriteAllTextAsync($"{webPath}/WebSectionModels.json", JsonSerializer.Serialize(db.WebSectionModels));
|
|
||||||
File.WriteAllTextAsync($"{webPath}/WebPageModels.json", JsonSerializer.Serialize(db.WebPageModels));
|
|
||||||
|
|
||||||
File.WriteAllTextAsync($"{webPath}/DocContentModels.json", JsonSerializer.Serialize(db.DocContentModels));
|
|
||||||
File.WriteAllTextAsync($"{webPath}/DocConnectionModels.json", JsonSerializer.Serialize(db.DocConnectionModels));
|
|
||||||
File.WriteAllTextAsync($"{webPath}/DocSectionModels.json", JsonSerializer.Serialize(db.DocSectionModels));
|
|
||||||
|
|
||||||
File.WriteAllTextAsync($"{webPath}/NoteContentModels.json", JsonSerializer.Serialize(db.NoteContentModels));
|
|
||||||
File.WriteAllTextAsync($"{webPath}/NoteConnectionModels.json", JsonSerializer.Serialize(db.NoteConnectionModels));
|
|
||||||
File.WriteAllTextAsync($"{webPath}/NoteSectionModels.json", JsonSerializer.Serialize(db.NoteSectionModels));
|
|
||||||
|
|
||||||
// Set date variable
|
|
||||||
db.Variables.Find("LastUpdated")!.Value = $"{DateTime.Now:MMMM dd, yyyy}";
|
|
||||||
File.WriteAllTextAsync($"{webPath}/Variables.json", JsonSerializer.Serialize(db.Variables));
|
|
||||||
}
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
|
||||||
using Model.Work.Tasks.Enums;
|
|
||||||
|
|
||||||
namespace Model.Work.Tasks;
|
|
||||||
|
|
||||||
public class AgileSprintModel
|
|
||||||
{
|
|
||||||
public int Id { get; set; }
|
|
||||||
public string Name { get; set; } = "Add name...";
|
|
||||||
public string Description { get; set; } = "Add description...";
|
|
||||||
|
|
||||||
public DateTime? StartDate { get; set; } = null;
|
|
||||||
public DateTime? EndDate { get; set; } = null;
|
|
||||||
|
|
||||||
public string Notes { get; set; } = "Add notes...";
|
|
||||||
|
|
||||||
[NotMapped] public virtual ICollection<AgileTaskModel> AgileTaskModels { get; set; } = new List<AgileTaskModel>();
|
|
||||||
|
|
||||||
|
|
||||||
public string GetSprintType()
|
|
||||||
{
|
|
||||||
var now = DateTime.Now;
|
|
||||||
|
|
||||||
if (StartDate == null || EndDate == null) return SprintType.Planned;
|
|
||||||
|
|
||||||
if (DateTime.Compare(now, EndDate.GetValueOrDefault()) > 0) return SprintType.Completed;
|
|
||||||
if (DateTime.Compare(now, StartDate.GetValueOrDefault()) >= 0) return SprintType.Current;
|
|
||||||
|
|
||||||
return SprintType.Planned;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
using System;
|
|
||||||
using Model.Work.Tasks.Enums;
|
|
||||||
|
|
||||||
namespace Model.Work.Tasks;
|
|
||||||
|
|
||||||
public class AgileTaskModel
|
|
||||||
{
|
|
||||||
public int Id { get; set; } = 1;
|
|
||||||
public int? AgileSprintModelId { get; set; } = null;
|
|
||||||
public string Name { get; set; } = "Add name...";
|
|
||||||
public string Description { get; set; } = "Add description...";
|
|
||||||
public string Notes { get; set; } = "Add notes...";
|
|
||||||
public string Status { get; set; } = StatusType.Fun_Idea;
|
|
||||||
public string Priority { get; set; } = PriorityType.Medium;
|
|
||||||
public string Task { get; set; } = TaskType.Feature;
|
|
||||||
|
|
||||||
public int OrderPriority => Status == StatusType.In_Progress ? 1
|
|
||||||
: Status == StatusType.Todo ? 2
|
|
||||||
: Status == StatusType.Done ? 3
|
|
||||||
: Status == StatusType.Canceled ? 4
|
|
||||||
: Status == StatusType.To_Test ? 2
|
|
||||||
: Status == StatusType.Fun_Idea ? 5 : 6;
|
|
||||||
|
|
||||||
public DateTime? Created { get; set; } = null;
|
|
||||||
public DateTime? Finished { get; set; } = null;
|
|
||||||
}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
namespace Model.Work.Tasks.Enums;
|
|
||||||
|
|
||||||
public class PriorityType
|
|
||||||
{
|
|
||||||
public const string Blocker = "Blocker";
|
|
||||||
public const string High = "High";
|
|
||||||
public const string Medium = "Medium";
|
|
||||||
public const string Low = "Low";
|
|
||||||
public const string None = "None";
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
namespace Model.Work.Tasks.Enums;
|
|
||||||
|
|
||||||
public class ProjectType
|
|
||||||
{
|
|
||||||
public const string Management = "Management";
|
|
||||||
public const string Immortal = "Management";
|
|
||||||
public const string Food = "Management";
|
|
||||||
public const string Job = "Management";
|
|
||||||
public const string Time = "Management";
|
|
||||||
public const string Maintence = "Management";
|
|
||||||
public const string Website = "Management";
|
|
||||||
public const string Tasks = "Management";
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
namespace Model.Work.Tasks.Enums;
|
|
||||||
|
|
||||||
public class SprintType
|
|
||||||
{
|
|
||||||
public const string Current = "Current";
|
|
||||||
public const string Planned = "Planned";
|
|
||||||
public const string Completed = "Completed";
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
namespace Model.Work.Tasks.Enums;
|
|
||||||
|
|
||||||
public class StatusType
|
|
||||||
{
|
|
||||||
public const string In_Progress = "In_Progress";
|
|
||||||
public const string Todo = "Todo";
|
|
||||||
public const string To_Test = "To_Test";
|
|
||||||
public const string Done = "Done";
|
|
||||||
public const string Canceled = "Canceled";
|
|
||||||
public const string Fun_Idea = "Fun_Idea";
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
namespace Model.Work.Tasks.Enums;
|
|
||||||
|
|
||||||
public class TaskType
|
|
||||||
{
|
|
||||||
public const string Feature = "Feature";
|
|
||||||
public const string Bug = "Bug";
|
|
||||||
public const string Document = "Document";
|
|
||||||
}
|
|
||||||
@@ -25,6 +25,7 @@ public class BuildOrderModel
|
|||||||
public int CurrentSupplyUsed { get; set; } = 0;
|
public int CurrentSupplyUsed { get; set; } = 0;
|
||||||
public Dictionary<int, List<EntityModel>> StartedOrders { get; set; } = new();
|
public Dictionary<int, List<EntityModel>> StartedOrders { get; set; } = new();
|
||||||
public Dictionary<int, List<EntityModel>> CompletedOrders { get; set; } = new();
|
public Dictionary<int, List<EntityModel>> CompletedOrders { get; set; } = new();
|
||||||
|
public Dictionary<int, List<EntityModel>> DepletedOrders { get; set; } = new();
|
||||||
public Dictionary<string, int> UniqueCompletedTimes { get; set; } = new();
|
public Dictionary<string, int> UniqueCompletedTimes { get; set; } = new();
|
||||||
public Dictionary<string, int> UniqueCompletedCount { get; set; } = new();
|
public Dictionary<string, int> UniqueCompletedCount { get; set; } = new();
|
||||||
public Dictionary<int, int> SupplyCountTimes { get; set; } = new();
|
public Dictionary<int, int> SupplyCountTimes { get; set; } = new();
|
||||||
@@ -47,7 +48,7 @@ public class BuildOrderModel
|
|||||||
new List<EntityModel>
|
new List<EntityModel>
|
||||||
{
|
{
|
||||||
EntityModel.Get(DataType.STARTING_Bastion),
|
EntityModel.Get(DataType.STARTING_Bastion),
|
||||||
EntityModel.Get(DataType.STARTING_TownHall_Aru)
|
EntityModel.Get(factionStartingTownHall)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -58,7 +59,7 @@ public class BuildOrderModel
|
|||||||
new List<EntityModel>
|
new List<EntityModel>
|
||||||
{
|
{
|
||||||
EntityModel.Get(DataType.STARTING_Bastion),
|
EntityModel.Get(DataType.STARTING_Bastion),
|
||||||
EntityModel.Get(DataType.STARTING_TownHall_Aru)
|
EntityModel.Get(factionStartingTownHall)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -68,7 +69,7 @@ public class BuildOrderModel
|
|||||||
DataType.STARTING_Bastion, 0
|
DataType.STARTING_Bastion, 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
DataType.STARTING_TownHall_Aru, 0
|
factionStartingTownHall, 0
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
UniqueCompletedCount = new Dictionary<string, int>
|
UniqueCompletedCount = new Dictionary<string, int>
|
||||||
@@ -77,7 +78,7 @@ public class BuildOrderModel
|
|||||||
DataType.STARTING_Bastion, 1
|
DataType.STARTING_Bastion, 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
DataType.STARTING_TownHall_Aru, 1
|
factionStartingTownHall, 1
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
SupplyCountTimes = new Dictionary<int, int>
|
SupplyCountTimes = new Dictionary<int, int>
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user