Add VendorStrings to CPUs

This commit is contained in:
Timothy Warren 2024-05-28 18:44:29 -04:00
parent 7732999fa5
commit d6abde17ed
21 changed files with 876 additions and 850 deletions

View File

@ -211,7 +211,6 @@ return (new Config())
'no_space_around_double_colon' => true, 'no_space_around_double_colon' => true,
'no_spaces_after_function_name' => true, 'no_spaces_after_function_name' => true,
'no_spaces_around_offset' => ['positions' => ['inside', 'outside']], 'no_spaces_around_offset' => ['positions' => ['inside', 'outside']],
'no_spaces_inside_parenthesis' => true,
'no_superfluous_elseif' => true, 'no_superfluous_elseif' => true,
'no_superfluous_phpdoc_tags' => [ 'no_superfluous_phpdoc_tags' => [
'allow_mixed' => true, 'allow_mixed' => true,
@ -233,7 +232,7 @@ return (new Config())
'yield', 'yield',
], ],
], ],
'no_unneeded_curly_braces' => ['namespaces' => true], 'no_unneeded_braces' => ['namespaces' => true],
'no_unneeded_final_method' => ['private_methods' => true], 'no_unneeded_final_method' => ['private_methods' => true],
'no_unneeded_import_alias' => true, 'no_unneeded_import_alias' => true,
'no_unreachable_default_argument_value' => true, 'no_unreachable_default_argument_value' => true,
@ -478,6 +477,7 @@ return (new Config())
], ],
'single_trait_insert_per_statement' => true, 'single_trait_insert_per_statement' => true,
'space_after_semicolon' => ['remove_in_empty_for_expressions' => true], 'space_after_semicolon' => ['remove_in_empty_for_expressions' => true],
'space_inside_parenthesis' => false,
'standardize_increment' => true, 'standardize_increment' => true,
'standardize_not_equals' => true, 'standardize_not_equals' => true,
'statement_indentation' => true, 'statement_indentation' => true,

804
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -32,7 +32,7 @@ return static function (ContainerConfigurator $containerConfigurator): void {
], ],
'controller_resolver' => [ 'controller_resolver' => [
'auto_mapping' => true, 'auto_mapping' => true,
] ],
], ],
]); ]);
}; };

View File

@ -3,6 +3,7 @@
namespace App\Controller; namespace App\Controller;
use App\Entity\Cpu; use App\Entity\Cpu;
use App\Enum\CpuVendorString;
use App\Form\CpuType; use App\Form\CpuType;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
@ -34,16 +35,44 @@ class CpuController extends AbstractController {
'model' => 'ASC', 'model' => 'ASC',
]); ]);
$amd = array_filter($items, static fn (Cpu $cpu) => $cpu->getBrand()->getName() === 'AMD' && $cpu->isReceived()); $compare = static fn (Cpu $cpu1, Cpu $cpu2) => $cpu1->getId() <=> $cpu2->getId();
$intel = array_filter($items, static fn (Cpu $cpu) => $cpu->getBrand()->getName() === 'Intel' && $cpu->isReceived()); $filterByVendor = static function(array $items, CpuVendorString $vendorString): array
$others = array_filter($items, static fn (Cpu $cpu) => ( ! in_array($cpu->getBrand()->getName(), ['AMD', 'Intel'], TRUE)) && $cpu->isReceived()); {
return array_filter($items, static fn (Cpu $cpu) => $cpu->getVendorString() === $vendorString);
};
$notReceived = array_filter($items, static fn (CPU $cpu) => $cpu->isReceived() === FALSE); $notReceived = array_filter($items, static fn (CPU $cpu) => $cpu->isReceived() === FALSE);
$items = array_udiff($items, $notReceived, $compare);
$noVendor = array_filter($items, static fn (Cpu $cpu) => $cpu->getVendorString() === null || $cpu->getVendorString() === '');
$items = array_udiff($items, $noVendor, $compare);
$amd = $filterByVendor($items, CpuVendorString::AMD);
$intel = $filterByVendor($items, CpuVendorString::INTEL);
$centaur = $filterByVendor($items, CpuVendorString::CENTAUR);
$cyrix = $filterByVendor($items, CpuVendorString::CYRIX);
$others = array_udiff($items, $amd, $intel, $centaur, $cyrix, $compare);
$sort = static function (Cpu $cpu1, Cpu $cpu2) {
$brandSort = $cpu1->getBrand()->getName() <=> $cpu2->getBrand()->getName();
$modelSort = $cpu1->getProductLine() <=> $cpu2->getProductLine();
return ($brandSort !== 0) ? $brandSort : $modelSort;
};
usort($notReceived, $sort);
usort($noVendor, $sort);
usort($amd, $sort);
usort($intel, $sort);
usort($centaur, $sort);
usort($cyrix, $sort);
usort($others, $sort);
return $this->render($template, [ return $this->render($template, [
'all' => [ 'all' => [
'not_acquired' => $notReceived, 'not_acquired' => $notReceived,
'amd' => $amd, 'amd' => $amd,
'intel' => $intel, 'intel' => $intel,
'centaur' => $centaur,
'cyrix' => $cyrix,
'no_vendor' => $noVendor,
'others' => $others, 'others' => $others,
], ],
]); ]);

