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 compass-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 compass-app-registry.
Local events are scoped to a Tab.
Global events are scoped to the whole Compass application.
- 'document-view-changed', view: indicates document view changed.
viewcan be eitherJSON,List, orTable. - '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. - '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.
- '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:
./dist: 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.
npm install -S @mongodb-js/compass-crud