Supprimer, ajout, update

master
Fages Tony 2 years ago
parent 78bcc1d674
commit 0379cf2451

@ -1,4 +1,51 @@
<Properties StartupConfiguration="{4B84D2B8-1D74-4293-945B-F1A30FCAB5B3}|Default">
<MonoDevelop.Ide.ItemProperties.BlazorProject FirstBuild="True" />
<MonoDevelop.Ide.Workspace ActiveConfiguration="Debug" />
<MonoDevelop.Ide.ItemProperties.BlazorProject PreferredExecutionTarget="/System/Volumes/Preboot/Cryptexes/App/System/Applications/Safari.app" />
<MonoDevelop.Ide.DebuggingService.Breakpoints>
<BreakpointStore />
</MonoDevelop.Ide.DebuggingService.Breakpoints>
<MultiItemStartupConfigurations />
<MonoDevelop.Ide.DebuggingService.PinnedWatches />
<MonoDevelop.Ide.Workbench ActiveDocument="BlazorProject/_Imports.razor">
<Files>
<File FileName="BlazorProject/Pages/Add.razor" Line="69" Column="12" />
<File FileName="BlazorProject/Pages/Add.razor.cs" Line="32" Column="16" />
<File FileName="BlazorProject/Pages/List.razor" Line="49" Column="1" />
<File FileName="BlazorProject/App.razor" Line="11" Column="26" />
<File FileName="BlazorProject/Models/ItemModel.cs" Line="37" Column="6" />
<File FileName="BlazorProject/Models/Items.cs" Line="1" Column="1" />
<File FileName="BlazorProject/Pages/List.razor.cs" Line="59" Column="6" />
<File FileName="BlazorProject/Program.cs" Line="18" Column="37" />
<File FileName="BlazorProject/Services/IDataService.cs" Line="19" Column="1" />
<File FileName="BlazorProject/Services/DataLocalService.cs" Line="199" Column="10" />
<File FileName="BlazorProject/Pages/Edit.razor" Line="1" Column="2" />
<File FileName="BlazorProject/Pages/Edit.razor.cs" Line="43" Column="34" />
<File FileName="BlazorProject/Factories/ItemFactory.cs" Line="48" Column="6" />
<File FileName="BlazorProject/_Imports.razor" Line="14" Column="7" />
<File FileName="BlazorProject/Pages/_Layout.cshtml" Line="32" Column="70" />
<File FileName="BlazorProject/Pages/DeleteConfirmation.razor" Line="10" Column="7" />
<File FileName="BlazorProject/Pages/DeleteConfirmation.razor.cs" Line="38" Column="6" />
<File FileName="BlazorProject/Pages/Index.razor" Line="1" Column="1" />
<File FileName="BlazorProject/Shared/MainLayout.razor" Line="2" Column="1" />
<File FileName="BlazorProject/appsettings.json" Line="1" Column="1" />
</Files>
<Pads>
<Pad Id="ProjectPad">
<State name="__root__">
<Node name="BlazorProject" expanded="True">
<Node name="BlazorProject">
<Node name="Pages" expanded="True">
<Node name="DeleteConfirmation.razor" expanded="True" />
<Node name="List.razor" expanded="True" />
</Node>
<Node name="_Imports.razor" selected="True" />
</Node>
</Node>
</State>
</Pad>
<Pad Id="MonoDevelop.Debugger.WatchPad">
<State />
</Pad>
</Pads>
</MonoDevelop.Ide.Workbench>
</Properties>

File diff suppressed because one or more lines are too long

@ -1,4 +1,6 @@
<Router AppAssembly="@typeof(Program).Assembly">
<CascadingBlazoredModal>
<Router AppAssembly="@typeof(Program).Assembly">
<Found Context="routeData">
<RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
</Found>
@ -6,3 +8,4 @@
<p>Sorry, there's nothing at this address.</p>
</NotFound>
</Router>
</CascadingBlazoredModal>

@ -4,12 +4,29 @@
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UserSecretsId>11bc8f6a-4398-4bb2-bbe9-f9a351c7e174</UserSecretsId>
</PropertyGroup>
<ItemGroup>
<None Remove="Models\" />
<None Remove="Services\" />
<None Remove="Factories\" />
</ItemGroup>
<ItemGroup>
<Folder Include="Models\" />
<Folder Include="wwwroot\images\" />
<Folder Include="Services\" />
<Folder Include="Factories\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Blazorise.DataGrid" Version="1.4.0" />
<PackageReference Include="Blazorise.Bootstrap" Version="1.4.0" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.4.0" />
<PackageReference Include="Blazored.LocalStorage" Version="4.4.0" />
<PackageReference Include="Blazored.LocalStorage.TestExtensions" Version="4.4.0" />
<PackageReference Include="Blazored.Modal" Version="7.1.0" />
</ItemGroup>
<ItemGroup>
<Content Remove="wwwroot\images\" />
</ItemGroup>
</Project>

@ -0,0 +1,50 @@
using System;
using BlazorProject.Models;
namespace BlazorProject.Factories
{
public static class ItemFactory
{
public static ItemModel ToModel(Item item, byte[] imageContent)
{
return new ItemModel
{
Id = item.Id,
DisplayName = item.DisplayName,
Name = item.Name,
RepairWith = item.RepairWith,
EnchantCategories = item.EnchantCategories,
MaxDurability = item.MaxDurability,
StackSize = item.StackSize,
ImageContent = imageContent
};
}
public static Item Create(ItemModel model)
{
return new Item
{
Id = model.Id,
DisplayName = model.DisplayName,
Name = model.Name,
RepairWith = model.RepairWith,
EnchantCategories = model.EnchantCategories,
MaxDurability = model.MaxDurability,
StackSize = model.StackSize,
CreatedDate = DateTime.Now
};
}
public static void Update(Item item, ItemModel model)
{
item.DisplayName = model.DisplayName;
item.Name = model.Name;
item.RepairWith = model.RepairWith;
item.EnchantCategories = model.EnchantCategories;
item.MaxDurability = model.MaxDurability;
item.StackSize = model.StackSize;
item.UpdatedDate = DateTime.Now;
}
}
}

@ -0,0 +1,39 @@
using System;
using System.ComponentModel.DataAnnotations;
namespace BlazorProject.Models
{
public class ItemModel
{
public int Id { get; set; }
[Required]
[StringLength(50, ErrorMessage = "Le nom affiché ne doit pas dépasser 50 caractères.")]
public string DisplayName { get; set; }
[Required]
[StringLength(50, ErrorMessage = "Le nom ne doit pas dépasser 50 caractères.")]
[RegularExpression(@"^[a-z''-'\s]{1,50}$", ErrorMessage = "Seulement les caractères en minuscule sont acceptées.")]
public string Name { get; set; }
[Required]
[Range(1, 64)]
public int StackSize { get; set; }
[Required]
[Range(1, 125)]
public int MaxDurability { get; set; }
public List<string> EnchantCategories { get; set; }
public List<string> RepairWith { get; set; }
[Required]
[Range(typeof(bool), "true", "true", ErrorMessage = "Vous devez accepter les conditions.")]
public bool AcceptCondition { get; set; }
[Required(ErrorMessage = "L'image de l'item est obligatoire !")]
public byte[] ImageContent { get; set; }
}
}

