mirror of
https://github.com/ToxicCrack/PrintABrick.git
synced 2025-05-17 04:40:08 -07:00
Add image preview to autocomplete search
This commit is contained in:
parent
ed5c70d349
commit
82968016bf
@ -73,7 +73,8 @@
|
|||||||
fields: {
|
fields: {
|
||||||
title: 'name',
|
title: 'name',
|
||||||
description: 'id',
|
description: 'id',
|
||||||
url: 'url'
|
url: 'url',
|
||||||
|
image: 'img'
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
@ -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] }
|
||||||
background: { size: [900, 600], position: center, color: '#FFFFFF' }
|
thumbnail: { size: [600, 400], mode: inset, allow_upscale: true }
|
||||||
|
background: { size: [900, 600], position: center, color: '#FFFFFF' }
|
@ -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'),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -83,11 +89,12 @@ class SearchController extends Controller
|
|||||||
foreach ($setsResult as $set) {
|
foreach ($setsResult as $set) {
|
||||||
$id = isset($set->getResult()->getHighlights()['id']) ? $set->getResult()->getHighlights()['id'][0] : $set->getTransformed()->getId();
|
$id = isset($set->getResult()->getHighlights()['id']) ? $set->getResult()->getHighlights()['id'][0] : $set->getTransformed()->getId();
|
||||||
$name = isset($set->getResult()->getHighlights()['name']) ? $set->getResult()->getHighlights()['name'][0] : $set->getTransformed()->getName();
|
$name = isset($set->getResult()->getHighlights()['name']) ? $set->getResult()->getHighlights()['name'][0] : $set->getTransformed()->getName();
|
||||||
|
|
||||||
$sets[] = [
|
$sets[] = [
|
||||||
'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'),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user