Compare commits
No commits in common. "bc07f56c975fc45f81aa45b389c6b5ee17a8d950" and "0b316a3b4b1822a94b71f1f458d1d0858fb5a043" have entirely different histories.
bc07f56c97
...
0b316a3b4b
|
|
@ -1,15 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Portfolio.Domain.Features.Portfolio
|
||||
{
|
||||
public class ProjectEntry
|
||||
{
|
||||
public string Title { get; set; }
|
||||
public List<string> Descriptions { get; set; }
|
||||
public List<ProjectLink> Links { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Portfolio.Domain.Features.Portfolio
|
||||
{
|
||||
public class ProjectLink
|
||||
{
|
||||
public string Type { get; set; }
|
||||
public string Url { get; set; }
|
||||
public string Label { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Portfolio.Domain.Features.Portfolio
|
||||
{
|
||||
public class WorkExperience
|
||||
{
|
||||
public string Title { get; set; }
|
||||
public string Company { get; set; }
|
||||
public int StartYear { get; set; }
|
||||
public int EndYear { get; set; }
|
||||
public string Details { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +1,6 @@
|
|||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Identity.Client;
|
||||
using Portfolio.Application.Services.Articles;
|
||||
using Portfolio.Application.Services.NWSWeatherService;
|
||||
using Portfolio.Application.Services.PokemonService;
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" class="">
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<base href="/" />
|
||||
|
||||
<link rel="stylesheet" href="bootstrap/bootstrap-pulse.css" /> <!-- app.css -->
|
||||
<link rel="stylesheet" href="bootstrap/bootstrap-brite.css" /> <!-- app.css -->
|
||||
<link rel="stylesheet" href="Portfolio.WebUI.Server.styles.css" />
|
||||
|
||||
<link rel="icon" type="image/png" href="favicon.png" />
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
@attribute [StreamRendering]
|
||||
@rendermode InteractiveServer
|
||||
|
||||
<div class="pt-4">
|
||||
<div>
|
||||
@if (TemperatureDays is null || TemperatureRanges is null)
|
||||
{
|
||||
<Loading />
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
else
|
||||
{
|
||||
|
||||
<h3 class="text-xl font-bold mb-4 mt-4">Temperature Blanket Visualizer</h3>
|
||||
<h3 class="text-xl font-bold mb-4">Temperature Blanket Visualizer</h3>
|
||||
|
||||
<div>
|
||||
<div class="row">
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@
|
|||
|
||||
<div class="row align-items-center mb-2 ms-1">
|
||||
<div class="col-6 text-end pe-2">
|
||||
<label class="form-label mb-0 text-nowrap">
|
||||
<label class="form-label mb-0">
|
||||
@TempRanges[i].Min° – @TempRanges[i].Max°
|
||||
</label>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,9 +0,0 @@
|
|||
@inject IJSRuntime JS
|
||||
|
||||
<div class="">
|
||||
<button class="btn btn-sm btn-primary p-1 rounded rounded-5 align-self-start text-white " @onclick="DownloadPokemonJson">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="currentColor" class="bi bi-arrow-down-circle" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8.5 4.5a.5.5 0 0 0-1 0v5.793L5.354 8.146a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.JSInterop;
|
||||
using Portfolio.Domain.Features.Pokemon;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace Portfolio.WebUI.Server.Components.Component.Pokemon_Components
|
||||
{
|
||||
partial class PokemonDownload
|
||||
{
|
||||
[Parameter]
|
||||
public List<Pokemon> _Pokemon { get; set; }
|
||||
|
||||
private List<Pokemon> pokemons = new List<Pokemon>();
|
||||
|
||||
|
||||
protected override void OnParametersSet()
|
||||
{
|
||||
if (_Pokemon != null)
|
||||
{
|
||||
pokemons = _Pokemon.ToList();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private async Task DownloadPokemonJson()
|
||||
{
|
||||
var json = JsonSerializer.Serialize(pokemons, new JsonSerializerOptions { WriteIndented = true });
|
||||
await JS.InvokeVoidAsync("downloadFileFromText", "pokemon.json", "application/json", json);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
<!-- Home -->
|
||||
<button class="btn btn-primary mx-1 align-content-center" style="border-radius: 50px 15px; max-width: 60px;">
|
||||
<NavLink href="/pokemonsleep">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-fill mb-1 text-white" viewBox="0 0 16 16">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#FFF" class="bi bi-house-fill mb-1" viewBox="0 0 16 16">
|
||||
<path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L8 2.207l6.646 6.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293z" />
|
||||
<path d="m8 3.293 6 6V13.5a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 13.5V9.293z" />
|
||||
</svg>
|
||||
|
|
@ -23,7 +23,7 @@
|
|||
<!-- Pokemon Table-->
|
||||
<button class="btn btn-info mx-1" style="border-radius: 50px 15px; max-width: 60px;">
|
||||
<NavLink href="/pokemon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-table mb-1 text-white" viewBox="0 0 16 16">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#FFF" class="bi bi-table mb-1" viewBox="0 0 16 16">
|
||||
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 2h-4v3h4zm0 4h-4v3h4zm0 4h-4v3h3a1 1 0 0 0 1-1zm-5 3v-3H6v3zm-5 0v-3H1v2a1 1 0 0 0 1 1zm-4-4h4V8H1zm0-4h4V4H1zm5-3v3h4V4zm4 4H6v3h4z" />
|
||||
</svg>
|
||||
</NavLink>
|
||||
|
|
@ -32,7 +32,7 @@
|
|||
<!-- Rate Pokemon -->
|
||||
<button class="btn btn-success mx-1" style="border-radius: 50px 15px; max-width: 60px;">
|
||||
<NavLink href="/rate-pokemon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-award-fill mb-1 text-white" viewBox="0 0 16 16">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#FFF" class="bi bi-award-fill mb-1" viewBox="0 0 16 16">
|
||||
<path d="m8 0 1.669.864 1.858.282.842 1.68 1.337 1.32L13.4 6l.306 1.854-1.337 1.32-.842 1.68-1.858.282L8 12l-1.669-.864-1.858-.282-.842-1.68-1.337-1.32L2.6 6l-.306-1.854 1.337-1.32.842-1.68L6.331.864z" />
|
||||
<path d="M4 11.794V16l4-1 4 1v-4.206l-2.018.306L8 13.126 6.018 12.1z" />
|
||||
</svg>
|
||||
|
|
@ -42,7 +42,7 @@
|
|||
<!-- Add Pokemon (Wrap in Auth) -->
|
||||
<button class="btn btn-warning mx-1" style="border-radius: 50px 15px; max-width: 60px;">
|
||||
<NavLink href="/pokemonsleep/add-new-pokemon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-plus-circle-fill text-white" viewBox="0 0 16 16">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#FFF" class="bi bi-plus-circle-fill mb-1" viewBox="0 0 16 16">
|
||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8.5 4.5a.5.5 0 0 0-1 0v3h-3a.5.5 0 0 0 0 1h3v3a.5.5 0 0 0 1 0v-3h3a.5.5 0 0 0 0-1h-3z" />
|
||||
</svg>
|
||||
</NavLink>
|
||||
|
|
|
|||
|
|
@ -5,43 +5,25 @@
|
|||
@attribute [StreamRendering]
|
||||
@rendermode InteractiveServer
|
||||
|
||||
<div class="d-flex justify-content-end">
|
||||
|
||||
|
||||
</div>
|
||||
<!-- Table A: Desktop View-->
|
||||
<div class="container d-none d-md-block " style="height: 70vh;">
|
||||
<!-- Main UI -->
|
||||
<div class="border-0 mt-4 mx-auto col-12 col-md-10 col-lg-8 pokemontable ">
|
||||
<div class="card shadow-sm border-0 mt-4 mx-auto col-12 col-md-10 col-lg-8 pokemontable">
|
||||
<!-- Table Header -->
|
||||
<div class="row bg-secondary bg-gradient py-3 border-0">
|
||||
<div class="d-flex align-items-center justify-content-between w-100 position-relative px-3">
|
||||
<div class="row card-header bg-secondary bg-gradient py-3 border-0">
|
||||
<div class="flex-row justify-content-between">
|
||||
<div class="text-center position-relative">
|
||||
<input class="form-control position-absolute top-0 start-0 border-0 w-25" placeholder="Search Pokémon..." @bind="SearchTerm" @oninput="HandleSearch" />
|
||||
|
||||
<!-- Left: Search -->
|
||||
<input class="form-control w-25 me-3"
|
||||
placeholder="Search Pokémon..."
|
||||
@bind="SearchTerm"
|
||||
@oninput="HandleSearch" />
|
||||
|
||||
<!-- Center: Title -->
|
||||
<h2 class="text-white text-decoration-underline mb-0 position-absolute start-50 translate-middle-x">
|
||||
Available Pokémon
|
||||
</h2>
|
||||
|
||||
<!-- Right: Count + Download -->
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
<div class="badge bg-info">
|
||||
<p class="statText mb-0">@(pokemons.Count()) Pokémon</p>
|
||||
<h2 class="text-info text-decoration-underline">Available Pokémon</h2>
|
||||
<div class="m-1 badge bg-info position-absolute top-0 end-0 border-0"><p class="statText">@(pokemons.Count()) Pokémon</p></div>
|
||||
</div>
|
||||
<PokemonDownload _Pokemon="pokemons" />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="tableFixHead d-flex flex-column justify-content-start bg-secondary table-responsive row">
|
||||
<table class="table table-borderless border-0 table-secondary table-striped align-middle">
|
||||
<table class="table col table-borderless border-0 table-secondary table-striped align-middle">
|
||||
<!-- Table Head -->
|
||||
<thead class="">
|
||||
<tr class="">
|
||||
|
|
@ -51,11 +33,7 @@
|
|||
<th class="text-white text-bg-info col-1 text-center" scope="col">Type</th>
|
||||
<th class="text-white text-bg-info col-2 text-center" scope="col">Sleep Type</th>
|
||||
<th class="text-white text-bg-info col-2 text-center" scope="col">Speciality</th>
|
||||
@if (adminToggle)
|
||||
{
|
||||
<th class="text-white text-bg-info col-1 text-center" scope="col">Edit</th>
|
||||
|
||||
}
|
||||
</tr>
|
||||
</thead>
|
||||
<!-- If/Else Pokemon Loaded-->
|
||||
|
|
@ -135,17 +113,6 @@
|
|||
</div>
|
||||
</td>
|
||||
|
||||
@if (adminToggle)
|
||||
{
|
||||
<td class="" style="">
|
||||
<div class="d-flex justify-content-center">
|
||||
<PokemonEditButton PokemonId="@pokemon.PokemonId" />
|
||||
|
||||
</div>
|
||||
</td>
|
||||
}
|
||||
|
||||
|
||||
</tr>
|
||||
}
|
||||
}
|
||||
|
|
@ -164,16 +131,11 @@
|
|||
|
||||
|
||||
</table>
|
||||
|
||||
</div>
|
||||
<!-- Wrap in Auth -->
|
||||
<div class="d-flex justify-content-end mt-1">
|
||||
<div class="form-check form-switch">
|
||||
<input class="form-check-input rounded rounded-3" type="checkbox" role="switch" id="flexSwitchCheckDefault" @bind="adminToggle">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Desktop B: Mobile View -->
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@
|
|||
using Microsoft.EntityFrameworkCore.Metadata.Internal;
|
||||
using Microsoft.JSInterop;
|
||||
using Portfolio.Domain.Features.Pokemon;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace Portfolio.WebUI.Server.Components.Component.Pokemon_Components
|
||||
{
|
||||
|
|
@ -11,12 +10,9 @@ namespace Portfolio.WebUI.Server.Components.Component.Pokemon_Components
|
|||
[Parameter]
|
||||
public List<Pokemon> AllPokemon { get; set; }
|
||||
|
||||
|
||||
private List<Pokemon> pokemons = new List<Pokemon>();
|
||||
private Dictionary<int, bool> isShiny = new Dictionary<int, bool>();
|
||||
|
||||
private bool adminToggle = false;
|
||||
|
||||
|
||||
protected override void OnParametersSet()
|
||||
{
|
||||
|
|
@ -96,9 +92,6 @@ namespace Portfolio.WebUI.Server.Components.Component.Pokemon_Components
|
|||
|
||||
return $"https://www.serebii.net/pokemonsleep/pokemon/type/{pokemonType.ToLower()}.png";
|
||||
}
|
||||
private void HandleToggleChange(ChangeEventArgs e)
|
||||
{
|
||||
Console.WriteLine($"Admin Toggle is now: {adminToggle}");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
@inherits LayoutComponentBase
|
||||
|
||||
<div class="page">
|
||||
<main class="">
|
||||
<div class="page bg-primary-subtle h-100">
|
||||
<main class="h-100 w-100">
|
||||
<NavMenu3 />
|
||||
<article class="container ">
|
||||
<article class="container m-auto">
|
||||
<div class="">
|
||||
@Body
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,33 +1,33 @@
|
|||
<div class="navbar navbar-expand bg-primary border-0">
|
||||
<div class="d-flex align-items-center mb-3 mb-md-0 me-md-auto link-light text-decoration-none px-3">
|
||||
<div class="d-flex align-items-center mb-3 mb-md-0 me-md-auto link-light text-decoration-none px-2">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="#FFFFFF" class="bi bi-arrow-through-heart" viewBox="0 0 16 16" style="cursor: pointer;">
|
||||
<path fill-rule="evenodd" d="M2.854 15.854A.5.5 0 0 1 2 15.5V14H.5a.5.5 0 0 1-.354-.854l1.5-1.5A.5.5 0 0 1 2 11.5h1.793l.53-.53c-.771-.802-1.328-1.58-1.704-2.32-.798-1.575-.775-2.996-.213-4.092C3.426 2.565 6.18 1.809 8 3.233c1.25-.98 2.944-.928 4.212-.152L13.292 2 12.147.854A.5.5 0 0 1 12.5 0h3a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.854.354L14 2.707l-1.006 1.006c.236.248.44.531.6.845.562 1.096.585 2.517-.213 4.092-.793 1.563-2.395 3.288-5.105 5.08L8 13.912l-.276-.182a22 22 0 0 1-2.685-2.062l-.539.54V14a.5.5 0 0 1-.146.354zm2.893-4.894A20.4 20.4 0 0 0 8 12.71c2.456-1.666 3.827-3.207 4.489-4.512.679-1.34.607-2.42.215-3.185-.817-1.595-3.087-2.054-4.346-.761L8 4.62l-.358-.368c-1.259-1.293-3.53-.834-4.346.761-.392.766-.464 1.845.215 3.185.323.636.815 1.33 1.519 2.065l1.866-1.867a.5.5 0 1 1 .708.708z" />
|
||||
</svg>
|
||||
<span class="fs-4 mx-2 text-white">Kira Jiroux</span>
|
||||
<span class="fs-4 mx-1 text-white">Kira Jiroux</span>
|
||||
</div>
|
||||
<ul class="navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<NavLink class="nav-link d-flex align-items-center" href="" Match="NavLinkMatch.All">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#FFFFFF" class="bi bi-house-heart-fill" viewBox="0 0 16 16">
|
||||
<NavLink class="nav-link" href="" Match="NavLinkMatch.All">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-heart-fill mb-1" viewBox="0 0 16 16">
|
||||
<path d="M7.293 1.5a1 1 0 0 1 1.414 0L11 3.793V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v3.293l2.354 2.353a.5.5 0 0 1-.708.707L8 2.207 1.354 8.853a.5.5 0 1 1-.708-.707z" />
|
||||
<path d="m14 9.293-6-6-6 6V13.5A1.5 1.5 0 0 0 3.5 15h9a1.5 1.5 0 0 0 1.5-1.5zm-6-.811c1.664-1.673 5.825 1.254 0 5.018-5.825-3.764-1.664-6.691 0-5.018" />
|
||||
</svg> <span class="mx-2 mt-0 text-white">Home</span>
|
||||
</svg> <span class="mx-2 mt-0">Home</span>
|
||||
</NavLink>
|
||||
</li>
|
||||
<li>
|
||||
<NavLink class="nav-link d-flex align-items-center" href="temperature-blanket">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#FFFFFF" class="bi bi-border-outer" viewBox="0 0 16 16">
|
||||
<NavLink class="nav-link" href="temperature-blanket">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-border-outer" viewBox="0 0 16 16">
|
||||
<path d="M7.5 1.906v.938h1v-.938zm0 1.875v.938h1V3.78h-1zm0 1.875v.938h1v-.938zM1.906 8.5h.938v-1h-.938zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938zm2.813 0v-.031H8.5V7.53h-.031V7.5H7.53v.031H7.5v.938h.031V8.5zm.937 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zM7.5 9.406v.938h1v-.938zm0 1.875v.938h1v-.938zm0 1.875v.938h1v-.938z" />
|
||||
<path d="M0 0v16h16V0zm1 1h14v14H1z" />
|
||||
</svg><span class="mx-2 mt-0 text-white">Crochet</span>
|
||||
</svg><span class="mx-2 mt-0">Crochet</span>
|
||||
</NavLink>
|
||||
</li>
|
||||
<li>
|
||||
<NavLink class="nav-link d-flex align-items-center" href="pokemonsleep">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#FFFFFF" class="bi bi-p-circle-fill" viewBox="0 0 16 16">
|
||||
<NavLink class="nav-link" href="pokemonsleep">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-p-circle-fill" viewBox="0 0 16 16">
|
||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.5 4.002V12h1.283V9.164h1.668C10.033 9.164 11 8.08 11 6.586c0-1.482-.955-2.584-2.538-2.584zm2.77 4.072c.893 0 1.419-.545 1.419-1.488s-.526-1.482-1.42-1.482H6.778v2.97z" />
|
||||
</svg> <span class="mx-2 mt-0 text-white">Pokémon Sleep</span>
|
||||
</svg> <span class="mx-2 mt-0">Pokémon Sleep</span>
|
||||
</NavLink>
|
||||
</li>
|
||||
|
||||
|
|
|
|||
|
|
@ -4,9 +4,11 @@
|
|||
@rendermode InteractiveServer
|
||||
|
||||
<PageTitle>Crochet Tools</PageTitle>
|
||||
<head>
|
||||
<link rel="stylesheet" href="bootstrap/bootstrap-cosmo.css" /> <!-- app.css -->
|
||||
</head>
|
||||
|
||||
|
||||
@* <h3 class="text-xl font-bold mb-4">Crochet</h3> *@
|
||||
<h3 class="text-xl font-bold mb-4">Crochet</h3>
|
||||
<div class="">
|
||||
<TemperatureBlanketVisualizer TemperatureDays="temperatureDays" />
|
||||
|
||||
|
|
|
|||
|
|
@ -1,841 +1,14 @@
|
|||
@page "/"
|
||||
@inject IHttpClientFactory ClientFactory
|
||||
|
||||
@attribute [StreamRendering]
|
||||
@rendermode InteractiveServer
|
||||
|
||||
<PageTitle>Home</PageTitle>
|
||||
|
||||
<!-- View 1: Desktop View -->
|
||||
<div class="container d-none d-lg-none d-xl-block mt-5 pt-3 pb-5 ps-5 pe-5 ">
|
||||
<h1 class="fst-italic fw-light fs-1 font-monospace">Hello, World!</h1>
|
||||
<!-- <PokemonBackground />-->
|
||||
<h1 class="test">Hello, world!</h1>
|
||||
<p>Ensuring that git is connected properly.</p>
|
||||
|
||||
<!-- Start of Grid -->
|
||||
<div class="row mb-3">
|
||||
<!-- Profile Image -->
|
||||
<div class="col-auto ">
|
||||
<img class="card-img rounded-3" style="width: 18.1em;" src="https://i.pinimg.com/736x/54/63/ed/5463ed9471053712a76c0dd0b301a7ea.jpg" />
|
||||
</div>
|
||||
<div class="col ">
|
||||
<!-- About Me-->
|
||||
<div class="d-inline-flex row card rounded fs-5 mb-3 p-2 ps-3 pe-3 border-0">
|
||||
I am a full-stack web developer with additional
|
||||
experience in Data Analysis and Visualization, as well as
|
||||
Simulation/VR development, and AI/ML programming.
|
||||
I am a friendly team worker with strong analytical, math
|
||||
and problem-solving skills that adapts well to an
|
||||
Agile/SCRUM environment and development lifecycle.
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<!-- School Experience -->
|
||||
<div class="col-auto ps-0">
|
||||
<div class="card rounded p-2 ps-3 pe-3 border border-1 border-primary">
|
||||
<p class="fs-6 fw-lighter card-subtitle p-0">September 2018 – March 2022</p>
|
||||
<p class="fs-5 card-title m-0">B.S. in Computer Science</p>
|
||||
<p class="fs-6 fw-lighter card-subtitle">Oregon State University</p>
|
||||
<p class="fs-6 fw-lighter card-subtitle">Graduated Cum Laude</p>
|
||||
<p class="fs-6 fw-lighter card-subtitle">Dean’s List: Fall 2020, Fall 2021</p>
|
||||
<p class="fs-6 fw-lighter card-subtitle">Final GPA: 3.33</p>
|
||||
|
||||
@**@
|
||||
<!-- Courses -->
|
||||
<label class="text-decoration-underline fw-semibold">Courses</label>
|
||||
<div class="overflow-auto" style="height: auto; max-height: 12rem">
|
||||
<ul class="list-group list-group-flush">
|
||||
@if (courses == null)
|
||||
{
|
||||
<div>Loading...</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<ul class="list-group list-group-flush">
|
||||
@foreach (var course in courses)
|
||||
{
|
||||
<li class="list-group-item">@course</li>
|
||||
}
|
||||
</ul>
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
@* <div class="ps-3 pe-3">
|
||||
<ul class="list-group list-group-flush">
|
||||
<li class="">Organized</li>
|
||||
<li class="">Responsible</li>
|
||||
<li class="">Meticulous</li>
|
||||
<li class="">Analytical</li>
|
||||
<li class="">Self-motivating</li>
|
||||
</ul>
|
||||
</div> *@
|
||||
</div>
|
||||
|
||||
<!--Skills \ Languages-->
|
||||
<div class="col p-0 ">
|
||||
<div class="bg-white rounded p-2 border border-1 border-primary" >
|
||||
<div class="card-header">
|
||||
<label class="text-decoration-underline fw-semibold">Skills \ Languages</label>
|
||||
|
||||
</div>
|
||||
<div class="overflow-auto" style="max-height: 20.1rem">
|
||||
@if (skills == null)
|
||||
{
|
||||
<div>Loading...</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<ul class="list-group list-group-flush">
|
||||
@foreach (var skill in skills)
|
||||
{
|
||||
<li class="list-group-item">@skill</li>
|
||||
}
|
||||
</ul>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Tools -->
|
||||
<div class="col pe-0">
|
||||
<div class="bg-white rounded p-2 border border-1 border-primary">
|
||||
<div class="card-header">
|
||||
|
||||
<label class="text-decoration-underline fw-semibold">Tools</label>
|
||||
|
||||
</div>
|
||||
<div class="overflow-auto" style="max-height: 20.1rem">
|
||||
@if (tools == null)
|
||||
{
|
||||
<div>Loading...</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<ul class="list-group list-group-flush">
|
||||
@foreach (var tool in tools)
|
||||
{
|
||||
<li class="list-group-item">@tool</li>
|
||||
}
|
||||
</ul>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Experiences / Projects -->
|
||||
<div class="row ">
|
||||
<div class="col card border-0 rounded rounded-4 pt-3 pb-3">
|
||||
<!-- Button Bay-->
|
||||
<div class="row mt-2">
|
||||
<div class="d-grid gap-2 d-md-flex justify-content-around">
|
||||
<button class="btn rounded-4 w-25 @(isExperience ? "btn-primary" : "btn-outline-primary")" type="button" @onclick="() => ToggleExperience()">Experience</button>
|
||||
<button class="btn rounded-4 w-25 @(isProjects ? "btn-primary" : "btn-outline-primary")" type="button" @onclick="() => ToggleProjects()">Projects</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
@if (isExperience)
|
||||
{
|
||||
<div class="row justify-content-md-center fst-italic fs-1 mb-2">
|
||||
Experience
|
||||
</div>
|
||||
@if (experiences == null)
|
||||
{
|
||||
<div>Loading...</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
@foreach (var experience in experiences)
|
||||
{
|
||||
<div class="row justify-content-md-center mb-3">
|
||||
<div class="card w-75 p-3 ps-4 pe-4 rounded">
|
||||
<p class="fs-6 fw-lighter card-subtitle p-0"> @experience.StartYear – @experience.EndYear</p>
|
||||
<p class="fs-5 card-title m-0">@experience.Title - @experience.Company</p>
|
||||
<p class="fs-6 fw-lighter card-text">@experience.Details</p>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else if (isProjects)
|
||||
{
|
||||
<div class="row justify-content-md-center fst-italic fs-1 mb-2">Projects</div>
|
||||
|
||||
@if (projects == null)
|
||||
{
|
||||
<p>Loading projects...</p>
|
||||
}
|
||||
else
|
||||
{
|
||||
@foreach (var project in projects)
|
||||
{
|
||||
<div class="row justify-content-md-center mb-3">
|
||||
<div class="card w-75 p-3 ps-4 pe-4 rounded">
|
||||
|
||||
<p class="fs-5 card-title m-0">@project.Title</p>
|
||||
|
||||
@foreach (var desc in project.Descriptions)
|
||||
{
|
||||
<p class="fs-6 fw-lighter card-text">@((MarkupString)FormatDescription(desc))</p>
|
||||
}
|
||||
Welcome to your new app.
|
||||
|
||||
@if (project.Links?.Any() == true)
|
||||
{
|
||||
<div class="mt-2 align-self-end">
|
||||
@foreach (var link in project.Links)
|
||||
{
|
||||
@switch (link.Type)
|
||||
{
|
||||
case "external":
|
||||
<a class="me-2" href="@link.Url">@link.Label</a>
|
||||
break;
|
||||
case "internal":
|
||||
<a class="mt-2 " href=""@link.Url">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-file-code" viewBox="0 0 16 16">
|
||||
<path d="M6.646 5.646a.5.5 0 1 1 .708.708L5.707 8l1.647 1.646a.5.5 0 0 1-.708.708l-2-2a.5.5 0 0 1 0-.708zm2.708 0a.5.5 0 1 0-.708.708L10.293 8 8.646 9.646a.5.5 0 0 0 .708.708l2-2a.5.5 0 0 0 0-.708z"/>
|
||||
<path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/>
|
||||
</svg>
|
||||
</a>
|
||||
break;
|
||||
case "github":
|
||||
<a class="mt-2" href="@link.Url">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-github" viewBox="0 0 16 16">
|
||||
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8"/>
|
||||
</svg>
|
||||
</a>
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- View 2: Smaller Desktop View -->
|
||||
<div class="container d-none d-md-none d-xl-none d-lg-block mt-4 pt-3 pb-4 ">
|
||||
<div class="row">
|
||||
<h1 class="fst-italic fw-light fs-1 font-monospace ps-1">Hello, World!</h1>
|
||||
<div class="w-75 h-100 bg-white">
|
||||
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<div class="col-auto ps-0">
|
||||
<img class="card-img rounded-3" style="width: 16.9em;" src="https://i.pinimg.com/736x/54/63/ed/5463ed9471053712a76c0dd0b301a7ea.jpg" />
|
||||
</div>
|
||||
<div class="col ">
|
||||
<!-- About Me-->
|
||||
<div class="row card rounded fs-6 mb-3 p-2 ps-3 pe-3 border-0">
|
||||
I am a full-stack web developer with additional
|
||||
experience in Data Analysis and Visualization, as well as
|
||||
Simulation/VR development, and AI/ML programming.
|
||||
I am a friendly team worker with strong analytical, math
|
||||
and problem-solving skills that adapts well to an
|
||||
Agile/SCRUM environment and development lifecycle.
|
||||
</div>
|
||||
|
||||
<div class="row mt-3">
|
||||
<!-- School Experience -->
|
||||
<div class="col me-1">
|
||||
<div class="row bg-white rounded p-2 ps-3 pe-3 border border-1 border-primary">
|
||||
<p class="fs-6 fw-lighter card-subtitle p-0">September 2018 – March 2022</p>
|
||||
<p class="fs-5 card-title m-0 p-0">B.S. in Computer Science</p>
|
||||
<p class="fs-6 fw-lighter card-subtitle p-0">Oregon State University</p>
|
||||
<p class="fs-6 fw-lighter card-subtitle p-0">Graduated Cum Laude</p>
|
||||
<p class="fs-6 fw-lighter card-subtitle p-0">Dean’s List: Fall 2020, Fall 2021</p>
|
||||
<p class="fs-6 fw-lighter card-subtitle p-0">Final GPA: 3.33</p>
|
||||
|
||||
<!-- Courses -->
|
||||
<label class="text-decoration-underline p-0">Courses</label>
|
||||
<div class="overflow-auto p-0" style="max-height: 10rem">
|
||||
<ul class="list-group list-group-flush">
|
||||
@if (courses == null)
|
||||
{
|
||||
<div>Loading...</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<ul class="list-group list-group-flush">
|
||||
@foreach (var course in courses)
|
||||
{
|
||||
<li class="list-group-item">@course</li>
|
||||
}
|
||||
</ul>
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col ms-1">
|
||||
<!--Skills \ Languages-->
|
||||
<div class="row bg-white rounded p-2 border border-1 border-primary mb-2">
|
||||
<div class="card-header">
|
||||
<label class="text-decoration-underline">Skills \ Languages</label>
|
||||
|
||||
</div>
|
||||
<div class="overflow-auto p-0" style="max-height: 8rem">
|
||||
@if (skills == null)
|
||||
{
|
||||
<div>Loading...</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<ul class="list-group list-group-flush">
|
||||
@foreach (var skill in skills)
|
||||
{
|
||||
<li class="list-group-item">@skill</li>
|
||||
}
|
||||
</ul>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<!-- Tools -->
|
||||
<div class="row bg-white rounded p-2 border border-1 border-primary">
|
||||
<div class="card-header">
|
||||
|
||||
<label class="text-decoration-underline">Tools</label>
|
||||
|
||||
</div>
|
||||
<div class="overflow-auto p-0" style="max-height: 8rem">
|
||||
@if (tools == null)
|
||||
{
|
||||
<div>Loading...</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<ul class="list-group list-group-flush">
|
||||
@foreach (var tool in tools)
|
||||
{
|
||||
<li class="list-group-item">@tool</li>
|
||||
}
|
||||
</ul>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Experience / Projects -->
|
||||
<div>
|
||||
<div class="row mt-3">
|
||||
|
||||
<div class="col card border-0 rounded rounded-4 pt-3 pb-3">
|
||||
<!-- Button Bay-->
|
||||
<div class="row mt-2">
|
||||
<div class="d-grid gap-2 d-md-flex justify-content-around">
|
||||
<button class="btn rounded-4 w-25 @(isExperience ? "btn-primary" : "btn-outline-primary")" type="button" @onclick="() => ToggleExperience()">Experience</button>
|
||||
<button class="btn rounded-4 w-25 @(isProjects ? "btn-primary" : "btn-outline-primary")" type="button" @onclick="() => ToggleProjects()">Projects</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
@if (isExperience)
|
||||
{
|
||||
<div class="row justify-content-md-center fst-italic fs-1 mb-2">
|
||||
Experience
|
||||
</div>
|
||||
@if (experiences == null)
|
||||
{
|
||||
<div>Loading...</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
@foreach (var experience in experiences)
|
||||
{
|
||||
<div class="row justify-content-md-center mb-3">
|
||||
<div class="card w-75 p-3 ps-4 pe-4 rounded">
|
||||
<p class="fs-6 fw-lighter card-subtitle p-0"> @experience.StartYear – @experience.EndYear</p>
|
||||
<p class="fs-5 card-title m-0">@experience.Title - @experience.Company</p>
|
||||
<p class="fs-6 fw-lighter card-text">@experience.Details</p>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else if (isProjects)
|
||||
{
|
||||
<div class="row justify-content-md-center fst-italic fs-1 mb-2">Projects</div>
|
||||
|
||||
@if (projects == null)
|
||||
{
|
||||
<p>Loading projects...</p>
|
||||
}
|
||||
else
|
||||
{
|
||||
@foreach (var project in projects)
|
||||
{
|
||||
<div class="row justify-content-md-center mb-3">
|
||||
<div class="card w-75 p-3 ps-4 pe-4 rounded">
|
||||
|
||||
<p class="fs-5 card-title m-0">@project.Title</p>
|
||||
|
||||
@foreach (var desc in project.Descriptions)
|
||||
{
|
||||
<p class="fs-6 fw-lighter card-text">@((MarkupString)FormatDescription(desc))</p>
|
||||
}
|
||||
|
||||
@if (project.Links?.Any() == true)
|
||||
{
|
||||
<div class="mt-2 align-self-end">
|
||||
@foreach (var link in project.Links)
|
||||
{
|
||||
@switch (link.Type)
|
||||
{
|
||||
case "external":
|
||||
<a class="me-2" href="@link.Url">@link.Label</a>
|
||||
break;
|
||||
case "internal":
|
||||
<a class="mt-2 " href=""@link.Url">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-file-code" viewBox="0 0 16 16">
|
||||
<path d="M6.646 5.646a.5.5 0 1 1 .708.708L5.707 8l1.647 1.646a.5.5 0 0 1-.708.708l-2-2a.5.5 0 0 1 0-.708zm2.708 0a.5.5 0 1 0-.708.708L10.293 8 8.646 9.646a.5.5 0 0 0 .708.708l2-2a.5.5 0 0 0 0-.708z"/>
|
||||
<path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/>
|
||||
</svg>
|
||||
</a>
|
||||
break;
|
||||
case "github":
|
||||
<a class="mt-2" href="@link.Url">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-github" viewBox="0 0 16 16">
|
||||
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8"/>
|
||||
</svg>
|
||||
</a>
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- View 3: Tablet View -->
|
||||
<div class="container d-none d-md-block d-lg-none mt-4 pt-3 pb-4 ">
|
||||
<h1 class="fst-italic fw-light fs-1 font-monospace">Hello, World!</h1>
|
||||
|
||||
<div class="row">
|
||||
<div class="card rounded p-3 border-0">
|
||||
<div class="clearfix">
|
||||
<img src="https://i.pinimg.com/736x/54/63/ed/5463ed9471053712a76c0dd0b301a7ea.jpg"
|
||||
class="mobile-profile float-start me-3 mb-2"
|
||||
style="width: 10em;
|
||||
height: 10em;
|
||||
object-fit: cover;
|
||||
border-radius: 0.5rem;" />
|
||||
|
||||
<p class="fs-6 mb-0">
|
||||
I am a full-stack web developer with additional experience in Data Analysis and Visualization,
|
||||
as well as Simulation/ VR development, and AI/ ML programming. I am a friendly team worker with
|
||||
strong analytical, math and problem-solving skills that adapts well to an Agile/SCRUM environment
|
||||
and development lifecycle.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mt-3">
|
||||
<!-- School Experience -->
|
||||
<div class="col me-1">
|
||||
<div class="row bg-white rounded p-2 ps-3 pe-3 border border-1 border-primary">
|
||||
<p class="fs-6 fw-lighter card-subtitle p-0">September 2018 – March 2022</p>
|
||||
<p class="fs-5 card-title m-0 p-0">B.S. in Computer Science</p>
|
||||
<p class="fs-6 fw-lighter card-subtitle p-0">Oregon State University</p>
|
||||
<p class="fs-6 fw-lighter card-subtitle p-0">Graduated Cum Laude</p>
|
||||
<p class="fs-6 fw-lighter card-subtitle p-0">Dean’s List: Fall 2020, Fall 2021</p>
|
||||
<p class="fs-6 fw-lighter card-subtitle p-0">Final GPA: 3.33</p>
|
||||
|
||||
<!-- Courses -->
|
||||
<label class="text-decoration-underline p-0">Courses</label>
|
||||
<div class="overflow-auto p-0" style="max-height: 9.8rem">
|
||||
<ul class="list-group list-group-flush">
|
||||
@if (courses == null)
|
||||
{
|
||||
<div>Loading...</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<ul class="list-group list-group-flush">
|
||||
@foreach (var course in courses)
|
||||
{
|
||||
<li class="list-group-item">@course</li>
|
||||
}
|
||||
</ul>
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
</div
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col ms-1">
|
||||
<!--Skills \ Languages-->
|
||||
<div class="row bg-white rounded p-2 border border-1 border-primary mb-2">
|
||||
<div class="card-header">
|
||||
<label class="text-decoration-underline">Skills \ Languages</label>
|
||||
|
||||
</div>
|
||||
<div class="overflow-auto p-0" style="max-height: 8rem">
|
||||
@if (skills == null)
|
||||
{
|
||||
<div>Loading...</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<ul class="list-group list-group-flush">
|
||||
@foreach (var skill in skills)
|
||||
{
|
||||
<li class="list-group-item">@skill</li>
|
||||
}
|
||||
</ul>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<!-- Tools -->
|
||||
<div class="row bg-white rounded p-2 border border-1 border-primary">
|
||||
<div class="card-header">
|
||||
|
||||
<label class="text-decoration-underline">Tools</label>
|
||||
|
||||
</div>
|
||||
<div class="overflow-auto p-0" style="max-height: 8rem">
|
||||
@if (tools == null)
|
||||
{
|
||||
<div>Loading...</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<ul class="list-group list-group-flush">
|
||||
@foreach (var tool in tools)
|
||||
{
|
||||
<li class="list-group-item">@tool</li>
|
||||
}
|
||||
</ul>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class="row mt-3">
|
||||
|
||||
<div class="col card border-0 rounded rounded-4 pt-3 pb-3">
|
||||
<!-- Button Bay-->
|
||||
<div class="row mt-2">
|
||||
<div class="d-grid gap-2 d-md-flex justify-content-around">
|
||||
<button class="btn rounded-4 w-25 @(isExperience ? "btn-primary" : "btn-outline-primary")" type="button" @onclick="() => ToggleExperience()">Experience</button>
|
||||
<button class="btn rounded-4 w-25 @(isProjects ? "btn-primary" : "btn-outline-primary")" type="button" @onclick="() => ToggleProjects()">Projects</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
@if (isExperience)
|
||||
{
|
||||
<div class="row justify-content-md-center fst-italic fs-1 mb-2">
|
||||
Experience
|
||||
</div>
|
||||
@if (experiences == null)
|
||||
{
|
||||
<div>Loading...</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
@foreach (var experience in experiences)
|
||||
{
|
||||
<div class="row justify-content-md-center mb-3">
|
||||
<div class="card w-75 p-3 ps-4 pe-4 rounded">
|
||||
<p class="fs-6 fw-lighter card-subtitle p-0"> @experience.StartYear – @experience.EndYear</p>
|
||||
<p class="fs-5 card-title m-0">@experience.Title - @experience.Company</p>
|
||||
<p class="fs-6 fw-lighter card-text">@experience.Details</p>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else if (isProjects)
|
||||
{
|
||||
<div class="row justify-content-md-center fst-italic fs-1 mb-2">Projects</div>
|
||||
|
||||
@if (projects == null)
|
||||
{
|
||||
<p>Loading projects...</p>
|
||||
}
|
||||
else
|
||||
{
|
||||
@foreach (var project in projects)
|
||||
{
|
||||
<div class="row justify-content-md-center mb-3">
|
||||
<div class="card w-75 p-3 ps-4 pe-4 rounded">
|
||||
|
||||
<p class="fs-5 card-title m-0">@project.Title</p>
|
||||
|
||||
@foreach (var desc in project.Descriptions)
|
||||
{
|
||||
<p class="fs-6 fw-lighter card-text">@((MarkupString)FormatDescription(desc))</p>
|
||||
}
|
||||
|
||||
@if (project.Links?.Any() == true)
|
||||
{
|
||||
<div class="mt-2 align-self-end">
|
||||
@foreach (var link in project.Links)
|
||||
{
|
||||
@switch (link.Type)
|
||||
{
|
||||
case "external":
|
||||
<a class="me-2" href="@link.Url">@link.Label</a>
|
||||
break;
|
||||
case "internal":
|
||||
<a class="mt-2 " href=""@link.Url">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-file-code" viewBox="0 0 16 16">
|
||||
<path d="M6.646 5.646a.5.5 0 1 1 .708.708L5.707 8l1.647 1.646a.5.5 0 0 1-.708.708l-2-2a.5.5 0 0 1 0-.708zm2.708 0a.5.5 0 1 0-.708.708L10.293 8 8.646 9.646a.5.5 0 0 0 .708.708l2-2a.5.5 0 0 0 0-.708z"/>
|
||||
<path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/>
|
||||
</svg>
|
||||
</a>
|
||||
break;
|
||||
case "github":
|
||||
<a class="mt-2" href="@link.Url">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-github" viewBox="0 0 16 16">
|
||||
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8"/>
|
||||
</svg>
|
||||
</a>
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- View 4: Mobile View -->
|
||||
<div class="container card rounded border-0 d-block d-md-none mx-auto mt-4 mb-3">
|
||||
<h1 class="fst-italic fw-light fs-1 font-monospace pt-2">Hello, World!</h1>
|
||||
|
||||
<div class="row">
|
||||
<div class="card border-0">
|
||||
<div class="clearfix">
|
||||
<img src="https://i.pinimg.com/736x/54/63/ed/5463ed9471053712a76c0dd0b301a7ea.jpg"
|
||||
class="mobile-profile float-start me-3 mb-2" />
|
||||
|
||||
<p class="fs-6 mb-0">
|
||||
I am a full-stack web developer with additional experience in Data Analysis and Visualization,
|
||||
as well as Simulation/ VR development, and AI/ ML programming. I am a friendly team worker with
|
||||
strong analytical, math and problem-solving skills that adapts well to an Agile/SCRUM environment
|
||||
and development lifecycle.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@* <div class="row mb-3 bg-info rounded rounded-5 pt-1 pb-1">
|
||||
<p class="fw-lighter fs-6 text-nowrap p-0 m-auto text-center text-white">
|
||||
Organized • Responsible • Meticulous • Analytical • Self-motivating
|
||||
</p>
|
||||
</div> *@
|
||||
|
||||
<hr class="text-primary" />
|
||||
|
||||
<!-- Education -->
|
||||
<div class="row mb-3 ms-2 me-2 ">
|
||||
<div class="card p-2 ps-3 pe-3 border border-1 border-primary rounded rounded-1">
|
||||
<p class="fs-6 fw-lighter card-subtitle m-0">September 2018 – March 2022</p>
|
||||
<p class="fs-4 card-title m-0">B.S. in Computer Science</p>
|
||||
<p class="fs-6 fw-lighter card-subtitle">Oregon State University</p>
|
||||
<p class="fs-6 fw-lighter card-subtitle">Graduated Cum Laude</p>
|
||||
<p class="fs-6 fw-lighter card-subtitle">Dean’s List: Fall 2020, Fall 2021</p>
|
||||
<p class="fs-6 fw-lighter card-subtitle">Final GPA: 3.33</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Skills \ Languages -->
|
||||
<div class="row mb-3 ms-2 me-2">
|
||||
<div class="bg-primary-subtle rounded p-2 border-0">
|
||||
<div class="card-header text-bg-primary text-light fs-3">
|
||||
Skills \ Languages
|
||||
</div>
|
||||
<div class="overflow-auto" style="max-height: 15rem">
|
||||
@if (skills == null)
|
||||
{
|
||||
<div>Loading...</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<ul class="list-group list-group-flush">
|
||||
@foreach (var skill in skills)
|
||||
{
|
||||
<li class="list-group-item">@skill</li>
|
||||
}
|
||||
</ul>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Technology -->
|
||||
<div class="row mb-3 ms-2 me-2">
|
||||
<div class="bg-primary-subtle rounded p-2 border-0">
|
||||
<div class="card-header text-bg-primary text-light fs-3">
|
||||
Technology
|
||||
</div>
|
||||
<div class="overflow-auto" style="max-height: 15rem">
|
||||
@if (tools == null)
|
||||
{
|
||||
<div>Loading...</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<ul class="list-group list-group-flush">
|
||||
@foreach (var tool in tools)
|
||||
{
|
||||
<li class="list-group-item">@tool</li>
|
||||
}
|
||||
</ul>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Experience \ Projects -->
|
||||
<div class="row mb-3 ms-2 me-2">
|
||||
<div class="col card border-0 rounded rounded-4 pt-3 ">
|
||||
<!-- Button Bay-->
|
||||
<div class="row mt-2">
|
||||
<div class="d-flex justify-content-evenly">
|
||||
<button class="btn rounded-4 flex-fill @(isExperience ? "btn-primary" : "btn-outline-primary")" type="button" @onclick="() => ToggleExperience()">Experience</button>
|
||||
<button class="btn rounded-4 flex-fill @(isProjects ? "btn-primary" : "btn-outline-primary")" type="button" @onclick="() => ToggleProjects()">Projects</button>
|
||||
</div>
|
||||
</div>
|
||||
@if (isExperience)
|
||||
{
|
||||
<div class="row justify-content-center fst-italic fs-1 mt-2">
|
||||
Experience
|
||||
</div>
|
||||
@if (experiences == null)
|
||||
{
|
||||
<div>Loading...</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="overflow-auto" style="max-height: 16rem">
|
||||
|
||||
<ul class="list-group list-group-flush">
|
||||
@foreach (var experience in experiences)
|
||||
{
|
||||
<div class=" justify-content-md-center">
|
||||
<div class="card p-3 ps-4 pe-4 rounded">
|
||||
<p class="fs-6 fw-lighter card-subtitle p-0"> @experience.StartYear – @experience.EndYear</p>
|
||||
<p class="fs-5 card-title m-0">@experience.Title - @experience.Company</p>
|
||||
<p class="fs-6 fw-lighter card-text">@experience.Details</p>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
}
|
||||
|
||||
}
|
||||
else if (isProjects)
|
||||
{
|
||||
<div class="row justify-content-center fst-italic fs-1 mt-2">Projects</div>
|
||||
|
||||
<div class="overflow-auto" style="max-height: 16rem">
|
||||
|
||||
<ul class="list-group list-group-flush">
|
||||
@foreach (var project in projects)
|
||||
{
|
||||
<div class="justify-content-center">
|
||||
<div class="card p-3 ps-4 pe-4 rounded">
|
||||
|
||||
<p class="fs-5 card-title m-0">@project.Title</p>
|
||||
|
||||
@foreach (var desc in project.Descriptions)
|
||||
{
|
||||
<p class="fs-6 fw-lighter card-text">@((MarkupString)FormatDescription(desc))</p>
|
||||
}
|
||||
|
||||
@if (project.Links?.Any() == true)
|
||||
{
|
||||
<div class="mt-2 align-self-end">
|
||||
@foreach (var link in project.Links)
|
||||
{
|
||||
@switch (link.Type)
|
||||
{
|
||||
case "external":
|
||||
<a class="me-2" href="@link.Url">@link.Label</a>
|
||||
break;
|
||||
case "internal":
|
||||
<a class="mt-2 " href=""@link.Url">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-file-code" viewBox="0 0 16 16">
|
||||
<path d="M6.646 5.646a.5.5 0 1 1 .708.708L5.707 8l1.647 1.646a.5.5 0 0 1-.708.708l-2-2a.5.5 0 0 1 0-.708zm2.708 0a.5.5 0 1 0-.708.708L10.293 8 8.646 9.646a.5.5 0 0 0 .708.708l2-2a.5.5 0 0 0 0-.708z"/>
|
||||
<path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/>
|
||||
</svg>
|
||||
</a>
|
||||
break;
|
||||
case "github":
|
||||
<a class="mt-2" href="@link.Url">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-github" viewBox="0 0 16 16">
|
||||
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8"/>
|
||||
</svg>
|
||||
</a>
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,53 +0,0 @@
|
|||
using Portfolio.Domain.Features.Portfolio;
|
||||
using static System.Net.WebRequestMethods;
|
||||
|
||||
namespace Portfolio.WebUI.Server.Components.Pages
|
||||
{
|
||||
partial class Home
|
||||
{
|
||||
private List<string> skills;
|
||||
private List<string> tools;
|
||||
private List<string> courses;
|
||||
private List<WorkExperience> experiences;
|
||||
private List<ProjectEntry> projects;
|
||||
|
||||
private bool isExperience = true;
|
||||
private bool isProjects = false;
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
var http = ClientFactory.CreateClient("LocalClient");
|
||||
skills = await http.GetFromJsonAsync<List<string>>("data/skills.json");
|
||||
tools = await http.GetFromJsonAsync<List<string>>("data/tools.json");
|
||||
courses = await http.GetFromJsonAsync<List<string>>("data/courses.json");
|
||||
experiences = await http.GetFromJsonAsync<List<WorkExperience>>("data/workexperiences.json");
|
||||
projects = await http.GetFromJsonAsync<List<ProjectEntry>>("data/projects.json");
|
||||
}
|
||||
|
||||
private void ToggleExperience()
|
||||
{
|
||||
if (!isExperience)
|
||||
{
|
||||
isExperience = true;
|
||||
isProjects = false;
|
||||
StateHasChanged();
|
||||
}
|
||||
}
|
||||
|
||||
private void ToggleProjects()
|
||||
{
|
||||
if (!isProjects)
|
||||
{
|
||||
isProjects = true;
|
||||
isExperience = false;
|
||||
StateHasChanged();
|
||||
}
|
||||
}
|
||||
|
||||
private string FormatDescription(string desc)
|
||||
{
|
||||
// Simple replacement for [text](url) markdown-style links
|
||||
return System.Text.RegularExpressions.Regex.Replace(desc, @"\[(.+?)\]\((.+?)\)", "<a href=\"$2\">$1</a>");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
.mobile-profile {
|
||||
width: 10em;
|
||||
height: 10em;
|
||||
object-fit: cover;
|
||||
border-radius: 0.5rem;
|
||||
}
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
@page "/pokemonsleep/admincontrol"
|
||||
|
||||
|
||||
|
||||
<div class="w-100">
|
||||
<!-- <PokemonBackground PokemonImages="pokemonImageUrls" ShinyPokemonImages="pokemonShinyImageUrls" /> -->
|
||||
|
||||
<PokemonHeader />
|
||||
|
||||
|
||||
<hr class="mt-5" />
|
||||
|
||||
<!-- Add Pokemon (Wrap in Auth) -->
|
||||
<button class="btn btn-warning mx-1" style="border-radius: 50px 15px; max-width: 60px;">
|
||||
<NavLink href="/pokemonsleep/addmincontrol/add-new-pokemon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#FFF" class="bi bi-plus-circle-fill mb-1" viewBox="0 0 16 16">
|
||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8.5 4.5a.5.5 0 0 0-1 0v3h-3a.5.5 0 0 0 0 1h3v3a.5.5 0 0 0 1 0v-3h3a.5.5 0 0 0 0-1h-3z" />
|
||||
</svg>
|
||||
</NavLink>
|
||||
</button>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
@ -17,20 +17,22 @@
|
|||
}
|
||||
else
|
||||
{
|
||||
<div class="w-50 mt-5 m-auto create-container bg-info border border-5 border-info-subtle">
|
||||
<div class="w-50 mt-5 m-auto create-container bg-info">
|
||||
|
||||
<div class="card-header rounded-top-3 bg-info py-3">
|
||||
<div class="row text-center">
|
||||
<h2 class="text-white text-decoration-underline">Add New Pokémon</h2>
|
||||
<div class="card-header bg-secondary bg-gradient ml-0 py-3">
|
||||
<div class="row">
|
||||
<div class="col-12 text-center">
|
||||
<h2 class="text-info">Add New Pokémon</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="p-3" >
|
||||
<EditForm class=" col" Model="NewPokemon" OnValidSubmit="HandleSubmit">
|
||||
<div class="container m-lg-1" >
|
||||
<EditForm class=" col mb-3" Model="NewPokemon" OnValidSubmit="HandleSubmit">
|
||||
<DataAnnotationsValidator />
|
||||
|
||||
<!-- Pokemon Number and Name -->
|
||||
<!-- Section 1 -->
|
||||
<div class="row mt-3">
|
||||
<div class="col-sm-3 input-group mb-3 ">
|
||||
<!-- Pokemon #-->
|
||||
|
|
@ -42,9 +44,9 @@ else
|
|||
</div>
|
||||
|
||||
<!-- Pokemon Type, Sleep Type, and Speciality -->
|
||||
<div class="row mb-3">
|
||||
<div class="row">
|
||||
<!-- Pokemon Type -->
|
||||
<div class="col m-auto">
|
||||
<div class="col mb-3 m-auto">
|
||||
<label for="PokemonType" class="form-label">Pokemon Type</label>
|
||||
<InputSelect id="PokemonType" @bind-Value="NewPokemon.PokemonType" class="form-select">
|
||||
<option dsabled value="">Select Type</option>
|
||||
|
|
@ -69,7 +71,7 @@ else
|
|||
</InputSelect>
|
||||
</div>
|
||||
<!-- Sleep Type -->
|
||||
<div class="col m-auto">
|
||||
<div class="col mb-3 m-auto">
|
||||
<label for="SleepType" class="form-label">Sleep Type</label>
|
||||
<InputSelect id="SleepType" @bind-Value="NewPokemon.SleepType" class="form-select">
|
||||
<option value="Dozing">Dozing</option>
|
||||
|
|
@ -78,7 +80,7 @@ else
|
|||
</InputSelect>
|
||||
</div>
|
||||
<!-- Speciality-->
|
||||
<div class="col m-auto">
|
||||
<div class="col mb-3 m-auto">
|
||||
<label for="Speciality" class="form-label">Specialty</label>
|
||||
<InputSelect id="Speciality" @bind-Value="NewPokemon.Speciality" class="form-select">
|
||||
<option value="Berries">Berries</option>
|
||||
|
|
@ -89,23 +91,22 @@ else
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<!-- If New Pokemon is Variant -->
|
||||
<div class="row mb-3">
|
||||
<div class="input-group align-items-center">
|
||||
<!-- Section 2 -->
|
||||
<div class="row">
|
||||
<div class="input-group mb-3">
|
||||
<!-- Variation Check -->
|
||||
<div class="d-flex">
|
||||
<InputCheckbox id="IsVariation" @bind-Value="NewPokemon.IsVariation" @onclick="@Toggle" class="form-check-input checkbox-styling p-3 rounded" />
|
||||
<span for="IsVariation" class="input-group-text mx-2">Variation?</span>
|
||||
<div class=" d-inline-flex">
|
||||
<InputCheckbox id="IsVariation" @bind-Value="NewPokemon.IsVariation" @onclick="@Toggle" class="form-check-input checkbox-styling p-3 mt-1" />
|
||||
<span for="IsVariation" class="input-group-text m-1">Variation?</span>
|
||||
</div>
|
||||
|
||||
<!-- Variation Region Input -->
|
||||
<div class="flex-fill">
|
||||
<div class="w-75 mx-2 mt-1">
|
||||
|
||||
<InputText placeholder="What Variant? (Alolan, Paldean)" hidden="@HideLabel" id="VariationName" @bind-Value="NewPokemon.VariationName" class="form-control" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- New Image URL Field -->
|
||||
<div class="row mb-3 m-auto">
|
||||
<label for="ImageUrl" class="form-label">Base Image URL</label>
|
||||
|
|
@ -124,9 +125,9 @@ else
|
|||
</div>
|
||||
|
||||
<!-- Form Buttons -->
|
||||
<div class="d-flex mt-5 justify-content-between">
|
||||
<button type="button" class="btn btn-danger rounded rouneded-4 mb-3 " @onclick="Cancel">Cancel</button>
|
||||
<button type="submit" class="btn btn-success rounded rouneded-4 mb-3 ">Add Pokemon</button>
|
||||
<div class="d-flex justify-content-between">
|
||||
<button type="button" class="btn btn-secondary mb-3" @onclick="Cancel">Cancel</button>
|
||||
<button type="submit" class="btn btn-primary mb-3">Add Pokemon</button>
|
||||
</div>
|
||||
</EditForm>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -4,3 +4,6 @@
|
|||
border-radius: 15px;
|
||||
}
|
||||
|
||||
.checkbox-styling {
|
||||
border: 1px solid black;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,9 @@
|
|||
|
||||
<PageTitle>Edit Pokémon</PageTitle>
|
||||
<PokemonHeader />
|
||||
|
||||
<head>
|
||||
<link rel="stylesheet" href="bootstrap/bootstrap-lumen.css" /> <!-- app.css -->
|
||||
</head>
|
||||
|
||||
@if (pokemon == null)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -8,7 +8,9 @@
|
|||
@attribute [StreamRendering]
|
||||
@rendermode InteractiveServer
|
||||
|
||||
|
||||
<head>
|
||||
<link rel="stylesheet" href="bootstrap/bootstrap-lumen.css" /> <!-- app.css -->
|
||||
</head>
|
||||
|
||||
<PageTitle>Rate Pokémon</PageTitle>
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,9 @@
|
|||
|
||||
<PageTitle>Pokémon Sleep</PageTitle>
|
||||
|
||||
<head>
|
||||
<link rel="stylesheet" href="bootstrap/bootstrap-lumen.css" /> <!-- app.css -->
|
||||
</head>
|
||||
|
||||
<div class="w-100">
|
||||
<!-- <PokemonBackground PokemonImages="pokemonImageUrls" ShinyPokemonImages="pokemonShinyImageUrls" /> -->
|
||||
|
|
|
|||
|
|
@ -6,17 +6,24 @@
|
|||
|
||||
|
||||
<PageTitle>Pokémon Sleep</PageTitle>
|
||||
<head>
|
||||
<link rel="stylesheet" href="bootstrap/bootstrap-lumen.css" /> <!-- app.css -->
|
||||
</head>
|
||||
|
||||
<div class="">
|
||||
<div class="row w-100">
|
||||
<!-- <PokemonBackground PokemonImages="pokemonImageUrls" ShinyPokemonImages="pokemonShinyImageUrls" /> -->
|
||||
<PokemonHeader />
|
||||
<div class="row"><PokemonHeader /></div>
|
||||
|
||||
<!-- Card -->
|
||||
<div class="container card shadow-sm border-0 p-3 pb-4 mt-4 m-auto w-75 mb-5 bg-white">
|
||||
|
||||
<div class="row card shadow-sm border-0 p-3 pb-4 mt-4 m-auto w-75 mb-5 bg-white">
|
||||
<!-- Top Row-->
|
||||
<div class="row d-flex flex-row">
|
||||
<!-- Image side -->
|
||||
<div class="col-5 border-0 ">
|
||||
<div class="col w-50 border-0 ">
|
||||
<div>
|
||||
|
||||
</div>
|
||||
<img class="shadow-sm w-100 m-auto img-fluid" src="images/Pokemon_Sleep_ID.jpg" />
|
||||
</div>
|
||||
<!-- Text side -->
|
||||
|
|
@ -32,7 +39,6 @@
|
|||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Second Row -->
|
||||
<div class="row mt-3">
|
||||
<p class="fw-bold fst-italic fs-3">Okay, but why a whole section dedicated to Pokémon Sleep?</p>
|
||||
|
|
@ -40,28 +46,31 @@
|
|||
Well, as it is in any Pokémon game, Natures (and in this case Subskills) matter, amongst other things. This was designed as a helpful tool in assessing new Pokémon acquired from Sleep Research.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- Button Row-->
|
||||
<div class="d-flex justify-content-evenly mt-4 ">
|
||||
<button class="btn btn-info rounded-4 d-flex justify-content-center" style="width:12rem;">
|
||||
<NavLink class="nav-link d-flex align-items-center" href="/pokemon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-table" viewBox="0 0 16 16">
|
||||
<div class="row btn-group d-flex flex-row justify-content-around mt-4">
|
||||
<div class="w-auto">
|
||||
<button class="btn btn-info">
|
||||
<NavLink href="/pokemon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-table mb-1" viewBox="0 0 16 16">
|
||||
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 2h-4v3h4zm0 4h-4v3h4zm0 4h-4v3h3a1 1 0 0 0 1-1zm-5 3v-3H6v3zm-5 0v-3H1v2a1 1 0 0 0 1 1zm-4-4h4V8H1zm0-4h4V4H1zm5-3v3h4V4zm4 4H6v3h4z" />
|
||||
</svg>
|
||||
<span class="ps-1 text-white">Available Pokémon</span>
|
||||
<span class="ps-1">Available Pokémon</span>
|
||||
</NavLink>
|
||||
</button>
|
||||
|
||||
<button class="btn btn-success rounded-4 d-flex justify-content-center" style="width:12rem;">
|
||||
<NavLink class="nav-link d-flex align-items-center" href="/rate-pokemon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#FFF" class="bi bi-award-fill" viewBox="0 0 16 16">
|
||||
</div>
|
||||
<div class="w-auto">
|
||||
<button class="btn btn-success link">
|
||||
<NavLink href="/rate-pokemon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-award-fill mb-1" viewBox="0 0 16 16">
|
||||
<path d="m8 0 1.669.864 1.858.282.842 1.68 1.337 1.32L13.4 6l.306 1.854-1.337 1.32-.842 1.68-1.858.282L8 12l-1.669-.864-1.858-.282-.842-1.68-1.337-1.32L2.6 6l-.306-1.854 1.337-1.32.842-1.68L6.331.864z" />
|
||||
<path d="M4 11.794V16l4-1 4 1v-4.206l-2.018.306L8 13.126 6.018 12.1z" />
|
||||
</svg>
|
||||
<span class="ps-1 text-white">Rate Pokémon</span>
|
||||
<span class="ps-1">Rate Pokémon</span>
|
||||
</NavLink>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -8,7 +8,9 @@
|
|||
|
||||
<PokemonHeader />
|
||||
|
||||
|
||||
<head>
|
||||
<link rel="stylesheet" href="bootstrap/bootstrap-lumen.css" /> <!-- app.css -->
|
||||
</head>
|
||||
|
||||
@if (_pokemon == null)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -12,7 +12,6 @@
|
|||
@using Portfolio.WebUI.Server.Components.Component.Pokemon_Components
|
||||
@using Portfolio.WebUI.Server.Components.Component.Crochet_Components
|
||||
@using Portfolio.Domain.Features.Articles
|
||||
@using Portfolio.Domain.Features.Portfolio;
|
||||
@using Portfolio.Domain.Features.Pokemon
|
||||
@using Portfolio.Domain.Features.Pokemon_Natures
|
||||
@using Portfolio.Domain.Features.Pokemon_Subskills
|
||||
|
|
|
|||
|
|
@ -8,11 +8,6 @@ var builder = WebApplication.CreateBuilder(args);
|
|||
builder.Services.AddRazorComponents()
|
||||
.AddInteractiveServerComponents();
|
||||
|
||||
builder.Services.AddHttpClient("LocalClient", client =>
|
||||
{
|
||||
client.BaseAddress = new Uri("https://localhost:7189/"); // or whatever your port is
|
||||
});
|
||||
|
||||
builder.Services.AddApplication();
|
||||
builder.Services.AddInfrastructure(builder.Configuration);
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,13 +0,0 @@
|
|||
[
|
||||
"Adv. Web Development",
|
||||
"Operating Systems",
|
||||
"Game Development",
|
||||
"Parallel Programming",
|
||||
"VR / AR Development",
|
||||
"Artificial Intelligence",
|
||||
"Machine Learning",
|
||||
"Computer Graphics",
|
||||
"Data Visualization",
|
||||
"Database Management",
|
||||
"Analysis of Algorithms"
|
||||
]
|
||||
|
|
@ -1,87 +0,0 @@
|
|||
[
|
||||
{
|
||||
"title": "Temperature Blanket Visualizer",
|
||||
"descriptions": [
|
||||
"Useful tool to help visualize and refine blanket planning for crochet temperature blankets.",
|
||||
"A personal project, but a fun one."
|
||||
],
|
||||
"links": [
|
||||
{
|
||||
"type": "internal",
|
||||
"url": "/pokemonsleep",
|
||||
"icon": "code"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "PokemonSleep Toolset",
|
||||
"descriptions": [
|
||||
"A webpage constructed for assisting players in the mobile game Pokemon Sleep. Featuring a Pokemon Rater that derives ratings utilizing [this public spreadsheet](https://docs.google.com/spreadsheets/d/14nzQ--k4XhpFHI0qhgNRQlpWswh6WAxBCfq_QvIVZyI/edit?gid=339317073#gid=339317073).",
|
||||
"A personal project, but a fun one."
|
||||
],
|
||||
"links": [
|
||||
{
|
||||
"type": "internal",
|
||||
"url": "/pokemonsleep",
|
||||
"icon": "code"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "AI-Driven D&D 5E Character Generator with React, Next.js, and OpenAI GPT-3 Engine",
|
||||
"descriptions": [
|
||||
"Creates a credible D&D 5E character sheet, including backstory, based on user input. Ex. 'I would like to play a magical elf.' or 'I want to smash things with a big hammer.' The AI chooses the best-fitting character while ensuring rules compliance.",
|
||||
"Lead development in core functionality, including front and back-end logic and deterministic decision flows styled with Emotion."
|
||||
],
|
||||
"links": [
|
||||
{
|
||||
"type": "external",
|
||||
"url": "https://web.engr.oregonstate.edu/~hessro/teaching/hof/cs494#w22",
|
||||
"label": "CS 494 Hall of Fame"
|
||||
},
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/tylertitsworth/ai-character-generator"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "iOS Gesture Alphabet with Swift and CoreML",
|
||||
"descriptions": [
|
||||
"iOS keyboard extension that translates movements made by the user’s phone to corresponding letters using CoreML. Developed as an accessibility solution for users who struggle with traditional keyboards.",
|
||||
"SCRUM team lead. Collected, cleaned, trained, and tested the model. Developed core translation logic and interface."
|
||||
],
|
||||
"links": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/kjiroux/iOS-Gesture-Alphabet"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Android Mobile App with Backend PokeAPI and Java",
|
||||
"descriptions": [
|
||||
"Created 'UltimateDex', a complete Pokedex app accessing the PokeAPI. Users can search, filter, and save entries, with each entry displaying comprehensive information styled to match the series."
|
||||
],
|
||||
"links": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/osu-cs492-w20/final-project-tamagucci/"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "NodeJS WebApp with MYSQL Database and Handlebars",
|
||||
"descriptions": [
|
||||
"Fantasy task-assignment system utilizing MYSQL to manage guilds, 'quests', and members. NodeJS for backend, Handlebars for templating."
|
||||
],
|
||||
"links": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/yanyan2019/cs340_project/"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
[
|
||||
"C# / C++ / C",
|
||||
"ASP.NET / .NET Core",
|
||||
"Blazor WASM",
|
||||
"React",
|
||||
"Java",
|
||||
"JavaScript",
|
||||
"HTML / CSS",
|
||||
"SQL / MYSQL / MSSQL",
|
||||
"JSON / XML",
|
||||
"Python",
|
||||
"Swift",
|
||||
"TypeScript",
|
||||
"MATLAB",
|
||||
"R",
|
||||
"LaTeX"
|
||||
]
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
[
|
||||
"MS Visual Studio 2022",
|
||||
"Git / GitHub / GitLab",
|
||||
"RESTful API",
|
||||
"Docker",
|
||||
"Terraform",
|
||||
"Jira",
|
||||
"Linux / UNIX",
|
||||
"SQL / MYSQL / MSSQL",
|
||||
"Unreal Engine",
|
||||
"Unity",
|
||||
"Blendr",
|
||||
"Windows, Android & iOS",
|
||||
"Gephi",
|
||||
"Excel / Microsoft Office Suite",
|
||||
"Figma"
|
||||
]
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
[
|
||||
{
|
||||
"title": "Junior Web Developer",
|
||||
"company": "Universal Flight Concepts",
|
||||
"startYear": 2022,
|
||||
"endYear": 2024,
|
||||
"details": "Part of a development team that worked on a full rewrite of a 'Secure Area' used by Admin, Students, Instructors and University coordinators to schedule flight and ground instruction, and took the application from ASP.Net 4.0/SQL Server 2016 to a stand-alone C# .Net Core 8, with Blazor WASM (Web Assembly) Microservices API, Identity Server integration, SQL Server 2019, Code-First Entity Framework & DB Migrations, Auto-Scaling Cloud Application"
|
||||
},
|
||||
{
|
||||
"title": "Web Development & Cybersecurity Teaching Assistant",
|
||||
"company": "Oregon State University",
|
||||
"startYear": 2019,
|
||||
"endYear": 2020,
|
||||
"details": "Interacted with and mentored students with relation to their area of study; created solutions to development projects before being assigned to students to ensure guidance and engrain best coding practices; held personal office hours to assist students mwith needs. HTML/CSS, C++, JavaScript, JSON, Node.js, RESTFUL API, MYSQL; public/private keys, key exchange, modern encryption methods, cyberattacks, TOR."
|
||||
},
|
||||
{
|
||||
"title": "Junior Web Developer",
|
||||
"company": "DzyneFX",
|
||||
"startYear": 2018,
|
||||
"endYear": 2018,
|
||||
"details": "Developed front-end UI and code for websites, as well as back-end code, data access layers, web services and RESTful APIs. Worked with symmetric and asymmetric data schemas. Request, register and configure SSL and TLS certificates. C#, PHP, MSSQL and MYSQL."
|
||||
}
|
||||
|
||||
]
|
||||
|
|
@ -7,13 +7,3 @@ window.registerResizeCallback = (dotNetHelper) => {
|
|||
dotNetHelper.invokeMethodAsync('UpdateScreenWidth', window.innerWidth);
|
||||
};
|
||||
};
|
||||
|
||||
window.downloadFileFromText = (filename, contentType, content) => {
|
||||
const blob = new Blob([content], { type: contentType });
|
||||
const url = URL.createObjectURL(blob);
|
||||
const anchor = document.createElement('a');
|
||||
anchor.href = url;
|
||||
anchor.download = filename;
|
||||
anchor.click();
|
||||
URL.revokeObjectURL(url);
|
||||
}
|
||||
Loading…
Reference in New Issue