Component Overview
The image below contains a high-level overview of the component hierarchy within the application. The following conceptual building blocks are used to create the interface:
 
- 
Application - highest level in the component structure. Handles all application-level logic (e.g. initalizing the app). 
- 
Modals - all pop-up windows used by the tool. (Connection modal, save-dashboard modal, errors/warnings, etc.) 
- 
Drawer - the sidebar on the left side of the screen. Contains buttons to perform application-level actions. 
- 
The Dashboard - Main dashboard component. Renders components dynamically based on the current state. 
- 
Dashboard Header - the textbox at the top of the screen that lets you set a title for the dashboard, plus the page selector. 
- 
Pages - a dashboard has one or more pages, each of which can have a list of cards. 
- 
Cards - a `block' inside a dashboard. Each card contains a `view' window, and a `settings' window. 
- 
Card View - the front of the card containing the selected report. 
- 
Card Settings - the back of the card, containing the cypher editor and advanced settings for the report. 
- 
Card View Header - the header of the card, containing a text box that acts as the name of the report. 
- 
Report - the component inside the card view that handles query execution and result parsing. Contains a single chart (visualization) 
- 
Card View Footer - The footer of the card view. Depending on the type, contains several `selectors' that modify the visualization. 
- 
Card Settings Header - Header of the card settings, used for moving/deleting the card. 
- 
Card Settings Content - the component containing the main content of the report. This is most often the Cypher query editor. 
- 
Card Settings Footer - the `footer' of the card. This contains the `advanced settings' window for reports. 
- 
Charts - the different visualizations used by the application: bar charts, tables, graphs, etc. 
A note on Cards v.s. Reports
Whereas a user might associate a Card in NeoDash to a report directly, the application has a more nuanced seggration of responsibilities:
- 
The Card is responsible for positioning the component in a page. 
- 
The Card Content is the core element of the card (exclusive of the title header and any optional footer). 
- 
A Report sits inside the card content, and handles the running of queries and displaying errors. 
- 
A Chart is rendered by the report and is solely responsible for rendering a specific visualization.