diff --git a/Marechai/Marechai.csproj b/Marechai/Marechai.csproj index be819393..cba2f9bd 100644 --- a/Marechai/Marechai.csproj +++ b/Marechai/Marechai.csproj @@ -2,7 +2,7 @@ netcoreapp3.1 - 3.0.99.1062 + 3.0.99.1063 Canary Islands Computer Museum Copyright © 2003-2020 Natalia Portillo Canary Islands Computer Museum Website @@ -73,6 +73,9 @@ true + + true + <_ContentIncludedByDefault Remove="Areas\Admin\Views\BrowserTests\Delete.cshtml" /> diff --git a/Marechai/Pages/Admin/Index.razor b/Marechai/Pages/Admin/Index.razor index 333e2ffd..223fe265 100644 --- a/Marechai/Pages/Admin/Index.razor +++ b/Marechai/Pages/Admin/Index.razor @@ -71,6 +71,9 @@
  • @L["News"]
  • +
  • + @L["Processors"] +
  • diff --git a/Marechai/Areas/Admin/Views/Processors/Index.cshtml b/Marechai/Pages/Admin/Processors.razor similarity index 55% rename from Marechai/Areas/Admin/Views/Processors/Index.cshtml rename to Marechai/Pages/Admin/Processors.razor index 79ac3058..98929224 100644 --- a/Marechai/Areas/Admin/Views/Processors/Index.cshtml +++ b/Marechai/Pages/Admin/Processors.razor @@ -1,14 +1,14 @@ -@{ - /****************************************************************************** +@{ +/****************************************************************************** // MARECHAI: Master repository of computing history artifacts information // ---------------------------------------------------------------------------- // -// Filename : Index.cshtml +// Filename : Processors.razor // Author(s) : Natalia Portillo // // --[ Description ] ---------------------------------------------------------- // -// Admin view index +// List of processors // // --[ License ] -------------------------------------------------------------- // @@ -29,69 +29,86 @@ // Copyright © 2003-2020 Natalia Portillo *******************************************************************************/ } -@model IEnumerable -@{ - ViewData["Title"] = "Processors (Admin)"; +@page "/admin/processors" +@using Marechai.Database.Models +@inherits OwningComponentBase +@inject IStringLocalizer L +@attribute [Authorize(Roles = "UberAdmin, Admin")] +

    @L["Processors"]

    +@if (_processors is null) +{ +

    @L["Loading..."]

    + + return; } -

    Processors

    - - Create new - + + @L["Create new"] +

    - @foreach (var item in Model) + @foreach (var item in _processors) { } -
    - @Html.DisplayNameFor(model => model.Company) + @L["Company"] - @Html.DisplayNameFor(model => model.Name) + @L["Name"] - @Html.DisplayNameFor(model => model.ModelCode) + @L["Model code"] - @Html.DisplayNameFor(model => model.Introduced) + @L["Introduced"] - @Html.DisplayNameFor(model => model.InstructionSet) + @L["Instruction set"]
    - @Html.DisplayFor(modelItem => item.Company) + @item.CompanyName - @Html.DisplayFor(modelItem => item.Name) + @item.Name - @Html.DisplayFor(modelItem => item.ModelCode) + @item.ModelCode - @Html.DisplayFor(modelItem => item.IntroducedView) + @item.IntroducedView - @Html.DisplayFor(modelItem => item.InstructionSet) + @item.InstructionSet - - Details - - - Edit - - - Delete - + + @L["Details"] + + + @L["Edit"] + + + @L["Delete"] +
    \ No newline at end of file + + +@code +{ + List _processors; + + protected override async Task OnInitializedAsync() + { + _processors = await Service.GetAsync(); + } +} \ No newline at end of file diff --git a/Marechai/Resources/Services/AdminService.es.resx b/Marechai/Resources/Services/AdminService.es.resx index 19758c27..111ebae6 100644 --- a/Marechai/Resources/Services/AdminService.es.resx +++ b/Marechai/Resources/Services/AdminService.es.resx @@ -194,4 +194,8 @@ Noticias News. + + Procesadores + Processors. + \ No newline at end of file diff --git a/Marechai/Resources/Services/ProcessorsService.es.resx b/Marechai/Resources/Services/ProcessorsService.es.resx new file mode 100644 index 00000000..bafb8182 --- /dev/null +++ b/Marechai/Resources/Services/ProcessorsService.es.resx @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Procesadores + Processors + + + Cargando... + Message that appears while data is being loaded from database + + + Nombre + Name + + + Compañía + Company + + + Introducido el + Introduced + + + Modelo + Model code + + + Arquitectura + Instruction set + + + Crear nuevo + Create new + + + Detalles + Details + + + Editar + Edit + + + Eliminar + Delete + + \ No newline at end of file diff --git a/Marechai/Services/MachinesService.cs b/Marechai/Services/MachinesService.cs index 814bbc47..ce33f578 100644 --- a/Marechai/Services/MachinesService.cs +++ b/Marechai/Services/MachinesService.cs @@ -12,11 +12,14 @@ namespace Marechai.Services { readonly MarechaiContext _context; readonly IStringLocalizer _l; + readonly ProcessorsService _processorsService; - public MachinesService(MarechaiContext context, IStringLocalizer localizer) + public MachinesService(MarechaiContext context, IStringLocalizer localizer, + ProcessorsService processorsService) { - _context = context; - _l = localizer; + _context = context; + _l = localizer; + _processorsService = processorsService; } public async Task> GetAsync() => @@ -80,28 +83,7 @@ namespace Marechai.Services Type = m.Type, Usage = m.Usage, Size = m.Size, Speed = m.Speed }).ToListAsync(); - model.Processors = await _context.ProcessorsByMachine.Where(p => p.MachineId == machine.Id). - Select(p => new ProcessorViewModel - { - Name = p.Processor.Name, CompanyName = p.Processor.Company.Name, - CompanyId = p.Processor.Company.Id, ModelCode = p.Processor.ModelCode, - Introduced = p.Processor.Introduced, Speed = p.Speed, - Package = p.Processor.Package, Gprs = p.Processor.Gprs, - GprSize = p.Processor.GprSize, Fprs = p.Processor.Fprs, - FprSize = p.Processor.FprSize, Cores = p.Processor.Cores, - ThreadsPerCore = p.Processor.ThreadsPerCore, - Process = p.Processor.Process, ProcessNm = p.Processor.ProcessNm, - DieSize = p.Processor.DieSize, Transistors = p.Processor.Transistors, - DataBus = p.Processor.DataBus, AddrBus = p.Processor.AddrBus, - SimdRegisters = p.Processor.SimdRegisters, - SimdSize = p.Processor.SimdSize, - L1Instruction = p.Processor.L1Instruction, - L1Data = p.Processor.L1Data, L2 = p.Processor.L2, L3 = p.Processor.L3, - InstructionSet = p.Processor.InstructionSet.Name, - InstructionSetExtensions = - p.Processor.InstructionSetExtensions. - Select(e => e.Extension.Extension).ToList() - }).ToListAsync(); + model.Processors = await _processorsService.GetByMachineAsync(machine.Id); model.SoundSynthesizers = await _context.SoundByMachine.Where(s => s.MachineId == machine.Id).Select(s => s.SoundSynth). diff --git a/Marechai/Services/ProcessorsService.cs b/Marechai/Services/ProcessorsService.cs new file mode 100644 index 00000000..fd9cabe8 --- /dev/null +++ b/Marechai/Services/ProcessorsService.cs @@ -0,0 +1,45 @@ +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Marechai.Database.Models; +using Marechai.ViewModels; +using Microsoft.EntityFrameworkCore; + +namespace Marechai.Services +{ + public class ProcessorsService + { + readonly MarechaiContext _context; + + public ProcessorsService(MarechaiContext context) => _context = context; + + public async Task> GetAsync() => + await _context.Processors.Select(p => new ProcessorViewModel + { + Name = p.Name, CompanyName = p.Company.Name, CompanyId = p.Company.Id, ModelCode = p.ModelCode, + Introduced = p.Introduced, Speed = p.Speed, Package = p.Package, Gprs = p.Gprs, + GprSize = p.GprSize, Fprs = p.Fprs, FprSize = p.FprSize, Cores = p.Cores, + ThreadsPerCore = p.ThreadsPerCore, Process = p.Process, ProcessNm = p.ProcessNm, DieSize = p.DieSize, + Transistors = p.Transistors, DataBus = p.DataBus, AddrBus = p.AddrBus, SimdRegisters = p.SimdRegisters, + SimdSize = p.SimdSize, L1Instruction = p.L1Instruction, L1Data = p.L1Data, L2 = p.L2, + L3 = p.L3, InstructionSet = p.InstructionSet.Name, + InstructionSetExtensions = p.InstructionSetExtensions.Select(e => e.Extension.Extension).ToList() + }).ToListAsync(); + + public async Task> GetByMachineAsync(int machineId) => + await _context.ProcessorsByMachine.Where(p => p.MachineId == machineId).Select(p => new ProcessorViewModel + { + Name = p.Processor.Name, CompanyName = p.Processor.Company.Name, CompanyId = p.Processor.Company.Id, + ModelCode = p.Processor.ModelCode, Introduced = p.Processor.Introduced, Speed = p.Speed, + Package = p.Processor.Package, Gprs = p.Processor.Gprs, GprSize = p.Processor.GprSize, + Fprs = p.Processor.Fprs, FprSize = p.Processor.FprSize, Cores = p.Processor.Cores, + ThreadsPerCore = p.Processor.ThreadsPerCore, Process = p.Processor.Process, + ProcessNm = p.Processor.ProcessNm, DieSize = p.Processor.DieSize, Transistors = p.Processor.Transistors, + DataBus = p.Processor.DataBus, AddrBus = p.Processor.AddrBus, SimdRegisters = p.Processor.SimdRegisters, + SimdSize = p.Processor.SimdSize, L1Instruction = p.Processor.L1Instruction, L1Data = p.Processor.L1Data, + L2 = p.Processor.L2, L3 = p.Processor.L3, InstructionSet = p.Processor.InstructionSet.Name, + InstructionSetExtensions = + p.Processor.InstructionSetExtensions.Select(e => e.Extension.Extension).ToList() + }).ToListAsync(); + } +} \ No newline at end of file diff --git a/Marechai/Services/Register.cs b/Marechai/Services/Register.cs index a2492658..d1255270 100644 --- a/Marechai/Services/Register.cs +++ b/Marechai/Services/Register.cs @@ -56,6 +56,7 @@ namespace Marechai.Services services.AddScoped(); services.AddScoped(); services.AddScoped(); + services.AddScoped(); } } } \ No newline at end of file diff --git a/Marechai/ViewModels/ProcessorViewModel.cs b/Marechai/ViewModels/ProcessorViewModel.cs index a1fe86a0..a82e95d8 100644 --- a/Marechai/ViewModels/ProcessorViewModel.cs +++ b/Marechai/ViewModels/ProcessorViewModel.cs @@ -32,5 +32,7 @@ namespace Marechai.ViewModels public string InstructionSet { get; set; } public List InstructionSetExtensions { get; set; } public int? CompanyId { get; set; } + + public string IntroducedView => Introduced?.ToShortDateString() ?? "Unknown"; } } \ No newline at end of file