Skip to content

Comments

KAAV-3492 Validoinnin nopeutus ja Seuraavat elementit eivät siirry eteenpäin, kun elementtiä siirretään menneisyydestä#658

Merged
henrihaapalasiili merged 40 commits intodevelopmentfrom
KAAV-3492b
Feb 19, 2026
Merged

KAAV-3492 Validoinnin nopeutus ja Seuraavat elementit eivät siirry eteenpäin, kun elementtiä siirretään menneisyydestä#658
henrihaapalasiili merged 40 commits intodevelopmentfrom
KAAV-3492b

Conversation

@henrihaapalasiili
Copy link
Contributor

@henrihaapalasiili henrihaapalasiili commented Jan 14, 2026

-Fix race condition in timeline validation

  • Move validateProjectTimetable dispatch from VisTimelineGroup drag handlers
    to EditProjectTimetableModal componentDidUpdate

  • Validation now triggers after checkForDecreasingValues cascade completes

  • Pass attributeData directly to validateProjectTimetable action to avoid
    stale selector values

  • Add guard to prevent duplicate validation requests

  • Update saga to use passedAttributeData and compute diff with
    getChangedAttributeData
    -Validation logic change to make validation faster.
    -Modified timeutil test to use dynamic dates.
    -Adding triggers validation.
    -Trigger validation when removing deadline groups

  • Updated getChangedValues to return isAdd and isRemove separately

  • Added validation trigger for group removal (isRemove) to recalculate phase boundaries

  • This ensures phase dates are properly recalculated when esilläolo or lautakunta groups are deleted

Fixes issue where validation was running before cascaded date values
were synced to the form, causing incorrect corrections.

-KAAV-3517 fix

Fix esilläolo OFF handling and adjustDeadlineData

  • Add hasEsillaolo check to limit esillaoloOff logic to periaatteet/luonnos phases
  • Fix adjustDeadlineData || operator to explicit undefined check
  • Fix test key typo tarkistettuehdotusvaihe -> tarkistettu_ehdotusvaihe"

Use DB distance values instead of hardcoded fallbacks

  • objectUtil.js: Replace hardcoded gaps (22, 5) with DB values
    initial_distance ?? distance_from_previous ?? 0
  • timeUtil.js: Remove hardcoded gap overrides for maaraaika/nahtavilla
  • Add projectVisibilityUtils.js for centralized visibility logic
  • Add unit tests for objectUtil, timeUtil, projectReducer

-When deleting phases the phase lengths leaves a gap between adjacent phases bug fix.

@henrihaapalasiili henrihaapalasiili changed the title KAAV-3492 validation logic change to make validation faster KAAV-3492 Validoinnin nopeutus ja Seuraavat elementit eivät siirry eteenpäin, kun elementtiä siirretään menneisyydestä Jan 14, 2026
henrihaapalasiili and others added 27 commits February 16, 2026 10:27
- Move validateProjectTimetable dispatch from VisTimelineGroup drag handlers
  to EditProjectTimetableModal componentDidUpdate
- Validation now triggers after checkForDecreasingValues cascade completes
- Pass attributeData directly to validateProjectTimetable action to avoid
  stale selector values
- Add guard to prevent duplicate validation requests
- Update saga to use passedAttributeData and compute diff with
  getChangedAttributeData

Fixes issue where validation was running before cascaded date values
were synced to the form, causing incorrect corrections.
- Remove unused validateProjectTimetable import from VisTimelineGroup
- Validation now triggers from EditProjectTimetableModal after cascade completes
- Saga uses passed attributeData and computes diff vs initial values
- Remove unused 'initialize' import from projectSaga

Ensures single PATCH request per date drag and proper handling of
cascaded date values before backend validation.
…rt, L and XL have reversed order in ehdotus phase: lautakunta first, nähtävilläolo last bug fix
…esilläolo is confirmed (#660)

Frontend changes:
- Updated generateConfirmedFields.js to include phase START boundary fields in confirmed_fields when the first esilläolo of that phase is confirmed
- Added phaseStartMap mapping phase names to their start boundary field identifiers
- Phase END boundaries are NOT protected (user can still add more esilläolos)

This ensures that when a user confirms the first esilläolo date of a phase, the phase start date becomes locked and won't be recalculated during save.
- Updated getChangedValues to return isAdd and isRemove separately
- Added validation trigger for group removal (isRemove) to recalculate phase boundaries
- This ensures phase dates are properly recalculated when esilläolo or lautakunta groups are deleted
- Add hasEsillaolo check to limit esillaoloOff logic to periaatteet/luonnos phases
- Fix adjustDeadlineData || operator to explicit undefined check
- Fix test key typo tarkistettuehdotusvaihe -> tarkistettu_ehdotusvaihe
- objectUtil.js: Replace hardcoded gaps (22, 5) with DB values

- timeUtil.js: Remove hardcoded gap overrides for maaraaika/nahtavilla
- Add projectVisibilityUtils.js for centralized visibility logic
- Add unit tests for objectUtil, timeUtil, projectReducer
- Extract runAndGetDaysDiff() helper for dateDifference tests
- Use test.each() for parameterized test cases
- Reduce dateDifference tests from ~150 to ~70 lines
- Fix projectReducer.test.js expected date (timezone handling)
…gainst just-updated value, Only push timeline values forward if there's an actual overlaps
… groups

Skip cascade for non-boundary deadlines across phases. Only phase boundaries cascade
from previous phase. Fixes oas_esillaolo_aineiston_maaraaika incorrectly using
periaatteet predecessor instead of oasvaihe_alkaa_pvm.
- Prevents stale dates from reappearing when group is re-added
@sonarqubecloud
Copy link

@henrihaapalasiili henrihaapalasiili merged commit a1858b0 into development Feb 19, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant