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

Add asset images

This commit is contained in:
David Hübner 2017-04-13 18:54:28 +02:00
parent 5b6bc7b6c8
commit 254add244d
16 changed files with 437 additions and 291 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -1,4 +1,43 @@
.ui.fixed + .ui.main { .default-theme {
margin-top: 5em;
.ui.fixed + .ui.grid {
border-radius: 0;
border: 0;
box-shadow: none;
} }
.item-info {
min-height: 300px;
}
.ui.fixed + .ui.main {
margin-top: 3em;
padding-bottom: 4em;
}
.link {
padding-left: 30px;
position: relative;
}
.link:before {
width: 23px;
height: 23px;
position: absolute;
left: 0;
display: inline-block;
}
.link.brickset:before {
content: '';
background: url("/resources/images/brickset_logo.png");
background-size: cover;
}
.link.rebrickable:before {
content: '';
background: url("/resources/images/rebrickable_logo.png");
background-size: cover;
}
}

View File

@ -6,7 +6,9 @@
<div class="ui fixed inverted menu"> <div class="ui fixed inverted menu">
{{ knp_menu_render('mainMenu') }} {{ knp_menu_render('mainMenu') }}
</div> </div>
<div class="ui main container"> {% block page %}
<div class="ui main">
<div class="ui container">
<div class="ui masthead vertical segment"> <div class="ui masthead vertical segment">
<div class="introduction"> <div class="introduction">
<div class="ui small breadcrumb"> <div class="ui small breadcrumb">
@ -22,7 +24,7 @@
<h1 class="ui header">{% block header %}{% endblock %}</h1> <h1 class="ui header">{% block header %}{% endblock %}</h1>
</div> </div>
</div> </div>
<div class="ui vertical segment content">
{% for label, flashes in app.session.flashbag.all %} {% for label, flashes in app.session.flashbag.all %}
{% for flash in flashes %} {% for flash in flashes %}
{{ elements.flash(label,flash) }} {{ elements.flash(label,flash) }}
@ -33,10 +35,14 @@
{% endblock %} {% endblock %}
</div> </div>
</div>
</div>
{% endblock page %}
<div class="ui black inverted vertical footer segment stripe"> <div class="ui black inverted vertical footer segment stripe">
{% block footer %}
<div class="ui center aligned container"> <div class="ui center aligned container">
</div> </div>
{% endblock %}
</div> </div>
{% endblock %} {% endblock %}

View File

@ -1,6 +1,14 @@
{% extends 'base.html.twig' %} {% extends 'base.html.twig' %}
{% block content %} {% block page %}
<div class="ui grid massive message vertical">
<div class="ui container">
<div class="row">
<div class="h1 ui huge header">
Hello, world!
</div>
</div>
</div>
</div>
{% endblock %} {% endblock %}

View File

@ -8,7 +8,7 @@
{% endblock %} {% endblock %}
<link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}" /> <link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}" />
</head> </head>
<body> <body class="default-theme">
{% block body %} {% block body %}
{% endblock %} {% endblock %}

View File

