Coder Social home page Coder Social logo

aopell / schoologyplus Goto Github PK

View Code? Open in Web Editor NEW
121.0 121.0 42.0 7.86 MB

A web extension that enhances your Schoology experience with numerous interface improvements

Home Page: https://schoologypl.us

License: MIT License

CSS 0.06% JavaScript 3.16% HTML 8.41% Python 0.46% SCSS 18.45% TypeScript 69.45%
browser-extension chrome-extension edge-extension firefox-extension schoology web-extension

schoologyplus's People

Contributors

aopell avatar dsnsgithub avatar ericpedley avatar fenylabs avatar glen3b avatar jetline0 avatar jiaming-s avatar ktibow avatar reteps avatar roguim avatar saagarjha avatar sealsrock12 avatar senoj26 avatar thethonos avatar xd-arsen avatar xd-arsenic avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

schoologyplus's Issues

Classes with no period crash extension

In the current released version, periodless classes on the grades page cause the extension to crash (line 21 grades.js, similar issue occurs on Schoology++).

Course Aliases

A feature, potentially via the existing "Course Options" menu, to alias/nickname a course.
This alias should be used in place of the full course title in the user interface.

For instance, where the UI displays MAR DYN PE 2B: TERM AS - PERIOD 5, an alias could be set to Band (Per. 5), and this would replace the long and annoying string throughout the UI.

Potential roadblocks:

  • Huge number of places this occurs.
    Course names show up all over the place, including in async-loaded components. This makes writing a reliable replacement algorithm annoying at best. Potential workaround could be iterating down to bottom-level nodes and replacing within innerText, or doing some string manipulation on top-level innerHTML.
  • Parse order.
    Course name is parsed in other parts of the code, or used as a key for things (e.g. themed course icons, period sorting in grades page). Care must be taken to avoid breaking these components.

LAUSD firewall sometimes blocks icon loading

Sometimes the LAUSD firewall will mess with TLS connections to the source of custom icons throughout Schoology Plus (although not always). This leads to image load failing. If this happens the alt text sometimes messes greatly with the UI and is overall a bad thing.

Add minimum grade calculation

Add a feature, perhaps as a context menu entry, that allows the system to calculate the minimum score on an assignment to maintain the current letter grade. The assignment would have known denominator; in my vision, this step would be after the completion of (for instance) adding an assignment to the grade calculator (meaning no need to have a separate denominator specification interface).

Better handle failures in API calls

In terms of error-handling, potentially just disable grade editing on that category and/or assignment (depending on if course is weighted or not) instead of nuking the grade display which Schoology has already calculated? The grade is known, it only becomes an issue if editing is employed; adding a grade display (instead of LOADING) without editing (i.e. actively disable editing) is more useful than displaying LOADING and breaking editing.

Created from a comment by @glen3b on #24

This may not be an issue anymore after switching to API retrieval of assignment max points

Document "Loading" tooltips do not generate until assignment tooltips have completely loaded

Issue as described in the title. There aren't even proper "Loading..." tooltips for documents until assignments have finished getting theirs - which in some cases can take a very long time. This also, if the user starts looking for the document tooltip earlier than this, they might reasonably expect to see a Loading tooltip where it would appear, but they would not.

Use SVG icons where possible, and comment icons.js with license info

For course icons, we have a few PNG icons that could be replaced by their SVG equivalents. (Geology comes to mind.) When possible we should do so.

While we're at it, each entry in icons.js should be commented with the following:

  • Source URL (not the image hotlink, but the corresponding page on flaticon with all the info)
  • Author name, and possibly attribution link
  • License name, and link if uncommon (e.g. not CC BY 3.0)

Move libraries to subfolder of js

More a code style thing than anything else, but worth discussing I think.

The js folder is getting a bit cluttered, and we're having to pull in more and more libraries. We should consider creating a js/libs folder (or similar) to logically separate our code from library code.

Add proper icons interface to theme editor

Currently the theme editor does not have a nice UI for icon editing. It would be nice to add one. Probably just as a key (regex)/value (URL) two-column table. Potential components and conerns:

  • How would icons be previewed?
  • How would default icons be thoroughly previewed?
  • Would there be a nice way to view default icons?

Add assignment dropping management

Currently, there's no "proper" way to handle dropped assignments. A way to drop or undrop assignments, perhaps manually via a context menu, would allow more flexibility in grade recalculation.

Update README.md with theme editor and other new features since last update

Meta:

  • Confirm and finish this list, we don't want to miss anything

Places to update:

  • README.md in the repository
  • Chrome web store description
  • Screenshots, both in README and in Chrome web store
  • Changelog

