Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[cueweb] CueWeb system: First web-based release of CueGUI with many f…
…eatures from Cuetopia (#1596) CueWeb is a web-based application that brings the core functionality of [CueGUI](https://github.com/AcademySoftwareFoundation/OpenCue/tree/master/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](https://github.com/AcademySoftwareFoundation/OpenCue/tree/master/rest_gateway) to provide a REST endpoint for seamless interaction with the OpenCue gRPC API. CueWeb was developed using [React.js](https://react.dev/), [Next.js](https://nextjs.org/), [ShadCN UI](https://ui.shadcn.com/), and [NextAuth.js](https://next-auth.js.org/) 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: - [Using a built-in OAuth Provider](https://next-auth.js.org/configuration/providers/oauth) (e.g Github, Google, Okta, Apple, GitLab, Amazon, Microsoft Azure, LinkedIn, Atlassian, Auth0, etc...) - List of NextAuth.js providers: https://next-auth.js.org/providers/. - [Using a custom OAuth Provider](https://next-auth.js.org/configuration/providers/oauth#using-a-custom-provider) - [Using Email](https://next-auth.js.org/configuration/providers/email) - [Using Credentials](https://next-auth.js.org/configuration/providers/credentials) Core features and code changes: - User authentication: - Secure login capabilities. Initial version using Okta, Google, and GitHub. - Added functionality to make login usage optional in CueWeb. See cueweb/README.md for more information. - Job management dashboard: - Customizable table views to show or hide specific columns. - Filter jobs by state (active, paused, or completed). - Monitor or unmonitor jobs across various statuses. - Detailed job inspection via pop-ups displaying associated layers and frames. - Frame navigation with hyperlinks to logs and data pages. - Job search functionality: - Search for jobs using show names followed by a hyphen. - Dropdown suggestions for matching jobs based on naming conventions like show1-shot-test_job_123. - Regex-enabled search (triggered by !) for advanced query patterns, with a tooltip for guidance. - Dark mode toggle: - Allows users to switch between light and dark themes. - Optimized search and results loading: - Virtualized lists via FixedSizeList to improve performance. - Web worker implementation for filtering, reducing main thread workload. - Loading animations and efficient API call handling. - Multi-job management: - Add or remove multiple jobs from the dashboard directly from search results. - Highlight jobs already in the table with a green indicator. - Actions and context menu - Added actions for jobs, layers, and frames, including pause, unpause, retry, kill, and eat dead frames. - Option to un-monitor all/selected/finished/paused jobs in the jobs data table. - Context-sensitive menus disable options for completed jobs and ensure proper screen rendering. - Table auto-reloading: - All tables (jobs, layers, frames) now update at regular intervals for real-time data. - View frame logs: - View previous and current log versions with a dropdown menu for selection. - Authorization and security: - Authorization headers included in all REST gateway requests. - JWT tokens generated securely for API authentication. - Unit testing: - Added Jest tests for authentication middleware, error handling, and JWT creation. - Include some CueWeb screenshots examples: https://github.com/AcademySoftwareFoundation/OpenCue/blob/master/cueweb/interface_screenshots **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: #1595 Co-authored-by: Mariz Fahmy <[email protected]> Co-authored-by: Zachary Fong <[email protected]> Co-authored-by: Tomi Lui <[email protected]> Co-authored-by: Ramon Figueiredo <[email protected]>
- Loading branch information