Update CPU list view to be a bit more managable
This commit is contained in:
parent
fd6217eddc
commit
5e7658c7b9
@ -4,6 +4,7 @@ namespace App\Controller;
|
||||
|
||||
use App\Entity\BrandCategory;
|
||||
use App\Form\BrandCategoryType;
|
||||
use App\Traits\FormControllerTrait;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
@ -13,72 +14,44 @@ use Symfony\Component\Routing\Annotation\Route;
|
||||
#[Route('/brand/category')]
|
||||
class BrandCategoryController extends AbstractController
|
||||
{
|
||||
#[Route('/', name: 'brand-category_index', methods: ['GET'])]
|
||||
public function index(EntityManagerInterface $entityManager): Response
|
||||
{
|
||||
$brandCategories = $entityManager
|
||||
->getRepository(BrandCategory::class)
|
||||
->findAll();
|
||||
use FormControllerTrait;
|
||||
|
||||
return $this->render('brand_category/index.html.twig', [
|
||||
'brand_categories' => $brandCategories,
|
||||
]);
|
||||
protected const ENTITY = BrandCategory::class;
|
||||
protected const TEMPLATE_PATH = 'brand_category/';
|
||||
protected const ROUTE_PREFIX = 'brand-category_';
|
||||
protected const FORM = BrandCategoryType::class;
|
||||
|
||||
public function __construct(private readonly EntityManagerInterface $entityManager)
|
||||
{
|
||||
}
|
||||
|
||||
#[Route('/', name: 'brand-category_index', methods: ['GET'])]
|
||||
public function index(): Response
|
||||
{
|
||||
return $this->indexView('brand_categories');
|
||||
}
|
||||
|
||||
#[Route('/new', name: 'brand-category_new', methods: ['GET', 'POST'])]
|
||||
public function new(Request $request, EntityManagerInterface $entityManager): Response
|
||||
{
|
||||
$brandCategory = new BrandCategory();
|
||||
$form = $this->createForm(BrandCategoryType::class, $brandCategory);
|
||||
$form->handleRequest($request);
|
||||
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
$entityManager->persist($brandCategory);
|
||||
$entityManager->flush();
|
||||
|
||||
return $this->redirectToRoute('brand-category_index', [], Response::HTTP_SEE_OTHER);
|
||||
}
|
||||
|
||||
return $this->renderForm('brand_category/new.html.twig', [
|
||||
'brand_category' => $brandCategory,
|
||||
'form' => $form,
|
||||
]);
|
||||
return $this->itemCreate($request, 'brand_category');
|
||||
}
|
||||
|
||||
#[Route('/{name}', name: 'brand-category_show', methods: ['GET'])]
|
||||
public function show(BrandCategory $brandCategory): Response
|
||||
{
|
||||
return $this->render('brand_category/show.html.twig', [
|
||||
'brand_category' => $brandCategory,
|
||||
]);
|
||||
return $this->itemView($brandCategory, 'brand_category');
|
||||
}
|
||||
|
||||
#[Route('/{name}/edit', name: 'brand-category_edit', methods: ['GET', 'POST'])]
|
||||
public function edit(Request $request, BrandCategory $brandCategory, EntityManagerInterface $entityManager): Response
|
||||
public function edit(Request $request, BrandCategory $brandCategory): Response
|
||||
{
|
||||
$form = $this->createForm(BrandCategoryType::class, $brandCategory);
|
||||
$form->handleRequest($request);
|
||||
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
$entityManager->flush();
|
||||
|
||||
return $this->redirectToRoute('brand-category_index', [], Response::HTTP_SEE_OTHER);
|
||||
}
|
||||
|
||||
return $this->renderForm('brand_category/edit.html.twig', [
|
||||
'brand_category' => $brandCategory,
|
||||
'form' => $form,
|
||||
]);
|
||||
return $this->itemUpdate($request, $brandCategory, 'brand_category');
|
||||
}
|
||||
|
||||
#[Route('/{name}', name: 'brand-category_delete', methods: ['POST'])]
|
||||
public function delete(Request $request, BrandCategory $brandCategory, EntityManagerInterface $entityManager): Response
|
||||
public function delete(Request $request, BrandCategory $brandCategory): Response
|
||||
{
|
||||
if ($this->isCsrfTokenValid('delete'.$brandCategory->getName(), $request->request->get('_token'))) {
|
||||
$entityManager->remove($brandCategory);
|
||||
$entityManager->flush();
|
||||
}
|
||||
|
||||
return $this->redirectToRoute('brand_category_index', [], Response::HTTP_SEE_OTHER);
|
||||
return $this->deleteCSRF($request, $brandCategory);
|
||||
}
|
||||
}
|
||||
|
@ -27,7 +27,26 @@ class CpuController extends AbstractController {
|
||||
#[Route('/', name: 'cpu_index', methods: ['GET'])]
|
||||
public function index(): Response
|
||||
{
|
||||
return $this->itemListView('cpus', []);
|
||||
$template = self::TEMPLATE_PATH . 'index.html.twig';
|
||||
|
||||
$items = $this->entityManager->getRepository(self::ENTITY)->findBy([], [
|
||||
'productLine' => 'ASC',
|
||||
'model' => 'ASC',
|
||||
]);
|
||||
|
||||
$amd = array_filter($items, static fn (Cpu $cpu) => $cpu->getBrand()->getName() === 'AMD' && $cpu->isReceived());
|
||||
$intel = array_filter($items, static fn (Cpu $cpu) => $cpu->getBrand()->getName() === 'Intel' && $cpu->isReceived());
|
||||
$others = array_filter($items, static fn (Cpu $cpu) => ( ! in_array($cpu->getBrand()->getName(), ['AMD','Intel'])) && $cpu->isReceived());
|
||||
$notReceived = array_filter($items, static fn(CPU $cpu) => $cpu->isReceived() === FALSE);
|
||||
|
||||
return $this->render($template, [
|
||||
'all' => [
|
||||
'not_acquired' => $notReceived,
|
||||
'amd' => $amd,
|
||||
'intel' => $intel,
|
||||
'others' => $others,
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
#[Route('/new', name: 'cpu_new', methods: ['GET', 'POST'])]
|
||||
|
@ -13,6 +13,33 @@
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<ul
|
||||
class="tabs"
|
||||
data-deep-link="true"
|
||||
data-update-history="true"
|
||||
data-deep-link-smudge="true"
|
||||
data-deep-link-smudge-delay="500"
|
||||
data-tabs
|
||||
id="classifications"
|
||||
>
|
||||
<li class="tabs-title is-active">
|
||||
<a href="#not_acquired">On the Way</a>
|
||||
</li>
|
||||
<li class="tabs-title" aria-selected="true">
|
||||
<a href="#amd">AMD</a>
|
||||
</li>
|
||||
<li class="tabs-title">
|
||||
<a href="#intel">Intel</a>
|
||||
</li>
|
||||
<li class="tabs-title">
|
||||
<a href="#others">Others</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<div class="tabs-content" data-tabs-content="classifications">
|
||||
{% for label, cpus in all %}
|
||||
<div class="tabs-panel {% if label == 'not_acquired' %}is-active{% endif %}" id="{{ label }}">
|
||||
<table class="hover scroll sortable stack">
|
||||
<thead>
|
||||
<tr>
|
||||
@ -31,13 +58,9 @@
|
||||
<th>L2 Cache</th>
|
||||
<th>L3 Cache</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>
|
||||
</tr>
|
||||
</thead>
|
||||
@ -99,13 +122,9 @@
|
||||
{% endif %}
|
||||
</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>
|
||||
</tr>
|
||||
{% else %}
|
||||
@ -115,4 +134,7 @@
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
Loading…
Reference in New Issue
Block a user