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

Add image preview to autocomplete search

This commit is contained in:
Unknown 2017-05-23 01:49:59 +02:00
parent ed5c70d349
commit 82968016bf
4 changed files with 24 additions and 11 deletions

View File

@ -73,7 +73,8 @@
fields: { fields: {
title: 'name', title: 'name',
description: 'id', description: 'id',
url: 'url' url: 'url',
image: 'img'
} }
}); });
</script> </script>

View File

@ -10,7 +10,8 @@ liip_imagine:
cache: ~ cache: ~
default_image: "/resources/images/noimage_min.png" default_image: "/resources/images/noimage_min.png"
filters: filters:
thumbnail: { size: [200, 200], mode: inset, allow_upscale: true } upscale: { min: [230, 230] }
thumbnail: { size: [230, 230], mode: inset, allow_upscale: true }
background: { size: [250, 250], position: center, color: '#FFFFFF' } background: { size: [250, 250], position: center, color: '#FFFFFF' }
set_large: set_large:
data_loader: set_image_loader data_loader: set_image_loader
@ -18,6 +19,7 @@ liip_imagine:
quality: 90 quality: 90
default_image: "/resources/images/noimage_large.png" default_image: "/resources/images/noimage_large.png"
filters: filters:
upscale: { min: [840, 580] }
thumbnail: { size: [840, 580], mode: inset, allow_upscale: true } thumbnail: { size: [840, 580], mode: inset, allow_upscale: true }
background: { size: [900, 600], position: center, color: '#FFFFFF' } background: { size: [900, 600], position: center, color: '#FFFFFF' }
part_min: part_min:
@ -26,8 +28,8 @@ liip_imagine:
cache: ~ cache: ~
default_image: "/resources/images/noimage_min.png" default_image: "/resources/images/noimage_min.png"
filters: filters:
upscale: {min: [200, 200]} upscale: { min: [230, 230] }
thumbnail: { size: [200, 200], mode: inset, allow_upscale: true } thumbnail: { size: [230, 230], mode: inset, allow_upscale: true }
background: { size: [250, 250], position: center, color: '#FFFFFF' } background: { size: [250, 250], position: center, color: '#FFFFFF' }
part_large: part_large:
data_loader: part_image_loader data_loader: part_image_loader
@ -35,5 +37,6 @@ liip_imagine:
quality: 90 quality: 90
default_image: "/resources/images/noimage_large.png" default_image: "/resources/images/noimage_large.png"
filters: filters:
thumbnail: { size: [840, 580], mode: inset, allow_upscale: true } upscale: { min: [600, 400] }
thumbnail: { size: [600, 400], mode: inset, allow_upscale: true }
background: { size: [900, 600], position: center, color: '#FFFFFF' } background: { size: [900, 600], position: center, color: '#FFFFFF' }

View File

@ -8,6 +8,8 @@ use AppBundle\Repository\Search\ModelRepository;
use AppBundle\Repository\Search\SetRepository; use AppBundle\Repository\Search\SetRepository;
use FOS\ElasticaBundle\HybridResult; use FOS\ElasticaBundle\HybridResult;
use FOS\ElasticaBundle\Repository; use FOS\ElasticaBundle\Repository;
use Liip\ImagineBundle\Imagine\Cache\CacheManager;
use Liip\ImagineBundle\Imagine\Cache\Resolver\CacheResolver;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\JsonResponse;
@ -53,6 +55,9 @@ class SearchController extends Controller
{ {
$query = trim(strip_tags($request->get('query'))); $query = trim(strip_tags($request->get('query')));
/** @var CacheManager $liip */
$liip = $this->get('liip_imagine.cache.manager');
/** var FOS\ElasticaBundle\Manager\RepositoryManager */ /** var FOS\ElasticaBundle\Manager\RepositoryManager */
$repositoryManager = $this->get('fos_elastica.manager'); $repositoryManager = $this->get('fos_elastica.manager');
@ -75,6 +80,7 @@ class SearchController extends Controller
'id' => $id, 'id' => $id,
'name' => $name, 'name' => $name,
'url' => $this->generateUrl('model_detail', ['id' => $model->getTransformed()->getId()]), 'url' => $this->generateUrl('model_detail', ['id' => $model->getTransformed()->getId()]),
'img' => $liip->getBrowserPath('-1/'.$model->getTransformed()->getId().'.png','part_min'),
]; ];
} }
@ -88,6 +94,7 @@ class SearchController extends Controller
'id' => $id, 'id' => $id,
'name' => $name, 'name' => $name,
'url' => $this->generateUrl('set_detail', ['id' => $set->getTransformed()->getId()]), 'url' => $this->generateUrl('set_detail', ['id' => $set->getTransformed()->getId()]),
'img' => $liip->getBrowserPath($set->getTransformed()->getId().'.jpg','set_min'),
]; ];
} }

View File

@ -13,23 +13,25 @@ class ModelRepository extends Repository
* @return \Elastica\Query * @return \Elastica\Query
*/ */
public function getSearchQuery(ModelSearch $modelSearch) { public function getSearchQuery(ModelSearch $modelSearch) {
$boolQuery = new \Elastica\Query\BoolQuery(); $boolQuery = new Query\BoolQuery();
if ($searchQuery = $modelSearch->getQuery()) { if ($searchQuery = $modelSearch->getQuery()) {
$query = new \Elastica\Query\MultiMatch(); $query = new Query\MultiMatch();
$query->setFields(['name', 'id', 'aliases.id', 'keywords.name']); $query->setFields(['name', 'id', 'aliases.id', 'keywords.name']);
$query->setQuery($searchQuery); $query->setQuery($searchQuery);
$query->setFuzziness(0.7); $query->setFuzziness(0.7);
$query->setMinimumShouldMatch('80%'); $query->setMinimumShouldMatch('80%');
$query->setOperator('and');
} else { } else {
$query = new \Elastica\Query\MatchAll(); $query = new Query\MatchAll();
} }
$boolQuery->addMust($query); $boolQuery->addMust($query);
if ($modelSearch->getCategory()) { if ($modelSearch->getCategory()) {
$categoryQuery = new \Elastica\Query\Match(); $categoryQuery = new Query\Match();
$categoryQuery->setField('category.id', $modelSearch->getCategory()->getId()); $categoryQuery->setField('category.id', $modelSearch->getCategory()->getId());
$boolQuery->addFilter($categoryQuery); $boolQuery->addFilter($categoryQuery);
} }