Add start of CPU section
This commit is contained in:
parent
9af61e0c7e
commit
a64ec3f913
56
src/Controller/CpuController.php
Normal file
56
src/Controller/CpuController.php
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace App\Controller;
|
||||||
|
|
||||||
|
use App\Entity\Cpu;
|
||||||
|
use App\Form\CpuType;
|
||||||
|
use App\Traits\FormControllerTrait;
|
||||||
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||||
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
|
use Symfony\Component\Routing\Annotation\Route;
|
||||||
|
|
||||||
|
#[Route('/cpu')]
|
||||||
|
class CpuController extends AbstractController {
|
||||||
|
use FormControllerTrait;
|
||||||
|
|
||||||
|
protected const ENTITY = Cpu::class;
|
||||||
|
protected const TEMPLATE_PATH = 'cpu/';
|
||||||
|
protected const ROUTE_PREFIX = 'cpu_';
|
||||||
|
protected const FORM = CpuType::class;
|
||||||
|
|
||||||
|
public function __construct(private readonly EntityManagerInterface $entityManager)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
#[Route('/', name: 'app_cpu_index', methods: ['GET'])]
|
||||||
|
public function index(): Response
|
||||||
|
{
|
||||||
|
return $this->itemListView('cpus', []);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[Route('/new', name: 'app_cpu_new', methods: ['GET', 'POST'])]
|
||||||
|
public function new(Request $request): Response
|
||||||
|
{
|
||||||
|
return $this->itemCreate($request, 'cpu');
|
||||||
|
}
|
||||||
|
|
||||||
|
#[Route('/{id}', name: 'app_cpu_show', methods: ['GET'])]
|
||||||
|
public function show(Cpu $cpu): Response
|
||||||
|
{
|
||||||
|
return $this->itemView($cpu, 'cpu');
|
||||||
|
}
|
||||||
|
|
||||||
|
#[Route('/{id}/edit', name: 'app_cpu_edit', methods: ['GET', 'POST'])]
|
||||||
|
public function edit(Request $request, Cpu $cpu): Response
|
||||||
|
{
|
||||||
|
return $this->itemUpdate($request, $cpu, 'cpu');
|
||||||
|
}
|
||||||
|
|
||||||
|
#[Route('/{id}', name: 'app_cpu_delete', methods: ['POST'])]
|
||||||
|
public function delete(Request $request, Cpu $cpu): Response
|
||||||
|
{
|
||||||
|
return $this->deleteCSRF($request, $cpu);
|
||||||
|
}
|
||||||
|
}
|
@ -2,34 +2,108 @@
|
|||||||
|
|
||||||
namespace App\Entity;
|
namespace App\Entity;
|
||||||
|
|
||||||
|
use App\Enum\CpuArchitectureEnum;
|
||||||
use Doctrine\Common\Collections\{Collection, ArrayCollection};
|
use Doctrine\Common\Collections\{Collection, ArrayCollection};
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
|
|
||||||
#[ORM\Table(name: 'cpu', schema: 'collection')]
|
#[ORM\Table('cpu', schema: 'collection')]
|
||||||
#[ORM\Entity]
|
#[ORM\Entity]
|
||||||
class Cpu {
|
class Cpu {
|
||||||
|
use CpuCache;
|
||||||
use GetSetTrait;
|
use GetSetTrait;
|
||||||
|
|
||||||
#[ORM\Column(name: 'id', type: 'integer', nullable: FALSE)]
|
#[ORM\Column('id', type: 'integer', nullable: FALSE)]
|
||||||
#[ORM\Id]
|
#[ORM\Id]
|
||||||
#[ORM\GeneratedValue(strategy: 'IDENTITY')]
|
#[ORM\GeneratedValue(strategy: 'IDENTITY')]
|
||||||
private int $id;
|
private int $id;
|
||||||
|
|
||||||
#[ORM\ManyToOne(targetEntity: 'Brand', fetch: 'EAGER')]
|
#[ORM\ManyToOne(targetEntity: 'Brand', fetch: 'EAGER')]
|
||||||
#[ORM\OrderBy(['name' => 'asc'])]
|
#[ORM\OrderBy(['name' => 'asc'])]
|
||||||
#[ORM\JoinColumn(name: 'brand_id', referencedColumnName: 'id', nullable: FALSE)]
|
#[ORM\JoinColumn('brand_id', referencedColumnName: 'id', nullable: FALSE)]
|
||||||
private Brand $brand;
|
private Brand $brand;
|
||||||
|
|
||||||
|
#[ORM\Column('architecture', type: 'string', enumType: CpuArchitectureEnum::class)]
|
||||||
|
private string $architecture;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Collection<int, Socket>
|
* @var Collection<int, Socket>
|
||||||
*/
|
*/
|
||||||
#[ORM\ManyToMany(targetEntity: Socket::class)]
|
#[ORM\ManyToMany(targetEntity: Socket::class)]
|
||||||
#[ORM\JoinTable(name: 'collection.cpu_socket_link')]
|
#[ORM\JoinTable('collection.cpu_socket_link')]
|
||||||
#[ORM\JoinColumn(name: 'socket_id', referencedColumnName: 'id')]
|
#[ORM\JoinColumn('socket_id', referencedColumnName: 'id')]
|
||||||
#[ORM\InverseJoinColumn(name: 'cpu_id', referencedColumnName: 'id')]
|
#[ORM\InverseJoinColumn('cpu_id', referencedColumnName: 'id')]
|
||||||
#[ORM\OrderBy(['name' => 'asc'])]
|
#[ORM\OrderBy(['name' => 'asc'])]
|
||||||
private Collection $sockets;
|
private Collection $sockets;
|
||||||
|
|
||||||
|
#[ORM\Column('product_line', type: 'string')]
|
||||||
|
private string $productLine;
|
||||||
|
|
||||||
|
#[ORM\Column('model', type: 'string')]
|
||||||
|
private string $model;
|
||||||
|
|
||||||
|
#[ORM\Column('part_number', type: 'string')]
|
||||||
|
private string $partNumber;
|
||||||
|
|
||||||
|
#[ORM\Column('lot_number', type: 'string', nullable: TRUE, options: array(
|
||||||
|
'comment' => 'The CPU lot number, such as s-spec for Intel CPUs'
|
||||||
|
))]
|
||||||
|
private ?string $lotNumber;
|
||||||
|
|
||||||
|
#[ORM\Column('micro_architecture', type: 'string')]
|
||||||
|
private string $microArchitecture = '';
|
||||||
|
|
||||||
|
#[ORM\Column('codename', type: 'string')]
|
||||||
|
private string $codeName = '';
|
||||||
|
|
||||||
|
#[ORM\Column('base_speed', type: 'integer', options: array(
|
||||||
|
'comment' => 'The stock speed of the cpu in MHz'
|
||||||
|
))]
|
||||||
|
private int $baseSpeed;
|
||||||
|
|
||||||
|
#[ORM\Column('boost_speed', type: 'integer', nullable: true, options: array(
|
||||||
|
'comment' => 'The max boost speed of the cpu in MHz, if applicable'
|
||||||
|
))]
|
||||||
|
private ?int $boostSpeed;
|
||||||
|
|
||||||
|
#[ORM\Column('cores', type: 'integer')]
|
||||||
|
private int $cores = 1;
|
||||||
|
|
||||||
|
#[ORM\Column('threads', type: 'integer')]
|
||||||
|
private int $threads = 1;
|
||||||
|
|
||||||
|
#[ORM\Column('igp', type: 'string', nullable: true, options: array(
|
||||||
|
'comment' => 'The name of the integrated graphics processor'
|
||||||
|
))]
|
||||||
|
private ?string $igp;
|
||||||
|
|
||||||
|
#[ORM\Column('voltage', type: 'float', nullable: true)]
|
||||||
|
private ?float $voltage;
|
||||||
|
|
||||||
|
#[ORM\Column('tdp', type: 'integer')]
|
||||||
|
private ?int $tdp;
|
||||||
|
|
||||||
|
#[ORM\Column('process_node', type: 'integer', nullable: TRUE)]
|
||||||
|
private ?int $processNode;
|
||||||
|
|
||||||
|
#[ORM\Column('count', type: 'integer')]
|
||||||
|
private int $count = 1;
|
||||||
|
|
||||||
|
#[ORM\Column('usable', type: 'boolean', options: array(
|
||||||
|
'comment' => 'Whether the chip is working, and can be used with other hardware I have'
|
||||||
|
))]
|
||||||
|
private bool $usable = true;
|
||||||
|
|
||||||
|
#[ORM\Column('received', type: 'boolean', options: array(
|
||||||
|
'comment' => "Whether I have the chip in my possession (instead of in shipping)"
|
||||||
|
))]
|
||||||
|
private bool $received = true;
|
||||||
|
|
||||||
|
#[ORM\Column('link', type: 'string')]
|
||||||
|
private string $link;
|
||||||
|
|
||||||
|
#[ORM\Column('notes', type: 'string')]
|
||||||
|
private string $notes = '';
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->sockets = new ArrayCollection();
|
$this->sockets = new ArrayCollection();
|
||||||
|
56
src/Entity/CpuCache.php
Normal file
56
src/Entity/CpuCache.php
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace App\Entity;
|
||||||
|
|
||||||
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
|
|
||||||
|
trait CpuCache {
|
||||||
|
#[ORM\Column('l1_count', type:'integer', options: array(
|
||||||
|
'comment' => 'The number of L1 caches on the package, usually the same as the number of cores'
|
||||||
|
))]
|
||||||
|
private int $L1Count = 1;
|
||||||
|
|
||||||
|
#[ORM\Column('l1_data_size', type: 'integer', nullable: true, options: array(
|
||||||
|
'comment' => 'The size of each Level 1 data cache in KB'
|
||||||
|
))]
|
||||||
|
private ?int $L1dSize;
|
||||||
|
|
||||||
|
#[ORM\Column('l1_code_size', type: 'integer', nullable: true, options: array(
|
||||||
|
'comment' => 'The size of each Level 1 instruction cache in KB'
|
||||||
|
))]
|
||||||
|
private ?int $L1cSize;
|
||||||
|
|
||||||
|
#[ORM\Column('l1_unified_size', type: 'integer', nullable: true, options: array(
|
||||||
|
'comment' => 'The size of each Level 1 unified cache in KB'
|
||||||
|
))]
|
||||||
|
private ?int $L1uSize;
|
||||||
|
|
||||||
|
#[ORM\Column('l1_way', type: 'integer', nullable: true)]
|
||||||
|
private ?int $L1Way;
|
||||||
|
|
||||||
|
#[ORM\Column('l2_count', type: 'integer', options: array(
|
||||||
|
'comment' => 'The number of L2 caches on the package, usually the same as the number of cores'
|
||||||
|
))]
|
||||||
|
private int $L2Count = 1;
|
||||||
|
|
||||||
|
#[ORM\Column('l2_size', type: 'integer', nullable: true, options: array(
|
||||||
|
'comment' => 'The size of each Level 2 cache in KB'
|
||||||
|
))]
|
||||||
|
private ?int $L2Size;
|
||||||
|
|
||||||
|
#[ORM\Column('l2_way', type: 'integer', nullable: true)]
|
||||||
|
private ?int $L2Way;
|
||||||
|
|
||||||
|
#[ORM\Column('l3_count', type: 'integer', options: array(
|
||||||
|
'comment' => 'The number of L3 caches on the package'
|
||||||
|
))]
|
||||||
|
private int $L3Count = 0;
|
||||||
|
|
||||||
|
#[ORM\Column('l3_size', type: 'integer', nullable: true, options: array(
|
||||||
|
'comment' => 'The size of each Level 3 cache in KB'
|
||||||
|
))]
|
||||||
|
private ?int $L3Size;
|
||||||
|
|
||||||
|
#[ORM\Column('l3_way', type: 'integer', nullable: true)]
|
||||||
|
private ?int $L3Way;
|
||||||
|
}
|
19
src/Enum/CpuArchitectureEnum.php
Normal file
19
src/Enum/CpuArchitectureEnum.php
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace App\Enum;
|
||||||
|
|
||||||
|
enum CpuArchitectureEnum: string {
|
||||||
|
case X86 = 'x86';
|
||||||
|
case X86_64 = 'x86_64';
|
||||||
|
case ARM = 'arm';
|
||||||
|
case ARM64 = 'arm64';
|
||||||
|
case POWER_PC = 'PowerPC';
|
||||||
|
case POWER = 'IBM POWER';
|
||||||
|
case SIXTY_EIGHT_K = 'Motorola 68k';
|
||||||
|
case RISC_V = 'RISC V';
|
||||||
|
case MIPS = 'MIPS';
|
||||||
|
case SIX_FIVE_OH_TWO = 'MOS 6502';
|
||||||
|
case Z80 = 'Z80';
|
||||||
|
case EIGHT_OH_EIGHT_EIGHT = 'Intel 8088';
|
||||||
|
case EIGHT_OH_186 = 'Intel 80186';
|
||||||
|
}
|
57
src/Form/CpuType.php
Normal file
57
src/Form/CpuType.php
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Form;
|
||||||
|
|
||||||
|
use App\Entity\Cpu;
|
||||||
|
use Symfony\Component\Form\AbstractType;
|
||||||
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
|
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||||
|
|
||||||
|
class CpuType extends AbstractType
|
||||||
|
{
|
||||||
|
public function buildForm(FormBuilderInterface $builder, array $options): void
|
||||||
|
{
|
||||||
|
$builder
|
||||||
|
->add('architecture')
|
||||||
|
->add('productLine')
|
||||||
|
->add('model')
|
||||||
|
->add('partNumber')
|
||||||
|
->add('lotNumber')
|
||||||
|
->add('microArchitecture')
|
||||||
|
->add('codeName')
|
||||||
|
->add('baseSpeed')
|
||||||
|
->add('boostSpeed')
|
||||||
|
->add('cores')
|
||||||
|
->add('threads')
|
||||||
|
->add('igp')
|
||||||
|
->add('voltage')
|
||||||
|
->add('tdp')
|
||||||
|
->add('processNode')
|
||||||
|
->add('count')
|
||||||
|
->add('usable')
|
||||||
|
->add('received')
|
||||||
|
->add('link')
|
||||||
|
->add('notes')
|
||||||
|
->add('L1Count')
|
||||||
|
->add('L1dSize')
|
||||||
|
->add('L1cSize')
|
||||||
|
->add('L1uSize')
|
||||||
|
->add('L1Way')
|
||||||
|
->add('L2Count')
|
||||||
|
->add('L2Size')
|
||||||
|
->add('L2Way')
|
||||||
|
->add('L3Count')
|
||||||
|
->add('L3Size')
|
||||||
|
->add('L3Way')
|
||||||
|
->add('brand')
|
||||||
|
->add('sockets')
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function configureOptions(OptionsResolver $resolver): void
|
||||||
|
{
|
||||||
|
$resolver->setDefaults([
|
||||||
|
'data_class' => Cpu::class,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
108
src/Migrations/Version20221027154708.php
Normal file
108
src/Migrations/Version20221027154708.php
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
<?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 Version20221027154708 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 architecture VARCHAR(255) NOT NULL');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu ADD product_line VARCHAR(255) NOT NULL');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu ADD model VARCHAR(255) NOT NULL');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu ADD part_number VARCHAR(255) NOT NULL');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu ADD lot_number VARCHAR(255) DEFAULT NULL');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu ADD micro_architecture VARCHAR(255) NOT NULL');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu ADD codename VARCHAR(255) NOT NULL');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu ADD base_speed INT NOT NULL');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu ADD boost_speed INT DEFAULT NULL');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu ADD cores INT NOT NULL');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu ADD threads INT NOT NULL');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu ADD igp VARCHAR(255) DEFAULT NULL');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu ADD voltage DOUBLE PRECISION DEFAULT NULL');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu ADD tdp INT NOT NULL');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu ADD process_node INT DEFAULT NULL');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu ADD count INT NOT NULL');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu ADD usable BOOLEAN NOT NULL');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu ADD received BOOLEAN NOT NULL');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu ADD link VARCHAR(255) NOT NULL');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu ADD notes VARCHAR(255) NOT NULL');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu ADD l1_count INT NOT NULL');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu ADD l1_data_size INT DEFAULT NULL');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu ADD l1_code_size INT DEFAULT NULL');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu ADD l1_unified_size INT DEFAULT NULL');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu ADD l1_way INT DEFAULT NULL');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu ADD l2_count INT NOT NULL');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu ADD l2_size INT DEFAULT NULL');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu ADD l2_way INT DEFAULT NULL');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu ADD l3_count INT NOT NULL');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu ADD l3_size INT DEFAULT NULL');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu ADD l3_way INT DEFAULT NULL');
|
||||||
|
$this->addSql('COMMENT ON COLUMN collection.cpu.lot_number IS \'The CPU lot number, such as s-spec for Intel CPUs\'');
|
||||||
|
$this->addSql('COMMENT ON COLUMN collection.cpu.base_speed IS \'The stock speed of the cpu in MHz\'');
|
||||||
|
$this->addSql('COMMENT ON COLUMN collection.cpu.boost_speed IS \'The max boost speed of the cpu in MHz, if applicable\'');
|
||||||
|
$this->addSql('COMMENT ON COLUMN collection.cpu.igp IS \'The name of the integrated graphics processor\'');
|
||||||
|
$this->addSql('COMMENT ON COLUMN collection.cpu.usable IS \'Whether the chip is working, and can be used with other hardware I have\'');
|
||||||
|
$this->addSql('COMMENT ON COLUMN collection.cpu.received IS \'Whether I have the chip in my possession (instead of in shipping)\'');
|
||||||
|
$this->addSql('COMMENT ON COLUMN collection.cpu.l1_count IS \'The number of L1 caches on the package, usually the same as the number of cores\'');
|
||||||
|
$this->addSql('COMMENT ON COLUMN collection.cpu.l1_data_size IS \'The size of each Level 1 data cache in KB\'');
|
||||||
|
$this->addSql('COMMENT ON COLUMN collection.cpu.l1_code_size IS \'The size of each Level 1 instruction cache in KB\'');
|
||||||
|
$this->addSql('COMMENT ON COLUMN collection.cpu.l1_unified_size IS \'The size of each Level 1 unified cache in KB\'');
|
||||||
|
$this->addSql('COMMENT ON COLUMN collection.cpu.l2_count IS \'The number of L2 caches on the package, usually the same as the number of cores\'');
|
||||||
|
$this->addSql('COMMENT ON COLUMN collection.cpu.l2_size IS \'The size of each Level 2 cache in KB\'');
|
||||||
|
$this->addSql('COMMENT ON COLUMN collection.cpu.l3_count IS \'The number of L3 caches on the package\'');
|
||||||
|
$this->addSql('COMMENT ON COLUMN collection.cpu.l3_size IS \'The size of each Level 3 cache in KB\'');
|
||||||
|
$this->addSql('ALTER TABLE collection.fpu ALTER series DROP NOT 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 architecture');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu DROP product_line');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu DROP model');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu DROP part_number');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu DROP lot_number');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu DROP micro_architecture');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu DROP codename');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu DROP base_speed');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu DROP boost_speed');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu DROP cores');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu DROP threads');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu DROP igp');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu DROP voltage');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu DROP tdp');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu DROP process_node');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu DROP count');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu DROP usable');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu DROP received');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu DROP link');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu DROP notes');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu DROP l1_count');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu DROP l1_data_size');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu DROP l1_code_size');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu DROP l1_unified_size');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu DROP l1_way');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu DROP l2_count');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu DROP l2_size');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu DROP l2_way');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu DROP l3_count');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu DROP l3_size');
|
||||||
|
$this->addSql('ALTER TABLE collection.cpu DROP l3_way');
|
||||||
|
$this->addSql('ALTER TABLE collection.fpu ALTER series SET NOT NULL');
|
||||||
|
}
|
||||||
|
}
|
@ -5,15 +5,15 @@
|
|||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>{% block title %}Collection CRUD{% endblock %}</title>
|
<title>Collection CRUD - {% block title %}{% endblock %}</title>
|
||||||
<link rel="stylesheet" href="/css/foundation.min.css" />
|
<link rel="stylesheet" href="/css/foundation.min.css" />
|
||||||
<link rel="stylesheet" href="/css/app.css" />
|
<link rel="stylesheet" href="/css/app.css" />
|
||||||
{% block stylesheets %}{% endblock %}
|
{% block stylesheets %}{% endblock %}
|
||||||
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
|
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
<header>{% include 'header.html.twig' %}</header>
|
||||||
<main class="page-pad">
|
<main class="page-pad">
|
||||||
{% include 'header.html.twig' %}
|
|
||||||
{% block body %}{% endblock %}
|
{% block body %}{% endblock %}
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
{% block title %}Brands - Edit{% endblock %}
|
{% block title %}Brands - Edit{% endblock %}
|
||||||
|
|
||||||
{% block form %}
|
{% block form %}
|
||||||
<h1>Edit Brand</h1>
|
<h2>Edit Brand</h2>
|
||||||
|
|
||||||
<div class="small callout">
|
<div class="small callout">
|
||||||
<ul>
|
<ul>
|
||||||
@ -22,8 +22,9 @@
|
|||||||
>Update</button>
|
>Update</button>
|
||||||
{{ form_end(edit_form) }}
|
{{ form_end(edit_form) }}
|
||||||
|
|
||||||
<form method="post" action="{{ path('brand_delete', {'id': brand.id}) }}" onsubmit="return confirm('Are you sure you want to delete this item?');">
|
|
||||||
<input type="hidden" name="_token" value="{{ csrf_token('delete' ~ brand.id) }}">
|
<form method="post" action="{{ path('<?= $route_name ?>_delete', {'<?= $entity_identifier ?>': <?= $entity_twig_var_singular ?>.<?= $entity_identifier ?>}) }}" onsubmit="return confirm('Are you sure you want to delete this item?');">
|
||||||
|
<input type="hidden" name="_token" value="{{ csrf_token('delete' ~ <?= $entity_twig_var_singular ?>.<?= $entity_identifier ?>) }}">
|
||||||
<button type="submit" class="alert button expanded">Delete</button>
|
<button type="submit" class="alert button expanded">Delete</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
30
templates/cpu/edit.html.twig
Normal file
30
templates/cpu/edit.html.twig
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
{% extends 'form.html.twig' %}
|
||||||
|
|
||||||
|
{% block title %}Cpu - Edit{% endblock %}
|
||||||
|
|
||||||
|
{% block form %}
|
||||||
|
<h2>Edit Cpu</h2>
|
||||||
|
|
||||||
|
<div class="small callout">
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="{{ path('app_cpu_index') }}">Back to the list</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="large primary callout">
|
||||||
|
{{ form_start(edit_form) }}
|
||||||
|
{{ form_widget(edit_form) }}
|
||||||
|
<button
|
||||||
|
type="submit"
|
||||||
|
class="success button expanded"
|
||||||
|
>Update</button>
|
||||||
|
{{ form_end(edit_form) }}
|
||||||
|
|
||||||
|
<form method="post" action="{{ path('app_cpu_delete', {'id': cpu.id}) }}" onsubmit="return confirm('Are you sure you want to delete this item?');">
|
||||||
|
<input type="hidden" name="_token" value="{{ csrf_token('delete' ~ cpu.id) }}">
|
||||||
|
<button type="submit" class="alert button expanded">Delete</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
111
templates/cpu/index.html.twig
Normal file
111
templates/cpu/index.html.twig
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
{% extends 'base.html.twig' %}
|
||||||
|
|
||||||
|
{% block title %}Cpu{% endblock %}
|
||||||
|
|
||||||
|
{% block body %}
|
||||||
|
<h2>Cpu</h2>
|
||||||
|
|
||||||
|
<div class="small callout primary">
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="{{ path('app_cpu_new') }}">Add Cpu</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<table class="table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th> </th>
|
||||||
|
<th>Id</th>
|
||||||
|
<th>Architecture</th>
|
||||||
|
<th>ProductLine</th>
|
||||||
|
<th>Model</th>
|
||||||
|
<th>PartNumber</th>
|
||||||
|
<th>LotNumber</th>
|
||||||
|
<th>MicroArchitecture</th>
|
||||||
|
<th>CodeName</th>
|
||||||
|
<th>BaseSpeed</th>
|
||||||
|
<th>BoostSpeed</th>
|
||||||
|
<th>Cores</th>
|
||||||
|
<th>Threads</th>
|
||||||
|
<th>Igp</th>
|
||||||
|
<th>Voltage</th>
|
||||||
|
<th>Tdp</th>
|
||||||
|
<th>ProcessNode</th>
|
||||||
|
<th>Count</th>
|
||||||
|
<th>Usable</th>
|
||||||
|
<th>Received</th>
|
||||||
|
<th>Link</th>
|
||||||
|
<th>Notes</th>
|
||||||
|
<th>L1Count</th>
|
||||||
|
<th>L1dSize</th>
|
||||||
|
<th>L1cSize</th>
|
||||||
|
<th>L1uSize</th>
|
||||||
|
<th>L1Way</th>
|
||||||
|
<th>L2Count</th>
|
||||||
|
<th>L2Size</th>
|
||||||
|
<th>L2Way</th>
|
||||||
|
<th>L3Count</th>
|
||||||
|
<th>L3Size</th>
|
||||||
|
<th>L3Way</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for cpu in cpus %}
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="{{ path('app_cpu_show', {'id': cpu.id}) }}">
|
||||||
|
View 👁
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="{{ path('app_cpu_edit', {'id': cpu.id}) }}">
|
||||||
|
Edit <span class="edit-icon">✎</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td>{{ cpu.id }}</td>
|
||||||
|
<td>{{ cpu.architecture }}</td>
|
||||||
|
<td>{{ cpu.productLine }}</td>
|
||||||
|
<td>{{ cpu.model }}</td>
|
||||||
|
<td>{{ cpu.partNumber }}</td>
|
||||||
|
<td>{{ cpu.lotNumber }}</td>
|
||||||
|
<td>{{ cpu.microArchitecture }}</td>
|
||||||
|
<td>{{ cpu.codeName }}</td>
|
||||||
|
<td>{{ cpu.baseSpeed }}</td>
|
||||||
|
<td>{{ cpu.boostSpeed }}</td>
|
||||||
|
<td>{{ cpu.cores }}</td>
|
||||||
|
<td>{{ cpu.threads }}</td>
|
||||||
|
<td>{{ cpu.igp }}</td>
|
||||||
|
<td>{{ cpu.voltage }}</td>
|
||||||
|
<td>{{ cpu.tdp }}</td>
|
||||||
|
<td>{{ cpu.processNode }}</td>
|
||||||
|
<td>{{ cpu.count }}</td>
|
||||||
|
<td>{{ cpu.usable ? 'Yes' : 'No' }}</td>
|
||||||
|
<td>{{ cpu.received ? 'Yes' : 'No' }}</td>
|
||||||
|
<td>{{ cpu.link }}</td>
|
||||||
|
<td>{{ cpu.notes }}</td>
|
||||||
|
<td>{{ cpu.L1Count }}</td>
|
||||||
|
<td>{{ cpu.L1dSize }}</td>
|
||||||
|
<td>{{ cpu.L1cSize }}</td>
|
||||||
|
<td>{{ cpu.L1uSize }}</td>
|
||||||
|
<td>{{ cpu.L1Way }}</td>
|
||||||
|
<td>{{ cpu.L2Count }}</td>
|
||||||
|
<td>{{ cpu.L2Size }}</td>
|
||||||
|
<td>{{ cpu.L2Way }}</td>
|
||||||
|
<td>{{ cpu.L3Count }}</td>
|
||||||
|
<td>{{ cpu.L3Size }}</td>
|
||||||
|
<td>{{ cpu.L3Way }}</td>
|
||||||
|
</tr>
|
||||||
|
{% else %}
|
||||||
|
<tr>
|
||||||
|
<td colspan="33">no records found</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
{% endblock %}
|
23
templates/cpu/new.html.twig
Normal file
23
templates/cpu/new.html.twig
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
{% extends 'form.html.twig' %}
|
||||||
|
|
||||||
|
{% block title %}Cpu - New{% endblock %}
|
||||||
|
|
||||||
|
{% block form %}
|
||||||
|
<h2>Add Cpu</h2>
|
||||||
|
|
||||||
|
<div class="small callout">
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="{{ path('app_cpu_index') }}">Back to the list</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="large primary callout">
|
||||||
|
{{ form_start(form) }}
|
||||||
|
{{ form_widget(form) }}
|
||||||
|
<button type="submit" class="success button expanded">Add</button>
|
||||||
|
{{ form_end(form) }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock %}
|
162
templates/cpu/show.html.twig
Normal file
162
templates/cpu/show.html.twig
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
{% extends 'form.html.twig' %}
|
||||||
|
|
||||||
|
{% block title %}Cpu{% endblock %}
|
||||||
|
|
||||||
|
{% block form %}
|
||||||
|
<h2>Brand</h2>
|
||||||
|
|
||||||
|
<div class="callout">
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="{{ path('app_cpu_index') }}">Back to the list</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="{{ path('app_cpu_edit', {'id': cpu.id}) }}">Edit</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<hr/>
|
||||||
|
|
||||||
|
|
||||||
|
<form method="post" action="{{ path('app_cpu_delete', {'id': cpu.id}) }}" onsubmit="return confirm('Are you sure you want to delete this item?');">
|
||||||
|
<input type="hidden" name="_token" value="{{ csrf_token('delete' ~ cpu.id) }}">
|
||||||
|
<button type="submit" class="alert button expanded">Delete</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="large primary callout">
|
||||||
|
<table class="table">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th>Id</th>
|
||||||
|
<td>{{ cpu.id }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Architecture</th>
|
||||||
|
<td>{{ cpu.architecture }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>ProductLine</th>
|
||||||
|
<td>{{ cpu.productLine }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Model</th>
|
||||||
|
<td>{{ cpu.model }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>PartNumber</th>
|
||||||
|
<td>{{ cpu.partNumber }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>LotNumber</th>
|
||||||
|
<td>{{ cpu.lotNumber }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>MicroArchitecture</th>
|
||||||
|
<td>{{ cpu.microArchitecture }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>CodeName</th>
|
||||||
|
<td>{{ cpu.codeName }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>BaseSpeed</th>
|
||||||
|
<td>{{ cpu.baseSpeed }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>BoostSpeed</th>
|
||||||
|
<td>{{ cpu.boostSpeed }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Cores</th>
|
||||||
|
<td>{{ cpu.cores }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Threads</th>
|
||||||
|
<td>{{ cpu.threads }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Igp</th>
|
||||||
|
<td>{{ cpu.igp }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Voltage</th>
|
||||||
|
<td>{{ cpu.voltage }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Tdp</th>
|
||||||
|
<td>{{ cpu.tdp }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>ProcessNode</th>
|
||||||
|
<td>{{ cpu.processNode }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Count</th>
|
||||||
|
<td>{{ cpu.count }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Usable</th>
|
||||||
|
<td>{{ cpu.usable ? 'Yes' : 'No' }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Received</th>
|
||||||
|
<td>{{ cpu.received ? 'Yes' : 'No' }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Link</th>
|
||||||
|
<td>{{ cpu.link }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Notes</th>
|
||||||
|
<td>{{ cpu.notes }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>L1Count</th>
|
||||||
|
<td>{{ cpu.L1Count }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>L1dSize</th>
|
||||||
|
<td>{{ cpu.L1dSize }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>L1cSize</th>
|
||||||
|
<td>{{ cpu.L1cSize }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>L1uSize</th>
|
||||||
|
<td>{{ cpu.L1uSize }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>L1Way</th>
|
||||||
|
<td>{{ cpu.L1Way }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>L2Count</th>
|
||||||
|
<td>{{ cpu.L2Count }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>L2Size</th>
|
||||||
|
<td>{{ cpu.L2Size }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>L2Way</th>
|
||||||
|
<td>{{ cpu.L2Way }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>L3Count</th>
|
||||||
|
<td>{{ cpu.L3Count }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>L3Size</th>
|
||||||
|
<td>{{ cpu.L3Size }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>L3Way</th>
|
||||||
|
<td>{{ cpu.L3Way }}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
@ -8,7 +8,7 @@
|
|||||||
{% block body %}
|
{% block body %}
|
||||||
<div class="grid-container">
|
<div class="grid-container">
|
||||||
<div class="grid-x grid-margin-x">
|
<div class="grid-x grid-margin-x">
|
||||||
<div class="cell large-8 large-offset-2 medium-10 medium-offset-1 small-12">
|
<div class="cell medium-10 small-12">
|
||||||
{% block form %}{% endblock %}
|
{% block form %}{% endblock %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
{% block title %}Edit Fpu{% endblock %}
|
{% block title %}Edit Fpu{% endblock %}
|
||||||
|
|
||||||
{% block form %}
|
{% block form %}
|
||||||
<h1>Edit Fpu</h1>
|
<h2>Edit FPU</h2>
|
||||||
|
|
||||||
<div class="small callout">
|
<div class="small callout">
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
{% extends 'base.html.twig' %}
|
{% extends 'base.html.twig' %}
|
||||||
|
|
||||||
{% block title %}Fpu index{% endblock %}
|
{% block title %}FPUs{% endblock %}
|
||||||
|
|
||||||
{% block body %}
|
{% block body %}
|
||||||
<h1>Fpu index</h1>
|
<h2>FPUs</h2>
|
||||||
|
|
||||||
<div class="small callout primary">
|
<div class="small callout primary">
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
{% extends 'form.html.twig' %}
|
{% extends 'form.html.twig' %}
|
||||||
|
|
||||||
{% block title %}New Fpu{% endblock %}
|
{% block title %}Add FPU{% endblock %}
|
||||||
|
|
||||||
{% block form %}
|
{% block form %}
|
||||||
<h2>Add Fpu</h2>
|
<h2>Add FPU</h2>
|
||||||
|
|
||||||
<div class="small callout">
|
<div class="small callout">
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
{% extends 'form.html.twig' %}
|
{% extends 'form.html.twig' %}
|
||||||
|
|
||||||
{% block title %}Fpu{% endblock %}
|
{% block title %}FPU{% endblock %}
|
||||||
|
|
||||||
{% block form %}
|
{% block form %}
|
||||||
<h2>Fpu</h2>
|
<h2>FPU</h2>
|
||||||
|
|
||||||
<div class="callout">
|
<div class="callout">
|
||||||
<ul>
|
<ul>
|
||||||
|
Loading…
Reference in New Issue
Block a user