Giter VIP home page Giter VIP logo

glimpse-ui's Introduction

Notice: This project has been relocated to the rpitv/glimpse monorepo


Glimpse UI

RPI TV Glimpse Logo

codecov Build Status License

This is the frontend UI for Glimpse, the RPI TV website.

Quick Start

  1. Create/import the .npmrc and .env files.
  2. npm install
  3. Run npm run dev to start the server in development mode.

Compile and Hot-Reload for Development

npm run dev

Type-Check, Compile and Minify for Production

npm run build

Run Unit Tests with Vitest

npm run test:unit

Run End-to-End Tests with Cypress

npm run build
npm run test:e2e # or `npm run test:e2e:ci` for headless testing

Lint with ESLint

npm run lint

Build Docker Image

docker build --tag rpitv/glimpse-ui --secret id=npmrc,src=.npmrc .

glimpse-ui's People

Contributors

dependabot[bot] avatar ifrog800 avatar robere2 avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

glimpse-ui's Issues

Create global notifications system

There's a lot of duplicated "error message" code at the moment. A global error notification deployment system would help resolve this.

A Store module can be created to deploy Snackbar messages to the user.

Disable incomplete pages

Some pages/links on the website exist, but are currently blank, 404, or otherwise incomplete. Links to these pages should either be removed or the pages themselves should be modified to have a "Work in progress" message.

  • "Join The Club" page
  • "Donate" page
  • "Contact Us" page
  • "Account" page

Login popup closes when the "More" dropdown closes

If the "Login" button is in the "More" dropdown (i.e., on smaller screens), then when the user clicks it, the pop up opens briefly and immediately closes. This is because the source LoginLogoutPopupButton element is removed from the DOM.

The best fix is likely to move the LoginLogoutPopupButton outside of the dropdown and link it's visibility via v-model to a variable.

Perpetual loading screen on server error or missing required permissions

App.vue contains a <Suspense> for Page.vue, which is responsible for fetching account information from the API. If these requests ever fail, the <Suspense> never resolves, and the screen says loading forever. Possible scenarios where this could happen

  • User is missing required permissions (i.e., user can't read their own ID or their own permissions).
  • Server error (e.g. server unreachable).

This can be resolved by showing an error message when the Page.vue async methods throw an error.

Some navigation header buttons are incorrectly shown in "More" dropdown

Some navigation header buttons are missing or being shown at incorrect times. Specifically, what I have found so far is:

  • Login/logout button does not appear in the dropdown.
  • Buttons which should be hidden are shown in dropdown regardless.

Due to the login/logout button not being shown, this is high priority.

Convert to Typescript

Typescript would probably be preferred over Javascript if we can get it working seamlessly.

Redesign footer

The footer should be redesigned to include more information and probably be more block-like. Specifically, things which should be added:

  • Mailing address
  • "An RCOS Project"
  • GitHub links

Improve navigation header generation to use permissions

The navigation menu at the moment has a hard-coded structure based on screen size. As a result, not only is it harder to maintain and has duplicate code, but also means that if we want to show/hide various buttons based on user permissions, the menu will appear different.

This should probably be solved by first calculating the list of visible menu options, and then dynamically calculating which should be displayed and where based on size.

Dashboard Tables

Some groundwork has been laid for the admin tables in the dashboard in the Groups page, however it's not complete, and it needs to be standardized for all dashboard table pages. Ideally, there would be one component which takes in set(s) of properties that can be created/edited/displayed/etc.

The direction of this issue has been changed to instead focus on creating unique tables for each data type. While this may involve more repetition within code that seemingly serve the same purpose, each data type needs to be represented in vastly different ways. Creating unique components for each type seems to make the most sense (at least in the short term). Thus, this issue is now focused on only getting dashboard pages completed for the core data types:

  • Images
  • Productions
    • Production Images
    • Production Videos
    • Production Categories
    • Production RSVPs
  • Stream
  • Videos
  • Groups
    • Group Permissions
  • Users
    • User Permissions
    • User Groups
  • People
    • People Roles
    • People Images
  • Roles
  • Logs
  • Categories

Work on testing, logging, & CI/CD

Testing has fallen behind due to uncertainties in how things would change. I think everything is on track now, so testing should start back up and CI should be fixed.

Finish PeopleList.vue

There are a couple features which remain incomplete in PeopleList.vue, specifically:

  • Linked Users
  • Searching

Both of these features require work to be done on the backend first.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.