Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ const app = require('ampersand-app');
const ExplainBody = require('./explain-body');
const ExplainHeader = require('./explain-header');

const ExplainActions = require('../actions');

// const debug = require('debug')('mongodb-compass:explain');

/**
Expand All @@ -30,7 +28,6 @@ class CompassExplain extends React.Component {
}

componentWillMount() {
ExplainActions.fetchExplainPlan();
this.queryBar = app.appRegistry.getComponent('Query.QueryBar');
}

Expand Down
12 changes: 8 additions & 4 deletions src/internal-packages/explain/lib/stores/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ const CompassExplainStore = Reflux.createStore({
if (ns && toNS(ns).collection) {
this.query = {};
this._reset();
this.fetchExplainPlan();
}
});

Expand All @@ -54,9 +53,14 @@ const CompassExplainStore = Reflux.createStore({
},

onQueryChanged(state) {
this.query = state.query;
this._reset();
this.fetchExplainPlan();
if (state.query) {
this.query = state.query;
if (state.queryState === 'reset') {
this._reset();
} else {
this.fetchExplainPlan();
}
}
},

/**
Expand Down
2 changes: 2 additions & 0 deletions src/internal-packages/query/lib/store/query-changed-store.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ const QueryChangedStore = Reflux.createStore({
getInitialState() {
return {
query: null,
queryState: 'reset',
sort: {},
limit: 0,
skip: 0,
Expand All @@ -47,6 +48,7 @@ const QueryChangedStore = Reflux.createStore({
if (!_.isEqual(this.state.query, state.lastExecutedQuery)) {
this.setState({
query: state.lastExecutedQuery,
queryState: state.queryState,
sort: state.sort,
limit: state.limit,
skip: state.skip,
Expand Down
14 changes: 13 additions & 1 deletion src/internal-packages/query/lib/store/query-store.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,17 @@ const debug = require('debug')('mongodb-compass:stores:query');

const USER_TYPING_DEBOUNCE_MS = 100;
const FEATURE_FLAG_REGEX = /^(enable|disable) (\w+)\s*$/;
const RESET_STATE = 'reset';
const APPLY_STATE = 'apply';

const DEFAULT_QUERY = {};
const DEFAULT_SORT = { _id: -1 };
const DEFAULT_LIMIT = 1000;
const DEFAULT_SKIP = 0;
const DEFAULT_PROJECT = {};
const DEFAULT_MAX_TIME_MS = ms('10 seconds');
const DEFAULT_STATE = RESET_STATE;
// const DEFAULT_QUERY_STRING = '{}';

/**
* The reflux store for the schema.
Expand Down Expand Up @@ -59,6 +63,7 @@ const QueryStore = Reflux.createStore({
project: DEFAULT_PROJECT,
maxTimeMS: DEFAULT_MAX_TIME_MS,
queryString: '',
queryState: DEFAULT_STATE, // either apply or reset
valid: true,
featureFlag: false,
lastExecutedQuery: null,
Expand Down Expand Up @@ -404,6 +409,8 @@ const QueryStore = Reflux.createStore({
return;
}

this.setState({queryState: APPLY_STATE});

// empty string is interpreted as {}
if (this.state.queryString === '') {
this.setQuery({});
Expand All @@ -419,10 +426,15 @@ const QueryStore = Reflux.createStore({
* dismiss current changes to the query and restore `{}` as the query.
*/
reset() {
this.setState({queryState: RESET_STATE});
if (!_.isEqual(this.state.query, {})) {
this.setQuery({});
if (!_.isEqual(this.state.lastExecutedQuery, {})) {
this.apply();
if (this.state.valid) {
this.setState({
lastExecutedQuery: _.clone(this.state.query)
});
}
}
}
},
Expand Down