BugWASMI18N/BlazorWebassemblyI18n/Pages/EmployeeData.razor

119 lines
3.9 KiB
Plaintext
Raw Permalink Normal View History

2020-10-19 12:56:40 +00:00
@page "/employee"
@using Newtonsoft.Json;
2021-09-23 16:58:52 +00:00
@using R = BlazorWebassemblyI18n.Resources;
2020-10-19 12:56:40 +00:00
@inject IJSRuntime JSRuntime
@inject Microsoft.Extensions.Localization.IStringLocalizer<App> Localize
2021-09-23 16:58:52 +00:00
@implements IMessage
2020-10-19 12:56:40 +00:00
2020-11-28 14:34:38 +00:00
<h1>@title</h1>
2020-10-19 12:56:40 +00:00
<br />
<EditForm Model="@employee" OnSubmit="SaveEmployeeToLocalStorage">
<div class="row">
<div class="col-md-4">
<div class="form-group">
<label class="control-label col-md-12">@Localize["Name"]</label>
<input class="form-control" @bind="employee.Name" />
</div>
<div class="form-group">
<label class="control-label col-md-12">@Localize["Gender"]</label>
<select class="form-control" @bind="employee.Gender">
<option value="">@Localize["Select Gender"]</option>
<option value="Male">@Localize["Male"]</option>
<option value="Female">@Localize["Female"]</option>
</select>
</div>
</div>
<div class="col-md-4">
<div class="form-group">
2021-09-23 16:58:52 +00:00
<label class="control-label col-md-12">@R.App.City</label>
2020-10-19 12:56:40 +00:00
<input class="form-control" @bind="employee.City" />
</div>
<div class="form-group">
2021-09-23 16:58:52 +00:00
<label class="control-label col-md-12">@R.App.Salary</label>
2020-10-19 12:56:40 +00:00
<input type="number" class="form-control" @bind="employee.Salary" />
</div>
</div>
</div>
<button type="submit" class="btn btn-primary">Save</button>
</EditForm>
<hr />
<div class="row">
<div class="col-md-8">
<table class='table'>
<thead class="table-active">
<tr>
@foreach (string header in TableHeader)
{
<th>
@Localize[header]
</th>
}
</tr>
</thead>
<tbody>
@foreach (Employee emp in lstEmployees)
{
<tr>
<td>@emp.Name</td>
<td>@Localize[emp.Gender]</td>
<td>@emp.City</td>
<td>@emp.Salary.ToString("C2")</td>
<td>@emp.JoiningDate</td>
</tr>
}
</tbody>
</table>
</div>
</div>
@code{
2021-09-23 16:58:52 +00:00
[Inject] private SessionManager sessionManager { get; set; }
2020-10-19 12:56:40 +00:00
Employee employee = new Employee();
List<Employee> lstEmployees = new List<Employee>();
2021-09-23 16:58:52 +00:00
string title => string.Format(R.App.Title, companyName);
2020-11-28 14:34:38 +00:00
string companyName = "Phrase";
2020-10-19 12:56:40 +00:00
string[] TableHeader = { "Name", "Gender", "City", "Salary", "Joining Date" };
protected override async Task OnInitializedAsync()
{
var empGetJS = (IJSInProcessRuntime)JSRuntime;
var empList = await empGetJS.InvokeAsync<string>("employeeData.get");
FetchEmployeeFromLocalStorage(empList);
2021-09-23 16:58:52 +00:00
sessionManager.Register(this);
2020-10-19 12:56:40 +00:00
}
void SaveEmployeeToLocalStorage()
{
employee.JoiningDate = DateTime.Now;
lstEmployees.Add(employee);
var empSetJS = (IJSInProcessRuntime)JSRuntime;
empSetJS.InvokeVoid("employeeData.set", JsonConvert.SerializeObject(lstEmployees));
employee = new Employee();
}
2021-09-23 16:58:52 +00:00
public Task ReceiveMessage(string message)
{
this.StateHasChanged();
return Task.CompletedTask;
}
2020-10-19 12:56:40 +00:00
void FetchEmployeeFromLocalStorage(string empList)
{
if (empList != null)
{
lstEmployees = JsonConvert.DeserializeObject<List<Employee>>(empList);
}
}
class Employee
{
public string Name { get; set; }
public string Gender { get; set; }
public string City { get; set; }
public int Salary { get; set; }
public DateTime JoiningDate { get; set; }
}
}