Skip to content

Commit dc5e392

Browse files
fix: refresh forms values on applied control or evidences edition (#2038)
* only fetch options on applied control creation * stop ordering choices in api passthrough * fix priority value type casting * more radical fix * fixup --------- Co-authored-by: Abderrahmane Smimite <smimite@gmail.com>
1 parent f6acccc commit dc5e392

File tree

4 files changed

+30
-26
lines changed

4 files changed

+30
-26
lines changed

frontend/src/lib/components/Forms/ModelForm/AppliedControlPolicyForm.svelte

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,23 @@
2020
export let initialData: Record<string, any> = {};
2121
2222
onMount(async () => {
23-
const selectOptions = {
24-
status: await fetch('/applied-controls/status').then((r) => r.json()),
25-
priority: await fetch('/applied-controls/priority').then((r) => r.json()),
26-
category: await fetch('/applied-controls/category').then((r) => r.json()),
27-
csf_function: await fetch('/applied-controls/csf_function').then((r) => r.json()),
28-
effort: await fetch('/applied-controls/effort').then((r) => r.json())
29-
};
30-
model.selectOptions = selectOptions;
31-
if (model.selectOptions && 'priority' in model.selectOptions) {
32-
model.selectOptions['priority'].forEach((element) => {
33-
element.value = parseInt(element.value);
34-
});
23+
if (!model.selectOptions) {
24+
const selectOptions = {
25+
status: await fetch('/applied-controls/status').then((r) => r.json()),
26+
priority: await fetch('/applied-controls/priority').then((r) => r.json()),
27+
category: await fetch('/applied-controls/category').then((r) => r.json()),
28+
csf_function: await fetch('/applied-controls/csf_function').then((r) => r.json()),
29+
effort: await fetch('/applied-controls/effort').then((r) => r.json())
30+
};
31+
model.selectOptions = selectOptions;
3532
}
3633
});
34+
35+
$: if (model?.selectOptions?.priority) {
36+
model.selectOptions.priority.forEach((element) => {
37+
element.value = parseInt(element.value);
38+
});
39+
}
3740
</script>
3841

3942
{#if !duplicate}

frontend/src/lib/utils/crud.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1021,12 +1021,15 @@ export const URL_MODEL_MAP: ModelMap = {
10211021
localNamePlural: 'findings',
10221022
verboseName: 'Finding',
10231023
verboseNamePlural: 'Findings',
1024-
foreignKeyFields: [{ field: 'findings_assessment', urlModel: 'findings-assessments' }],
1025-
// reverseForeignKeyFields: [
1026-
// { field: 'findings', urlModel: 'vulnerabilities' },
1027-
// { field: 'findings', urlModel: 'reference-controls' },
1028-
// { field: 'findings', urlModel: 'applied-controls' }
1029-
// ],
1024+
foreignKeyFields: [
1025+
{ field: 'findings_assessment', urlModel: 'findings-assessments' },
1026+
{ field: 'applied_controls', urlModel: 'applied-controls' }
1027+
],
1028+
reverseForeignKeyFields: [
1029+
// { field: 'findings', urlModel: 'vulnerabilities' },
1030+
// { field: 'findings', urlModel: 'reference-controls' },
1031+
{ field: 'findings', urlModel: 'applied-controls' }
1032+
],
10301033
selectFields: [{ field: 'severity', valueType: 'number' }, { field: 'status' }]
10311034
},
10321035
incidents: {

frontend/src/lib/utils/table.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -980,13 +980,13 @@ export const listViewFields = {
980980
body: ['ref_id', 'name', 'description', 'category', 'findings_count', 'perimeter']
981981
},
982982
findings: {
983-
head: ['ref_id', 'name', 'description', 'findings_assessment', 'severity', 'status', 'labels'],
983+
head: ['ref_id', 'name', 'findings_assessment', 'severity', 'owner', 'status', 'labels'],
984984
body: [
985985
'ref_id',
986986
'name',
987-
'description',
988987
'findings_assessment',
989988
'severity',
989+
'owner',
990990
'status',
991991
'filtering_labels'
992992
],

frontend/src/routes/(app)/(internal)/[model=urlmodel]/[filter=filters]/+server.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,10 @@ export const GET: RequestHandler = async ({ fetch, params }) => {
1515

1616
const options =
1717
typeof Object.values(optionsResponse)[0] === 'string'
18-
? Object.keys(optionsResponse)
19-
.map((key) => ({
20-
label: optionsResponse[key],
21-
value: key
22-
}))
23-
.sort((a, b) => a.label.localeCompare(b.label))
18+
? Object.keys(optionsResponse).map((key) => ({
19+
label: optionsResponse[key],
20+
value: key
21+
}))
2422
: optionsResponse;
2523

2624
return new Response(JSON.stringify(options), {

0 commit comments

Comments
 (0)