Skip to content

Commit 0f242ab

Browse files
committed
feat: add project approval status
1 parent cb39dd8 commit 0f242ab

7 files changed

Lines changed: 70 additions & 50 deletions

File tree

backend/domain/approval/approval.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,9 @@ type ProjectApprovable struct {
107107
SpdxUploaded *time.Time
108108
IsSpdxRecent bool
109109

110-
Supplier *string
111-
IsApprovable bool
110+
Supplier *string
111+
IsSpdxApprovable bool
112+
HasProjectApproval bool
112113
}
113114

114115
type Info struct {

backend/domain/approval/rest.go

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -63,34 +63,36 @@ type FillCustomerDto struct {
6363

6464
func (p *ProjectApprovable) ToDto() ProjectApprovableDto {
6565
return ProjectApprovableDto{
66-
ProjectKey: p.ProjectKey,
67-
ProjectName: p.ProjectName,
68-
ApprovableSPDX: p.ApprovableSPDX.ToDto(),
69-
CustomerDiffers: p.CustomerDiffers,
70-
SupplierDiffers: p.SupplierDiffers,
71-
ApprovableStats: p.ApprovableStats,
72-
SpdxName: p.SpdxName,
73-
SpdxTag: p.SpdxTag,
74-
SpdxUploaded: p.SpdxUploaded,
75-
IsSpdxRecent: p.IsSpdxRecent,
76-
Supplier: p.Supplier,
77-
IsApprovable: p.IsApprovable,
66+
ProjectKey: p.ProjectKey,
67+
ProjectName: p.ProjectName,
68+
ApprovableSPDX: p.ApprovableSPDX.ToDto(),
69+
CustomerDiffers: p.CustomerDiffers,
70+
SupplierDiffers: p.SupplierDiffers,
71+
ApprovableStats: p.ApprovableStats,
72+
SpdxName: p.SpdxName,
73+
SpdxTag: p.SpdxTag,
74+
SpdxUploaded: p.SpdxUploaded,
75+
IsSpdxRecent: p.IsSpdxRecent,
76+
Supplier: p.Supplier,
77+
IsSpdxApprovable: p.IsSpdxApprovable,
78+
HasProjectApproval: p.HasProjectApproval,
7879
}
7980
}
8081

8182
type ProjectApprovableDto struct {
82-
ProjectKey string `json:"projectKey"`
83-
ProjectName string `json:"projectName"`
84-
ApprovableSPDX approvable.ApprovableSPDXDto `json:"approvablespdx"`
85-
CustomerDiffers bool `json:"customerdiff"`
86-
SupplierDiffers bool `json:"supplierdiff"`
87-
ApprovableStats components.ComponentStats `json:"stats"`
88-
SpdxName string `json:"spdxname"`
89-
SpdxTag string `json:"spdxtag"`
90-
SpdxUploaded *time.Time `json:"spdxUploaded"`
91-
IsSpdxRecent bool `json:"isSpdxRecent"`
92-
Supplier *string `json:"supplier"`
93-
IsApprovable bool `json:"isApprovable"`
83+
ProjectKey string `json:"projectKey"`
84+
ProjectName string `json:"projectName"`
85+
ApprovableSPDX approvable.ApprovableSPDXDto `json:"approvablespdx"`
86+
CustomerDiffers bool `json:"customerdiff"`
87+
SupplierDiffers bool `json:"supplierdiff"`
88+
ApprovableStats components.ComponentStats `json:"stats"`
89+
SpdxName string `json:"spdxname"`
90+
SpdxTag string `json:"spdxtag"`
91+
SpdxUploaded *time.Time `json:"spdxUploaded"`
92+
IsSpdxRecent bool `json:"isSpdxRecent"`
93+
Supplier *string `json:"supplier"`
94+
IsSpdxApprovable bool `json:"isSpdxApprovable"`
95+
HasProjectApproval bool `json:"hasProjectApproval"`
9496
}
9597

9698
type ApproveStateDto struct {

backend/infra/service/approval/approval.go

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -231,18 +231,19 @@ func (s *ApprovalService) getApprovalInfo(targetProject *project.Project, projec
231231
res.CompStats.AddStats(sbomStats)
232232

233233
res.Projects = append(res.Projects, approval.ProjectApprovable{
234-
ProjectKey: pr.Key,
235-
ProjectName: pr.Name,
236-
CustomerDiffers: pr.CustomerMeta.Diff(targetProject.CustomerMeta),
237-
SupplierDiffers: pr.DocumentMeta.Diff(targetProject.DocumentMeta),
238-
Supplier: supplierUserId,
239-
ApprovableSPDX: approvableSPDX,
240-
SpdxName: sbom.MetaInfo.Name,
241-
SpdxTag: sbom.Tag,
242-
ApprovableStats: sbomStats,
243-
SpdxUploaded: sbom.Uploaded,
244-
IsSpdxRecent: isSpdxRecent,
245-
IsApprovable: hasProjectApprovable,
234+
ProjectKey: pr.Key,
235+
ProjectName: pr.Name,
236+
CustomerDiffers: pr.CustomerMeta.Diff(targetProject.CustomerMeta),
237+
SupplierDiffers: pr.DocumentMeta.Diff(targetProject.DocumentMeta),
238+
Supplier: supplierUserId,
239+
ApprovableSPDX: approvableSPDX,
240+
SpdxName: sbom.MetaInfo.Name,
241+
SpdxTag: sbom.Tag,
242+
ApprovableStats: sbomStats,
243+
SpdxUploaded: sbom.Uploaded,
244+
IsSpdxRecent: isSpdxRecent,
245+
IsSpdxApprovable: hasProjectApprovable,
246+
HasProjectApproval: pr.HasApproval,
246247
})
247248
}
248249
return res

frontend/libs/portal/components/grids/GridSPDXList.vue

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -93,12 +93,20 @@ export default defineComponent({
9393
];
9494
9595
if (props.showSupplier) {
96-
tableHeaders.push({
97-
title: t('COL_SUPPLIER'),
98-
value: 'supplier',
99-
align: 'start',
100-
width: 250,
101-
});
96+
tableHeaders.push(
97+
{
98+
title: t('COL_SUPPLIER'),
99+
value: 'supplier',
100+
align: 'start',
101+
width: 250,
102+
},
103+
{
104+
title: t('PROJECT_APPROVAL_STATUS'),
105+
value: 'hasProjectApproval',
106+
align: 'center',
107+
width: 120,
108+
},
109+
);
102110
}
103111
104112
tableHeaders.push({title: '', key: 'data-table-group', align: 'start'});
@@ -221,7 +229,7 @@ export default defineComponent({
221229
if (!isGroupOpen(item)) toggleGroup(item);
222230
}
223231
"></template>
224-
<th :colspan="showSupplier ? 4 : 3" class="text-caption expand-header p-1 px-3 text-start">
232+
<th :colspan="showSupplier ? 5 : 3" class="text-caption expand-header p-1 px-3 text-start">
225233
<span @click="openProject(item.items[0].raw.projectKey)" class="cursor-pointer">
226234
<span class="font-color-table">{{ t('PROJECT') }}:</span>
227235
{{ item.items[0].raw.projectName }}
@@ -250,12 +258,14 @@ export default defineComponent({
250258
<span v-if="item.spdxname == ''">{{ missingSbomText !== '' ? missingSbomText : t('NO_APPROVABLE_SPDX') }}</span>
251259
<v-row class="align-center pl-2" v-else>
252260
<v-col cols="auto" class="pa-0">
253-
<v-icon v-if="showSbomExtras && item.isApprovable" color="primary" size="small" class="pb-1">mdi-star</v-icon>
254-
<Tooltip v-if="showSbomExtras && item.isApprovable" :text="t('TT_approvable_spdx')" />
255-
<v-icon v-if="showSbomExtras && !item.isApprovable" color="primary" size="small" class="pb-1"
261+
<v-icon v-if="showSbomExtras && item.isSpdxApprovable" color="primary" size="small" class="pb-1"
262+
>mdi-star</v-icon
263+
>
264+
<Tooltip v-if="showSbomExtras && item.isSpdxApprovable" :text="t('TT_approvable_spdx')" />
265+
<v-icon v-if="showSbomExtras && !item.isSpdxApprovable" color="primary" size="small" class="pb-1"
256266
>mdi-star-outline</v-icon
257267
>
258-
<Tooltip v-if="showSbomExtras && !item.isApprovable" :text="t('TT_not_approvable_spdx')" />
268+
<Tooltip v-if="showSbomExtras && !item.isSpdxApprovable" :text="t('TT_not_approvable_spdx')" />
259269
</v-col>
260270
<v-col cols="auto" class="pa-0">
261271
<v-icon v-if="isApproved(item)" color="green" size="small" class="ml-1 pb-1">
@@ -280,6 +290,9 @@ export default defineComponent({
280290
<template v-if="showSupplier" v-slot:[`item.supplier`]="{item}">
281291
{{ item.supplier ? item.supplier : t('NO_SUPPLIER_INFORMATION') }}
282292
</template>
293+
<template #[`item.hasProjectApproval`]="{item}">
294+
<v-icon icon="mdi-check" class="mr-2" :color="item.hasProjectApproval ? 'primary' : 'tableBorderColor'"></v-icon>
295+
</template>
283296
<template v-slot:[`item.stats`]="{item}">
284297
<div v-if="item.spdxname != ''">
285298
<div class="flex flex-row justify-between">

frontend/libs/portal/i18n/locales/de.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -727,6 +727,7 @@
727727
"TAB_PROJECT_OVERVIEW": "Übersicht",
728728
"COL_SUPPLIER": "Lieferant ",
729729
"NO_SUPPLIER_INFORMATION": "Keine Lieferanteninformationen verfügbar",
730+
"PROJECT_APPROVAL_STATUS": "Hat Genehmigungsanfrage",
730731
"TAB_PROJECT_CHILDREN": "Teilprojekte",
731732
"TAB_PROJECT_VERSION": "Kanäle",
732733
"TAB_PROJECT_USERMANAGEMENT": "Benutzer-Verwaltung",

frontend/libs/portal/i18n/locales/en.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -700,6 +700,7 @@
700700
"TAB_PROJECT_OVERVIEW": "Overview",
701701
"COL_SUPPLIER": "Supplier",
702702
"NO_SUPPLIER_INFORMATION": "No supplier information available",
703+
"PROJECT_APPROVAL_STATUS": "Has Approval",
703704
"TAB_PROJECT_CHILDREN": "Children",
704705
"TAB_PROJECT_VERSION": "Channels",
705706
"TAB_PROJECT_USERMANAGEMENT": "User Management",

frontend/libs/portal/model/Approval.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ export class ProjectApprovable {
1818
public stats: ComponentStats = {} as ComponentStats;
1919
public approvablespdx: ApprovableSPDXDto = {} as ApprovableSPDXDto;
2020
public supplier = '';
21-
public isApprovable = false;
21+
public isSpdxApprovable = false;
22+
public hasProjectApproval = false;
2223
}
2324

2425
export class ApprovableInfo {

0 commit comments

Comments
 (0)