1
0
mirror of https://github.com/ToxicCrack/PrintABrick.git synced 2025-05-15 20:00:08 -07:00

show only themes containing sets

This commit is contained in:
Daniel 2020-03-20 11:48:38 +01:00
parent be3a9cea65
commit 843d92c534
4 changed files with 29 additions and 2 deletions

View File

@ -62,6 +62,13 @@ The elasticsearch index must be build:
The import from rebrickable may complete with the message "Done with X errors.". This is normal. Most probably some parts/sets are faulty and haven't be imported. The import from rebrickable may complete with the message "Done with X errors.". This is normal. Most probably some parts/sets are faulty and haven't be imported.
## Added Features
app/config/config.yml
`app.show_only_themes_containing_sets: true`
If this is set to true, only themes are visible in the drop down, that have sets in it.
--- ---
From this point on, the original Readme text: From this point on, the original Readme text:

View File

@ -36,6 +36,9 @@ services:
arguments: arguments:
$cache: '@app.brickset.cache_provider' $cache: '@app.brickset.cache_provider'
FrontBundle\Form\Search\SetSearchType:
arguments:
$showOnlyThemesContainingSets: %app.show_only_themes_containing_sets%
# Filesystem # Filesystem

View File

@ -6,4 +6,8 @@ use AppBundle\Repository\BaseRepository;
class ThemeRepository extends BaseRepository class ThemeRepository extends BaseRepository
{ {
public function findAll()
{
return $this->findBy(array(), array('name' => 'ASC'));
}
} }

View File

@ -23,19 +23,32 @@ class SetSearchType extends AbstractType
/** @var SetRepository */ /** @var SetRepository */
private $setRepository; private $setRepository;
private $showOnlyThemesContainingSets;
/** /**
* SetSearchType constructor. * SetSearchType constructor.
* *
* @param EntityManagerInterface $em * @param EntityManagerInterface $em
*/ */
public function __construct(EntityManagerInterface $em) public function __construct(EntityManagerInterface $em, bool $showOnlyThemesContainingSets)
{ {
$this->themeRepository = $em->getRepository(Theme::class); $this->themeRepository = $em->getRepository(Theme::class);
$this->setRepository = $em->getRepository(Set::class); $this->setRepository = $em->getRepository(Set::class);
$this->showOnlyThemesContainingSets = $showOnlyThemesContainingSets;
} }
public function buildForm(FormBuilderInterface $builder, array $options) public function buildForm(FormBuilderInterface $builder, array $options)
{ {
$themes = $this->themeRepository->findAll();
if($this->showOnlyThemesContainingSets) {
$tmp = $themes;
foreach($tmp as $k => $theme) {
if($theme->getSets()->count() == 0) {
unset($themes[$k]);
}
}
}
$builder $builder
->add('query', TextType::class, [ ->add('query', TextType::class, [
'required' => false, 'required' => false,
@ -64,7 +77,7 @@ class SetSearchType extends AbstractType
]) ])
->add('theme', ChoiceType::class, [ ->add('theme', ChoiceType::class, [
'label' => 'set.form.theme', 'label' => 'set.form.theme',
'choices' => $this->themeRepository->findAll(), 'choices' => $themes,
'choice_label' => 'fullName', 'choice_label' => 'fullName',
'choice_translation_domain' => false, 'choice_translation_domain' => false,
'group_by' => function ($theme, $key, $index) { 'group_by' => function ($theme, $key, $index) {