-
Notifications
You must be signed in to change notification settings - Fork 226
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve viewFeedback output parsing, error robustness #1913
Conversation
@cg2v This PR incorporates / addresses two of the patches you apply to CMU prod, I was wondering if you had any thoughts on this? For your patch on JSON scalars, it seems like the check does not work since For your patch on not parsing semantic feedback unless long, it is no longer needed since this PR performs the Also, if there are any other patches you would like to merge upstream, I'd be happy to take a look at them! Some of them look really useful, such as the one preventing the scheduler race condition, workaround for visual run, and filtering out of sensitive variables. |
#1463 changed the context in valid_json? since I first wrote that and I didn't notice. I am surprised that it has not caused any exceptions. This change is fine. The problem with the short or empty output wasn't that nil was being fed to chomp, but that the array offset lines.length-2 could be negative |
From my understanding, in ruby, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Went through testing scheme, everything works according to guide, LGTM
Sidenote: seems like when true
gets fed into autograding output, although the parse failure error happens, the score given for that problem is 1, not 0 (probably b/c true casts to 1?)
Discussed offline - basically a side effect of #1914. Since we are re-parsing scores instead of making use of the final problem score, this is due to differences between |
* rstrip feedback in pareScore and parseFeedback * Validate that feedback is a hash * Cast scores to floats, add error messages * Hide scores if score JSON can not be parsed * Handle booleans in score hash * Add TODO * Update comment * Remove unnecessary TypeError * Handle non-numeric score in result sidebar (cherry picked from commit 5e33614)
Summary
Summary generated by Reviewpad on 02 Jun 23 11:14 UTC
This pull request modifies
app/controllers/assessments_controller.rb
andapp/views/assessments
directory. It adds a TODO comment in a method and refactors another method to userstrip
instead ofchomp
. Moreover, it modifiesapp/views/assessments/_results_panel.html.erb
to handle score values that cannot be parsed andapp/views/assessments/_semantic.html.erb
to check if@scoreHash
is nil before accessing it.Description
valid_json?
tovalid_json_hash?
, add check that we parsed a hashMotivation and Context
Issue 1: If the Autograder output has trailing newlines, semantic feedback options / score JSON are not parsed.
Consequence: Semantic feedback is not triggered when it should be, and results panel does not show all scores (it falls back to showing the current problem's score)
Issue 2:
valid_json?
does not check that we parsed a hashConsequence: A scalar like
2
ortrue
would pass the check, and we get an error when we try to perform hash operations on it afterwards.Issue 3: Insufficient casting / error handling for scores
Consequence: Scores in strings are not opportunistically cast to floats. Scores of non-numeric types prevent the page from loading.
Fixes #1718
Fixes #1877
Incorporates cg2v@f112dba (with a bugfix)
How Has This Been Tested?
Import the following assessment: randomlab_20230602.tar.zip
For each of the following tests, you can submit any file, it simply assigns 6 random scores from 0 to 99.
For each test, the new output code will be provided. Update
driver.sh
and recompileautograde.tar
accordingly (e.g. expandautograde.tar
, editrandom/driver.sh
, rungtar -cvf autograde.tar random
), and upload it to the assessment.gtar
is gnu-tar, available via brew.Test 1: Normal Case
Before + After
![Screenshot 2023-06-02 at 18 32 38](https://private-user-images.githubusercontent.com/9074856/242860264-884f87b0-4016-46ed-adce-f56225746de3.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNTk5ODgsIm5iZiI6MTczOTM1OTY4OCwicGF0aCI6Ii85MDc0ODU2LzI0Mjg2MDI2NC04ODRmODdiMC00MDE2LTQ2ZWQtYWRjZS1mNTYyMjU3NDZkZTMucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxMiUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTJUMTEyODA4WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MDI3ZGZkNDU0M2MzM2E2ZjY0N2IzMDRkOGI3ZjZiNDA4MGE1NGYwZDFiZjU0N2JlZTJjYWFmNDE1NjkyOGM3YiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.kncddh6X1tr-f9QCIVWqpDSHhtGSo0SI9cgEh5oRZJ0)
Test 2: Semantic UI + Trailing new lines
Before
![Screenshot 2023-06-02 at 18 39 40](https://private-user-images.githubusercontent.com/9074856/242861675-1c6735b2-fe2b-4d31-ab1b-e869c368b35d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNTk5ODgsIm5iZiI6MTczOTM1OTY4OCwicGF0aCI6Ii85MDc0ODU2LzI0Mjg2MTY3NS0xYzY3MzViMi1mZTJiLTRkMzEtYWIxYi1lODY5YzM2OGIzNWQucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxMiUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTJUMTEyODA4WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9YWJlN2RlZTZhNWZlNjdkMmMwMWQ3NmMzNzJlYjY2NzM0YWM0NTMwYTYyYmMwOTFlMzg4OGJiZjQ4MzM4NDYxZSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.z5i-4G9S_U2MqrGhhtkiX1KTZ-UIvQvl3cjC6JqDRu0)
![Screenshot 2023-06-02 at 18 40 23](https://private-user-images.githubusercontent.com/9074856/242861838-2fbb604f-a5eb-4bfe-abbf-d6027b1a7f18.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNTk5ODgsIm5iZiI6MTczOTM1OTY4OCwicGF0aCI6Ii85MDc0ODU2LzI0Mjg2MTgzOC0yZmJiNjA0Zi1hNWViLTRiZmUtYWJiZi1kNjAyN2IxYTdmMTgucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxMiUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTJUMTEyODA4WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MTFlMWM3NjhjYTBkM2NjNjZhYmJiN2MxNDk4NDVkMDMzMjNjNTM3ZDgyZWRjZGVmNGE4YmIyMDZiNmU4NmFmMyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.l0XKg1x14KBpd6U-sn8oPKeNOdqjQzFGlmReJOGxmVc)
After
Test 3: Scalars
Before
![Screenshot 2023-06-02 at 18 42 24](https://private-user-images.githubusercontent.com/9074856/242862259-4139e7f5-c510-42b1-8af9-05960447e50f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNTk5ODgsIm5iZiI6MTczOTM1OTY4OCwicGF0aCI6Ii85MDc0ODU2LzI0Mjg2MjI1OS00MTM5ZTdmNS1jNTEwLTQyYjEtOGFmOS0wNTk2MDQ0N2U1MGYucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxMiUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTJUMTEyODA4WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MmU2NjQ5OGNiZGNjZTYwOTBhZjVkY2EwOWU0NmM0NDA5ZTEwOGZhMzg5NDE5MTVmOWE4YjUwNDIyODkyNzBiZCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.QZsks4AF0e4YrsYcKzddh2gtVHn2X8W96t8YPXFZSXQ)
![Screenshot 2023-06-02 at 18 42 56](https://private-user-images.githubusercontent.com/9074856/242862354-b94f50a2-4911-4322-8d58-19568711e444.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNTk5ODgsIm5iZiI6MTczOTM1OTY4OCwicGF0aCI6Ii85MDc0ODU2LzI0Mjg2MjM1NC1iOTRmNTBhMi00OTExLTQzMjItOGQ1OC0xOTU2ODcxMWU0NDQucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxMiUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTJUMTEyODA4WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9M2FlZGZkYTg3NDE2MTVkNDVlNjg2MmRkMTBjNGU5MWY2MzRlNTEzNmE3ZjQ4MWU2NzgyZTIyZDc0MmYyZDBkMiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.i5ciBTyxKtFSon-M55vFniFG3fw9YJrL1pADUvQlCkk)
After
Test 4: Score JSON with strings
Before
![Screenshot 2023-06-02 at 18 44 45](https://private-user-images.githubusercontent.com/9074856/242862749-88b6d54f-f369-4201-9493-bc8ab4e3716f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNTk5ODgsIm5iZiI6MTczOTM1OTY4OCwicGF0aCI6Ii85MDc0ODU2LzI0Mjg2Mjc0OS04OGI2ZDU0Zi1mMzY5LTQyMDEtOTQ5My1iYzhhYjRlMzcxNmYucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxMiUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTJUMTEyODA4WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9YTAyM2VjMzIxZTM3ZTQyNzdjMWUxYzgzYjg2ZTA0YTQ3NmJmZTliODk4OWNmZjJkNTk3OGZmM2RhMjliNTcwMiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.1GTCW5pQESZpYjdM_MOulexVjJLcBVFpfIDbK-WNJYA)
After
![Screenshot 2023-06-02 at 18 44 20](https://private-user-images.githubusercontent.com/9074856/242862666-424f9de1-1d43-4022-a0bc-206e7768666b.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNTk5ODgsIm5iZiI6MTczOTM1OTY4OCwicGF0aCI6Ii85MDc0ODU2LzI0Mjg2MjY2Ni00MjRmOWRlMS0xZDQzLTQwMjItYTBiYy0yMDZlNzc2ODY2NmIucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxMiUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTJUMTEyODA4WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9OWEzZGM1ZDViMGMyYzkzM2M5ZDA0NjBlYTc4YWZiZGNkYmViYjlmMjJmZjExNzIxNTA3NTZjZWIxM2RmZjlmZiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.XLrb10czpLREmsU_up-sTeylWeiOit5PC5e_b8LD5CU)
Test 5: Score JSON with non-numeric
Before
![Screenshot 2023-06-02 at 18 45 36](https://private-user-images.githubusercontent.com/9074856/242862926-d5067f78-95a3-4550-bc4d-46d9efeb4485.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNTk5ODgsIm5iZiI6MTczOTM1OTY4OCwicGF0aCI6Ii85MDc0ODU2LzI0Mjg2MjkyNi1kNTA2N2Y3OC05NWEzLTQ1NTAtYmM0ZC00NmQ5ZWZlYjQ0ODUucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxMiUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTJUMTEyODA4WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9YzE0NWIyYzE0M2E4NWFiZjdiMmM1OTNiMjc2MGE4Y2I1NDFiZGI1NjlkNjkwY2I1Y2IzM2UwY2IyNWRkYmZlMiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.Hvr3xqkXCrd1tswRAHmIcvwZlywMKYweFqS2CtER7NE)
![Screenshot 2023-06-02 at 18 47 22](https://private-user-images.githubusercontent.com/9074856/242863300-87bf1622-a09f-45ad-b87f-85304ad36d88.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNTk5ODgsIm5iZiI6MTczOTM1OTY4OCwicGF0aCI6Ii85MDc0ODU2LzI0Mjg2MzMwMC04N2JmMTYyMi1hMDlmLTQ1YWQtYjg3Zi04NTMwNGFkMzZkODgucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxMiUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTJUMTEyODA4WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9OTM5OTk4NDRhMDc3MzYyNzUxNGY0ZTdmZDg2Mzk0YmUyMmU5ZTZlMGY5MDFhZDMwYmJiNzZiMDM0ZGU5MmY3NiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.RbK02bRAXr1fgCMXokm_gR5lvqfJIy9gOQjf_fgvdVw)
After
Test 6: Invalid Score JSON
Before + After
![Screenshot 2023-06-02 at 18 49 54](https://private-user-images.githubusercontent.com/9074856/242863879-ef026f75-a438-4fc2-a3e8-058e0ee4825f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNTk5ODgsIm5iZiI6MTczOTM1OTY4OCwicGF0aCI6Ii85MDc0ODU2LzI0Mjg2Mzg3OS1lZjAyNmY3NS1hNDM4LTRmYzItYTNlOC0wNThlMGVlNDgyNWYucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxMiUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTJUMTEyODA4WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9ZDhlMDljZjRjZWY5OWU2MjY4M2M3YjYxMWQwZmE0MTM2ZDE1ZWFlNzdkYTBiZWNmNGZiZDU4NjViYWM1NWU2YSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.2FJ6mHNx_pn06oEEL_EE0Ubykb8MnAmnNLFkToOVxWU)
Test 7: Score JSON with non-numeric + Semantic UI
Before
![Screenshot 2023-06-02 at 18 53 07](https://private-user-images.githubusercontent.com/9074856/242864574-8f76e084-f113-46dd-9cc1-9e936221be3e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNTk5ODgsIm5iZiI6MTczOTM1OTY4OCwicGF0aCI6Ii85MDc0ODU2LzI0Mjg2NDU3NC04Zjc2ZTA4NC1mMTEzLTQ2ZGQtOWNjMS05ZTkzNjIyMWJlM2UucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxMiUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTJUMTEyODA4WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9OGVhMjNhZDFmZjAyYjg2Yzc5NmJlNWQzNzJmMTM0Mjc0ZjA3OTIzNTg3MjVhMThmYjg5NTY0OTdiNDY2YzQ5ZSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.Ckm7Wjl8EipIq1or2p3ad08HsRBmTgeWiaiV4BdBSdw)
![Screenshot 2023-06-02 at 18 53 30](https://private-user-images.githubusercontent.com/9074856/242864647-63129c17-12b2-4287-b358-6f76cfcf046f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNTk5ODgsIm5iZiI6MTczOTM1OTY4OCwicGF0aCI6Ii85MDc0ODU2LzI0Mjg2NDY0Ny02MzEyOWMxNy0xMmIyLTQyODctYjM1OC02Zjc2Y2ZjZjA0NmYucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxMiUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTJUMTEyODA4WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9YzJhMGQ2Nzg0ZGVmOThjN2EzNjliYWQwMzFkYWEwNGJjNDAwNTU5OGZmZjBlZTgzZDZlYzg4MzI1ZmFlYjVmNiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.xbER5IZ8eHYU1sF-0zptaGEZsrDjFWv6vgpw8p0RZ9M)
After
Test 8: Invalid Score JSON + Semantic UI
Before
![Screenshot 2023-06-02 at 18 55 51](https://private-user-images.githubusercontent.com/9074856/242865107-cf54176a-a69d-476a-9193-227fa3f9b288.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNTk5ODgsIm5iZiI6MTczOTM1OTY4OCwicGF0aCI6Ii85MDc0ODU2LzI0Mjg2NTEwNy1jZjU0MTc2YS1hNjlkLTQ3NmEtOTE5My0yMjdmYTNmOWIyODgucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxMiUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTJUMTEyODA4WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NjcwYjZhN2YwMTgwODlmM2VjNGU3NGMxZTVlYjQ4N2FjYThlMzFiYjM5Y2FkNzFkMjAxYmI3ZGJlYzFiNWU3NCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.xwWayQN39R8HUu0W3hsbYSD5DrqUB7GLJb_MEaQyyWQ)
![Screenshot 2023-06-02 at 18 55 28](https://private-user-images.githubusercontent.com/9074856/242865035-d5004f2b-a0ef-47e8-8933-50d64b6a0827.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNTk5ODgsIm5iZiI6MTczOTM1OTY4OCwicGF0aCI6Ii85MDc0ODU2LzI0Mjg2NTAzNS1kNTAwNGYyYi1hMGVmLTQ3ZTgtODkzMy01MGQ2NGI2YTA4MjcucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxMiUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTJUMTEyODA4WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MmI2OGE4NzJlNDYxYWU3ZjAzODRlNzdhNDUxNzQ0YTFlYzNkYzNlN2VmYjBjZWQ2MzQ1ZWM5ODBkN2JhMmQyOSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.i1IrYjfRBiiIj2Td_qiehw_obZFvFvMtVY8I1ektznw)
After
Types of changes
Checklist:
overcommit --install && overcommit --sign
to use pre-commit hook for lintingOther issues / help required
Currently, the viewFeedback page re-parses the score JSON, which could display the wrong score if the
parseAutoresult
ormodifySubmissionScores
hooks were used by the lab author.In another PR, we ought to make use of the scores directly, rather than parsing them again.