cfpb / college-costs Goto Github PK
View Code? Open in Web Editor NEW⚠️ Deprecated: see note. ⚠️ A tool to help students weigh the costs and rewards of a college program.
⚠️ Deprecated: see note. ⚠️ A tool to help students weigh the costs and rewards of a college program.
Since not all of the UI inputs match the calculator tool a few of the totals are incorrect.
Leading zeros are getting chopped off of school ZIPs in schoolData.zip5
.
For example, Yale (IPEDS 130794) has a ZIP of 06520, but schoolData.zip5
is 6520.
From user testing: When entering a new value for private loan interest, after typing a number and a decimal point, the tool sometimes won't allow entry of a value after the decimal.
I'm seeing a console error of Uncaught TypeError: Cannot read property 'amount' of undefined if I follow these (admittedly unlikely) steps, though:
- Add a second private loan
- Remove the first private loan
- Change the value of any of the remaining private loan fields
This is related to the way the page collects information about the private loan fields, and how those fields are updated. A special operation must be added to handle a user removing a school.
Two incorrect double-equals evaluators are keeping grad rate values from populating during updates.
Addressed in
Changing program length years in the intro changes the grand total for borrowing but doesn't change the Step 1 value for "Total cost of attendance"
Because of the way we're combining values from the URL into a single field the "money your family will provide" field cannot be edited.
Like the title says, "Your school" should be "This school" in all the bar graphs.
Note that there are also several references to "your school" in the non-graph content of step 2. I won't change any of those references yet, only the bar graphs for now.
Some schools without program data aren't displaying the graduation rate on the graduation rate graph, like iped=163976
. It seems like an empty window.programData
object is overwriting the school's graduation rate with an empty string in the school model.
I think refactoring getSchoolValues.getGradRate
to work more like getSchoolValues.getDefaultRate
should fix this bug.
The JavaScript functional (browser) tests documented here currently fail with numerous errors.
At first glance this appears to be due to a mismatch between the test data and the browser tests. For example, the browser tests load this local page:
(note pid=981
)
When this page is loaded, this error message is displayed instead of a functional page:
The information your school provided is missing the program ID, which is vital information for this tool to work. Please contact your school and ask them to ensure they are sending us the right program ID and it's in the correct format.
Once your school provides you with an updated URL link, you will be able to return here so you can continue reviewing the information in the tool.
The test data (which can be loaded with ./manage.py loaddata collegedata
) does not include a program with program_code=981
, so it fails the test here.
Looking back in the git history for this repo, the browser tests were last updated in #248 on August 4, 2016. The test data was last updated in #285 on October 11, 2016. Perhaps the tests were not updated when the test data was -- if so, the test URL will need to be updated to work properly against the current test data.
Since IDs must be unique, the code must enumerate the ID of any elements within each private loan.
Six-digit values (and negative five-digit values to a lesser degree) overlap the dollar sign in line items:
This one's totally my fault—I intentionally set the dollar sign far enough over to fit five digits plus a comma, thinking "no one's going to take out $100,000 of loans for a year!" But I forgot that we also show total debt for the entire program, which could conceivably be six digits.
Not sure what the best solution is here, but note that if we end up moving the dollar sign over for six-digit values, we'll need to check to make sure it fits across all screen sizes (the accounting column is already pretty tight for screen sizes near the smaller breakpoints).
The npm test
command fails because its subcommand snyk test
fails with several high severity vulnerabilities:
Tested 586 dependencies for known vulnerabilities, found 20 vulnerabilities, 69 vulnerable paths.
To reproduce, first log in to Snyk using snyk auth
and then run snyk test
from the command line. Alternatively, you can browse the vulnerabilities through the Snyk web UI (requires membership in the "cfpb" organization).
The high severity vulnerabilities seem to come from [email protected]
, which is also a CFPB package from https://github.com/cfpb/student-debt-calculator. Correcting the vulnerabilities here may require a new version release of that package that corrects its vulnerabilities.
The API refactor in #118 works great for schools with program data but fails for me for schools without program data. For example: /paying-for-college2/understanding-your-financial-aid-offer/offer/?iped=234155#info-right
Since there's no program data associated with that school, some content on the page (the graphs, especially) doesn't display. I've only poked around a little, but it looks like some JS isn't getting executed in those cases. Putting a console.log
at the very top of metricView.init
, for instance, prints a console message for our test school with program data but not for any other school.
Overlapping graph points aren't getting de-overlapped on initial page load, resulting in graphs like this:
I think what's happening is that, since most of the page is hidden when the page loads, metricView.fixOverlap
can't get the height and position values it needs to adjust the graph points.
Quickest solution seems to be calling metricView.init
when the "Yes, this is correct" button is clicked. That will recalculate all the graph values with the graphs visible, which should fix all the overlaps.
I don't believe we currently have this date coming from the schools. What happens when we don't have this date?
Do we remove this text?
Do we try to calculate it based on program length and 10 year repayment term (seems like a large effort for very little affect)?
Initially, there should be three private loans in the DOM so that a NoJS scenario will show three private loans in the form.
Short description explaining the high-level reason for the new issue.
We received reports from EDMC that their students were getting an error message from the Paying for College Understanding Your Financial Aid Offer tool last night. They were receiving an 500 error code.
"The CFPB site appears to not be operational. We are receiving many reports of students not being able to load their exercises. For context, here is a SS of the error I am getting."
That the tool would work.
Short description explaining the high-level reason for the new issue.
A state AG asked us for a test URL to show to a school. When I put the URL together and tested it out the tool was displaying a number of old features that should not be shown.
For example the following should not be displayed:
The test version should look like the current version of the tool.
@marteki and I should team up to do this.
In order to properly on-board non-settlement students we need the opening questions to the user to mirror what we currently ask on the P4C comparison tool.
We need this information to properly populate the cost of attendance for a particular school.
The scenarios that will drive Javascript development for the "understanding financial aid offers" page
Separated by audience:
The percentage for private loan fee should get prepopulated with the fee % from Grad Plus loan
Using the "Remove" button to remove a private loan fails to update the offer numbers on the page in iOS (or on my iPhone, at least).
I think it's a simple fix—looks like there's a missing bracket in enumeratePrivateLoanIDs
, line 203:
$( '[data-private-loan' ).each( function() {
That should be:
$( '[data-private-loan]' ).each( function() {
Not sure why it only fails on iOS.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.