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

Extended client plugins system, refactored job finishing #8102

Merged
merged 15 commits into from
Jul 8, 2024

Conversation

bsekachev
Copy link
Member

@bsekachev bsekachev commented Jul 1, 2024

Motivation and context

How has this been tested?

Checklist

  • I submit my changes into the develop branch
  • I have created a changelog fragment
  • I have updated the documentation accordingly
  • I have added tests to cover my changes
  • I have linked related issues (see GitHub docs)
  • I have increased versions of npm packages if it is necessary
    (cvat-canvas,
    cvat-core,
    cvat-data and
    cvat-ui)

License

  • I submit my code changes under the same MIT License that covers the project.
    Feel free to contact the maintainers if that's a concern.

Summary by CodeRabbit

  • New Features

    • Added functionality to update a job state from the corresponding task page.
    • Introduced actions to add and remove UI callbacks, enhancing plugin capabilities.
  • Improvements

    • Simplified job state management in the annotation view and menu.
    • Enhanced handling of job completion to ensure state consistency.
  • UI/UX Enhancements

    • Revised job item interface to include state management and improved layout.
    • Updated styling for job items, including new icons and select elements.
  • Refactor

    • Streamlined action and reducer logic for improved performance and maintainability.
  • Chores

    • Miscellaneous code cleanup and deprecation of outdated methods.
  • Bug Fixes

    • Fixed issues with asynchronous annotation saving and job state updates.

@bsekachev bsekachev requested a review from mdacoca as a code owner July 1, 2024 10:13
@bsekachev bsekachev requested a review from nmanovic as a code owner July 1, 2024 10:15
Copy link
Contributor

coderabbitai bot commented Jul 1, 2024

Important

Review skipped

Auto incremental reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Walkthrough

This update introduces several notable changes to the cvat-ui application. These include removing redundant buttons, enhancing job state management, adding new UI callback actions in plugins, and various improvements in annotations handling and job item components. Additionally, there's an emphasis on refining state and type structures across multiple files for better organization.

Changes

Files Change Summaries
changelog.d/... Added summaries for removing "Renew the job" button, updating "Finish the job" button behavior, and allowing state updates from task pages.
cvat-ui/src/actions/annotation-actions.ts Removed JobStage, modified saveAnnotationsAsync and finishCurrentJobAsync to set job state to COMPLETED.
cvat-ui/src/actions/plugins-actions.ts Added ADD_UI_CALLBACK and REMOVE_UI_CALLBACK actions for enhanced plugin capabilities.
cvat-ui/src/components/annotation-page/... Updated logic for saving annotations and managing job states in components like annotations-actions-modal.tsx and annotation-menu.tsx.
cvat-ui/src/components/job-item/... Renamed JobStage to JobState, added a select element for managing job states, and updated the layout.
cvat-ui/src/components/plugins-entrypoint.tsx Expanded PluginActionCreators, added store parameter, deprecated certain actions, and updated usage of actions.
cvat-ui/src/reducers/... Added callbacks section, refined PluginsState typing, and introduced actions for adding/removing UI callbacks.

Sequence Diagram(s)

```mermaid
sequenceDiagram
    participant User
    participant AnnotationView
    participant AnnotationActions
    participant Backend

    User->>AnnotationView: Click "Finish the job"
    AnnotationView->>AnnotationActions: Dispatch finishCurrentJobAsync()
    AnnotationActions->>Backend: Set job state to 'COMPLETED'
    Backend-->>AnnotationActions: Confirm state update
    AnnotationActions-->>AnnotationView: Job state updated
    AnnotationView-->>User: Display updated job state

    User->>JobItem: Update job state from task page
    JobItem->>Backend: Update job state
    Backend-->>JobItem: Confirm state update
    JobItem-->>User: Display updated job state

Poem

In code, the changes rise anew,
Buttons gone, features grew.
Jobs now end with just one tap,
While plugins dance, a seamless wrap.
Annotations save with flair so bright,
CVAT moves into the light.
🐇✨


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 testing code 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 testing code 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 testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

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 an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @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.
  • Please see the configuration documentation for more information.
  • 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/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

coderabbitai bot commented Jul 1, 2024

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

Commits

Files that changed from the base of the PR and between 4ccc29d and 0056bba.

Files selected for processing (15)
  • changelog.d/20240701_131217_boris_immediate_feedback.md (1 hunks)
  • changelog.d/20240701_131317_boris_immediate_feedback.md (1 hunks)
  • changelog.d/20240701_131408_boris_immediate_feedback.md (1 hunks)
  • cvat-ui/src/actions/annotation-actions.ts (5 hunks)
  • cvat-ui/src/actions/plugins-actions.ts (3 hunks)
  • cvat-ui/src/components/annotation-page/annotations-actions/annotations-actions-modal.tsx (1 hunks)
  • cvat-ui/src/components/annotation-page/single-shape-workspace/single-shape-sidebar/single-shape-sidebar.tsx (7 hunks)
  • cvat-ui/src/components/annotation-page/top-bar/annotation-menu.tsx (4 hunks)
  • cvat-ui/src/components/job-item/job-actions-menu.tsx (4 hunks)
  • cvat-ui/src/components/job-item/job-item.tsx (6 hunks)
  • cvat-ui/src/components/job-item/styles.scss (2 hunks)
  • cvat-ui/src/components/plugins-entrypoint.tsx (4 hunks)
  • cvat-ui/src/reducers/index.ts (2 hunks)
  • cvat-ui/src/reducers/plugins-reducer.ts (6 hunks)
  • site/content/en/docs/manual/basics/CVAT-annotation-Interface/navbar.md (1 hunks)
 ______________________________________________________
< Nothing is more permanent than a temporary solution. >
 ------------------------------------------------------
  \
   \   (\__/)
       (•ㅅ•)
       /   づ

Tip

Early access features: enabled

We are currently testing the following features in early access:

  • OpenAI gpt-4o model for code reviews and chat: OpenAI claims that this model is better at understanding and generating code than the previous models. We seek your feedback over the next few weeks before making it generally available.

Note:

  • You can enable or disable early access features from the CodeRabbit UI or by updating the CodeRabbit configuration file.
  • Please join our Discord Community to provide feedback and report issues.
  • OSS projects are currently opted into early access features by default.

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 testing code 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 testing code 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 testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

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 an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @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.
  • Please see the configuration documentation for more information.
  • 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/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

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.

Actionable comments posted: 2

Outside diff range and nitpick comments (2)
site/content/en/docs/manual/basics/CVAT-annotation-Interface/navbar.md (1)

Line range hint 83-83: Fix broken Markdown link.

The Markdown link to the "Manual QA" documentation is missing a closing quote, causing it to render incorrectly.

- see [**Manual QA**](/docs/manual/advanced/analytics-and-monitoring/manual-qa")
+ see [**Manual QA**](/docs/manual/advanced/analytics-and-monitoring/manual-qa")
Tools
LanguageTool

[style] ~35-~35: Consider an alternative to strengthen your wording.
Context: ...en finished, reviewed, and approved. No further changes are necessary.

    | | **Finish the jo...

    (CHANGES_ADJUSTMENTS)

cvat-ui/src/actions/annotation-actions.ts (1)

Line range hint 1044-1082: Ensure robust error handling in saveAnnotationsAsync.

The refactoring of saveAnnotationsAsync to handle saving annotations and updating job state needs careful error handling to avoid data loss and ensure user feedback on failures.

-            throw error;
+            console.error('Failed to save annotations:', error);
+            throw new Error('Failed to save annotations. Please check the console for more details.');
Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 4ccc29d and 0056bba.

Files selected for processing (15)
  • changelog.d/20240701_131217_boris_immediate_feedback.md (1 hunks)
  • changelog.d/20240701_131317_boris_immediate_feedback.md (1 hunks)
  • changelog.d/20240701_131408_boris_immediate_feedback.md (1 hunks)
  • cvat-ui/src/actions/annotation-actions.ts (5 hunks)
  • cvat-ui/src/actions/plugins-actions.ts (3 hunks)
  • cvat-ui/src/components/annotation-page/annotations-actions/annotations-actions-modal.tsx (1 hunks)
  • cvat-ui/src/components/annotation-page/single-shape-workspace/single-shape-sidebar/single-shape-sidebar.tsx (7 hunks)
  • cvat-ui/src/components/annotation-page/top-bar/annotation-menu.tsx (4 hunks)
  • cvat-ui/src/components/job-item/job-actions-menu.tsx (4 hunks)
  • cvat-ui/src/components/job-item/job-item.tsx (6 hunks)
  • cvat-ui/src/components/job-item/styles.scss (2 hunks)
  • cvat-ui/src/components/plugins-entrypoint.tsx (4 hunks)
  • cvat-ui/src/reducers/index.ts (2 hunks)
  • cvat-ui/src/reducers/plugins-reducer.ts (6 hunks)
  • site/content/en/docs/manual/basics/CVAT-annotation-Interface/navbar.md (1 hunks)
Files not summarized due to errors (2)
  • cvat-ui/src/components/job-item/job-item.tsx: Error: Server error. Please try again later.
  • cvat-ui/src/components/job-item/styles.scss: Error: Server error. Please try again later.
Files skipped from review due to trivial changes (1)
  • changelog.d/20240701_131317_boris_immediate_feedback.md
Additional context used
LanguageTool
changelog.d/20240701_131217_boris_immediate_feedback.md

[uncategorized] ~3-~3: You might be missing the article “the” here.
Context: ### Removed - Renew the job button in annotation menu was removed (<https://github.com/...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

site/content/en/docs/manual/basics/CVAT-annotation-Interface/navbar.md

[style] ~35-~35: Consider an alternative to strengthen your wording.
Context: ...en finished, reviewed, and approved. No further changes are necessary.

    | | **Finish the jo...

    (CHANGES_ADJUSTMENTS)


    [uncategorized] ~69-~69: A punctuation mark might be missing here.
    Context: ...*/Go next buttons are customizable:



    To customize...

    (AI_EN_LECTOR_MISSING_PUNCTUATION)


    [uncategorized] ~72-~72: You might be missing the article “the” here.
    Context: ...      | Click to delete current frame.                                 ...

    (AI_EN_LECTOR_MISSING_DETERMINER_THE)


    [uncategorized] ~83-~83: A punctuation mark might be missing here.
    Context: ...3_2.png)     | Open the job info.



    Overview:<u...

    (AI_EN_LECTOR_MISSING_PUNCTUATION)


    [typographical] ~83-~83: Unpaired symbol: ‘"’ seems to be missing
    Context: .... For more information, see Manual QA

  • Start frame - the number o...

    (EN_UNPAIRED_QUOTES)


    [uncategorized] ~84-~84: A punctuation mark might be missing here.
    Context: ...nual and interpolated frames. | | Filters

      | Switches o...

    (AI_EN_LECTOR_MISSING_PUNCTUATION)

Additional comments not posted (31)
changelog.d/20240701_131408_boris_immediate_feedback.md (1)

3-3: LGTM!

The changelog entry is clear and correctly formatted.

cvat-ui/src/components/job-item/styles.scss (3)

13-15: LGTM!

The new styles for .cvat-job-item-issues-summary-icon are consistent with the existing code.


35-43: LGTM!

The new styles for .cvat-job-item-selects and its children are consistent with the existing code.


46-46: LGTM!

The new style for .cvat-job-item-select:not(:last-child) is consistent with the existing code.

cvat-ui/src/actions/plugins-actions.ts (3)

2-2: LGTM!

The copyright notice has been updated correctly.


20-21: LGTM!

The new action types ADD_UI_CALLBACK and REMOVE_UI_CALLBACK are consistent with the existing code.


44-51: LGTM!

The new action creators addUICallback and removeUICallback are consistent with the existing code.

cvat-ui/src/components/job-item/job-actions-menu.tsx (1)

11-11: Imports look good.

The addition of Job and JobType imports from cvat-core-wrapper is necessary for type-checking and conditional rendering of menu items.

cvat-ui/src/components/plugins-entrypoint.tsx (3)

12-12: Imports look good.

The addition of changeFrameAsync and updateCurrentJobAsync imports from actions/annotation-actions is necessary for the extended client plugins system.


19-24: Action creators look good.

The addition of new action creators (changeFrameAsync, addUIComponent, removeUIComponent, addUICallback, removeUICallback, updateCurrentJobAsync) is necessary for the extended client plugins system.


70-79: Action creators usage looks good.

The usage of new action creators (changeFrameAsync, updateCurrentJobAsync, addUICallback, removeUICallback, addUIComponent, removeUIComponent) in the plugin registration process is necessary for the extended client plugins system.

cvat-ui/src/reducers/plugins-reducer.ts (4)

17-25: State properties look good.

The addition of callbacks to PluginsState is necessary for managing UI callbacks in the extended client plugins system.


Line range hint 80-91: Function looks good.

The findContainerFromPath function has been modified to handle both components and callbacks prefixes, which is necessary for the extended client plugins system.


166-177: Case for ADD_UI_CALLBACK looks good.

The addition of the ADD_UI_CALLBACK case is necessary for managing UI callbacks in the extended client plugins system.


178-192: Case for REMOVE_UI_CALLBACK looks good.

The addition of the REMOVE_UI_CALLBACK case is necessary for managing UI callbacks in the extended client plugins system.

cvat-ui/src/components/annotation-page/top-bar/annotation-menu.tsx (3)

28-28: Imports look good.

The addition of finishCurrentJobAsync import from actions/annotation-actions is necessary for the refactored job finishing process.


55-56: Function call looks good.

The finishJob function now dispatches finishCurrentJobAsync, which is necessary for the refactored job finishing process.


222-234: Menu item looks good.

The Finish the job menu item now triggers a modal that confirms the job finishing action and dispatches finishJob, which is necessary for the refactored job finishing process.

cvat-ui/src/components/job-item/job-item.tsx (2)

25-25: Verify removal of JobStage and JobState due to changes in job state handling.

The removal of JobStage and JobState from the imports reflects the PR's focus on refactoring job state handling. Ensure that all references to these types are updated or removed throughout the codebase to prevent runtime errors.

#!/bin/bash
# Verify removal of JobStage and JobState in the entire codebase.
rg --type python "JobStage|JobState"

Line range hint 119-240: Review usage of potentially removed or modified job properties.

Given the PR's changes in job state handling, verify that properties like stage, state, and related job update methods are correctly handled in this component. Also, ensure that the UI reflects these changes accurately, especially in dropdowns and job summaries.

#!/bin/bash
# Check for references to `stage` and `state` properties in job handling.
rg --type python "job.stage|job.state"
site/content/en/docs/manual/basics/CVAT-annotation-Interface/navbar.md (4)

36-36: Updated documentation to reflect UI changes.

The documentation update correctly reflects the removal of the "Renew the job" option, focusing solely on finishing the job. Ensure that this change is consistently represented across all related documentation and UI elements.


Line range hint 69-69: Consider adding a comma for clarity.

Add a comma after "customize" for better readability in the documentation.

- To customize right-click on the button and select one of three options...
+ To customize, right-click on the button and select one of three options...
Tools
LanguageTool

[style] ~35-~35: Consider an alternative to strengthen your wording.
Context: ...en finished, reviewed, and approved. No further changes are necessary.

    | | **Finish the jo...

    (CHANGES_ADJUSTMENTS)


Line range hint 72-72: Grammar correction: Add 'the' before 'current frame'.

To improve clarity and grammatical correctness, add 'the' before 'current frame'.

- Click to delete current frame.
+ Click to delete the current frame.
Tools
LanguageTool

[style] ~35-~35: Consider an alternative to strengthen your wording.
Context: ...en finished, reviewed, and approved. No further changes are necessary.

    | | **Finish the jo...

    (CHANGES_ADJUSTMENTS)


Line range hint 84-84: Add a colon for consistency.

Add a colon after "Filters" to maintain consistency with other items in the list.

- **Filters**<br><br>![](/images/image143_3.png)            | Switches o...
+ **Filters:**<br><br>![](/images/image143_3.png)            | Switches o...
Tools
LanguageTool

[style] ~35-~35: Consider an alternative to strengthen your wording.
Context: ...en finished, reviewed, and approved. No further changes are necessary.

    | | **Finish the jo...

    (CHANGES_ADJUSTMENTS)

cvat-ui/src/reducers/index.ts (2)

279-287: Addition of callback handling in plugins state.

The addition of beforeJobFinish callbacks in the PluginsState reflects the PR's focus on enhancing plugin interaction capabilities. Ensure that these callbacks are properly initialized and used in relevant components to handle job finishing actions.


Line range hint 291-336: Ensure newly added plugin components are utilized correctly.

The addition of new plugin components in various sections of the UI (e.g., items in userMenu, loginForm, etc.) should be verified to ensure they are rendered and function as expected. This is crucial for maintaining a consistent user experience and leveraging the extended plugins system.

#!/bin/bash
# Verify usage of newly added plugin components in the UI.
rg --type python "PluginComponent"
cvat-ui/src/components/annotation-page/annotations-actions/annotations-actions-modal.tsx (1)

330-333: Ensure job saving functionality is robust.

The addition of a job saving functionality within the action runner modal is crucial for preventing data loss. Ensure that error handling is robust and that the UI provides clear feedback to the user about the save operation's status.

#!/bin/bash
# Verify error handling and user feedback for job saving functionality.
rg --type python "saveAnnotationsAsync"
cvat-ui/src/components/annotation-page/single-shape-workspace/single-shape-sidebar/single-shape-sidebar.tsx (3)

26-26: Ensure proper usage of finishCurrentJobAsync in place of updateCurrentJobAsync.

The replacement of updateCurrentJobAsync with finishCurrentJobAsync is crucial for the new job finishing logic. Ensure that this change is reflected wherever the job's current state needs to be finalized.

#!/bin/bash
# Description: Verify that `updateCurrentJobAsync` is no longer used in contexts where `finishCurrentJobAsync` should be used.

# Test: Search for the old function usage. Expect: No occurrences outside of deprecation contexts.
rg --type typescript $'updateCurrentJobAsync' 'src/'

69-69: Verify the new parameter handling in switchAutoNextFrame.

The addition of a boolean parameter to switchAutoNextFrame is intended to enhance control over frame navigation. Make sure this change is consistently applied across the codebase where this function is utilized.

#!/bin/bash
# Description: Check all calls to `switchAutoNextFrame` to ensure they correctly pass a boolean parameter.

# Test: Search for function calls missing the boolean parameter. Expect: All calls should include a boolean argument.
rg --type typescript $'switchAutoNextFrame\([^)]*\)' 'src/'

120-120: Review the dispatch logic for setting the next frame.

The logic for determining and setting the next frame has been refactored. Ensure that the new implementation correctly handles edge cases, especially in asynchronous environments.

#!/bin/bash
# Description: Ensure the new next frame setting logic handles all edge cases.

# Test: Check for potential race conditions or unexpected behavior in asynchronous operations.
echo "Review the implementation details and test for edge cases."

Also applies to: 227-227, 238-238, 522-522

cvat-ui/src/actions/annotation-actions.ts (1)

1084-1097: Confirm the execution sequence in finishCurrentJobAsync.

The new finishCurrentJobAsync function is critical for handling job completion. It involves multiple asynchronous operations, including saving annotations and updating job state. Ensure that these operations are executed in the correct sequence and handle any potential errors or race conditions.

#!/bin/bash
# Description: Verify the correct execution sequence and error handling in `finishCurrentJobAsync`.

# Test: Check for any potential race conditions or errors in the sequence of operations within `finishCurrentJobAsync`.
echo "Review the sequence of operations and error handling in `finishCurrentJobAsync`."

cvat-ui/src/components/job-item/job-item.tsx Show resolved Hide resolved
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.

Actionable comments posted: 7

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 4ccc29d and 0056bba.

Files selected for processing (15)
  • changelog.d/20240701_131217_boris_immediate_feedback.md (1 hunks)
  • changelog.d/20240701_131317_boris_immediate_feedback.md (1 hunks)
  • changelog.d/20240701_131408_boris_immediate_feedback.md (1 hunks)
  • cvat-ui/src/actions/annotation-actions.ts (5 hunks)
  • cvat-ui/src/actions/plugins-actions.ts (3 hunks)
  • cvat-ui/src/components/annotation-page/annotations-actions/annotations-actions-modal.tsx (1 hunks)
  • cvat-ui/src/components/annotation-page/single-shape-workspace/single-shape-sidebar/single-shape-sidebar.tsx (7 hunks)
  • cvat-ui/src/components/annotation-page/top-bar/annotation-menu.tsx (4 hunks)
  • cvat-ui/src/components/job-item/job-actions-menu.tsx (4 hunks)
  • cvat-ui/src/components/job-item/job-item.tsx (6 hunks)
  • cvat-ui/src/components/job-item/styles.scss (2 hunks)
  • cvat-ui/src/components/plugins-entrypoint.tsx (4 hunks)
  • cvat-ui/src/reducers/index.ts (2 hunks)
  • cvat-ui/src/reducers/plugins-reducer.ts (6 hunks)
  • site/content/en/docs/manual/basics/CVAT-annotation-Interface/navbar.md (1 hunks)
Files not summarized due to errors (9)
  • cvat-ui/src/components/job-item/styles.scss: Error: Server error. Please try again later.
  • cvat-ui/src/components/annotation-page/single-shape-workspace/single-shape-sidebar/single-shape-sidebar.tsx: Error: Server error. Please try again later.
  • cvat-ui/src/components/job-item/job-actions-menu.tsx: Error: Server error. Please try again later.
  • changelog.d/20240701_131408_boris_immediate_feedback.md: Error: Server error. Please try again later.
  • cvat-ui/src/components/job-item/job-item.tsx: Error: Server error. Please try again later.
  • cvat-ui/src/components/plugins-entrypoint.tsx: Error: Server error. Please try again later.
  • cvat-ui/src/reducers/index.ts: Error: Server error. Please try again later.
  • cvat-ui/src/components/annotation-page/annotations-actions/annotations-actions-modal.tsx: Error: Server error. Please try again later.
  • cvat-ui/src/actions/plugins-actions.ts: Error: Server error. Please try again later.
Files skipped from review due to trivial changes (1)
  • changelog.d/20240701_131317_boris_immediate_feedback.md
Additional context used
LanguageTool
changelog.d/20240701_131217_boris_immediate_feedback.md

[uncategorized] ~3-~3: You might be missing the article “the” here.
Context: ### Removed - Renew the job button in annotation menu was removed (<https://github.com/...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

site/content/en/docs/manual/basics/CVAT-annotation-Interface/navbar.md

[style] ~35-~35: Consider an alternative to strengthen your wording.
Context: ...en finished, reviewed, and approved. No further changes are necessary.

    | | **Finish the jo...

    (CHANGES_ADJUSTMENTS)


    [typographical] ~83-~83: Unpaired symbol: ‘"’ seems to be missing
    Context: .... For more information, see Manual QA

  • Start frame - the number o...

    (EN_UNPAIRED_QUOTES)

Additional comments not posted (16)
changelog.d/20240701_131408_boris_immediate_feedback.md (1)

3-3: Changelog entry looks good.

The changelog entry is clear and well-written.

cvat-ui/src/components/job-item/styles.scss (3)

13-15: Added margin to issues summary icon.

The margin addition ensures proper spacing for the issues summary icon.


35-43: Adjusted width and margin for job item selects.

The width and margin adjustments ensure consistent alignment and spacing for job item selects.


46-46: Added margin-right for non-last job item selects.

The margin-right addition ensures proper spacing between job item selects.

cvat-ui/src/actions/plugins-actions.ts (2)

20-21: LGTM! New actions ADD_UI_CALLBACK and REMOVE_UI_CALLBACK are correctly defined.

The new action types and corresponding action creators are well integrated.


44-51: LGTM! New action creators addUICallback and removeUICallback are correctly defined.

The new action creators are well integrated within the pluginActions.

cvat-ui/src/components/job-item/job-actions-menu.tsx (1)

11-11: LGTM! New import statement for Job and JobType is correct.

The new import statement is necessary and correctly added.

cvat-ui/src/components/plugins-entrypoint.tsx (2)

12-12: LGTM! New import statement for changeFrameAsync and updateCurrentJobAsync is correct.

The new import statements are necessary and correctly added.


70-76: LGTM! Correct integration of new action creators within the registerComponent method.

The new action creators changeFrameAsync, updateCurrentJobAsync, addUICallback, and removeUICallback are correctly integrated within the registerComponent method.

cvat-ui/src/reducers/plugins-reducer.ts (2)

166-177: LGTM! New case ADD_UI_CALLBACK is correctly defined.

The new case ADD_UI_CALLBACK is well integrated within the switch statement.


178-192: LGTM! New case REMOVE_UI_CALLBACK is correctly defined.

The new case REMOVE_UI_CALLBACK is well integrated within the switch statement.

cvat-ui/src/components/job-item/job-item.tsx (1)

126-135: Ensure proper integration of the new component.

The new component ReviewSummaryComponent should be properly integrated within the job item structure. Verify that it displays correctly and interacts with the existing components as expected.

cvat-ui/src/reducers/index.ts (1)

279-287: Ensure proper integration of the new callbacks.

The new callbacks for the annotation page header menu before job finish should be properly integrated within the existing state structure. Verify that they are correctly used and updated as expected.

cvat-ui/src/components/annotation-page/single-shape-workspace/single-shape-sidebar/single-shape-sidebar.tsx (3)

22-26: Ensure imported entities are used correctly.

Verify that Job, Label, LabelType, and finishCurrentJobAsync are used correctly in the code.

Verification successful

The imported entities are used correctly.

The imports of Job, Label, LabelType, and finishCurrentJobAsync are necessary and correctly used in the codebase.

  • Job, Label, and LabelType are used in various components such as task-page/job-list.tsx, move-task-modal.tsx, and others.
  • finishCurrentJobAsync is used in annotation-page/top-bar/annotation-menu.tsx and single-shape-sidebar.tsx.
Scripts executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Verify usage of the imported entities in the codebase.

# Test: Verify `Job`, `Label`, `LabelType`, and `finishCurrentJobAsync` usage.
rg --type tsx $'(Job|Label|LabelType|finishCurrentJobAsync)'

Length of output: 89



Script:

#!/bin/bash
# Description: Verify usage of the imported entities in the codebase.

# Test: Verify `Job`, `Label`, `LabelType`, and `finishCurrentJobAsync` usage.
rg 'Job|Label|LabelType|finishCurrentJobAsync' --glob '*.tsx'

Length of output: 133651


522-522: Ensure correct usage of switchAutoNextFrame.

Verify that the action creator switchAutoNextFrame is correctly used and the state updates are handled properly.

Verification successful

Ensure correct usage of switchAutoNextFrame.

The action creator switchAutoNextFrame is correctly used and the state updates are handled properly.

  • switchAutoNextFrame is correctly defined and used within the file single-shape-sidebar.tsx.
  • The createAction function is correctly implemented in cvat-ui/src/utils/redux.ts.
  • The ReducerActionType enum is correctly defined within the same file.
Scripts executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Verify the usage of `switchAutoNextFrame`.

# Test: Check the definition and usage of `switchAutoNextFrame`.
rg --type tsx $'switchAutoNextFrame'

Length of output: 63



Script:

#!/bin/bash
# Description: Verify the usage of `switchAutoNextFrame`.

# Test: Check the definition and usage of `switchAutoNextFrame`.
rg --type ts 'switchAutoNextFrame'

Length of output: 578



Script:

#!/bin/bash
# Description: Extract and verify the implementation of `switchAutoNextFrame`.

# Locate the definition of `switchAutoNextFrame` within TypeScript files.
rg --type ts 'switchAutoNextFrame' --context 5

Length of output: 4878



Script:

#!/bin/bash
# Description: Verify the definitions of `createAction` and `ReducerActionType`.

# Locate the definition of `createAction`.
rg --type ts 'createAction'

# Locate the definition of `ReducerActionType`.
rg --type ts 'ReducerActionType'

Length of output: 45651


276-276: Verify useEffect dependencies for getNextFrame.

Ensure that the dependencies for the useEffect hook are correctly defined to avoid unnecessary re-renders or missed updates.

Verification successful

Verified useEffect dependencies for getNextFrame.

The useEffect hook correctly lists [getNextFrame] as its dependency, ensuring that getNextFrame is called only when it changes.

  • Location: cvat-ui/src/components/annotation-page/single-shape-workspace/single-shape-sidebar/single-shape-sidebar.tsx
Scripts executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Verify `useEffect` dependencies for `getNextFrame`.

# Test: Check the definition of `getNextFrame` and its dependencies.
rg --type tsx $'useEffect\\(\\(\\) => getNextFrame\\(\\), \\[getNextFrame\\]\\)'

Length of output: 101



Script:

#!/bin/bash
# Description: Verify `useEffect` dependencies for `getNextFrame`.

# Test: Check the definition of `getNextFrame` and its dependencies.
rg 'useEffect\(\(\) => getNextFrame\(\), \[getNextFrame\]\)'

Length of output: 62



Script:

#!/bin/bash
# Description: Verify `useEffect` dependencies for `getNextFrame`.

# Find all `useEffect` hooks in the file `single-shape-sidebar.tsx`.
rg 'useEffect' cvat-ui/src/components/annotation-page/single-shape-workspace/single-shape-sidebar/single-shape-sidebar.tsx

Length of output: 258



Script:

#!/bin/bash
# Description: Extract all `useEffect` hooks from the file `single-shape-sidebar.tsx` for manual inspection.

# Extract the full `useEffect` hooks from the file.
rg -A 10 'useEffect' cvat-ui/src/components/annotation-page/single-shape-workspace/single-shape-sidebar/single-shape-sidebar.tsx

Length of output: 2190

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.

Actionable comments posted: 1

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 4ccc29d and 0056bba.

Files selected for processing (15)
  • changelog.d/20240701_131217_boris_immediate_feedback.md (1 hunks)
  • changelog.d/20240701_131317_boris_immediate_feedback.md (1 hunks)
  • changelog.d/20240701_131408_boris_immediate_feedback.md (1 hunks)
  • cvat-ui/src/actions/annotation-actions.ts (5 hunks)
  • cvat-ui/src/actions/plugins-actions.ts (3 hunks)
  • cvat-ui/src/components/annotation-page/annotations-actions/annotations-actions-modal.tsx (1 hunks)
  • cvat-ui/src/components/annotation-page/single-shape-workspace/single-shape-sidebar/single-shape-sidebar.tsx (7 hunks)
  • cvat-ui/src/components/annotation-page/top-bar/annotation-menu.tsx (4 hunks)
  • cvat-ui/src/components/job-item/job-actions-menu.tsx (4 hunks)
  • cvat-ui/src/components/job-item/job-item.tsx (6 hunks)
  • cvat-ui/src/components/job-item/styles.scss (2 hunks)
  • cvat-ui/src/components/plugins-entrypoint.tsx (4 hunks)
  • cvat-ui/src/reducers/index.ts (2 hunks)
  • cvat-ui/src/reducers/plugins-reducer.ts (6 hunks)
  • site/content/en/docs/manual/basics/CVAT-annotation-Interface/navbar.md (1 hunks)
Files skipped from review due to trivial changes (4)
  • changelog.d/20240701_131217_boris_immediate_feedback.md
  • changelog.d/20240701_131317_boris_immediate_feedback.md
  • changelog.d/20240701_131408_boris_immediate_feedback.md
  • cvat-ui/src/components/job-item/job-actions-menu.tsx
Additional context used
LanguageTool
site/content/en/docs/manual/basics/CVAT-annotation-Interface/navbar.md

[uncategorized] ~32-~32: A punctuation mark might be missing here.
Context: ...m the tracks within the selected range.

                 ...

(AI_EN_LECTOR_MISSING_PUNCTUATION)


[style] ~35-~35: Consider an alternative to strengthen your wording.
Context: ...en finished, reviewed, and approved. No further changes are necessary.

    | | **Finish the jo...

    (CHANGES_ADJUSTMENTS)


    [uncategorized] ~56-~56: A punctuation mark might be missing here.
    Context: ...                                  | | Block

            | Used to pause ...

    (AI_EN_LECTOR_MISSING_PUNCTUATION)


    [uncategorized] ~69-~69: A punctuation mark might be missing here.
    Context: ...*/Go next buttons are customizable:



    To customize...

    (AI_EN_LECTOR_MISSING_PUNCTUATION)


    [uncategorized] ~72-~72: You might be missing the article “the” here.
    Context: ...      | Click to delete current frame.                                 ...

    (AI_EN_LECTOR_MISSING_DETERMINER_THE)


    [uncategorized] ~83-~83: A punctuation mark might be missing here.
    Context: ...3_2.png)     | Open the job info.



    Overview:<u...

    (AI_EN_LECTOR_MISSING_PUNCTUATION)


    [typographical] ~83-~83: Unpaired symbol: ‘"’ seems to be missing
    Context: .... For more information, see Manual QA

  • Start frame - the number o...

    (EN_UNPAIRED_QUOTES)


    [uncategorized] ~84-~84: A punctuation mark might be missing here.
    Context: ...nual and interpolated frames. | | Filters

      | Switches o...

    (AI_EN_LECTOR_MISSING_PUNCTUATION)


    [uncategorized] ~85-~85: A punctuation mark might be missing here.
    Context: ...thc between different annotation modes:



    Overview:

      <l...

      (AI_EN_LECTOR_MISSING_PUNCTUATION)


      [uncategorized] ~85-~85: A punctuation mark might be missing here.
      Context: ...li>

    • Attribute -- annotation with [Attributes](docs/manual/advanced/attri...

      (AI_EN_LECTOR_MISSING_PUNCTUATION)

Additional comments not posted (28)
cvat-ui/src/components/job-item/styles.scss (3)

13-15: Ensure consistent margin for .cvat-job-item-issues-summary-icon.

The margin-left property is set, but ensure it aligns with the overall design consistency.


35-36: Verify width of .cvat-job-item-select.

Ensure that the width of .cvat-job-item-select aligns with the design requirements and does not cause layout issues.


46-46: Verify margin-right for .cvat-job-item-select:not(:last-child).

Ensure that the margin-right for .cvat-job-item-select:not(:last-child) does not cause spacing issues in the layout.

cvat-ui/src/actions/plugins-actions.ts (3)

20-21: Action Types Addition: ADD_UI_CALLBACK and REMOVE_UI_CALLBACK

The addition of new action types ADD_UI_CALLBACK and REMOVE_UI_CALLBACK looks good.


44-47: Function Addition: addUICallback

The addUICallback function is correctly defined to create an action for adding a UI callback.


48-51: Function Addition: removeUICallback

The removeUICallback function is correctly defined to create an action for removing a UI callback.

cvat-ui/src/components/plugins-entrypoint.tsx (4)

12-12: Ensure correct usage of changeFrameAsync and updateCurrentJobAsync.

Verify that the imported functions changeFrameAsync and updateCurrentJobAsync are correctly used within the file.


19-24: Addition to PluginActionCreators: New action creators

The addition of new action creators to PluginActionCreators looks good.


33-46: Ensure correct usage of ComponentBuilder parameters.

Verify that the ComponentBuilder parameters, including the newly added store, are correctly used within the file.


70-79: Ensure correct assignment within registerComponent.

Verify that the assignment of action creators and other properties within the registerComponent function is correct.

cvat-ui/src/reducers/plugins-reducer.ts (4)

17-25: Addition of callbacks object to PluginsState

The addition of the callbacks object to the PluginsState interface looks good.


Line range hint 80-94: Function Modification: findContainerFromPath

The modification to the findContainerFromPath function to include the prefix parameter for differentiating between components and callbacks looks good.


166-177: Case Addition: ADD_UI_CALLBACK

The case for adding a UI callback in the reducer is correctly implemented.


178-192: Case Addition: REMOVE_UI_CALLBACK

The case for removing a UI callback in the reducer is correctly implemented.

cvat-ui/src/components/annotation-page/top-bar/annotation-menu.tsx (3)

22-22: LGTM! Verify the usage of finishCurrentJobAsync in the codebase.

The import statement changes are approved. Ensure that all usages of finishCurrentJobAsync are correct.

Also applies to: 28-28


55-56: LGTM! Verify the behavior of finishJob.

The finishJob function correctly dispatches the finishCurrentJobAsync action. Ensure that the function behaves as expected.

Verification successful

Verification Successful

The finishJob function correctly dispatches the finishCurrentJobAsync action, and the behavior is consistent across the codebase.

  • cvat-ui/src/components/annotation-page/top-bar/annotation-menu.tsx
  • cvat-ui/src/actions/annotation-actions.ts
  • cvat-ui/src/components/annotation-page/single-shape-workspace/single-shape-sidebar/single-shape-sidebar.tsx
Scripts executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Verify the behavior of `finishJob`.

# Test: Search for the function usage. Expect: Correct behavior in all instances.
rg --type js --type jsx --type ts --type tsx $'finishJob'

Length of output: 84



Script:

#!/bin/bash
# Description: Verify the behavior of `finishJob` and `finishCurrentJobAsync`.

# Test: Search for the function usage. Expect: Correct behavior in all instances.
rg --type js --type ts --type tsx 'finishJob'
rg --type js --type ts --type tsx 'finishCurrentJobAsync'

Length of output: 159



Script:

#!/bin/bash
# Description: Verify the behavior of `finishJob` and `finishCurrentJobAsync`.

# Test: Search for the function usage. Expect: Correct behavior in all instances.
rg --type js --type ts 'finishJob'
rg --type js --type ts 'finishCurrentJobAsync'

Length of output: 941


222-235: LGTM! Verify the behavior of the new menu item.

The new menu item correctly triggers the finishJob function. Ensure that the menu item behaves as expected.

Verification successful

LGTM! Verify the behavior of the new menu item.

The new menu item correctly triggers the finishJob function, which dispatches finishCurrentJobAsync to save annotations and set the job state to "completed". Ensure that the menu item behaves as expected.

Scripts executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Verify the behavior of the new menu item.

# Test: Search for the menu item usage. Expect: Correct behavior in all instances.
rg --type js --type jsx --type ts --type tsx $'Actions.FINISH_JOB'

Length of output: 93



Script:

#!/bin/bash
# Description: Verify the behavior of the new menu item.

# Test: Search for the menu item usage. Expect: Correct behavior in all instances.
rg --type js --type ts --type tsx $'Actions.FINISH_JOB'

Length of output: 82



Script:

#!/bin/bash
# Description: Verify the behavior of the new menu item.

# Test: Search for the menu item usage. Expect: Correct behavior in all instances.
rg --type js --type ts $'Actions.FINISH_JOB'

Length of output: 143



Script:

#!/bin/bash
# Description: Verify the definition and usage of the `finishJob` function.

# Test: Search for the definition and usage of the `finishJob` function.
rg --type js --type ts 'function finishJob' 
rg --type js --type ts 'finishJob('

Length of output: 154



Script:

#!/bin/bash
# Description: Verify the definition and usage of the `finishJob` function.

# Test: Search for the definition and usage of the `finishJob` function.
rg --type js --type ts 'function finishJob' 
rg --type js --type ts 'finishJob\('

Length of output: 84



Script:

#!/bin/bash
# Description: Verify the definition and usage of the `finishJob` function.

# Test: Search for the definition and usage of the `finishJob` function across the entire codebase.
rg 'finishJob'

Length of output: 223



Script:

#!/bin/bash
# Description: Extract the implementation of the `finishJob` function.

# Test: Extract the implementation of the `finishJob` function from the specified file.
rg --context 10 'const finishJob = useCallback' cvat-ui/src/components/annotation-page/top-bar/annotation-menu.tsx

Length of output: 897



Script:

#!/bin/bash
# Description: Verify the implementation of the `finishCurrentJobAsync` function.

# Test: Search for the definition and implementation of the `finishCurrentJobAsync` function.
rg 'function finishCurrentJobAsync' 
rg 'finishCurrentJobAsync'

Length of output: 812



Script:

#!/bin/bash
# Description: Extract the implementation of the `finishCurrentJobAsync` function.

# Test: Extract the implementation of the `finishCurrentJobAsync` function from the specified file.
rg --context 20 'export function finishCurrentJobAsync' cvat-ui/src/actions/annotation-actions.ts

Length of output: 1320

cvat-ui/src/components/job-item/job-item.tsx (5)

21-21: LGTM! Verify the usage of JobState in the codebase.

The import statement changes are approved. Ensure that all usages of JobState are correct.

Also applies to: 25-25

Verification successful

Verified Usage of JobState

The JobState entity is correctly utilized across multiple files in the codebase, including components, actions, and tests.

  • cvat-ui/src/components/job-item/job-item.tsx
  • cvat-ui/src/cvat-core-wrapper.ts
  • cvat-ui/src/components/annotation-page/top-bar/right-group.tsx
  • cvat-ui/src/components/annotation-page/top-bar/annotation-menu.tsx
  • cvat-ui/src/actions/annotation-actions.ts
  • cvat-core/src/enums.ts
  • cvat-core/src/session.ts
  • cvat-core/src/server-response-types.ts
  • cvat-core/src/session-implementation.ts
  • Various test files
Scripts executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Verify the usage of `JobState` in the codebase.

# Test: Search for the entity usage. Expect: Correct usage in all instances.
rg --type js --type jsx --type ts --type tsx $'JobState'

Length of output: 83



Script:

#!/bin/bash
# Description: Verify the usage of `JobState` in the codebase.

# Test: Search for the entity usage. Expect: Correct usage in all instances.
rg --type js --type ts --type tsx 'JobState'

Length of output: 72



Script:

#!/bin/bash
# Description: Verify the usage of `JobState` in the codebase.

# Test: Search for the entity usage. Expect: Correct usage in all instances.
rg --type js --type ts 'JobState'

Length of output: 6599


193-219: LGTM! Verify the behavior of the new job state selection column.

The new column correctly allows job state selection. Ensure that the column behaves as expected.


229-231: LGTM! Verify the behavior of the new job duration column.

The new column correctly displays the job duration. Ensure that the column behaves as expected.

Verification successful

LGTM! Verify the behavior of the new job duration column.

The DurationIcon is correctly implemented and used in the job-item.tsx file.

  • cvat-ui/src/components/job-item/job-item.tsx: The DurationIcon is imported and used.
  • cvat-ui/src/icons.tsx: The DurationIcon is defined.
Scripts executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Verify the behavior of the new job duration column.

# Test: Search for the column usage. Expect: Correct behavior in all instances.
rg --type js --type jsx --type ts --type tsx $'DurationIcon'

Length of output: 87



Script:

#!/bin/bash
# Description: Verify the behavior of the new job duration column.

# Test: Search for the column usage. Expect: Correct behavior in all instances.
rg --type js --type ts --type tsx $'DurationIcon'

Length of output: 76



Script:

#!/bin/bash
# Description: Verify the behavior of the new job duration column.

# Test: Search for the column usage. Expect: Correct behavior in all instances.
rg --type js --type ts $'DurationIcon'

Length of output: 433


126-135: LGTM! Verify the behavior of the new column.

The new column correctly displays the job type and issues summary. Ensure that the column behaves as expected.


236-240: LGTM! Verify the behavior of the new job frame count column.

The new column correctly displays the job frame count. Ensure that the column behaves as expected.

Verification successful

The new job frame count column and its percentage representation are correctly implemented.

The instances of job.frameCount and frameCountPercentRepresentation are localized within the cvat-ui/src/components/job-item/job-item.tsx file, confirming the expected behavior.

  • cvat-ui/src/components/job-item/job-item.tsx:236-240
Scripts executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Verify the behavior of the new job frame count column.

# Test: Search for the column usage. Expect: Correct behavior in all instances.
rg --type js --type jsx --type ts --type tsx $'job.frameCount'

Length of output: 89



Script:

#!/bin/bash
# Description: Verify the behavior of the new job frame count column.

# Correct the file types and search for job.frameCount and frameCountPercentRepresentation
rg --type js --type ts --type tsx 'job.frameCount'
rg --type js --type ts --type tsx 'frameCountPercentRepresentation'

Length of output: 174



Script:

#!/bin/bash
# Description: Verify the behavior of the new job frame count column.

# Correct the file types and search for job.frameCount and frameCountPercentRepresentation
rg --type js --type ts --type jsx 'job.frameCount'
rg --type js --type ts --type jsx 'frameCountPercentRepresentation'

Length of output: 174



Script:

#!/bin/bash
# Description: Verify the behavior of the new job frame count column.

# Correct the file types and search for job.frameCount and frameCountPercentRepresentation
rg --type-add 'tsx:*.tsx' --type js --type ts --type tsx 'job.frameCount'
rg --type-add 'tsx:*.tsx' --type js --type ts --type tsx 'frameCountPercentRepresentation'

Length of output: 736

site/content/en/docs/manual/basics/CVAT-annotation-Interface/navbar.md (1)

36-36: LGTM! Improve the documentation based on static analysis hints.

The new menu item description is clear and accurate. Consider the following improvements based on static analysis hints:

  • Add a punctuation mark at the end of the sentence.
  • Strengthen the wording to make it more assertive.
- | **Finish the job** | Saves annotations and sets **job state** to **Completed**. |
+ | **Finish the job** | Saves annotations and sets **job state** to **Completed**. |
cvat-ui/src/reducers/index.ts (1)

279-287: LGTM! Verify the integration of the new callback structures.

The new callback structures are correctly defined. Ensure that the new structures are integrated correctly.

cvat-ui/src/components/annotation-page/single-shape-workspace/single-shape-sidebar/single-shape-sidebar.tsx (2)

68-69: LGTM! But verify the function usage in the codebase.

The code changes are approved.

However, ensure that all function calls to switchAutoNextFrame match the new implementation.

Verification successful

Verified: Function calls match the new implementation.

The switchAutoNextFrame function is correctly called with boolean arguments in the identified locations:

  • dispatch(actionCreators.switchAutoNextFrame(false));
  • dispatch(actionCreators.switchAutoNextFrame(!state.autoNextFrame));

These calls align with the updated function definition.

Scripts executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Verify all function calls to `switchAutoNextFrame` match the new implementation.

# Test: Search for the function usage. Expect: Only occurrences of the new implementation.
rg --type js --type tsx $'switchAutoNextFrame'

Length of output: 73



Script:

#!/bin/bash
# Description: Verify all function calls to `switchAutoNextFrame` match the new implementation.

# Test: Search for the function usage. Expect: Only occurrences of the new implementation.
rg --type js --type ts --type tsx 'switchAutoNextFrame'

Length of output: 83



Script:

#!/bin/bash
# Description: Verify all function calls to `switchAutoNextFrame` match the new implementation.

# Test: Search for the function usage. Expect: Only occurrences of the new implementation.
rg 'switchAutoNextFrame' --glob '*.js' --glob '*.ts' --glob '*.tsx'

Length of output: 611


249-253: LGTM! But verify the function usage in the codebase.

The code changes are approved.

However, ensure that all function calls to finishCurrentJobAsync match the new implementation.

Verification successful

Function usage verified successfully.

The function finishCurrentJobAsync is used consistently with the new implementation in the following files:

  • cvat-ui/src/actions/annotation-actions.ts
  • cvat-ui/src/components/annotation-page/top-bar/annotation-menu.tsx
  • cvat-ui/src/components/annotation-page/single-shape-workspace/single-shape-sidebar/single-shape-sidebar.tsx
Scripts executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Verify all function calls to `finishCurrentJobAsync` match the new implementation.

# Test: Search for the function usage. Expect: Only occurrences of the new implementation.
rg --type js --type tsx $'finishCurrentJobAsync'

Length of output: 75



Script:

#!/bin/bash
# Description: Verify all function calls to `finishCurrentJobAsync` match the new implementation.

# Test: Search for the function usage. Expect: Only occurrences of the new implementation.
rg --type js --type ts $'finishCurrentJobAsync'

Length of output: 697



Script:

#!/bin/bash
# Description: Verify the context of `finishCurrentJobAsync` in the identified files.

# Check the function definition and its usage in the relevant files.
rg -A 5 -B 5 'finishCurrentJobAsync' cvat-ui/src/actions/annotation-actions.ts
rg -A 5 -B 5 'finishCurrentJobAsync' cvat-ui/src/components/annotation-page/top-bar/annotation-menu.tsx
rg -A 5 -B 5 'finishCurrentJobAsync' cvat-ui/src/components/annotation-page/single-shape-workspace/single-shape-sidebar/single-shape-sidebar.tsx

Length of output: 2514

cvat-ui/src/actions/annotation-actions.ts (2)

Line range hint 1044-1082: LGTM!

The code changes are approved.


1084-1097: LGTM! But verify the function usage in the codebase.

The code changes are approved.

However, ensure that all function calls to finishCurrentJobAsync match the new implementation.

Verification successful

Verification successful.

The function finishCurrentJobAsync is correctly invoked in the following files:

  • cvat-ui/src/components/annotation-page/top-bar/annotation-menu.tsx
  • cvat-ui/src/components/annotation-page/single-shape-workspace/single-shape-sidebar/single-shape-sidebar.tsx

The function calls match the new implementation and are used appropriately within the application.

Scripts executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Verify all function calls to `finishCurrentJobAsync` match the new implementation.

# Test: Search for the function usage. Expect: Only occurrences of the new implementation.
rg --type js --type tsx $'finishCurrentJobAsync'

Length of output: 75



Script:

#!/bin/bash
# Description: Verify all function calls to `finishCurrentJobAsync` match the new implementation.

# Test: Search for the function usage. Expect: Only occurrences of the new implementation.
rg --type js --type-add 'tsx:*.tsx' finishCurrentJobAsync

Length of output: 59



Script:

#!/bin/bash
# Description: Verify the presence and usage of the function `finishCurrentJobAsync` in the codebase.

# Test: Search for the function definition and its invocations across all file types.
rg 'finishCurrentJobAsync' 

Length of output: 677



Script:

#!/bin/bash
# Description: Extract lines where `finishCurrentJobAsync` is called to verify correct usage.

# Extract lines from annotation-menu.tsx
rg --context 5 'finishCurrentJobAsync' cvat-ui/src/components/annotation-page/top-bar/annotation-menu.tsx

# Extract lines from single-shape-sidebar.tsx
rg --context 5 'finishCurrentJobAsync' cvat-ui/src/components/annotation-page/single-shape-workspace/single-shape-sidebar/single-shape-sidebar.tsx

Length of output: 2082

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.

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 4ccc29d and 0056bba.

Files selected for processing (15)
  • changelog.d/20240701_131217_boris_immediate_feedback.md (1 hunks)
  • changelog.d/20240701_131317_boris_immediate_feedback.md (1 hunks)
  • changelog.d/20240701_131408_boris_immediate_feedback.md (1 hunks)
  • cvat-ui/src/actions/annotation-actions.ts (5 hunks)
  • cvat-ui/src/actions/plugins-actions.ts (3 hunks)
  • cvat-ui/src/components/annotation-page/annotations-actions/annotations-actions-modal.tsx (1 hunks)
  • cvat-ui/src/components/annotation-page/single-shape-workspace/single-shape-sidebar/single-shape-sidebar.tsx (7 hunks)
  • cvat-ui/src/components/annotation-page/top-bar/annotation-menu.tsx (4 hunks)
  • cvat-ui/src/components/job-item/job-actions-menu.tsx (4 hunks)
  • cvat-ui/src/components/job-item/job-item.tsx (6 hunks)
  • cvat-ui/src/components/job-item/styles.scss (2 hunks)
  • cvat-ui/src/components/plugins-entrypoint.tsx (4 hunks)
  • cvat-ui/src/reducers/index.ts (2 hunks)
  • cvat-ui/src/reducers/plugins-reducer.ts (6 hunks)
  • site/content/en/docs/manual/basics/CVAT-annotation-Interface/navbar.md (1 hunks)
Files not summarized due to errors (4)
  • cvat-ui/src/reducers/index.ts: Error: Server error. Please try again later.
  • changelog.d/20240701_131317_boris_immediate_feedback.md: Error: Server error. Please try again later.
  • cvat-ui/src/components/job-item/job-item.tsx: Error: Server error. Please try again later.
  • cvat-ui/src/components/annotation-page/single-shape-workspace/single-shape-sidebar/single-shape-sidebar.tsx: Error: Server error. Please try again later.
Files skipped from review due to trivial changes (2)
  • changelog.d/20240701_131217_boris_immediate_feedback.md
  • cvat-ui/src/components/job-item/job-actions-menu.tsx
Additional context used
LanguageTool
site/content/en/docs/manual/basics/CVAT-annotation-Interface/navbar.md

[uncategorized] ~32-~32: A punctuation mark might be missing here.
Context: ...m the tracks within the selected range.

                 ...

(AI_EN_LECTOR_MISSING_PUNCTUATION)


[style] ~35-~35: Consider an alternative to strengthen your wording.
Context: ...en finished, reviewed, and approved. No further changes are necessary.

    | | **Finish the jo...

    (CHANGES_ADJUSTMENTS)


    [uncategorized] ~56-~56: A punctuation mark might be missing here.
    Context: ...                                  | | Block

            | Used to pause ...

    (AI_EN_LECTOR_MISSING_PUNCTUATION)


    [uncategorized] ~69-~69: A punctuation mark might be missing here.
    Context: ...*/Go next buttons are customizable:



    To customize...

    (AI_EN_LECTOR_MISSING_PUNCTUATION)


    [uncategorized] ~72-~72: You might be missing the article “the” here.
    Context: ...      | Click to delete current frame.                                 ...

    (AI_EN_LECTOR_MISSING_DETERMINER_THE)


    [uncategorized] ~83-~83: A punctuation mark might be missing here.
    Context: ...3_2.png)     | Open the job info.



    Overview:<u...

    (AI_EN_LECTOR_MISSING_PUNCTUATION)


    [typographical] ~83-~83: Unpaired symbol: ‘"’ seems to be missing
    Context: .... For more information, see Manual QA

  • Start frame - the number o...

    (EN_UNPAIRED_QUOTES)


    [uncategorized] ~84-~84: A punctuation mark might be missing here.
    Context: ...nual and interpolated frames. | | Filters

      | Switches o...

    (AI_EN_LECTOR_MISSING_PUNCTUATION)


    [uncategorized] ~85-~85: A punctuation mark might be missing here.
    Context: ...thc between different annotation modes:



    Overview:

      <l...

      (AI_EN_LECTOR_MISSING_PUNCTUATION)


      [uncategorized] ~85-~85: A punctuation mark might be missing here.
      Context: ...li>

    • Attribute -- annotation with [Attributes](docs/manual/advanced/attri...

      (AI_EN_LECTOR_MISSING_PUNCTUATION)

Additional comments not posted (27)
changelog.d/20240701_131408_boris_immediate_feedback.md (1)

1-4: Changelog entry is clear and concise.

The changelog entry effectively communicates the new feature and provides a relevant link to the pull request.

changelog.d/20240701_131317_boris_immediate_feedback.md (1)

1-4: Changelog entry is clear and concise.

The changelog entry effectively communicates the change in behavior of the "Finish the job" button and provides a relevant link to the pull request.

cvat-ui/src/components/job-item/styles.scss (2)

13-15: Styling changes for .cvat-job-item-issues-summary-icon look good.

The margin adjustment is clear and maintains consistency with the rest of the styling.


35-43: Styling changes for .cvat-job-item-select look good.

The width settings and margin adjustments are clear and maintain consistency with the rest of the styling.

cvat-ui/src/actions/plugins-actions.ts (3)

2-2: Updated copyright information.

The copyright information has been updated to include 2023-2024.


20-21: Added new action types to PluginsActionTypes.

The new action types ADD_UI_CALLBACK and REMOVE_UI_CALLBACK are added to the enum.


44-51: Added new action creators to pluginActions.

The new action creators addUICallback and removeUICallback are added to the pluginActions object.

cvat-ui/src/components/plugins-entrypoint.tsx (2)

37-42: LGTM! Deprecated actions are clearly marked.

The deprecated actions REGISTER_ACTION and REMOVE_ACTION are clearly marked, ensuring future maintainability.


12-13: Verify the correctness of new action creators usage.

Ensure that addUICallback and removeUICallback are correctly defined and used in the codebase.

Verification successful

Verified the correctness of new action creators usage.

The action creators addUICallback and removeUICallback are correctly defined and used in the codebase.

  • plugins-actions.ts:

    • addUICallback: createAction(PluginsActionTypes.ADD_UI_CALLBACK, { path, callback })
    • removeUICallback: createAction(PluginsActionTypes.REMOVE_UI_CALLBACK, { path, callback })
  • plugins-entrypoint.tsx: Correctly references addUICallback and removeUICallback.

Scripts executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Verify the usage of new action creators.

# Test: Search for the new action creators definition and usage. Expect: Correct usage in the codebase.
rg --type-add 'ts' --files-with-matches $'addUICallback|removeUICallback'

Length of output: 132



Script:

#!/bin/bash
# Description: Verify the usage of new action creators.

# Correctly define TypeScript files and search for the new action creators definition and usage.
rg --type-add 'ts:*.ts' --type-add 'tsx:*.tsx' 'addUICallback|removeUICallback'

Length of output: 660



Script:

#!/bin/bash
# Extract the definitions of addUICallback and removeUICallback from plugins-actions.ts
ast-grep --lang ts --pattern $'const addUICallback = $_' cvat-ui/src/actions/plugins-actions.ts
ast-grep --lang ts --pattern $'const removeUICallback = $_' cvat-ui/src/actions/plugins-actions.ts

Length of output: 196



Script:

#!/bin/bash
# Search for function declarations and exports for addUICallback and removeUICallback in plugins-actions.ts
rg 'addUICallback|removeUICallback' cvat-ui/src/actions/plugins-actions.ts

Length of output: 121



Script:

#!/bin/bash
# Extract the surrounding context of addUICallback and removeUICallback in plugins-actions.ts
rg -C 5 'addUICallback|removeUICallback' cvat-ui/src/actions/plugins-actions.ts

Length of output: 669

cvat-ui/src/reducers/plugins-reducer.ts (2)

166-192: LGTM! New action types are handled correctly.

The new action types ADD_UI_CALLBACK and REMOVE_UI_CALLBACK are correctly handled by updating the callbacks state.


Line range hint 80-91: Verify the correctness of findContainerFromPath function.

Ensure that the findContainerFromPath function correctly locates the state segment based on the path.

Verification successful

The findContainerFromPath function is correctly defined and used within the cvat-ui/src/reducers/plugins-reducer.ts file. The function's implementation and its usage in updating the state segments for both 'components' and 'callbacks' appear to be correct.

  • Function Definition: cvat-ui/src/reducers/plugins-reducer.ts (lines 77-85)
  • Function Usage: cvat-ui/src/reducers/plugins-reducer.ts (multiple occurrences)
Scripts executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Verify the correctness of `findContainerFromPath` function.

# Test: Search for the function definition and usage. Expect: Correct implementation and usage in the codebase.
rg --type-add 'ts' --files-with-matches $'findContainerFromPath'

Length of output: 121



Script:

#!/bin/bash
# Description: Verify the correctness of `findContainerFromPath` function.

# Test: Search for the function definition and its usage in the codebase.
rg 'function findContainerFromPath'
rg 'findContainerFromPath('

Length of output: 317



Script:

#!/bin/bash
# Description: Verify the correctness of `findContainerFromPath` function.

# Test: Search for the function definition and its usage in the codebase.
rg 'findContainerFromPath\('

Length of output: 777

cvat-ui/src/components/annotation-page/top-bar/annotation-menu.tsx (2)

75-80: LGTM! User confirmation is handled correctly.

The changeJobState function correctly prompts the user to confirm the state change.


28-28: Verify the correctness of finishCurrentJobAsync action.

Ensure that the finishCurrentJobAsync action is correctly defined and used in the codebase.

Verification successful

Verify the correctness of finishCurrentJobAsync action.

The finishCurrentJobAsync action is correctly defined and used in the codebase.

  • Definition located in cvat-ui/src/actions/annotation-actions.ts.
  • Correctly used in annotation-menu.tsx and single-shape-sidebar.tsx.
Scripts executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Verify the usage of `finishCurrentJobAsync` action.

# Test: Search for the action definition and usage. Expect: Correct usage in the codebase.
rg --type-add 'ts' --files-with-matches $'finishCurrentJobAsync'

Length of output: 121



Script:

#!/bin/bash
# Description: Verify the usage of `finishCurrentJobAsync` action.

# Test: Search for the action definition and usage. Expect: Correct usage in the codebase.
rg 'finishCurrentJobAsync'

Length of output: 677



Script:

#!/bin/bash
# Extract the definition of `finishCurrentJobAsync`
ast-grep --lang typescript --pattern 'function finishCurrentJobAsync() { $$$ }' cvat-ui/src/actions/annotation-actions.ts

# Extract the usage of `finishCurrentJobAsync` in `annotation-menu.tsx`
rg 'finishCurrentJobAsync' -A 5 cvat-ui/src/components/annotation-page/top-bar/annotation-menu.tsx

# Extract the usage of `finishCurrentJobAsync` in `single-shape-sidebar.tsx`
rg 'finishCurrentJobAsync' -A 5 cvat-ui/src/components/annotation-page/single-shape-workspace/single-shape-sidebar/single-shape-sidebar.tsx

Length of output: 1314



Script:

#!/bin/bash
# Refine the search for the definition of `finishCurrentJobAsync`
ast-grep --lang typescript --pattern 'function finishCurrentJobAsync($_) { $$$ }' cvat-ui/src/actions/annotation-actions.ts
ast-grep --lang typescript --pattern 'const finishCurrentJobAsync = $_ => { $$$ }' cvat-ui/src/actions/annotation-actions.ts

Length of output: 252



Script:

#!/bin/bash
# Search for the definition of `finishCurrentJobAsync` in `annotation-actions.ts`
rg 'finishCurrentJobAsync' cvat-ui/src/actions/annotation-actions.ts -A 10 -B 10

Length of output: 672

cvat-ui/src/components/job-item/job-item.tsx (4)

Line range hint 43-43: LGTM! Handling of loading, error, and success states is correct.

The ReviewSummaryComponent correctly handles loading, error, and success states.


193-219: LGTM! Job state and stage are updated correctly.

The Select components correctly update the job state and stage.


Line range hint 41-41: Ensure issues are fetched correctly.

Verify that the issues are fetched correctly from the job instance.

Verification successful

Verify the fetching of issues correctly in ReviewSummaryComponent.

The ReviewSummaryComponent correctly fetches the issues related to a job instance using the useEffect hook and the useIsMounted hook to ensure the component is still mounted when setting the state. The fetching logic is implemented as expected.

  • The useIsMounted hook is correctly used to prevent state updates on unmounted components.
  • The issues method is called on jobInstance to fetch the issues.

Category:

Scripts executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Verify the fetching of issues in `ReviewSummaryComponent`.

# Test: Search for the `issues` method usage. Expect: Correct usage in the codebase.
rg --type-add 'ts' --files-with-matches $'issues'

Length of output: 106



Script:

#!/bin/bash
# Description: Verify the fetching of issues in `ReviewSummaryComponent`.

# Test: Search for the `issues` method usage. Expect: Correct usage in the codebase.
rg --type-add 'ts:*.ts' --files-with-matches 'issues'

Length of output: 5466



Script:

#!/bin/bash
# Description: Verify the usage of `useIsMounted` and `ReviewSummaryComponent` in `job-item.tsx`.

# Search for the implementation of `useIsMounted` in `job-item.tsx`
rg 'useIsMounted' cvat-ui/src/components/job-item/job-item.tsx

# Search for the usage of `ReviewSummaryComponent` in `job-item.tsx`
rg 'ReviewSummaryComponent' cvat-ui/src/components/job-item/job-item.tsx

Length of output: 410



Script:

#!/bin/bash
# Description: Verify the implementation of `useIsMounted` and `ReviewSummaryComponent`.

# Search for the implementation details of `useIsMounted`
rg 'useIsMounted' cvat-ui/src/utils/hooks.ts

# Search for the details of `ReviewSummaryComponent` in `job-item.tsx`
rg -A 10 'function ReviewSummaryComponent' cvat-ui/src/components/job-item/job-item.tsx

Length of output: 612


132-135: Verify the correctness of the tooltip.

Ensure that the tooltip correctly displays the review summary.

Verification successful

Verified the correctness of the tooltip.

The CVATTooltip correctly displays the ReviewSummaryComponent within job-item.tsx.

  • CVATTooltip usage found in cvat-ui/src/components/job-item/job-item.tsx:
    <CVATTooltip title={<ReviewSummaryComponent jobInstance={job} />}>
        <QuestionCircleOutlined />
    </CVATTooltip>
Scripts executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Verify the tooltip in `JobItem`.

# Test: Search for the tooltip usage. Expect: Correct usage in the codebase.
rg --type-add 'ts' --files-with-matches $'CVATTooltip'

Length of output: 111



Script:

#!/bin/bash
# Description: Verify the tooltip in `JobItem`.

# Test: Search for the tooltip usage. Expect: Correct usage in the codebase.
rg --type-add 'ts:*.ts' --type-add 'tsx:*.tsx' --files-with-matches 'CVATTooltip'

Length of output: 5119



Script:

#!/bin/bash
# Extract the relevant portion of `job-item.tsx` to verify the tooltip implementation.
rg -A 10 -B 10 'CVATTooltip' cvat-ui/src/components/job-item/job-item.tsx

Length of output: 2121

site/content/en/docs/manual/basics/CVAT-annotation-Interface/navbar.md (1)

36-36: Fix grammatical issue in the description.

The description should use "sets the job state to Completed" for clarity.

- Saves annotations and sets **job state** to **Completed**.
+ Saves annotations and sets the **job state** to **Completed**.
cvat-ui/src/reducers/index.ts (1)

279-287: Fix indentation for consistency.

The indentation for the nested structure callbacks is inconsistent with the rest of the code.

-    callbacks: {
-        annotationPage: {
-            header: {
-                menu: {
-                    beforeJobFinish: (() => Promise<void>)[];
-                };
-            };
-        };
-    };
+callbacks: {
+    annotationPage: {
+        header: {
+            menu: {
+                beforeJobFinish: (() => Promise<void>)[];
+            };
+        };
+    };
+};
cvat-ui/src/components/annotation-page/annotations-actions/annotations-actions-modal.tsx (3)

330-333: LGTM! The promise handling for saving annotations is correct.

The code change correctly updates the save operation to use promises.


Line range hint 336-339: LGTM! The button click handling for disabling auto-save is correct.

The code change correctly updates the auto-save operation to use a button click.


Line range hint 564-573: LGTM! The promise handling and error handling for running actions are correct.

The code change correctly updates the run operation to use promises and handle errors.

cvat-ui/src/components/annotation-page/single-shape-workspace/single-shape-sidebar/single-shape-sidebar.tsx (3)

22-26: LGTM! The new imports for annotation-related actions are correct.

The code change correctly adds new imports for annotation-related actions.


227-239: LGTM! The async/await handling for getNextFrame is correct.

The code change correctly updates the getNextFrame function to use async/await.


249-253: LGTM! The async handling and job finishing logic are correct.

The code change correctly updates the finishOnThisFrame function to handle job finishing asynchronously.

cvat-ui/src/actions/annotation-actions.ts (2)

Line range hint 1044-1082: LGTM!

The function saveAnnotationsAsync has been simplified by removing the afterSave callback parameter. The code changes are approved.


1084-1097: LGTM!

The function finishCurrentJobAsync handles job completion logic effectively, including saving annotations, executing callbacks, and updating the job state. The code changes are approved.

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.

Actionable comments posted: 2

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 4ccc29d and 0056bba.

Files selected for processing (15)
  • changelog.d/20240701_131217_boris_immediate_feedback.md (1 hunks)
  • changelog.d/20240701_131317_boris_immediate_feedback.md (1 hunks)
  • changelog.d/20240701_131408_boris_immediate_feedback.md (1 hunks)
  • cvat-ui/src/actions/annotation-actions.ts (5 hunks)
  • cvat-ui/src/actions/plugins-actions.ts (3 hunks)
  • cvat-ui/src/components/annotation-page/annotations-actions/annotations-actions-modal.tsx (1 hunks)
  • cvat-ui/src/components/annotation-page/single-shape-workspace/single-shape-sidebar/single-shape-sidebar.tsx (7 hunks)
  • cvat-ui/src/components/annotation-page/top-bar/annotation-menu.tsx (4 hunks)
  • cvat-ui/src/components/job-item/job-actions-menu.tsx (4 hunks)
  • cvat-ui/src/components/job-item/job-item.tsx (6 hunks)
  • cvat-ui/src/components/job-item/styles.scss (2 hunks)
  • cvat-ui/src/components/plugins-entrypoint.tsx (4 hunks)
  • cvat-ui/src/reducers/index.ts (2 hunks)
  • cvat-ui/src/reducers/plugins-reducer.ts (6 hunks)
  • site/content/en/docs/manual/basics/CVAT-annotation-Interface/navbar.md (1 hunks)
Files not summarized due to errors (4)
  • cvat-ui/src/components/annotation-page/annotations-actions/annotations-actions-modal.tsx: Error: Server error. Please try again later.
  • cvat-ui/src/components/annotation-page/single-shape-workspace/single-shape-sidebar/single-shape-sidebar.tsx: Error: Server error. Please try again later.
  • changelog.d/20240701_131317_boris_immediate_feedback.md: Error: Server error. Please try again later.
  • changelog.d/20240701_131217_boris_immediate_feedback.md: Error: Server error. Please try again later.
Files not reviewed due to errors (3)
  • cvat-ui/src/components/annotation-page/annotations-actions/annotations-actions-modal.tsx (Error: Server error. Please try again later.)
  • cvat-ui/src/components/annotation-page/single-shape-workspace/single-shape-sidebar/single-shape-sidebar.tsx (Error: Server error. Please try again later.)
  • cvat-ui/src/actions/annotation-actions.ts (Error: Server error. Please try again later.)
Additional context used
LanguageTool
site/content/en/docs/manual/basics/CVAT-annotation-Interface/navbar.md

[style] ~35-~35: Consider an alternative to strengthen your wording.
Context: ...en finished, reviewed, and approved. No further changes are necessary.

    | | **Finish the jo...

    (CHANGES_ADJUSTMENTS)


    [typographical] ~83-~83: Unpaired symbol: ‘"’ seems to be missing
    Context: .... For more information, see Manual QA

  • Start frame - the number o...

    (EN_UNPAIRED_QUOTES)

Additional comments not posted (21)
changelog.d/20240701_131217_boris_immediate_feedback.md (1)

1-4: Changelog entry accurately reflects the removal of the "Renew the job" button.

This entry is clear and provides a direct link to the PR for more context.

changelog.d/20240701_131408_boris_immediate_feedback.md (1)

1-4: Changelog entry accurately documents the ability to update job states from the task page.

This entry is clear and provides a direct link to the PR for more context.

changelog.d/20240701_131317_boris_immediate_feedback.md (1)

1-4: Changelog entry accurately documents the change in functionality for the "Finish the job" button.

This entry is clear and provides a direct link to the PR for more context.

cvat-ui/src/components/job-item/styles.scss (3)

13-15: New CSS class for job item issues summary icon.

The addition of a left margin for the .cvat-job-item-issues-summary-icon class aligns with the UI updates intended to improve visual spacing.


35-43: Adjustments to select width and margin in job item selects.

The changes to the width and margin settings for .cvat-job-item-select and .ant-select are consistent with UI improvements for better layout management.


46-46: Margin adjustment for job item selects.

The addition of right margin to .cvat-job-item-select:not(:last-child) improves spacing between elements, enhancing the overall UI.

cvat-ui/src/actions/plugins-actions.ts (2)

20-21: Enum additions look good.

The new ADD_UI_CALLBACK and REMOVE_UI_CALLBACK entries align with the new functionality for UI callbacks.


44-51: Action creators look good.

The new addUICallback and removeUICallback functions follow the established pattern for action creators.

cvat-ui/src/components/job-item/job-actions-menu.tsx (2)

11-11: Import additions look good.

The addition of Job and JobType from cvat-core-wrapper is necessary for the functionality of the JobActionsMenu component.


Line range hint 16-16: Interface update looks good.

The removal of onJobUpdate from the Props interface indicates that job updates are handled elsewhere.

cvat-ui/src/components/plugins-entrypoint.tsx (2)

19-23: Type additions look good.

The new addUICallback and removeUICallback entries in PluginActionCreators are consistent with the new functionality for UI callbacks.


33-46: Type update looks good.

The addition of the store parameter to ComponentBuilder allows access to the Redux store, which is useful for managing state.

cvat-ui/src/reducers/plugins-reducer.ts (3)

17-25: State update looks good.

The addition of the callbacks section to defaultState is necessary for managing UI callbacks.


Line range hint 80-91: Function update looks good.

The addition of the prefix parameter to findContainerFromPath allows the function to handle both components and callbacks.


166-191: Reducer cases look good.

The new cases for ADD_UI_CALLBACK and REMOVE_UI_CALLBACK are necessary for managing the addition and removal of UI callbacks.

cvat-ui/src/components/annotation-page/top-bar/annotation-menu.tsx (1)

28-28: LGTM!

The changes correctly implement the new finishCurrentJobAsync action and update the menu item for finishing the job.

Also applies to: 55-56, 222-235

cvat-ui/src/components/job-item/job-item.tsx (2)

193-219: LGTM!

The new state selection dropdown correctly uses the JobState enum and updates the job state.


126-135: LGTM!

The layout and styling updates, including the new CSS class for the issues summary icon, improve the component's layout.

site/content/en/docs/manual/basics/CVAT-annotation-Interface/navbar.md (1)

36-36: LGTM!

The documentation updates correctly describe the new job finishing actions and job state changes.

cvat-ui/src/reducers/index.ts (2)

279-287: LGTM!

The new callback sections for the annotation page are correctly structured and integrated into the state.


Line range hint 291-336: LGTM!

The refactoring of the components section with corrected array syntax and nesting adjustments improves the readability and maintainability of the code.

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.

Actionable comments posted: 13

Outside diff range and nitpick comments (2)
cvat-ui/src/components/job-item/job-actions-menu.tsx (1)

Line range hint 22-60: Add missing dependency in the useCallback hook.

The useCallback hook should include dispatch in its dependency array to ensure it is correctly memoized.

- }, [job]);
+ }, [job, dispatch]);
cvat-ui/src/components/job-item/job-item.tsx (1)

Line range hint 83-83: Fix unpaired symbol.

There is an unpaired double quote in the Manual QA link.

- For more information, see [**Manual QA**](/docs/manual/advanced/analytics-and-monitoring/manual-qa")
+ For more information, see [**Manual QA**](/docs/manual/advanced/analytics-and-monitoring/manual-qa)
Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 4ccc29d and 0056bba.

Files selected for processing (15)
  • changelog.d/20240701_131217_boris_immediate_feedback.md (1 hunks)
  • changelog.d/20240701_131317_boris_immediate_feedback.md (1 hunks)
  • changelog.d/20240701_131408_boris_immediate_feedback.md (1 hunks)
  • cvat-ui/src/actions/annotation-actions.ts (5 hunks)
  • cvat-ui/src/actions/plugins-actions.ts (3 hunks)
  • cvat-ui/src/components/annotation-page/annotations-actions/annotations-actions-modal.tsx (1 hunks)
  • cvat-ui/src/components/annotation-page/single-shape-workspace/single-shape-sidebar/single-shape-sidebar.tsx (7 hunks)
  • cvat-ui/src/components/annotation-page/top-bar/annotation-menu.tsx (4 hunks)
  • cvat-ui/src/components/job-item/job-actions-menu.tsx (4 hunks)
  • cvat-ui/src/components/job-item/job-item.tsx (6 hunks)
  • cvat-ui/src/components/job-item/styles.scss (2 hunks)
  • cvat-ui/src/components/plugins-entrypoint.tsx (4 hunks)
  • cvat-ui/src/reducers/index.ts (2 hunks)
  • cvat-ui/src/reducers/plugins-reducer.ts (6 hunks)
  • site/content/en/docs/manual/basics/CVAT-annotation-Interface/navbar.md (1 hunks)
Files not summarized due to errors (7)
  • changelog.d/20240701_131217_boris_immediate_feedback.md: Error: Server error. Please try again later.
  • cvat-ui/src/reducers/plugins-reducer.ts: Error: Server error. Please try again later.
  • cvat-ui/src/actions/annotation-actions.ts: Error: Server error. Please try again later.
  • cvat-ui/src/components/job-item/styles.scss: Error: Server error. Please try again later.
  • cvat-ui/src/actions/plugins-actions.ts: Error: Server error. Please try again later.
  • changelog.d/20240701_131317_boris_immediate_feedback.md: Error: Server error. Please try again later.
  • changelog.d/20240701_131408_boris_immediate_feedback.md: Error: Server error. Please try again later.
Additional context used
LanguageTool
site/content/en/docs/manual/basics/CVAT-annotation-Interface/navbar.md

[uncategorized] ~32-~32: A punctuation mark might be missing here.
Context: ...m the tracks within the selected range.

                 ...

(AI_EN_LECTOR_MISSING_PUNCTUATION)


[style] ~35-~35: Consider an alternative to strengthen your wording.
Context: ...en finished, reviewed, and approved. No further changes are necessary.

    | | **Finish the jo...

    (CHANGES_ADJUSTMENTS)


    [uncategorized] ~56-~56: A punctuation mark might be missing here.
    Context: ...                                  | | Block

            | Used to pause ...

    (AI_EN_LECTOR_MISSING_PUNCTUATION)


    [uncategorized] ~69-~69: A punctuation mark might be missing here.
    Context: ...*/Go next buttons are customizable:



    To customize...

    (AI_EN_LECTOR_MISSING_PUNCTUATION)


    [uncategorized] ~72-~72: You might be missing the article “the” here.
    Context: ...      | Click to delete current frame.                                 ...

    (AI_EN_LECTOR_MISSING_DETERMINER_THE)


    [uncategorized] ~83-~83: A punctuation mark might be missing here.
    Context: ...3_2.png)     | Open the job info.



    Overview:<u...

    (AI_EN_LECTOR_MISSING_PUNCTUATION)


    [typographical] ~83-~83: Unpaired symbol: ‘"’ seems to be missing
    Context: .... For more information, see Manual QA

  • Start frame - the number o...

    (EN_UNPAIRED_QUOTES)


    [uncategorized] ~84-~84: A punctuation mark might be missing here.
    Context: ...nual and interpolated frames. | | Filters

      | Switches o...

    (AI_EN_LECTOR_MISSING_PUNCTUATION)


    [uncategorized] ~85-~85: A punctuation mark might be missing here.
    Context: ...thc between different annotation modes:



    Overview:

      <l...

      (AI_EN_LECTOR_MISSING_PUNCTUATION)


      [uncategorized] ~85-~85: A punctuation mark might be missing here.
      Context: ...li>

    • Attribute -- annotation with [Attributes](docs/manual/advanced/attri...

      (AI_EN_LECTOR_MISSING_PUNCTUATION)

Additional comments not posted (28)
changelog.d/20240701_131217_boris_immediate_feedback.md (1)

1-4: Changelog entry is clear and well-documented.

The entry correctly notes the removal of a feature with an appropriate link to the PR for context.

changelog.d/20240701_131408_boris_immediate_feedback.md (1)

1-4: Changelog entry is clear and well-documented.

The entry correctly notes the addition of a feature with an appropriate link to the PR for context.

changelog.d/20240701_131317_boris_immediate_feedback.md (1)

1-4: Changelog entry is clear and well-documented.

The entry correctly notes a change in functionality with an appropriate link to the PR for context.

cvat-ui/src/components/job-item/styles.scss (2)

13-15: Style adjustment is appropriate.

Setting the margin-left ensures consistent spacing and alignment with other elements.


35-37: Style adjustments are consistent and enhance UI uniformity.

Width and margin settings for select elements have been standardized, which improves layout consistency and user experience.

Also applies to: 41-43, 46-46

cvat-ui/src/actions/plugins-actions.ts (2)

20-21: Add documentation for new action types.

Consider adding comments to describe the purpose of ADD_UI_CALLBACK and REMOVE_UI_CALLBACK action types.

// Action type for adding a UI callback
ADD_UI_CALLBACK = 'ADD_UI_CALLBACK',
// Action type for removing a UI callback
REMOVE_UI_CALLBACK = 'REMOVE_UI_CALLBACK',

44-51: Add documentation for new UI callback actions.

Consider adding comments to describe the purpose and usage of addUICallback and removeUICallback actions.

/**
 * Action to add a UI callback
 * @param path - The path where the callback should be added
 * @param callback - The callback function to be added
 */
addUICallback: (
    path: string,
    callback: CallableFunction,
) => createAction(PluginsActionTypes.ADD_UI_CALLBACK, { path, callback }),

/**
 * Action to remove a UI callback
 * @param path - The path where the callback should be removed
 * @param callback - The callback function to be removed
 */
removeUICallback: (
    path: string,
    callback: CallableFunction,
) => createAction(PluginsActionTypes.REMOVE_UI_CALLBACK, { path, callback }),
cvat-ui/src/components/job-item/job-actions-menu.tsx (2)

22-22: Avoid object destructuring directly in the function body.

Destructure the props object directly in the function parameters for better readability.

- function JobActionsMenu(props: Props): JSX.Element {
-     const { job } = props;
+ function JobActionsMenu({ job, onJobUpdate }: Props): JSX.Element {

22-24: Ensure consistent use of hooks.

Ensure that useDispatch and useHistory hooks are used consistently and imported from the correct sources.

const history = useHistory(); // Ensure imported from 'react-router'
const dispatch = useDispatch(); // Ensure imported from 'react-redux'
cvat-ui/src/components/plugins-entrypoint.tsx (2)

1-1: Update copyright notice.

Ensure the copyright notice covers the correct range of years.

- // Copyright (C) 2023-2024 CVAT.ai Corporation
+ // Copyright (C) 2023-2024 CVAT.ai Corporation

33-46: Deprecation warnings.

Consider adding explanations for the deprecated actions to guide developers towards the preferred methods.

/**
 * @deprecated Please, use actionCreators.addUIComponent instead
 * Reason: The new method provides better flexibility and maintainability.
 */
REGISTER_ACTION: PluginsActionTypes.ADD_UI_COMPONENT,

/**
 * @deprecated Please, use actionCreators.removeUIComponent instead
 * Reason: The new method provides better flexibility and maintainability.
 */
REMOVE_ACTION: PluginsActionTypes.REMOVE_UI_COMPONENT,
cvat-ui/src/reducers/plugins-reducer.ts (3)

17-25: Add documentation for callbacks structure.

Consider adding comments to describe the structure and purpose of the callbacks object.

callbacks: {
    annotationPage: {
        header: {
            menu: {
                beforeJobFinish: [], // Callbacks to be executed before job finish
            },
        },
    },
},

Line range hint 80-93: Clarify error messages.

Improve the error messages to provide more context about the issue.

- throw new Error('The specified plugins path is not supported by the core application');
+ throw new Error(`The specified plugins path "${path}" is not supported by the core application`);

- throw new Error('Could not add plugin component. Target path is not array');
+ throw new Error(`Could not add plugin component. Target path "${path}" is not an array`);

178-191: Combine state updates in REMOVE_UI_CALLBACK action.

Combine the state updates to avoid unnecessary spread operations.

case PluginsActionTypes.REMOVE_UI_CALLBACK: {
    const { path, callback } = action.payload;
    const updatedState = {
        ...state,
        callbacks: { ...state.callbacks },
    };

    const container = findContainerFromPath(path, updatedState, 'callbacks') as CallableFunction[];
    const index = container.findIndex((_callback) => _callback === callback);
    if (index !== -1) {
        container.splice(index, 1);
    }

    return updatedState;
}

Likely invalid or redundant comment.

site/content/en/docs/manual/basics/CVAT-annotation-Interface/navbar.md (8)

Line range hint 32-32: Add a punctuation mark.

A punctuation mark might be missing after the sentence.

- Delete only keyframes from the tracks within the selected range. <br><br><center>![](/images/image229.png)</center>
+ Delete only keyframes from the tracks within the selected range. <br><br><center>![](/images/image229.png)</center>.
Tools
LanguageTool

[style] ~35-~35: Consider an alternative to strengthen your wording.
Context: ...en finished, reviewed, and approved. No further changes are necessary.

    | | **Finish the jo...

    (CHANGES_ADJUSTMENTS)


35-35: Strengthen wording for job state changes.

Consider using stronger wording to describe the job state changes.

- No further changes are necessary.
+ No further changes are required.
Tools
LanguageTool

[style] ~35-~35: Consider an alternative to strengthen your wording.
Context: ...en finished, reviewed, and approved. No further changes are necessary.

    | | **Finish the jo...

    (CHANGES_ADJUSTMENTS)


Line range hint 56-56: Add a punctuation mark.

A punctuation mark might be missing after the sentence.

- Used to pause automatic line creation when drawing a polygon with {{< ilink "/docs/manual/advanced/ai-tools#opencv-intelligent-scissors" "OpenCV Intelligent scissors" >}}. Also used to postpone server requests when creating an object using {{< ilink "/docs/manual/advanced/ai-tools" "AI Tools" >}}.
+ Used to pause automatic line creation when drawing a polygon with {{< ilink "/docs/manual/advanced/ai-tools#opencv-intelligent-scissors" "OpenCV Intelligent scissors" >}}. Also used to postpone server requests when creating an object using {{< ilink "/docs/manual/advanced/ai-tools" "AI Tools" >}}.
Tools
LanguageTool

[style] ~35-~35: Consider an alternative to strengthen your wording.
Context: ...en finished, reviewed, and approved. No further changes are necessary.

    | | **Finish the jo...

    (CHANGES_ADJUSTMENTS)


Line range hint 69-69: Add a punctuation mark.

A punctuation mark might be missing after the sentence.

- **Go back**/**Go next** buttons are customizable: <br><br>![](/images/go_back_custom.png)<br><br>To customize, right-click on the button and select one of three options (left to right): <ol><li>The default setting moves to the next or previous frame (step size is 1 frame).</li><li>Move to the next or previous frame that contains objects (e.g., filtered). For more information, refer to [Filters](/docs/manual/advanced/filter).</li><li>Move to the next or previous frame without annotations. Use this option to quickly locate missed frames.</li></ol>.
+ **Go back**/**Go next** buttons are customizable: <br><br>![](/images/go_back_custom.png)<br><br>To customize, right-click on the button and select one of three options (left to right): <ol><li>The default setting moves to the next or previous frame (step size is 1 frame).</li><li>Move to the next or previous frame that contains objects (e.g., filtered). For more information, refer to [Filters](/docs/manual/advanced/filter).</li><li>Move to the next or previous frame without annotations. Use this option to quickly locate missed frames.</li></ol>.
Tools
LanguageTool

[style] ~35-~35: Consider an alternative to strengthen your wording.
Context: ...en finished, reviewed, and approved. No further changes are necessary.

    | | **Finish the jo...

    (CHANGES_ADJUSTMENTS)


Line range hint 72-72: Add the missing article "the".

The article "the" seems to be missing before "current frame".

- Click to delete current frame.
+ Click to delete the current frame.
Tools
LanguageTool

[style] ~35-~35: Consider an alternative to strengthen your wording.
Context: ...en finished, reviewed, and approved. No further changes are necessary.

    | | **Finish the jo...

    (CHANGES_ADJUSTMENTS)


Line range hint 83-83: Add a punctuation mark.

A punctuation mark might be missing after the sentence.

- Open the job info. <br><br>![](/images/image144_detrac.png)<br><br>Overview:<ul><li>**Assignee** - the individual to whom the job is assigned.</li> <li>**Reviewer**– the user tasked with conducting the review. For more information, see [**Manual QA**](/docs/manual/advanced/analytics-and-monitoring/manual-qa")</li><li>**Start frame** - the number of the first frame in this job.</li><li>**Stop frame** - the number of the last frame in this job.</li><li>**Frames** - the total number of frames in the job.</li></ul><br>**Annotations Statistics** table displays the number of created shapes, categorized by labels (e.g., vehicle, person) and the type of annotation (shape, track), as well as the count of manual and interpolated frames.
+ Open the job info. <br><br>![](/images/image144_detrac.png)<br><br>Overview:<ul><li>**Assignee** - the individual to whom the job is assigned.</li> <li>**Reviewer**– the user tasked with conducting the review. For more information, see [**Manual QA**](/docs/manual/advanced/analytics-and-monitoring/manual-qa)</li><li>**Start frame** - the number of the first frame in this job.</li><li>**Stop frame** - the number of the last frame in this job.</li><li>**Frames** - the total number of frames in the job.</li></ul><br>**Annotations Statistics** table displays the number of created shapes, categorized by labels (e.g., vehicle, person) and the type of annotation (shape, track), as well as the count of manual and interpolated frames.
Tools
LanguageTool

[style] ~35-~35: Consider an alternative to strengthen your wording.
Context: ...en finished, reviewed, and approved. No further changes are necessary.

    | | **Finish the jo...

    (CHANGES_ADJUSTMENTS)


Line range hint 84-84: Add a punctuation mark.

A punctuation mark might be missing after the sentence.

- Switches on [**Filters**](/docs/manual/advanced/filter/).
+ Switches on [**Filters**](/docs/manual/advanced/filter/).
Tools
LanguageTool

[style] ~35-~35: Consider an alternative to strengthen your wording.
Context: ...en finished, reviewed, and approved. No further changes are necessary.

    | | **Finish the jo...

    (CHANGES_ADJUSTMENTS)


Line range hint 85-85: Add a punctuation mark.

A punctuation mark might be missing after the sentence.

- The drop-down list to swithc between different annotation modes: <br><br>![](/images/ui-swithcer.png)<br><br>Overview:<ul><li>**Standart** -- default mode.</li><li>**Attribute** -- annotation with [**Attributes**](docs/manual/advanced/attribute-annotation-mode-advanced/)</li><li>**Single Shape** -- [**Single shape**](/docs/manual/advanced/single-shape/) annotation mode.</li><li>**Tag annotation**- annotation with [Tags](/docs/manual/advanced/annotation-with-tags/)</li><li>**Review** -- [**Manual QA**](/manual/advanced/analytics-and-monitoring/manual-qa/) mode.
+ The drop-down list to switch between different annotation modes: <br><br>![](/images/ui-switcher.png)<br><br>Overview:<ul><li>**Standard** -- default mode.</li><li>**Attribute** -- annotation with [**Attributes**](docs/manual/advanced/attribute-annotation-mode-advanced/)</li><li>**Single Shape** -- [**Single shape**](/docs/manual/advanced/single-shape/) annotation mode.</li><li>**Tag annotation**- annotation with [Tags](/docs/manual/advanced/annotation-with-tags/)</li><li>**Review** -- [**Manual QA**](/manual/advanced/analytics-and-monitoring/manual-qa/) mode.
Tools
LanguageTool

[style] ~35-~35: Consider an alternative to strengthen your wording.
Context: ...en finished, reviewed, and approved. No further changes are necessary.

    | | **Finish the jo...

    (CHANGES_ADJUSTMENTS)

cvat-ui/src/reducers/index.ts (1)

279-287: Ensure callback hooks are properly documented.

Consider adding comments to document the purpose and usage of the new callback hooks in the PluginsState interface.

- annotationPage: {
-     header: {
-         menu: {
-             beforeJobFinish: (() => Promise<void>)[];
-         };
-     };
- };
+ annotationPage: {
+     header: {
+         // Callbacks to be executed before finishing a job
+         menu: {
+             beforeJobFinish: (() => Promise<void>)[];
+         };
+     };
+ };
cvat-ui/src/components/annotation-page/single-shape-workspace/single-shape-sidebar/single-shape-sidebar.tsx (4)

22-22: Remove unused import.

The Job import is unused and can be safely removed to clean up the code.

- import { Job, Label, LabelType } from 'cvat-core-wrapper';
+ import { Label, LabelType } from 'cvat-core-wrapper';

522-522: Fix typographical error in function name.

The function name switchAutoNextFrame should be camelCase to maintain consistency with other function names.

- dispatch(actionCreators.switchAutoNextFrame(!state.autoNextFrame));
+ dispatch(actionCreators.switchAutoNextFrame(!state.autoNextFrame));

Likely invalid or redundant comment.


68-69: Fix typographical error in function name.

The function name switchAutoNextFrame should be camelCase to maintain consistency with other function names.

- switchAutoNextFrame: (autoNextFrame: boolean) => (
+ switchAutoNextFrame: (autoNextFrame: boolean) => (

Likely invalid or redundant comment.


120-120: Fix typographical error in action type.

The action type SWITCH_AUTO_NEXT_FRAME should be in uppercase to maintain consistency with other action types.

- SWITCH_AUTO_NEXT_FRAME: 'SWITCH_AUTO_NEXT_FRAME',
+ SWITCH_AUTO_NEXT_FRAME: 'SWITCH_AUTO_NEXT_FRAME',

Likely invalid or redundant comment.

cvat-ui/src/actions/annotation-actions.ts (1)

14-15: Remove unused import.

The JobState import is unused and can be safely removed to clean up the code.

- import { getCore, MLModel, JobType, Job, QualityConflict, ObjectState, JobState } from 'cvat-core-wrapper';
+ import { getCore, MLModel, JobType, Job, QualityConflict, ObjectState } from 'cvat-core-wrapper';

Comment on lines +222 to +235
menuItems.push({
key: Actions.FINISH_JOB,
label: 'Finish the job',
onClick: () => {
Modal.confirm({
title: 'Would you like to finish the job?',
content: 'It will save annotations and set the job state to "completed"',
okText: 'Continue',
cancelText: 'Cancel',
className: 'cvat-modal-content-finish-job',
onOk: finishJob,
});
},
});
Copy link
Contributor

Choose a reason for hiding this comment

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

Add a success message after finishing the job.

Consider adding a success message after the job is successfully finished to improve user feedback.

- onOk: finishJob,
+ onOk: () => {
+     finishJob().then(() => {
+         message.success('Job finished successfully', 2);
+     });
+ },
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. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
menuItems.push({
key: Actions.FINISH_JOB,
label: 'Finish the job',
onClick: () => {
Modal.confirm({
title: 'Would you like to finish the job?',
content: 'It will save annotations and set the job state to "completed"',
okText: 'Continue',
cancelText: 'Cancel',
className: 'cvat-modal-content-finish-job',
onOk: finishJob,
});
},
});
menuItems.push({
key: Actions.FINISH_JOB,
label: 'Finish the job',
onClick: () => {
Modal.confirm({
title: 'Would you like to finish the job?',
content: 'It will save annotations and set the job state to "completed"',
okText: 'Continue',
cancelText: 'Cancel',
className: 'cvat-modal-content-finish-job',
onOk: () => {
finishJob().then(() => {
message.success('Job finished successfully', 2);
});
},
});
},
});

cvat-ui/src/components/job-item/job-item.tsx Show resolved Hide resolved
cvat-ui/src/components/plugins-entrypoint.tsx Show resolved Hide resolved
cvat-ui/src/reducers/plugins-reducer.ts Show resolved Hide resolved
cvat-ui/src/actions/annotation-actions.ts Show resolved Hide resolved
Comment on lines +1078 to +1082

throw error;
}
};
}
Copy link
Contributor

Choose a reason for hiding this comment

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

Ensure proper error handling for async actions.

The async action saveAnnotationsAsync should have proper error handling to account for any potential issues that may arise during the save process.

- dispatch({
-     type: AnnotationActionTypes.SAVE_ANNOTATIONS_FAILED,
-     payload: {
-         error,
-     },
- });
+ dispatch({
+     type: AnnotationActionTypes.SAVE_ANNOTATIONS_FAILED,
+     payload: {
+         error,
+     },
+ });
+ throw error;
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. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
throw error;
}
};
}
dispatch({
type: AnnotationActionTypes.SAVE_ANNOTATIONS_FAILED,
payload: {
error,
},
});
throw error;

cvat-ui/src/actions/annotation-actions.ts Show resolved Hide resolved
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.

Actionable comments posted: 5

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 4ccc29d and 0056bba.

Files selected for processing (15)
  • changelog.d/20240701_131217_boris_immediate_feedback.md (1 hunks)
  • changelog.d/20240701_131317_boris_immediate_feedback.md (1 hunks)
  • changelog.d/20240701_131408_boris_immediate_feedback.md (1 hunks)
  • cvat-ui/src/actions/annotation-actions.ts (5 hunks)
  • cvat-ui/src/actions/plugins-actions.ts (3 hunks)
  • cvat-ui/src/components/annotation-page/annotations-actions/annotations-actions-modal.tsx (1 hunks)
  • cvat-ui/src/components/annotation-page/single-shape-workspace/single-shape-sidebar/single-shape-sidebar.tsx (7 hunks)
  • cvat-ui/src/components/annotation-page/top-bar/annotation-menu.tsx (4 hunks)
  • cvat-ui/src/components/job-item/job-actions-menu.tsx (4 hunks)
  • cvat-ui/src/components/job-item/job-item.tsx (6 hunks)
  • cvat-ui/src/components/job-item/styles.scss (2 hunks)
  • cvat-ui/src/components/plugins-entrypoint.tsx (4 hunks)
  • cvat-ui/src/reducers/index.ts (2 hunks)
  • cvat-ui/src/reducers/plugins-reducer.ts (6 hunks)
  • site/content/en/docs/manual/basics/CVAT-annotation-Interface/navbar.md (1 hunks)
Files not summarized due to errors (2)
  • cvat-ui/src/components/job-item/job-actions-menu.tsx: Error: Server error. Please try again later.
  • site/content/en/docs/manual/basics/CVAT-annotation-Interface/navbar.md: Error: Server error. Please try again later.
Files skipped from review due to trivial changes (2)
  • changelog.d/20240701_131217_boris_immediate_feedback.md
  • changelog.d/20240701_131317_boris_immediate_feedback.md
Additional context used
LanguageTool
site/content/en/docs/manual/basics/CVAT-annotation-Interface/navbar.md

[uncategorized] ~32-~32: A punctuation mark might be missing here.
Context: ...m the tracks within the selected range.

                 ...

(AI_EN_LECTOR_MISSING_PUNCTUATION)


[style] ~35-~35: Consider an alternative to strengthen your wording.
Context: ...en finished, reviewed, and approved. No further changes are necessary.

    | | **Finish the jo...

    (CHANGES_ADJUSTMENTS)


    [uncategorized] ~56-~56: A punctuation mark might be missing here.
    Context: ...                                  | | Block

            | Used to pause ...

    (AI_EN_LECTOR_MISSING_PUNCTUATION)


    [uncategorized] ~69-~69: A punctuation mark might be missing here.
    Context: ...*/Go next buttons are customizable:



    To customize...

    (AI_EN_LECTOR_MISSING_PUNCTUATION)


    [uncategorized] ~72-~72: You might be missing the article “the” here.
    Context: ...      | Click to delete current frame.                                 ...

    (AI_EN_LECTOR_MISSING_DETERMINER_THE)


    [uncategorized] ~83-~83: A punctuation mark might be missing here.
    Context: ...3_2.png)     | Open the job info.



    Overview:<u...

    (AI_EN_LECTOR_MISSING_PUNCTUATION)


    [typographical] ~83-~83: Unpaired symbol: ‘"’ seems to be missing
    Context: .... For more information, see Manual QA

  • Start frame - the number o...

    (EN_UNPAIRED_QUOTES)


    [uncategorized] ~84-~84: A punctuation mark might be missing here.
    Context: ...nual and interpolated frames. | | Filters

      | Switches o...

    (AI_EN_LECTOR_MISSING_PUNCTUATION)


    [uncategorized] ~85-~85: A punctuation mark might be missing here.
    Context: ...thc between different annotation modes:



    Overview:

      <l...

      (AI_EN_LECTOR_MISSING_PUNCTUATION)


      [uncategorized] ~85-~85: A punctuation mark might be missing here.
      Context: ...li>

    • Attribute -- annotation with [Attributes](docs/manual/advanced/attri...

      (AI_EN_LECTOR_MISSING_PUNCTUATION)

Additional comments not posted (31)
changelog.d/20240701_131408_boris_immediate_feedback.md (1)

1-4: Enhance the changelog entry with more details.

The changelog entry is clear but could benefit from more details about the feature, such as how to access it or any user interface changes.

### Added

- User now may update a job state from the corresponding task page
- Added UI elements to facilitate job state updates
(<https://github.com/cvat-ai/cvat/pull/8102>)
cvat-ui/src/components/job-item/styles.scss (1)

13-15: LGTM! Verify consistency with the rest of the application.

The new styles for job item issues summary icons and select elements look good. Ensure that these styles are consistent with the rest of the application.

Also applies to: 35-43, 46-46

Verification successful

LGTM! Verify consistency with the rest of the application.

The new styles for job item issues summary icons and select elements look good. The styles are defined and used within the job item component, ensuring consistency within this part of the application.

Scripts executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Verify the consistency of new styles with the rest of the application.

# Test: Search for the usage of the new styles. Expect: Consistent styling across the application.
rg --type scss $'.cvat-job-item-issues-summary-icon'
rg --type scss $'.cvat-job-item-select'

Length of output: 148



Script:

#!/bin/bash
# Description: Verify the consistency of new styles with the rest of the application.

# Test: Search for the usage of the new styles within all SCSS files. Expect: Consistent styling across the application.
rg '\.cvat-job-item-issues-summary-icon' --glob '*.scss'
rg '\.cvat-job-item-select' --glob '*.scss'

Length of output: 431

cvat-ui/src/actions/plugins-actions.ts (1)

20-21: LGTM! Verify the usage of new actions in the application.

The new actions for adding and removing UI callbacks are well-defined. Ensure that these actions are used correctly in the application.

Also applies to: 44-51

Verification successful

LGTM! Verify the usage of new actions in the application.

The new actions for adding and removing UI callbacks are well-defined and used correctly in cvat-ui/src/components/plugins-entrypoint.tsx. Ensure that these actions are used correctly in the application.

  • cvat-ui/src/components/plugins-entrypoint.tsx: Correct usage of addUICallback and removeUICallback.
  • cvat-ui/src/actions/plugins-actions.ts: Definitions of addUICallback and removeUICallback.
Scripts executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Verify the usage of new actions for adding and removing UI callbacks.

# Test: Search for the usage of the new actions. Expect: Correct usage across the application.
rg --type typescript $'addUICallback'
rg --type typescript $'removeUICallback'

Length of output: 146



Script:

#!/bin/bash
# Description: Verify the usage of new actions for adding and removing UI callbacks.

# Test: Search for the usage of the new actions. Expect: Correct usage across the application.
rg 'addUICallback'
rg 'removeUICallback'

Length of output: 619

cvat-ui/src/components/job-item/job-actions-menu.tsx (1)

11-11: LGTM! Verify the functionality and integration of the component.

The JobActionsMenu component is well-structured. Ensure that the component works correctly and integrates well with the rest of the application.

Also applies to: 22-22

Verification successful

LGTM! Verify the functionality and integration of the component.

The JobActionsMenu component is well-structured. Ensure that the component works correctly and integrates well with the rest of the application.

  • cvat-ui/src/components/job-item/job-item.tsx
  • cvat-ui/src/components/jobs-page/job-card.tsx
Scripts executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Verify the functionality and integration of the JobActionsMenu component.

# Test: Search for the usage of the JobActionsMenu component. Expect: Correct functionality and integration.
rg --type typescript $'JobActionsMenu'

Length of output: 72



Script:

#!/bin/bash
# Description: Verify the functionality and integration of the JobActionsMenu component.

# Test: Search for the usage of the JobActionsMenu component. Expect: Correct functionality and integration.
rg --type ts 'JobActionsMenu'

Length of output: 695

cvat-ui/src/components/plugins-entrypoint.tsx (6)

12-12: Imports are correctly added.

The changeFrameAsync and updateCurrentJobAsync imports are correctly added from 'actions/annotation-actions'.


19-19: changeFrameAsync correctly added to PluginActionCreators.

The changeFrameAsync action is correctly added to the PluginActionCreators type.


24-24: updateCurrentJobAsync correctly added to PluginActionCreators.

The updateCurrentJobAsync action is correctly added to the PluginActionCreators type.


33-33: store parameter correctly added to ComponentBuilder.

The store parameter is correctly added to the ComponentBuilder type.


36-42: Deprecation comments are clear.

The deprecation comments for REGISTER_ACTION and REMOVE_ACTION are clear, and the new usage is correctly documented.


70-79: actionCreators object correctly updated.

The actionCreators object has been correctly updated to include the new actions.

cvat-ui/src/reducers/plugins-reducer.ts (6)

17-25: New callbacks structure correctly added to defaultState.

The new callbacks structure for the annotationPage is correctly added to the defaultState.


Line range hint 80-91: findContainerFromPath function correctly updated.

The findContainerFromPath function has been correctly updated to accept a prefix parameter.


Line range hint 135-147: ADD_UI_COMPONENT case correctly updated.

The ADD_UI_COMPONENT case has been correctly updated to use the findContainerFromPath function with the components prefix.


158-164: REMOVE_UI_COMPONENT case correctly updated.

The REMOVE_UI_COMPONENT case has been correctly updated to use the findContainerFromPath function with the components prefix.


166-177: ADD_UI_CALLBACK case correctly added.

The ADD_UI_CALLBACK case has been correctly added to handle adding UI callbacks.


178-191: REMOVE_UI_CALLBACK case correctly added.

The REMOVE_UI_CALLBACK case has been correctly added to handle removing UI callbacks.

cvat-ui/src/components/annotation-page/top-bar/annotation-menu.tsx (3)

28-28: finishCurrentJobAsync correctly added to imports.

The finishCurrentJobAsync function has been correctly added to the imports from 'actions/annotation-actions'.


55-56: finishJob function correctly updated.

The finishJob function now correctly dispatches finishCurrentJobAsync.


222-235: New menu item for finishing the job correctly added.

The new menu item for finishing the job is correctly added, including the modal confirmation.

cvat-ui/src/components/job-item/job-item.tsx (3)

25-25: JobState correctly added to imports.

The JobState enum has been correctly added to the imports from 'cvat-core-wrapper'.


126-135: New conditional rendering for job type and issues summary icon correctly added.

The new conditional rendering for the job type and issues summary icon is correctly added.


Line range hint 152-219: New select element for managing job states correctly added.

The new select element for managing job states is correctly added and integrated with the onJobUpdate function.

site/content/en/docs/manual/basics/CVAT-annotation-Interface/navbar.md (1)

36-36: Clarify the description for 'Finish the job'.

The description should mention that it sets the job state to 'Completed' and saves annotations.

- | **Finish the job** | Saves annotations and sets **job state** to **Completed**. |
+ | **Finish the job** | Saves annotations and sets the **job state** to **Completed**. |
cvat-ui/src/reducers/index.ts (2)

279-287: Ensure consistency in nested structure for callbacks and components.

The newly added callbacks section should maintain a consistent structure with the existing components section.

Ensure that the nested structure for callbacks is consistent with the existing structure for components.

callbacks: {
    annotationPage: {
        header: {
            menu: {
                beforeJobFinish: (() => Promise<void>)[];
            };
        };
    };
};

Line range hint 291-336: Ensure proper typing for nested structures.

The nested structures for components should have explicit typing for better maintainability and readability.

Ensure that the nested structures are correctly typed.

components: {
    header: {
        userMenu: {
            items: PluginComponent[];
        };
    };
    loginPage: {
        loginForm: PluginComponent[];
    };
    modelsPage: {
        topBar: {
            items: PluginComponent[];
        };
        modelItem: {
            menu: {
                items: PluginComponent[];
            };
            topBar: {
                menu: {
                    items: PluginComponent[];
                };
            };
        };
    };
    projectActions: {
        items: PluginComponent[];
    };
    taskActions: {
        items: PluginComponent[];
    };
    taskItem: {
        ribbon: PluginComponent[];
    };
    projectItem: {
        ribbon: PluginComponent[];
    };
    annotationPage: {
        header: {
            player: PluginComponent[];
        };
    };
    settings: {
        player: PluginComponent[];
    };
    about: {
        links: {
            items: PluginComponent[];
        };
    };
    router: PluginComponent[];
    loggedInModals: PluginComponent[];
}
cvat-ui/src/components/annotation-page/single-shape-workspace/single-shape-sidebar/single-shape-sidebar.tsx (2)

22-26: Ensure proper import order.

The import statements should be ordered logically to improve readability.

import { Job, Label, LabelType } from 'cvat-core-wrapper';
import { ActionUnion, createAction } from 'utils/redux';
import {
    rememberObject, changeFrameAsync, setNavigationType,
    removeObjectAsync, finishCurrentJobAsync,
} from 'actions/annotation-actions';

522-522: Ensure proper focus handling.

The focus handling should be consistent across all checkboxes to avoid potential issues.

(window.document.activeElement as HTMLInputElement)?.blur();
dispatch(actionCreators.switchAutoNextFrame(!state.autoNextFrame));
cvat-ui/src/actions/annotation-actions.ts (4)

Line range hint 1044-1082: LGTM!

The code changes are approved.


1084-1097: LGTM!

The code changes are approved.


1044-1044: Ensure the removal of the afterSave parameter is handled correctly.

The function's interface has been simplified by removing the afterSave parameter. Ensure that this change is reflected in all function calls.

Verification successful

The removal of the afterSave parameter from saveAnnotationsAsync has been correctly handled.

All instances of saveAnnotationsAsync in the codebase match the new signature without any arguments.

  • cvat-ui/src/containers/annotation-page/top-bar/top-bar.tsx
  • cvat-ui/src/components/annotation-page/annotations-actions/annotations-actions-modal.tsx
Scripts executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Verify all function calls to `saveAnnotationsAsync` match the new signature.

# Test: Search for the function usage. Expect: Only occurrences of the new signature.
rg --type ts $'saveAnnotationsAsync'

Length of output: 751



Script:

#!/bin/bash
# Verify that all calls to `saveAnnotationsAsync` match the new signature.

# Extract lines around the function calls to check if they match the new signature.
rg --type ts --context 5 'saveAnnotationsAsync\(' cvat-ui/src/containers/annotation-page/top-bar/top-bar.tsx cvat-ui/src/components/annotation-page/annotations-actions/annotations-actions-modal.tsx

Length of output: 2877


1084-1097: Ensure the new callbacks are handled correctly.

The function now includes additional callbacks before finishing the job. Ensure that these callbacks are handled correctly and don't introduce any issues.

Verification successful

Ensure the new callbacks are handled correctly.

The function finishCurrentJobAsync includes additional callbacks before finishing the job. These callbacks are defined and used within the same file (annotation-actions.ts), ensuring they are handled correctly.

  • beforeCallbacks are defined in annotation-actions.ts at line 1086.
  • receiveAnnotationsParameters is defined and used multiple times in annotation-actions.ts.
Scripts executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Verify the new callbacks in `finishCurrentJobAsync`.

# Test: Search for the function usage. Expect: Only occurrences of the new signature.
rg --type ts $'finishCurrentJobAsync'

Length of output: 687



Script:

#!/bin/bash
# Description: Verify the handling of new callbacks in `finishCurrentJobAsync`.

# Test 1: Check the definition and usage of `beforeCallbacks` in `annotation-menu.tsx`.
rg --type ts 'beforeCallbacks' cvat-ui/src/components/annotation-page/top-bar/annotation-menu.tsx

# Test 2: Check the definition and usage of `beforeCallbacks` in `single-shape-sidebar.tsx`.
rg --type ts 'beforeCallbacks' cvat-ui/src/components/annotation-page/single-shape-workspace/single-shape-sidebar/single-shape-sidebar.tsx

Length of output: 236



Script:

#!/bin/bash
# Description: Verify the handling of new callbacks and `receiveAnnotationsParameters` in `finishCurrentJobAsync`.

# Test 1: Check the definition and usage of `beforeCallbacks` in the entire codebase.
rg --type ts 'beforeCallbacks'

# Test 2: Check the definition and usage of `receiveAnnotationsParameters` in the entire codebase.
rg --type ts 'receiveAnnotationsParameters'

Length of output: 2515

@bsekachev bsekachev requested a review from azhavoro as a code owner July 1, 2024 13:59
@codecov-commenter
Copy link

codecov-commenter commented Jul 2, 2024

Codecov Report

Attention: Patch coverage is 30.30303% with 23 lines in your changes missing coverage. Please review.

Project coverage is 83.41%. Comparing base (13155bc) to head (fe9582f).

Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #8102      +/-   ##
===========================================
- Coverage    83.43%   83.41%   -0.02%     
===========================================
  Files          389      389              
  Lines        41272    41297      +25     
  Branches      3855     3858       +3     
===========================================
+ Hits         34434    34448      +14     
- Misses        6838     6849      +11     
Components Coverage Δ
cvat-ui 79.69% <30.30%> (-0.04%) ⬇️
cvat-server 86.75% <ø> (+<0.01%) ⬆️

Copy link

sonarcloud bot commented Jul 8, 2024

@bsekachev bsekachev merged commit 252b2a7 into develop Jul 8, 2024
33 checks passed
@bsekachev bsekachev deleted the bs/immediate_feedback branch July 8, 2024 12:44
@cvat-bot cvat-bot bot mentioned this pull request Jul 15, 2024
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.

None yet

2 participants