Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Backoffice] Correction des champs du backoffice #3014

Merged
merged 7 commits into from
Mar 18, 2024

Conversation

louptheron
Copy link
Collaborator

@louptheron louptheron commented Mar 14, 2024

Linked issues

  • Correction du tableau de MAJ des segments de flottes
  • Passage de deux sections du backoffice REG en champs monitor-ui
  • Corrections des tests cypress associés

  • Tests E2E (Cypress)

Summary by CodeRabbit

  • New Features
    • Introduced components for creating and editing regulatory topics, fleet segments, and regulatory texts with validation and submission capabilities.
    • Added a component for daytime selection in fishing period regulation forms.
    • Enhanced fleet segment management with functionalities for listing, creating, updating, and deleting fleet segments.
    • Streamlined regulation editing with simplified control flows and improved form interactions.
    • Implemented new UI components for selecting regulatory law types, regions, and topics with dynamic state management.
  • Bug Fixes
    • Fixed consistency issues in database operations related to fleet segments.
    • Adjusted UI interactions and assertions for better reliability in fleet segment management.
    • Refined form validation checks and interactions in regulation updates for enhanced usability.
  • Refactor
    • Reorganized import paths across various components and use cases to align with new module structures.
    • Simplified functions and control flows in regulation confirmation and saving processes.
    • Removed unused imports and components to clean up the codebase.
  • Style
    • Updated styling properties for various components and styled components for improved UI consistency.
    • Adjusted dimensions of the SquareButton component for better UI alignment.
  • Tests
    • Modified and streamlined test scenarios for fleet segment management and regulation editing.
    • Updated Cypress tests to reflect changes in UI interactions and logic flows.
  • Chores
    • Updated import paths and removed redundant imports across the project to enhance code maintainability.
  • Documentation
    • Enhanced inline documentation for new features and significant changes to facilitate understanding and maintenance.

Copy link
Contributor

coderabbitai bot commented Mar 14, 2024

Walkthrough

The changes encompass a comprehensive revamp of the frontend components related to regulation management in the backoffice system. From refining selection and interaction logic to introducing novel components for an enhanced user experience, these updates aim to streamline the process of creating and editing regulations. Moreover, adjustments in the fleet segment features improve data handling and form interactions, contributing to a more robust and user-friendly system.

Changes

File Path Change Summary
frontend/cypress/e2e/backoffice/... Adjusted test scenarios for law types and regions, improved form handling, and enhanced modal interactions.
frontend/src/api/APIWorker.tsx
frontend/src/.../use_cases/vessel/getFleetSegments.ts
Updated import paths for fleetSegmentApi and related types for consistency.
frontend/src/features/Backoffice/... Various refinements in regulation editing components for better functionality and import organization.
frontend/src/features/FleetSegment/... Introduced new components for managing fleet segments with dynamic form adjustments.
frontend/src/router.tsx Updated import paths and components in the route configuration for better project structure.

Poem

Among the code, a rabbit did play,
Crafting changes, day by day.
🐇 Tinkering with forms and laws,
Enhancing systems with digital paws.

New components bloom, like flowers in spring,
A coder's touch, to code they bring.
🌺 In the land of bits and bytes,
Our rabbit dances through code's lights.

