From 2bf560f6f01f0df72429e5d19947e97be1e79755 Mon Sep 17 00:00:00 2001 From: Kira Jiroux Date: Fri, 27 Jun 2025 21:07:34 -0400 Subject: [PATCH] Made a download button and made an edit button toggleable --- .../Pokemon Components/PokemonDownload.razor | 9 ++++++ .../PokemonDownload.razor.cs | 31 +++++++++++++++++++ .../Pokemon Components/PokemonHeader.razor | 12 +++---- .../Pokemon Components/PokemonTable.razor | 31 ++++++++++++++++--- .../Pokemon Components/PokemonTable.razor.cs | 9 +++++- .../Pages/Pokemon Pages/PokemonAdmin.razor | 23 ++++++++++++++ Portfolio.WebUI.Server/wwwroot/js/site.js | 12 ++++++- 7 files changed, 115 insertions(+), 12 deletions(-) create mode 100644 Portfolio.WebUI.Server/Components/Component/Pokemon Components/PokemonDownload.razor create mode 100644 Portfolio.WebUI.Server/Components/Component/Pokemon Components/PokemonDownload.razor.cs create mode 100644 Portfolio.WebUI.Server/Components/Pages/Pokemon Pages/PokemonAdmin.razor diff --git a/Portfolio.WebUI.Server/Components/Component/Pokemon Components/PokemonDownload.razor b/Portfolio.WebUI.Server/Components/Component/Pokemon Components/PokemonDownload.razor new file mode 100644 index 0000000..0962c2f --- /dev/null +++ b/Portfolio.WebUI.Server/Components/Component/Pokemon Components/PokemonDownload.razor @@ -0,0 +1,9 @@ +@inject IJSRuntime JS + +
+ +
\ No newline at end of file diff --git a/Portfolio.WebUI.Server/Components/Component/Pokemon Components/PokemonDownload.razor.cs b/Portfolio.WebUI.Server/Components/Component/Pokemon Components/PokemonDownload.razor.cs new file mode 100644 index 0000000..3a67e1d --- /dev/null +++ b/Portfolio.WebUI.Server/Components/Component/Pokemon Components/PokemonDownload.razor.cs @@ -0,0 +1,31 @@ +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 { get; set; } + + private List pokemons = new List(); + + + 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); + } + } +} diff --git a/Portfolio.WebUI.Server/Components/Component/Pokemon Components/PokemonHeader.razor b/Portfolio.WebUI.Server/Components/Component/Pokemon Components/PokemonHeader.razor index efc9290..02a2321 100644 --- a/Portfolio.WebUI.Server/Components/Component/Pokemon Components/PokemonHeader.razor +++ b/Portfolio.WebUI.Server/Components/Component/Pokemon Components/PokemonHeader.razor @@ -13,7 +13,7 @@ + + + diff --git a/Portfolio.WebUI.Server/wwwroot/js/site.js b/Portfolio.WebUI.Server/wwwroot/js/site.js index cd486ce..e21d70b 100644 --- a/Portfolio.WebUI.Server/wwwroot/js/site.js +++ b/Portfolio.WebUI.Server/wwwroot/js/site.js @@ -6,4 +6,14 @@ window.registerResizeCallback = (dotNetHelper) => { window.onresize = () => { dotNetHelper.invokeMethodAsync('UpdateScreenWidth', window.innerWidth); }; -}; \ No newline at end of file +}; + +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); +} \ No newline at end of file