Skip to content

Commit

Permalink
fix: AutompleteSelect when options is already filled and analytics St…
Browse files Browse the repository at this point in the history
…ackedBarsNormalized with selected implementation groups (#1493)

* fix: AutompleteSelect when options is already filled

* chore: format

* fix: selected implementation groups in analytics summary StackedBarsNormalized
  • Loading branch information
Mohamed-Hacene authored Feb 11, 2025
1 parent f4bcfcf commit 6b42979
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 23 deletions.
35 changes: 25 additions & 10 deletions backend/core/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -2958,16 +2958,31 @@ def get_requirements_status_count(self):

def get_requirements_result_count(self):
requirements_result_count = []
for rs in RequirementAssessment.Result:
requirements_result_count.append(
(
RequirementAssessment.objects.filter(result=rs)
.filter(compliance_assessment=self)
.filter(requirement__assessable=True)
.count(),
rs,
)
)
selected_implementation_groups_set = (
set(self.selected_implementation_groups)
if self.selected_implementation_groups
else None
)

requirements = RequirementAssessment.objects.filter(
compliance_assessment=self, requirement__assessable=True
).select_related("requirement")

if selected_implementation_groups_set is not None:
result_groups = {}
for req in requirements:
req_groups = set(req.requirement.implementation_groups or [])
if selected_implementation_groups_set & req_groups:
result_groups.setdefault(req.result, []).append(req)

for rs in RequirementAssessment.Result:
count = len(result_groups.get(rs, []))
requirements_result_count.append((count, rs))
else:
for rs in RequirementAssessment.Result:
count = requirements.filter(result=rs).count()
requirements_result_count.append((count, rs))

return requirements_result_count

def get_measures_status_count(self):
Expand Down
24 changes: 11 additions & 13 deletions frontend/src/lib/components/Forms/AutocompleteSelect.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@
let selected: (typeof options)[] = [];
let selectedValues: (string | undefined)[] = [];
let isInternalUpdate = false;
let optionsLoaded = false;
let optionsLoaded = Boolean(options.length);
let initialValue = $value; // Store initial value
const default_value = nullable ? null : selectedValues[0];
Expand Down Expand Up @@ -141,21 +141,19 @@
if (updateMissingConstraint) {
updateMissingConstraint(field, isMissing);
}
// After options are loaded, set initial selection using stored initial value
if (initialValue) {
selected = options.filter((item) =>
Array.isArray(initialValue)
? initialValue.includes(item.value)
: item.value === initialValue
);
} else if (options.length === 1 && $constraints?.required) {
selected = [options[0]];
}
optionsLoaded = true;
}
}
// After options are loaded, set initial selection using stored initial value
if (initialValue) {
selected = options.filter((item) =>
Array.isArray(initialValue)
? initialValue.includes(item.value)
: item.value === initialValue
);
} else if (options.length === 1 && $constraints?.required) {
selected = [options[0]];
}
} catch (error) {
console.error(`Error fetching ${optionsEndpoint}:`, error);
} finally {
Expand Down

0 comments on commit 6b42979

Please sign in to comment.