🌟🐰

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share

Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>.
    • Generate unit-tests for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit tests for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai generate interesting stats about this repository and render them as a table.
    • @coderabbitai show all the console.log statements in this repository.
    • @coderabbitai read src/utils.ts and generate unit tests.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (invoked as PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger a review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai help to get help.

Additionally, you can add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.

CodeRabbit Configration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • The JSON schema for the configuration file is available here.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/coderabbit-overrides.v2.json

CodeRabbit Discord Community

Join our Discord Community to get help, request features, and share feedback.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review Status

Actionable comments generated: 10

Configuration used: CodeRabbit UI

Commits Files that changed from the base of the PR and between 5225d2b and 7081d32.
Files selected for processing (48)
  • backend/src/main/kotlin/fr/gouv/cnsp/monitorfish/infrastructure/database/repositories/JpaFleetSegmentRepository.kt (2 hunks)
  • backend/src/test/kotlin/fr/gouv/cnsp/monitorfish/infrastructure/database/repositories/JpaFleetSegmentRepositoryITests.kt (1 hunks)
  • frontend/cypress/e2e/backoffice/fleet_segments.spec.ts (1 hunks)
  • frontend/cypress/e2e/backoffice/new_regulation.spec.ts (6 hunks)
  • frontend/cypress/e2e/backoffice/update_regulation.spec.ts (5 hunks)
  • frontend/src/api/APIWorker.tsx (1 hunks)
  • frontend/src/domain/use_cases/vessel/getFleetSegments.ts (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/ConfirmRegulationModal.jsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/EditRegulation.tsx (6 hunks)
  • frontend/src/features/Backoffice/edit_regulation/fishing_period/DayTimeCheckbox.tsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/fishing_period/FishingPeriodForm.jsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/gear_regulation/RegulatedGears.jsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/identification/CreateRegulationTopicForm.tsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationGeometryLine.tsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationLawTypeLine.tsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationLayerZoneLine.tsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationRegionLine.tsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationTopicLine.tsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/index.jsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/regulatory_text/RegulatoryText.tsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/regulatory_text/RegulatoryTextSection.jsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/regulatory_text/utils.ts (1 hunks)
  • frontend/src/features/Backoffice/tableCells.jsx (7 hunks)
  • frontend/src/features/ControlObjective/components/ControlObjectiveTable/SeaFrontControlObjectives.tsx (5 hunks)
  • frontend/src/features/FleetSegment/apis.ts (1 hunks)
  • frontend/src/features/FleetSegment/components/FleetSegmentsBackoffice/CreateOrEditFleetSegmentModal.tsx (1 hunks)
  • frontend/src/features/FleetSegment/components/FleetSegmentsBackoffice/FleetSegmentsTable.tsx (1 hunks)
  • frontend/src/features/FleetSegment/components/FleetSegmentsBackoffice/index.tsx (1 hunks)
  • frontend/src/features/FleetSegment/components/FleetSegmentsBackoffice/schema.ts (1 hunks)
  • frontend/src/features/FleetSegment/types.ts (1 hunks)
  • frontend/src/features/FleetSegment/useCases/addFleetSegmentYear.ts (1 hunks)
  • frontend/src/features/FleetSegment/useCases/createFleetSegment.ts (1 hunks)
  • frontend/src/features/FleetSegment/useCases/deleteFleetSegment.ts (1 hunks)
  • frontend/src/features/FleetSegment/useCases/getFleetSegmentsYearEntries.ts (1 hunks)
  • frontend/src/features/FleetSegment/useCases/updateFleetSegment.ts (1 hunks)
  • frontend/src/features/Logbook/components/VesselLogbook/LogbookSummary/FleetSegments.tsx (1 hunks)
  • frontend/src/features/Logbook/components/VesselLogbook/LogbookSummary/utils.ts (1 hunks)
  • frontend/src/features/Mission/components/MissionForm/ActionForm/shared/FleetSegmentsField.tsx (1 hunks)
  • frontend/src/features/Mission/components/MissionForm/ActionForm/shared/VesselFleetSegmentsField.tsx (1 hunks)
  • frontend/src/features/Mission/components/MissionForm/ActionForm/shared/utils.ts (1 hunks)
  • frontend/src/features/Mission/components/MissionForm/hooks/useGetMissionActionFormikUsecases.ts (1 hunks)
  • frontend/src/features/Regulation/slice.ts (1 hunks)
  • frontend/src/features/SideWindow/MissionList/FilterBar.tsx (1 hunks)
  • frontend/src/features/VesselList/index.tsx (2 hunks)
  • frontend/src/features/commonStyles/Backoffice.style.tsx (9 hunks)
  • frontend/src/features/commonStyles/Buttons.style.jsx (1 hunks)
  • frontend/src/router.tsx (2 hunks)
  • frontend/src/ui/LegacyRsuiteComponentsWrapper.tsx (1 hunks)
Additional comments: 72
frontend/src/features/FleetSegment/useCases/getFleetSegmentsYearEntries.ts (2)
  • 1-1: The import path for getFleetSegmentYearEntriesFromAPI has been updated to use a more structured approach, aligning with the project's new module structure. This change should improve code maintainability and clarity.
  • 3-3: The import path for setError has been updated to reflect the new project structure. Ensure that all references to this function across the project have been updated accordingly to prevent any unresolved imports.
frontend/src/features/FleetSegment/useCases/addFleetSegmentYear.ts (2)
  • 1-1: The import path for addFleetSegmentYearFromAPI has been updated to align with the new module structure. This is a positive change for code organization and clarity.
  • 4-4: The import path for setError has been adjusted. It's important to verify that all usages of setError across the project have been updated to this new path to maintain consistency and prevent import errors.
Verification successful

The verification process confirms that the import path for setError has been updated across the project to the new path as mentioned. All usages of setError found in the project are using the updated import path, ensuring consistency and preventing import errors.

Scripts Executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Check for any remaining old import paths for setError.
rg --type ts "domain/shared_slices/Global"

Length of output: 4704

frontend/src/features/Backoffice/edit_regulation/index.jsx (1)
  • 1-9: The removal of several imports (RegulationLawTypeLine, RegulationTopicLine, RegulationRegionLine, RegulationLayerZoneLine, and RegulatoryText) and retention of others (RegulationGeometryLine and RegulatoryTextSection) suggest a refactoring effort to simplify the regulation editing components. Ensure that the removed components are no longer needed and that their functionalities are either obsolete or have been integrated elsewhere in the application.
frontend/src/features/FleetSegment/components/FleetSegmentsBackoffice/schema.ts (1)
  • 3-13: The introduction of FLEET_SEGMENT_FORM_SCHEMA using yup for form validation is a good practice for ensuring data integrity and providing user feedback. The schema covers a comprehensive range of fields relevant to fleet segments. Pay special attention to the segment field's custom transform function to ensure it behaves as expected in all use cases, particularly with edge cases involving whitespace.
frontend/src/features/FleetSegment/useCases/deleteFleetSegment.ts (3)
  • 1-1: The update to the import path for deleteFleetSegmentFromAPI aligns with the project's new module structure, which should help in maintaining a clean and organized codebase.
  • 3-3: The updated import path for setError is consistent with the project's restructuring efforts. It's crucial to ensure that all references to setError are updated to prevent any import errors.
Verification successful

The verification process confirms that the import path for setError has been updated consistently across the project, in line with the restructuring efforts. All references to setError and related functions from domain/shared_slices/Global are correctly updated, as shown in the provided script output. There are no indications of missed or incorrectly updated references.

Scripts Executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Verify that all references to setError have been updated.
rg --type ts "domain/shared_slices/Global"

Length of output: 4704

* 5-5: The import path for the `FleetSegment` type has been updated, which is part of the project's reorganization. Ensure that all type references across the project are consistent with this new path.
Verification successful

The extensive search across the project for the usage of the FleetSegment type has revealed consistent usage of the updated import path @features/FleetSegment/types in all TypeScript files where the FleetSegment type is imported or referenced. This confirms that the project's reorganization concerning the FleetSegment type has been successfully applied across the codebase, ensuring that all type references are consistent with the new path.

Based on the provided script output, there are no instances where the FleetSegment type is imported from an outdated or incorrect path. All references to the FleetSegment type use the updated path, aligning with the project's reorganization efforts.

Given this information, it can be concluded that the review comment regarding the update of the import path for the FleetSegment type and the need to ensure consistency across the project has been successfully verified.

Scripts Executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Check for consistency in FleetSegment type usage across the project.
rg --type ts "@features/FleetSegment/types"

Length of output: 438



Script:

#!/bin/bash
# Search for any import or usage of FleetSegment type across TypeScript files to ensure no old paths are used.
rg --type ts "FleetSegment"

Length of output: 41521

frontend/src/features/FleetSegment/types.ts (1)
  • 1-23: The definition of FleetSegment and UpdateFleetSegment types is clear and comprehensive, covering all necessary fields for managing fleet segments. The use of | undefined for optional fields is appropriate, ensuring flexibility in data handling. Ensure that these types are consistently used across the project where fleet segment data is manipulated or displayed.
frontend/src/features/Mission/components/MissionForm/ActionForm/shared/utils.ts (1)
  • 4-4: The update to the import path for the FleetSegment type from @features/FleetSegment/types is a positive change, ensuring that type definitions are centralized and consistent across the project. This should facilitate easier maintenance and updates to type definitions in the future.
frontend/src/domain/use_cases/vessel/getFleetSegments.ts (2)
  • 1-1: The update to the import path for fleetSegmentApi aligns with the project's efforts to reorganize and consolidate its structure. This should improve the clarity and maintainability of the codebase.
  • 3-3: The import path for the FleetSegment type has been updated to reflect the project's new structure. It's important to ensure that this type is consistently used across the project to maintain type safety and clarity.
frontend/src/features/Backoffice/edit_regulation/regulatory_text/utils.ts (1)
  • 22-29: The function checkNameAndUrl correctly checks for missing or invalid reference and url values. The use of checkURL for URL validation is a good practice. However, consider adding a comment explaining the expected format for url to improve maintainability.

Consider adding a comment detailing the expected URL format that checkURL validates against, to improve code readability and maintainability.

frontend/src/features/FleetSegment/useCases/createFleetSegment.ts (2)
  • 1-5: The reorganization of import paths for createFleetSegmentFromAPI, setError, and types FleetSegment, UpdateFleetSegment aligns with the PR's objective of enhancing maintainability through a more structured module system.
  • 1-8: > 📝 NOTE

This review was outside the diff hunks and was mapped to the diff hunk with the greatest overlap. Original lines [5-36]

The createFleetSegment function correctly implements the creation logic for a fleet segment, including validation of required fields and error handling. The use of async/await for asynchronous operations and dispatching errors to a global error handler are good practices.

frontend/src/features/FleetSegment/useCases/updateFleetSegment.ts (2)
  • 1-5: The adjustments to import paths for updateFleetSegmentFromAPI, setError, and types FleetSegment, UpdateFleetSegment are consistent with the PR's goal of improving code structure and maintainability.
  • 1-8: > 📝 NOTE

This review was outside the diff hunks and was mapped to the diff hunk with the greatest overlap. Original lines [5-40]

The updateFleetSegment function properly handles the update logic, including validation and error handling. The use of async/await and dispatching errors to a global error handler are consistent with best practices.

frontend/src/features/Backoffice/edit_regulation/fishing_period/DayTimeCheckbox.tsx (3)
  • 1-4: The import statements are well-organized, and the use of absolute paths for hooks and components from the project's own modules aligns with best practices for maintainability and readability.
  • 10-31: The DayTimeCheckbox component correctly implements the checkbox logic, including disabling the checkbox based on props and updating the state accordingly. The use of useEffect to reset the state when the checkbox is disabled is a good practice.
  • 34-36: The styled component StyledCheckbox is correctly defined and applies a margin style. This is a good use of styled-components for encapsulating and reusing styles.
frontend/src/features/Logbook/components/VesselLogbook/LogbookSummary/FleetSegments.tsx (2)
  • 2-9: > 📝 NOTE

This review was outside the diff hunks and was mapped to the diff hunk with the greatest overlap. Original lines [1-6]

The update to the import path for useGetFleetSegmentsQuery from a relative to an absolute path enhances the readability and maintainability of the code by making dependencies clearer.

  • 6-6: The FleetSegments component correctly fetches and displays fleet segments using the useGetFleetSegmentsQuery hook. The use of a utility function to process segments and the conditional rendering based on the presence of segments are well-implemented.
frontend/src/features/Logbook/components/VesselLogbook/LogbookSummary/utils.ts (2)
  • 1-1: The update to the import path for the FleetSegment type aligns with the PR's objective of improving code structure and maintainability by using more organized and consistent paths.
  • 1-1: The utility functions getTripSegments and getSegmentInfo are well-implemented, providing clear and efficient logic for processing and displaying fleet segment information. The use of optional chaining and conditional rendering based on the presence of segment properties are good practices.
frontend/src/features/Backoffice/edit_regulation/identification/RegulationLayerZoneLine.tsx (2)
  • 1-4: The import statements are well-organized, and the use of absolute paths for hooks and components from the project's own modules aligns with best practices for maintainability and readability.
  • 13-42: The RegulationLayerZoneLine component correctly implements the text input logic, including updating the state based on user input. The use of useBackofficeAppDispatch and useBackofficeAppSelector for state management and dispatching actions is consistent with Redux best practices.
frontend/src/features/Backoffice/edit_regulation/identification/RegulationLawTypeLine.tsx (2)
  • 1-4: The import statements are well-organized, and the use of absolute paths for hooks and components from the project's own modules aligns with best practices for maintainability and readability.
  • 11-43: The RegulationLawTypeLine component correctly implements the select input logic, including updating the state based on user selection. The use of useBackofficeAppDispatch and useBackofficeAppSelector for state management and dispatching actions is consistent with Redux best practices. The conditional logic for clearing the region based on the law type selection is a thoughtful addition.
frontend/src/router.tsx (2)
  • 1-10: The import paths have been updated to reflect the new structure of the project. This is a good practice for maintaining clarity and organization as the project evolves.
  • 65-65: Replacing FleetSegments with FleetSegmentsBackoffice in the route configuration aligns with the PR objectives of enhancing backoffice functionalities. Ensure that all references and dependencies related to FleetSegments are updated accordingly.
Verification successful

The search results indicate that FleetSegments is still referenced in various parts of the codebase, particularly within the FleetSegment feature directory and its use cases, components, and API calls. These references are appropriate and expected, as they pertain to the functionality and operations related to fleet segments within the application. The replacement of FleetSegments with FleetSegmentsBackoffice in the route configuration, as mentioned in the review comment, seems to be a specific change aimed at enhancing backoffice functionalities. The presence of FleetSegments in other parts of the code does not contradict the PR objectives but rather indicates that FleetSegments and FleetSegmentsBackoffice may serve different purposes within the application.

Given the context and the search results, it can be concluded that the replacement of FleetSegments with FleetSegmentsBackoffice in the route configuration is aligned with enhancing backoffice functionalities, and the continued use of FleetSegments in other parts of the codebase is appropriate for their respective functionalities.

Scripts Executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Verify that FleetSegments is no longer used elsewhere inappropriately
rg --type tsx "FleetSegments" --vimgrep

Length of output: 67



Script:

#!/bin/bash
# Verify that FleetSegments is no longer used elsewhere inappropriately by searching all files
rg "FleetSegments" --vimgrep

Length of output: 30692

frontend/src/features/Backoffice/edit_regulation/identification/RegulationGeometryLine.tsx (2)
  • 1-4: Refactoring imports to use more specific paths improves modularity and makes the codebase easier to navigate. Good job on organizing these imports.
  • 39-57: The logic for displaying tags and icons based on conditions is clear and concise. Using conditional rendering to toggle between the Icon.Hide and Icon.Display icons is a neat approach.
frontend/src/features/Backoffice/edit_regulation/ConfirmRegulationModal.jsx (2)
  • 16-17: Simplifying the save function to directly dispatch actions without using batch makes the code cleaner. However, ensure that this change does not affect the transactional integrity of the actions if they were intended to be batched for a reason.
  • 16-17: Removing the dispatch of setRegulationModified in the close function could impact the application's state management, particularly if other components rely on this state to determine modifications. Verify that this change aligns with the intended behavior.
frontend/src/features/commonStyles/Buttons.style.jsx (1)
  • 104-105: Changing the dimensions of the SquareButton component from 34x34 to 30x30 pixels could affect the UI's consistency and alignment. Verify that this change aligns with the design specifications and does not introduce visual regressions in places where SquareButton is used.
frontend/src/features/Mission/components/MissionForm/hooks/useGetMissionActionFormikUsecases.ts (1)
  • 2-2: The import path for useGetFleetSegmentsQuery has been updated to reflect the new module structure. This change aligns with the PR objectives of reorganizing import paths to support a cleaner and more maintainable codebase.
frontend/src/features/Mission/components/MissionForm/ActionForm/shared/VesselFleetSegmentsField.tsx (1)
  • 1-1: The import path for useGetFleetSegmentsQuery has been updated to reflect the new module structure. This change aligns with the PR objectives of reorganizing import paths to support a cleaner and more maintainable codebase.
backend/src/main/kotlin/fr/gouv/cnsp/monitorfish/infrastructure/database/repositories/JpaFleetSegmentRepository.kt (1)
  • 57-59: The addition of the operation to update the segment before other fields in the update method ensures better consistency in database operations. This change is crucial for maintaining data integrity when updating fleet segments.
frontend/src/features/FleetSegment/apis.ts (1)
  • 1-2: The reorganization of imports and adjustments to import paths for ApiError and types related to FleetSegment align with the PR objectives of updating import paths to reflect the new project structure. This change supports a cleaner and more maintainable codebase.
frontend/src/features/commonStyles/Backoffice.style.tsx (1)
  • 1-1: The addition of imports for Checkbox and RadioGroup from 'rsuite' indicates the use of these components in the backoffice styling. This change aligns with the PR objectives of enhancing the backoffice's functionality and usability.
frontend/src/features/Backoffice/edit_regulation/fishing_period/FishingPeriodForm.jsx (1)
  • 10-10: The update to the import statement for DayTimeCheckbox to use named import syntax aligns with the PR objectives of ensuring consistency and maintainability in the codebase.
frontend/src/features/Backoffice/edit_regulation/identification/RegulationTopicLine.tsx (1)
  • 1-4: The updates to import paths in RegulationTopicLine.tsx reflect the new module structure and align with the PR objectives of reorganizing import paths to support a cleaner and more maintainable codebase.
frontend/src/features/FleetSegment/components/FleetSegmentsBackoffice/CreateOrEditFleetSegmentModal.tsx (4)
  • 1-7: Consider organizing imports to improve readability. Grouping imports (e.g., library imports, local imports) can make the code easier to navigate.
  • 32-47: The useMemo hook is used to define initialValues for the form. Ensure that all dependencies of this memoization are correctly listed in the dependency array to avoid stale closures.
  • 64-117: The modal component and its children are well-structured. However, consider extracting large blocks of JSX into smaller, reusable components for improved readability and maintainability.
  • 121-147: Styled components are defined at the bottom of the file. This is a common practice, but ensure that these components are not overly specific to this file if they have potential for reuse in other parts of the application.
frontend/src/api/APIWorker.tsx (1)
  • 1-1: The import of fleetSegmentApi from @features/FleetSegment/apis replaces a redundant local import. This change centralizes API calls and promotes code reuse. Ensure that the new import path is correctly referenced throughout the project.
frontend/src/features/Backoffice/edit_regulation/regulatory_text/RegulatoryText.tsx (5)
  • 1-11: The imports are well-organized, and the use of relative paths for local imports is consistent. Ensure that all necessary dependencies are imported.
  • 14-20: The component's prop types are documented using JSDoc comments, which is good practice. However, consider using TypeScript for stronger type safety and better developer experience.
  • 33-43: The set function defined with useCallback correctly lists its dependencies. Ensure that this pattern is consistently used for all callback hooks to avoid unnecessary re-renders.
  • 88-194: The component renders a form for editing regulatory texts. While the structure is clear, consider breaking down the component into smaller, reusable components to improve readability and maintainability.
  • 197-217: Styled components are defined at the bottom of the file. This is a common practice, but ensure that these components are not overly specific to this file if they have potential for reuse in other parts of the application.
backend/src/test/kotlin/fr/gouv/cnsp/monitorfish/infrastructure/database/repositories/JpaFleetSegmentRepositoryITests.kt (1)
  • 61-61: The addition of the segmentName parameter to the update method in the test reflects the changes in the repository's method signature. Ensure that all tests accurately test the functionality of the updated method.
frontend/src/features/SideWindow/MissionList/FilterBar.tsx (1)
  • 226-226: Exporting the OptionValue styled component allows for reuse in other parts of the application. This is a good practice for promoting consistency and reducing code duplication.
frontend/cypress/e2e/backoffice/fleet_segments.spec.ts (4)
  • 17-91: The test scenario "Should list and update fleet segments" has been updated to include detailed steps for updating a fleet segment, including filling out various fields and verifying the update through assertions. This comprehensive approach ensures that the update functionality is thoroughly tested. However, it's important to ensure that the test data used (e.g., segment names, impact notes) does not conflict with existing data in the test environment to avoid flaky tests.
  • 93-144: The test scenario "Should create a new fleet segment and delete it" effectively tests the creation and deletion functionalities. It's crucial to verify that the deletion step properly cleans up any data created during the test to maintain a clean state for subsequent tests. Additionally, consider adding assertions to confirm the absence of the deleted segment in the UI after deletion, enhancing the robustness of the test.
  • 148-156: The test "Should show previous year fleet segments" correctly verifies the functionality to view fleet segments from the previous year. Ensure that the test environment has predictable data for the previous year to make this test reliable. It might be beneficial to include setup steps that ensure the presence of known data for the previous year if the test environment allows for such manipulation.
  • 163-170: The test "Should add a new year based on current year" checks the functionality to add and view fleet segments for a new year. This test is important for verifying that the system can handle data across different years. It's recommended to verify that the newly added year does not already exist in the system before running this test to avoid potential conflicts or false positives.
frontend/src/features/Backoffice/tableCells.jsx (3)
  • 117-129: > 📝 NOTE

This review was outside the diff hunks and was mapped to the diff hunk with the greatest overlap. Original lines [120-142]

The ControlPriorityCell component has been updated to use SelectPicker instead of InputPicker. This change likely enhances the user experience by providing a more appropriate UI element for selecting control priorities. Ensure that the SelectPicker component is properly configured to match the expected data structure and behavior of the previous InputPicker.

  • 194-211: The TagsCell component has been refactored and now includes simplified logic and updated styling. This refactoring likely improves the maintainability and readability of the component. Verify that the new implementation correctly handles all expected input data formats and that the styling changes align with the overall design guidelines of the application.
  • 265-285: The EditAndDeleteCell component combines edit and delete functionalities into a single cell. This change likely streamlines the user interface and improves usability. Ensure that the component correctly handles both edit and delete actions, including any necessary confirmation dialogs for deletion and proper state management for editing.
frontend/src/features/FleetSegment/components/FleetSegmentsBackoffice/index.tsx (1)
  • 22-191: The FleetSegmentsBackoffice component has been updated to include new functionalities and UI enhancements. Ensure that all new hooks and state variables are used correctly throughout the component. Pay particular attention to the management of fleet segments data and the handling of year entries, as these are critical for the correct functionality of the component. Additionally, verify that the UI changes, such as the new modal for creating or editing fleet segments, integrate well with the existing design and user flow.
frontend/src/ui/LegacyRsuiteComponentsWrapper.tsx (1)
  • 428-433: > 📝 NOTE

This review was outside the diff hunks, and no overlapping diff hunk was found. Original lines [1-352]

The removal of styling rules related to .rs-checkbox in LegacyRsuiteComponentsWrapper component has been noted. While this change seems to be part of a cleanup or refactoring effort, it's important to verify the UI's appearance and functionality to ensure that this removal does not adversely affect the user experience.

frontend/cypress/e2e/backoffice/new_regulation.spec.ts (1)
  • 6-119: > 📝 NOTE

This review was outside the diff hunks and was mapped to the diff hunk with the greatest overlap. Original lines [10-217]

The updates to the Cypress tests in new_regulation.spec.ts reflect changes in the UI and functionality of the new regulation feature. While these changes seem appropriate, it's important to verify the accuracy and reliability of the updated tests by running them against the application. Ensure that they cover the intended scenarios and behave as expected.

frontend/src/features/ControlObjective/components/ControlObjectiveTable/SeaFrontControlObjectives.tsx (3)
  • 18-18: The update to import paths in SeaFrontControlObjectives.tsx reflects a reorganization of the module structure. Ensure that the updated paths correctly resolve to the intended modules.
  • 291-302: > 📝 NOTE

This review was outside the diff hunks and was mapped to the diff hunk with the greatest overlap. Original lines [251-299]

Adjustments to the width of certain Table.Column components have been made. Verify the UI's appearance, especially the table column widths, to ensure that they provide the intended user experience.

  • 351-352: Minor styling adjustments in the Wrapper component contribute to a more consistent and maintainable codebase. These changes seem appropriate.
frontend/cypress/e2e/backoffice/update_regulation.spec.ts (1)
  • 2-2: The introduction of customDayjs for date handling is a positive change, likely offering improved handling of time zones or formats in tests.
frontend/src/features/Backoffice/edit_regulation/EditRegulation.tsx (1)
  • 3-6: Reorganizing imports for better readability and maintainability is a good practice. It helps in keeping the code clean and easy to navigate.
frontend/src/features/Regulation/slice.ts (1)
  • 72-72: The change to simplify the type of regulatoryTopics to string[] enhances type safety and code clarity. Ensure that all usages of regulatoryTopics throughout the codebase have been updated to reflect this new type.
Verification successful

The analysis of the provided context confirms that the usage of regulatoryTopics throughout the codebase aligns with its new type definition as string[]. All instances where regulatoryTopics is used or manipulated are consistent with expecting an array of strings, indicating that the change has been correctly implemented across the codebase.

Scripts Executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Search for usages of regulatoryTopics to ensure they are correctly handled as string arrays.
rg --type ts "regulatoryTopics" --context 5

Length of output: 14501

frontend/src/features/VesselList/index.tsx (1)
  • 34-34: The update to the import path for useGetFleetSegmentsQuery reflects a change in the project's structure. Ensure the new path is correct and that the hook is still functioning as expected within the component.
Verification successful

The verification confirms the existence of the apis.ts file at the updated import path frontend/src/features/FleetSegment, supporting the correctness of the change. Ensure the useGetFleetSegmentsQuery hook functions as expected within the component.

Scripts Executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Verify the new import path for useGetFleetSegmentsQuery exists.
fd "apis.ts" "frontend/src/features/FleetSegment"

Length of output: 90

Comment on lines +15 to +16
const onCloseIconClicked = async () => {
await dispatch(updateProcessingRegulationByKey({ key: REGULATORY_REFERENCE_KEYS.ID, value: undefined }))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using async/await for the onCloseIconClicked function enhances readability and error handling. Ensure that error handling is implemented for the asynchronous dispatch call.

Consider wrapping the dispatch call in a try-catch block to handle potential errors gracefully.

Comment on lines +13 to +20
type CreateOrEditFleetSegmentModalProps = {
faoAreasList: any
onCancel: () => void
onCreate: (nextFleetSegment: UpdateFleetSegment) => void
onUpdate: (segment: string, year: number, nextFleetSegment: UpdateFleetSegment) => Promise<void>
updatedFleetSegment: FleetSegment | undefined
year: number
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The faoAreasList prop type is defined as any. For better type safety and code maintainability, it's recommended to replace any with a more specific type.

Comment on lines +46 to +58
useEffect(() => {
if (saveForm) {
const nameOrUrlIsMissing = checkNameAndUrl(reference, url)
const hasOneOrMoreValuesMissing = checkOtherRequiredValues(startDate, endDate, textType) || nameOrUrlIsMissing
const payload = {
complete: !hasOneOrMoreValuesMissing,
id
}
dispatch(addObjectToRegulatoryTextCheckedMap(payload))
}
// TODO Refactor to avoid using a useEffect for an action
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [saveForm, id, dispatch])
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The useEffect hook is used to dispatch an action when saveForm changes. Consider extracting side effects that are not directly related to rendering into custom hooks for better separation of concerns.

Comment on lines +1 to 8
import { createFleetSegmentFromAPI } from '@features/FleetSegment/apis'

import type { FleetSegment, UpdateFleetSegment } from '../../types/fleetSegment'
import { setError } from '../../../domain/shared_slices/Global'

import type { FleetSegment, UpdateFleetSegment } from '../types'

/**
* Create a fleet segment
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 NOTE
This review was outside the diff hunks, and no overlapping diff hunk was found. Original lines [36-36]

The addFleetSegments function correctly adds and sorts the fleet segments. However, consider using a more descriptive variable name than a and b in the sort comparator for better readability.

-  return previousFleetSegments.concat(updatedFleetSegment).sort((a, b) => a.segment.localeCompare(b.segment))
+  return previousFleetSegments.concat(updatedFleetSegment).sort((segmentA, segmentB) => segmentA.segment.localeCompare(segmentB.segment))

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review Status

Actionable comments generated: 0

Configuration used: CodeRabbit UI

Commits Files that changed from the base of the PR and between 5225d2b and 4dabede.
Files selected for processing (48)
  • backend/src/main/kotlin/fr/gouv/cnsp/monitorfish/infrastructure/database/repositories/JpaFleetSegmentRepository.kt (2 hunks)
  • backend/src/test/kotlin/fr/gouv/cnsp/monitorfish/infrastructure/database/repositories/JpaFleetSegmentRepositoryITests.kt (1 hunks)
  • frontend/cypress/e2e/backoffice/fleet_segments.spec.ts (1 hunks)
  • frontend/cypress/e2e/backoffice/new_regulation.spec.ts (6 hunks)
  • frontend/cypress/e2e/backoffice/update_regulation.spec.ts (5 hunks)
  • frontend/src/api/APIWorker.tsx (1 hunks)
  • frontend/src/domain/use_cases/vessel/getFleetSegments.ts (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/ConfirmRegulationModal.jsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/EditRegulation.tsx (6 hunks)
  • frontend/src/features/Backoffice/edit_regulation/fishing_period/DayTimeCheckbox.tsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/fishing_period/FishingPeriodForm.jsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/gear_regulation/RegulatedGears.jsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/identification/CreateRegulationTopicForm.tsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationGeometryLine.tsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationLawTypeLine.tsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationLayerZoneLine.tsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationRegionLine.tsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationTopicLine.tsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/index.jsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/regulatory_text/RegulatoryText.tsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/regulatory_text/RegulatoryTextSection.jsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/regulatory_text/utils.ts (1 hunks)
  • frontend/src/features/Backoffice/tableCells.jsx (7 hunks)
  • frontend/src/features/ControlObjective/components/ControlObjectiveTable/SeaFrontControlObjectives.tsx (5 hunks)
  • frontend/src/features/FleetSegment/apis.ts (1 hunks)
  • frontend/src/features/FleetSegment/components/FleetSegmentsBackoffice/CreateOrEditFleetSegmentModal.tsx (1 hunks)
  • frontend/src/features/FleetSegment/components/FleetSegmentsBackoffice/FleetSegmentsTable.tsx (1 hunks)
  • frontend/src/features/FleetSegment/components/FleetSegmentsBackoffice/index.tsx (1 hunks)
  • frontend/src/features/FleetSegment/components/FleetSegmentsBackoffice/schema.ts (1 hunks)
  • frontend/src/features/FleetSegment/types.ts (1 hunks)
  • frontend/src/features/FleetSegment/useCases/addFleetSegmentYear.ts (1 hunks)
  • frontend/src/features/FleetSegment/useCases/createFleetSegment.ts (1 hunks)
  • frontend/src/features/FleetSegment/useCases/deleteFleetSegment.ts (1 hunks)
  • frontend/src/features/FleetSegment/useCases/getFleetSegmentsYearEntries.ts (1 hunks)
  • frontend/src/features/FleetSegment/useCases/updateFleetSegment.ts (1 hunks)
  • frontend/src/features/Logbook/components/VesselLogbook/LogbookSummary/FleetSegments.tsx (1 hunks)
  • frontend/src/features/Logbook/components/VesselLogbook/LogbookSummary/utils.ts (1 hunks)
  • frontend/src/features/Mission/components/MissionForm/ActionForm/shared/FleetSegmentsField.tsx (1 hunks)
  • frontend/src/features/Mission/components/MissionForm/ActionForm/shared/VesselFleetSegmentsField.tsx (1 hunks)
  • frontend/src/features/Mission/components/MissionForm/ActionForm/shared/utils.ts (1 hunks)
  • frontend/src/features/Mission/components/MissionForm/hooks/useGetMissionActionFormikUsecases.ts (1 hunks)
  • frontend/src/features/Regulation/slice.ts (1 hunks)
  • frontend/src/features/SideWindow/MissionList/FilterBar.tsx (1 hunks)
  • frontend/src/features/VesselList/index.tsx (3 hunks)
  • frontend/src/features/commonStyles/Backoffice.style.tsx (9 hunks)
  • frontend/src/features/commonStyles/Buttons.style.jsx (1 hunks)
  • frontend/src/router.tsx (2 hunks)
  • frontend/src/ui/LegacyRsuiteComponentsWrapper.tsx (3 hunks)
Files skipped from review as they are similar to previous changes (45)
  • backend/src/main/kotlin/fr/gouv/cnsp/monitorfish/infrastructure/database/repositories/JpaFleetSegmentRepository.kt
  • backend/src/test/kotlin/fr/gouv/cnsp/monitorfish/infrastructure/database/repositories/JpaFleetSegmentRepositoryITests.kt
  • frontend/cypress/e2e/backoffice/update_regulation.spec.ts
  • frontend/src/api/APIWorker.tsx
  • frontend/src/domain/use_cases/vessel/getFleetSegments.ts
  • frontend/src/features/Backoffice/edit_regulation/ConfirmRegulationModal.jsx
  • frontend/src/features/Backoffice/edit_regulation/EditRegulation.tsx
  • frontend/src/features/Backoffice/edit_regulation/fishing_period/DayTimeCheckbox.tsx
  • frontend/src/features/Backoffice/edit_regulation/fishing_period/FishingPeriodForm.jsx
  • frontend/src/features/Backoffice/edit_regulation/gear_regulation/RegulatedGears.jsx
  • frontend/src/features/Backoffice/edit_regulation/identification/CreateRegulationTopicForm.tsx
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationGeometryLine.tsx
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationLawTypeLine.tsx
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationLayerZoneLine.tsx
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationRegionLine.tsx
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationTopicLine.tsx
  • frontend/src/features/Backoffice/edit_regulation/index.jsx
  • frontend/src/features/Backoffice/edit_regulation/regulatory_text/RegulatoryText.tsx
  • frontend/src/features/Backoffice/edit_regulation/regulatory_text/RegulatoryTextSection.jsx
  • frontend/src/features/Backoffice/edit_regulation/regulatory_text/utils.ts
  • frontend/src/features/Backoffice/tableCells.jsx
  • frontend/src/features/ControlObjective/components/ControlObjectiveTable/SeaFrontControlObjectives.tsx
  • frontend/src/features/FleetSegment/apis.ts
  • frontend/src/features/FleetSegment/components/FleetSegmentsBackoffice/CreateOrEditFleetSegmentModal.tsx
  • frontend/src/features/FleetSegment/components/FleetSegmentsBackoffice/FleetSegmentsTable.tsx
  • frontend/src/features/FleetSegment/components/FleetSegmentsBackoffice/index.tsx
  • frontend/src/features/FleetSegment/components/FleetSegmentsBackoffice/schema.ts
  • frontend/src/features/FleetSegment/types.ts
  • frontend/src/features/FleetSegment/useCases/addFleetSegmentYear.ts
  • frontend/src/features/FleetSegment/useCases/createFleetSegment.ts
  • frontend/src/features/FleetSegment/useCases/deleteFleetSegment.ts
  • frontend/src/features/FleetSegment/useCases/getFleetSegmentsYearEntries.ts
  • frontend/src/features/FleetSegment/useCases/updateFleetSegment.ts
  • frontend/src/features/Logbook/components/VesselLogbook/LogbookSummary/FleetSegments.tsx
  • frontend/src/features/Logbook/components/VesselLogbook/LogbookSummary/utils.ts
  • frontend/src/features/Mission/components/MissionForm/ActionForm/shared/VesselFleetSegmentsField.tsx
  • frontend/src/features/Mission/components/MissionForm/ActionForm/shared/utils.ts
  • frontend/src/features/Mission/components/MissionForm/hooks/useGetMissionActionFormikUsecases.ts
  • frontend/src/features/Regulation/slice.ts
  • frontend/src/features/SideWindow/MissionList/FilterBar.tsx
  • frontend/src/features/VesselList/index.tsx
  • frontend/src/features/commonStyles/Backoffice.style.tsx
  • frontend/src/features/commonStyles/Buttons.style.jsx
  • frontend/src/router.tsx
  • frontend/src/ui/LegacyRsuiteComponentsWrapper.tsx
Additional comments: 11
frontend/src/features/Mission/components/MissionForm/ActionForm/shared/FleetSegmentsField.tsx (1)
  • 1-1: The import path for useGetFleetSegmentsQuery has been updated to align with the new module structure. This change is crucial for maintaining consistency across the project and ensuring that the component has access to the latest API functionalities.
frontend/cypress/e2e/backoffice/fleet_segments.spec.ts (2)
  • 17-91: The test scenario "Should list and update fleet segments" has been updated to reflect the changes in the UI and functionality. The assertions and interactions with the UI elements, such as clicking and filling forms, are correctly updated to match the new flow. It's important to ensure that these changes are aligned with the intended behavior of the application.
  • 93-144: The test scenario "Should create a new fleet segment and delete it" accurately reflects the addition of creating and deleting fleet segments. The steps for creating a new segment, including filling out the form and verifying the creation, followed by deletion and verification, are correctly implemented. This test ensures the functionality works as expected.
frontend/cypress/e2e/backoffice/new_regulation.spec.ts (8)
  • 10-24: The test scenario for selecting, changing, and removing law types has been updated to reflect the UI changes. The steps for interacting with the dropdown, selecting different law types, and verifying the UI response are correctly implemented. This ensures the dropdown functionality works as expected.
  • 29-45: The test for updating the layer name list based on the selected law type accurately reflects the changes in the UI. The steps for selecting different law types and verifying the corresponding changes in the layer name list are correctly implemented, ensuring the dynamic behavior of the UI is tested.
  • 48-59: The test for enabling or disabling the region list based on the selected law type is correctly updated. The interactions with the UI elements and the assertions to verify the enabled/disabled state of the region list are accurately implemented, testing the conditional behavior of the UI.
  • 64-76: The test for selecting and removing regions accurately reflects the changes in the UI. The steps for selecting multiple regions, verifying the tags, and removing a selected region are correctly implemented, ensuring the multi-select and tag removal functionalities work as expected.
  • 80-91: The test for entering a regulation text name with a valid URL and verifying the modal interactions for saving and canceling changes is well-implemented. The form input handling, button interactions, and modal behavior are correctly tested, ensuring the form functionality and modal interactions work as intended.
  • 95-115: The modal behavior on the go-back button click is accurately tested. The steps for filling out the form, triggering the modal, and verifying the modal's behavior on different actions are correctly implemented, ensuring the modal functionality works as expected in the context of unsaved changes.
  • 148-154: > 📝 NOTE

This review was outside the diff hunks and was mapped to the diff hunk with the greatest overlap. Original lines [151-166]

The tests for checking all towed and passive gears and displaying the corresponding gear categories are correctly updated. The interactions with the UI elements and the assertions to verify the list of gear categories are accurately implemented, testing the checkbox and list behavior.

  • 176-190: > 📝 NOTE

This review was outside the diff hunks and was mapped to the diff hunk with the greatest overlap. Original lines [179-217]

The test for modification of inputs being kept in local storage when refreshing the page is well-implemented. The steps for filling out the form, saving the changes, refreshing the page, and verifying that the inputs are retained accurately test the local storage functionality.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review Status

Actionable comments generated: 1

Configuration used: CodeRabbit UI

Commits Files that changed from the base of the PR and between 4dabede and ebc14e5.
Files selected for processing (15)
  • frontend/src/features/Backoffice/edit_regulation/ConfirmRegulationModal.jsx (2 hunks)
  • frontend/src/features/Backoffice/edit_regulation/fishing_period/DayTimeCheckbox.tsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationGeometryLine.tsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationLawTypeLine.tsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationLayerZoneLine.tsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationRegionLine.tsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationTopicLine.tsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/regulatory_text/utils.ts (1 hunks)
  • frontend/src/features/Backoffice/list_regulation/SearchRegulations.tsx (1 hunks)
  • frontend/src/features/Backoffice/slice.ts (2 hunks)
  • frontend/src/features/Logbook/components/VesselLogbook/LogbookSummary/utils.ts (3 hunks)
  • frontend/src/features/Regulation/types.ts (2 hunks)
  • frontend/src/features/Regulation/utils.ts (4 hunks)
  • frontend/src/features/commonStyles/Backoffice.style.tsx (7 hunks)
  • frontend/src/features/commonStyles/FishingPeriod.style.tsx (1 hunks)
Check Runs (1)
Run frontend unit tests completed (16)
  • frontend/src/features/Backoffice/slice.ts: 5-5: There should be at least one empty line between import groups
  • frontend/src/features/Backoffice/slice.ts: 6-6: There should be at least one empty line between import groups
  • frontend/src/features/Backoffice/slice.ts: 6-6: '/home/runner/work/monitorfish/monitorfish/frontend/src/features/Regulation/types.ts' imported multiple times
  • frontend/src/features/Backoffice/slice.ts: 7-7: ../Regulation/utils import should occur before type import of ../Regulation/types
  • frontend/src/features/Backoffice/slice.ts: 9-9: '/home/runner/work/monitorfish/monitorfish/frontend/src/features/Regulation/types.ts' imported multiple times
Files skipped from review as they are similar to previous changes (10)
  • frontend/src/features/Backoffice/edit_regulation/ConfirmRegulationModal.jsx
  • frontend/src/features/Backoffice/edit_regulation/fishing_period/DayTimeCheckbox.tsx
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationGeometryLine.tsx
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationLawTypeLine.tsx
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationLayerZoneLine.tsx
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationRegionLine.tsx
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationTopicLine.tsx
  • frontend/src/features/Backoffice/edit_regulation/regulatory_text/utils.ts
  • frontend/src/features/Logbook/components/VesselLogbook/LogbookSummary/utils.ts
  • frontend/src/features/commonStyles/Backoffice.style.tsx

Comment on lines 5 to 7
import { STATUS } from './constants'
import type { EditedRegulatoryZone } from '../Regulation/types'
import { DEFAULT_REGULATION, REGULATORY_REFERENCE_KEYS } from '../Regulation/utils'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider reordering imports to group external and internal imports separately for better readability.

import { createSlice } from '@reduxjs/toolkit'
+ import type { EditedRegulatoryZone } from '../Regulation/types'
import { STATUS } from './constants'
- import type { EditedRegulatoryZone } from '../Regulation/types'
import { DEFAULT_REGULATION, REGULATORY_REFERENCE_KEYS } from '../Regulation/utils'

Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.

Suggested change
import { STATUS } from './constants'
import type { EditedRegulatoryZone } from '../Regulation/types'
import { DEFAULT_REGULATION, REGULATORY_REFERENCE_KEYS } from '../Regulation/utils'
import { createSlice } from '@reduxjs/toolkit'
import { STATUS } from './constants'
import type { EditedRegulatoryZone } from '../Regulation/types'
import { DEFAULT_REGULATION, REGULATORY_REFERENCE_KEYS } from '../Regulation/utils'

import styled from 'styled-components'

export function CreateRegulationTopicForm({ onCancelEdit, updateTopic }) {
const [topicPlace, setTopicPlace] = useState<string | undefined>('')
Copy link
Collaborator

@claire2212 claire2212 Mar 14, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

il ne faudrait pas plutôt mettre undefined en valeur initiale? et idem dans la fonction resetThemeForm() . J'ai peur que sinon tu ais un affichage bizarre dans regulationTopic ligne 23

Et si tu laisse un string vide pas besoin du type undefined je pense

(Valable pour tous les states)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tout ce code est du code legacy du ficheir js, j'ai essayé de ne pas trop toucher le code métier et de surtout remplacer les composants rsuite, mais en effet je peux regarder pour améliorer cette gestion

<Button accent={Accent.SECONDARY} onClick={addNewTopic}>
Enregistrer
</Button>
<Button accent={Accent.TERTIARY} onClick={onCancelEdit}>
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

comme tu mets addNewTopic j'aurais mis cancelEdit mais pas obligé

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

J'ai mis un onXXX car c'est une prop et je crois qu'on a comme convention d'appeler les props comme ça ?

Copy link
Collaborator

@claire2212 claire2212 Mar 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dans ce cas il fait mettre onAddNewTopic . Ma remarque était surtout d'avoir une cohérence entre les deux fonctions appelées par le onClick (lignes 69 et 72)

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review Status

Actionable comments generated: 0

Configuration used: CodeRabbit UI

Commits Files that changed from the base of the PR and between ebc14e5 and 1ed0ae5.
Files selected for processing (4)
  • frontend/cypress/e2e/backoffice/new_regulation.spec.ts (6 hunks)
  • frontend/cypress/e2e/backoffice/update_regulation.spec.ts (6 hunks)
  • frontend/src/features/Backoffice/edit_regulation/EditRegulation.tsx (8 hunks)
  • frontend/src/features/Backoffice/slice.ts (1 hunks)
Files skipped from review as they are similar to previous changes (3)
  • frontend/cypress/e2e/backoffice/update_regulation.spec.ts
  • frontend/src/features/Backoffice/edit_regulation/EditRegulation.tsx
  • frontend/src/features/Backoffice/slice.ts
Additional comments: 9
frontend/cypress/e2e/backoffice/new_regulation.spec.ts (9)
  • 10-11: The test for the law type list containing 18 elements has been removed. This change aligns with the PR objectives to refactor the selection, change, and removal of law types. However, it's important to ensure that the removal of this assertion does not reduce the coverage or effectiveness of the tests.

Ensure that the updated tests adequately cover the scenarios previously validated by the removed assertion.

  • 15-24: Refactoring the selection, change, and removal of law types is demonstrated through interactions with UI components. The use of custom commands like cy.fill for filling inputs simplifies the test code and improves readability. However, ensure that these custom commands handle edge cases and errors gracefully.

Consider adding error handling and logging within custom Cypress commands to improve debuggability.

  • 29-45: The logic for changing law types and updating layer names, including handling an empty list for UE law types, is well tested. This ensures that the UI behaves as expected when different law types are selected. It's crucial to maintain these tests up-to-date as the application evolves.

Good coverage of law type selection and its impact on other UI elements.

  • 48-59: The test for enabling/disabling the region list based on law type selection is crucial for ensuring the correct UI behavior. This test effectively validates the dynamic nature of the form based on user input.

Well-implemented test for dynamic form behavior based on law type selection.

  • 64-76: Enhancing the interaction with tags for regions and law types is demonstrated through the addition and removal of tags in the UI. This test case effectively validates the UI's responsiveness to user actions.

Effective testing of tag addition and removal in the UI.

  • 80-91: Improved form input handling and button interactions are tested here, including the behavior of saving and clearing form inputs. This ensures that the form behaves as expected when users enter data and interact with buttons.

Comprehensive testing of form input handling and button interactions.

  • 95-115: Streamlined modal interactions for saving and canceling changes are well tested. This includes handling the modal's visibility and the actions within it, ensuring that the modal behaves as expected in various scenarios.

Thorough testing of modal interactions related to saving and canceling changes.

  • 151-151: The tests for checking all towed and passive gears display a list of gear categories effectively validate the UI's behavior in response to user selections. These tests are crucial for ensuring that the application correctly displays relevant information based on user input.

Effective validation of UI behavior for towed and passive gear selections.

Also applies to: 166-166

  • 176-190: > 📝 NOTE

This review was outside the diff hunks and was mapped to the diff hunk with the greatest overlap. Original lines [179-217]

Enhanced behavior for keeping modifications in local storage is tested here. This test ensures that user inputs and selections are retained across page refreshes, which is crucial for a good user experience.

Comprehensive testing of local storage behavior to ensure user inputs are retained across page refreshes.

Copy link

sonarcloud bot commented Mar 18, 2024

Quality Gate Passed Quality Gate passed

Issues
15 New issues
0 Accepted issues

Measures
0 Security Hotspots
No data about Coverage
0.0% Duplication on New Code

See analysis details on SonarCloud

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review Status

Actionable comments generated: 3

Configuration used: CodeRabbit UI

Commits Files that changed from the base of the PR and between 1ed0ae5 and 5a5e7d8.
Files ignored due to path filters (2)
  • frontend/package-lock.json is excluded by: !**/*.json
  • frontend/package.json is excluded by: !**/*.json
Files selected for processing (17)
  • frontend/cypress/e2e/backoffice/new_regulation.spec.ts (6 hunks)
  • frontend/cypress/e2e/side_window/mission_form/air_control.spec.ts (1 hunks)
  • frontend/cypress/e2e/side_window/mission_form/air_surveillance.spec.ts (1 hunks)
  • frontend/cypress/e2e/side_window/mission_form/land_control.spec.ts (1 hunks)
  • frontend/cypress/e2e/side_window/mission_form/main_form.spec.ts (2 hunks)
  • frontend/cypress/e2e/side_window/mission_form/observation.spec.ts (1 hunks)
  • frontend/cypress/e2e/side_window/mission_form/sea_control.spec.ts (1 hunks)
  • frontend/cypress/e2e/side_window/mission_list/filter_bar.spec.ts (1 hunks)
  • frontend/cypress/support/e2e.ts (2 hunks)
  • frontend/src/features/Backoffice/edit_regulation/EditRegulation.tsx (9 hunks)
  • frontend/src/features/Backoffice/edit_regulation/identification/CreateRegulationTopicForm.tsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationGeometryLine.tsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationLawTypeLine.tsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationLayerZoneLine.tsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationRegionLine.tsx (1 hunks)
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationTopicLine.tsx (1 hunks)
  • frontend/src/features/FleetSegment/useCases/updateFleetSegment.ts (2 hunks)
Files skipped from review as they are similar to previous changes (8)
  • frontend/src/features/Backoffice/edit_regulation/EditRegulation.tsx
  • frontend/src/features/Backoffice/edit_regulation/identification/CreateRegulationTopicForm.tsx
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationGeometryLine.tsx
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationLawTypeLine.tsx
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationLayerZoneLine.tsx
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationRegionLine.tsx
  • frontend/src/features/Backoffice/edit_regulation/identification/RegulationTopicLine.tsx
  • frontend/src/features/FleetSegment/useCases/updateFleetSegment.ts
Additional comments: 18
frontend/cypress/e2e/side_window/mission_list/filter_bar.spec.ts (1)
  • 46-47: Splitting cy.fill and cy.wait into separate commands improves readability and explicitness of test steps. Ensure the cy.wait(500) is necessary and not introducing potential flakiness.
frontend/cypress/e2e/side_window/mission_form/observation.spec.ts (1)
  • 107-108: Splitting cy.fill and cy.wait into separate commands improves readability. Ensure the cy.wait(500) is necessary and not introducing potential flakiness.
frontend/cypress/support/e2e.ts (1)
  • 4-4: Adding a reference path to TypeScript declarations enhances type safety and autocompletion for Cypress tests. Ensure that the removed methods are not used elsewhere in the test suite.
frontend/cypress/e2e/side_window/mission_form/air_control.spec.ts (1)
  • 135-140: Removing or adjusting wait times can improve test speed and reduce potential flakiness. Ensure the tests remain stable and reliable without these specific waits.
frontend/cypress/e2e/side_window/mission_form/air_surveillance.spec.ts (1)
  • 155-156: Separating cy.fill and cy.wait into separate commands can improve readability. Ensure the cy.wait(500) is necessary and not introducing potential flakiness.
frontend/cypress/e2e/backoffice/new_regulation.spec.ts (9)
  • 10-24: Refactoring form interactions improves test clarity and logic. Ensure that changes do not introduce flakiness or instability in the tests.
  • 29-45: Updating logic for changing law types and updating layer names enhances test accuracy. Verify that the updated interactions correctly reflect the application's behavior.
  • 48-59: Adjusting region list enabling/disabling based on law type selection improves test relevance. Ensure that these interactions are stable and accurately test the application's functionality.
  • 64-76: Enhancing interaction with tags for regions and law types improves test clarity. Verify that tag manipulation behaves as expected in the application.
  • 80-93: Streamlining modal interactions for saving and canceling changes enhances test flow. Ensure that modal behavior is correctly tested and reflects the application's functionality.
  • 97-117: Improving behavior for keeping modifications in local storage ensures test accuracy. Verify that local storage behavior is correctly simulated and tested.
  • 153-153: Streamlining gear selection interactions enhances test clarity. Ensure that gear selection behavior is accurately tested.
  • 168-168: Improving passive gear selection interactions enhances test clarity. Ensure that passive gear selection behavior is accurately tested.
  • 178-194: > 📝 NOTE

This review was outside the diff hunks and was mapped to the diff hunk with the greatest overlap. Original lines [181-221]

Enhancing local storage behavior testing ensures modifications are retained accurately. Verify that the test correctly simulates and validates local storage behavior.

frontend/cypress/e2e/side_window/mission_form/main_form.spec.ts (3)
  • 197-204: > 📝 NOTE

This review was outside the diff hunks and was mapped to the diff hunk with the greatest overlap. Original lines [200-215]

The use of cy.wait(250) and cy.wait(500) to manage timing issues in Cypress tests is generally discouraged as it introduces potential flakiness and increases test execution time. Instead, consider using more reliable synchronization methods such as cy.intercept() to wait for specific network requests to complete or cy.get() with timeouts for UI elements to appear.

Consider replacing direct waits with more deterministic wait mechanisms, such as waiting for specific API calls to complete or UI elements to become visible.

  • 197-204: > 📝 NOTE

This review was outside the diff hunks, and no overlapping diff hunk was found. Original lines [1-1]

It's good practice to include a brief comment at the top of the test file explaining the purpose of the tests and any specific setup or assumptions made. This aids in maintainability and understanding for new contributors or when revisiting the tests after some time.

Consider adding a file-level comment describing the scope and purpose of these Cypress tests.

  • 197-204: > 📝 NOTE

This review was outside the diff hunks, and no overlapping diff hunk was found. Original lines [1-1]

The tests cover a wide range of functionalities related to mission form interactions. For larger test suites, consider organizing tests into separate files based on the functionality they're testing (e.g., mission creation, mission editing, mission deletion) to improve readability and maintainability.

Evaluate the test suite's organization and consider splitting it into multiple files if it becomes too large or covers distinctly different functionalities.

frontend/cypress/e2e/side_window/mission_form/sea_control.spec.ts (1)
  • 392-393: The separation of cy.fill and cy.wait commands into distinct lines improves readability and makes the test flow easier to understand. However, it's important to ensure that the removal of the wait duration from the cy.fill command does not adversely affect the stability of the tests. Consider verifying if the tests remain stable and reliable without these explicit waits, as excessive waiting can slow down test execution without adding value.

Comment on lines +234 to +235
cy.fill('Saisi par', 'Gaumont')
cy.wait(500)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The separation of the cy.fill and cy.wait commands for the "Saisi par" field is a good practice to ensure that the wait time occurs after filling the input, which can help avoid flakiness in tests due to timing issues. However, using a fixed cy.wait(500) might not be the most reliable way to handle waiting for actions to complete in Cypress tests. Consider using cy.wait('@alias') for waiting on specific network requests to complete or cy.get() with a timeout for waiting on specific elements to be visible or actionable, which can make the tests more robust and less prone to timing issues.

- cy.wait(500)
+ // Consider replacing fixed waits with more deterministic wait conditions
+ // Example: cy.wait('@aliasForSomeNetworkRequest')
+ // or cy.get('selectorForNextActionableElement', { timeout: 10000 }).should('be.visible')

Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.

Suggested change
cy.fill('Saisi par', 'Gaumont')
cy.wait(500)
cy.fill('Saisi par', 'Gaumont')
// Consider replacing fixed waits with more deterministic wait conditions
// Example: cy.wait('@aliasForSomeNetworkRequest')
// or cy.get('selectorForNextActionableElement', { timeout: 10000 }).should('be.visible')

Comment on lines 197 to 204
cy.fill('Administration 1', 'DDTM')
cy.fill('Unité 1', 'Cultures marines 56')
cy.wait(500)
cy.fill('Moyen 1', ['Brezel - FAH 7185']).wait(250)
cy.fill('Moyen 1', ['Brezel - FAH 7185'])
cy.wait(250)
cy.fill('Contact de l’unité 1', 'Bob')
cy.fill('Contact de l’unité 1', 'Bob')

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 NOTE
This review was outside the diff hunks, and no overlapping diff hunk was found. Original lines [1-1]

Ensure that all cy.intercept() calls are as specific as possible to avoid unintentionally catching unrelated requests. This is particularly important in tests where multiple network requests are made, and you need to assert or wait on specific ones.

Review and refine cy.intercept() usage to target specific requests more accurately, reducing the risk of flaky tests.


📝 NOTE
This review was outside the diff hunks, and no overlapping diff hunk was found. Original lines [1-1]

Consider adding tests or assertions that specifically handle error scenarios, such as network failures, API errors, or invalid user inputs. This ensures that the application behaves gracefully under such conditions and improves test coverage.

Add tests or assertions for error handling scenarios to ensure comprehensive coverage and robustness of the application.

@claire2212 claire2212 self-requested a review March 18, 2024 13:24
@louptheron louptheron merged commit 3cba0b2 into master Mar 18, 2024
25 checks passed
@louptheron louptheron deleted the loup/fix-backoffice-form-components branch March 18, 2024 13:42
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.

2 participants