@ -0,0 +1,69 @@
@page "/add"
<h3>Add</h3>
<EditForm Model="@itemModel" OnValidSubmit="@HandleValidSubmit">
<DataAnnotationsValidator />
<ValidationSummary />
<p>
<label for="display-name">
Display name:
<InputText id="display-name" @bind-Value="itemModel.DisplayName" />
</label>
</p>
<p>
<label for="name">
Name:
<InputText id="name" @bind-Value="itemModel.Name" />
</label>
</p>
<p>
<label for="stack-size">
Stack size:
<InputNumber id="stack-size" @bind-Value="itemModel.StackSize" />
</label>
</p>
<p>
<label for="max-durability">
Max durability:
<InputNumber id="max-durability" @bind-Value="itemModel.MaxDurability" />
</label>
</p>
<p>
Enchant categories:
<div>
@foreach (var item in enchantCategories)
{
<label>
<input type="checkbox" @onchange="@(e => OnEnchantCategoriesChange(item, e.Value))" />@item
</label>
}
</div>
</p>
<p>
Repair with:
<div>
@foreach (var item in repairWith)
{
<label>
<input type="checkbox" @onchange="@(e => OnRepairWithChange(item, e.Value))" />@item
</label>
}
</div>
</p>
<p>
<label>
Item image:
<InputFile OnChange="@LoadImage" accept=".png" />
</label>
</p>
<p>
<label>
Accept Condition:
<InputCheckbox @bind-Value="itemModel.AcceptCondition" />
</label>
</p>
<button type="submit">Submit</button>
</EditForm>

@ -0,0 +1,91 @@
using System;
using Blazored.LocalStorage;
using BlazorProject.Models;
using BlazorProject.Services;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Forms;
namespace BlazorProject.Pages
{
public partial class Add
{
/// <summary>
/// The default enchant categories.
/// </summary>
private List<string> enchantCategories = new List<string>() { "armor", "armor_head", "armor_chest", "weapon", "digger", "breakable", "vanishable" };
/// <summary>
/// The current item model
/// </summary>
private ItemModel itemModel = new()
{
EnchantCategories = new List<string>(),
RepairWith = new List<string>()
};
/// <summary>
/// The default repair with.
/// </summary>
private List<string> repairWith = new List<string>() { "oak_planks", "spruce_planks", "birch_planks", "jungle_planks", "acacia_planks", "dark_oak_planks", "crimson_planks", "warped_planks" };
[Inject]
public IDataService DataService { get; set; }
[Inject]
public NavigationManager NavigationManager { get; set; }
private async void HandleValidSubmit()
{
await DataService.Add(itemModel);
NavigationManager.NavigateTo("list");
}
private async Task LoadImage(InputFileChangeEventArgs e)
{
// Set the content of the image to the model
using (var memoryStream = new MemoryStream())
{
await e.File.OpenReadStream().CopyToAsync(memoryStream);
itemModel.ImageContent = memoryStream.ToArray();
}
}
private void OnEnchantCategoriesChange(string item, object checkedValue)
{
if ((bool)checkedValue)
{
if (!itemModel.EnchantCategories.Contains(item))
{
itemModel.EnchantCategories.Add(item);
}
return;
}
if (itemModel.EnchantCategories.Contains(item))
{
itemModel.EnchantCategories.Remove(item);
}
}
private void OnRepairWithChange(string item, object checkedValue)
{
if ((bool)checkedValue)
{
if (!itemModel.RepairWith.Contains(item))
{
itemModel.RepairWith.Add(item);
}
return;
}
if (itemModel.RepairWith.Contains(item))
{
itemModel.RepairWith.Remove(item);
}
}
}
}

@ -0,0 +1,10 @@
<div class="simple-form">
<p>
Are you sure you want to delete @item.DisplayName ?
</p>
<button @onclick="ConfirmDelete" class="btn btn-primary">Delete</button>
<button @onclick="Cancel" class="btn btn-secondary">Cancel</button>
</div>

@ -0,0 +1,40 @@
using System;
using Blazored.Modal;
using Blazored.Modal.Services;
using BlazorProject.Models;
using BlazorProject.Services;
using Microsoft.AspNetCore.Components;
namespace BlazorProject.Pages
{
public partial class DeleteConfirmation
{
[CascadingParameter]
public BlazoredModalInstance ModalInstance { get; set; }
[Inject]
public IDataService DataService { get; set; }
[Parameter]
public int Id { get; set; }
private Item item = new Item();
protected override async Task OnInitializedAsync()
{
// Get the item
item = await DataService.GetById(Id);
}
void ConfirmDelete()
{
ModalInstance.CloseAsync(ModalResult.Ok(true));
}
void Cancel()
{
ModalInstance.CancelAsync();
}
}
}

@ -0,0 +1,82 @@
@page "/edit/{Id:int}"
<h3>Edit</h3>
<EditForm Model="@itemModel" OnValidSubmit="@HandleValidSubmit">
<DataAnnotationsValidator />
<ValidationSummary />
<p>
<label for="display-name">
Display name:
<InputText id="display-name" @bind-Value="itemModel.DisplayName" />
</label>
</p>
<p>
<label for="name">
Name:
<InputText id="name" @bind-Value="itemModel.Name" />
</label>
</p>
<p>
<label for="stack-size">
Stack size:
<InputNumber id="stack-size" @bind-Value="itemModel.StackSize" />
</label>
</p>
<p>
<label for="max-durability">
Max durability:
<InputNumber id="max-durability" @bind-Value="itemModel.MaxDurability" />
</label>
</p>
<p>
Enchant categories:
<div>
@foreach (var item in enchantCategories)
{
<label>
<input type="checkbox" @onchange="@(e => OnEnchantCategoriesChange(item, e.Value))" checked="@(itemModel.EnchantCategories.Contains(item) ? "checked" : null)" />@item
</label>
}
</div>
</p>
<p>
Repair with:
<div>
@foreach (var item in repairWith)
{
<label>
<input type="checkbox" @onchange="@(e => OnRepairWithChange(item, e.Value))" checked="@(itemModel.RepairWith.Contains(item) ? "checked" : null)" />@item
</label>
}
</div>
</p>
<p>
<label>
Current Item image:
@if (File.Exists($"{WebHostEnvironment.WebRootPath}/images/{itemModel.Name}.png"))
{
<img src="images/@(itemModel.Name).png" class="img-thumbnail" title="@itemModel.DisplayName" alt="@itemModel.DisplayName" style="max-width: 150px" />
}
else
{
<img src="images/default.png" class="img-thumbnail" title="@itemModel.DisplayName" alt="@itemModel.DisplayName" style="max-width: 150px" />
}
</label>
</p>
<p>
<label>
Item image:
<InputFile OnChange="@LoadImage" accept=".png" />
</label>
</p>
<p>
<label>
Accept Condition:
<InputCheckbox @bind-Value="itemModel.AcceptCondition" />
</label>
</p>
<button type="submit">Submit</button>
</EditForm>

@ -0,0 +1,125 @@
using System;
using BlazorProject.Factories;
using BlazorProject.Models;
using BlazorProject.Services;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Forms;
namespace BlazorProject.Pages
{
public partial class Edit
{
[Parameter]
public int Id { get; set; }
/// <summary>
/// The default enchant categories.
/// </summary>
private List<string> enchantCategories = new List<string>() { "armor", "armor_head", "armor_chest", "weapon", "digger", "breakable", "vanishable" };
/// <summary>
/// The current item model
/// </summary>
private ItemModel itemModel = new()
{
EnchantCategories = new List<string>(),
RepairWith = new List<string>()
};
/// <summary>
/// The default repair with.
/// </summary>
private List<string> repairWith = new List<string>() { "oak_planks", "spruce_planks", "birch_planks", "jungle_planks", "acacia_planks", "dark_oak_planks", "crimson_planks", "warped_planks" };
[Inject]
public IDataService DataService { get; set; }
[Inject]
public NavigationManager NavigationManager { get; set; }
[Inject]
public IWebHostEnvironment WebHostEnvironment { get; set; }
protected override async Task OnInitializedAsync()
{
var item = await DataService.GetById(Id);
var fileContent = await File.ReadAllBytesAsync($"{WebHostEnvironment.WebRootPath}/images/default.png");
if (File.Exists($"{WebHostEnvironment.WebRootPath}/images/{itemModel.Name}.png"))
{
fileContent = await File.ReadAllBytesAsync($"{WebHostEnvironment.WebRootPath}/images/{item.Name}.png");
}
// Set the model with the item
itemModel = ItemFactory.ToModel(item, fileContent);
// Set the model with the item
itemModel = new ItemModel
{
Id = item.Id,
DisplayName = item.DisplayName,
Name = item.Name,
RepairWith = item.RepairWith,
EnchantCategories = item.EnchantCategories,
MaxDurability = item.MaxDurability,
StackSize = item.StackSize,
ImageContent = fileContent
};
}
private async void HandleValidSubmit()
{
await DataService.Update(Id, itemModel);
NavigationManager.NavigateTo("list");
}
private async Task LoadImage(InputFileChangeEventArgs e)
{
// Set the content of the image to the model
using (var memoryStream = new MemoryStream())
{
await e.File.OpenReadStream().CopyToAsync(memoryStream);
itemModel.ImageContent = memoryStream.ToArray();
}
}
private void OnEnchantCategoriesChange(string item, object checkedValue)
{
if ((bool)checkedValue)
{
if (!itemModel.EnchantCategories.Contains(item))
{
itemModel.EnchantCategories.Add(item);
}
return;
}
if (itemModel.EnchantCategories.Contains(item))
{
itemModel.EnchantCategories.Remove(item);
}
}
private void OnRepairWithChange(string item, object checkedValue)
{
if ((bool)checkedValue)
{
if (!itemModel.RepairWith.Contains(item))
{
itemModel.RepairWith.Add(item);
}
return;
}
if (itemModel.RepairWith.Contains(item))
{
itemModel.RepairWith.Remove(item);
}
}
}
}

