diff --git a/src/views/portfolio/tags/TagList.vue b/src/views/portfolio/tags/TagList.vue index 751b948c..afe0b06f 100644 --- a/src/views/portfolio/tags/TagList.vue +++ b/src/views/portfolio/tags/TagList.vue @@ -24,6 +24,8 @@ import TaggedPoliciesListModal from '@/views/portfolio/tags/TaggedPoliciesListMo import TaggedProjectListModal from '@/views/portfolio/tags/TaggedProjectListModal.vue'; import TaggedVulnerabilityListModal from '@/views/portfolio/tags/TaggedVulnerabilityListModal.vue'; import i18n from '@/i18n'; +import MurmurHash2 from 'imurmurhash'; + export default { mixins: [bootstrapTableMixin, permissionsMixin, routerMixin], components: { @@ -229,7 +231,7 @@ export default { }, buttonsOrder: ['btnDeleteSelected', 'refresh', 'columns'], clickToSelect: true, - uniqueId: 'name', + uniqueId: 'nameHash', search: true, showColumns: true, showRefresh: true, @@ -246,6 +248,11 @@ export default { refresh: 'fa-refresh', }, responseHandler: function (res, xhr) { + for (let tag of res) { + // Tag names with special characters can break table rendering. + // https://github.com/DependencyTrack/dependency-track/issues/4357 + tag.nameHash = MurmurHash2(tag.name).result(); + } res.total = xhr.getResponseHeader('X-Total-Count'); return res; },