Skip to content

Commit b0b4014

Browse files
Added External References to component details modal. Updated services details modal so that external references are hyperlinks. DependencyTrack/dependency-track#920
1 parent 0d6c857 commit b0b4014

File tree

2 files changed

+54
-3
lines changed

2 files changed

+54
-3
lines changed

src/views/portfolio/projects/ComponentDetailsModal.vue

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<template>
2-
<b-modal id="componentDetailsModal" size="md" hide-header-close no-stacking :title="$t('message.component_details')">
2+
<b-modal id="componentDetailsModal" size="lg" hide-header-close no-stacking :title="$t('message.component_details')">
33
<b-tabs class="body-bg-color" style="border:0;padding:0">
44
<b-tab class="body-bg-color" style="border:0;padding:0" active>
55
<template v-slot:title><i class="fa fa-cube"></i> {{ $t('message.identity') }}</template>
@@ -94,6 +94,17 @@
9494
:readonly="this.isNotPermitted(PERMISSIONS.PORTFOLIO_MANAGEMENT)" />
9595
</b-card>
9696
</b-tab>
97+
<b-tab>
98+
<template v-slot:title><i class="fa fa-external-link"></i> {{ $t('message.external_references') }}</template>
99+
<b-card>
100+
<bootstrap-table
101+
ref="referencesTable"
102+
:columns="referencesTableColumns"
103+
:data="component.externalReferences"
104+
:options="referencesTableOptions">
105+
</bootstrap-table>
106+
</b-card>
107+
</b-tab>
97108
<b-tab>
98109
<template v-slot:title><i class="fa fa-file-text-o"></i> {{ $t('message.notes') }}</template>
99110
<b-card>
@@ -119,6 +130,8 @@
119130
import BInputGroupFormInput from "../../../forms/BInputGroupFormInput";
120131
import BInputGroupFormSelect from "../../../forms/BInputGroupFormSelect";
121132
import permissionsMixin from "../../../mixins/permissionsMixin";
133+
import xssFilters from "xss-filters";
134+
import common from "@/shared/common";
122135
123136
export default {
124137
name: "ComponentDetailsModal",
@@ -143,7 +156,44 @@
143156
{ value: 'FILE', text: 'File' }
144157
],
145158
selectableLicenses: [],
146-
selectedLicense: ''
159+
selectedLicense: '',
160+
referencesTableColumns: [
161+
{
162+
title: this.$t('message.url'),
163+
field: "url",
164+
sortable: false,
165+
formatter(value, row, index) {
166+
let url = xssFilters.uriInUnQuotedAttr(common.valueWithDefault(value, ""));
167+
return `<a href="${url}">${xssFilters.inHTMLData(common.valueWithDefault(value, ""))}</a>`;
168+
}
169+
},
170+
{
171+
title: this.$t('message.type'),
172+
field: "type",
173+
sortable: false,
174+
formatter(value, row, index) {
175+
return xssFilters.inHTMLData(common.valueWithDefault(value, ""));
176+
}
177+
}
178+
],
179+
referencesTableOptions: {
180+
search: false,
181+
showColumns: false,
182+
showRefresh: false,
183+
pagination: true,
184+
silentSort: false,
185+
sidePagination: 'client',
186+
queryParamsType: 'pageSize',
187+
pageList: '[5, 10, 25]',
188+
pageSize: 5,
189+
icons: {
190+
refresh: 'fa-refresh'
191+
},
192+
responseHandler: function (res, xhr) {
193+
res.total = xhr.getResponseHeader("X-Total-Count");
194+
return res;
195+
}
196+
}
147197
}
148198
},
149199
beforeMount() {

src/views/portfolio/projects/ServiceDetailsModal.vue

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,8 @@ export default {
258258
field: "url",
259259
sortable: false,
260260
formatter(value, row, index) {
261-
return xssFilters.inHTMLData(common.valueWithDefault(value, ""));
261+
let url = xssFilters.uriInUnQuotedAttr(common.valueWithDefault(value, ""));
262+
return `<a href="${url}">${xssFilters.inHTMLData(common.valueWithDefault(value, ""))}</a>`;
262263
}
263264
},
264265
{

0 commit comments

Comments
 (0)