Commit Graph

52 Commits

Author SHA1 Message Date
Oliver Eyton-Williams
6a5f586f73 fix: handle challenge resets through redux (#43843)
Instead of relying on heuristics like "does the current content
differ from the initial content?" this just resets if the reset button
has been pressed.
2021-10-18 14:58:06 +03:00
Oliver Eyton-Williams
e4ba0e23ea feat: enable reset in multifile editor (#43617)
* feat: dispatch resetChallenge action

* fix: copy challengeFiles instead of in-place sort

* fix: handle null updateFile payloads in redux

* refactor: reorganise region initialization

* refactor: pull code into editorDidMount

Then we can rely on the presence of the editor and monaco and don't have
litter the code with null checks.

* refactor: use better name for editable region init

* refactor: remove unused decoration

* refactor: rename forbidden region init functions

* fix: keep all challengeFiles when resetting

* refactor: remove unused decoration class

* fix: reinitialize editor on reset

* fix: stop adding multiple scroll listeners

Since the challengeFile update on each keystroke extra (unnecessary)
adding of listeners slowed the editor to a crawl.

* fix: only scroll to editor on mount

Rather than on any edit.

* refactor: remove logs and comments

* fix: rename toSortedArray and fix broken test

* fix: check for null not falsy in updateFile

* fix: only update project features when project

* fix: only reset if editor contents have changed

* feat: focus on editor after reset
2021-10-01 10:36:20 +02:00
Shaun Hamilton
59f17f237b refactor: files{} -> challengeFiles[], and key -> fileKey (#43023)
* fix(client): fix client

* fix propType and add comment

* revert user.json prettification

* slight type refactor and payload correction

Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

* update ChallengeFile type imports

* add cypress test for code-storage

* update test and storage epic

* fix Shaun's tired brain's logic

* refactor with suggestions

Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

* update codeReset

* increate cypress timeout because firefox is slow

* remove unused import to make linter happy

* use focus on editor

Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

* use more specific seletor for cypress editor test

* account for silly null challengeFiles

Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
2021-08-12 20:48:28 +02:00
awu43
dd5d2919be feat(client): ts-migrate client/utils/** (#42823)
* rename js files

* update imports and references

* migrate build-challenges

* migrate challenge-types

* migrate utils/index

* migrate state-management

* install @types/psl for tags

* migrate tags

* migrate tags.test

* migrate challenge-page-creator

* migrate utils/gatsby/index

* migrate layout-selector

* migrate layout-selector.test

* revert challenge-types

Curriculum can't handle TS or modules

* convert arrow functions

* revert build-challenges

* revert utils/gatsby/index

* revert challenge-page-creator

* revert challenge-types reference

* Delete state-management

Deleted in #42960

* Disable render-result-naming-convention (for now)

* update layout-selector.test comment

* reorder imports in build-challenges

* change ts-ignore to ts-expect-error
2021-08-09 10:30:31 +02:00
Sem Bauke
eccc642d83 fix(client): store accessibility for screenreaders (#42996)
* fix: store accessibility for screenreaders

* Apply suggestions from code review

Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>

* fix: remove old comments

* feat: at short cut announcement when running test

* feat: announce that accesibility mode is turned on

* fix: use Redux values

* Apply suggestions from code review

Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>

* Apply suggestions from Oliver

Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

* fix: "rip out redux stuff" and use store instead

* Apply suggestions from code review

Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

* Apply suggestions from code review

Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

* fix: old use of props

* Update client/src/templates/Challenges/classic/editor.tsx

Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>

Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
2021-08-06 14:17:17 +02:00
Oliver Eyton-Williams
e118dda13a fix: order imports and remove circular dependencies (#41824)
* fix: remove circular dependency

redux depended on templates/Challenges/redux and vice versa.  This
meant that import order mattered and confusing bugs could arise.

(cherry picked from commit 7d67a4e70922bbb3051f2f9982dcc69e240d43dc)

* feat: require imports to be in alphabetical order

Import order generally does not matter, but there are edge cases
(circular  imports and css imports, for example) where changing order
changes behaviour

(cherry picked from commit b8d1393a91ec6e068caf8e8498a5c95df68c2b2c)

* chore: order imports

* fix: lift up challenge description + title comps

This brings the classic Show closer to the others as they
now all create the description and title components

* fix: remove donation-saga/index circular import

(cherry picked from commit 51a44ca668a700786d2744feffeae4fdba5fd207)

* refactor: extract action-types from settings

(cherry picked from commit 25e26124d691c84a0d0827d41dafb761c686fadd)

* fix: lint errors

* feat: prevent useless renames
2021-08-02 08:39:40 -05:00
Victor Duarte
10511a7402 refactor(client): document and test create types utilities (#42960)
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
2021-07-24 23:24:08 +07:00
Oliver Eyton-Williams
9be2fb9a10 fix: use lodash-es in the client (#41931) 2021-04-28 16:11:20 -05:00
Ahmad Abdolsaheb
3c7979692b fix(client): block donation modal (#40899)
Co-authored-by: Kris Koishigawa <scissorsneedfoodtoo@gmail.com>
2021-02-08 12:58:36 +05:30
Shaun Hamilton
ab83d698f9 fix(client): give useful error in solutionform (#40225) 2021-02-01 19:04:04 +05:30
Tom
625469c82f feat: improve ui/ux learn map (#40579)
Co-authored-by: Kris Koishigawa <scissorsneedfoodtoo@gmail.com>
2021-01-31 12:15:39 +05:30
Oliver Eyton-Williams
9df098953d Feat: editable dom element (#39341)
* feat: __testEditable allows editable region tests

It's not entirely isolated, but it makes it possible to select only the
element with id 'editable-only' which is built solely from code inside
the editable region.

* fix(client): missing editableContents -> ''

Previously it was added as the string 'undefined'

* fix: more informative error messages

* fix: DRY, correct and test getLines
2020-09-16 11:54:11 +05:30
Ahmad Abdolsaheb
a1a051bd3a feat: add action row for challenges with ERMs on desktop (#39377) 2020-09-16 11:54:11 +05:30
Oliver Eyton-Williams
2abefc27a2 fix: handle missing ERB 2020-09-16 11:54:11 +05:30
Oliver Eyton-Williams
68b223322f feat: make editable code available in tests 2020-09-16 11:54:09 +05:30
Oliver Eyton-Williams
59c838e8ca feat(multi): add editor decoration
The warning region does not grow at the edges This makes it harder for
the user to get into an odd state.  It might be better to have let the
user expand the second region at the trailing edge.  I'm not sure, and
that's harder to implement.
2020-09-16 11:54:07 +05:30
Oliver Eyton-Williams
7269894a86 refactor: test output -> arrays (#39178) 2020-07-18 00:33:23 +05:30
Oliver Eyton-Williams
b4926052f4 chore: refactor and simplify testing (#39050) 2020-06-13 14:57:15 +05:30
Tom
db08ab2965 fix: backend projects not submitting (#38900)
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
2020-05-27 13:19:16 +05:30
mrugesh
22afc2a0ca feat(learn): python certification projects (#38216)
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
Co-authored-by: Kristofer Koishigawa <scissorsneedfoodtoo@gmail.com>
Co-authored-by: Beau Carnes <beaucarnes@gmail.com>
2020-05-27 13:19:08 +05:30
Shaun Hamilton
21ca4e3f67 fix(client): add relevant placeholder to link submission (#38411) 2020-05-07 21:49:06 +05:30
Jacob Robinson
694e52f742 feat: Code saveing to localStorage on Cmd/Ctrl + S (#38324)
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
Co-authored-by: mrugesh <1884376+raisedadead@users.noreply.github.com>
2020-03-13 18:50:14 +05:30
Oliver Eyton-Williams
c6eb40ceef feat: remove protection from interview prep (#38136)
The interview prep section includes many challenges that require long
running calculations which can be mistaken for infinite loops. This
removes the loop protection from those challenges, while the tests are
being evaluated.

It keeps the protection for the preview, since it is easy to create
broken code while working on a challenge and that should not crash the
site.
2020-02-04 10:33:56 +05:30
vanya829
d626e898ee fix(curriculum): stop tests running after navigating away (#38146) 2020-02-03 18:52:49 +05:30
Ahmad Abdolsaheb
a9bbcda211 feat(donate):add donation modal and certification message (#37822)
Co-Authored-By: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
2019-12-02 15:48:53 +03:00
mrugesh
1b61bceee7 feat(client): completion modal progress bar (#37836)
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
2019-11-26 22:14:44 +05:30
Ahmad Abdolsaheb
1d73575a59 Revert "feat(client): completion modal progress bar (#37775)" (#37835)
This reverts commit a8928739dd.
2019-11-26 18:30:08 +03:00
Tom
a8928739dd feat(client): completion modal progress bar (#37775)
* feat: add progress bar to completion modal

* feat: add stuff

* feat: finalize-layout-and-make-responsive

* feat: add feature to all challenge templates

* git test

* fix: remove challenge title + enlarge top message

* fix: move graphql query to completion modal

* fix: remove some previous additions

* fix: optimize functions

* fix: removed isRequired flag

* feat: add animation

* feat: add interval to state + clear on unmount

* fix: change around interval function

* feat: make bar fill non-linearly

* Update client/src/templates/Challenges/components/CompletionModal.js

Co-Authored-By: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

* Update client/src/templates/Challenges/components/CompletionModal.js

Co-Authored-By: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

* Update client/src/templates/Challenges/components/CompletionModal.js

Co-Authored-By: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

* Update client/src/templates/Challenges/redux/index.js

Co-Authored-By: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

* Update client/src/templates/Challenges/redux/index.js

Co-Authored-By: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

* Update client/src/templates/Challenges/redux/index.js

Co-Authored-By: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

* Update client/src/templates/Challenges/redux/index.js

Co-Authored-By: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

* Update client/src/templates/Challenges/components/CompletionModalBody.js

Co-Authored-By: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

* Update client/src/templates/Challenges/components/CompletionModalBody.js

Co-Authored-By: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

* Update client/src/templates/Challenges/components/CompletionModalBody.js

Co-Authored-By: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

* fix: remove bracket

* fix: tweak animation + change to pure component

* fix: remove comment

* Update client/src/templates/Challenges/components/CompletionModalBody.js

Co-Authored-By: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

* Update client/src/templates/Challenges/components/CompletionModalBody.js

Co-Authored-By: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

* fix: remove animateProgress

* feat: add tests for progress bar

* feat: add working tests

Co-authored-by: ojeytonwilliams <ojeytonwilliams@gmail.com>

* fix: add formatting

* fix: use content selectors where possible

* fix: make progress bar show 0 for unauthed users
2019-11-26 18:15:59 +03:00
Oliver Eyton-Williams
beecb04c1a fix: report errors thrown after the frame is ready
Certain challenges involve code that is not run until the user
interacts with the preview (typically via a click listener). This uses
consoleProxy to report those errors.

Error logging has been simplified, reducing the number of places errors
can be reported from.

Some of the redux-saga code has been renamed in an attempt to improve
clarity.
2019-11-19 22:23:57 +05:30
Tom
5ca2d2467a fix: make help button use subforum topics (#37741)
* fix: make help button use subforum topics

* fix: add test to check that block exists

Co-authored-by: ojeytonwilliams <ojeytonwilliams@gmail.com>

* fix: improve error message

* Update curriculum/test/test-challenges.js

Co-Authored-By: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
2019-11-15 23:03:08 +05:30
Oliver Eyton-Williams
c5d4bedda5 feat: add accessibility toggle
Users can now press ctrl/cmd+f1 to toggle the screen reader mode, in
addition to using the accessibility tooltip.  The mode now persists
between challenges.

If screen reader mode is on, the instructions are focused by default so
the user is not required to navigate to them before reading starts.
2019-11-14 22:17:13 +05:30
Oliver Eyton-Williams
95fdb74d95 feat: escape prevents automatic editor focus 2019-09-24 22:22:14 +05:30
Valeriy
d85425fd1b feat(client): use React Final Form instead of Redux Form (#36742) 2019-09-04 18:18:58 +05:30
Stuart Taylor
271d25a2ab fix: Render completed checkmark in ChallengeTitle (#36746)
* fix: Render completed checkmark in ChallengeTitle when user has passed the challenge

* fix: Update ChallengeTitle snapshot
2019-09-03 10:38:19 +03:00
Valeriy
469c3f05c2 feat: use static query to get idToNameMap (#36722) 2019-08-30 22:37:28 +05:30
Ahmad Abdolsaheb
a59b8636cb fix: restore preview background to white (#36714) 2019-08-29 18:45:32 +03:00
Ahmad Abdolsaheb
31e3d9b27e feat: commandline chic 2019-08-20 13:37:11 +05:30
Tom
8757deb56c feat(client): add prev next btns to lessons (#35485)
* feat/add-prev-next-btns-to-lessons

redirect to learn instead of home

* fix/button-css-properties

* fix/change-buttons-to-suggested

* fix/add-tests+change-button-to-link

Co-authored-by: ojeytonwilliams ojeytonwilliams@gmail.com

* Revert "fix/add-tests+change-button-to-link"

This reverts commit ae26504d1d.

* fix/add-tests+change-button-to-link

Co-authored-by: ojeytonwilliams <ojeytonwilliams@gmail.com>
2019-07-18 15:16:00 +05:30
Oliver Eyton-Williams
c99366fa71 fix(client): Store backend form value on submit 2019-06-19 20:08:57 +05:30
Valeriy
839e81426e feat(client): show and execute backend project tests (#35673) 2019-06-11 21:16:36 +05:30
Valeriy S
e8f5b54d63 fix(client): pass logs incrementally from test worker 2019-03-29 15:06:10 +05:30
Valeriy
71cf4495cb fix(client): get backend challenge data on challenge mount 2019-02-18 13:49:24 +00:00
Valeriy S
98f979f3b4 fix(client): disable build on error 2019-02-16 17:48:37 +00:00
Valeriy S
f6fa754906 fix(client): update current challenge for all challenges 2019-02-16 17:30:37 +00:00
Valeriy
871eacacd6 fix: resolve circular dependencies 2019-01-14 13:44:54 +00:00
Valeriy S
8d2c350b3f fix(client): remove execute challenge epic 2019-01-14 13:44:54 +00:00
Ivan Nikolaievskyi
8a60b19b6c fix(learn): created components for mobile/desktop layouts (#17467) 2019-01-09 11:09:19 +00:00
Dmytro Yarmak
d4b07f47ab fix(learn): implemented curriculum layout for mobile devices (#17467)
remove useless changes
2019-01-09 11:09:19 +00:00
Valeriy
a4fd935b8b feat: execute js challenges saga 2018-12-06 13:05:09 +00:00
Stuart Taylor
d327a5c36b Feat: News in the client app (#34392) 2018-11-29 15:12:15 +03:00