Provide functionality shown in the "Documents" tab in the Collection view in
Compass.
| Key | Description |
|---|---|
CRUD.Document |
Renders a single document. |
CRUD.DocumentList |
Renders a list of documents. |
| Key | Description |
|---|---|
CRUD.Actions |
All the CRUD related actions. |
| Key | Description |
|---|---|
CRUD.InsertDocumentStore |
Triggers when a document is inserted. |
CRUD.ResetDocumentListStore |
Triggers when the query filter is reset. |
CRUD.LoadMoreDocumentsStore |
Triggers when more documents are fetched via scrolling. |
Components from this plugin can be interracted with using
hadron-app and hadron-app-registry. Here are
a few examples of working with compass-crud's Action and Roles.
Render an editable document in a React component.
const app = require('hadron-app');
const React = require('react');
class MyComponent extends React.Component {
constructor(props) {
super(props);
this.Document = app.appRegistry.getRole('CRUD.Document')[0].component;
}
render() {
return (<this.Document doc={this.props.document} editable />);
}
}Render a non-editable pre-expanded document in a React component.
const app = require('hadron-app');
const React = require('react');
class MyComponent extends React.Component {
constructor(props) {
super(props);
this.Document = app.appRegistry.getRole('CRUD.Document')[0].component;
}
render() {
return (<this.Document doc={this.props.document} expandAll />);
}
}Listen to the various CRUD actions.
const app = require('hadron-app');
const CrudActions = app.appRegistry.getAction('CRUD.Actions');
CrudActions.documentRemoved.listen((id) => {
console.log(`Document with _id ${id} removed.`);
});
CrudActions.openInsertDocumentDialog((doc, clone) => {
if (clone) {
console.log('Opening insert dialog with cloned document');
}
});
CrudActions.insertDocument((doc) => {
console.log('Inserting document into db');
});Various actions within this plugin will emit events for other parts of the
application can be listened to via hadron-app-registry.
Local events are scoped to a Tab.
Global events are scoped to the whole Compass application.
- 'compass:status:show-progress-bar': indicates to compass to show the progress bar. Called when refreshing documents and when paginating.
- 'document-view-changed', view: indicates document view changed.
viewcan be eitherJSON,List, orTable. - 'compass:status:done': indicates process is finished, this will remove the progress bar in compass. Called after refreshing document and pagination are complete.
- 'documents-paginated': indicates when pagination is complete. Called when calling the next or previous pages in pagination.
- 'documents-refreshed': indicates documents were refreshed.
- 'document-inserted': indicates documents were inserted. Called when
insertManyandinsertOnecomplete. - 'document-updated': indicates a document was updated.
- 'document-deleted': indicates a document was deleted.
- 'document-view-changed', view: indicates document view changed.
viewcan be eitherJSON,List, orTable. - 'documents-paginated': indicates when pagination is complete. Called when calling the next or previous pages in pagination.
- 'documents-refreshed': indicates documents were refreshed.
- 'document-inserted': indicates documents were inserted. Called when
insertManyandinsertOnecomplete. - 'document-updated': indicates a document was updated.
- 'document-deleted': indicates a document was deleted.
- 'import-finished': received when import in the import-export plugin is finished. Refreshes documents.
- 'query-changed': received when query was changed in the query bar. Handles updates to crud plugin's query state, and refreshes documents.
- 'refresh-data': received when other plugins need documents refreshed. Refreshes documents.
- 'instance-refreshed': received when compass instance was refreshed
- 'refresh-data': received when other plugins need documents refreshed.
Refreshes documents.
(reloaded). Refreshes instance state:
dataLakevariables.
- document-view-changed
- documents-paginated
- documents-refreshed
- document-inserted
- document-updated
- document-deleted
Compass Crud uses React, and Reflux for state management. There are two stores
we manage: crud-store(./src/stores/crud-store.js) and
grid-store(./src/stores/grid-store.js). Overall structure of this repo:
./config: webpack configurations for dev, prod, and testing./electron: electron setup to run this plugin locally../lib: webpack-compiled version of this plugin../scripts: scripts tolinkandunlinkReact version to compass when developing this locally in Compass../src/actions: reflux actions that are available throughout this plugin../src/assets: css assets, such as variables and styles from compass../src/components: react components that make up this plugin. Almost all components have a.jsx,.spec.js,.lessand.jsfiles../src/stores: home to reflux stores../src/utils: util.jsfiles to be used throughout the plugin.
./electron directory contains an Electron instance that allows for this plugin
to be developed in isolation from other Compass plugins. By default it sets up a
MongoDB connection to echo database and artists collection. To get it to
work with a db and collection of your choice, change db variable
here and collection variable here.
npm install -S @mongodb-js/compass-crud