Git Product home page Git Product logo

bluesheet's Introduction

Bluesheet

Track membership and roles within various groups, committees, taskforces, and departments at UMN.

  • aka: groups.cla.umn.edu
  • aka: caligari

Set Up

Blue Sheeet uses Laravel's docker environment, Laravel Sail for development.

Prereqs:

  • Docker
  • PHP v7.4
  • Composer
  • Node LTS

To get started:

# Create a .env file
cp .env.example .env

# Install php dependencies
composer install

# Start Sail
sail up

# create app key, link storage, etc
sail exec app ./bin/ci.sh

# migrate the database
sail artisan migrate:fresh --seed

# Install node modules
yarn install

# Start Vite
yarn dev

The application will be running on http://localhost.

Using the Application

sail up
yarn dev

Load http://localhost in your browser.

Login with:

  • username: admin
  • password: admin

Additional users can be configured in config/shibboleth.php.

Stop the application: sail down.

Local Development with Bandaid

Some features of BlueSheet require access to Bandaid API (e.g. the Faculty Leaves Planning Report page).

To connect to Bandaid for local development:

  1. Connect to UMN VPN.
  2. Login to https://cla-bandaid-prd-web.oit.umn.edu/admin
  3. In Bandaid, add a new API Token for your user: Users > username > Edit > Add Token.
  4. Add the token in .env as BANDAID_KEY=<your token>
  5. Get your VPN ip address from https://z.umn.edu/ip
  6. Add your ip address to Bandaid's Allow List. (You'll need to do this each time your ip address changes. Be sure to remove the old ip address from the list.)

Deploy

Enviroment Name URL
dev https://cla-groups-dev.oit.umn.edu
stage https://cla-groups-tst.oit.umn.edu
prod https://cla-groups-prd.oit.umn.edu
./vendor/bin/dep deploy <environment name>

Documentation

BlueSheet documentation is in the docs folder, and published at https://umn-latis.github.io/bluesheet/. It uses VitePress for static site generation.

To develop locally:

cd docs
yarn install
yarn docs:dev

Building the documentation:

cd docs
yarn docs:build

and publishing:

cd docs
yarn docs:publish

bluesheet's People

Contributors

cmcfadden avatar jxjj avatar

Stargazers

 avatar

Watchers

 avatar James Cloos avatar  avatar Alison Link avatar

bluesheet's Issues

Nav overflow container at some screensizes

The main nav buttons overflow the container on both prod and dev (different behaviors on each):

Dev:
ScreenShot 2023-08-04 at 16 29 40@2x

Prod:
ScreenShot 2023-08-04 at 16 28 46@2x

Possible solutions:

  • Change breakpoint
  • Put some of the options within a dropdown (e.g. Create Groups + Browse Groups + My Groups = Groups)... or something.
  • Wrap nav (prob ugly)

Updating vue/vue-template-compiler breaks header

  • Checkout develop
  • yarn install
  • sail up
  • yarn run hot

-> result: app looks right

  • yarn upgrade vue
  • yarn upgrade vue-template-compiler

-> result: app looks wrong, lots of console errors about things already being declared.

Browse Groups tricks me every time

Small nit: on the Browse Groups page to me the Groups breadcrumb heading reads as an input element with "Groups" as placeholder text. And the Search input reads as a button:

CleanShot 2022-10-05 at 15 29 44@2x

I usually click a few times before my brain engages and realizes what's going on...

Maybe moving the search input to its own line to give it more space for input?

Schedule report: course planning using the courses table

As a group admin, I want to plan course sections and enrollments (similar to the persons table).

Also on the courses table, unpublished courses should appear different from published courses (again, similar to persons table). Right now, unpublished look the same as published.

Make Leaves section in user view editable

Within an individual User view, a user (with appropriate permissions) should be able to edit or add leaves. Edit Leaves functionality should be similar to the Edit Group, in that clicking on the Edit button allows an editor to add or update listed leaves for the user.

A leave has:

  • description, which can be empty
  • type, which is selected from a dropdown. Only defined types are allowed. Editor cannot create a new type, like some of the combobox stuff elsewhere in the app.
  • status, again a well defined type like confirmed, pending, cancelled
  • start_date, which must be defined
  • end_date, again which must be defined. The UI should check that the end_date is after the start_date of course

Other Notes:

  • if a user api response has user.leaves defined, then the current user can edit the leaves. For example, if I'm a current user and browsing the user User123. If the server returns a defined user.leaves value on the User123 object, I have permissions to edit the leaves for User123.
  • when viewing leaves, a user can check a View Previous checkbox, which will show previous leaves
  • it may make sense to add an endpoint for the leaves resources
  • user may have multiple overlapping leaves. For example, one leave might be a single course release and overlap the dates of a different leave.

