6 Commits

Author SHA1 Message Date
5fbd555bb3 Start of changing tabled to flexboxes 2026-01-07 08:18:56 +01:00
de4915972c Merge pull request 'Autowire database connection.' (#29) from feature/autowired-database into master
Reviewed-on: #29
2026-01-04 20:31:32 +01:00
9c2405dd3f Merge branch 'refs/heads/master' into feature/autowired-database
# Conflicts:
#	templates/productList.html.twig
2026-01-04 20:29:35 +01:00
da6a8f86c2 Update 2026-01-02 12:21:33 +01:00
2c40fb0e61 Update 2026-01-02 12:15:42 +01:00
5314a6a70a Fix search twig cache. 2026-01-01 18:46:18 +01:00
5 changed files with 703 additions and 493 deletions

2
bin/cachewarmup Executable file
View File

@@ -0,0 +1,2 @@
#!/usr/bin/env bash
bin/cli php console.php app:cache:warm-twig

1151
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -16,7 +16,7 @@ use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\HttpFoundation\RequestStack;
use Twig\Environment;
#[AsCommand(name: 'app:cache:warm-twig', description: '')]
#[AsCommand(name: 'app:cache:warm-twig', description: 'Warmup twig cache')]
class CacheWarmCommand extends Command
{
public function __construct(

View File

@@ -17,6 +17,6 @@ final class SearchController extends BaseController
->orWhere([['name', 'like', "%$search%"]])
->orWhere([['subTitle', 'like', "%$search%"]])->get();
return $this->render('productList.html.twig', ['products' => $products ?? [], 'search' => $search]);
return $this->render('productList.html.twig', ['products' => $products ?? [], 'search' => $search, 'listType' => 'search_'.$search]);
}
}

View File

@@ -3,21 +3,22 @@
{% block content %}
{% cache 'list_' ~ listType %}
<div class="table-responsive">
<table class='table table-hover'>
<thead>
<tr>
<th></th>
<th></th>
<th>Name</th>
<th>Categories</th>
<th></th>
<th class="text-end">Lowest Price</th>
<th class="text-end">Current Price</th>
<th></th>
</tr>
</thead>
{# <table class='table table-hover'>#}
{# <thead>#}
{# <tr>#}
{# <th></th>#}
{# <th></th>#}
{# <th>Name</th>#}
{# <th>Categories</th>#}
{# <th></th>#}
{# <th class="text-end">Lowest Price</th>#}
{# <th class="text-end">Current Price</th>#}
{# <th></th>#}
{# </tr>#}
{# </thead>#}
{% for product in products %}
<tr>
<div class="d-inline-flex">
<td class="align-middle font-weight-bold h3"><a class="text-warning text-decoration-none"
href="{{ path('app_star', {'productId': product.id}) }}">{% if product.starred == true %}{% else %}{% endif %}</a></td>
<td class="align-middle" style="width: 120px;"><img src='{{ product.image }}&width=70' class='img-thumbnail' alt='{{ product.name }}'/></td>
@@ -37,8 +38,8 @@
<span class="badge text-bg-light">{{ product.subTitle }}</span>
</td>
<td class="align-middle">
<nav aria-label="breadcrumb mb-0" style="--bs-breadcrumb-divider: '>';" >
<ol class="breadcrumb">
<nav aria-label="breadcrumb" style="--bs-breadcrumb-divider: '>';" >
<ol class="breadcrumb mb-0">
{% for category in product.categories %}
<li class="breadcrumb-item" aria-current="page"><a class="breadcrumb-item text-decoration-none" href="{{ path('app_category', {'category': category}) }}">{{ category }}</a></li>
{% endfor %}
@@ -51,14 +52,14 @@
<td class="align-middle">
<div class="d-flex flex-row">
{% if product.price.last.price != product.price.last.productStandardPrice %}<span
class="badge text-bg-warning text-decoration-line-through flex-fill">{{ product.price.last.productStandardPrice | format_currency('PLN', {}, 'pl') }}</span>&nbsp;<span
class="badge text-bg-warning text-decoration-line-through flex-fill">{{ product.price.last.productStandardPrice | format_currency('PLN', {}, 'pl') }}</span> <span
class="badge text-bg-success flex-fill">{{ ((1 - product.price.last.price / product.price.last.productStandardPrice)*100)|number_format(0) }}%</span>
{% endif %}
</div>
</td>
</tr>
</div>
{% endfor %}
</table>
{# </table>#}
</div>
{% endcache %}
{% endblock %}