Features:

  • Everything we add in 4.2
  • Course nicknames
  • Tooltips on materials pages
  • Gradebook context menu (possibly too minor), including calculate minimum grade

Link-type materials break document material tooltips

Cause: links are type-document in CSS, but their API call attachments object does not have a files property even though we assume it to. Better error handling here would be a good thing, but at the very least we must correct for our wrong assumption.

(easy fix, when I get around to it)

Notifications don't work

Issue:

  • Time doesn't compare down to the minute, but instead only down to the day (whoops) causing notifications to never show up

Calculate minimum grade performs no validation

Calculating minimum grade performs no validation. This leads to the following undesirable cases:

  • Computed negative point values
  • Computed point values with high numbers of decimals (99.0000000000000000003), which carry through the entire point tally column
  • Strange behavior when operating on assignments in 0-weight categories, e.g. Underwood's "Data" category

Entity note feature

Feature idea.

Allow users to record their own (private, local, visible to nobody else) notes on entities, potentially with an associated icon.

Possible entities on which notes could be taken:

  • Assignments
  • Courses
  • Users
  • Groups

Things to consider:

  • Should notes on entities be key/value (title/body) or just value?
    • Should there be other metadata able to be attached? Possibly dates? We probably don't want to become a reminder app, but Schoology does have a system for due dates that we could possibly (UI-wise) hook into.
  • Should entities be able to contain multiple notes?
  • Should there be an interface for centralized display of all notes?

Add "courses in common" button/modal

This year in my environment, I cannot see the schedules of classmates, just the number of courses they have. However, I can see class rosters by class. It would be nice to have a button on user profiles to see "courses in common," basically classes that I (the user) and another user have together.

Indication of how assignment affects grade

This can be accomplished in one or both of these ways:

  • Display what percent of the grade each assignment is
  • Display how many percentage points were gained or lost because of this grade

Desktop notifications don't work on Firefox

It seems to be an issue with Firefox not supporting event pages. The background page loads when the extension is first installed/updated but appears to unload afterward. The alarm event doesn't fire.

Dark Schoology theme

Feature idea. Would perhaps involve some tweaks to the theming engine to make it more general-case.

Schoology with dark theme! Fairly self-explanatory - tweak backgrounds to be dark and foregrounds to be white/light. Unfortunately implementation is likely to be difficult:

Schoology CSS defines colors all over the place. Finding the relevant selectors to override is likely to be difficult, perhaps a task for a codegen tool we write. Not to mention some styling is likely to be done via hard-to-replace images (fortunately, most of the icons are high-color and thus work well with either dark or light theme). And the worst possibility with such a dark theme is missing a section, such that on some page somewhere there's a light theme section in the middle of a dark theme page - meaning we have to be exceptionally thorough for this to look good.

To implement there would probably have to be some tweaks to the theming engine. I'd envision a few additions:

  • A single scaleable base-saturation value, to adjust the overall darkness of user-defined theme colors
  • Perhaps a foreground text option to complement wherever the theme color is used - such that dark enough themes could be complemented with whiter text (this setting would not be for dark theme per se, but rather for darker user-defined colors - and could be used without dark theme, although probably wouldn't look great without)
  • A Schoology accent colors declaration section, with keys for all of the colors Schoology uses (it's likely to be a lot) and default values corresponding to what Schoology sets. This would be where we would define a dark preset, by overriding most of these. Once we know what the selectors and colors are, we define a key for each one, and the theming engine overrides that selector with whatever color is defined here.

Arrow dropdown menu crashes Schoology JS in Firefox

Clicking on the arrow dropdown to the right of the name reliably produces the following error message.
Error: Permission denied to access property "apply"[Learn More]
common-faff65aef3d248da1463.js%20line%201%20%3E%20eval:5:13279
Learn More links to this page.

I have not attempted to reproduce this outside my setup.
Firefox 60.0.1, Arch Linux
Schoology Plus release v3.16

Add option to override only default course icons

Feature request.

This would allow keeping teacher-defined icons where present, but overriding bad defaults.
This shouldn't be the default because it would likely lead to thematic inconsistency, but it should be an option.
Potential roadblock is determining what a default icon is (unless it's always this one).

Refactor grades page handling

Currently, the grades page handling ties very deeply our UI integration and our grade modification and redisplay logic. Ideally, these components (UI patching, grade modification logic, and grade recalculation logic) would all be separate.

Aliases do not work for archived courses

Courses in which the user is not currently enrolled do not properly apply aliases.

We should decide if we want to support this case (in which case this enumeration needs to change to include everything) or not (in which case the UI should not permit setting aliases for archived courses).

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.