Vocabulaire fonctionnel :)
continuous-integration/drone/push Build is passing Details

blazor
Antoine JOURDAIN 1 year ago
parent 095eecaaef
commit f414f8c385

@ -0,0 +1,35 @@
using adminBlazor.Models;
namespace adminBlazor.Factories;
public class TranslationFactory
{
public static Translation Create(TranslationModel model)
{
return new Translation
{
Id = model.Id,
FirstWord = model.FirstWord,
SecondWord = model.SecondWord
};
}
public static TranslationModel ToModel(Translation translation)
{
return new TranslationModel
{
Id = translation.Id,
FirstWord = translation.FirstWord,
SecondWord = translation.SecondWord
};
}
public static void Update(Translation item, TranslationModel model)
{
if (!string.IsNullOrEmpty(model.FirstWord))
item.FirstWord = model.FirstWord;
if (!string.IsNullOrEmpty(model.SecondWord))
item.SecondWord = model.SecondWord;
}
}

@ -11,7 +11,7 @@ namespace adminBlazor.Factories
{
public static VocabularyListModel ToModel(VocabularyList voc, byte[] imageContent)
{
return new VocabularyListModel
VocabularyListModel model = new VocabularyListModel
{
Id = voc.Id,
Name = voc.Name,
@ -19,11 +19,22 @@ namespace adminBlazor.Factories
Aut = voc.Aut,
ImageBase64 = string.IsNullOrWhiteSpace(voc.ImageBase64) ? Convert.ToBase64String(imageContent) : voc.ImageBase64
};
model.Translations = new List<TranslationModel>();
foreach (var item in voc.Translations)
{
model.Translations.Add(new TranslationModel
{
Id = item.Id,
FirstWord = item.FirstWord,
SecondWord = item.SecondWord
});
}
return model;
}
public static VocabularyList Create(VocabularyListModel voc)
{
return new VocabularyList
VocabularyList model = new VocabularyList
{
Id = voc.Id,
Name = voc.Name,
@ -31,6 +42,17 @@ namespace adminBlazor.Factories
Aut = voc.Aut,
ImageBase64 = voc.Image != null ? Convert.ToBase64String(voc.Image) : null
};
model.Translations = new List<Translation>();
foreach (var item in voc.Translations)
{
model.Translations.Add(new Translation
{
Id = item.Id,
FirstWord = item.FirstWord,
SecondWord = item.SecondWord
});
}
return model;
}
public static void Update(VocabularyList item, VocabularyListModel voc)
{
@ -42,6 +64,18 @@ namespace adminBlazor.Factories
if (voc.Aut != null)
item.Aut = voc.Aut;
if (voc.Translations == null) return;
item.Translations = new List<Translation>();
foreach (var translation in voc.Translations)
{
item.Translations.Add(new Translation
{
Id = translation.Id,
FirstWord = translation.FirstWord,
SecondWord = translation.SecondWord
});
}
}
}

@ -3,9 +3,9 @@ namespace adminBlazor.Models
{
public class Translation
{
private int Id { get; set; }
private string FirstWord { get; set; }
private string SecondWord { get; set; }
public int Id { get; set; }
public string FirstWord { get; set; }
public string SecondWord { get; set; }
}
}

@ -0,0 +1,11 @@
using System;
namespace adminBlazor.Models
{
public class TranslationModel
{
public int Id { get; set; }
public string FirstWord { get; set; }
public string SecondWord { get; set; }
}
}

@ -9,6 +9,7 @@ namespace adminBlazor.Models
public int? Aut { get; set; }
public string? ImageBase64 { get; set; }
}
public List<Translation>? Translations { get; set; }
}
}

@ -15,6 +15,7 @@ namespace adminBlazor.Models
public int? Aut { get; set; }
public string ImageBase64 { get; set; }
public List<TranslationModel>? Translations { get; set; }
}
}

