@@ -54,24 +67,26 @@ class CompassExplain extends React.Component {
);
}
- renderReadonly() {
- return (
-
- Explain plans on readonly views are not supported.
-
- );
- }
-
/**
* Render Explain.
*
* @returns {React.Component} The Explain view.
*/
render() {
+ let content;
+
+ if (this.CollectionStore.isReadonly()) {
+ content = this.renderWarning(READ_ONLY_WARNING);
+ } else if (this.props.explainState === 'initial') {
+ content = this.renderWarning(COLLECTION_SCAN_WARNING);
+ } else {
+ content = this.renderContent();
+ }
+
return (
- {this.CollectionStore.isReadonly() ? this.renderReadonly() : this.renderComponent()}
+ {content}
);
}
diff --git a/src/internal-packages/explain/lib/components/explain-header.jsx b/src/internal-packages/explain/lib/components/explain-header.jsx
index 05f4b7cc047..54d35f15f45 100644
--- a/src/internal-packages/explain/lib/components/explain-header.jsx
+++ b/src/internal-packages/explain/lib/components/explain-header.jsx
@@ -1,8 +1,9 @@
const React = require('react');
const ExplainSummary = require('./explain-summary');
+const app = require('ampersand-app');
const ViewSwitcher = require('./shared/view-switcher');
-const StatusRow = require('./shared/status-row');
+const StatusRow = app.appRegistry.getComponent('App.StatusRow');
const ExplainActions = require('../actions');
diff --git a/src/internal-packages/explain/styles/compass-explain.less b/src/internal-packages/explain/styles/compass-explain.less
index 61fc0352d18..dcabe7037aa 100644
--- a/src/internal-packages/explain/styles/compass-explain.less
+++ b/src/internal-packages/explain/styles/compass-explain.less
@@ -1,13 +1,5 @@
.compass-explain {
- &-notice {
- color: steelblue;
- background-color: #b0e0e6;
- border-radius: 5px;
- padding: 15px;
- margin-bottom: 10px;
- }
-
// hacks for json view on explain tab
ol.document-list li.document-list-item ol.document-property-body li.document-property.array ol.document-property-body .document-property-key,
ol.document-list li.document-list-item ol.document-property-body li.document-property.object ol.document-property-body .document-property-key {
diff --git a/src/internal-packages/explain/styles/index.less b/src/internal-packages/explain/styles/index.less
index f824d06ebcd..003bd8d6fb8 100644
--- a/src/internal-packages/explain/styles/index.less
+++ b/src/internal-packages/explain/styles/index.less
@@ -10,5 +10,4 @@
// shared components
@import './shared/view-switcher.less';
-@import './shared/status-row.less';
@import './shared/palette.less';
diff --git a/src/internal-packages/explain/styles/shared/status-row.less b/src/internal-packages/explain/styles/shared/status-row.less
deleted file mode 100644
index 3a6bcef820b..00000000000
--- a/src/internal-packages/explain/styles/shared/status-row.less
+++ /dev/null
@@ -1,14 +0,0 @@
-.status-row {
- display: flex;
- flex-wrap: nowrap;
- align-items: center;
- padding: 0 12px;
-
- min-height: 26px;
- background-color: @gray8;
- border-bottom: 1px solid #eaebeb;
-
- span, div, p {
- display: inline-block;
- }
-}
diff --git a/src/internal-packages/indexes/lib/component/indexes.jsx b/src/internal-packages/indexes/lib/component/indexes.jsx
index e41bb1a1a1a..f9af4877f2b 100644
--- a/src/internal-packages/indexes/lib/component/indexes.jsx
+++ b/src/internal-packages/indexes/lib/component/indexes.jsx
@@ -4,6 +4,7 @@ const IndexList = require('./index-list');
const CreateIndexButton = require('./create-index-button');
const LoadIndexesStore = require('../store/load-indexes-store');
const app = require('ampersand-app');
+const StatusRow = app.appRegistry.getComponent('App.StatusRow');
/**
* Component for the indexes.
@@ -67,9 +68,9 @@ class Indexes extends React.Component {
renderReadonly() {
return (
-
+
Readonly views may not contain indexes.
-
+
);
}
diff --git a/src/internal-packages/indexes/styles/index.less b/src/internal-packages/indexes/styles/index.less
index f6ad45adf6b..9832cf9344d 100644
--- a/src/internal-packages/indexes/styles/index.less
+++ b/src/internal-packages/indexes/styles/index.less
@@ -20,14 +20,6 @@
.index-container {
- &-notice {
- color: steelblue;
- background-color: #b0e0e6;
- border-radius: 5px;
- padding: 15px;
- margin-bottom: 10px;
- }
-
.column-container {
.column.main {
&::-webkit-scrollbar {
diff --git a/src/internal-packages/validation/lib/components/common/status-row.jsx b/src/internal-packages/validation/lib/components/common/status-row.jsx
index 6b795137e77..c47357cb480 100644
--- a/src/internal-packages/validation/lib/components/common/status-row.jsx
+++ b/src/internal-packages/validation/lib/components/common/status-row.jsx
@@ -10,7 +10,7 @@ class StatusRow extends React.Component {
*/
render() {
return (
-
+
{this.props.children}
diff --git a/src/internal-packages/validation/lib/components/validation.jsx b/src/internal-packages/validation/lib/components/validation.jsx
index 3745f1158b7..a4f629b1321 100644
--- a/src/internal-packages/validation/lib/components/validation.jsx
+++ b/src/internal-packages/validation/lib/components/validation.jsx
@@ -1,10 +1,11 @@
const app = require('ampersand-app');
const React = require('react');
const ValidationActions = require('../actions');
-const StatusRow = require('./common/status-row');
+const ValidationStatusRow = require('./common/status-row');
const ViewSwitcher = require('./common/view-switcher');
const RuleBuilder = require('./rule-builder');
const JSONView = require('./json-view');
+const StatusRow = app.appRegistry.getComponent('App.StatusRow');
const Grid = require('react-bootstrap').Grid;
@@ -69,7 +70,7 @@ class Validation extends React.Component {
return (
-
+
-
+
{view}
);
@@ -85,9 +86,9 @@ class Validation extends React.Component {
renderReadonly() {
return (
-
+
Document validation rules may not be added to readonly views.
-
+
);
}
diff --git a/src/internal-packages/validation/styles/index.less b/src/internal-packages/validation/styles/index.less
index 6056a1148e5..66be4862f8d 100644
--- a/src/internal-packages/validation/styles/index.less
+++ b/src/internal-packages/validation/styles/index.less
@@ -1,9 +1,9 @@
// import your less files here, one per component
@import './validation.less';
@import './view-switcher.less';
-@import './status-row.less';
@import './rule-builder.less';
@import './json-view.less';
@import './option-selector.less';
@import './editable.less';
@import './json-input.less';
+@import './validation-status-row.less';
diff --git a/src/internal-packages/validation/styles/status-row.less b/src/internal-packages/validation/styles/validation-status-row.less
similarity index 89%
rename from src/internal-packages/validation/styles/status-row.less
rename to src/internal-packages/validation/styles/validation-status-row.less
index 257382a825a..2fe8e873ea7 100644
--- a/src/internal-packages/validation/styles/status-row.less
+++ b/src/internal-packages/validation/styles/validation-status-row.less
@@ -1,4 +1,4 @@
-.status-row {
+.validation-status-row {
display: flex;
flex-wrap: nowrap;
align-items: center;
diff --git a/src/internal-packages/validation/styles/validation.less b/src/internal-packages/validation/styles/validation.less
index 28d99918823..91942a743cb 100644
--- a/src/internal-packages/validation/styles/validation.less
+++ b/src/internal-packages/validation/styles/validation.less
@@ -1,13 +1,5 @@
.validation {
- &-notice {
- color: steelblue;
- background-color: #b0e0e6;
- border-radius: 5px;
- padding: 15px;
- margin-bottom: 10px;
- }
-
&-rule-builder-wrapper {
// TODO work-around so that the dropdowns can be shown, otherwise they get cut off.
padding-bottom: 150px;