GithubHelp home page GithubHelp logo

sas-fossdev / saspes Goto Github PK

View Code? Open in Web Editor NEW
11.0 5.0 7.0 2.66 MB

SAS Powerschool Enhancement Suite - A browser extension to improve the experience of using Powerschool at SAS.

License: GNU Affero General Public License v3.0

JavaScript 3.28% HTML 0.54% CSS 0.48% TypeScript 34.46% Svelte 61.25%
singapore-american-school webextension-api webextension firefox-addon chrome-extension firefox firefox-extension browser-extension chromium chromium-extension

saspes's People

Contributors

megagames-me avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

saspes's Issues

Incomplete assignments automatically set final grade to INC

In some classes, this behavior is expected, however some classes count an INC as 0 credit. This prevents the grade from being normally calculated as when a single grade is INC, it sets the whole final grade to INC.

This can be fixed by having two INC options, INC (0 credit) and INC (class incomplete) and INC (class incomplete) will only be automatically chosen when the final class grade is INC.

I will not be able to test this, however, since I do not have any incompletes. Please reply to this thread if you are able to.

Bug reported by Jam Parpia.

Class grade percentage decimal display

Extension Version: Most recent (Beta 0.21.3)

In the settings on the extension, there should be a feature where you can select how many decimal places you want to be displayed on your class grade percent. I also got an email about if this feature could be added, so I'm creating this issue.

For now, I think the glass grade percentage should display to 3 decimal places and in the future, should be a setting.

Switch to Semver

We should switch to using semver for versioning. Would it be okay to just drop the first 0 and continue the version numbers from 1.8.0?
EDIT: Or, it may be a better idea to go to 0.18.0 instead?
EDIT2: Going to go with 0.18.0 as long as there is no disagreement.

Renovate Dashboard

This issue provides visibility into Renovate updates and their statuses. Learn more

Rate Limited

These updates are currently rate limited. Click on a checkbox below to force their creation now.

  • chore(deps): update dependency eslint to ^7.32.0
  • chore(deps): update dependency eslint-plugin-promise to ^4.3.1
  • chore(deps): update vue monorepo (vue, vue-loader, vue-template-compiler)
  • fix(deps): update dependency jquery to ^3.7.1
  • fix(deps): update dependency v-tooltip to ^2.1.3
  • chore(deps): update actions/checkout action to v4
  • chore(deps): update actions/setup-node action to v4
  • chore(deps): update dependency ava to v6
  • chore(deps): update dependency babel-loader to v9
  • chore(deps): update dependency copy-webpack-plugin to v11
  • chore(deps): update dependency css-loader to v6
  • chore(deps): update dependency eslint to v8
  • chore(deps): update dependency eslint-config-standard to v17
  • chore(deps): update dependency eslint-plugin-promise to v6
  • chore(deps): update dependency eslint-plugin-vue to v9
  • chore(deps): update dependency geckodriver to v4
  • chore(deps): update dependency less to v4
  • chore(deps): update dependency less-loader to v11
  • chore(deps): update dependency nightwatch to v3
  • chore(deps): update dependency rewire to v7
  • chore(deps): update dependency web-ext to v7
  • chore(deps): update dependency webpack to v5
  • chore(deps): update dependency webpack-cli to v5
  • chore(deps): update dependency webpack-merge to v5
  • chore(deps): update vue monorepo (major) (vue, vue-loader)

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Recent grade changes

I was thinking of developing a feature that might display any recent grade changes either on the powerschool login page or in a popup window on clicking the extension icon. It could make it more convenient for anyone who wants to check their grades without having to log in each time.

Show new grades since last powerschool load

A lot of the time when users access PowerSchool it's because they are checking whether a grade for a recent test is out, a possible feature that could make this easier is something that would show all new grades for a particular subject since the last time they loaded PowerSchool.

This could work with the last seen grades feature to store the amount of summative's a user has per subject, the next time they load powerschool, if this number has changed, it could show some kind of indicator that a new grade has been released for that subject. Alternatively it could even show new grades at the top of powerschool like it does with the "recents" feature on the mobile app.

Drop Babel

As an extension, we have a pretty good idea of what browsers are being used so maybe we should look at dropping Babel?

According to analytics data, there are people still using Chrome/Firefox versions that still lack support for ES2015 so it would mean stopping support for some people.

Generate library licenses during build process

Instead of having a libraries.txt file in the repo, it would be nicer if one was generated during the build process using yarn licenses --silent generate-disclaimer > src/web_accessible_resources/libraries.txt then add a link to that location in the options page.

Firefox update script is broken

Extension Version: 0.25-0.26

The JSON file here is not configured with the newest version.

Describe steps to reproduce the error

Install version 0.24 or 0.25 on Firefox and try to update it to the newest version by disabling auto update and pressing check for update.

HypoAssignment Shows NaN with no Percentage Values

Extension Version: Open Beta 0.19.0 Development v0.19.0-9-g7722c9e

Describe steps to reproduce the error

Go to hypothetical assignment and remove the percentage value.

