mirror of
https://github.com/claunia/marechai.git
synced 2025-12-16 19:14:25 +00:00
Optimize view of companies.
This commit is contained in:
@@ -30,8 +30,10 @@
|
||||
|
||||
using System.Linq;
|
||||
using Cicm.Database.Models;
|
||||
using cicm_web.Models;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace cicm_web.Controllers
|
||||
{
|
||||
@@ -56,9 +58,16 @@ namespace cicm_web.Controllers
|
||||
ViewBag.Letter = id;
|
||||
|
||||
ViewBag.WebRootPath = hostingEnvironment.WebRootPath;
|
||||
return View(id == '\0'
|
||||
? _context.Companies.ToArray()
|
||||
: _context.Companies.Where(c => c.Name.StartsWith(id)).ToArray());
|
||||
|
||||
if(id == '\0') return RedirectToAction(nameof(Index));
|
||||
|
||||
return View(_context.Companies.Include(c => c.Logos).Where(c => c.Name.StartsWith(id)).OrderBy(c => c.Name)
|
||||
.Select(c => new CompanyViewModel
|
||||
{
|
||||
Id = c.Id,
|
||||
LastLogo = c.Logos.OrderByDescending(l => l.Year).FirstOrDefault().Guid,
|
||||
Name = c.Name
|
||||
}).ToList());
|
||||
}
|
||||
|
||||
public IActionResult View(int id)
|
||||
@@ -77,16 +86,33 @@ namespace cicm_web.Controllers
|
||||
{
|
||||
ViewBag.Iso3166 = _context.Iso31661Numeric.FirstOrDefault(i => i.Id == id);
|
||||
|
||||
if(ViewBag.Iso3166 is null) RedirectToAction(nameof(Index));
|
||||
|
||||
ViewBag.WebRootPath = hostingEnvironment.WebRootPath;
|
||||
return View(ViewBag.Iso3166 == null
|
||||
? _context.Companies.ToArray()
|
||||
: _context.Companies.Where(c => c.CountryId == id).ToArray());
|
||||
return View(_context.Companies.Include(c => c.Logos).Where(c => c.CountryId == id).OrderBy(c => c.Name)
|
||||
.Select(c => new CompanyViewModel
|
||||
{
|
||||
Id = c.Id,
|
||||
LastLogo = c.Logos.OrderByDescending(l => l.Year).FirstOrDefault().Guid,
|
||||
Name = c.Name
|
||||
}).ToList());
|
||||
}
|
||||
|
||||
public IActionResult Index()
|
||||
{
|
||||
ViewBag.WebRootPath = hostingEnvironment.WebRootPath;
|
||||
return View(_context.Companies.ToArray());
|
||||
|
||||
return View(_context.Companies.Include(c => c.Logos).OrderBy(c => c.Name).Select(c => new CompanyViewModel
|
||||
{
|
||||
Id = c.Id,
|
||||
LastLogo = c
|
||||
.Logos
|
||||
.OrderByDescending(l =>
|
||||
l.Year)
|
||||
.FirstOrDefault()
|
||||
.Guid,
|
||||
Name = c.Name
|
||||
}).ToList());
|
||||
}
|
||||
}
|
||||
}
|
||||
11
cicm_web/Models/CompanyViewModel.cs
Normal file
11
cicm_web/Models/CompanyViewModel.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
using System;
|
||||
|
||||
namespace cicm_web.Models
|
||||
{
|
||||
public class CompanyViewModel
|
||||
{
|
||||
public int Id;
|
||||
public Guid? LastLogo;
|
||||
public string Name;
|
||||
}
|
||||
}
|
||||
@@ -32,8 +32,7 @@
|
||||
ViewData["Title"] = "Companies";
|
||||
}
|
||||
@using System.IO
|
||||
@using Cicm.Database.Models
|
||||
@model Cicm.Database.Models.Company[]
|
||||
@model IEnumerable<CompanyViewModel>
|
||||
|
||||
<p align="center">
|
||||
@if(ViewBag.Iso3166 != null)
|
||||
@@ -63,24 +62,24 @@
|
||||
{
|
||||
<p>
|
||||
@Model.Count() companies found in the database.<br />
|
||||
@foreach(Company company in Model)
|
||||
@foreach(CompanyViewModel company in Model)
|
||||
{
|
||||
<a asp-controller="Company"
|
||||
asp-action="View"
|
||||
asp-route-id="@company.Id">
|
||||
@if(company.LastLogo != null && File.Exists(System.IO.Path.Combine(ViewBag.WebRootPath, "assets/logos", company.LastLogo.Guid + ".svg")))
|
||||
@if(company.LastLogo != null && File.Exists(System.IO.Path.Combine(ViewBag.WebRootPath, "assets/logos", company.LastLogo + ".svg")))
|
||||
{
|
||||
<picture>
|
||||
<source type="image/svg+xml"
|
||||
srcset="/assets/logos/@(company.LastLogo.Guid).svg">
|
||||
srcset="/assets/logos/@(company.LastLogo).svg">
|
||||
<source type="image/webp"
|
||||
srcset="/assets/logos/thumbs/webp/1x/@(company.LastLogo.Guid).webp,
|
||||
/assets/logos/thumbs/webp/1x/@(company.LastLogo.Guid).webp 2x,
|
||||
/assets/logos/thumbs/webp/1x/@(company.LastLogo.Guid).webp 3x">
|
||||
<img srcset="/assets/logos/thumbs/png/1x/@(company.LastLogo.Guid).png,
|
||||
/assets/logos/thumbs/png/1x/@(company.LastLogo.Guid).png 2x,
|
||||
/assets/logos/thumbs/png/1x/@(company.LastLogo.Guid).webp 3x"
|
||||
src="/assets/logos/thumbs/png/1x@(company.LastLogo.Guid).png")
|
||||
srcset="/assets/logos/thumbs/webp/1x/@(company.LastLogo).webp,
|
||||
/assets/logos/thumbs/webp/1x/@(company.LastLogo).webp 2x,
|
||||
/assets/logos/thumbs/webp/1x/@(company.LastLogo).webp 3x">
|
||||
<img srcset="/assets/logos/thumbs/png/1x/@(company.LastLogo).png,
|
||||
/assets/logos/thumbs/png/1x/@(company.LastLogo).png 2x,
|
||||
/assets/logos/thumbs/png/1x/@(company.LastLogo).webp 3x"
|
||||
src="/assets/logos/thumbs/png/1x@(company.LastLogo).png")
|
||||
alt=""
|
||||
height="auto"
|
||||
width="auto"
|
||||
|
||||
@@ -32,8 +32,7 @@
|
||||
ViewData["Title"] = "Companies";
|
||||
}
|
||||
@using System.IO
|
||||
@using Cicm.Database.Models
|
||||
@model Cicm.Database.Models.Company[]
|
||||
@model IEnumerable<CompanyViewModel>
|
||||
|
||||
<p>Search results:</p>
|
||||
<p align="center">
|
||||
@@ -47,24 +46,24 @@
|
||||
{
|
||||
<p>
|
||||
@Model.Count() companies found in the database.<br />
|
||||
@foreach(Company company in Model)
|
||||
@foreach(CompanyViewModel company in Model)
|
||||
{
|
||||
<a asp-controller="Company"
|
||||
asp-action="View"
|
||||
asp-route-id="@company.Id">
|
||||
@if(company.LastLogo != null && File.Exists(System.IO.Path.Combine(ViewBag.WebRootPath, "assets/logos", company.LastLogo.Guid + ".svg")))
|
||||
@if(company.LastLogo != null && File.Exists(System.IO.Path.Combine(ViewBag.WebRootPath, "assets/logos", company.LastLogo + ".svg")))
|
||||
{
|
||||
<picture>
|
||||
<source type="image/svg+xml"
|
||||
srcset="/assets/logos/@(company.LastLogo.Guid).svg">
|
||||
srcset="/assets/logos/@(company.LastLogo).svg">
|
||||
<source type="image/webp"
|
||||
srcset="/assets/logos/thumbs/webp/1x/@(company.LastLogo.Guid).webp,
|
||||
/assets/logos/thumbs/webp/1x/@(company.LastLogo.Guid).webp 2x,
|
||||
/assets/logos/thumbs/webp/1x/@(company.LastLogo.Guid).webp 3x">
|
||||
<img srcset="/assets/logos/thumbs/png/1x/@(company.LastLogo.Guid).png,
|
||||
/assets/logos/thumbs/png/1x/@(company.LastLogo.Guid).png 2x,
|
||||
/assets/logos/thumbs/png/1x/@(company.LastLogo.Guid).webp 3x"
|
||||
src="/assets/logos/thumbs/png/1x@(company.LastLogo.Guid).png")
|
||||
srcset="/assets/logos/thumbs/webp/1x/@(company.LastLogo).webp,
|
||||
/assets/logos/thumbs/webp/1x/@(company.LastLogo).webp 2x,
|
||||
/assets/logos/thumbs/webp/1x/@(company.LastLogo).webp 3x">
|
||||
<img srcset="/assets/logos/thumbs/png/1x/@(company.LastLogo).png,
|
||||
/assets/logos/thumbs/png/1x/@(company.LastLogo).png 2x,
|
||||
/assets/logos/thumbs/png/1x/@(company.LastLogo).webp 3x"
|
||||
src="/assets/logos/thumbs/png/1x@(company.LastLogo).png")
|
||||
alt=""
|
||||
height="auto"
|
||||
width="auto"
|
||||
|
||||
@@ -32,32 +32,31 @@
|
||||
ViewData["Title"] = "Companies";
|
||||
}
|
||||
@using System.IO
|
||||
@using Cicm.Database.Models
|
||||
@model Cicm.Database.Models.Company[]
|
||||
@model IEnumerable<CompanyViewModel>
|
||||
|
||||
<p align="center">
|
||||
@if(Model.Any())
|
||||
{
|
||||
<p>
|
||||
@Model.Count() companies found in the database.<br />
|
||||
@foreach(Company company in Model)
|
||||
@foreach(CompanyViewModel company in Model)
|
||||
{
|
||||
<a asp-controller="Company"
|
||||
asp-action="View"
|
||||
asp-route-id="@company.Id">
|
||||
@if(company.LastLogo != null && File.Exists(System.IO.Path.Combine(ViewBag.WebRootPath, "assets/logos", company.LastLogo.Guid + ".svg")))
|
||||
@if(company.LastLogo != null && File.Exists(System.IO.Path.Combine(ViewBag.WebRootPath, "assets/logos", company.LastLogo + ".svg")))
|
||||
{
|
||||
<picture>
|
||||
<source type="image/svg+xml"
|
||||
srcset="/assets/logos/@(company.LastLogo.Guid).svg">
|
||||
srcset="/assets/logos/@(company.LastLogo).svg">
|
||||
<source type="image/webp"
|
||||
srcset="/assets/logos/thumbs/webp/1x/@(company.LastLogo.Guid).webp,
|
||||
/assets/logos/thumbs/webp/1x/@(company.LastLogo.Guid).webp 2x,
|
||||
/assets/logos/thumbs/webp/1x/@(company.LastLogo.Guid).webp 3x">
|
||||
<img srcset="/assets/logos/thumbs/png/1x/@(company.LastLogo.Guid).png,
|
||||
/assets/logos/thumbs/png/1x/@(company.LastLogo.Guid).png 2x,
|
||||
/assets/logos/thumbs/png/1x/@(company.LastLogo.Guid).webp 3x"
|
||||
src="/assets/logos/thumbs/png/1x@(company.LastLogo.Guid).png")
|
||||
srcset="/assets/logos/thumbs/webp/1x/@(company.LastLogo).webp,
|
||||
/assets/logos/thumbs/webp/1x/@(company.LastLogo).webp 2x,
|
||||
/assets/logos/thumbs/webp/1x/@(company.LastLogo).webp 3x">
|
||||
<img srcset="/assets/logos/thumbs/png/1x/@(company.LastLogo).png,
|
||||
/assets/logos/thumbs/png/1x/@(company.LastLogo).png 2x,
|
||||
/assets/logos/thumbs/png/1x/@(company.LastLogo).webp 3x"
|
||||
src="/assets/logos/thumbs/png/1x@(company.LastLogo).png")
|
||||
alt=""
|
||||
height="auto"
|
||||
width="auto"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp2.2</TargetFramework>
|
||||
<Version>3.0.99.550</Version>
|
||||
<Version>3.0.99.557</Version>
|
||||
<Company>Canary Islands Computer Museum</Company>
|
||||
<Copyright>Copyright © 2003-2018 Natalia Portillo</Copyright>
|
||||
<Product>Canary Islands Computer Museum Website</Product>
|
||||
|
||||
Reference in New Issue
Block a user