mirror of
https://github.com/claunia/marechai.git
synced 2025-12-16 19:14:25 +00:00
Fix tables styles in client views. Fixes #17
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||
<Version>4.0.0.1735</Version>
|
||||
<Version>4.0.0.1748</Version>
|
||||
<Company>Canary Islands Computer Museum</Company>
|
||||
<Copyright>Copyright © 2003-2020 Natalia Portillo</Copyright>
|
||||
<Product>Canary Islands Computer Museum Website</Product>
|
||||
|
||||
@@ -105,17 +105,17 @@
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
<div class="col-md">
|
||||
<table>
|
||||
<div class="col-6">
|
||||
<table class="table">
|
||||
<tr>
|
||||
<th colspan="2">
|
||||
<th colspan="2" class="text-center">
|
||||
<b>@_company.Name</b>
|
||||
</th>
|
||||
</tr>
|
||||
@if (_company.Founded.HasValue)
|
||||
{
|
||||
<tr>
|
||||
<th>@L["Founded"]</th>
|
||||
<th class="text-right">@L["Founded"]</th>
|
||||
@if(_company.FoundedMonthIsUnknown)
|
||||
{
|
||||
<td>@_company.Founded.Value.Year.</td>
|
||||
@@ -131,7 +131,7 @@
|
||||
</tr>
|
||||
}
|
||||
<tr>
|
||||
<th>@L["Country"]</th>
|
||||
<th class="text-right">@L["Country"]</th>
|
||||
<td>
|
||||
@if (_company.Country != null)
|
||||
{
|
||||
@@ -158,7 +158,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>@L["Status"]</th>
|
||||
<th class="text-right">@L["Status"]</th>
|
||||
@switch (_company.Status)
|
||||
{
|
||||
case CompanyStatus.Unknown:
|
||||
@@ -279,7 +279,7 @@
|
||||
}
|
||||
</tr>
|
||||
<tr>
|
||||
<th>@L["Address"]</th>
|
||||
<th class="text-right">@L["Address"]</th>
|
||||
<td>
|
||||
@_company.Address<br>
|
||||
@if (_company.City != _company.Province)
|
||||
@@ -293,7 +293,7 @@
|
||||
!string.IsNullOrEmpty(_company.Facebook))
|
||||
{
|
||||
<tr>
|
||||
<th>@L["Links"]</th>
|
||||
<th class="text-right">@L["Links"]</th>
|
||||
<td>
|
||||
@if (!string.IsNullOrEmpty(_company.Website))
|
||||
{
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2003-2020 Natalia Portillo
|
||||
*******************************************************************************/
|
||||
// TODO: Resolutions
|
||||
// TODO: Resolutions
|
||||
}
|
||||
|
||||
@page "/machine/{Id:int}"
|
||||
@@ -33,22 +33,21 @@
|
||||
@inject IWebHostEnvironment Host
|
||||
@inject MachinePhotosService MachinePhotosService
|
||||
|
||||
@if (!_loaded)
|
||||
@if(!_loaded)
|
||||
{
|
||||
<p align="center">@L["Loading..."]</p>
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@if (_machine is null)
|
||||
@if(_machine is null)
|
||||
{
|
||||
<p align="center">@L["Machine not found in database"]</p>
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
<p align="center">
|
||||
@if (_machine.CompanyLogo != null &&
|
||||
@if(_machine.CompanyLogo != null &&
|
||||
File.Exists(Path.Combine(Host.WebRootPath, "assets/logos", _machine.CompanyLogo + ".svg")))
|
||||
{
|
||||
<picture>
|
||||
@@ -64,7 +63,7 @@
|
||||
</p>
|
||||
@{ var counter = 0; }
|
||||
|
||||
@if (_machine.Introduced.HasValue &&
|
||||
@if(_machine.Introduced.HasValue &&
|
||||
_machine.Introduced.Value.Year == 1000)
|
||||
{
|
||||
<b>
|
||||
@@ -73,71 +72,67 @@
|
||||
}
|
||||
<b>
|
||||
<a href="/company/@_machine.CompanyId">
|
||||
@_machine.Company</a> @_machine.Name</b>
|
||||
<table width="100%">
|
||||
@_machine.Company
|
||||
</a> @_machine.Name
|
||||
</b>
|
||||
<table class="table">
|
||||
|
||||
@if (_machine.Introduced.HasValue &&
|
||||
@if(_machine.Introduced.HasValue &&
|
||||
_machine.Introduced.Value.Year != 1000)
|
||||
{
|
||||
<tr>
|
||||
<th scope=row width="37%">
|
||||
<div align=right>
|
||||
<th class="text-right" scope=row style="width: 33%;">
|
||||
@L["Introduction date"]
|
||||
</div>
|
||||
</th>
|
||||
<td width="63%">
|
||||
<td style="width: 67%;">
|
||||
<a asp-controller="Computer" asp-action="ByYear" asp-route-id="@_machine.Introduced.Value.Year">
|
||||
@_machine.Introduced.Value.ToLongDateString()</a>
|
||||
@_machine.Introduced.Value.ToLongDateString()
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
@if (_machine.FamilyId != null)
|
||||
@if(_machine.FamilyId != null)
|
||||
{
|
||||
<tr>
|
||||
<th scope=row width="37%">
|
||||
<div align=right>
|
||||
<th class="text-right" scope=row style="width: 33%;">
|
||||
@L["Family"]
|
||||
</div>
|
||||
</th>
|
||||
<td width="63%">
|
||||
<td style="width: 67%;">
|
||||
<a href="/machines/family/@_machine.FamilyId">
|
||||
@_machine.FamilyName</a>
|
||||
@_machine.FamilyName
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
@if (_machine.Model != null)
|
||||
@if(_machine.Model != null)
|
||||
{
|
||||
<tr>
|
||||
<th scope=row width="37%">
|
||||
<div align=right>
|
||||
<th class="text-right" scope=row style="width: 33%;">
|
||||
@L["Model"]
|
||||
</div>
|
||||
</th>
|
||||
<td width="63%">
|
||||
<td style="width: 67%;">
|
||||
@_machine.Model
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
@if (_machine.Processors.Count > 0)
|
||||
@if(_machine.Processors.Count > 0)
|
||||
{
|
||||
<tr>
|
||||
<th scope=row>
|
||||
<div align=right>
|
||||
<th class="text-right" scope=row style="width: 33%;">
|
||||
@L["Processors"]
|
||||
</div>
|
||||
</th>
|
||||
<td>
|
||||
<table>
|
||||
<td style="width: 67%;">
|
||||
<table class="table table-borderless">
|
||||
@{ counter = 0; }
|
||||
@foreach (var processor in _machine.Processors)
|
||||
@foreach(var processor in _machine.Processors)
|
||||
{
|
||||
int currentCounter = counter;
|
||||
var currentCounter = counter;
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<Collapse Visible="@_processorVisible[currentCounter]">
|
||||
<CollapseHeader>
|
||||
@if (processor.Speed > 0)
|
||||
<collapseheader>
|
||||
@if(processor.Speed > 0)
|
||||
{
|
||||
@(processor.GprSize > 0 ? string.Format(L["{0} @ {1}MHz ({2} bits)"], processor.Name, processor.Speed, processor.GprSize) : string.Format(L["{0} @ {1}MHz"], processor.Name, processor.Speed))
|
||||
}
|
||||
@@ -145,80 +140,78 @@
|
||||
{
|
||||
@($"{processor.Name}")
|
||||
}
|
||||
<span class="btn btn-link" @onclick="() => _processorVisible[currentCounter] = !_processorVisible[currentCounter]">
|
||||
<span class="btn btn-link" @ onclick="() => _processorVisible[currentCounter] = !_processorVisible[currentCounter]">
|
||||
@L["+info"]
|
||||
</span>
|
||||
</CollapseHeader>
|
||||
<CollapseBody Class="card card-body">
|
||||
<table>
|
||||
@if (processor.ModelCode != null &&
|
||||
</collapseheader>
|
||||
<collapsebody Class="card card-body">
|
||||
<table class="table table-borderless">
|
||||
@if(processor.ModelCode != null &&
|
||||
processor.ModelCode != processor.Name)
|
||||
{
|
||||
<tr>
|
||||
<td>@L["Model"]</td>
|
||||
<td>@processor.ModelCode</td>
|
||||
<td class="text-right" style="width: 33%">@L["Model"]</td>
|
||||
<td style="width: 67%;">@processor.ModelCode</td>
|
||||
</tr>
|
||||
}
|
||||
<tr>
|
||||
<td>@L["Manufacturer"]</td>
|
||||
<td>
|
||||
<td class="text-right" style="width: 33%">@L["Manufacturer"]</td>
|
||||
<td style="width: 67%;">
|
||||
<a href="/processors/company/@processor.CompanyId">
|
||||
@processor.CompanyName</a>
|
||||
@processor.CompanyName
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
@if (processor.Introduced != null)
|
||||
@if(processor.Introduced != null)
|
||||
{
|
||||
<tr>
|
||||
<td>@L["Introduction date"]</td>
|
||||
<td>@($"{processor.Introduced:yyyy}")</td>
|
||||
<td class="text-right" style="width: 33%">@L["Introduction date"]</td>
|
||||
<td style="width: 67%;">@($"{processor.Introduced:yyyy}")</td>
|
||||
</tr>
|
||||
}
|
||||
@if (processor.InstructionSet != null)
|
||||
@if(processor.InstructionSet != null)
|
||||
{
|
||||
<tr>
|
||||
<td>@L["Instruction set"]</td>
|
||||
<td>@processor.InstructionSet</td>
|
||||
<td class="text-right" style="width: 33%">@L["Instruction set"]</td>
|
||||
<td style="width: 67%;">@processor.InstructionSet</td>
|
||||
</tr>
|
||||
}
|
||||
@if (processor.Speed > 0)
|
||||
@if(processor.Speed > 0)
|
||||
{
|
||||
<tr>
|
||||
<td>@L["Nominal speed"]</td>
|
||||
<td>@string.Format(L["{0} MHz"], processor.Speed)</td>
|
||||
<td class="text-right" style="width: 33%">@L["Nominal speed"]</td>
|
||||
<td style="width: 67%;">@string.Format(L["{0} MHz"], processor.Speed)</td>
|
||||
</tr>
|
||||
}
|
||||
@if (processor.Gprs > 0 ||
|
||||
@if(processor.Gprs > 0 ||
|
||||
processor.Fprs > 0 ||
|
||||
processor.SimdRegisters > 0)
|
||||
{
|
||||
<tr>
|
||||
<td>@L["Registers"]</td>
|
||||
<td>
|
||||
<table>
|
||||
@if (processor.Gprs > 0)
|
||||
<td class="text-right" style="width: 33%">@L["Registers"]</td>
|
||||
<td style="width: 67%;">
|
||||
<table class="table table-borderless">
|
||||
@if(processor.Gprs > 0)
|
||||
{
|
||||
<tr>
|
||||
<td>
|
||||
@if (processor.FprSize > 0 &&
|
||||
@if(processor.FprSize > 0 &&
|
||||
processor.Fprs == 0 &&
|
||||
processor.SimdSize > 0 &&
|
||||
processor.SimdRegisters == 0)
|
||||
{
|
||||
@(string.Format(L["{0} general purpose registers of {1} bits that can be used as floating point registers of {2} bits and SIMD registers of {3} bits."],
|
||||
processor.Gprs, processor.GprSize, processor.FprSize, processor.SimdSize))
|
||||
@(string.Format(L["{0} general purpose registers of {1} bits that can be used as floating point registers of {2} bits and SIMD registers of {3} bits."], processor.Gprs, processor.GprSize, processor.FprSize, processor.SimdSize))
|
||||
}
|
||||
else if (processor.FprSize > 0 &&
|
||||
else if(processor.FprSize > 0 &&
|
||||
processor.Fprs == 0)
|
||||
{
|
||||
@(string.Format(L["{0} general purpose registers of {1} bits that can be used as floating point registers of {2} bits."],
|
||||
processor.Gprs, processor.GprSize, processor.FprSize))
|
||||
@(string.Format(L["{0} general purpose registers of {1} bits that can be used as floating point registers of {2} bits."], processor.Gprs, processor.GprSize, processor.FprSize))
|
||||
}
|
||||
else if (processor.FprSize == 0 &&
|
||||
else if(processor.FprSize == 0 &&
|
||||
processor.SimdSize > 0 &&
|
||||
processor.SimdRegisters == 0)
|
||||
{
|
||||
@(string.Format(L["{0} general purpose registers of {1} bits that can be used as SIMD registers of {2} bits."],
|
||||
processor.Gprs, processor.GprSize, processor.SimdSize))
|
||||
@(string.Format(L["{0} general purpose registers of {1} bits that can be used as SIMD registers of {2} bits."], processor.Gprs, processor.GprSize, processor.SimdSize))
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -227,25 +220,23 @@
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
@if (processor.Fprs > 0)
|
||||
@if(processor.Fprs > 0)
|
||||
{
|
||||
<tr>
|
||||
<td>
|
||||
@if (processor.SimdSize > 0 &&
|
||||
@if(processor.SimdSize > 0 &&
|
||||
processor.SimdRegisters == 0)
|
||||
{
|
||||
@(string.Format(L["{0} floating point registers of {1} bits that can be used as SIMD registers of {2} bits."],
|
||||
processor.Fprs, processor.FprSize, processor.SimdSize))
|
||||
@(string.Format(L["{0} floating point registers of {1} bits that can be used as SIMD registers of {2} bits."], processor.Fprs, processor.FprSize, processor.SimdSize))
|
||||
}
|
||||
else
|
||||
{
|
||||
@(string.Format(L["{0} floating point registers of {1} bits."],
|
||||
processor.Fprs, processor.FprSize))
|
||||
@(string.Format(L["{0} floating point registers of {1} bits."], processor.Fprs, processor.FprSize))
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
@if (processor.SimdRegisters > 0)
|
||||
@if(processor.SimdRegisters > 0)
|
||||
{
|
||||
<tr>
|
||||
<td>
|
||||
@@ -259,32 +250,32 @@
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
@if (processor.Cores > 1)
|
||||
@if(processor.Cores > 1)
|
||||
{
|
||||
<tr>
|
||||
<td>@L["Multi-core"]</td>
|
||||
<td>@string.Format(L["{0} cores."], processor.Cores)</td>
|
||||
<td class="text-right" style="width: 33%">@L["Multi-core"]</td>
|
||||
<td style="width: 67%;">@string.Format(L["{0} cores."], processor.Cores)</td>
|
||||
</tr>
|
||||
}
|
||||
@if (processor.ThreadsPerCore > 1)
|
||||
@if(processor.ThreadsPerCore > 1)
|
||||
{
|
||||
<tr>
|
||||
<td>
|
||||
<td class="text-right" style="width: 33%">
|
||||
<abbr title="@L["Simultaneous multithreading"]">SMT</abbr>
|
||||
</td>
|
||||
<td>
|
||||
<td style="width: 67%;">
|
||||
@string.Format(processor.Cores > 1 ? L["{0} threads per core."] : L["{0} threads."], processor.ThreadsPerCore)
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
@if (processor.DataBus > 0 ||
|
||||
@if(processor.DataBus > 0 ||
|
||||
processor.AddrBus > 0)
|
||||
{
|
||||
<tr>
|
||||
<td>@L["Bus"]</td>
|
||||
<td>
|
||||
<table>
|
||||
@if (processor.DataBus > 0)
|
||||
<td class="text-right" style="width: 33%">@L["Bus"]</td>
|
||||
<td style="width: 67%;">
|
||||
<table class="table table-borderless">
|
||||
@if(processor.DataBus > 0)
|
||||
{
|
||||
<tr>
|
||||
<td>
|
||||
@@ -292,7 +283,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
@if (processor.AddrBus > 0)
|
||||
@if(processor.AddrBus > 0)
|
||||
{
|
||||
<tr>
|
||||
<td>
|
||||
@@ -305,16 +296,16 @@
|
||||
</tr>
|
||||
}
|
||||
|
||||
@if (processor.L1Instruction > 0 ||
|
||||
@if(processor.L1Instruction > 0 ||
|
||||
processor.L1Data > 0 ||
|
||||
processor.L2 > 0 ||
|
||||
processor.L2 > 0)
|
||||
{
|
||||
<tr>
|
||||
<td>@L["Cache"]</td>
|
||||
<td>
|
||||
<table>
|
||||
@if (processor.L1Instruction > 0)
|
||||
<td class="text-right" style="width: 33%">@L["Cache"]</td>
|
||||
<td style="width: 67%;">
|
||||
<table class="table table-borderless">
|
||||
@if(processor.L1Instruction > 0)
|
||||
{
|
||||
<tr>
|
||||
<td>
|
||||
@@ -322,7 +313,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
@if (processor.L1Data > 0)
|
||||
@if(processor.L1Data > 0)
|
||||
{
|
||||
<tr>
|
||||
<td>
|
||||
@@ -330,7 +321,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
@if (processor.L2 > 0)
|
||||
@if(processor.L2 > 0)
|
||||
{
|
||||
<tr>
|
||||
<td>
|
||||
@@ -338,7 +329,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
@if (processor.L3 > 0)
|
||||
@if(processor.L3 > 0)
|
||||
{
|
||||
<tr>
|
||||
<td>
|
||||
@@ -350,23 +341,23 @@
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
@if (processor.Package != null)
|
||||
@if(processor.Package != null)
|
||||
{
|
||||
<tr>
|
||||
<td>@L["Package"]</td>
|
||||
<td>@processor.Package</td>
|
||||
<td class="text-right" style="width: 33%">@L["Package"]</td>
|
||||
<td style="width: 67%;">@processor.Package</td>
|
||||
</tr>
|
||||
}
|
||||
@if (processor.Process != null ||
|
||||
@if(processor.Process != null ||
|
||||
processor.ProcessNm > 0)
|
||||
{
|
||||
<tr>
|
||||
<td>@L["Manufacturing process"]</td>
|
||||
<td>
|
||||
@if (processor.Process != null &&
|
||||
<td class="text-right" style="width: 33%">@L["Manufacturing process"]</td>
|
||||
<td style="width: 67%;">
|
||||
@if(processor.Process != null &&
|
||||
processor.ProcessNm > 0)
|
||||
{
|
||||
if (processor.ProcessNm > 100)
|
||||
if(processor.ProcessNm > 100)
|
||||
{
|
||||
@(string.Format(L["{0} @ {1}µm"], processor.Process, processor.ProcessNm / 100))
|
||||
}
|
||||
@@ -375,9 +366,9 @@
|
||||
@(string.Format(L["{0} @ {1}nm"], processor.Process, processor.ProcessNm))
|
||||
}
|
||||
}
|
||||
else if (processor.ProcessNm > 0)
|
||||
else if(processor.ProcessNm > 0)
|
||||
{
|
||||
if (processor.ProcessNm > 100)
|
||||
if(processor.ProcessNm > 100)
|
||||
{
|
||||
@(string.Format(L["{0}µm"], processor.ProcessNm / 100))
|
||||
}
|
||||
@@ -393,23 +384,23 @@
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
@if (processor.DieSize > 0)
|
||||
@if(processor.DieSize > 0)
|
||||
{
|
||||
<tr>
|
||||
<td>@L["Die size"]</td>
|
||||
<td>@string.Format(L["{0} mm²"], processor.DieSize)</td>
|
||||
<td class="text-right" style="width: 33%">@L["Die size"]</td>
|
||||
<td style="width: 67%;">@string.Format(L["{0} mm²"], processor.DieSize)</td>
|
||||
</tr>
|
||||
}
|
||||
@if (processor.Transistors > 0)
|
||||
@if(processor.Transistors > 0)
|
||||
{
|
||||
<tr>
|
||||
<td>@L["Transistors"]</td>
|
||||
<td>@processor.Transistors</td>
|
||||
<td class="text-right" style="width: 33%">@L["Transistors"]</td>
|
||||
<td style="width: 67%;">@processor.Transistors</td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
</CollapseBody>
|
||||
</Collapse>
|
||||
</collapsebody>
|
||||
</collapse>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -419,33 +410,31 @@
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
@if (_machine.Memory != null &&
|
||||
@if(_machine.Memory != null &&
|
||||
_machine.Memory.Count > 0)
|
||||
{
|
||||
<tr>
|
||||
<th scope=row>
|
||||
<div align=right>
|
||||
<th class="text-right" scope=row style="width: 33%;">
|
||||
@L["Memory"]
|
||||
</div>
|
||||
</th>
|
||||
<td>
|
||||
<table>
|
||||
@foreach (var memory in _machine.Memory)
|
||||
<td style="width: 67%;">
|
||||
<table class="table table-borderless">
|
||||
@foreach(var memory in _machine.Memory)
|
||||
{
|
||||
string memValue;
|
||||
if (memory.Size > 1073741824)
|
||||
if(memory.Size > 1073741824)
|
||||
{
|
||||
memValue = string.Format(L["{0} GiB"], memory.Size / 1073741824);
|
||||
}
|
||||
else if (memory.Size > 1048576)
|
||||
else if(memory.Size > 1048576)
|
||||
{
|
||||
memValue = string.Format(L["{0} MiB"], memory.Size / 1048576);
|
||||
}
|
||||
else if (memory.Size > 1024)
|
||||
else if(memory.Size > 1024)
|
||||
{
|
||||
memValue = string.Format(L["{0} KiB"], memory.Size / 1024);
|
||||
}
|
||||
else if (memory.Size > 0)
|
||||
else if(memory.Size > 0)
|
||||
{
|
||||
memValue = string.Format(L["{0} bytes"], memory.Size);
|
||||
}
|
||||
@@ -455,19 +444,19 @@
|
||||
}
|
||||
|
||||
string speedValue;
|
||||
if (memory.Speed > 1000000000)
|
||||
if(memory.Speed > 1000000000)
|
||||
{
|
||||
speedValue = string.Format(L["{0} GHz"], memory.Speed / 1000000000);
|
||||
}
|
||||
else if (memory.Speed > 1000000)
|
||||
else if(memory.Speed > 1000000)
|
||||
{
|
||||
speedValue = string.Format(L["{0} MHz"], memory.Speed / 1000000);
|
||||
}
|
||||
else if (memory.Speed > 1000)
|
||||
else if(memory.Speed > 1000)
|
||||
{
|
||||
speedValue = string.Format(L["{0} KHz"], memory.Speed / 1000);
|
||||
}
|
||||
else if (memory.Speed > 0)
|
||||
else if(memory.Speed > 0)
|
||||
{
|
||||
speedValue = string.Format(L["{0} Hz"], memory.Speed);
|
||||
}
|
||||
@@ -484,88 +473,87 @@
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
@if (_machine.Gpus.Count > 0)
|
||||
@if(_machine.Gpus.Count > 0)
|
||||
{
|
||||
<tr>
|
||||
<th scope=row>
|
||||
<div align=right>
|
||||
<th class="text-right" scope=row style="width: 33%;">
|
||||
@L["Graphics processing units"]
|
||||
</div>
|
||||
</th>
|
||||
<td>
|
||||
<table>
|
||||
<td style="width: 67%;">
|
||||
<table class="table table-borderless">
|
||||
@{ counter = 0; }
|
||||
@foreach (var gpu in _machine.Gpus)
|
||||
@foreach(var gpu in _machine.Gpus)
|
||||
{
|
||||
int currentCounter = counter;
|
||||
var currentCounter = counter;
|
||||
|
||||
if (gpu.Id == -2)
|
||||
if(gpu.Id == -2)
|
||||
{
|
||||
<td>
|
||||
<Collapse Visible="@_gpuVisible[currentCounter]">
|
||||
<CollapseHeader>
|
||||
<collapseheader>
|
||||
@L["Framebuffer"]
|
||||
<span class="btn btn-link" @onclick="() => _gpuVisible[currentCounter] = !_gpuVisible[currentCounter]">
|
||||
<span class="btn btn-link" @ onclick="() => _gpuVisible[currentCounter] = !_gpuVisible[currentCounter]">
|
||||
@L["+info"]
|
||||
</span>
|
||||
</CollapseHeader>
|
||||
<CollapseBody Class="card card-body">
|
||||
</collapseheader>
|
||||
<collapsebody Class="card card-body">
|
||||
@L["This machine directly draws pixels from software to a memory region that's converted to video output by a DAC or similar without using any specific graphics processing unit."]
|
||||
</CollapseBody>
|
||||
</Collapse>
|
||||
</collapsebody>
|
||||
</collapse>
|
||||
</td>
|
||||
}
|
||||
else
|
||||
{
|
||||
<td>
|
||||
<Collapse Visible="@_gpuVisible[currentCounter]">
|
||||
<CollapseHeader>
|
||||
<collapseheader>
|
||||
@($"{gpu.Name}")
|
||||
<span class="btn btn-link" @onclick="() => _gpuVisible[currentCounter] = !_gpuVisible[currentCounter]">
|
||||
<span class="btn btn-link" @ onclick="() => _gpuVisible[currentCounter] = !_gpuVisible[currentCounter]">
|
||||
@L["+info"]
|
||||
</span>
|
||||
</CollapseHeader>
|
||||
<CollapseBody Class="card card-body">
|
||||
<table>
|
||||
@if (gpu.ModelCode != null &&
|
||||
</collapseheader>
|
||||
<collapsebody Class="card card-body">
|
||||
<table class="table table-borderless">
|
||||
@if(gpu.ModelCode != null &&
|
||||
gpu.ModelCode != gpu.Name)
|
||||
{
|
||||
<tr>
|
||||
<td>@L["Model"]</td>
|
||||
<td>@gpu.ModelCode</td>
|
||||
<td class="text-right" style="width: 33%">@L["Model"]</td>
|
||||
<td style="width: 67%">@gpu.ModelCode</td>
|
||||
</tr>
|
||||
}
|
||||
<tr>
|
||||
<td>@L["Manufacturer"]</td>
|
||||
<td>
|
||||
<td class="text-right" style="width: 33%">@L["Manufacturer"]</td>
|
||||
<td style="width: 67%">
|
||||
<a href="/gpus/company/@gpu.CompanyId">
|
||||
@gpu.Company</a>
|
||||
@gpu.Company
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
@if (gpu.Introduced != null)
|
||||
@if(gpu.Introduced != null)
|
||||
{
|
||||
<tr>
|
||||
<td>@L["Introduction date"]</td>
|
||||
<td>@($"{gpu.Introduced:yyyy}")</td>
|
||||
<td class="text-right" style="width: 33%">@L["Introduction date"]</td>
|
||||
<td style="width: 67%">@($"{gpu.Introduced:yyyy}")</td>
|
||||
</tr>
|
||||
}
|
||||
@if (gpu.Package != null)
|
||||
@if(gpu.Package != null)
|
||||
{
|
||||
<tr>
|
||||
<td>@L["Package"]</td>
|
||||
<td>@gpu.Package</td>
|
||||
<td class="text-right" style="width: 33%">@L["Package"]</td>
|
||||
<td style="width: 67%">@gpu.Package</td>
|
||||
</tr>
|
||||
}
|
||||
@if (gpu.Process != null ||
|
||||
@if(gpu.Process != null ||
|
||||
gpu.ProcessNm > 0)
|
||||
{
|
||||
<tr>
|
||||
<td>@L["Manufacturing process"]</td>
|
||||
<td>
|
||||
@if (gpu.Process != null &&
|
||||
<td class="text-right" style="width: 33%">@L["Manufacturing process"]</td>
|
||||
<td style="width: 67%">
|
||||
@if(gpu.Process != null &&
|
||||
gpu.ProcessNm > 0)
|
||||
{
|
||||
if (gpu.ProcessNm > 100)
|
||||
if(gpu.ProcessNm > 100)
|
||||
{
|
||||
@(string.Format(L["{0} @ {1}µm"], gpu.Process, gpu.ProcessNm / 100))
|
||||
}
|
||||
@@ -574,9 +562,9 @@
|
||||
@(string.Format(L["{0} @ {1}nm"], gpu.Process, gpu.ProcessNm))
|
||||
}
|
||||
}
|
||||
else if (gpu.ProcessNm > 0)
|
||||
else if(gpu.ProcessNm > 0)
|
||||
{
|
||||
if (gpu.ProcessNm > 100)
|
||||
if(gpu.ProcessNm > 100)
|
||||
{
|
||||
@(string.Format(L["{0}µm"], gpu.ProcessNm / 100))
|
||||
}
|
||||
@@ -592,23 +580,23 @@
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
@if (gpu.DieSize > 0)
|
||||
@if(gpu.DieSize > 0)
|
||||
{
|
||||
<tr>
|
||||
<td>@L["Die size"]</td>
|
||||
<td>@string.Format(L["{0} mm²"], gpu.DieSize)</td>
|
||||
<td class="text-right" style="width: 33%">@L["Die size"]</td>
|
||||
<td style="width: 67%">@string.Format(L["{0} mm²"], gpu.DieSize)</td>
|
||||
</tr>
|
||||
}
|
||||
@if (gpu.Transistors > 0)
|
||||
@if(gpu.Transistors > 0)
|
||||
{
|
||||
<tr>
|
||||
<td>@L["Transistors"]</td>
|
||||
<td>@gpu.Transistors</td>
|
||||
<td class="text-right" style="width: 33%">@L["Transistors"]</td>
|
||||
<td style="width: 67%">@gpu.Transistors</td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
</CollapseBody>
|
||||
</Collapse>
|
||||
</collapsebody>
|
||||
</collapse>
|
||||
</td>
|
||||
}
|
||||
counter++;
|
||||
@@ -617,96 +605,95 @@
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
@if (_machine.SoundSynthesizers.Count > 0)
|
||||
@if(_machine.SoundSynthesizers.Count > 0)
|
||||
{
|
||||
<tr>
|
||||
<th scope=row>
|
||||
<div align=right>
|
||||
<th class="text-right" scope=row style="width: 33%;">
|
||||
@L["Sound synthesizers"]
|
||||
</div>
|
||||
</th>
|
||||
<td>
|
||||
<table>
|
||||
<td style="width: 67%;">
|
||||
<table class="table table-borderless">
|
||||
@{ counter = 0; }
|
||||
@foreach (var sound in _machine.SoundSynthesizers)
|
||||
@foreach(var sound in _machine.SoundSynthesizers)
|
||||
{
|
||||
int currentCounter = counter;
|
||||
var currentCounter = counter;
|
||||
|
||||
<tr>
|
||||
@if (sound.Id == -2)
|
||||
@if(sound.Id == -2)
|
||||
{
|
||||
<td>
|
||||
<Collapse Visible="@_soundVisible[currentCounter]">
|
||||
<CollapseHeader>
|
||||
<collapseheader>
|
||||
@L["Software"]
|
||||
<span class="btn btn-link" @onclick="() => _soundVisible[currentCounter] = !_soundVisible[currentCounter]">
|
||||
<span class="btn btn-link" @ onclick="() => _soundVisible[currentCounter] = !_soundVisible[currentCounter]">
|
||||
@L["+info"]
|
||||
</span>
|
||||
</CollapseHeader>
|
||||
<CollapseBody Class="card card-body">
|
||||
</collapseheader>
|
||||
<collapsebody Class="card card-body">
|
||||
@L["This machine directly sends data to a DAC or similar connected to the audio output."]
|
||||
</CollapseBody>
|
||||
</Collapse>
|
||||
</collapsebody>
|
||||
</collapse>
|
||||
</td>
|
||||
}
|
||||
else
|
||||
{
|
||||
<td>
|
||||
<Collapse Visible="@_soundVisible[currentCounter]">
|
||||
<CollapseHeader>
|
||||
<collapseheader>
|
||||
@($"{sound.Name}")
|
||||
<span class="btn btn-link" @onclick="() => _soundVisible[currentCounter] = !_soundVisible[currentCounter]">
|
||||
<span class="btn btn-link" @ onclick="() => _soundVisible[currentCounter] = !_soundVisible[currentCounter]">
|
||||
@L["+info"]
|
||||
</span>
|
||||
</CollapseHeader>
|
||||
<CollapseBody Class="card card-body">
|
||||
<table>
|
||||
@if (sound.ModelCode != null &&
|
||||
</collapseheader>
|
||||
<collapsebody Class="card card-body">
|
||||
<table class="table table-borderless">
|
||||
@if(sound.ModelCode != null &&
|
||||
sound.ModelCode != sound.Name)
|
||||
{
|
||||
<tr>
|
||||
<td>@L["Model"]</td>
|
||||
<td>@sound.ModelCode</td>
|
||||
<td class="text-right" style="width: 33%">@L["Model"]</td>
|
||||
<td style="width: 67%">@sound.ModelCode</td>
|
||||
</tr>
|
||||
}
|
||||
@if (sound.CompanyId != null)
|
||||
@if(sound.CompanyId != null)
|
||||
{
|
||||
<tr>
|
||||
<td>@L["Manufacturer"]</td>
|
||||
<td>
|
||||
<td class="text-right" style="width: 33%">@L["Manufacturer"]</td>
|
||||
<td style="width: 67%">
|
||||
<a href="/soundsynths/company/@sound.CompanyId">
|
||||
@sound.CompanyName</a>
|
||||
@sound.CompanyName
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
@if (sound.Introduced != null)
|
||||
@if(sound.Introduced != null)
|
||||
{
|
||||
<tr>
|
||||
<td>@L["Introduction date"]</td>
|
||||
<td>@($"{sound.Introduced:yyyy}")</td>
|
||||
<td class="text-right" style="width: 33%">@L["Introduction date"]</td>
|
||||
<td style="width: 67%">@($"{sound.Introduced:yyyy}")</td>
|
||||
</tr>
|
||||
}
|
||||
@if (sound.Voices != null ||
|
||||
@if(sound.Voices != null ||
|
||||
sound.SquareWave != null ||
|
||||
sound.WhiteNoise != null)
|
||||
{
|
||||
<tr>
|
||||
<td>@L["Generators"]</td>
|
||||
<td>
|
||||
<table>
|
||||
@if (sound.Voices != null)
|
||||
<td class="text-right" style="width: 33%">@L["Generators"]</td>
|
||||
<td style="width: 67%">
|
||||
<table class="table table-borderless">
|
||||
@if(sound.Voices != null)
|
||||
{
|
||||
<tr>
|
||||
<td>@string.Format(L["{0} voices"], sound.Voices)</td>
|
||||
</tr>
|
||||
}
|
||||
@if (sound.SquareWave != null)
|
||||
@if(sound.SquareWave != null)
|
||||
{
|
||||
<tr>
|
||||
<td>@string.Format(L["{0} square wave"], sound.SquareWave)</td>
|
||||
</tr>
|
||||
}
|
||||
@if (sound.WhiteNoise != null)
|
||||
@if(sound.WhiteNoise != null)
|
||||
{
|
||||
<tr>
|
||||
<td>@string.Format(L["{0} white noise"], sound.WhiteNoise)</td>
|
||||
@@ -716,19 +703,19 @@
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
@if (sound.Depth != null ||
|
||||
@if(sound.Depth != null ||
|
||||
sound.Frequency != null)
|
||||
{
|
||||
<tr>
|
||||
<td>@L["Sample rate"]</td>
|
||||
<td>
|
||||
<table>
|
||||
@if (sound.Depth != null &&
|
||||
<td class="text-right" style="width: 33%">@L["Sample rate"]</td>
|
||||
<td style="width: 67%">
|
||||
<table class="table table-borderless">
|
||||
@if(sound.Depth != null &&
|
||||
sound.Frequency != null)
|
||||
{
|
||||
<tr>
|
||||
<td>
|
||||
@if (sound.Frequency > 1000)
|
||||
@if(sound.Frequency > 1000)
|
||||
{
|
||||
@string.Format(L["{0} bits at {1} KHz"], sound.Depth, sound.Frequency / 1000)
|
||||
}
|
||||
@@ -739,7 +726,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
else if (sound.Depth != null)
|
||||
else if(sound.Depth != null)
|
||||
{
|
||||
<tr>
|
||||
<td>@string.Format(L["{0} bits"], sound.Depth)</td>
|
||||
@@ -749,7 +736,7 @@
|
||||
{
|
||||
<tr>
|
||||
<td>
|
||||
@if (sound.Frequency > 1000)
|
||||
@if(sound.Frequency > 1000)
|
||||
{
|
||||
@string.Format(L["{0} KHz"], sound.Frequency / 1000)
|
||||
}
|
||||
@@ -764,18 +751,18 @@
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
@if (sound.Type != null)
|
||||
@if(sound.Type != null)
|
||||
{
|
||||
<tr>
|
||||
<td>@L["Synthesizer type"]</td>
|
||||
<td>
|
||||
<td class="text-right" style="width: 33%">@L["Synthesizer type"]</td>
|
||||
<td style="width: 67%">
|
||||
@sound.Type
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
</CollapseBody>
|
||||
</Collapse>
|
||||
</collapsebody>
|
||||
</collapse>
|
||||
</td>
|
||||
}
|
||||
</tr>
|
||||
@@ -785,41 +772,39 @@
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
@if (_machine.Storage.Count > 0)
|
||||
@if(_machine.Storage.Count > 0)
|
||||
{
|
||||
<tr>
|
||||
<th scope=row>
|
||||
<div align=right>
|
||||
<th class="text-right" scope=row style="width: 33%;">
|
||||
@L["Storage"]
|
||||
</div>
|
||||
</th>
|
||||
<td>
|
||||
<table>
|
||||
@foreach (var storage in _machine.Storage)
|
||||
<td style="width: 67%;">
|
||||
<table class="table table-borderless">
|
||||
@foreach(var storage in _machine.Storage)
|
||||
{
|
||||
string capString = null;
|
||||
|
||||
if (storage.Capacity != null)
|
||||
if(storage.Capacity != null)
|
||||
{
|
||||
if (storage.Type == StorageType.CompactCassette)
|
||||
if(storage.Type == StorageType.CompactCassette)
|
||||
{
|
||||
capString = string.Format(L["{0} bps"], storage.Capacity);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (storage.Capacity > 1073741824)
|
||||
if(storage.Capacity > 1073741824)
|
||||
{
|
||||
capString = string.Format(L["{0} GiB"], storage.Capacity / 1073741824);
|
||||
}
|
||||
else if (storage.Capacity > 1048576)
|
||||
else if(storage.Capacity > 1048576)
|
||||
{
|
||||
capString = string.Format(L["{0} MiB"], storage.Capacity / 1048576);
|
||||
}
|
||||
else if (storage.Capacity > 1024)
|
||||
else if(storage.Capacity > 1024)
|
||||
{
|
||||
capString = string.Format(L["{0} KiB"], storage.Capacity / 1024);
|
||||
}
|
||||
else if (storage.Capacity > 0)
|
||||
else if(storage.Capacity > 0)
|
||||
{
|
||||
capString = string.Format(L["{0} bytes"], storage.Capacity);
|
||||
}
|
||||
@@ -831,15 +816,15 @@
|
||||
}
|
||||
|
||||
<tr>
|
||||
@if (storage.Interface != StorageInterface.Unknown)
|
||||
@if(storage.Interface != StorageInterface.Unknown)
|
||||
{
|
||||
if (storage.Type == StorageType.Empty)
|
||||
if(storage.Type == StorageType.Empty)
|
||||
{
|
||||
<td>@string.Format(L["Available {0} interface."], storage.Interface)</td>
|
||||
}
|
||||
else
|
||||
{
|
||||
if (capString != null)
|
||||
if(capString != null)
|
||||
{
|
||||
<td>@string.Format(L["{0} connected thru a {1} interface with a nominal capacity of {2}"], storage.Type, storage.Interface, capString)</td>
|
||||
}
|
||||
@@ -851,7 +836,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
if (capString != null)
|
||||
if(capString != null)
|
||||
{
|
||||
<td>@string.Format(L["{0} with a nominal capacity of {1}"], storage.Type, capString)</td>
|
||||
}
|
||||
@@ -867,10 +852,9 @@
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
|
||||
@if(_photos.Count > 0)
|
||||
{
|
||||
foreach (var photo in _photos)
|
||||
foreach(var photo in _photos)
|
||||
{
|
||||
<div class="col-md-2">
|
||||
<figure class="figure">
|
||||
@@ -882,17 +866,17 @@
|
||||
<img class="figure-img img-fluid rounded" srcset="/assets/photos/machines/thumbs/jpeg/hd/@(photo).jpg, /assets/photos/machines/thumbs/jpeg/1440p/@(photo).jpg 2x, /assets/photos/machines/thumbs/jpeg/4k/@(photo).jpg 3x" src="/assets/photos/machines/thumbs/jpeg/hd/@(photo).jpg" alt="" height="auto" width="auto" style="max-height: 256px; max-width: 256px" />
|
||||
</picture>
|
||||
<figcaption class="figure-caption">
|
||||
<a href="/machines/photo/@photo" target="_blank">@L["Details"]</a></figcaption>
|
||||
<a href="/machines/photo/@photo" target="_blank">@L["Details"]</a>
|
||||
</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
|
||||
@if (File.Exists(Path.Combine(Host.WebRootPath, "assets/photos/computers", _machine.Id + ".jpg")))
|
||||
@if(File.Exists(Path.Combine(Host.WebRootPath, "assets/photos/computers", _machine.Id + ".jpg")))
|
||||
{
|
||||
<img src="@Path.Combine("/assets/photos/computers", _machine.Id + ".jpg")" alt="">
|
||||
}
|
||||
|
||||
<style>
|
||||
.card {
|
||||
border: none;
|
||||
@@ -908,4 +892,16 @@
|
||||
.card-body {
|
||||
padding: unset;
|
||||
}
|
||||
|
||||
.table th {
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.table td {
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.table {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user