diff --git a/src/components/DataBrowserHeaderBar/DataBrowserHeaderBar.react.js b/src/components/DataBrowserHeaderBar/DataBrowserHeaderBar.react.js index a722b5b912..073ef2fced 100644 --- a/src/components/DataBrowserHeaderBar/DataBrowserHeaderBar.react.js +++ b/src/components/DataBrowserHeaderBar/DataBrowserHeaderBar.react.js @@ -16,7 +16,7 @@ export default @DragDropContext(HTML5Backend) class DataBrowserHeaderBar extends React.Component { render() { - let { headers, onResize, selectAll, onAddColumn, updateOrdering, readonly } = this.props; + let { headers, onResize, selectAll, onAddColumn, updateOrdering, readonly, preventSchemaEdits } = this.props; let elements = [ // Note: bulk checkbox is disabled as all rows are selected (not just visible ones due to current lazy loading implementation) // TODO: add bulk checking only visible rows @@ -61,8 +61,9 @@ class DataBrowserHeaderBar extends React.Component { if (headers.length % 2) { finalStyle.background = 'rgba(224,224,234,0.10)'; } + elements.push( - readonly ? null : ( + readonly || preventSchemaEdits ? null : (
this.handleFetchedSchema()); if (!this.props.params.className && this.props.schema.data.get('classes')) { @@ -1055,3 +1061,7 @@ class Browser extends DashboardView { ); } } + +Browser.contextTypes = { + currentApp: PropTypes.instanceOf(ParseApp) +}; diff --git a/src/dashboard/Data/Browser/BrowserTable.react.js b/src/dashboard/Data/Browser/BrowserTable.react.js index 0e9f510dde..bfd61b2f90 100644 --- a/src/dashboard/Data/Browser/BrowserTable.react.js +++ b/src/dashboard/Data/Browser/BrowserTable.react.js @@ -15,6 +15,8 @@ import Parse from 'parse'; import React from 'react'; import styles from 'dashboard/Data/Browser/Browser.scss'; import Button from 'components/Button/Button.react'; +import ParseApp from 'lib/ParseApp'; +import PropTypes from 'lib/PropTypes'; const MAX_ROWS = 60; // Number of rows to render at any time const ROW_HEIGHT = 31; @@ -325,8 +327,14 @@ export default class BrowserTable extends React.Component { readonly={!!this.props.relation} handleDragDrop={this.props.handleHeaderDragDrop} onResize={this.props.handleResize} - onAddColumn={this.props.onAddColumn} /> + onAddColumn={this.props.onAddColumn} + preventSchemaEdits={this.context.currentApp.preventSchemaEdits} />
); } } + +BrowserTable.contextTypes = { + currentApp: PropTypes.instanceOf(ParseApp) +}; + diff --git a/src/dashboard/Data/Browser/BrowserToolbar.react.js b/src/dashboard/Data/Browser/BrowserToolbar.react.js index 6631a4a7ae..c7d07a7943 100644 --- a/src/dashboard/Data/Browser/BrowserToolbar.react.js +++ b/src/dashboard/Data/Browser/BrowserToolbar.react.js @@ -45,6 +45,8 @@ let BrowserToolbar = ({ enableDeleteAllRows, enableExportClass, enableSecurityDialog, + enableColumnManipulation, + enableClassManipulation }) => { let selectionLength = Object.keys(selection).length; let details = []; @@ -93,8 +95,8 @@ let BrowserToolbar = ({ menu = ( - - + {enableColumnManipulation ? :