mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2025-06-22 18:03:37 +02:00
Added some additional columns to part list.
They are hidden by default but can be shown by a colvis button.
This commit is contained in:
parent
16139d1afd
commit
720e1cd04e
10 changed files with 310 additions and 70 deletions
|
@ -684,3 +684,7 @@ table.dataTable {
|
||||||
.tab-content>form>.active {
|
.tab-content>form>.active {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.dataTables_length {
|
||||||
|
display: inline-flex;
|
||||||
|
}
|
|
@ -511,7 +511,12 @@ class AjaxUI {
|
||||||
var promise = $('#part_list').initDataTables(settings,
|
var promise = $('#part_list').initDataTables(settings,
|
||||||
{
|
{
|
||||||
"fixedHeader": { header: $(window).width() >= 768, //Only enable fixedHeaders on devices with big screen. Fixes scrolling issues on smartphones.
|
"fixedHeader": { header: $(window).width() >= 768, //Only enable fixedHeaders on devices with big screen. Fixes scrolling issues on smartphones.
|
||||||
headerOffset: $("#navbar").height()}
|
headerOffset: $("#navbar").height()},
|
||||||
|
"buttons": [ {
|
||||||
|
"extend": 'colvis',
|
||||||
|
'className': 'mr-2 btn-light',
|
||||||
|
"text": "<i class='fa fa-cog'></i>"
|
||||||
|
}]
|
||||||
});
|
});
|
||||||
|
|
||||||
//Register links.
|
//Register links.
|
||||||
|
|
|
@ -8,15 +8,16 @@ datatables:
|
||||||
lengthMenu : [10, 25, 50, 100, 250, 500, 1000, 2500]
|
lengthMenu : [10, 25, 50, 100, 250, 500, 1000, 2500]
|
||||||
pageLength: 50
|
pageLength: 50
|
||||||
#dom: "<'row' <'col-sm-12' tr>><'row' <'col-sm-6'l><'col-sm-6 text-right'pif>>"
|
#dom: "<'row' <'col-sm-12' tr>><'row' <'col-sm-6'l><'col-sm-6 text-right'pif>>"
|
||||||
dom: " <'row'<'col mb-2' l> <'col mb-2'<'pull-right' p>>>
|
dom: " <'row'<'col mb-2 input-group' B l> <'col mb-2' <'pull-right' p>>>
|
||||||
<'card border-primary'
|
<'card'
|
||||||
<'#part-card-header.card-header bg-primary text-white'>
|
|
||||||
rt
|
rt
|
||||||
<'card-footer card-footer-table text-muted' i >
|
<'card-footer card-footer-table text-muted' i >
|
||||||
>
|
>
|
||||||
<'row'<'col mt-2' l> <'col mt-2'<'pull-right' p>>>"
|
<'row'<'col mt-2' l> <'col mt-2'<'pull-right' p>>>"
|
||||||
pagingType: 'simple_numbers'
|
pagingType: 'simple_numbers'
|
||||||
searching: true
|
searching: true
|
||||||
|
stateSave: true
|
||||||
|
|
||||||
|
|
||||||
template_parameters:
|
template_parameters:
|
||||||
# Example classes to integrate nicely with Bootstrap 3.x
|
# Example classes to integrate nicely with Bootstrap 3.x
|
||||||
|
|
|
@ -54,7 +54,7 @@ class PartListsController extends AbstractController
|
||||||
return $table->getResponse();
|
return $table->getResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->render('parts_list.html.twig', ['datatable' => $table]);
|
return $this->render('Parts/lists/category_list.html.twig', ['datatable' => $table]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -35,9 +35,13 @@ use App\Services\EntityURLGenerator;
|
||||||
use Doctrine\ORM\QueryBuilder;
|
use Doctrine\ORM\QueryBuilder;
|
||||||
use Omines\DataTablesBundle\Adapter\Doctrine\ORM\SearchCriteriaProvider;
|
use Omines\DataTablesBundle\Adapter\Doctrine\ORM\SearchCriteriaProvider;
|
||||||
use Omines\DataTablesBundle\Adapter\Doctrine\ORMAdapter;
|
use Omines\DataTablesBundle\Adapter\Doctrine\ORMAdapter;
|
||||||
|
use Omines\DataTablesBundle\Column\BoolColumn;
|
||||||
|
use Omines\DataTablesBundle\Column\DateTimeColumn;
|
||||||
|
use Omines\DataTablesBundle\Column\MapColumn;
|
||||||
use Omines\DataTablesBundle\Column\TextColumn;
|
use Omines\DataTablesBundle\Column\TextColumn;
|
||||||
use Omines\DataTablesBundle\DataTable;
|
use Omines\DataTablesBundle\DataTable;
|
||||||
use Omines\DataTablesBundle\DataTableTypeInterface;
|
use Omines\DataTablesBundle\DataTableTypeInterface;
|
||||||
|
use Symfony\Contracts\Translation\TranslatorInterface;
|
||||||
|
|
||||||
class PartsDataTable implements DataTableTypeInterface
|
class PartsDataTable implements DataTableTypeInterface
|
||||||
{
|
{
|
||||||
|
@ -45,10 +49,12 @@ class PartsDataTable implements DataTableTypeInterface
|
||||||
* @var EntityURLGenerator
|
* @var EntityURLGenerator
|
||||||
*/
|
*/
|
||||||
protected $urlGenerator;
|
protected $urlGenerator;
|
||||||
|
protected $translator;
|
||||||
|
|
||||||
public function __construct(EntityURLGenerator $urlGenerator)
|
public function __construct(EntityURLGenerator $urlGenerator, TranslatorInterface $translator)
|
||||||
{
|
{
|
||||||
$this->urlGenerator = $urlGenerator;
|
$this->urlGenerator = $urlGenerator;
|
||||||
|
$this->translator = $translator;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function buildCriteria(QueryBuilder $builder, array $options)
|
protected function buildCriteria(QueryBuilder $builder, array $options)
|
||||||
|
@ -79,16 +85,84 @@ class PartsDataTable implements DataTableTypeInterface
|
||||||
*/
|
*/
|
||||||
public function configure(DataTable $dataTable, array $options)
|
public function configure(DataTable $dataTable, array $options)
|
||||||
{
|
{
|
||||||
$dataTable//->add("id", TextColumn::class)
|
$dataTable
|
||||||
->add('name', TextColumn::class, ['label' => 'name.label',
|
->add('name', TextColumn::class, [
|
||||||
|
'label' => $this->translator->trans('part.table.name'),
|
||||||
'render' => function ($value, Part $context) {
|
'render' => function ($value, Part $context) {
|
||||||
return $this->urlGenerator->infoHTML($context);
|
return $this->urlGenerator->infoHTML($context);
|
||||||
}, ])
|
},
|
||||||
->add('description', TextColumn::class, ['label' => 'description.label'])
|
])
|
||||||
->add('category', TextColumn::class, ['field' => 'category.name', 'label' => 'category.label'])
|
->add('id', TextColumn::class, [
|
||||||
->add('amountSum', TextColumn::class, ['label' => 'instock.label_short'])
|
'label' => $this->translator->trans('part.table.id'),
|
||||||
->add('minamount', TextColumn::class, ['label' => 'mininstock.label_short'])
|
'visible' => false
|
||||||
|
])
|
||||||
|
->add('description', TextColumn::class, [
|
||||||
|
'label' => $this->translator->trans('part.table.description'),
|
||||||
|
])
|
||||||
|
->add('category', TextColumn::class, [
|
||||||
|
'field' => 'category.name',
|
||||||
|
'label' => $this->translator->trans('part.table.category')
|
||||||
|
])
|
||||||
|
//->add('footprint', TextColumn::class, ['field' => 'footprint.name'])
|
||||||
|
//->add('manufacturer', TextColumn::class, ['field' => 'manufacturer.name' ])
|
||||||
|
//->add('amountSum', TextColumn::class, ['label' => 'instock.label_short'])
|
||||||
|
->add('amount', TextColumn::class, [
|
||||||
|
'label' => $this->translator->trans('part.table.amount'),
|
||||||
|
'propertyPath' => 'amountSum'
|
||||||
|
])
|
||||||
|
->add('minamount', TextColumn::class, [
|
||||||
|
'label' => $this->translator->trans('part.table.minamount')
|
||||||
|
])
|
||||||
//->add('storelocation', TextColumn::class, ['field' => 'storelocation.name', 'label' => 'storelocation.label'])
|
//->add('storelocation', TextColumn::class, ['field' => 'storelocation.name', 'label' => 'storelocation.label'])
|
||||||
|
|
||||||
|
->add('addedDate', DateTimeColumn::class, [
|
||||||
|
'label' => $this->translator->trans('part.table.addedDate'),
|
||||||
|
'visible' => false
|
||||||
|
])
|
||||||
|
->add('lastModified', DateTimeColumn::class, [
|
||||||
|
'label' => $this->translator->trans('part.table.lastModified'),
|
||||||
|
'visible' => false
|
||||||
|
])
|
||||||
|
->add('needs_review', BoolColumn::class, [
|
||||||
|
'label' => $this->translator->trans('part.table.needsReview'),
|
||||||
|
'trueValue' => $this->translator->trans('true'),
|
||||||
|
'falseValue' => $this->translator->trans('false'),
|
||||||
|
'nullValue' => '',
|
||||||
|
'visible' => false
|
||||||
|
])
|
||||||
|
->add('favorite', BoolColumn::class, [
|
||||||
|
'label' => $this->translator->trans('part.table.favorite'),
|
||||||
|
'trueValue' => $this->translator->trans('true'),
|
||||||
|
'falseValue' => $this->translator->trans('false'),
|
||||||
|
'nullValue' => '',
|
||||||
|
'visible' => false
|
||||||
|
])
|
||||||
|
->add('manufacturing_status', MapColumn::class, [
|
||||||
|
'label' => $this->translator->trans('part.table.manufacturingStatus'),
|
||||||
|
'visible' => false,
|
||||||
|
'default' => $this->translator->trans('m_status.unknown'),
|
||||||
|
'map' => [
|
||||||
|
'' => $this->translator->trans('m_status.unknown'),
|
||||||
|
'announced' => $this->translator->trans('m_status.announced'),
|
||||||
|
'active' => $this->translator->trans('m_status.active'),
|
||||||
|
'nrfnd' => $this->translator->trans('m_status.nrfnd'),
|
||||||
|
'eol' => $this->translator->trans('m_status.eol'),
|
||||||
|
'discontinued' => $this->translator->trans('m_status.discontinued')
|
||||||
|
]
|
||||||
|
])
|
||||||
|
->add('manufacturer_product_number', TextColumn::class, [
|
||||||
|
'label' => $this->translator->trans('part.table.mpn'),
|
||||||
|
'visible' => false
|
||||||
|
])
|
||||||
|
->add('mass', TextColumn::class, [
|
||||||
|
'label' => $this->translator->trans('part.table.mass'),
|
||||||
|
'visible' => false
|
||||||
|
])
|
||||||
|
->add('tags', TextColumn::class, [
|
||||||
|
'label' => $this->translator->trans('part.table.tags'),
|
||||||
|
'visible' => false
|
||||||
|
])
|
||||||
|
|
||||||
->addOrderBy('name')
|
->addOrderBy('name')
|
||||||
->createAdapter(ORMAdapter::class, [
|
->createAdapter(ORMAdapter::class, [
|
||||||
'entity' => Part::class,
|
'entity' => Part::class,
|
||||||
|
|
20
templates/Parts/lists/category_list.html.twig
Normal file
20
templates/Parts/lists/category_list.html.twig
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{% extends "base.html.twig" %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
|
||||||
|
{# Set the title for the table here. It will be inserted into the table later.#}
|
||||||
|
<div style="display:none;" id="part-card-header-src">Test</div>
|
||||||
|
|
||||||
|
<div id="part_list" class="table-responsive" data-datatable data-settings='{{ datatable_settings(datatable) }}'>
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<h4>{% trans %}part_list.loading.caption{% endtrans %}</h4>
|
||||||
|
<h6>{% trans %}part_list.loading.message{% endtrans %}</h6>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock %}
|
|
@ -1722,6 +1722,74 @@ Element 3</target>
|
||||||
<source>flash.info</source>
|
<source>flash.info</source>
|
||||||
<target state="translated">Info</target>
|
<target state="translated">Info</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="t2EE5cB" resname="part.table.name">
|
||||||
|
<source>part.table.name</source>
|
||||||
|
<target state="translated">Name</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="eshqdG." resname="part.table.id">
|
||||||
|
<source>part.table.id</source>
|
||||||
|
<target state="translated">ID</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="zKnTKYw" resname="part.table.description">
|
||||||
|
<source>part.table.description</source>
|
||||||
|
<target state="translated">Beschreibung</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="2eOA0az" resname="part.table.category">
|
||||||
|
<source>part.table.category</source>
|
||||||
|
<target state="translated">Kategorie</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="rD.1skI" resname="part.table.amount">
|
||||||
|
<source>part.table.amount</source>
|
||||||
|
<target state="translated">Menge</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="Mv9g23S" resname="part.table.minamount">
|
||||||
|
<source>part.table.minamount</source>
|
||||||
|
<target state="translated">Min.Menge</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="pw75u4x" resname="part.table.addedDate">
|
||||||
|
<source>part.table.addedDate</source>
|
||||||
|
<target state="translated">Hinzugefügt</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="eDb7mzC" resname="part.table.lastModified">
|
||||||
|
<source>part.table.lastModified</source>
|
||||||
|
<target state="translated">Zuletzt bearbeitet</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="DJ9YTs_" resname="part.table.needsReview">
|
||||||
|
<source>part.table.needsReview</source>
|
||||||
|
<target state="translated">Review benötigt</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="tb6kG2x" resname="true">
|
||||||
|
<source>true</source>
|
||||||
|
<target state="translated">wahr</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id=".LzxZZC" resname="false">
|
||||||
|
<source>false</source>
|
||||||
|
<target state="translated">falsch</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="TSiqJH6" resname="part.table.favorite">
|
||||||
|
<source>part.table.favorite</source>
|
||||||
|
<target state="translated">Favorit</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="n0h1ozV" resname="part.table.manufacturingStatus">
|
||||||
|
<source>part.table.manufacturingStatus</source>
|
||||||
|
<target state="translated">Status</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="HTkvjkE" resname="part.table.mpn">
|
||||||
|
<source>part.table.mpn</source>
|
||||||
|
<target state="translated">MPN</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="q_AsQoZ" resname="part.table.mass">
|
||||||
|
<source>part.table.mass</source>
|
||||||
|
<target state="translated">Gewicht</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="" resname="part.table.tags">
|
||||||
|
<source>part.table.tags</source>
|
||||||
|
<target state="translated">Tags</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="pVVBLyB" resname="datatable.datatable.lengthMenu">
|
||||||
|
<source>datatable.datatable.lengthMenu</source>
|
||||||
|
<target>_MENU_</target>
|
||||||
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
</xliff>
|
</xliff>
|
||||||
|
|
|
@ -1693,6 +1693,74 @@ Element 3</target>
|
||||||
<source>flash.info</source>
|
<source>flash.info</source>
|
||||||
<target state="translated">Info</target>
|
<target state="translated">Info</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="t2EE5cB" resname="part.table.name">
|
||||||
|
<source>part.table.name</source>
|
||||||
|
<target state="translated">Name</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="eshqdG." resname="part.table.id">
|
||||||
|
<source>part.table.id</source>
|
||||||
|
<target state="translated">Id</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="zKnTKYw" resname="part.table.description">
|
||||||
|
<source>part.table.description</source>
|
||||||
|
<target state="translated">Description</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="2eOA0az" resname="part.table.category">
|
||||||
|
<source>part.table.category</source>
|
||||||
|
<target state="translated">Category</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="rD.1skI" resname="part.table.amount">
|
||||||
|
<source>part.table.amount</source>
|
||||||
|
<target state="translated">Amount</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="Mv9g23S" resname="part.table.minamount">
|
||||||
|
<source>part.table.minamount</source>
|
||||||
|
<target state="translated">Min. Amount</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="pw75u4x" resname="part.table.addedDate">
|
||||||
|
<source>part.table.addedDate</source>
|
||||||
|
<target state="translated">Created at</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="eDb7mzC" resname="part.table.lastModified">
|
||||||
|
<source>part.table.lastModified</source>
|
||||||
|
<target state="translated">Last modified</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="DJ9YTs_" resname="part.table.needsReview">
|
||||||
|
<source>part.table.needsReview</source>
|
||||||
|
<target state="translated">Needs review</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="tb6kG2x" resname="true">
|
||||||
|
<source>true</source>
|
||||||
|
<target state="translated">true</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id=".LzxZZC" resname="false">
|
||||||
|
<source>false</source>
|
||||||
|
<target state="translated">false</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="TSiqJH6" resname="part.table.favorite">
|
||||||
|
<source>part.table.favorite</source>
|
||||||
|
<target state="translated">Favorite</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="n0h1ozV" resname="part.table.manufacturingStatus">
|
||||||
|
<source>part.table.manufacturingStatus</source>
|
||||||
|
<target state="translated">Status</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="HTkvjkE" resname="part.table.mpn">
|
||||||
|
<source>part.table.mpn</source>
|
||||||
|
<target state="translated">MPN</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="q_AsQoZ" resname="part.table.mass">
|
||||||
|
<source>part.table.mass</source>
|
||||||
|
<target state="translated">Mass</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="" resname="part.table.tags">
|
||||||
|
<source>part.table.tags</source>
|
||||||
|
<target state="translated">Tags</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="pVVBLyB" resname="datatable.datatable.lengthMenu">
|
||||||
|
<source>datatable.datatable.lengthMenu</source>
|
||||||
|
<target>_MENU_</target>
|
||||||
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
</xliff>
|
</xliff>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue