AcademySoftwareFoundation / OpenCue

A render management system you can deploy for visual effects and animation productions.
https://www.opencue.io
Apache License 2.0
832 stars 202 forks source link

[cueweb] CueWeb system: First web-based release of CueGUI with many features from Cuetopia #1596

Open ramonfigueiredo opened 2 days ago

ramonfigueiredo commented 2 days ago

CueWeb is a web-based application that brings the core functionality of CueGUI, including Cuetopia and Cuecommander, to a web-accessible format. This initial version includes most Cuetopia features, with Cuecommander integration planned for the next phase. CueWeb simplifies rendering job management with customizable job tables, advanced filtering, detailed inspections, log viewing, and light/dark mode toggling, making it efficient and accessible across platforms. Finally, CueWeb leverages the OpenCue REST Gateway to provide a REST endpoint for seamless interaction with the OpenCue gRPC API.

CueWeb was developed using React.js, Next.js, ShadCN UI, and NextAuth.js for authentications. Authentication Providers in NextAuth.js are services that can be used to sign in to a user.

There are four ways a user can be signed in:

Core features and code changes:

Link the Issue(s) this Pull Request is related to. Create the first version of the CueWeb system: a web-based application that replicates the core functionality of CueGUI: https://github.com/AcademySoftwareFoundation/OpenCue/issues/1595

Co-authored-by: Mariz Fahmy mfahmy@imageworks.com Co-authored-by: Zachary Fong zfong@imageworks.com Co-authored-by: Tomi Lui tlui@imageworks.com Co-authored-by: Ramon Figueiredo rfigueiredo@imageworks.com

ramonfigueiredo commented 2 days ago

Note: The following text will be in a new PR to the opencue.io page with the extra instructions in the CueWeb README.md file.

First look: CueWeb's user interface

Introduction

OpenCue has facilitated efficient management of rendering jobs through its application, CueGUI, which includes Cuetopia and CueCommander. Previously, OpenCue's capabilities were somewhat restricted as it was primarily limited to desktops/workstations running Qt-based applications. Because of that, the CueWeb system was created. CueWeb is a transformative, web-based application that extends access across multiple platforms, ensuring users can manage their rendering tasks from virtually anywhere.

A seamless transition to web accessibility

CueWeb replicates the core functionality of CueGUI (Cuetopia and Cuecommander) in a web-accessible format, enhancing usability while maintaining the familiar interface that users appreciate. This adaptation supports essential operations such as:

  1. Secure user authentication:
    • Authentication through Github, Google, Okta, Apple, GitLab, Amazon, Microsoft Azure, LinkedIn, Atlassian, Auth0, etc. Other providers and login options can be easily configured and enabled in the CueWeb. See NextAuth.js authentication using email, credentials and providers: https://next-auth.js.org/providers/
  2. Customizable job management dashboard:
    • Manage jobs with a customizable table where users can select visible columns and filter jobs based on their state (active, paused, completed).
  3. Flexible monitoring controls:
    • Easily un-monitor jobs across all statuses.
  4. Detailed job inspection:
    • View job details with pop-up windows showing layers and frames associated with each job.
  5. Frame navigation and logs access:
    • Navigate frames using hyperlinks that lead to dedicated pages for frame data and logs.
  6. Advanced job search functionality:
    • Search for jobs by show name with dropdown suggestions for matching entries.
    • Search functionality requires show-shot- as the prefix to reduce the number of results returned.
  7. Dark mode toggle for user preference:
    • Switch between light and dark modes according to user preference.
  8. Enhanced search functionality:
    • Users can enable regex searches by appending '!' to their queries, with tooltips provided for guidance.
    • Optimized loading times using virtualization and web workers, along with loading animations for a better user experience.
    • Users can add or remove multiple jobs directly from the search results, with existing jobs highlighted in green.
  9. Enhanced security using Opencue API:
    • CueWeb uses JWT token generation for enhanced security in authorization headers.
  10. CueWeb actions and context menu are available: Job actions: Unmonitor, Pause, Retry dead frames, Eat dead frames, Kill.
    • Layer actions: Kill, Eat, Retry, Retry dead frames.
    • Frame actions: Retry, Eat, Kill.
    • Menu items are disabled if the job has finished, and the context menu is always rendered on-screen.
  11. Auto-reloading of tables:
    • All tables (jobs, layers, frames) are auto-reloaded at regular intervals to display the latest data.

CueWeb’s user interface

Upon logging in through Okta/Google/GitHub or another authentication method configured using NextAuth.js (Figures 1 or 2), users are welcomed by CueWeb’s main dashboard, as shown in Figure 3 (light mode) or Figure 4 (dark mode). The CueWeb main page contains a paginated table that is populated with the OpenCue jobs.

Figure 1: CueWeb authentication page (light mode)

image

Figure 2: CueWeb authentication page (dark mode)

image

Figure 3: CueWeb main page (light mode)

image

Figure 4: CueWeb main page (dark mode)

image

CueWeb dashboard (Jobs data table) - Similar to CueGUI Cuetopia's functionalities

Here’s what you can expect:

Figure 5: Column visibility dropdown to choose display data table columns

image

Figure 6: Data table filtering based on job state

image

Figure 7: Un-monitoring selected jobs (data table before un-monitor selection)

image

Figure 8: Un-monitoring selected jobs (data table after un-monitor selection)

image

Figure 9: Pop-up window to view layers and frames information (light mode)

image

Figure 10: Pop-up window to view layers and frames information (dark mode)

image

Figure 11: Frame information and logs visualization (light mode)

image

Figure 12: Frame information and logs visualization (dark mode)

image

Figure 13: Job search functionality

image

CueWeb Actions for Jobs / Layers / Frames

The CueWeb system includes actions like eat dead frames, retry dead frames, pause, unpause, and kill for selected jobs in the table. Also, the ability to right-click jobs, layers, and frames to get a context menu popup with actions for that object type.

Figure 14 shows the job context menu with options to un-monitor, pause, retry dead frames, eat dead frames and kill jobs and Figure 15 shows the successful message after selecting kill a job.

Figure 14: CueWeb with job context menu open

image

Figure 15: Pop-up showing a successful message after selecting kill a job

image

Figure 16 shows the layer context menu with options to kill, eat, retry, and retry dead frames and Figure 17 shows the successful message after selecting retry a layer.

Figure 16: CueWeb with layer context menu open

image

Figure 17: Pop-up showing a successful message after selecting retry a layer

image

Finally, Figure 16 shows the layer context menu with options to kill, eat, retry, and retry dead frames and Figure 17 shows the successful message after selecting retry a layer.

Figure 18: CueWeb with frame context menu open

image

Figure 19: Pop-up showing a successful message after selecting eat a frame

image

Conclusion

In conclusion, the CueWeb system marks a significant advancement in rendering job management by providing a powerful, web-based interface that simplifies and enhances user interaction with the OpenCue system. With features like customizable job tables, efficient job filtering, and detailed inspections, along with the ability to view comprehensive logs and switch visual modes, CueWeb ensures that managing rendering jobs is more accessible and adaptable to a variety of user needs.

ramonfigueiredo commented 2 days ago

Hi @DiegoTavares and @bcipriano

The CueWeb code is ready for your review and to be merged into the master.

I already did many reviews throughout the year (from April 2024 to November 2024) and it is working fine inside the SPI infrastructure.

Thanks!

ramonfigueiredo commented 1 day ago

FYI ... @marizf888 @tomi-lui @Zach-Fong

marizf888 commented 1 day ago

FYI ... @tomi-lui @marizf888 @Zach-Fong

Super happy to see CueWeb getting improved and more features being added 😁