diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index 527fb23f7..63bd4b743 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -913,7 +913,8 @@ "weakness": "Weakness", "will_not_fix": "Will not fix", "workaround_available": "Workaround available", - "x_trust_boundary": "Cross Trust Boundary" + "x_trust_boundary": "Cross Trust Boundary", + "issue_tracker": "Issue Tracker" }, "operator": { "contains_all": "contains all", diff --git a/src/views/portfolio/projects/ProjectComponents.vue b/src/views/portfolio/projects/ProjectComponents.vue index 8239c62c3..7425e37e9 100644 --- a/src/views/portfolio/projects/ProjectComponents.vue +++ b/src/views/portfolio/projects/ProjectComponents.vue @@ -261,6 +261,38 @@ export default { return value === true ? '' : ''; }, }, + { + title: this.$t('message.issue_tracker'), + field: 'externalReferences', + sortable: true, + visible: false, + formatter(value, row, index) { + if ( + Object.prototype.hasOwnProperty.call(row, 'externalReferences') + ) { + let issueTrackerRefs = ''; + row.externalReferences.forEach((externalRef) => { + if ( + Object.prototype.hasOwnProperty.call(externalRef, 'type') && + externalRef.type == 'issue-tracker' + ) { + if (issueTrackerRefs.length > 0) { + issueTrackerRefs += '
'; + } + issueTrackerRefs += + '' + + xssFilters.inHTMLData(externalRef.url) + + ''; + } + }); + return issueTrackerRefs; + } else { + return ''; + } + }, + }, { title: this.$t('message.license'), field: 'license',