-
Notifications
You must be signed in to change notification settings - Fork 483
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
React Wrapper Step 4: Extract PlaySpaceHeader from ejs #7063
Merged
Merged
Changes from all commits
Commits
Show all changes
12 commits
Select commit
Hold shift + click to select a range
2af1b69
Clone AppView.jsx into AppLabView.jsx
islemaster 1162dac
Pull #designToggleRow out of ejs
islemaster ac61a8d
Applab doesn't need to pass extraControlRows (the debugger) to visual…
islemaster 338743d
Extract repeatable top-level render method for Applab
islemaster 40b3adc
Simplify renderToggleRow
islemaster a1ecd74
Render PlaySpaceHeader via AppLabView
islemaster 9932c00
s/initialScreen/activeScreenId to call out statelessness
islemaster 7d734a9
Push toggle hide logic into AppLabView
islemaster 74d4670
Push view data button hide logic into AppLabView
islemaster 2c167a5
Remove redundant renderToggleRow method
islemaster 3d90130
s/#designToggleRow/#playSpaceHeader
islemaster 190a131
Remove redundant configurePlaySpaceHeader method
islemaster File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
'use strict'; | ||
|
||
var PlaySpaceHeader = require('./PlaySpaceHeader.jsx'); | ||
var ProtectedStatefulDiv = require('../templates/ProtectedStatefulDiv.jsx'); | ||
var StudioAppWrapper = require('../templates/StudioAppWrapper.jsx'); | ||
|
||
/** | ||
* Top-level React wrapper for our standard blockly apps. | ||
*/ | ||
var AppLabView = React.createClass({ | ||
propTypes: { | ||
assetUrl: React.PropTypes.func.isRequired, | ||
isDesignModeHidden: React.PropTypes.bool.isRequired, | ||
isEditingProject: React.PropTypes.bool.isRequired, | ||
isEmbedView: React.PropTypes.bool.isRequired, | ||
isReadOnlyView: React.PropTypes.bool.isRequired, | ||
isShareView: React.PropTypes.bool.isRequired, | ||
isViewDataButtonHidden: React.PropTypes.bool.isRequired, | ||
|
||
startInDesignMode: React.PropTypes.bool.isRequired, | ||
activeScreenId: React.PropTypes.string, | ||
screenIds: React.PropTypes.arrayOf(React.PropTypes.string).isRequired, | ||
onDesignModeButton: React.PropTypes.func.isRequired, | ||
onCodeModeButton: React.PropTypes.func.isRequired, | ||
onViewDataButton: React.PropTypes.func.isRequired, | ||
onScreenChange: React.PropTypes.func.isRequired, | ||
onScreenCreate: React.PropTypes.func.isRequired, | ||
|
||
renderCodeWorkspace: React.PropTypes.func.isRequired, | ||
renderVisualizationColumn: React.PropTypes.func.isRequired, | ||
onMount: React.PropTypes.func.isRequired | ||
}, | ||
|
||
componentDidMount: function () { | ||
this.props.onMount(); | ||
}, | ||
|
||
render: function () { | ||
var playSpaceHeader; | ||
if (!this.props.isReadOnlyView) { | ||
playSpaceHeader = <PlaySpaceHeader | ||
hideToggle={this.shouldHideToggle()} | ||
hideViewDataButton={this.shouldHideViewDataButton()} | ||
startInDesignMode={this.props.startInDesignMode} | ||
activeScreenId={this.props.activeScreenId} | ||
screenIds={this.props.screenIds} | ||
onDesignModeButton={this.props.onDesignModeButton} | ||
onCodeModeButton={this.props.onCodeModeButton} | ||
onViewDataButton={this.props.onViewDataButton} | ||
onScreenChange={this.props.onScreenChange} | ||
onScreenCreate={this.props.onScreenCreate} />; | ||
} | ||
|
||
return ( | ||
<StudioAppWrapper | ||
assetUrl={this.props.assetUrl} | ||
isEmbedView={this.props.isEmbedView} | ||
isShareView={this.props.isShareView}> | ||
<div id="visualizationColumn"> | ||
{playSpaceHeader} | ||
<ProtectedStatefulDiv renderContents={this.props.renderVisualizationColumn} /> | ||
</div> | ||
<ProtectedStatefulDiv id="visualizationResizeBar" className="fa fa-ellipsis-v" /> | ||
<ProtectedStatefulDiv | ||
id="codeWorkspace" | ||
renderContents={this.props.renderCodeWorkspace} /> | ||
</StudioAppWrapper> | ||
); | ||
}, | ||
|
||
shouldHideToggle: function () { | ||
return this.props.isShareView || this.props.isDesignModeHidden; | ||
}, | ||
|
||
shouldHideViewDataButton: function () { | ||
return this.props.isViewDataButtonHidden || | ||
this.props.isDesignModeHidden || | ||
this.props.isShareView || | ||
!this.props.isEditingProject; | ||
} | ||
}); | ||
module.exports = AppLabView; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
Should all of these on* methods not be in reactInitialProps_ since presumably they wont be changing on rerender? Or is the goal here just to show which things we might be able to move into a redux store?
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.
I just put everything that got defined in
Applab.init()
intoreactInitialProps_
- maybe I should have named itreactDefinedOnInitProps_
. The rest of these might be defined as "things I can get at anytime." Eventually I'd like both these and thereactInitialProps_
to get absorbed into redux, this just seemed like an appropriate intermediate step.