Screenshot from 2020-03-16 21-51-12

Looks like this is a regression from #129. Should be easy enough to fix.
Something like this should do the trick

diff --git a/src/js/components/HypoAssignment.vue b/src/js/components/HypoAssignment.vue
index 58da954..cf0f47a 100644
--- a/src/js/components/HypoAssignment.vue
+++ b/src/js/components/HypoAssignment.vue
@@ -70,7 +70,7 @@ export default {
     }),
     computed: {
         hypo () {
-            const weight = getInRange(this.assignment.weight, 0, 100, true);
+            const weight = getInRange(this.assignment.weight, 0, 100, true) || 0;
             const new_fp = weight * 0.01 * gradeToFP(this.assignment.grade) + ((100 - weight) * 0.01 * this.currentFP);
             return {
                 fp: new_fp.toFixed(2),

Hypo Assignment: Final Percent and Shown Grade Strange

If anyone is willing to help with this, I would really appreciate it.

It is possible for the final percent displayed and the grade displayed to seem strange. For instance, it is possible to have the text say Your grade with the selected assignment would be B+ with a final percent of 75.00 which may seem strange but is calculated that way because the actual final percent value calculated is 74.99900000000001 which is less then 75 so it interprets as a B+ but the value shown has been found by (74.99900000000001).toFixed(2) which rounds the value to 75.00.

What to actually do about this isn't exactly clear. It depends on how Powerschool deals with values such as this. I presume it would round up and consider it an A so SAS PES should do the same. In this case, getKeyRange should be called with the final percent rounded to 2 decimal points as well.

An easy way to do this would be to replace fpToGrade(new_fp) with fpToGrade(parseFloat(new_fp.toFixed(2)))

https://github.com/gary-kim/saspes/blob/4baf8d94d0a0ddc86308e5d7b48bdf8849e5aa8e/src/js/components/HypoAssignment.vue#L46-L52

Feature: Last Seen Grades

There used to be a feature to show the last seen grades. It was removed as the code for the feature was quickly and sloppily made.

It would be nice if this feature could be reimplemented.

The implementation would need to be able to handle multiple users on a single system, parents' Powerschool, and either have security to prevent others with access to the computer looking at the grades or warn the user that others may be able to see their grades on the system.

design an opt-in screen for last seen grades

anecdotally, most users of the extension are unaware of the extension options menu, or at least unaware that it can be used to toggle last seen grades, it might be beneficial to make this more visible or provide a popup of some kind to inform users that this option to enable last seen grades is now available.

Renovate Dashboard

This issue contains a list of Renovate updates and their statuses.

Rate Limited

These updates are currently rate limited. Click on a checkbox below to force their creation now.

  • fix(deps): update dependency axios to v0.21.1 [security]
  • fix(deps): update dependency jquery to ^3.6.0
  • fix(deps): update dependency v-tooltip to ^2.1.3
  • chore(deps): update actions/setup-node action to v2
  • chore(deps): update dependency chromedriver to v90
  • chore(deps): update dependency copy-webpack-plugin to v8
  • chore(deps): update dependency eslint-config-standard to v16
  • chore(deps): update dependency eslint-plugin-promise to v5
  • chore(deps): update dependency eslint-plugin-vue to v7
  • chore(deps): update dependency geckodriver to v2
  • chore(deps): update dependency less to v4
  • chore(deps): update dependency less-loader to v9
  • chore(deps): update dependency web-ext to v6
  • chore(deps): update dependency webpack to v5
  • chore(deps): update dependency webpack-cli to v4

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Ignored or Blocked

These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.

Change All Links to GitHub Page

In the extension and some of the documentation, there are links to the project website at https://gschool.ydgkim.com/saspowerschool/. I'd like to deprecate this website so all links in the extension should be changed to point at the GitHub repository or removed entirely.

Let's also take some of the images from the site and move it into this repository and into the README.

Should we also look into making a dedicated page for this project and documentation that can be kept in this repository?

EDIT: Forgot to mention, README download links should probably link to the GitHub releases page. I will start adding Firefox releases there when releasing a new version.

Maintainers Needed

This extension still has quite a few active users, so if anyone is interested, we could use new student maintainers for after I've graduated. This would mostly just involve fixing the bugs that pop-up/handling changes to powerschool, but it can also involve adding new features/more development if you so choose.

Anyone interested?

Putting Numbers in Context

This extension has had some negative effects on the school community. We should look into how we can put the numbers provided by this extension in some more context.

Goodhart's Law: "When a measure becomes a target, it ceases to be a good measure"

categories within category weighting

Currently category weighting only works by assuming every assignment in a category is weighted equally. This applies to a minority of classes that employ category weighting, as such it may be useful to add a way for a user to specify individual assignment weighting in each category. Perhaps another box on the grade table that defaults to (1/# assignments in category) that allows the user to specify weighting.

second semester detection not working

several users have reported that second-semester detection is not working, the extension is not showing current semester grades, I believe part of the issue is a missing parameter in the call to the refactored isSecondSemester method, but there seems to be something else as well, even once that parameter is fixed, the extension is not displaying semester 2 grades.

Add a "Missing" Indicator

Extension Version: v0.18.1

Describe the feature you'd like!

The ability to have an extra indicator on the main page for classes that have missing assignments would be nice.

This would probably need to come with a "acknowledged" button for students to request that all missing assignments up to this point should be ignored.

College GPA calculation

Add feature to calculate GPAs like colleges (remove 4.5 A+).

Low priority as it's a big feature, maybe we'll see in 2.1.0/2.2.0

Make sure content script is not run twice

Sometimes, for example if the extension updates, the content script gets run again. We should add something where the extension adds a marker to the dom when run then if it is detected on next run, shows a message saying to reload the page for updates to go into effect. Or maybe instead of the dom we can put it on window?

Make last-seen-grades opt in instead of opt out

Some users might be apprehensive at the idea of having SASPES show their grades prior to logging in, I don't think this is a huge security concern since to use this, you still need direct hardware access. However just to avoid any issues, it might be better to make this feature opt-in instead of opt-out, however, if we do make it opt-in, I think we should add a fairly visible dialog that users will see on first use/and some type of persistent opt-in button located on the Powerschool page that would automatically opt users in.

Show 1st Semester GPA

It would be nice if the 1st semester GPA would be displayed as well during second semester.

GPA calculation for semester one ignores classes that are not taken in semester two

PowerSchool defaults to not showing classes only taken in semester one on the main grades screen. This results in that grade not being factored into the GPA. This can be solved by relying on grade history for S1 gpa calculation. This already works once S2 starts, but until then it is relying on S1 grades reported in courses & grades.

Main Page: Scrolls to Top After Loading

Currently, after loading the main page, the browser scrolls back up to the front of the page.

EDIT: It looks like this is actually an issue with Powerschool. This could be made part of the enhancements but is not an issue with SAS PES.

Dropped courses are not factored in to current semester GPA

It turns out that PowerSchool no longer shows the first semester dropped courses like PE on PowerSchool, this leads to the previous semester GPA calculation being inaccurate as it doesn't factor in dropped courses. A simple fix to this would be to use part of the cumulative GPA calculation code to use the grade history to calculate the first-semester course.

Save new categories added & weights

Allow users to save custom categories after creation. Current behavior acts like they don't exists when saving because we shouldn't save new assignments and new categories may contain custom info. Maybe some lookup table or button to restore saved custom categories with no assignments inside?

Enhancement requested/pointed out by Jam Parpia.

Welcome Screen

It would be nice if SAS PES had a welcome page to introduce people to the features of the project, allow them to opt out of analytics easily, and invite them to contribute to the project. This should also include a disclaimer that this project comes with no warranty, similar to #22.

QOL: indicators and explanations

Add some extra indicators and explanations for clarity, as well as fix some text errors.

  • Increase width of assignment names
  • Add indicator of which category the "see all possibilities" assignment is in (e.g. green background)
  • Change options for GPA calculation grade to show gpa number instead of percentage
  • S2 GPA calculation has no option for no grade yet

Firefox support

Add firefox support.

I believe @danieldanhe was working on a PR for this. Please update me here if there are any developments.

Add disclaimer

Perhaps we should have a disclaimer on the extension to warn people that information given by the extension should not be fully trusted and teachers have the ability to change final grades regardless of what Powerschool or this extension calculates.

remove analytics code

I think if it's not being actively used anymore it might be worth it to completely remove all the analytics code that is part of the extension.

Maintainers Needed

This project needs some SAS student maintainers to take over.
Preferably, it'd be best to have two maintainers, one doing UI design and the other working with the software.
Anyone up for it?

Calculate cumulative GPA is counting current semester incorrectly

It seems that the cumulative GPA calculation is counting an out of date version of the current semester from the grade history instead of from PowerSchool, this is because SAS has released the current grades to grade history already it seems.
I'll try and fix the logic on the cumulative GPA to avoid this particular case.

Allow Hypothetically Exempting Assignments

It would be nice to be able to hypothetically exempt assignments from a course to see how this would change the final percent and grade of the course.

This would require somehow figuring out what the weighting of the assignment is. I'm not sure how to do this yet.

Semester 2 Grade Parsing

The grade parsing for semester two is currently broken and needs to be fixed. When Powerschool was updated at the start of the 2019-2020 school year, the layout of Powerschool changed. To keep the extension working, the parsing for the first semester on the main page was improved but there wasn't time to fix parsing for the second semester. This has to be fixed soon.

The code for it can be found here.
https://github.com/gary-kim/saspes/blob/a623f8ed318d2fad85777f79279ea409c7a4173e/src/js/saspowerschoolff.js#L87-L95

The easiest fix would likely be looking for td a[href^="scores.html"] like the semester 1 code and getting .eq(0) and .eq(1).
Something like $course = $grade_rows.eq(i).find('td a[href^="scores.html"]').eq(0) and let first_grade = $grade_rows.eq(i).find('td a[href^="scores.html"]').eq(1) should do the trick.

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.