mirror of
https://github.com/ToxicCrack/PrintABrick.git
synced 2025-05-20 06:00:08 -07:00
Fix coding style
This commit is contained in:
parent
25bdbad8df
commit
9f91778632
@ -11,3 +11,17 @@ $(document).ready(function () {
|
|||||||
});
|
});
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$(document).ajaxComplete(function () {
|
||||||
|
$('.image.load img')
|
||||||
|
.visibility({
|
||||||
|
type : 'image',
|
||||||
|
transition : 'fade in',
|
||||||
|
duration : 1000
|
||||||
|
})
|
||||||
|
;
|
||||||
|
|
||||||
|
$('.ui.rating')
|
||||||
|
.rating("disable")
|
||||||
|
;
|
||||||
|
});
|
@ -1,6 +1,6 @@
|
|||||||
$(document).bind('ready ajaxComplete', function(){
|
$(document).ready(function(){
|
||||||
$('.ui.dropdown')
|
$('.ui.dropdown')
|
||||||
.dropdown()
|
.dropdown('restore defaults')
|
||||||
;
|
;
|
||||||
|
|
||||||
$('.image.load img')
|
$('.image.load img')
|
||||||
@ -33,4 +33,8 @@ $(document).bind('ready ajaxComplete', function(){
|
|||||||
inline: true
|
inline: true
|
||||||
})
|
})
|
||||||
;
|
;
|
||||||
|
|
||||||
|
$('.ui.modal')
|
||||||
|
.modal('attach events', '.ui.open-modal.button', 'show')
|
||||||
|
;
|
||||||
});
|
});
|
@ -1,4 +1,4 @@
|
|||||||
$alpha = 0.7;
|
$alpha: 0.7;
|
||||||
|
|
||||||
$colors: (
|
$colors: (
|
||||||
-1: #0033B2,
|
-1: #0033B2,
|
||||||
@ -137,3 +137,9 @@ $colors: (
|
|||||||
1007: #8E5597,
|
1007: #8E5597,
|
||||||
9999: #05131D,
|
9999: #05131D,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@each $number, $color in $colors {
|
||||||
|
.color-#{$number} {
|
||||||
|
border-bottom: 2px solid $color;
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,25 @@
|
|||||||
.default-theme {
|
.default-theme {
|
||||||
|
|
||||||
|
.ui.main {
|
||||||
|
padding-top: 40px;
|
||||||
|
min-height: calc(100% - 67px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ui.masthead {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.header {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.breadcrumb {
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
position: absolute;
|
||||||
|
padding: 20px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.ui.fixed + .ui.grid {
|
.ui.fixed + .ui.grid {
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
border: 0;
|
border: 0;
|
||||||
@ -56,3 +76,7 @@
|
|||||||
.ui.text.right {
|
.ui.text.right {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ui.segment.vertical.noborder {
|
||||||
|
border-bottom: 0;
|
||||||
|
}
|
14
app/Resources/assets/style/model.scss
Normal file
14
app/Resources/assets/style/model.scss
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
.model-meta {
|
||||||
|
background: #E0E1E2;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
.quantity {
|
||||||
|
font-weight: 700;
|
||||||
|
color: #444444;
|
||||||
|
}
|
||||||
|
.number {
|
||||||
|
margin: 0.2em;
|
||||||
|
display: inline-block;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
}
|
@ -8,6 +8,14 @@
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.modelviewer-wrapper {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
margin-top: 26%;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
.modelviewer-buttons {
|
.modelviewer-buttons {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
|
17
app/Resources/assets/style/reviews.scss
Normal file
17
app/Resources/assets/style/reviews.scss
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
.ui.comments {
|
||||||
|
max-width: 1200px
|
||||||
|
}
|
||||||
|
|
||||||
|
.ratings {
|
||||||
|
dl dt {
|
||||||
|
font-size: 1.2em;
|
||||||
|
margin-bottom: 0.5em;
|
||||||
|
}
|
||||||
|
dl dd {
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ui.comments .comment > .ratings ~ .content {
|
||||||
|
|
||||||
|
}
|
@ -2,3 +2,7 @@
|
|||||||
|
|
||||||
@import "main";
|
@import "main";
|
||||||
@import "modelviewer";
|
@import "modelviewer";
|
||||||
|
|
||||||
|
@import "model";
|
||||||
|
@import "colors";
|
||||||
|
@import "reviews";
|
@ -6,7 +6,6 @@ set:
|
|||||||
parts: Count of parts
|
parts: Count of parts
|
||||||
minifigs: Minifig count
|
minifigs: Minifig count
|
||||||
rating: Rating
|
rating: Rating
|
||||||
download: Download
|
|
||||||
models:
|
models:
|
||||||
text: |
|
text: |
|
||||||
This set inventory has been obtained from Rebrickable.
|
This set inventory has been obtained from Rebrickable.
|
||||||
@ -19,3 +18,25 @@ set:
|
|||||||
The table below lists all instructions for this set that have been available at <a href="http://service.lego.com/en-gb/buildinginstructions" title="LEGO Customer Service" rel="nofollow">LEGO Customer Services</a>. Those that are no longer listed there may still be available to download.
|
The table below lists all instructions for this set that have been available at <a href="http://service.lego.com/en-gb/buildinginstructions" title="LEGO Customer Service" rel="nofollow">LEGO Customer Services</a>. Those that are no longer listed there may still be available to download.
|
||||||
|
|
||||||
'NA' or 'V39' indicates the US/Canadian version. 'IN' or 'V29' indicates the international version.
|
'NA' or 'V39' indicates the US/Canadian version. 'IN' or 'V29' indicates the international version.
|
||||||
|
|
||||||
|
download:
|
||||||
|
title: Download - %set%
|
||||||
|
sorted:
|
||||||
|
title: Multi-Color
|
||||||
|
text:
|
||||||
|
|
||||||
|
unsorted:
|
||||||
|
title: Uni-Color
|
||||||
|
text:
|
||||||
|
|
||||||
|
warning:
|
||||||
|
title:
|
||||||
|
text: Models of some parts could not be found in LDraw library
|
||||||
|
|
||||||
|
page:
|
||||||
|
model.index: Browse models
|
||||||
|
|
||||||
|
filter:
|
||||||
|
model:
|
||||||
|
search: Search Model
|
||||||
|
category: Category
|
@ -1,7 +1,6 @@
|
|||||||
{% extends 'html.html.twig' %}
|
{% extends 'html.html.twig' %}
|
||||||
|
|
||||||
{% import 'macros/elements.html.twig' as elements %}
|
{% import 'macros/elements.html.twig' as elements %}
|
||||||
{% import 'macros/blocks.html.twig' as blocks %}
|
|
||||||
|
|
||||||
{% block body %}
|
{% block body %}
|
||||||
<div class="ui fixed inverted menu">
|
<div class="ui fixed inverted menu">
|
||||||
@ -23,7 +22,8 @@
|
|||||||
<div class="ui main">
|
<div class="ui main">
|
||||||
<div class="ui container">
|
<div class="ui container">
|
||||||
<div class="ui masthead vertical segment">
|
<div class="ui masthead vertical segment">
|
||||||
<div class="introduction">
|
<h1 class="ui header">{% block header %}{% endblock %}</h1>
|
||||||
|
|
||||||
<div class="ui small breadcrumb">
|
<div class="ui small breadcrumb">
|
||||||
{% for breadcrumb_item in knp_menu_get_breadcrumbs_array(knp_menu_get_current_item('mainMenu')) %}
|
{% for breadcrumb_item in knp_menu_get_breadcrumbs_array(knp_menu_get_current_item('mainMenu')) %}
|
||||||
{% if not loop.last %}
|
{% if not loop.last %}
|
||||||
@ -34,8 +34,6 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
<h1 class="ui header">{% block header %}{% endblock %}</h1>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="ui vertical segment content">
|
<div class="ui vertical segment content">
|
||||||
{% for label, flashes in app.session.flashbag.all %}
|
{% for label, flashes in app.session.flashbag.all %}
|
||||||
@ -53,8 +51,8 @@
|
|||||||
{% endblock page %}
|
{% endblock page %}
|
||||||
<div class="ui black inverted vertical footer segment stripe">
|
<div class="ui black inverted vertical footer segment stripe">
|
||||||
{% block footer %}
|
{% block footer %}
|
||||||
<div class="ui center aligned container">
|
<div class="ui aligned container">
|
||||||
|
<p>LEGO®, the LEGO logo, the Minifigure, and the Brick and Knob configurations are trademarks of the LEGO Group of Companies which does not sponsor, authorize, or endorse this site.</p>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
{% extends 'base.html.twig' %}
|
{% extends 'base.html.twig' %}
|
||||||
|
|
||||||
{% block page %}
|
{% block page %}
|
||||||
|
<div class="ui main">
|
||||||
<div class="ui grid massive message vertical">
|
<div class="ui grid massive message vertical">
|
||||||
<div class="ui container">
|
<div class="ui container">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@ -10,5 +11,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
@ -10,7 +10,6 @@
|
|||||||
{% for set in sets %}
|
{% for set in sets %}
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<a href="{{ url('set_detail', {'number': set.number}) }}">
|
<a href="{{ url('set_detail', {'number': set.number}) }}">
|
||||||
<img class="ui bordered image medium" src="{{ set.number|setImage|imagine_filter('rebrickable_set_min') }}">
|
|
||||||
<p>{{ set.number }} - {{ set.name }}</p>
|
<p>{{ set.number }} - {{ set.name }}</p>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -14,3 +14,11 @@ web_profiler:
|
|||||||
|
|
||||||
swiftmailer:
|
swiftmailer:
|
||||||
disable_delivery: true
|
disable_delivery: true
|
||||||
|
|
||||||
|
doctrine:
|
||||||
|
dbal:
|
||||||
|
default_connection: default
|
||||||
|
connections:
|
||||||
|
default:
|
||||||
|
driver: pdo_sqlite
|
||||||
|
path: "%kernel.cache_dir%/test.db"
|
@ -11,6 +11,6 @@ services:
|
|||||||
app.twig_extension:
|
app.twig_extension:
|
||||||
class: AppBundle\Twig\AppExtension
|
class: AppBundle\Twig\AppExtension
|
||||||
public: false
|
public: false
|
||||||
arguments: ['@api.manager.rebrickable', '@app.transformer.format']
|
arguments: ['@app.transformer.format']
|
||||||
tags:
|
tags:
|
||||||
- { name: twig.extension }
|
- { name: twig.extension }
|
@ -12,8 +12,6 @@ use AppBundle\Api\Client\Brickset\Entity\Year;
|
|||||||
use AppBundle\Api\Exception\ApiException;
|
use AppBundle\Api\Exception\ApiException;
|
||||||
use AppBundle\Api\Exception\AuthenticationFailedException;
|
use AppBundle\Api\Exception\AuthenticationFailedException;
|
||||||
use AppBundle\Api\Exception\CallFailedException;
|
use AppBundle\Api\Exception\CallFailedException;
|
||||||
use AppBundle\Api\Exception\EmptyResponseException;
|
|
||||||
use Symfony\Component\Debug\Exception\ContextErrorException;
|
|
||||||
|
|
||||||
class Brickset extends \SoapClient
|
class Brickset extends \SoapClient
|
||||||
{
|
{
|
||||||
@ -85,9 +83,9 @@ class Brickset extends \SoapClient
|
|||||||
|
|
||||||
if (property_exists($result, $method.'Result')) {
|
if (property_exists($result, $method.'Result')) {
|
||||||
return $result->{$method.'Result'};
|
return $result->{$method.'Result'};
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
} catch (\SoapFault $e) {
|
} catch (\SoapFault $e) {
|
||||||
throw new CallFailedException(ApiException::BRICKSET);
|
throw new CallFailedException(ApiException::BRICKSET);
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
@ -96,7 +94,8 @@ class Brickset extends \SoapClient
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getArrayResult($response, $method) {
|
private function getArrayResult($response, $method)
|
||||||
|
{
|
||||||
if ($response && $result = $response->{$method}) {
|
if ($response && $result = $response->{$method}) {
|
||||||
return is_array($result) ? $result : [$result];
|
return is_array($result) ? $result : [$result];
|
||||||
}
|
}
|
||||||
|
@ -3,11 +3,9 @@
|
|||||||
namespace AppBundle\Controller\Brickset;
|
namespace AppBundle\Controller\Brickset;
|
||||||
|
|
||||||
use AppBundle\Api\Exception\ApiException;
|
use AppBundle\Api\Exception\ApiException;
|
||||||
use AppBundle\Api\Exception\EmptyResponseException;
|
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
|
||||||
use AppBundle\Entity\Rebrickable\Set;
|
|
||||||
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 Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
|
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
use Symfony\Component\HttpFoundation\Response;
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ use Symfony\Component\HttpFoundation\Request;
|
|||||||
class SearchController extends Controller
|
class SearchController extends Controller
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @Route("/", name="search_result")
|
* @Route("/", name="search_results")
|
||||||
*/
|
*/
|
||||||
public function searchAction(Request $request)
|
public function searchAction(Request $request)
|
||||||
{
|
{
|
||||||
|
@ -23,7 +23,10 @@ class CategoryFilterType extends AbstractType
|
|||||||
$builder->add('id', Filters\ChoiceFilterType::class, [
|
$builder->add('id', Filters\ChoiceFilterType::class, [
|
||||||
'choices' => $this->categoryRepository->findAll(),
|
'choices' => $this->categoryRepository->findAll(),
|
||||||
'choice_label' => 'name',
|
'choice_label' => 'name',
|
||||||
'label' => 'filter.part.category',
|
'label' => 'filter.model.category',
|
||||||
|
// 'attr' => [
|
||||||
|
// 'class' => 'ui dropdown search selection'
|
||||||
|
// ]
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ class ModelFilterType extends AbstractType
|
|||||||
{
|
{
|
||||||
$builder->add('search', Filters\TextFilterType::class, [
|
$builder->add('search', Filters\TextFilterType::class, [
|
||||||
'apply_filter' => [$this, 'modelSearchCallback'],
|
'apply_filter' => [$this, 'modelSearchCallback'],
|
||||||
'label' => 'filter.part.search',
|
'label' => 'filter.model.search',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$builder->add('category', CategoryFilterType::class, [
|
$builder->add('category', CategoryFilterType::class, [
|
||||||
@ -30,7 +30,7 @@ class ModelFilterType extends AbstractType
|
|||||||
|
|
||||||
public function getBlockPrefix()
|
public function getBlockPrefix()
|
||||||
{
|
{
|
||||||
return 'model_filter';
|
return 'filter';
|
||||||
}
|
}
|
||||||
|
|
||||||
public function configureOptions(OptionsResolver $resolver)
|
public function configureOptions(OptionsResolver $resolver)
|
||||||
@ -43,14 +43,16 @@ class ModelFilterType extends AbstractType
|
|||||||
|
|
||||||
public function modelSearchCallback(QueryInterface $filterQuery, $field, $values)
|
public function modelSearchCallback(QueryInterface $filterQuery, $field, $values)
|
||||||
{
|
{
|
||||||
if (empty($values['value'])) {
|
if (empty($values['value']) || $values['value'] === '') {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$expr = $filterQuery->getExpr();
|
||||||
|
|
||||||
// expression that represent the condition
|
// expression that represent the condition
|
||||||
$expression = $filterQuery->getExpr()->orX(
|
$expression = $expr->orX(
|
||||||
$filterQuery->getExpr()->like('model.number', ':value'),
|
$expr->like('model.number', ':value'),
|
||||||
$filterQuery->getExpr()->like('model.name', ':value')
|
$expr->like('model.name', ':value')
|
||||||
//TODO filter by keywords
|
//TODO filter by keywords
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ class SetFilterType extends AbstractType
|
|||||||
|
|
||||||
$builder->add('theme', ThemeFilterType::class, [
|
$builder->add('theme', ThemeFilterType::class, [
|
||||||
'add_shared' => function (FilterBuilderExecuterInterface $builderExecuter) {
|
'add_shared' => function (FilterBuilderExecuterInterface $builderExecuter) {
|
||||||
$builderExecuter->addOnce($builderExecuter->getAlias().'.theme', 'c', function (QueryBuilder $filterBuilder, $alias, $joinAlias, $expr) {
|
$builderExecuter->addOnce($builderExecuter->getAlias().'.theme', 't', function (QueryBuilder $filterBuilder, $alias, $joinAlias, $expr) {
|
||||||
$filterBuilder->leftJoin($alias.'.theme', $joinAlias);
|
$filterBuilder->leftJoin($alias.'.theme', $joinAlias);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -21,7 +21,7 @@ class ThemeFilterType extends AbstractType
|
|||||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||||
{
|
{
|
||||||
$builder->add('id', Filters\ChoiceFilterType::class, [
|
$builder->add('id', Filters\ChoiceFilterType::class, [
|
||||||
'choices' => $this->themeRepository->findAll(),
|
'choices' => $this->themeRepository->findAllMain(),
|
||||||
'choice_label' => function ($theme, $currentChoiceKey) {
|
'choice_label' => function ($theme, $currentChoiceKey) {
|
||||||
if ($parent = $theme->getParent()) {
|
if ($parent = $theme->getParent()) {
|
||||||
if ($parentParent = $parent->getParent()) {
|
if ($parentParent = $parent->getParent()) {
|
||||||
@ -38,6 +38,9 @@ class ThemeFilterType extends AbstractType
|
|||||||
return $theme->getName();
|
return $theme->getName();
|
||||||
},
|
},
|
||||||
'label' => 'filter.set.theme',
|
'label' => 'filter.set.theme',
|
||||||
|
// 'attr' => [
|
||||||
|
// 'class' => 'ui dropdown search selection'
|
||||||
|
// ]
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,24 +28,26 @@ class Builder
|
|||||||
public function mainMenu(array $options)
|
public function mainMenu(array $options)
|
||||||
{
|
{
|
||||||
$request = $this->requestStack->getCurrentRequest();
|
$request = $this->requestStack->getCurrentRequest();
|
||||||
$menu = $this->factory->createItem('root');
|
$menu = $this->factory->createItem('root', [
|
||||||
|
|
||||||
$menu->addChild('Home', [
|
|
||||||
'route' => 'homepage',
|
'route' => 'homepage',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$menu->addChild('Models', [
|
$menu->addChild('homepage', [
|
||||||
|
'route' => 'homepage',
|
||||||
|
]);
|
||||||
|
|
||||||
|
$models = $menu->addChild('Models', [
|
||||||
'route' => 'model_index',
|
'route' => 'model_index',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
$models->addChild('Colors', [
|
||||||
|
'route' => 'color_index',
|
||||||
|
]);
|
||||||
|
|
||||||
$menu->addChild('Sets', [
|
$menu->addChild('Sets', [
|
||||||
'route' => 'set_index',
|
'route' => 'set_index',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$menu->addChild('Colors', [
|
|
||||||
'route' => 'color_index',
|
|
||||||
]);
|
|
||||||
|
|
||||||
return $menu;
|
return $menu;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@ class FormatTransformer
|
|||||||
*
|
*
|
||||||
* @param $bytes
|
* @param $bytes
|
||||||
* @param int $precision
|
* @param int $precision
|
||||||
|
*
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function bytesToSize($bytes, $precision = 2)
|
public function bytesToSize($bytes, $precision = 2)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user