View File

@ -2,7 +2,7 @@
namespace App\Entity; namespace App\Entity;
use App\Enum\CpuArchitecture; use App\Enum\{CpuArchitecture, CpuVendorString};
use Doctrine\Common\Collections\{ArrayCollection, Collection}; use Doctrine\Common\Collections\{ArrayCollection, Collection};
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
@ -15,6 +15,8 @@ trait CpuBase {
// ------------------------------------------------------------------------ // ------------------------------------------------------------------------
// CPU Specs // CPU Specs
// ------------------------------------------------------------------------ // ------------------------------------------------------------------------
#[ORM\Column('vendor_string', type: 'string', length: 12, nullable: true, enumType: CpuVendorString::class)]
private ?CpuVendorString $vendorString = null;
#[ORM\Column('architecture', type: 'string', enumType: CpuArchitecture::class)] #[ORM\Column('architecture', type: 'string', enumType: CpuArchitecture::class)]
private CpuArchitecture $architecture; private CpuArchitecture $architecture;

View File

@ -20,10 +20,10 @@ trait GetSet {
public function __set(string $name, mixed $value): void public function __set(string $name, mixed $value): void
{ {
if ( ! property_exists($this, $name)) // if ( ! property_exists($this, $name))
{ // {
throw new InvalidArgumentException("Undefined property: {$name}"); // throw new InvalidArgumentException("Undefined property: {$name}");
} // }
$this->$name = $value; $this->$name = $value;
} }

View File

@ -3,26 +3,68 @@
namespace App\Enum; namespace App\Enum;
enum CardBus: string { enum CardBus: string {
// PCIe 1.0
case PCIE_10_1 = 'PCIe 1.0 x1';
case PCIE_10_4 = 'PCIe 1.0 x4';
case PCIE_10_8 = 'PCIe 1.0 x8';
case PCIE_10_16 = 'PCIe 1.0 x16'; case PCIE_10_16 = 'PCIe 1.0 x16';
// PCIe 1.1
case PCIE_11_1 = 'PCIe 1.1 x1';
case PCIE_11_4 = 'PCIe 1.1 x4';
case PCIE_11_8 = 'PCIe 1.1 x8';
case PCIE_11_16 = 'PCIe 1.1 x16'; case PCIE_11_16 = 'PCIe 1.1 x16';
// PCIe 2.0
case PCIE_20_1 = 'PCIe 2.0 x1';
case PCIE_20_4 = 'PCIe 2.0 x4';
case PCIE_20_8 = 'PCIe 2.0 x8';
case PCIE_20_16 = 'PCIe 2.0 x16'; case PCIE_20_16 = 'PCIe 2.0 x16';
// PCIe 3.0
case PCIE_30_1 = 'PCIe 3.0 x1';
case PCIE_30_4 = 'PCIe 3.0 x4';
case PCIE_30_8 = 'PCIe 3.0 x8'; case PCIE_30_8 = 'PCIe 3.0 x8';
case PCIE_30_16 = 'PCIe 3.0 x16'; case PCIE_30_16 = 'PCIe 3.0 x16';
// PCIe 4.0
case PCIE_40_1 = 'PCIe 4.0 x1';
case PCIE_40_4 = 'PCIe 4.0 x4'; case PCIE_40_4 = 'PCIe 4.0 x4';
case PCIE_40_8 = 'PCIe 4.0 x8'; case PCIE_40_8 = 'PCIe 4.0 x8';
case PCIE_40_16 = 'PCIe 4.0 x16'; case PCIE_40_16 = 'PCIe 4.0 x16';
// PCIe 5.0
case PCIE_50_1 = 'PCIe 5.0 x1';
case PCIE_50_4 = 'PCIe 5.0 x4'; case PCIE_50_4 = 'PCIe 5.0 x4';
case PCIE_50_8 = 'PCIe 5.0 x8'; case PCIE_50_8 = 'PCIe 5.0 x8';
case PCIE_50_16 = 'PCIe 5.0 x16'; case PCIE_50_16 = 'PCIe 5.0 x16';
// Future standards
/*
// PCIe 6.0
case PCIE_60_1 = 'PCIe 6.0 x1';
case PCIE_60_4 = 'PCIe 6.0 x4';
case PCIE_60_8 = 'PCIe 6.0 x8';
case PCIE_60_16 = 'PCIe 6.0 x16';
// PCIe 7.0
case PCIE_70_1 = 'PCIe 7.0 x1';
case PCIE_70_4 = 'PCIe 7.0 x4';
case PCIE_70_8 = 'PCIe 7.0 x8';
case PCIE_70_16 = 'PCIe 7.0 x16';
*/
// PCI
case PCI_33 = 'PCI 33'; case PCI_33 = 'PCI 33';
case PCI_33V_33 = '3.3V PCI 33'; case PCI_33V_33 = '3.3V PCI 33';
// AGP
case AGP_1X = 'AGP 1x'; case AGP_1X = 'AGP 1x';
case AGP_2X = 'AGP 2x'; case AGP_2X = 'AGP 2x';
case AGP_4X = 'AGP 4x'; case AGP_4X = 'AGP 4x';
case AGP_8X = 'AGP 8x'; case AGP_8X = 'AGP 8x';
// Etc.
case ISA_8 = '8-bit ISA'; case ISA_8 = '8-bit ISA';
case ISA_16 = '16-bit ISA'; case ISA_16 = '16-bit ISA';
case ISA_VLB = 'VLB'; case ISA_VLB = 'VLB';
@ -40,11 +82,15 @@ enum CardBus: string {
$isa = $filter('ISA_'); $isa = $filter('ISA_');
$pcie16 = array_filter($pcie, static fn (CardBus $case) => str_ends_with($case->name, '_16')); $pcie16 = array_filter($pcie, static fn (CardBus $case) => str_ends_with($case->name, '_16'));
$pcieOther = array_udiff($pcie, $pcie16, static fn ($a, $b) => $a->name <=> $b->name); $pcie8 = array_filter($pcie, static fn (CardBus $case) => str_ends_with($case->name, '_8'));
$pcie4 = array_filter($pcie, static fn (CardBus $case) => str_ends_with($case->name, '_4'));
$pcie1 = array_filter($pcie, static fn (CardBus $case) => str_ends_with($case->name, '_1'));
return [ return [
'PCI Express x16' => $pcie16, 'PCIe x16' => $pcie16,
'PCI Express Other' => $pcieOther, 'PCIe x8' => $pcie8,
'PCIe x4' => $pcie4,
'PCIe x1' => $pcie1,
'AGP' => $agp, 'AGP' => $agp,
'PCI' => $pci, 'PCI' => $pci,
'ISA' => $isa, 'ISA' => $isa,

View File

@ -0,0 +1,37 @@
<?php declare(strict_types=1);
namespace App\Enum;
enum CpuVendorString: string {
case AMD = 'AuthenticAMD';
case CENTAUR = 'CentaurHauls';
case CYRIX = 'CyrixInstead';
case INTEL = 'GenuineIntel';
case NATSEMI = "Geode\u{00A0}by\u{00A0}NSC";
case NEXGEN = 'NexGenDriven';
case RISE = 'RiseRiseRise';
case SIS = "SiS\u{00A0}SiS\u{00A0}SiS\u{00A0}";
case TRANSMETA = 'GenuineTMx86';
case UMC = "UMC\u{00A0}UMC\u{00A0}UMC\u{00A0}";
public static function getGroups(): array
{
return [
'Common' => [
null,
self::AMD,
self::INTEL,
],
'Others' => [
self::CENTAUR,
self::CYRIX,
self::NATSEMI,
self::NEXGEN,
self::RISE,
self::SIS,
self::TRANSMETA,
self::UMC,
],
];
}
}

View File

@ -3,10 +3,11 @@
namespace App\Enum; namespace App\Enum;
enum SocketType: string { enum SocketType: string {
case DUAL_INLINE_PACKAGE = 'DIP';
case LEAD_LESS_CHIP_CARRIER = 'LLCC';
case PLASTIC_LEADED_CHIP_CARRIER = 'PLCC';
case PIN_GRID_ARRAY = 'PGA'; case PIN_GRID_ARRAY = 'PGA';
case SLOT = 'Slot';
case LAND_GRID_ARRAY = 'LGA'; case LAND_GRID_ARRAY = 'LGA';
case BALL_GRID_ARRAY = 'BGA';
case LEAD_LESS_CHIP_CARRIER = 'LLCC';
case DUAL_INLINE_PACKAGE = 'DIP';
case PLASTIC_LEADED_CHIP_CARRIER = 'PLCC';
case SLOT = 'Slot';
} }

View File

@ -2,6 +2,7 @@
namespace App\Form; namespace App\Form;
use App\Enum\CpuVendorString;
use App\Entity\ use App\Entity\
{Brand, Cpu, Socket}; {Brand, Cpu, Socket};
use App\Enum\CpuArchitecture; use App\Enum\CpuArchitecture;
@ -26,6 +27,11 @@ class CpuType extends AbstractType {
'class' => Brand::class, 'class' => Brand::class,
'query_builder' => self::filterBrands('cpu'), 'query_builder' => self::filterBrands('cpu'),
]) ])
->add('vendorString', EnumType::class, [
'class' => CpuVendorString::class,
'choice_label' => static fn (UnitEnum|NULL $choice): string => ($choice !== null) ? $choice->value : '(None)',
'choices' => CpuVendorString::getGroups(),
])
->add('sockets', EntityType::class, [ ->add('sockets', EntityType::class, [
'class' => Socket::class, 'class' => Socket::class,
'multiple' => true, 'multiple' => true,

View File

@ -18,8 +18,6 @@ class SocketTypeForm extends AbstractType {
->add('brand', EntityType::class, [ ->add('brand', EntityType::class, [
'class' => Brand::class, 'class' => Brand::class,
'query_builder' => self::getSocketBrands(), 'query_builder' => self::getSocketBrands(),
'placeholder' => '[Generic]',
'required' => false,
]) ])
->add('name') ->add('name')
->add('otherName') ->add('otherName')

View File

@ -0,0 +1,34 @@
<?php
declare(strict_types=1);
namespace App\Migrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20240509142844 extends AbstractMigration
{
public function getDescription(): string
{
return '';
}
public function up(Schema $schema): void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE collection.cpu ADD vendor_string VARCHAR(12) DEFAULT NULL');
$this->addSql('ALTER TABLE collection.previously_owned_cpu ADD vendor_string VARCHAR(12) DEFAULT NULL');
}
public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql('CREATE SCHEMA public');
$this->addSql('ALTER TABLE collection.cpu DROP vendor_string');
$this->addSql('ALTER TABLE collection.previously_owned_cpu DROP vendor_string');
}
}

View File

@ -20,9 +20,10 @@
<div class="grid-x grid-margin-x"> <div class="grid-x grid-margin-x">
<div class="cell">{{ form_row(form.architecture) }}</div> <div class="cell">{{ form_row(form.architecture) }}</div>
<div class="cell">{{ form_row(form.sockets) }}</div> <div class="cell">{{ form_row(form.sockets) }}</div>
<div class="cell medium-4">{{ form_row(form.brand) }}</div> <div class="cell medium-6">{{ form_row(form.brand) }}</div>
<div class="cell medium-4">{{ form_row(form.productLine) }}</div> <div class="cell medium-6">{{ form_row(form.vendorString) }}</div>
<div class="cell medium-4">{{ form_row(form.model) }}</div> <div class="cell medium-6">{{ form_row(form.productLine) }}</div>
<div class="cell medium-6">{{ form_row(form.model) }}</div>
<div class="cell medium-6">{{ form_row(form.partNumber) }}</div> <div class="cell medium-6">{{ form_row(form.partNumber) }}</div>
<div class="cell medium-6">{{ form_row(form.lotNumber) }}</div> <div class="cell medium-6">{{ form_row(form.lotNumber) }}</div>
<div class="cell medium-6">{{ form_row(form.microArchitecture) }}</div> <div class="cell medium-6">{{ form_row(form.microArchitecture) }}</div>

View File

@ -31,10 +31,18 @@
<li class="tabs-title"> <li class="tabs-title">
<a href="#intel">Intel</a> <a href="#intel">Intel</a>
</li> </li>
<li class="tabs-title">
<a href="#centaur">Centaur</a>
</li>
<li class="tabs-title">
<a href="#cyrix">Cyrix</a>
</li>
<li class="tabs-title">
<a href="#no_vendor">No Vendor String</a>
</li>
<li class="tabs-title"> <li class="tabs-title">
<a href="#others">Others</a> <a href="#others">Others</a>
</li> </li>
</ul> </ul>
<div class="tabs-content" data-tabs-content="classifications"> <div class="tabs-content" data-tabs-content="classifications">
@ -44,23 +52,22 @@
<thead> <thead>
<tr> <tr>
<th>&nbsp;</th> <th>&nbsp;</th>
<th>Id</th>
<th>Arch</th>
<th>Model</th> <th>Model</th>
<!--<th>Id</th>
<th>Arch</th>-->
{% if label == 'not_acquired' or label == 'others' %}
<th>Vendor String</th>
{% endif %}
<th>Socket(s)</th> <th>Socket(s)</th>
<th>Part Number</th> <th>Part Number</th>
<th>Lot Number</th>
<th>uArch</th> <th>uArch</th>
<th>Code Name</th> <th>Code Name</th>
<th>Speed</th> <th>Speed</th>
<th>C/T</th> <th>C/T</th>
<th>L1 Cache</th> <th>Cache</th>
<th>L2 Cache</th>
<th>L3 Cache</th>
<th>Igp</th> <th>Igp</th>
<th>Count</th> <th>Count</th>
<th>Usable</th> <th>Usable</th>
<th>Received</th>
<th>Notes</th> <th>Notes</th>
</tr> </tr>
</thead> </thead>
@ -81,9 +88,12 @@
</li> </li>
</ul> </ul>
</td> </td>
<td>{{ cpu.id }}</td> <td>{{ cpu.brand.name }} {{ cpu.productLine }} | {{ cpu.model }}</td>
<td>{{ cpu.architecture.value }}</td> <!-- <td>{{ cpu.id }}</td>
<td>{{ cpu.brand.name }} {{ cpu.productLine }} {{ cpu.model }}</td> <td>{{ cpu.architecture.value }}</td>-->
{% if label == 'not_acquired' or label == 'others' %}
<td>{% if cpu.vendorString %}{{ cpu.vendorString.value }}{% endif %}</td>
{% endif %}
<td> <td>
<ul> <ul>
{% for socket in cpu.sockets %} {% for socket in cpu.sockets %}
@ -92,7 +102,6 @@
</ul> </ul>
</td> </td>
<td>{{ cpu.partNumber }}</td> <td>{{ cpu.partNumber }}</td>
<td>{{ cpu.lotNumber }}</td>
<td>{{ cpu.microArchitecture }}</td> <td>{{ cpu.microArchitecture }}</td>
<td>{{ cpu.codeName }}</td> <td>{{ cpu.codeName }}</td>
<td> <td>
@ -104,27 +113,22 @@
<td>{{ cpu.cores }} / {{ cpu.threads }}</td> <td>{{ cpu.cores }} / {{ cpu.threads }}</td>
<td> <td>
{% if cpu.L1uCount > 0 %} {% if cpu.L1uCount > 0 %}
{{ cpu.L1uCount }}x {{ cpu.L1uSize }}KB {{ cpu.L1uWay }}-way {{ cpu.L1uCount }}x {{ cpu.L1uSize }}KB {{ cpu.L1uWay }}-way<br />
{% endif %} {% endif %}
{% if cpu.L1cCount > 0 %} {% if cpu.L1cCount > 0 %}
{{ cpu.L1cCount }}x {{ cpu.L1dSize }}KB {{ cpu.L1dWay }}-way data, L1d: {{ cpu.L1cCount }}x {{ cpu.L1dSize }}KB {{ cpu.L1dWay }}-way <br />
{{ cpu.L1dCount }}x {{ cpu.L1cSize }}KB {{ cpu.L1cWay }}-way instruction L1c: {{ cpu.L1dCount }}x {{ cpu.L1cSize }}KB {{ cpu.L1cWay }}-way <br />
{% endif %} {% endif %}
</td>
<td>
{% if cpu.L2Count > 0 %} {% if cpu.L2Count > 0 %}
{{ cpu.L2Count }}x {{ cpu.L2Size }}KB {{ cpu.L2Way }}-way <br />L2: {{ cpu.L2Count }}x {{ cpu.L2Size }}KB {{ cpu.L2Way }}-way
{% endif %} {% endif %}
</td>
<td>
{% if cpu.L3Count > 0 %} {% if cpu.L3Count > 0 %}
{{ cpu.L3Count }}x {{ cpu.L3Size }}KB {{ cpu.L3Way }}-way <br />L3: {{ cpu.L3Count }}x {{ cpu.L3Size }}KB {{ cpu.L3Way }}-way
{% endif %} {% endif %}
</td> </td>
<td>{{ cpu.igp }}</td> <td>{{ cpu.igp }}</td>
<td>{{ cpu.count }}</td> <td>{{ cpu.count }}</td>
<td>{{ cpu.usable ? 'Yes' : 'No' }}</td> <td>{{ cpu.usable ? 'Yes' : 'No' }}</td>
<td>{{ cpu.received ? 'Yes' : 'No' }}</td>
<td>{{ cpu.notes }}</td> <td>{{ cpu.notes }}</td>
</tr> </tr>
{% else %} {% else %}

View File

@ -37,6 +37,10 @@
<th>Architecture</th> <th>Architecture</th>
<td>{{ cpu.architecture.value }}</td> <td>{{ cpu.architecture.value }}</td>
</tr> </tr>
<tr>
<th>VendorStr</th>
<td>{% if cpu.vendorString %}{{ cpu.vendorString.value }}{% endif %}</td>
</tr>
<tr> <tr>
<th>Model</th> <th>Model</th>
<td>{{ cpu.brand.name }} {{ cpu.productLine }} {{ cpu.model }}</td> <td>{{ cpu.brand.name }} {{ cpu.productLine }} {{ cpu.model }}</td>

View File

@ -20,9 +20,10 @@
<div class="grid-x grid-margin-x"> <div class="grid-x grid-margin-x">
<div class="cell">{{ form_row(form.architecture) }}</div> <div class="cell">{{ form_row(form.architecture) }}</div>
<div class="cell">{{ form_row(form.sockets) }}</div> <div class="cell">{{ form_row(form.sockets) }}</div>
<div class="cell medium-4">{{ form_row(form.brand) }}</div> <div class="cell medium-6">{{ form_row(form.brand) }}</div>
<div class="cell medium-4">{{ form_row(form.productLine) }}</div> <div class="cell medium-6">{{ form_row(form.vendorString) }}</div>
<div class="cell medium-4">{{ form_row(form.model) }}</div> <div class="cell medium-6">{{ form_row(form.productLine) }}</div>
<div class="cell medium-6">{{ form_row(form.model) }}</div>
<div class="cell medium-6">{{ form_row(form.partNumber) }}</div> <div class="cell medium-6">{{ form_row(form.partNumber) }}</div>
<div class="cell medium-6">{{ form_row(form.lotNumber) }}</div> <div class="cell medium-6">{{ form_row(form.lotNumber) }}</div>
<div class="cell medium-6">{{ form_row(form.microArchitecture) }}</div> <div class="cell medium-6">{{ form_row(form.microArchitecture) }}</div>

View File

@ -12,6 +12,7 @@
<th>Id</th> <th>Id</th>
<th>Arch</th> <th>Arch</th>
<th>Model</th> <th>Model</th>
<th>Vendor String</th>
<th>Socket(s)</th> <th>Socket(s)</th>
<th>Part Number</th> <th>Part Number</th>
<th>Lot Number</th> <th>Lot Number</th>
@ -49,6 +50,7 @@
<td>{{ cpu.id }}</td> <td>{{ cpu.id }}</td>
<td>{{ cpu.architecture.value }}</td> <td>{{ cpu.architecture.value }}</td>
<td>{{ cpu.brand.name }} {{ cpu.productLine }} {{ cpu.model }}</td> <td>{{ cpu.brand.name }} {{ cpu.productLine }} {{ cpu.model }}</td>
<td>{% if cpu.vendorString %}{{ cpu.vendorString.value }}{% endif %}</td>
<td> <td>
<ul> <ul>
{% for socket in cpu.sockets %} {% for socket in cpu.sockets %}

View File

@ -35,6 +35,10 @@
<tr> <tr>
<th>Architecture</th> <th>Architecture</th>
<td>{{ previously_owned_cpu.architecture }}</td> <td>{{ previously_owned_cpu.architecture }}</td>
</tr>
<tr>
<th>VendorStr</th>
<td>{% if previously_owned_cpu.vendorString %}{{ previously_owned_cpu.vendorString.value }}{% endif %}</td>
</tr> </tr>
<tr> <tr>
<th>ProductLine</th> <th>ProductLine</th>

View File

@ -1,6 +1,6 @@
{ {
"require": { "require": {
"friendsofphp/php-cs-fixer": "^3.6", "friendsofphp/php-cs-fixer": "^3.52.1",
"rector/rector": "^0.17.6" "rector/rector": "^1.0.3"
} }
} }

637
tools/composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -33,6 +33,7 @@ return [
'arm' => 'arm', 'arm' => 'arm',
'arm64' => 'arm64', 'arm64' => 'arm64',
'B & W' => 'B & W', 'B & W' => 'B & W',
'BALL_GRID_ARRAY' => 'BGA',
'Base speed' => 'Base Speed', 'Base speed' => 'Base Speed',
'Batteries' => 'Batteries', 'Batteries' => 'Batteries',
'Battery type' => 'Battery Type', 'Battery type' => 'Battery Type',
@ -149,13 +150,28 @@ return [
'PCIe 6-pin Power Connectors' => 'PCIe 6-pin Power Connectors', 'PCIe 6-pin Power Connectors' => 'PCIe 6-pin Power Connectors',
'PCIe 8-pin Power Connectors' => 'PCIe 8-pin Power Connectors', 'PCIe 8-pin Power Connectors' => 'PCIe 8-pin Power Connectors',
'PCIe 1.0 x16' => 'PCIe 1.0 x16', 'PCIe 1.0 x16' => 'PCIe 1.0 x16',
'PCIe 1.0 x8' => 'PCIe 1.0 x8',
'PCIe 1.0 x4' => 'PCIe 1.0 x4',
'PCIe 1.0 x1' => 'PCIe 1.0 x1',
'PCIe 1.1 x16' => 'PCIe 1.1 x16', 'PCIe 1.1 x16' => 'PCIe 1.1 x16',
'PCIe 1.1 x8' => 'PCIe 1.1 x8',
'PCIe 1.1 x4' => 'PCIe 1.1 x4',
'PCIe 1.1 x1' => 'PCIe 1.1 x1',
'PCIe 2.0 x16' => 'PCIe 2.0 x16', 'PCIe 2.0 x16' => 'PCIe 2.0 x16',
'PCIe 2.0 x8' => 'PCIe 2.0 x8',
'PCIe 2.0 x4' => 'PCIe 2.0 x4',
'PCIe 2.0 x1' => 'PCIe 2.0 x1',
'PCIe 3.0 x1' => 'PCIe 3.0 x1',
'PCIe 3.0 x4' => 'PCIe 3.0 x4',
'PCIe 3.0 x8' => 'PCIe 3.0 x8', 'PCIe 3.0 x8' => 'PCIe 3.0 x8',
'PCIe 3.0 x16' => 'PCIe 3.0 x16', 'PCIe 3.0 x16' => 'PCIe 3.0 x16',
'PCIe 4.0 x1' => 'PCIe 4.0 x1',
'PCIe 4.0 x4' => 'PCIe 4.0 x4', 'PCIe 4.0 x4' => 'PCIe 4.0 x4',
'PCIe 4.0 x8' => 'PCIe 4.0 x8', 'PCIe 4.0 x8' => 'PCIe 4.0 x8',
'PCIe 4.0 x16' => 'PCIe 4.0 x16', 'PCIe 4.0 x16' => 'PCIe 4.0 x16',
'PCIe 5.0 x1' => 'PCIe 5.0 x1',
'PCIe 5.0 x4' => 'PCIe 5.0 x4',
'PCIe 5.0 x8' => 'PCIe 5.0 x8',
'PCIe 5.0 x16' => 'PCIe 5.0 x16', 'PCIe 5.0 x16' => 'PCIe 5.0 x16',
'PCIe x1' => 'PCIe x1', 'PCIe x1' => 'PCIe x1',
'PCIe x4' => 'PCIe x4', 'PCIe x4' => 'PCIe x4',