-
Notifications
You must be signed in to change notification settings - Fork 174
Conditional tab rendering in Playground #808
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
Conversation
|
For reference, these are the raw default texts used in the code: Data Visualiser: Inspector: Env Visualiser: |
Pull Request Test Coverage Report for Build 2839
💛 - Coveralls |
Note that gutter click is different from debugger; statements. We decided not to support debugger; statements, after discussing with @podocarp . In fact, this Issue requests removing support of debugger; statements in Source: source-academy/js-slang#276 So let's not mention debugger; in the default texts. |
Oh, I see. Okay, will change this! |
|
Here are my suggestions for the text: Data Visualizer: The data visualizer visualises data structures. Inspector: The inspector generates a list of variable bindings based on breakpoints set in the editor. Environment Visualizer: The environment visualizer generates the environment model diagram |
It would be good to use a link to the textbook. Note that the textbook URL is in |
|
Hmm, this seems to break for me when running any program with Source 1 or 2 selected. The inspector code still tries to run and update a non-existent tab, which crashes the whole thing. |
Ok, I'll add this in!
Will look into this! |
| (actionType === actionTypes.EVAL_EDITOR || actionType === actionTypes.DEBUG_RESUME) && | ||
| context.chapter > 2; | ||
| if (!context.runtime.debuggerOn) { | ||
| if (!context.runtime.debuggerOn && context.chapter > 2) { |
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.
Can we make this more logical, this part has always been making my brain explode.
const useDebugger = actionType !== actionTypes.EVAL_EDITOR && actionType !== actionTypes.DEBUG_RESUME && context.chapter > 2;
if (useDebugger) {
inspectorUpdate(undefined);
}Honestly though, I don't even think the above code segment makes any sense. Please comment on what this code segment is even intended to do.
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.
Okay, debuggerOn is used as a flag for slang.
So the correct code should look like
context.runtime.debuggerOn = (actionType === actionTypes.EVAL_EDITOR || actionType === actionTypes.DEBUG_RESUME) && context.chapter > 2;
if (context.runtime.debuggerOn) {
// Resets the inspector to prepare for new output
inspectorUpdate(undefined);
}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.
This was done by the INSPECT team, so I'm not certain about how it works either. Having said that, this:
Okay,
debuggerOnis used as a flag for slang.So the correct code should look like
context.runtime.debuggerOn = (actionType === actionTypes.EVAL_EDITOR || actionType === actionTypes.DEBUG_RESUME) && context.chapter > 2; if (context.runtime.debuggerOn) { // Resets the inspector to prepare for new output inspectorUpdate(undefined); }
doesn't seem to be the same boolean expression as the original code. !(actionType === actionTypes.EVAL_EDITOR || actionType === actionTypes.DEBUG_RESUME) && context.chapter > 2 will call inspectorUpdate(undefined) in the original code, but not in the suggested amendment.
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.
My mistake. The clause should be
if (!context.runtime.debuggerOn)just like the original code
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.
No, this won't work because it can trigger inspectedUpdate(undefined) even when !(context.chapter > 2), and that crashes the entire webpage. That's what the change was originally for.
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.
Ok, can we clean this up then. The logic here is very confusing. Can we add comments to clarify?
geshuming
left a comment
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.
Can we split this PR into smaller PRs, all rebased. The PR title doesn't even match what this PR is trying to achieve.
* Data visualiser tab now only enabled for Source Chapter 2 and above * Inspector/Env Visualiser tabs now only enabled for Source Chapter 3 and above
…tend into conditional-tabs
Ok, I have split it up. The new pull requests can be found at: Assessments default tab fix: #819 |
geshuming
left a comment
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.
LGTM
* Change default tab of ungraded assessments back to 'Task X' (#826) * Fix incorrect type declarations in IQuestion interface (#827) * Include null type in type declaration for grader, gradedAt in IQuestion * Update mocks such that Grading only renders for closed assessments * Add test to assert Grading tab is rendered when grader is non-null * Bump js-slang to 0.2.6 (#831) * Resizing editor to a larger size no longer makes it disappear (#832) * Update README.md (#810) * Version cadet (#798) * clean up libraries: removing streams and adding comment for lists stating the purpose to remain here * fixes wrong version in js console message * Default texts for data visualiser, inspector, env visualiser (#820) * Added default texts to be shown before Data/Insp/Env are used * Remove mentions of 'debugger;' * Modified default texts for Playground * Added links to textbook * Links now open in new tab * Conditional tab rendering in Playground (#808) * Conditional tab rendering for Playground * Data visualiser tab now only enabled for Source Chapter 2 and above * Inspector/Env Visualiser tabs now only enabled for Source Chapter 3 and above * Fix For Crashing in Source §1 & §2 * Integrate file upload system (#830) * Add basic dropzone for material uploading * Revamp dropzone styling * Finish file saving logics * Finish file retriving logics * Allow downloading of files * Allow deleting of materials * Rename academy materials to materialsUpload * Extract out materialTable * Add public tab for materials * Allow creating of materials folder * Update snapshot * Fix conflicts * Rename name to title * Close dialog after creating folder * Allow deleting of folder * Show index by folder id * Get directory tree info from backend * Improve UI for materialTable * Add material to specific folder * Add material folder to specific folder * Stay in current folder after add/delete actions * Improve table UI * Restructure files and folders * Remove duplicate file * Clean up repo * clean up libraries: removing streams and adding comment for lists sta… (#781) * clean up libraries: removing streams and adding comment for lists stating the purpose to remain here * addresses #781 (comment) * Improve display for sourcecast table (#834) * Update sourcecast table styling * Fix auto resizing * Display upload date in table * Clean up repo * Use material theme for material table (#835) * Fix hollusion not rendering by: (#825) * Fix hollusion not rendering by: - removing dangerous getElementBy... - encapsulating canvas in ShapeDrawn - Passing canvas down to CanvasOutput - Made global canvas a constant. (copy out of it) - Rewriting all draw calls (curve, show, anaglyph, hollusion) to return a canvas. * Linting fixes. * Increased number of hollusion frames as requested. * Data Viz: Resize viewport to fit drawing (#785) * Resize viewport to fit drawing * Fixed bug for circular lists
In this commit, tabs in the Playground are now tied to their respective chapters. For example, Source §1 now only shows the "Introduction" tab.
A screenshot of what happens when 'Source §2' is selected in the Playground:
This change is done in line with the future addition of the Substituter feature, which is only enabled for Source §2 and below - see #803
Note: disabling of tabs based on chapters is not done for Sourcecast and Sourcereel as I am not sure how it would affect the recording. If the developers for these features would advise how to do so, that would be great!
Note 2: this Pull Request was originally full of different unrelated changes for Playground side content. The changes have been since rebased into their own PRs:
Thanks to @lumos309 for a bug fix for a Playground crash when the editor was trying to find the non-existent Inspector/Env Visualiser tabs!