@ -2,23 +2,33 @@
{% import 'macros/elements.html.twig' as elements %} {% import 'macros/elements.html.twig' as elements %}
{% block title %}{{ model.name }}{% endblock %} {% block title %}#{{ model.number }} - {{ model.name }}{% endblock %}
{% block header %}{{ model.name }}{% endblock %} {% block header %}#{{ model.number }} - {{ model.name }}{% endblock %}
{% block content %} {% block content %}
<div class="ui grid">
<div class="column ten wide">
<div id="model-viewer" class="model-container"> <div id="model-viewer" class="model-container">
<img src="{{ asset('ldraw/images/'~model.number~'.png') | imagine_filter('model_large')}}"> <img src="{{ asset('ldraw/images/'~model.number~'.png') | imagine_filter('model_large')}}">
</div> </div>
</div>
<div class="column six wide">
<div class="grey">
<table>
<tr>
<th>category</th><td>{{ model.category ? model.category.name }}</td>
</tr>
<tr>
<th>model</th><td>{{ model.path }}</td>
</tr>
<tr>
<th>author</th><td>{{ model.author }}</td>
</tr>
</table>
<dl> <dl>
<dt>number:</dt><dd>{{ model.number }}</dd>
<dt>name:</dt><dd>{{ model.name }}</dd>
<dt>category:</dt><dd>{{ model.category ? model.category.name }}</dd>
<dt>model:</dt><dd>{{ model.path }}</dd>
<dt>author:</dt><dd>{{ model.author }}</dd>
<dt>modified:</dt><dd>{{ model.modified ? model.modified|date('Y-m-d') }}</dd>
<dt>keywords:</dt> <dt>keywords:</dt>
<dd> <dd>
{% for keyword in model.keywords %} {% for keyword in model.keywords %}
@ -28,29 +38,33 @@
<dt>aliases:</dt> <dt>aliases:</dt>
<dd> <dd>
{% for alias in model.aliases %} {% for alias in model.aliases %}
<span class="ui label">{{ alias.number }}</span> <span>{{ alias.number }}</span>{% if not loop.last %},{% endif %}
{% endfor %} {% endfor %}
</dd> </dd>
<dd>Download:</dd> <dd>Download:</dd>
<dt><a href="{{ url('media_file', {'path': model.path}) }}">{{ model.number }}</a></dt> <dt><a href="{{ url('media_file', {'path': model.path}) }}">{{ model.number }}</a></dt>
<dt>rebrickable parts ({{ rbParts|length }}):</dt> <dt>rebrickable parts ({{ rbParts|length }}):</dt>
<dd> <dd>
<p> {#<p>#}
<div class="ui eight doubling cards"> {#<div class="ui eight doubling cards">#}
{% for alias in rbParts %} {#{% for alias in rbParts %}#}
<a href="{{ url('reb_part_detail', {number:alias.number}) }}" class="ui label">{{ alias.number }}</a> {#<a href="{{ url('reb_part_detail', {number:alias.number}) }}" class="ui label">{{ alias.number }}</a>#}
{% endfor %} {#{% endfor %}#}
</div> {#</div>#}
</p> {#</p>#}
</dd> </dd>
</dl> </dl>
</div>
</div>
</div>
<div>
<h4 class="ui horizontal divider header"> <h4 class="ui horizontal divider header">
<i class="puzzle icon"></i> Subparts of this model Subparts of this model
</h4> </h4>
<div class="ui eight cards"> <div class="ui eight column grid">
{% for subpart in model.subparts %} {% for subpart in model.subparts %}
<div class="column"> <div class="column">
{{ elements.part(subpart.subpart) }} {{ elements.part(subpart.subpart) }}
@ -59,10 +73,10 @@
</div> </div>
<h4 class="ui horizontal divider header"> <h4 class="ui horizontal divider header">
<i class="cube icon"></i> Model is subpart of Model is subpart of
</h4> </h4>
<div class="ui eight cards"> <div class="ui eight column grid">
{% for subpart in model.parents %} {% for subpart in model.parents %}
<div class="column"> <div class="column">
{{ elements.part(subpart.parent) }} {{ elements.part(subpart.parent) }}
@ -70,6 +84,19 @@
{% endfor %} {% endfor %}
</div> </div>
<h4 class="ui horizontal divider header">
Related
</h4>
<div class="ui eight column grid">
{% for subpart in related %}
<div class="column">
{{ elements.part(subpart) }}
</div>
{% endfor %}
</div>
<h4 class="ui horizontal divider header"> <h4 class="ui horizontal divider header">
<i class="cubes icon"></i> Sets ({{ sets|length }}) <i class="cubes icon"></i> Sets ({{ sets|length }})
</h4> </h4>
@ -77,7 +104,9 @@
{% for set in sets %} {% for set in sets %}
<span style="margin: 5px"><a href="{{ url('set_detail', {number:set.number}) }}">{{ set.number }}</a></span> <span style="margin: 5px"><a href="{{ url('set_detail', {number:set.number}) }}">{{ set.number }}</a></span>
{% endfor %} {% endfor %}
</div>
{% endblock %} {% endblock %}
{% block javascripts %} {% block javascripts %}

View File

@ -2,7 +2,13 @@
{% import 'macros/elements.html.twig' as elements %} {% import 'macros/elements.html.twig' as elements %}
{% block title %}{{ 'page.model.index' | trans }}{% endblock %}
{% block header %}{{ 'page.model.index' | trans }}{% endblock %}
{% block content %} {% block content %}
<div class="ui container stackable grid">
<div class="column four wide">
<form method="get" action="" class="ui form"> <form method="get" action="" class="ui form">
{{ form_start(form) }} {{ form_start(form) }}
@ -16,8 +22,9 @@
</div> </div>
{{ form_end(form) }} {{ form_end(form) }}
</form> </form>
</div>
<div class="column twelve wide">
{{ knp_pagination_render(models) }}
<p>{{ models.getTotalItemCount }}</p> <p>{{ models.getTotalItemCount }}</p>
<div class="ui eight column grid"> <div class="ui eight column grid">
{% for model in models %} {% for model in models %}
@ -26,4 +33,6 @@
</div> </div>
{{ knp_pagination_render(models) }} {{ knp_pagination_render(models) }}
</div>
</div>
{% endblock %} {% endblock %}

View File

@ -2,7 +2,7 @@
{% block content %} {% block content %}
<table class="ui celled padded table"> <table class="ui celled small padded table">
<thead> <thead>
<tr> <tr>
<th></th> <th></th>

View File

@ -0,0 +1,25 @@
{% extends 'base.html.twig' %}
{% block content %}
<div class="ui seven column grid">
<div class="row">
{% for part in parts %}
<div class="column">
<div class="ui fluid bordered image">
<a href="{{ path('reb_part_detail', {number: part.number}) }}">
<div class="image load">
<img src="{{ part.number|partImage(-1)| imagine_filter('rebrickable_part_min') }}" data-src="{{ part.number|partImage(-1)| imagine_filter('rebrickable_part_min') }}" class="transition visible">
</div>
<div class="ui bottom attached label {{ part.model == null ? 'black' : 'red'}}">{{ part.number }}</div>
</a>
</div>
</div>
{% endfor %}
</div>
</div>
<p>{{ parts.getTotalItemCount }}</p>
{{ knp_pagination_render(parts) }}
{% endblock %}

View File

@ -1,8 +1,9 @@
{% if regularParts|length > 0 %}
<h4 class="ui horizontal divider header"> <h4 class="ui horizontal divider header">
Regular parts Regular parts
</h4> </h4>
<div class="ui eight column grid"> <div class="ui ten column grid">
{% for inventoryPart in regularParts %} {% for inventoryPart in regularParts %}
{% if inventoryPart.part is defined %} {% if inventoryPart.part is defined %}
<div class="column"> <div class="column">
@ -12,18 +13,20 @@
<div class="image load"> <div class="image load">
<img src="{{ inventoryPart.part.number|partImage(inventoryPart.color.id)| imagine_filter('rebrickable_part_min') }}" data-src="{{ inventoryPart.part.number|partImage(inventoryPart.color.id)| imagine_filter('rebrickable_part_min') }}" class="transition visible"> <img src="{{ inventoryPart.part.number|partImage(inventoryPart.color.id)| imagine_filter('rebrickable_part_min') }}" data-src="{{ inventoryPart.part.number|partImage(inventoryPart.color.id)| imagine_filter('rebrickable_part_min') }}" class="transition visible">
</div> </div>
<div style="border-bottom: #{{ inventoryPart.color.rgb }} 5px solid" class="ui bottom attached label">{{ inventoryPart.part.number }}<br>{{ inventoryPart.isSpare ? 'Spare' : 'Regular' }}</div> <div style="border-bottom: #{{ inventoryPart.color.rgb }} 5px solid" class="ui bottom attached label">{{ inventoryPart.part.number }}</div>
</a> </a>
</div> </div>
</div> </div>
{% endif %} {% endif %}
{% endfor %} {% endfor %}
</div> </div>
{% endif %}
{% if spareParts|length > 0 %}
<h4 class="ui horizontal divider header"> <h4 class="ui horizontal divider header">
Spare parts Spare parts
</h4> </h4>
<div class="ui eight column grid"> <div class="ui ten column grid">
{% for inventoryPart in spareParts %} {% for inventoryPart in spareParts %}
{% if inventoryPart.part is defined %} {% if inventoryPart.part is defined %}
<div class="column"> <div class="column">
@ -33,10 +36,11 @@
<div class="image load"> <div class="image load">
<img src="{{ inventoryPart.part.number|partImage(inventoryPart.color.id)| imagine_filter('rebrickable_part_min') }}" data-src="{{ inventoryPart.part.number|partImage(inventoryPart.color.id)| imagine_filter('rebrickable_part_min') }}" class="transition visible"> <img src="{{ inventoryPart.part.number|partImage(inventoryPart.color.id)| imagine_filter('rebrickable_part_min') }}" data-src="{{ inventoryPart.part.number|partImage(inventoryPart.color.id)| imagine_filter('rebrickable_part_min') }}" class="transition visible">
</div> </div>
<div style="border-bottom: #{{ inventoryPart.color.rgb }} 5px solid" class="ui bottom attached label">{{ inventoryPart.part.number }}<br>{{ inventoryPart.isSpare ? 'Spare' : 'Regular' }}</div> <div style="border-bottom: #{{ inventoryPart.color.rgb }} 5px solid" class="ui bottom attached label">{{ inventoryPart.part.number }}</div>
</a> </a>
</div> </div>
</div> </div>
{% endif %} {% endif %}
{% endfor %} {% endfor %}
</div> </div>
{% endif %}

View File

@ -0,0 +1,16 @@
<h4 class="ui horizontal divider header">Sets</h4>
<div class="ui seven column grid">
<div class="row">
{% for set in inventorySets %}
<div class="column">
<a href="{{ url('set_detail', {'number': set.set.number}) }}">
<div class="ui bordered image medium">
<img src="{{ asset('resources/images/unknown_image.png') }}" data-src="{{ set.set.number|setImage|imagine_filter('rebrickable_set_min') }}" class="transition visible">
</div>
<p>{{ set.set.number }} - {{ set.set.name }}</p>
<p>{{ set.quantity}}</p>
</a>
</div>
{% endfor %}
</div>
</div>

View File

@ -5,53 +5,72 @@
{% block header %}{{ rbset ? rbset.number }} {{ rbset ? rbset.name }}{% endblock %} {% block header %}{{ rbset ? rbset.number }} {{ rbset ? rbset.name }}{% endblock %}
{% block content %} {% block content %}
<div class="ui stackable grid">
<div class="column nine wide">
<div class="image bordered ui big">
{% if brset %} {% if brset %}
<a href="{{ brset.bricksetURL }}"><img class="image ui mini" src="http://brickset.com/assets/images/logo/bricks.jpg"> Brickset</a> <img class="big" src="{{ brset.imageURL }}">
{% elseif rbset %}
<img class="big" src="{{ rbset.number|setImage|imagine_filter('rebrickable') }}">
{% endif %} {% endif %}
</div>
</div>
{% if rbset is not null %} <div class="column seven wide">
<a href="http://rebrickable.com/sets/{{ rbset ? rbset.number }}"><img class="image ui mini" src="https://s.rebrickable.com/static/img/robo3ta.png"> Rebrickable</a> <div class="item-info black ui">
<dl> <table class="ui table">
<dt>number:</dt><dd>{{ rbset.number }}</dd> <tr>
<dt>year:</dt><dd>{{ rbset.year }}</dd> <td>number</td><td>{{ brset ? brset.legoSetID : rbset ? rbset.number : null}}</td>
<dt>name:</dt><dd>{{ rbset.name }}</dd> </tr>
<dt>theme:</dt><dd>{{ rbset.theme.name }}</dd> <tr>
{% if rbset.theme.parent %} <td>name</td><td>{{ brset ? brset.name : rbset ? rbset.name : null}}</td>
<dt>themeparent:</dt><dd>{{ rbset.theme.parent.name }}</dd> </tr>
{% if rbset.theme.parent.parent %} <tr>
<dt>themeparent:</dt><dd>{{ rbset.theme.parent.parent.name }}</dd> <td>year</td><td>{{ brset ? brset.year : rbset ? rbset.year : null}}</td>
</tr>
<tr>
<td>theme</td>
{% if rbset %}
<td><a href="#">{{ rbset.theme.parent ? rbset.theme.parent.name }}</a> <a href="#">{{ rbset.theme.name }}</a> </td>
{% elseif brset %}
<td>{{ brset.theme }}</td>
{% endif %} {% endif %}
</tr>
<tr>
<td>parts</td><td>{{ brset ? brset.pieces : rbset ? rbset.partCount }}</td>
</tr>
{% if brset %}
<tr>
<td></td>
<td><a class="brickset link" href="{{ brset.bricksetURL }}">Brickset</a></td>
</tr>
{% endif %} {% endif %}
<dt>count of parts:</dt><dd>{{ rbset.partCount }}</dd> {% if rbset %}
</dl> <tr>
<td></td>
<td><a class="rebrickable link" href="http://rebrickable.com/sets/{{ rbset ? rbset.number }}">Rebrickable</a></td>
</tr>
{% endif %} {% endif %}
</table>
{% if brset is not null %} {% if brset is not null %}
<dl> <dl>
<dt>year:</dt><dd>{{ brset.year }}</dd>
<dt>name:</dt><dd>{{ brset.name }}</dd>
<dt>themegroup:</dt><dd>{{ brset.themeGroup }}</dd> <dt>themegroup:</dt><dd>{{ brset.themeGroup }}</dd>
<dt>theme:</dt><dd>{{ brset.theme }}</dd> <dt>theme:</dt><dd>{{ brset.theme }}</dd>
<dt>subtheme:</dt><dd>{{ brset.subtheme }}</dd> <dt>subtheme:</dt><dd>{{ brset.subtheme }}</dd>
<dt>count of parts:</dt><dd>{{ brset.pieces }}</dd> <dt>count of parts:</dt><dd>{{ brset.pieces }}</dd>
<dt>lego id:</dt><dd>{{ brset.legoSetID }}</dd>
<dt>minifigs:</dt><dd>{{ brset.minifigs }}</dd> <dt>minifigs:</dt><dd>{{ brset.minifigs }}</dd>
<dt>description:</dt><dd>{{ brset.description }}</dd>
</dl> </dl>
{% endif %} {% endif %}
</div>
</div>
</div>
{% if brset %} <div class="segment vertical item-info">
<img class="ui bordered image medium" src="{{ brset.imageURL }}">
{% elseif rbset %}
<img class="ui bordered image medium" src="{{ rbset.number|setImage|imagine_filter('rebrickable') }}">
{% endif %}
{#{{ brset ? dump(brset) }}#}
<div class="ui tabular menu"> <div class="ui tabular menu">
<a class="item active" data-tab="parts"><i class="cubes icon"></i> Parts ({{ rbset ? rbset.partCount : 0}})</a> <a class="item active" data-tab="parts"><i class="cubes icon"></i> Parts ({{ rbset ? rbset.partCount : 0}})</a>
{% if brset %} {% if brset %}
<a class="item" data-tab="description"><i class="info icon"></i> Description</a>
<a class="item" data-tab="images"> <i class="image icon"></i> Images ({{ brset.additionalImageCount }})</a> <a class="item" data-tab="images"> <i class="image icon"></i> Images ({{ brset.additionalImageCount }})</a>
<a class="item" data-tab="instructions"> <i class="file pdf outline icon"></i> Instructions ({{ brset.instructionsCount }})</a> <a class="item" data-tab="instructions"> <i class="file pdf outline icon"></i> Instructions ({{ brset.instructionsCount }})</a>
<a class="item" data-tab="reviews"><i class="write icon"></i> Reviews ({{ brset.reviewCount }})</a> <a class="item" data-tab="reviews"><i class="write icon"></i> Reviews ({{ brset.reviewCount }})</a>
@ -59,36 +78,61 @@
</div> </div>
<div class="ui tab active" data-tab="parts"> <div class="ui tab active" data-tab="parts">
{% if rbset %} {% if rbset %}
{{ render(controller('AppBundle:Rebrickable/Set:parts', { 'number': rbset.number })) }}
<div class="ui seven column grid">
<div class="row">
<h4 class="ui horizontal divider header"> <div class="ajax-load" id="parts" data-src="{{ path('rebrickable_set_parts', { 'number': rbset.number }) }}"></div>
Sets
</h4> {#{{ render(controller('AppBundle:Rebrickable/Set:parts', { 'number': rbset.number })) }}#}
{% for set in inventorySets %}
<div class="column">
<a href="{{ url('set_detail', {'number': set.set.number}) }}">
<img class="ui bordered image medium" src="{{ set.set.number|setImage|imagine_filter('rebrickable_set_min') }}">
<p>{{ set.set.number }} - {{ set.set.name }}</p>
<p>{{ set.quantity}}</p>
</a>
</div>
{% endfor %}
</div>
</div>
{% endif %} {% endif %}
</div> </div>
{% if brset %} {% if brset %}
<div class="ui tab" data-tab="images"> <div class="ui tab" data-tab="images">
{#<div class="ajax-load" id="images" data-src="{{ path('brickset_images', { 'id': brset.setID }) }}"></div>#}
{{ render(controller('AppBundle:Brickset/Set:images', { 'id': brset.setID })) }} {{ render(controller('AppBundle:Brickset/Set:images', { 'id': brset.setID })) }}
</div> </div>
<div class="ui tab" data-tab="instructions"> <div class="ui tab" data-tab="instructions">
{#<div class="ajax-load" id="instructions" data-src="{{ path('brickset_instructions', { 'id': brset.setID }) }}"></div>#}
{{ render(controller('AppBundle:Brickset/Set:instructions', { 'id': brset.setID })) }} {{ render(controller('AppBundle:Brickset/Set:instructions', { 'id': brset.setID })) }}
</div> </div>
<div class="ui tab" data-tab="reviews"> <div class="ui tab" data-tab="reviews">
{#<div class="ajax-load" id="reviews" data-src="{{ path('brickset_reviews', { 'id': brset.setID }) }}"></div>#}
{{ render(controller('AppBundle:Brickset/Set:reviews', { 'id': brset.setID })) }} {{ render(controller('AppBundle:Brickset/Set:reviews', { 'id': brset.setID })) }}
</div> </div>
<div class="ui tab" data-tab="description">
{{ brset.description }}
</div>
{% endif %} {% endif %}
</div>
{% endblock %}
{% block javascripts %}
{{ parent() }}
<script type="text/javascript">
$(document).ready(function () {
$('.ajax-load').each(function () {
$self = $(this);
console.log($self);
$.ajax({
type: "POST",
dataType: 'json',
url: $self.data('src'),
async: true, //you won't need that if nothing in your following code is dependend of the result
success: function(response){
$self.html(response); //Change the html of the div with the id = "your_div"
}
})
})
})
</script>
{% endblock %} {% endblock %}

View File

@ -48,9 +48,10 @@ gulp.task('files:semantic', function () {
}); });
gulp.task('files:images', function () { gulp.task('files:images', function () {
return gulp.src( return gulp.src([
'node_modules/lightbox2/dist/images/**' 'node_modules/lightbox2/dist/images/**',
) 'app/Resources/assets/images/**'
])
.pipe(gulp.dest('web/resources/images')); .pipe(gulp.dest('web/resources/images'));
}); });

View File

@ -33,44 +33,32 @@ class SetController extends Controller
$regularParts = $em->getRepository(Inventory_Part::class)->findAllRegularBySetNumber($set->getNumber()); $regularParts = $em->getRepository(Inventory_Part::class)->findAllRegularBySetNumber($set->getNumber());
$spareParts = $em->getRepository(Inventory_Part::class)->findAllSpareBySetNumber($set->getNumber()); $spareParts = $em->getRepository(Inventory_Part::class)->findAllSpareBySetNumber($set->getNumber());
return $this->render('rebrickable/set/parts.html.twig', [ $template = $this->render('rebrickable/set/parts.html.twig', [
'regularParts' => $regularParts, 'regularParts' => $regularParts,
'spareParts' => $spareParts, 'spareParts' => $spareParts,
]); ]);
$json = json_encode($template->getContent());
$response = new Response($json, 200);
$response->headers->set('Content-Type', 'application/json');
return $response;
} }
/**
* @Route("/{number}/sets", name="rebrickable_set_sets")
*/
public function setsAction(Set $set) {
$em = $this->getDoctrine()->getManager();
// /** $inventorySets = $em->getRepository(Inventory_Set::class)->findAllBySetNumber($set->getNumber());
// * @Route("/download/{number}", name="set_download")
// */
// public function downloadZipAction(Request $request, $number) {
// $em = $this->getDoctrine()->getManager();
//
// $inventoryParts = $em->getRepository(Inventory_Part::class)->findAllBySetNumber($number);
//
// $zip = new \ZipArchive();
// $zipName = 'set_'.$number.'.zip';
// $zip->open($zipName, \ZipArchive::CREATE);
// /** @var Inventory_Part $part */
// foreach ($inventoryParts as $part) {
// $filename = $part->getPart()->getNumber().'_('.$part->getColor()->getName().'_'.$part->getQuantity().'x).stl';
//
// try {
// if($part->getPart()->getModel()) {
// $zip->addFromString($filename, $this->get('oneup_flysystem.media_filesystem')->read($part->getPart()->getModel()->getPath()));
// }
// } catch (\Exception $e) {
// dump($e);
// }
// }
// $zip->close();
//
// $response = new Response(file_get_contents($zipName));
// $response->headers->set('Content-Type', 'application/zip');
// $response->headers->set('Content-Disposition', 'attachment;filename="' . $zipName . '"');
// $response->headers->set('Content-length', filesize($zipName));
//
// return $response;
// }
$template = $this->render('rebrickable/set/sets.html.twig', [
'inventorySets' => $inventorySets,
]);
$json = json_encode($template->getContent());
$response = new Response($json, 200);
$response->headers->set('Content-Type', 'application/json');
return $response;
}
} }

View File

@ -2,6 +2,7 @@
namespace AppBundle\Controller; namespace AppBundle\Controller;
use AppBundle\Api\Exception\ApiException;
use AppBundle\Api\Exception\EmptyResponseException; use AppBundle\Api\Exception\EmptyResponseException;
use AppBundle\Entity\LDraw\Model; use AppBundle\Entity\LDraw\Model;
use AppBundle\Entity\Rebrickable\Color; use AppBundle\Entity\Rebrickable\Color;
@ -58,88 +59,64 @@ class SetController extends Controller
*/ */
public function detailAction(Request $request, $number) public function detailAction(Request $request, $number)
{ {
$brset = null; $rebrickableSet = null;
$rbset = null; $bricksetSet = null;
$inventorySets = null;
$inventorySets = $this->getDoctrine()->getManager()->getRepository(Inventory_Set::class)->findAllBySetNumber($number);
try { try {
if(($rbset = $this->getDoctrine()->getManager()->getRepository(Set::class)->find($number)) == null) { if(($rebrickableSet = $this->getDoctrine()->getManager()->getRepository(Set::class)->find($number)) == null) {
$this->addFlash('warning', 'Set not found in Rebrickable database'); $this->addFlash('warning', 'Set not found in Rebrickable database');
}; };
$brset = $this->get('api.manager.brickset')->getSetByNumber($number); $bricksetSet = $this->get('api.manager.brickset')->getSetByNumber($number);
dump($bricksetSet);
} catch (EmptyResponseException $e) { } catch (EmptyResponseException $e) {
$this->addFlash('warning', 'Set not found in Brickset database'); $this->addFlash('warning', 'Set not found in Brickset database');
} catch (ApiException $e) {
$this->addFlash('error', $e->getService());
} catch (\Exception $e) { } catch (\Exception $e) {
$this->addFlash('error', $e->getMessage()); $this->addFlash('error', $e->getMessage());
} }
if(!$rebrickableSet && !$bricksetSet) {
return $this->render('error/error.html.twig');
}
return $this->render('set/detail.html.twig', [ return $this->render('set/detail.html.twig', [
'rbset' => $rbset, 'rbset' => $rebrickableSet,
'inventorySets' => $inventorySets, 'brset' => $bricksetSet,
'brset' => $brset,
]); ]);
} }
//
// /** /**
// * @Route("/{number}/parts", name="set_parts") * @Route("/{number}/download", name="set_download")
// */ */
// public function partsAction(Set $set) { public function downloadZipAction(Request $request, $number) {
// $em = $this->getDoctrine()->getManager(); $em = $this->getDoctrine()->getManager();
//
// $em->getRepository(Color::class)->findAll(); $inventoryParts = $em->getRepository(Inventory_Part::class)->findAllRegularBySetNumber($number);
// $em->getRepository(Part::class)->findAllBySetNumber($set->getNumber());
// $zip = new \ZipArchive();
// $regularParts = $em->getRepository(Inventory_Part::class)->findAllRegularBySetNumber($set->getNumber()); $zipName = 'set_'.$number.'.zip';
// $spareParts = $em->getRepository(Inventory_Part::class)->findAllSpareBySetNumber($set->getNumber()); $zip->open($zipName, \ZipArchive::CREATE);
// /** @var Inventory_Part $part */
// $count = 0; foreach ($inventoryParts as $part) {
// /** @var Inventory_Part $inventoryPart */ $filename = $part->getPart()->getNumber().'_('.$part->getColor()->getName().'_'.$part->getQuantity().'x).stl';
// foreach ($regularParts as $inventoryPart) {
// $count += $inventoryPart->getQuantity(); try {
// } if($part->getPart()->getModel()) {
// $zip->addFromString($filename, $this->get('oneup_flysystem.media_filesystem')->read($part->getPart()->getModel()->getPath()));
// dump($count); }
// } catch (\Exception $e) {
// return $this->render('rebrickable/set/parts.html.twig', [ dump($e);
// 'regularParts' => $regularParts, }
// 'spareParts' => $spareParts, }
// 'totalParts' => $count $zip->close();
// ]);
// } $response = new Response(file_get_contents($zipName));
// $response->headers->set('Content-Type', 'application/zip');
//// /** $response->headers->set('Content-Disposition', 'attachment;filename="' . $zipName . '"');
//// * @Route("/download/{number}", name="set_download") $response->headers->set('Content-length', filesize($zipName));
//// */
//// public function downloadZipAction(Request $request, $number) { return $response;
//// $em = $this->getDoctrine()->getManager(); }
////
//// $inventoryParts = $em->getRepository(Inventory_Part::class)->findAllBySetNumber($number);
////
//// $zip = new \ZipArchive();
//// $zipName = 'set_'.$number.'.zip';
//// $zip->open($zipName, \ZipArchive::CREATE);
//// /** @var Inventory_Part $part */
//// foreach ($inventoryParts as $part) {
//// $filename = $part->getPart()->getNumber().'_('.$part->getColor()->getName().'_'.$part->getQuantity().'x).stl';
////
//// try {
//// if($part->getPart()->getModel()) {
//// $zip->addFromString($filename, $this->get('oneup_flysystem.media_filesystem')->read($part->getPart()->getModel()->getPath()));
//// }
//// } catch (\Exception $e) {
//// dump($e);
//// }
//// }
//// $zip->close();
////
//// $response = new Response(file_get_contents($zipName));
//// $response->headers->set('Content-Type', 'application/zip');
//// $response->headers->set('Content-Disposition', 'attachment;filename="' . $zipName . '"');
//// $response->headers->set('Content-length', filesize($zipName));
////
//// return $response;
//// }
} }