Skip to content
Open
Show file tree
Hide file tree
Changes from 4 commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
ded2d13
KAAV-3388 Filter deprecated vahvista_paattyy attributes from confirme…
MinnaSiili Oct 3, 2025
24ecada
KAAV-3388 Add fix for SonarCloud issue
MinnaSiili Oct 3, 2025
1dc42b6
KAAV-3388 Reduce cognitive complexity of generateConfirmedFields
MinnaSiili Oct 3, 2025
889d9f4
KAAV-3388 Refactor more to reduce cognitive complexity
MinnaSiili Oct 3, 2025
60daa15
KAAV-3388 Add missign phaseNames
MinnaSiili Oct 10, 2025
f70b623
KAAV-3388 Support numeric and special suffixes in generateConfirmedFi…
MinnaSiili Oct 10, 2025
3da9406
KAAV-3388 Refactor to reduce cognitive complexity
MinnaSiili Oct 10, 2025
86c01aa
KAAV-3388 solve SonarCloud issues
MinnaSiili Oct 10, 2025
8563b01
KAAV-3388 add unit test to help with generateConfirmedFields
eemeli-kukkonen-siili Oct 16, 2025
8b1ea05
Fix highly important sonarcloud issue in unit test
eemeli-kukkonen-siili Oct 16, 2025
c5c4088
Update first generateConfirmedFields test
eemeli-kukkonen-siili Oct 16, 2025
3c263ee
Merge remote-tracking branch 'origin/development' into KAAV-3388
MinnaSiili Jan 12, 2026
3ca770f
KAAV-3388 Add missing ehdotuksen_nahtavilla_alkaa_pieni fields to tes…
MinnaSiili Jan 13, 2026
23df35f
KAAV-3388 Ensure tests cover all deadline attribute keys
MinnaSiili Jan 13, 2026
8996a60
KAAV-3388 Refactor generateConfirmedFields and ensure all expected fi…
MinnaSiili Jan 13, 2026
1f87c86
KAAV-3388 Add fix for SonarCloud issue
MinnaSiili Jan 13, 2026
5620c8d
KAAV-3388 Refactor generateConfirmedFields to reduce cognitive comple…
MinnaSiili Jan 13, 2026
b5329cf
Add test for generateConfirmedFields to validate confirmed fields output
eemeli-kukkonen-siili Jan 22, 2026
dd81466
KAAV-3388 Add tests for index-specific confirmations, metadata filter…
MinnaSiili Jan 27, 2026
554b2bc
KAAV-3388 Add missing lautakunta confirmation keys and simplify ehdot…
MinnaSiili Jan 27, 2026
da51b50
KAAV-3388 Remove unused projectSize parameter from getConfirmationKey…
MinnaSiili Jan 27, 2026
e4660cd
KAAV-3388 Fix indentation in projectSaga error handling blocks
MinnaSiili Jan 27, 2026
c50660d
KAAV-3388 Fix generateConfirmedFields index handling, metadata filter…
MinnaSiili Jan 27, 2026
07ff5a8
KAAV-3388 Remove unused phaseNames parameter from generateConfirmedFi…
MinnaSiili Jan 27, 2026
23f931c
KAAV-3388 Remove duplicate test to reduce code duplication
MinnaSiili Jan 27, 2026
70594b9
KAAV-3388 Fix SonarCloud code quality issues in generateConfirmedFields
MinnaSiili Jan 27, 2026
27e3fbb
KAAV-3388 Refactor addAliasFields to reduce cognitive complexity from…
MinnaSiili Jan 27, 2026
62d09fd
KAAV-3388 Further reduce cognitive complexity by extracting validatio…
MinnaSiili Jan 27, 2026
d1dec01
KAAV-3388 Fix field confirmation logic for KYLK deadlines, aineiston_…
MinnaSiili Feb 4, 2026
64caca3
KAAV-3388 Refactor generateConfirmedFields to reduce cognitive comple…
MinnaSiili Feb 4, 2026
76c0991
KAAV-3388 Extract helper functions matchesDeadlineFieldType and shoul…
MinnaSiili Feb 4, 2026
229ace1
KAAV-3388 Fix SonarCloud issues in VisTimelineGroup: use Number.parse…
MinnaSiili Feb 4, 2026
c66dde6
Merge development into KAAV-3388
MinnaSiili Feb 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions src/sagas/projectSaga.js
Original file line number Diff line number Diff line change
Expand Up @@ -756,8 +756,8 @@ function* validateProjectTimetable() {
const phaseNames = [
'periaatteet',
'oas',
'luonnos',
'ehdotus',
'kaavaluonnos',
'kaavaehdotus',
'tarkistettu_ehdotus'
];
//Find confirmed fields from attribute_data so backend knows not to edit them
Expand Down Expand Up @@ -853,8 +853,8 @@ function* saveProjectTimetable(action,retryCount = 0) {
const phaseNames = [
'periaatteet',
'oas',
'luonnos',
'ehdotus',
'kaavaluonnos',
'kaavaehdotus',
'tarkistettu_ehdotus'
];

Expand Down
68 changes: 38 additions & 30 deletions src/utils/generateConfirmedFields.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,41 @@
function getSpecialCaseFields(phase, base, finalSuffix) {
return [
`milloin_${phase}_${base}${finalSuffix}`,
`${phase}_lautakunta_aineiston_maaraaika${finalSuffix}`,
];
}

function getRegularFields(phase, group, finalSuffix, attributeData) {
const fields = [
`${phase}_${group}_aineiston_maaraaika${finalSuffix}`,
`milloin_${phase}_${group}_alkaa${finalSuffix}`,
`milloin_${phase}_${group}_paattyy${finalSuffix}`,
];
return fields.filter(key => key in attributeData);
}

function addMielipiteetField(confirmedFields, seenPhases, phase, attributeData) {
const mielipiteet = `viimeistaan_mielipiteet_${phase}`;
if (!seenPhases.has(phase) && mielipiteet in attributeData) {
confirmedFields.push(mielipiteet);
seenPhases.add(phase);
}
}

export function generateConfirmedFields(attributeData, confirmationAttributeNames, phaseNames) {
const filteredConfirmationAttributeNames = confirmationAttributeNames.filter(
key => key.includes('_alkaa') || key.includes('_lautakunnassa')
);

const confirmedFields = [];
const seenPhases = new Set();

confirmationAttributeNames.forEach((confirmationKey) => {
if (!attributeData[confirmationKey]) return;
for (const confirmationKey of filteredConfirmationAttributeNames) {
if (!attributeData[confirmationKey]) continue;

const rawKey = confirmationKey.replace(/^vahvista_/, '');
const phase = phaseNames.find((p) => rawKey === p || rawKey.startsWith(p + '_'));
if (!phase) return;
if (!phase) continue;

const suffixMatch = rawKey.match(/(_\d+)$/);
const suffix = suffixMatch ? suffixMatch[1] : '';
Expand All @@ -17,37 +45,17 @@ export function generateConfirmedFields(attributeData, confirmationAttributeName
const base = keyWithoutSuffix.replace(`${phase}_`, '');

const parts = base.split('_');
let group = parts[0];
let type = parts[1];
const group = parts[0];

if (parts.length === 1) {
// Special case like vahvista_periaatteet_lautakunnassa
const field1 = `milloin_${phase}_${base}${finalSuffix}`;
const field2 = `${phase}_lautakunta_aineiston_maaraaika${finalSuffix}`;

confirmedFields.push(field1);
confirmedFields.push(field2);

return;
confirmedFields.push(...getSpecialCaseFields(phase, base, finalSuffix));
addMielipiteetField(confirmedFields, seenPhases, phase, attributeData);
continue;
}

// Regular case
const aineisto = `${phase}_${group}_aineiston_maaraaika${finalSuffix}`;
const alkaa = `milloin_${phase}_${group}_alkaa${finalSuffix}`;
const paattyy = `milloin_${phase}_${group}_paattyy${finalSuffix}`;
const mielipiteet = `viimeistaan_mielipiteet_${phase}`;

[aineisto, alkaa, paattyy].forEach((key) => {
if (key in attributeData) {
confirmedFields.push(key);
}
});

if (!seenPhases.has(phase) && mielipiteet in attributeData) {
confirmedFields.push(mielipiteet);
seenPhases.add(phase);
}
});
confirmedFields.push(...getRegularFields(phase, group, finalSuffix, attributeData));
addMielipiteetField(confirmedFields, seenPhases, phase, attributeData);
}

return [...new Set(confirmedFields)];
}