@ -1,6 +1,7 @@
@page "/editVoc/{Id:int}"
@attribute [Authorize(Roles = "teacher")]
@using adminBlazor.Models
@using Blazorise.Extensions
<h3>Edit</h3>
@ -10,32 +11,41 @@
<EditForm Model="@voc" OnValidSubmit="@HandleValidSubmit">
<DataAnnotationsValidator />
<ValidationSummary />
<<<<<<< HEAD
<p>
<label for="nom">
Name :
<InputText id="nom" @bind-Value="voc.Name" />
<label for="name">
Name:
<InputText id="name" @bind-Value="voc.Name" />
<ValidationMessage For="@(() => voc.Name)" />
</label>
</p>
=======
<p>
<label for="name">
Name:
<InputText id="name" @bind-Value="voc.Name" />
<ValidationMessage For="@(() => voc.Name)" />
</label>
</p>
<p>
<label>
Author
<InputNumber @bind-Value="voc.Aut" />
<ValidationMessage For="@(() => voc.Aut)" />
</label>
</p>
>>>>>>> e13ce594471ea79c152b246fc51c65544632624d
</p>
<h4>Words:</h4>
@if (voc.Translations.IsNullOrEmpty() == false)
{
foreach (var word in voc.Translations)
{
{
<div class="word-container">
<label>
First Word:
<InputText @bind-Value="word.FirstWord"/>
</label>
<label>
Second Word:
<InputText @bind-Value="word.SecondWord"/>
</label>
</div>
<button type="button" @onclick="() => RemoveWord(word)">Remove Word</button>
}
}
}
else
{
<p>No words</p>
}
<button type="button" @onclick="AddWord">Add Word</button>
<button type="submit">Submit</button>
</EditForm>
}

@ -5,6 +5,9 @@ using Blazored.LocalStorage;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Forms;
using Microsoft.AspNetCore.Hosting;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
namespace adminBlazor.Pages
@ -23,8 +26,6 @@ namespace adminBlazor.Pages
[Inject]
public IWebHostEnvironment WebHostEnvironment { get; set; }
public VocabularyList currVoc;
private VocabularyListModel voc = new VocabularyListModel();
private async void HandleValidSubmit()
@ -44,8 +45,21 @@ namespace adminBlazor.Pages
}
}
private void AddWord()
{
if (voc.Translations == null)
{
voc.Translations = new List<TranslationModel>();
}
voc.Translations.Add(new TranslationModel());
}
private void RemoveWord(TranslationModel word)
{
voc.Translations.Remove(word);
}
protected async Task OnInitializedAsync()
protected override async Task OnInitializedAsync()
{
var item = await VocListService.GetById(Id);
@ -54,4 +68,4 @@ namespace adminBlazor.Pages
voc = VocListFactory.ToModel(item,fileContent);
}
}
}
}

@ -26,7 +26,7 @@
}
else
{
<img src="images/default.jpeg" class="img-thumbnail" style="max-width: 150px" />
<img src="images/words.jpg" class="img-thumbnail" style="max-width: 150px" />
}
</DisplayTemplate>
</DataGridColumn>

@ -49,7 +49,7 @@ namespace adminBlazor.Services
var originalList = await _http.GetFromJsonAsync<VocabularyList[]>($"{_navigationManager.BaseUri}voc.json");
await _localStorage.SetItemAsync("voc", originalList);
}
return (await _localStorage.GetItemAsync<VocabularyList[]>("voc")).Length;
}
@ -62,6 +62,7 @@ namespace adminBlazor.Services
{
// this code add in the local storage the fake data
var originalData = await _http.GetFromJsonAsync<VocabularyList[]>($"{_navigationManager.BaseUri}voc.json");
await _localStorage.SetItemAsync("voc", originalData);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

@ -2,20 +2,24 @@
{
"id": 1,
"name": "Entreprise",
"image": "link",
"image": null,
"aut": null,
"words" : [{
"translations" : [{
"id": 1,
"firstWord" : "baguette",
"secondWord" : "pain"
}]
"firstWord" : "pain",
"secondWord" : "bread"
},
{"id": 1,
"firstWord" : "vin",
"secondWord" : "wine"
}]
},
{
"id": 2,
"name": "Animaux",
"image": "link",
"image": null,
"aut" : 1,
"words": [{
"translations": [{
"id": 1,
"firstWord" : "baguette",
"secondWord" : "pain"

Loading…
Cancel
Save