diff --git a/assets/css/app.css b/assets/css/app.css
index 76de5786..8021b679 100644
--- a/assets/css/app.css
+++ b/assets/css/app.css
@@ -689,6 +689,9 @@ table.dataTable {
.attach-table-icon:hover {
color: var(--gray-dark);
}
+.badge-table {
+ margin-right: 0.2em;
+}
/*********************************
Workarounds
diff --git a/src/DataTables/Column/PartAttachmentsColumn.php b/src/DataTables/Column/PartAttachmentsColumn.php
index 3b0a867d..d7ccddd3 100644
--- a/src/DataTables/Column/PartAttachmentsColumn.php
+++ b/src/DataTables/Column/PartAttachmentsColumn.php
@@ -68,14 +68,14 @@ class PartAttachmentsColumn extends AbstractColumn
$count = 5;
foreach ($attachments as $attachment) {
//Only show the first 5 attachments
- if (--$count <= 0) {
- continue;
+ if (--$count < 0) {
+ break;
}
/** @var Attachment $attachment */
$tmp .= sprintf(
'%s',
$this->urlGenerator->getViewURL($attachment),
- $attachment->getName() . ': ' . $attachment->getFilename(),
+ htmlspecialchars($attachment->getName()) . ': ' . htmlspecialchars($attachment->getFilename()),
$this->FAIconGenerator->generateIconHTML(
$this->FAIconGenerator->fileExtensionToFAType($attachment->getExtension()),
'fas',
diff --git a/src/DataTables/Column/TagsColumn.php b/src/DataTables/Column/TagsColumn.php
new file mode 100644
index 00000000..733ef100
--- /dev/null
+++ b/src/DataTables/Column/TagsColumn.php
@@ -0,0 +1,70 @@
+urlGenerator = $urlGenerator;
+ }
+
+ /**
+ * The normalize function is responsible for converting parsed and processed data to a datatables-appropriate type.
+ *
+ * @param mixed $value The single value of the column
+ * @return mixed
+ */
+ public function normalize($value)
+ {
+ if (empty($value)) {
+ return [];
+ }
+ return explode(',', $value);
+ }
+
+ public function render($tags, $context)
+ {
+ $html = '';
+ $count = 10;
+ foreach ($tags as $tag) {
+ //Only show max 10 tags
+ if (--$count < 0) {
+ break;
+ }
+ $html .= sprintf(
+ '%s',
+ $this->urlGenerator->generate('part_list_tags', ['tag' => $tag]),
+ htmlspecialchars($tag)
+ );
+ }
+
+ return $html;
+ }
+}
\ No newline at end of file
diff --git a/src/DataTables/PartsDataTable.php b/src/DataTables/PartsDataTable.php
index 21c0cb57..a8a1c368 100644
--- a/src/DataTables/PartsDataTable.php
+++ b/src/DataTables/PartsDataTable.php
@@ -24,6 +24,7 @@ namespace App\DataTables;
use App\DataTables\Column\EntityColumn;
use App\DataTables\Column\LocaleDateTimeColumn;
use App\DataTables\Column\PartAttachmentsColumn;
+use App\DataTables\Column\TagsColumn;
use App\Entity\Attachments\Attachment;
use App\Entity\Parts\Category;
use App\Entity\Parts\Footprint;
@@ -273,7 +274,7 @@ class PartsDataTable implements DataTableTypeInterface
'label' => $this->translator->trans('part.table.mass'),
'visible' => false,
])
- ->add('tags', TextColumn::class, [
+ ->add('tags', TagsColumn::class, [
'label' => $this->translator->trans('part.table.tags'),
'visible' => false,
])