@ -1,34 +1,52 @@
@page "/list"
@using BlazorProject.Models
<h3>List</h3>
@if (items != null)
{
<table class="table">
<thead>
<tr>
<th>Id</th>
<th>Display Name</th>
<th>Stack Size</th>
<th>Maximum Durability</th>
<th>Enchant Categories</th>
<th>Repair With</th>
<th>Created Date</th>
</tr>
</thead>
<tbody>
@foreach (var item in items)
<div>
<NavLink class="btn btn-primary" href="Add" Match="NavLinkMatch.All">
<i class="fa fa-plus"></i> Ajouter
</NavLink>
</div>
<DataGrid TItem="Item" Data="@items" ReadData="@OnReadData"
TotalItems="@totalItem"
PageSize="10"
ShowPager
Responsive>
<DataGridColumn TItem="Item" Field="@nameof(Item.Id)" Caption="#" />
<DataGridColumn TItem="Item" Field="@nameof(Item.Id)" Caption="Image">
<DisplayTemplate>
@if (File.Exists($"{WebHostEnvironment.WebRootPath}/images/{context.Name}.png"))
{
<tr>
<td>@item.Id</td>
<td>@item.DisplayName</td>
<td>@item.StackSize</td>
<td>@item.MaxDurability</td>
<td>@(string.Join(", ", item.EnchantCategories))</td>
<td>@(string.Join(", ", item.RepairWith))</td>
<td>@item.CreatedDate.ToShortDateString()</td>
</tr>
<img src="images/luna.png" class="img-thumbnail" title="@context.DisplayName" alt="@context.DisplayName" style="max-width: 150px" />
// <img src="images/@(context.Name).png" class="img-thumbnail" title="@context.DisplayName" alt="@context.DisplayName" style="max-width: 150px" />
}
</tbody>
</table>
else
{
<img src="images/default.png" class="img-thumbnail" title="@context.DisplayName" alt="@context.DisplayName" style="max-width: 150px" />
}
</DisplayTemplate>
</DataGridColumn>
<DataGridColumn TItem="Item" Field="@nameof(Item.DisplayName)" Caption="Display name" />
<DataGridColumn TItem="Item" Field="@nameof(Item.StackSize)" Caption="Stack size" />
<DataGridColumn TItem="Item" Field="@nameof(Item.MaxDurability)" Caption="Maximum durability" />
<DataGridColumn TItem="Item" Field="@nameof(Item.EnchantCategories)" Caption="Enchant categories">
<DisplayTemplate>
@(string.Join(", ", ((Item)context).EnchantCategories))
</DisplayTemplate>
</DataGridColumn>
<DataGridColumn TItem="Item" Field="@nameof(Item.RepairWith)" Caption="Repair with">
<DisplayTemplate>
@(string.Join(", ", ((Item)context).RepairWith))
</DisplayTemplate>
</DataGridColumn>
<DataGridColumn TItem="Item" Field="@nameof(Item.CreatedDate)" Caption="Created date" DisplayFormat="{0:d}" DisplayFormatProvider="@System.Globalization.CultureInfo.GetCultureInfo("fr-FR")" />
<DataGridColumn TItem="Item" Field="@nameof(Item.Id)" Caption="Action">
<DisplayTemplate>
<a href="Edit/@(context.Id)" class="btn btn-primary"><i class="fa fa-edit"></i> Editer</a>
<button type="button" class="btn btn-primary" @onclick="() => OnDelete(context.Id)"><i class="fa fa-trash"></i> Supprimer</button>
</DisplayTemplate>
</DataGridColumn>
</DataGrid>

@ -1,22 +1,60 @@
using System;
using Blazored.LocalStorage;
using Blazored.Modal;
using Blazored.Modal.Services;
using Blazorise.DataGrid;
using BlazorProject.Models;
using BlazorProject.Services;
using Microsoft.AspNetCore.Components;
namespace BlazorProject.Pages;
namespace BlazorProject.Pages
{
public partial class List
{
private Item[] items;
private List<Item> items;
private int totalItem;
[Inject]
public HttpClient Http { get; set; }
public IDataService DataService { get; set; }
[Inject]
public IWebHostEnvironment WebHostEnvironment { get; set; }
[Inject]
public NavigationManager NavigationManager { get; set; }
protected override async Task OnInitializedAsync()
[CascadingParameter]
public IModalService Modal { get; set; }
private async Task OnReadData(DataGridReadDataEventArgs<Item> e)
{
if (e.CancellationToken.IsCancellationRequested)
{
return;
}
if (!e.CancellationToken.IsCancellationRequested)
{
items = await Http.GetFromJsonAsync<Item[]>($"{NavigationManager.BaseUri}fake-data.json");
items = await DataService.List(e.Page, e.PageSize);
totalItem = await DataService.Count();
}
}
private async void OnDelete(int id)
{
var parameters = new ModalParameters();
parameters.Add(nameof(Item.Id), id);
var modal = Modal.Show<DeleteConfirmation>("Delete Confirmation", parameters);
var result = await modal.Result;
if (result.Cancelled)
{
return;
}
await DataService.Delete(id);
// Reload the page
NavigationManager.NavigateTo("list", true);
}
}

@ -11,6 +11,7 @@
<link rel="stylesheet" href="css/bootstrap/bootstrap.min.css" />
<link href="css/site.css" rel="stylesheet" />
<link href="BlazorProject.styles.css" rel="stylesheet" />
<link href="_content/Blazored.Modal/blazored-modal.css" rel="stylesheet" />
<component type="typeof(HeadOutlet)" render-mode="ServerPrerendered" />
</head>
<body>
@ -28,6 +29,12 @@
</div>
<script src="_framework/blazor.server.js"></script>
<script src="_content/Blazored.Modal/blazored.modal.js"></script>
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.4/css/all.css">
<link href="_content/Blazorise/blazorise.css" rel="stylesheet" />
<link href="_content/Blazorise.Bootstrap/blazorise.bootstrap.css" rel="stylesheet" />
</body>
</html>

@ -1,18 +1,34 @@
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Web;
using BlazorProject.Data;
using Blazorise;
using Blazorise.Bootstrap;
using Blazorise.Icons.FontAwesome;
using Blazored.LocalStorage;
using BlazorProject.Services;
using Blazored.Modal;
// Add services to the container.
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
builder.Services.AddSingleton<WeatherForecastService>();
builder.Services.AddScoped<IDataService, DataLocalService>();
builder.Services.AddBlazoredModal();
builder.Services.AddHttpClient();
builder.Services
.AddBlazorise()
.AddBootstrapProviders()
.AddFontAwesomeIcons();
builder.Services.AddBlazoredLocalStorage();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{

@ -0,0 +1,202 @@
using System;
using Blazored.LocalStorage;
using BlazorProject.Factories;
using BlazorProject.Models;
using Microsoft.AspNetCore.Components;
namespace BlazorProject.Services
{
public class DataLocalService : IDataService
{
private readonly HttpClient _http;
private readonly ILocalStorageService _localStorage;
private readonly NavigationManager _navigationManager;
private readonly IWebHostEnvironment _webHostEnvironment;
public DataLocalService(
ILocalStorageService localStorage,
HttpClient http,
IWebHostEnvironment webHostEnvironment,
NavigationManager navigationManager)
{
_localStorage = localStorage;
_http = http;
_webHostEnvironment = webHostEnvironment;
_navigationManager = navigationManager;
}
public async Task Add(ItemModel model)
{
// Get the current data
var currentData = await _localStorage.GetItemAsync<List<Item>>("data");
// Simulate the Id
model.Id = currentData.Max(s => s.Id) + 1;
// Add the item to the current data
currentData.Add(ItemFactory.Create(model));
// Add the item to the current data
currentData.Add(new Item
{
Id = model.Id,
DisplayName = model.DisplayName,
Name = model.Name,
RepairWith = model.RepairWith,
EnchantCategories = model.EnchantCategories,
MaxDurability = model.MaxDurability,
StackSize = model.StackSize,
CreatedDate = DateTime.Now
});
// Save the image
var imagePathInfo = new DirectoryInfo($"{_webHostEnvironment.WebRootPath}/images");
// Check if the folder "images" exist
if (!imagePathInfo.Exists)
{
imagePathInfo.Create();
}
// Determine the image name
var fileName = new FileInfo($"{imagePathInfo}/{model.Name}.png");
// Write the file content
await File.WriteAllBytesAsync(fileName.FullName, model.ImageContent);
// Save the data
await _localStorage.SetItemAsync("data", currentData);
}
public async Task<int> Count()
{
// Load data from the local storage
var currentData = await _localStorage.GetItemAsync<Item[]>("data");
// Check if data exist in the local storage
if (currentData == null)
{
// this code add in the local storage the fake data
var originalData = await _http.GetFromJsonAsync<Item[]>($"{_navigationManager.BaseUri}fake-data.json");
await _localStorage.SetItemAsync("data", originalData);
}
return (await _localStorage.GetItemAsync<Item[]>("data")).Length;
}
public async Task<List<Item>> List(int currentPage, int pageSize)
{
// Load data from the local storage
var currentData = await _localStorage.GetItemAsync<Item[]>("data");
// Check if data exist in the local storage
if (currentData == null)
{
// this code add in the local storage the fake data
var originalData = await _http.GetFromJsonAsync<Item[]>($"{_navigationManager.BaseUri}fake-data.json");
await _localStorage.SetItemAsync("data", originalData);
}
return (await _localStorage.GetItemAsync<Item[]>("data")).Skip((currentPage - 1) * pageSize).Take(pageSize).ToList();
}
public async Task<Item> GetById(int id)
{
// Get the current data
var currentData = await _localStorage.GetItemAsync<List<Item>>("data");
// Get the item int the list
var item = currentData.FirstOrDefault(w => w.Id == id);
// Check if item exist
if (item == null)
{
throw new Exception($"Unable to found the item with ID: {id}");
}
return item;
}
public async Task Update(int id, ItemModel model)
{
// Get the current data
var currentData = await _localStorage.GetItemAsync<List<Item>>("data");
// Get the item int the list
var item = currentData.FirstOrDefault(w => w.Id == id);
// Check if item exist
if (item == null)
{
throw new Exception($"Unable to found the item with ID: {id}");
}
// Save the image
var imagePathInfo = new DirectoryInfo($"{_webHostEnvironment.WebRootPath}/images");
// Check if the folder "images" exist
if (!imagePathInfo.Exists)
{
imagePathInfo.Create();
}
// Delete the previous image
if (item.Name != model.Name)
{
var oldFileName = new FileInfo($"{imagePathInfo}/{item.Name}.png");
if (oldFileName.Exists)
{
File.Delete(oldFileName.FullName);
}
}
// Determine the image name
var fileName = new FileInfo($"{imagePathInfo}/{model.Name}.png");
// Write the file content
await File.WriteAllBytesAsync(fileName.FullName, model.ImageContent);
// Modify the content of the item
ItemFactory.Update(item, model);
// Modify the content of the item
item.DisplayName = model.DisplayName;
item.Name = model.Name;
item.RepairWith = model.RepairWith;
item.EnchantCategories = model.EnchantCategories;
item.MaxDurability = model.MaxDurability;
item.StackSize = model.StackSize;
item.UpdatedDate = DateTime.Now;
// Save the data
await _localStorage.SetItemAsync("data", currentData);
}
public async Task Delete(int id)
{
// Get the current data
var currentData = await _localStorage.GetItemAsync<List<Item>>("data");
// Get the item int the list
var item = currentData.FirstOrDefault(w => w.Id == id);
// Delete item in
currentData.Remove(item);
// Delete the image
var imagePathInfo = new DirectoryInfo($"{_webHostEnvironment.WebRootPath}/images");
var fileName = new FileInfo($"{imagePathInfo}/{item.Name}.png");
if (fileName.Exists)
{
File.Delete(fileName.FullName);
}
// Save the data
await _localStorage.SetItemAsync("data", currentData);
}
}
}

@ -0,0 +1,22 @@
using System;
using BlazorProject.Models;
namespace BlazorProject.Services
{
public interface IDataService
{
Task Add(ItemModel model);
Task<int> Count();
Task<List<Item>> List(int currentPage, int pageSize);
Task<Item> GetById(int id);
Task Update(int id, ItemModel model);
Task Delete(int id);
}
}

@ -8,4 +8,6 @@
@using Microsoft.JSInterop
@using BlazorProject
@using BlazorProject.Shared
@using Blazorise.DataGrid
@using Blazored.Modal
@using Blazored.Modal.Services

@ -1,17 +1,17 @@
{
"format": 1,
"restore": {
"/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/BlazorProject.csproj": {}
"/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/BlazorProject.csproj": {}
},
"projects": {
"/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/BlazorProject.csproj": {
"/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/BlazorProject.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/BlazorProject.csproj",
"projectUniqueName": "/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/BlazorProject.csproj",
"projectName": "BlazorProject",
"projectPath": "/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/BlazorProject.csproj",
"projectPath": "/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/BlazorProject.csproj",
"packagesPath": "/Users/tonyfages/.nuget/packages/",
"outputPath": "/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/obj/",
"outputPath": "/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/obj/",
"projectStyle": "PackageReference",
"configFilePaths": [
"/Users/tonyfages/.nuget/NuGet/NuGet.Config"
@ -38,6 +38,32 @@
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"dependencies": {
"Blazored.LocalStorage": {
"target": "Package",
"version": "[4.4.0, )"
},
"Blazored.LocalStorage.TestExtensions": {
"target": "Package",
"version": "[4.4.0, )"
},
"Blazored.Modal": {
"target": "Package",
"version": "[7.1.0, )"
},
"Blazorise.Bootstrap": {
"target": "Package",
"version": "[1.4.0, )"
},
"Blazorise.DataGrid": {
"target": "Package",
"version": "[1.4.0, )"
},
"Blazorise.Icons.FontAwesome": {
"target": "Package",
"version": "[1.4.0, )"
}
},
"imports": [
"net461",
"net462",

@ -12,4 +12,10 @@
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="/Users/tonyfages/.nuget/packages/" />
</ItemGroup>
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)blazorise/1.4.0/buildTransitive/Blazorise.props" Condition="Exists('$(NuGetPackageRoot)blazorise/1.4.0/buildTransitive/Blazorise.props')" />
<Import Project="$(NuGetPackageRoot)blazorise.datagrid/1.4.0/buildTransitive/Blazorise.DataGrid.props" Condition="Exists('$(NuGetPackageRoot)blazorise.datagrid/1.4.0/buildTransitive/Blazorise.DataGrid.props')" />
<Import Project="$(NuGetPackageRoot)blazorise.bootstrap/1.4.0/buildTransitive/Blazorise.Bootstrap.props" Condition="Exists('$(NuGetPackageRoot)blazorise.bootstrap/1.4.0/buildTransitive/Blazorise.Bootstrap.props')" />
<Import Project="$(NuGetPackageRoot)blazored.modal/7.1.0/buildTransitive/Blazored.Modal.props" Condition="Exists('$(NuGetPackageRoot)blazored.modal/7.1.0/buildTransitive/Blazored.Modal.props')" />
</ImportGroup>
</Project>

@ -1,2 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.extensions.logging.abstractions/6.0.4/buildTransitive/netcoreapp3.1/Microsoft.Extensions.Logging.Abstractions.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.logging.abstractions/6.0.4/buildTransitive/netcoreapp3.1/Microsoft.Extensions.Logging.Abstractions.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.aspnetcore.components.analyzers/6.0.25/buildTransitive/netstandard2.0/Microsoft.AspNetCore.Components.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.aspnetcore.components.analyzers/6.0.25/buildTransitive/netstandard2.0/Microsoft.AspNetCore.Components.Analyzers.targets')" />
</ImportGroup>
</Project>

@ -10,6 +10,7 @@
using System;
using System.Reflection;
[assembly: Microsoft.Extensions.Configuration.UserSecrets.UserSecretsIdAttribute("11bc8f6a-4398-4bb2-bbe9-f9a351c7e174")]
[assembly: System.Reflection.AssemblyCompanyAttribute("BlazorProject")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]

@ -1 +1 @@
6335e848038541ba8ceedb52c56001071ecfc7c5
ea9654faf84a439b226b0a79effdd718e416cc19

@ -9,65 +9,77 @@ build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = BlazorProject
build_property.RootNamespace = BlazorProject
build_property.ProjectDir = /Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/
build_property.ProjectDir = /Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/
build_property.RazorLangVersion = 6.0
build_property.SupportLocalizedComponentNames =
build_property.GenerateRazorMetadataSourceChecksumAttributes =
build_property.MSBuildProjectDirectory = /Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject
build_property.MSBuildProjectDirectory = /Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject
build_property._RazorSourceGeneratorDebug =
[/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/App.razor]
[/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/App.razor]
build_metadata.AdditionalFiles.TargetPath = QXBwLnJhem9y
build_metadata.AdditionalFiles.CssScope =
[/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/Pages/Counter.razor]
[/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/Pages/Add.razor]
build_metadata.AdditionalFiles.TargetPath = UGFnZXMvQWRkLnJhem9y
build_metadata.AdditionalFiles.CssScope =
[/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/Pages/Counter.razor]
build_metadata.AdditionalFiles.TargetPath = UGFnZXMvQ291bnRlci5yYXpvcg==
build_metadata.AdditionalFiles.CssScope =
[/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/Pages/Episodes.razor]
[/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/Pages/DeleteConfirmation.razor]
build_metadata.AdditionalFiles.TargetPath = UGFnZXMvRGVsZXRlQ29uZmlybWF0aW9uLnJhem9y
build_metadata.AdditionalFiles.CssScope =
[/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/Pages/Edit.razor]
build_metadata.AdditionalFiles.TargetPath = UGFnZXMvRWRpdC5yYXpvcg==
build_metadata.AdditionalFiles.CssScope =
[/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/Pages/Episodes.razor]
build_metadata.AdditionalFiles.TargetPath = UGFnZXMvRXBpc29kZXMucmF6b3I=
build_metadata.AdditionalFiles.CssScope =
[/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/Pages/FetchData.razor]
[/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/Pages/FetchData.razor]
build_metadata.AdditionalFiles.TargetPath = UGFnZXMvRmV0Y2hEYXRhLnJhem9y
build_metadata.AdditionalFiles.CssScope =
[/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/Pages/Index.razor]
[/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/Pages/Index.razor]
build_metadata.AdditionalFiles.TargetPath = UGFnZXMvSW5kZXgucmF6b3I=
build_metadata.AdditionalFiles.CssScope =
[/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/Pages/List.razor]
[/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/Pages/List.razor]
build_metadata.AdditionalFiles.TargetPath = UGFnZXMvTGlzdC5yYXpvcg==
build_metadata.AdditionalFiles.CssScope =
[/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/Shared/DoctorWhoLayout.razor]
[/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/Shared/DoctorWhoLayout.razor]
build_metadata.AdditionalFiles.TargetPath = U2hhcmVkL0RvY3Rvcldob0xheW91dC5yYXpvcg==
build_metadata.AdditionalFiles.CssScope =
[/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/Shared/SurveyPrompt.razor]
[/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/Shared/SurveyPrompt.razor]
build_metadata.AdditionalFiles.TargetPath = U2hhcmVkL1N1cnZleVByb21wdC5yYXpvcg==
build_metadata.AdditionalFiles.CssScope =
[/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/_Imports.razor]
[/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/_Imports.razor]
build_metadata.AdditionalFiles.TargetPath = X0ltcG9ydHMucmF6b3I=
build_metadata.AdditionalFiles.CssScope =
[/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/Shared/MainLayout.razor]
[/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/Shared/MainLayout.razor]
build_metadata.AdditionalFiles.TargetPath = U2hhcmVkL01haW5MYXlvdXQucmF6b3I=
build_metadata.AdditionalFiles.CssScope = b-u64m9gwoct
[/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/Shared/NavMenu.razor]
[/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/Shared/NavMenu.razor]
build_metadata.AdditionalFiles.TargetPath = U2hhcmVkL05hdk1lbnUucmF6b3I=
build_metadata.AdditionalFiles.CssScope = b-rrj01g35io
[/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/Pages/Error.cshtml]
[/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/Pages/Error.cshtml]
build_metadata.AdditionalFiles.TargetPath = UGFnZXMvRXJyb3IuY3NodG1s
build_metadata.AdditionalFiles.CssScope =
[/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/Pages/_Host.cshtml]
[/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/Pages/_Host.cshtml]
build_metadata.AdditionalFiles.TargetPath = UGFnZXMvX0hvc3QuY3NodG1s
build_metadata.AdditionalFiles.CssScope =
[/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/Pages/_Layout.cshtml]
[/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/Pages/_Layout.cshtml]
build_metadata.AdditionalFiles.TargetPath = UGFnZXMvX0xheW91dC5jc2h0bWw=
build_metadata.AdditionalFiles.CssScope =

@ -1 +1 @@
32dd1e518c01fcb3e58eb92dc14097f483eda03d
47134a9d4fefaa960d6c1fb956824ba16e8fa557

@ -30,3 +30,56 @@
/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/obj/Debug/net6.0/BlazorProject.pdb
/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/obj/Debug/net6.0/BlazorProject.genruntimeconfig.cache
/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/obj/Debug/net6.0/ref/BlazorProject.dll
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/obj/Debug/net6.0/BlazorProject.csproj.AssemblyReference.cache
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/obj/Debug/net6.0/BlazorProject.GeneratedMSBuildEditorConfig.editorconfig
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/obj/Debug/net6.0/BlazorProject.AssemblyInfoInputs.cache
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/obj/Debug/net6.0/BlazorProject.AssemblyInfo.cs
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/obj/Debug/net6.0/BlazorProject.csproj.CoreCompileInputs.cache
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/obj/Debug/net6.0/BlazorProject.MvcApplicationPartsAssemblyInfo.cache
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/obj/Debug/net6.0/BlazorProject.RazorAssemblyInfo.cache
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/obj/Debug/net6.0/BlazorProject.RazorAssemblyInfo.cs
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/bin/Debug/net6.0/appsettings.Development.json
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/bin/Debug/net6.0/appsettings.json
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/bin/Debug/net6.0/BlazorProject.staticwebassets.runtime.json
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/bin/Debug/net6.0/BlazorProject
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/bin/Debug/net6.0/BlazorProject.deps.json
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/bin/Debug/net6.0/BlazorProject.runtimeconfig.json
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/bin/Debug/net6.0/BlazorProject.dll
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/bin/Debug/net6.0/BlazorProject.pdb
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/bin/Debug/net6.0/Blazorise.dll
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/bin/Debug/net6.0/Blazorise.Bootstrap.dll
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/bin/Debug/net6.0/Blazorise.DataGrid.dll
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/bin/Debug/net6.0/Blazorise.Icons.FontAwesome.dll
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/bin/Debug/net6.0/Blazorise.Licensing.dll
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/bin/Debug/net6.0/DeepCloner.dll
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/bin/Debug/net6.0/Microsoft.AspNetCore.Authorization.dll
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/bin/Debug/net6.0/Microsoft.AspNetCore.Components.dll
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/bin/Debug/net6.0/Microsoft.AspNetCore.Components.Forms.dll
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/bin/Debug/net6.0/Microsoft.AspNetCore.Components.Web.dll
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/bin/Debug/net6.0/Microsoft.AspNetCore.Metadata.dll
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/bin/Debug/net6.0/Microsoft.Extensions.DependencyInjection.dll
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/bin/Debug/net6.0/Microsoft.Extensions.Logging.Abstractions.dll
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/bin/Debug/net6.0/Microsoft.JSInterop.dll
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/bin/Debug/net6.0/System.IO.Pipelines.dll
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/obj/Debug/net6.0/staticwebassets/msbuild.BlazorProject.Microsoft.AspNetCore.StaticWebAssets.props
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/obj/Debug/net6.0/staticwebassets/msbuild.build.BlazorProject.props
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/obj/Debug/net6.0/staticwebassets/msbuild.buildMultiTargeting.BlazorProject.props
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/obj/Debug/net6.0/staticwebassets/msbuild.buildTransitive.BlazorProject.props
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/obj/Debug/net6.0/staticwebassets.pack.json
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/obj/Debug/net6.0/staticwebassets.build.json
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/obj/Debug/net6.0/staticwebassets.development.json
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/obj/Debug/net6.0/scopedcss/Shared/MainLayout.razor.rz.scp.css
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/obj/Debug/net6.0/scopedcss/Shared/NavMenu.razor.rz.scp.css
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/obj/Debug/net6.0/scopedcss/bundle/BlazorProject.styles.css
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/obj/Debug/net6.0/scopedcss/projectbundle/BlazorProject.bundle.scp.css
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/obj/Debug/net6.0/BlazorProject.csproj.CopyComplete
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/obj/Debug/net6.0/BlazorProject.dll
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/obj/Debug/net6.0/refint/BlazorProject.dll
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/obj/Debug/net6.0/BlazorProject.pdb
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/obj/Debug/net6.0/BlazorProject.genruntimeconfig.cache
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/obj/Debug/net6.0/ref/BlazorProject.dll
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/bin/Debug/net6.0/Blazored.LocalStorage.dll
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/bin/Debug/net6.0/Blazored.LocalStorage.TestExtensions.dll
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/bin/Debug/net6.0/Bunit.Core.dll
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/bin/Debug/net6.0/Blazored.Modal.dll
/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/bin/Debug/net6.0/Microsoft.JSInterop.WebAssembly.dll

@ -1 +1 @@
5a0c77266f00029970fb7cef967e25a0e0459d58
fd76d2473c673687090a5a1be21108c88425d2b5

@ -1,3 +1,5 @@
@import '_content/Blazored.Modal/Blazored.Modal.bundle.scp.css';
/* _content/BlazorProject/Shared/MainLayout.razor.rz.scp.css */
.page[b-u64m9gwoct] {
position: relative;

File diff suppressed because one or more lines are too long

@ -1,65 +1,81 @@
{
"Files": [
{
"Id": "/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/obj/Debug/net6.0/scopedcss/projectbundle/BlazorProject.bundle.scp.css",
"Id": "/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/obj/Debug/net6.0/scopedcss/projectbundle/BlazorProject.bundle.scp.css",
"PackagePath": "staticwebassets/BlazorProject.bundle.scp.css"
},
{
"Id": "/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/wwwroot/css/bootstrap/bootstrap.min.css",
"Id": "/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/wwwroot/css/bootstrap/bootstrap.min.css",
"PackagePath": "staticwebassets/css/bootstrap/bootstrap.min.css"
},
{
"Id": "/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/wwwroot/css/bootstrap/bootstrap.min.css.map",
"Id": "/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/wwwroot/css/bootstrap/bootstrap.min.css.map",
"PackagePath": "staticwebassets/css/bootstrap/bootstrap.min.css.map"
},
{
"Id": "/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/wwwroot/css/open-iconic/FONT-LICENSE",
"Id": "/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/wwwroot/css/open-iconic/FONT-LICENSE",
"PackagePath": "staticwebassets/css/open-iconic"
},
{
"Id": "/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/wwwroot/css/open-iconic/ICON-LICENSE",
"Id": "/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/wwwroot/css/open-iconic/ICON-LICENSE",
"PackagePath": "staticwebassets/css/open-iconic"
},
{
"Id": "/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/wwwroot/css/open-iconic/README.md",
"Id": "/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/wwwroot/css/open-iconic/README.md",
"PackagePath": "staticwebassets/css/open-iconic/README.md"
},
{
"Id": "/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css",
"Id": "/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css",
"PackagePath": "staticwebassets/css/open-iconic/font/css/open-iconic-bootstrap.min.css"
},
{
"Id": "/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/wwwroot/css/open-iconic/font/fonts/open-iconic.eot",
"Id": "/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/wwwroot/css/open-iconic/font/fonts/open-iconic.eot",
"PackagePath": "staticwebassets/css/open-iconic/font/fonts/open-iconic.eot"
},
{
"Id": "/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/wwwroot/css/open-iconic/font/fonts/open-iconic.otf",
"Id": "/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/wwwroot/css/open-iconic/font/fonts/open-iconic.otf",
"PackagePath": "staticwebassets/css/open-iconic/font/fonts/open-iconic.otf"
},
{
"Id": "/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/wwwroot/css/open-iconic/font/fonts/open-iconic.svg",
"Id": "/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/wwwroot/css/open-iconic/font/fonts/open-iconic.svg",
"PackagePath": "staticwebassets/css/open-iconic/font/fonts/open-iconic.svg"
},
{
"Id": "/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf",
"Id": "/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf",
"PackagePath": "staticwebassets/css/open-iconic/font/fonts/open-iconic.ttf"
},
{
"Id": "/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/wwwroot/css/open-iconic/font/fonts/open-iconic.woff",
"Id": "/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/wwwroot/css/open-iconic/font/fonts/open-iconic.woff",
"PackagePath": "staticwebassets/css/open-iconic/font/fonts/open-iconic.woff"
},
{
"Id": "/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/wwwroot/css/site.css",
"Id": "/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/wwwroot/css/site.css",
"PackagePath": "staticwebassets/css/site.css"
},
{
"Id": "/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/wwwroot/fake-data.json",
"Id": "/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/wwwroot/fake-data.json",
"PackagePath": "staticwebassets/fake-data.json"
},
{
"Id": "/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/wwwroot/favicon.ico",
"Id": "/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/wwwroot/favicon.ico",
"PackagePath": "staticwebassets/favicon.ico"
},
{
"Id": "/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/wwwroot/images/default.png",
"PackagePath": "staticwebassets/images/default.png"
},
{
"Id": "/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/wwwroot/images/ezdezdez.png",
"PackagePath": "staticwebassets/images/ezdezdez.png"
},
{
"Id": "/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/wwwroot/images/luna.png",
"PackagePath": "staticwebassets/images/luna.png"
},
{
"Id": "/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/wwwroot/images/zappix.png",
"PackagePath": "staticwebassets/images/zappix.png"
},
{
"Id": "obj/Debug/net6.0/staticwebassets/msbuild.BlazorProject.Microsoft.AspNetCore.StaticWebAssets.props",
"PackagePath": "build\\Microsoft.AspNetCore.StaticWebAssets.props"

@ -240,5 +240,69 @@
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
<OriginalItemSpec>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\favicon.ico))</OriginalItemSpec>
</StaticWebAsset>
<StaticWebAsset Include="$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\images\default.png))">
<SourceType>Package</SourceType>
<SourceId>BlazorProject</SourceId>
<ContentRoot>$(MSBuildThisFileDirectory)..\staticwebassets\</ContentRoot>
<BasePath>_content/BlazorProject</BasePath>
<RelativePath>images/default.png</RelativePath>
<AssetKind>All</AssetKind>
<AssetMode>All</AssetMode>
<AssetRole>Primary</AssetRole>
<RelatedAsset></RelatedAsset>
<AssetTraitName></AssetTraitName>
<AssetTraitValue></AssetTraitValue>
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
<OriginalItemSpec>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\images\default.png))</OriginalItemSpec>
</StaticWebAsset>
<StaticWebAsset Include="$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\images\ezdezdez.png))">
<SourceType>Package</SourceType>
<SourceId>BlazorProject</SourceId>
<ContentRoot>$(MSBuildThisFileDirectory)..\staticwebassets\</ContentRoot>
<BasePath>_content/BlazorProject</BasePath>
<RelativePath>images/ezdezdez.png</RelativePath>
<AssetKind>All</AssetKind>
<AssetMode>All</AssetMode>
<AssetRole>Primary</AssetRole>
<RelatedAsset></RelatedAsset>
<AssetTraitName></AssetTraitName>
<AssetTraitValue></AssetTraitValue>
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
<OriginalItemSpec>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\images\ezdezdez.png))</OriginalItemSpec>
</StaticWebAsset>
<StaticWebAsset Include="$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\images\luna.png))">
<SourceType>Package</SourceType>
<SourceId>BlazorProject</SourceId>
<ContentRoot>$(MSBuildThisFileDirectory)..\staticwebassets\</ContentRoot>
<BasePath>_content/BlazorProject</BasePath>
<RelativePath>images/luna.png</RelativePath>
<AssetKind>All</AssetKind>
<AssetMode>All</AssetMode>
<AssetRole>Primary</AssetRole>
<RelatedAsset></RelatedAsset>
<AssetTraitName></AssetTraitName>
<AssetTraitValue></AssetTraitValue>
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
<OriginalItemSpec>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\images\luna.png))</OriginalItemSpec>
</StaticWebAsset>
<StaticWebAsset Include="$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\images\zappix.png))">
<SourceType>Package</SourceType>
<SourceId>BlazorProject</SourceId>
<ContentRoot>$(MSBuildThisFileDirectory)..\staticwebassets\</ContentRoot>
<BasePath>_content/BlazorProject</BasePath>
<RelativePath>images/zappix.png</RelativePath>
<AssetKind>All</AssetKind>
<AssetMode>All</AssetMode>
<AssetRole>Primary</AssetRole>
<RelatedAsset></RelatedAsset>
<AssetTraitName></AssetTraitName>
<AssetTraitValue></AssetTraitValue>
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
<OriginalItemSpec>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\images\zappix.png))</OriginalItemSpec>
</StaticWebAsset>
</ItemGroup>
</Project>

File diff suppressed because it is too large Load Diff

@ -1,8 +1,108 @@
{
"version": 2,
"dgSpecHash": "AxK+idlSZGbBH2FxxwJbQ+gNWvt9FYkIhKM+I8W3NHIN1+dLSDm2boXOdFUDqVFSG5Rji+n1esxmtrL5upSAKg==",
"dgSpecHash": "xkzd0AHyvyeCPPY5ZiBhuxacteCeoX+p7l9ftOUAvwJYrSb6AhTzDGYQJ8rc98Dv9tTd2Qs94zAsp/AIzl5K5A==",
"success": true,
"projectFilePath": "/Users/tonyfages/2A/Blazor/BlazorProject/BlazorProject/BlazorProject.csproj",
"expectedPackageFiles": [],
"projectFilePath": "/Users/tonyfages/2A/Blazor/BlazorApp/BlazorProject/BlazorProject/BlazorProject.csproj",
"expectedPackageFiles": [
"/Users/tonyfages/.nuget/packages/blazored.localstorage/4.4.0/blazored.localstorage.4.4.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/blazored.localstorage.testextensions/4.4.0/blazored.localstorage.testextensions.4.4.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/blazored.modal/7.1.0/blazored.modal.7.1.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/blazorise/1.4.0/blazorise.1.4.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/blazorise.bootstrap/1.4.0/blazorise.bootstrap.1.4.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/blazorise.datagrid/1.4.0/blazorise.datagrid.1.4.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/blazorise.icons.fontawesome/1.4.0/blazorise.icons.fontawesome.1.4.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/blazorise.licensing/1.2.0/blazorise.licensing.1.2.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/bunit.core/1.12.6/bunit.core.1.12.6.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/deepcloner/0.10.4/deepcloner.0.10.4.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/microsoft.aspnetcore.authorization/6.0.25/microsoft.aspnetcore.authorization.6.0.25.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/microsoft.aspnetcore.components/6.0.25/microsoft.aspnetcore.components.6.0.25.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/microsoft.aspnetcore.components.analyzers/6.0.25/microsoft.aspnetcore.components.analyzers.6.0.25.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/microsoft.aspnetcore.components.forms/6.0.25/microsoft.aspnetcore.components.forms.6.0.25.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/microsoft.aspnetcore.components.web/6.0.25/microsoft.aspnetcore.components.web.6.0.25.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/microsoft.aspnetcore.metadata/6.0.25/microsoft.aspnetcore.metadata.6.0.25.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/microsoft.extensions.dependencyinjection/6.0.1/microsoft.extensions.dependencyinjection.6.0.1.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/microsoft.extensions.dependencyinjection.abstractions/6.0.0/microsoft.extensions.dependencyinjection.abstractions.6.0.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/microsoft.extensions.logging/6.0.0/microsoft.extensions.logging.6.0.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/microsoft.extensions.logging.abstractions/6.0.4/microsoft.extensions.logging.abstractions.6.0.4.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/microsoft.extensions.options/6.0.0/microsoft.extensions.options.6.0.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/microsoft.extensions.primitives/6.0.0/microsoft.extensions.primitives.6.0.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/microsoft.jsinterop/6.0.25/microsoft.jsinterop.6.0.25.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/microsoft.jsinterop.webassembly/6.0.3/microsoft.jsinterop.webassembly.6.0.3.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/microsoft.netcore.platforms/1.1.0/microsoft.netcore.platforms.1.1.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/microsoft.netcore.targets/1.1.0/microsoft.netcore.targets.1.1.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/microsoft.win32.primitives/4.3.0/microsoft.win32.primitives.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/netstandard.library/1.6.1/netstandard.library.1.6.1.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl/4.3.0/runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl/4.3.0/runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl/4.3.0/runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/runtime.native.system/4.3.0/runtime.native.system.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/runtime.native.system.io.compression/4.3.0/runtime.native.system.io.compression.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/runtime.native.system.net.http/4.3.0/runtime.native.system.net.http.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/runtime.native.system.security.cryptography.apple/4.3.0/runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/runtime.native.system.security.cryptography.openssl/4.3.0/runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl/4.3.0/runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl/4.3.0/runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple/4.3.0/runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0/runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl/4.3.0/runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0/runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0/runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0/runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.appcontext/4.3.0/system.appcontext.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.buffers/4.3.0/system.buffers.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.collections/4.3.0/system.collections.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.collections.concurrent/4.3.0/system.collections.concurrent.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.console/4.3.0/system.console.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.diagnostics.debug/4.3.0/system.diagnostics.debug.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.diagnostics.diagnosticsource/6.0.0/system.diagnostics.diagnosticsource.6.0.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.diagnostics.tools/4.3.0/system.diagnostics.tools.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.diagnostics.tracing/4.3.0/system.diagnostics.tracing.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.globalization/4.3.0/system.globalization.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.globalization.calendars/4.3.0/system.globalization.calendars.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.globalization.extensions/4.3.0/system.globalization.extensions.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.io/4.3.0/system.io.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.io.compression/4.3.0/system.io.compression.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.io.compression.zipfile/4.3.0/system.io.compression.zipfile.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.io.filesystem/4.3.0/system.io.filesystem.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.io.filesystem.primitives/4.3.0/system.io.filesystem.primitives.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.io.pipelines/6.0.3/system.io.pipelines.6.0.3.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.linq/4.3.0/system.linq.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.linq.expressions/4.3.0/system.linq.expressions.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.net.http/4.3.0/system.net.http.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.net.primitives/4.3.0/system.net.primitives.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.net.sockets/4.3.0/system.net.sockets.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.objectmodel/4.3.0/system.objectmodel.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.reflection/4.3.0/system.reflection.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.reflection.emit/4.3.0/system.reflection.emit.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.reflection.emit.ilgeneration/4.3.0/system.reflection.emit.ilgeneration.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.reflection.emit.lightweight/4.3.0/system.reflection.emit.lightweight.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.reflection.extensions/4.3.0/system.reflection.extensions.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.reflection.primitives/4.3.0/system.reflection.primitives.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.reflection.typeextensions/4.3.0/system.reflection.typeextensions.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.resources.resourcemanager/4.3.0/system.resources.resourcemanager.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.runtime/4.3.0/system.runtime.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.runtime.compilerservices.unsafe/6.0.0/system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.runtime.extensions/4.3.0/system.runtime.extensions.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.runtime.handles/4.3.0/system.runtime.handles.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.runtime.interopservices/4.3.0/system.runtime.interopservices.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.runtime.interopservices.runtimeinformation/4.3.0/system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.runtime.numerics/4.3.0/system.runtime.numerics.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.security.cryptography.algorithms/4.3.0/system.security.cryptography.algorithms.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.security.cryptography.cng/4.3.0/system.security.cryptography.cng.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.security.cryptography.csp/4.3.0/system.security.cryptography.csp.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.security.cryptography.encoding/4.3.0/system.security.cryptography.encoding.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.security.cryptography.openssl/4.3.0/system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.security.cryptography.primitives/4.3.0/system.security.cryptography.primitives.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.security.cryptography.x509certificates/4.3.0/system.security.cryptography.x509certificates.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.text.encoding/4.3.0/system.text.encoding.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.text.encoding.extensions/4.3.0/system.text.encoding.extensions.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.text.regularexpressions/4.3.0/system.text.regularexpressions.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.threading/4.3.0/system.threading.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.threading.tasks/4.3.0/system.threading.tasks.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.threading.tasks.extensions/4.3.0/system.threading.tasks.extensions.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.threading.timer/4.3.0/system.threading.timer.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.xml.readerwriter/4.3.0/system.xml.readerwriter.4.3.0.nupkg.sha512",
"/Users/tonyfages/.nuget/packages/system.xml.xdocument/4.3.0/system.xml.xdocument.4.3.0.nupkg.sha512"
],
"logs": []
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

Loading…
Cancel
Save