parent
39ec338631
commit
eb06a358c4
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,70 @@
|
|||||||
|
@page "/add"
|
||||||
|
@using TpBlazorr2.Models;
|
||||||
|
|
||||||
|
<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,127 @@
|
|||||||
|
using Blazored.LocalStorage;
|
||||||
|
using Microsoft.AspNetCore.Components.Forms;
|
||||||
|
using Microsoft.AspNetCore.Components;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.AspNetCore.Mvc.RazorPages;
|
||||||
|
using TpBlazorr2.Models;
|
||||||
|
|
||||||
|
namespace TpBlazorr2.Pages
|
||||||
|
{
|
||||||
|
public partial class Add
|
||||||
|
{
|
||||||
|
|
||||||
|
[Inject]
|
||||||
|
public NavigationManager NavigationManager { get; set; }
|
||||||
|
[Inject]
|
||||||
|
public ILocalStorageService LocalStorage { get; set; }
|
||||||
|
|
||||||
|
[Inject]
|
||||||
|
public IWebHostEnvironment WebHostEnvironment { 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 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" };
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The current item model
|
||||||
|
/// </summary>
|
||||||
|
private ItemModel itemModel = new()
|
||||||
|
{
|
||||||
|
EnchantCategories = new List<string>(),
|
||||||
|
RepairWith = new List<string>()
|
||||||
|
};
|
||||||
|
|
||||||
|
private async void HandleValidSubmit()
|
||||||
|
{
|
||||||
|
// Get the current data
|
||||||
|
var currentData = await LocalStorage.GetItemAsync<List<Item>>("data");
|
||||||
|
|
||||||
|
// Simulate the Id
|
||||||
|
itemModel.Id = currentData.Max(s => s.Id) + 1;
|
||||||
|
|
||||||
|
// Add the item to the current data
|
||||||
|
currentData.Add(new Item
|
||||||
|
{
|
||||||
|
Id = itemModel.Id,
|
||||||
|
DisplayName = itemModel.DisplayName,
|
||||||
|
Name = itemModel.Name,
|
||||||
|
RepairWith = itemModel.RepairWith,
|
||||||
|
EnchantCategories = itemModel.EnchantCategories,
|
||||||
|
MaxDurability = itemModel.MaxDurability,
|
||||||
|
StackSize = itemModel.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}/{itemModel.Name}.png");
|
||||||
|
|
||||||
|
// Write the file content
|
||||||
|
await File.WriteAllBytesAsync(fileName.FullName, itemModel.ImageContent);
|
||||||
|
|
||||||
|
// Save the data
|
||||||
|
await LocalStorage.SetItemAsync("data", currentData);
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
@ -1 +1 @@
|
|||||||
b14e5be04649095aa4ad28b0ad6475ac235be70e
|
85e5a5de048c6759c59ece14ed12455dbccae3d1
|
||||||
|
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 2.2 KiB |
Loading…
Reference in new issue