From f54a8599ea3d2cfa72ed2195895636d6c9cf4cd3 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Mon, 20 May 2019 01:07:06 +0100 Subject: [PATCH] Optimize view of GPUs admin page. --- .../Areas/Admin/Controllers/GpusController.cs | 10 +++- cicm_web/Areas/Admin/Models/GpuViewModel.cs | 53 +++++++++++++++++++ cicm_web/Areas/Admin/Views/Gpus/Index.cshtml | 8 +-- cicm_web/cicm_web.csproj | 2 +- 4 files changed, 67 insertions(+), 6 deletions(-) create mode 100644 cicm_web/Areas/Admin/Models/GpuViewModel.cs diff --git a/cicm_web/Areas/Admin/Controllers/GpusController.cs b/cicm_web/Areas/Admin/Controllers/GpusController.cs index 078cf7a0..52a3c7bd 100644 --- a/cicm_web/Areas/Admin/Controllers/GpusController.cs +++ b/cicm_web/Areas/Admin/Controllers/GpusController.cs @@ -31,6 +31,7 @@ using System.Linq; using System.Threading.Tasks; using Cicm.Database.Models; +using cicm_web.Areas.Admin.Models; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Rendering; @@ -55,7 +56,14 @@ namespace cicm_web.Areas.Admin.Controllers { IIncludableQueryable cicmContext = _context.Gpus.Include(g => g.Company); return View(await cicmContext.OrderBy(g => g.Company.Name).ThenBy(g => g.Name).ThenBy(g => g.Introduced) - .ToListAsync()); + .Select(g => new GpuViewModel + { + Id = g.Id, + Company = g.Company.Name, + Introduced = g.Introduced, + ModelCode = g.ModelCode, + Name = g.Name + }).ToListAsync()); } // GET: Admin/Gpus/Details/5 diff --git a/cicm_web/Areas/Admin/Models/GpuViewModel.cs b/cicm_web/Areas/Admin/Models/GpuViewModel.cs new file mode 100644 index 00000000..0b1033c6 --- /dev/null +++ b/cicm_web/Areas/Admin/Models/GpuViewModel.cs @@ -0,0 +1,53 @@ +/****************************************************************************** +// Canary Islands Computer Museum Website +// ---------------------------------------------------------------------------- +// +// Filename : Gpu.cs +// Author(s) : Natalia Portillo +// +// --[ Description ] ---------------------------------------------------------- +// +// Describes chips (or chipsets) whose primary function is to generate +// graphics (raster, vectorial, 3D, etc). +// +// --[ License ] -------------------------------------------------------------- +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// ---------------------------------------------------------------------------- +// Copyright © 2003-2018 Natalia Portillo +*******************************************************************************/ + +using System; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace cicm_web.Areas.Admin.Models +{ + public class GpuViewModel + { + public string Company; + public int Id; + [DisplayFormat(DataFormatString = "{0:d}")] + [DataType(DataType.Date)] + public DateTime? Introduced; + [DisplayName("Model code")] + public string ModelCode; + public string Name; + + [NotMapped] + public string IntroducedView => Introduced?.ToShortDateString() ?? "Unknown"; + } +} \ No newline at end of file diff --git a/cicm_web/Areas/Admin/Views/Gpus/Index.cshtml b/cicm_web/Areas/Admin/Views/Gpus/Index.cshtml index 8adfa518..a0b3a517 100644 --- a/cicm_web/Areas/Admin/Views/Gpus/Index.cshtml +++ b/cicm_web/Areas/Admin/Views/Gpus/Index.cshtml @@ -29,8 +29,8 @@ // Copyright © 2003-2018 Natalia Portillo *******************************************************************************/ } -@using Cicm.Database.Models -@model IEnumerable +@using cicm_web.Areas.Admin.Models +@model IEnumerable @{ ViewData["Title"] = "GPUs (Admin)"; @@ -63,11 +63,11 @@ - @foreach(Gpu item in Model) + @foreach(GpuViewModel item in Model) { - @Html.DisplayFor(modelItem => item.Company.Name) + @Html.DisplayFor(modelItem => item.Company) @Html.DisplayFor(modelItem => item.Name) diff --git a/cicm_web/cicm_web.csproj b/cicm_web/cicm_web.csproj index 22220f66..67b4e26a 100644 --- a/cicm_web/cicm_web.csproj +++ b/cicm_web/cicm_web.csproj @@ -2,7 +2,7 @@ netcoreapp2.2 - 3.0.99.548 + 3.0.99.549 Canary Islands Computer Museum Copyright © 2003-2018 Natalia Portillo Canary Islands Computer Museum Website