Leaves: links to artifacts

As a leave editor, I want to add a link to one or more artifacts (like a document) to a given leave so that I have a record of information related to the leave.

This is similar to the ability to add link artifacts to groups.

Scheduling Report: Add tentative instructor or TA information

As a course scheduler, I want to "pencil in" instructor or course information for future terms, so that I can plan upcoming semesters.

For example, if I'm an I'm viewing the scheduling report by course/term, I want to drag and drop a possible instructor from a list onto a particular course/term as a tentative instructor.

Similarly when viewing by instructor/term, I want to drag and drop possible courses onto the instructor/term cell.

One idea for functionality is toggling an "edit mode" which would open up a panel of possible courses or instructors on the right, which users could drag to the table.

Questions:

  • How should we persist this data?
  • How should it be reconciled once the data is no longer tentative?
  • Who should have permissions to edit? (Is it the same as schedule viewers?)
  • Who should have permission to view the tentative items (I imagine seeing a work-in-progress schedule could get spicy with faculty who will have their own wants/needs).
  • Do we need to allow admins to pencil in new courses (or instructors or TA's)?

Leaves Report

  • departments in rows
  • semsters in columns
  • leave count in each cell

Scheduling Report: View with TA's instead of Instructors

As a scheduling report user, I want to see assistantship history for TA's by person/term and course/term (see: #71) similar to how I currently see I can see an instructor's teaching history.

This maybe is a toggle or a select dropdown where the report viewer can choose the role. (Currently, we're thinking of the TA view and the instructor view as mutually exclusive โ€“ users wouldn't need to see both at the same time).

Strip tour stuff

We have some v-tour stuff sprinkled into our vuejs. We should decide how we feel about tours and either update it or strip it

Formatting on Groups breadcrumb reads as a search box

On the groups page, more than once I've found myself clicking on the gray box to enter text.

The gray "Groups" bar reads as an input with placeholder of groups to me and the search input reads as a search button:
ScreenShot 2023-07-10 at 23 18 23@2x

Perhaps making the search input larger and stacking them? Or maybe removing the gray box around the breadcrumbs would help?

Add inheriting to group admin setting

  • if a user is flagged as group admin, they should have perms to all child groups
  • if a user is flagged group admin, they should be able to create subgroups

Reports missing?

Assume this is because of the merge issue - some reports are missing on dev

Role selection box acts when removing people

Steps to reproduce:

  1. edit a group
  2. remove a member (not the last one in the list)

-> result: all of the "role" boxes below the person you removed go blank.

Screen.Recording.2023-08-21.at.10.00.41.AM.mov

Updates to Scheduling (Leaves) Report

  • add start semester / end semester dropdowns, ideally going back 5 years as an option
  • remove section number
  • add enrollment info in parens (35/100) after course. May eventually make that a hover state or something.
  • Add filter by course level - grad/undergrad. Undergrad are courses <5000, grad are >=5000
  • Add filtering by appointment type - faculty, teaching specialist, etc. This will be filtering on jobcode by employee, which I definitely need to add to the API
  • start visible part of the table centered on current semester (if not too complex)

Scheduling report: add view of teaching history by courses and term

Let users "pivot" the scheduling report view so that the courses are on the left and instructors who have taught the courses are listed in the cell.

Instructor data should still include leaves. Maybe an icon to indicate the instructor has a leave in a given term, and then users can expand the instructor item to see more details?

Leave filtering

As a department admin, I need to know which of my faculty may be impacted by a leave in the upcoming spring semester.

A set of filters in the scheduling report, or a separate report, should give me a quick summary of only the folks impacted by a leave (eligible, confirmed, pending, etc) for a given term or timespan.

ArgumentCountError: Too few arguments to function App\Library\UserService::__construct(), 0 passed in /swadm/var/www/...

Sentry Issue: GROUPS-TOOL-24

ArgumentCountError: Too few arguments to function App\Library\UserService::__construct(), 0 passed in /swadm/var/www/html/releases/240/app/Console/Commands/ImportLeaves.php on line 33 and exactly 1 expected
  File "/app/Library/UserService.php", line 13, in App\Library\UserService::__construct
    public function __construct(Bandaid $bandaid) {
  File "/app/Console/Commands/ImportLeaves.php", line 33, in App\Console\Commands\ImportLeaves::handle
    $this->userService = new \App\Library\UserService();
  File "/artisan", line 37
    new Symfony\Component\Console\Output\ConsoleOutput
...
(11 additional frame(s) were not displayed)

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.