|
1 | 1 |
|
2 | | -``` |
3 | | -NeoDash is currently being reworked internally to use a modern React architecture. |
4 | | -Big code changes coming soon... |
5 | | -``` |
| 2 | +## NeoDash - Neo4j Dashboard Builder |
| 3 | +NeoDash is an open source tool for visualizing your Neo4j data. It lets you group visualizations together as dashboards, and allow for interactions between reports. |
| 4 | + |
| 5 | + |
| 6 | + |
| 7 | +Neodash supports presenting your data as tables, graphs, bar charts, line charts, maps and more. It contains a Cypher editor to directly write the Cypher queries that populate the reports. You can save dashboards to your database, and share them with others. |
| 8 | + |
| 9 | +## Running NeoDash |
| 10 | +There are three ways to run the application: |
| 11 | + |
| 12 | +1. You can install NeoDash into Neo4j Desktop from the [graph app gallery](https://install.graphapp.io). NeoDash will automatically connect to your active database. |
| 13 | +2. You can run NeoDash from a web browser by visiting http://neodash.graphapp.io. |
| 14 | +3. For offline deployments, you can build the application yourself. See the developer guide below. |
| 15 | + |
| 16 | + |
| 17 | +# Developer Guide |
| 18 | +## Run & Build |
| 19 | +NeoDash is built with React. You'll need `npm` installed to run the web app. |
| 20 | + |
| 21 | +To run the application in development mode: |
| 22 | +- clone this repository. |
| 23 | +- open a terminal and navigate to the directory you just cloned. |
| 24 | +- execute `npm install` to install the necessary dependencies. |
| 25 | +- execute `npm run dev` to run the app in development mode. |
| 26 | +- the application should be available at http://localhost:3000. |
| 27 | + |
| 28 | + |
| 29 | +To build the app for production: |
| 30 | +- follow the steps above to clone the repository and install dependencies. |
| 31 | +- execute `npm run build`. This will create a `build` folder in your project directory. |
| 32 | +- deploy the contents of the build folder to a web server. You should then be able to run the web app. |
| 33 | + |
| 34 | + |
| 35 | + ## Extending NeoDash |
| 36 | + As of v2.0, NeoDash is easy to extend with your own visualizations. There are two steps to take to plug in your own charts: |
| 37 | + |
| 38 | +### 1. Create the React component |
| 39 | +All NeoDash charts implement the interface defined in `src/charts/Chart.tsx`. A custom chart must do the same. the following parameter as passed to your chart from the application: |
| 40 | +- `records`: a list of Neo4j Records. This is the raw data returned from the Neo4j driver. |
| 41 | +- `settings`: a dictionary of settings as defined under "advanced report settings" for each report. You can use these values to customize your visualization based on user input. |
| 42 | +- `selection`: a dictionary with the selection made in the report footer. |
| 43 | +- `dimensions`: an array with the dimensions of the report (mostly not needed, charts automatically fill up space). |
| 44 | +- `queryCallback`: a way for the report to read more data from Neo4j, on interactions. |
| 45 | +- `setGlobalParameter`: a way for the report to set globally available Cypher parameters, on interactions. |
| 46 | + |
| 47 | +Make sure that your component renders a React component. your component will be automatically scaled to the size of the report. See the other charts in `src/charts/` for examples. |
| 48 | + |
| 49 | +### 2. Extend the config to make your component selectable |
| 50 | + |
| 51 | +To let users choose your visualization, you must add it to the app's report configuration. This config is located in `src/config/ReportConfig.tsx`, and defined by the dictionary `REPORT_TYPES`. |
| 52 | + |
| 53 | +To add your visualization to the config, add a new key to the `REPORT_TYPES` dictionary with a unique name. The entry's value is an object which can contain the following fields: |
| 54 | +- `label`: a display name for the visualization. Mandatory. |
| 55 | +- `component`: the React component that renders the visualization. Mandatory. |
| 56 | +- `helperText`: a string that is show under the query box in the report settings. Mandatory. |
| 57 | +- `selection`: a list that contains each of the selection boxes present in the report footer. Optional. |
| 58 | +- `settings`: a list of selection boxes that shows under the advanced settings. Optional. |
| 59 | +- `maxRecords`: a hard limit on the number of records the visualization can handle. Mandatory. |
| 60 | +- `useRecordMapper`: whether to use the in-built record mapper to fix your results in a specific format. Optional. |
| 61 | +- `useNodePropsAsFields`: whether to use the node property selector as a report footer override. Optional. |
| 62 | + |
| 63 | +If all works, please consider contributing your code to this repository. |
| 64 | + |
| 65 | +## Questions / Suggestions |
| 66 | +If you have any questions about NeoDash, please reach out. For feature requests, consider opening an issue(link) on GitHub. |
6 | 67 |
|
0 commit comments