Skip to content

Commit 7916e14

Browse files
authored
2.1.2 Release (#152)
## NeoDash 2.1.2 The 2.1.2 release contains some bug fixes and minor improvements to the application. Application changes: - Added button to clone (duplicate) a report inside a dashboard. - Added option to show/hide labels inside circle packing charts. - Changed dashboard layout compaction strategy to be more natural. - Fixed card headers not rendering correctly in read-only mode. - Fixed rendering issues for table columns containing null values. Operational changes: - Added support for username/password environment variables in Docker.
1 parent 16cab52 commit 7916e14

File tree

109 files changed

+2654
-100
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

109 files changed

+2654
-100
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
name: Bug report
3+
about: Create a report to help us improve
4+
title: ''
5+
labels: bug
6+
assignees: ''
7+
8+
---
9+
10+
## Guidelines
11+
Please note that GitHub issues are only meant for bug reports/feature requests.
12+
13+
14+
Before creating a new issue, please check whether someone else has raised the same issue. You may be able to add context to that issue instead of duplicating the report. However, each issue should also only be focussed on a _single_ problem, so do not describe new problems within an existing thread - these are very hard to track and manage, and your problem may be ignored. Finally, do not append comments to closed issues; if the same problem re-occurs, open a new issue, and include a link to the old one.
15+
16+
To help us understand your issue, please specify important details, primarily:
17+
18+
- NeoDash version: X.Y.Z
19+
- Neo4j Database version: X.Y.Z (Community/Enterprise/Aura).
20+
21+
- **Steps to reproduce**
22+
- Expected behavior
23+
- Actual behavior
24+
25+
Additionally, include (as appropriate) screenshots, drawings, etc.
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
name: Feature request
3+
about: Suggest an idea for this project
4+
title: ''
5+
labels: feature
6+
assignees: ''
7+
8+
---
9+
10+
## Guidelines
11+
Please note that GitHub issues are only meant for bug reports/feature requests.
12+
13+
## Feature request template
14+
15+
**Is your feature request related to a problem? Please describe.**
16+
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
17+
18+
**Describe the solution you'd like**
19+
A clear and concise description of what you want to happen.
20+
21+
**Describe alternatives you've considered**
22+
A clear and concise description of any alternative solutions or features you've considered.
23+
24+
**Additional context**
25+
Add any other context or screenshots about the feature request here.

.github/workflows/master-deployment.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ jobs:
7171
context: .
7272
file: ./Dockerfile
7373
push: true
74-
tags: ${{ secrets.DOCKER_HUB_USERNAME }}/neodash:latest,${{ secrets.DOCKER_HUB_USERNAME }}/neodash:2.1
74+
tags: ${{ secrets.DOCKER_HUB_USERNAME }}/neodash:latest,${{ secrets.DOCKER_HUB_USERNAME }}/neodash:2.1.2
7575
build-npm:
7676
needs: build-test
7777
runs-on: ubuntu-latest
@@ -87,6 +87,7 @@ jobs:
8787
- run: rm -rf docs
8888
- run: npm install
8989
- run: npm run-script build
90+
- run: curl ${{ secrets.INDEX_HTML_DEPLOYMENT_URL }} > dist/index.html
9091
- run: npm pack
9192
- run: rm -rf target
9293
- run: mkdir target

Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ WORKDIR /usr/local/src/neodash
66

77
# Pull source code if you have not cloned the repository
88
#RUN apk add --no-cache git
9-
#RUN git clone https://github.com/nielsdejong/neodash.git /usr/local/src/neodash
9+
#RUN git clone https://github.com/neo4j-labs/neodash.git /usr/local/src/neodash
1010

1111
# Copy sources and install/build
1212
COPY ./package.json /usr/local/src/neodash/package.json
@@ -38,4 +38,4 @@ RUN chown -R nginx:nginx /usr/share/nginx/html/
3838
USER nginx
3939
EXPOSE 5005
4040
HEALTHCHECK cmd curl --fail http://localhost:5005 || exit 1
41-
LABEL version="2.1.1"
41+
LABEL version="2.1.2"

README.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,18 +20,20 @@ docker run -it --rm -p 5005:5005 nielsdejong/neodash
2020

2121
> Windows users may need to prefix the `docker run` command with `winpty`.
2222
23-
See the [Developer Guide](https://github.com/nielsdejong/neodash/wiki/Developer%20Guide) for more on installing, building, and running the application.
23+
See the [Developer Guide](https://github.com/neo4j-labs/neodash/wiki/Developer%20Guide) for more on installing, building, and running the application.
2424

2525
## User Guide
2626
NeoDash comes with built-in examples of dashboards and reports. For more details on the types of reports and how to customize them, see the [User Guide](
27-
https://github.com/nielsdejong/neodash/wiki/User-Guide).
27+
https://github.com/neo4j-labs/neodash/wiki/User-Guide).
2828

2929
## Publish Dashboards
30-
After building a dashboard, you can chose to deploy a read-only, standalone instance for users. See [Publishing](https://github.com/nielsdejong/neodash/wiki/Publishing) for more on publishing dashboards.
30+
After building a dashboard, you can chose to deploy a read-only, standalone instance for users. See [Publishing](https://github.com/neo4j-labs/neodash/wiki/Publishing) for more on publishing dashboards.
3131

3232

3333
## Questions / Suggestions
34-
If you have any questions about NeoDash, please reach out to the maintainers. For feature requests, consider opening an issue on GitHub.
35-
34+
If you have any questions about NeoDash, please reach out to the maintainers:
35+
- Create an [Issue](https://github.com/nielsdejong/neodash/issues/new) on GitHub for feature requests/bugs.
36+
- Connect with us on the [Neo4j Discord](https://neo4j.com/developer/discord/).
37+
- Create a post on the Neo4j [Community Forum](https://community.neo4j.com/).
3638

3739
> NeoDash is a free and open-source tool developed by the Neo4j community - not an official Neo4j product. If you have a need for a commercial agreement around training, custom extensions or other services, please contact the [Neo4j Professional Services](https://neo4j.com/professional-services/) team.

changelog.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ Main updates:
1515

1616
Other changes:
1717
- Added continuous integration and deployment workflows.
18-
- Created a new [User Guide](https://github.com/nielsdejong/neodash/wiki/User-Guide) with documentation on all report customizations is available.
19-
- Added a new [Developer Guide](https://github.com/nielsdejong/neodash/wiki/Developer-Guide) with info on installing, building and extending the application.
18+
- Created a new [User Guide](https://github.com/neo4j-labs/neodash/wiki/User-Guide) with documentation on all report customizations is available.
19+
- Added a new [Developer Guide](https://github.com/neo4j-labs/neodash/wiki/Developer-Guide) with info on installing, building and extending the application.
2020

2121

2222
## NeoDash 2.0.15

cypress/integration/start_page.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ describe('NeoDash E2E Tests', () => {
166166
})
167167

168168
// Test load stress-test dashboard from file
169-
it.only('test load dashboard from file and stress test report customizations', () => {
169+
it('test load dashboard from file and stress test report customizations', () => {
170170
try {
171171
var NUMBER_OF_PAGES_IN_STRESS_TEST_DASHBOARD = 5;
172172
const file = cy.request(loadDashboardURL).should((response) => {

docs/Adding-Visualizations.adoc

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
You can extend NeoDash with your own visualizations without diving deep
2+
into the core application. Likewise, adding a new customization to an
3+
existing report requires minimal changes.
4+
5+
== Add a Visualization
6+
7+
You can add a new chart to NeoDash in three steps:
8+
9+
[arabic]
10+
. Make sure you have a local copy of NeoDash installed and running:
11+
12+
....
13+
git clone git@github.com:nielsdejong/neodash.git
14+
git checkout develop
15+
npm install
16+
npm run dev
17+
....
18+
19+
[arabic, start=2]
20+
. Create a new file `src/charts/ABCChart.tsx`. In here, add a new object
21+
that implements the `ChartProps` interface:
22+
23+
....
24+
export interface ChartProps {
25+
records: Neo4jRecord[]; // Query output, Neo4j records as returned from the driver.
26+
selection?: Record<string, any>; // A dictionary with the selection made in the report footer.
27+
settings?: Record<string, any>; // A dictionary with the 'advanced settings' specified through the NeoDash interface.
28+
dimensions?: Number[]; // a 2D array with the dimensions of the report (likely not needed, charts automatically fill up space).
29+
fullscreen?: boolean; // flag indicating whether the report is rendered in a fullscreen view.
30+
queryCallback?: (query: string, parameters: Record<string, any>, records: Neo4jRecord[]) => null; // Optionally, a way for the report to read more data from Neo4j.
31+
setGlobalParameter?: (name: string, value: string) => void; // Allows a chart to update a global dashboard parameter to be used in Cypher queries for other reports.
32+
getGlobalParameter?: (name) => string; // Allows a chart to get a global dashboard parameter.
33+
}
34+
....
35+
36+
Note that the only mandatory property is `records`. This contains a list
37+
of
38+
https://neo4j.com/docs/api/javascript-driver/current/class/lib6/record.js~Record.html[records]
39+
returned from the Cypher query specified by the user.
40+
41+
For inspiration, below is a basic example of a component that renders
42+
all returned data as a list:
43+
44+
....
45+
import React from 'react';
46+
import { ChartProps } from './Chart';
47+
import { renderValueByType } from '../report/ReportRecordProcessing';
48+
49+
const NeoListReport = (props: ChartProps) => {
50+
const records = props.records;
51+
return records.map(r => {
52+
return <div>{
53+
r["_fields"].map(value => {
54+
return <>{renderValueByType(value)},</>
55+
})}
56+
</div>
57+
})
58+
}
59+
60+
export default NeoListReport;
61+
....
62+
63+
[arabic, start=3]
64+
. Make your component selectable. Now that you’ve created a new chart
65+
type, you need to tell the card settings window that it can be chosen by
66+
a user.
67+
68+
To accomplish this, open `config/ReportConfig.tsx`. Add a new entry to
69+
the `REPORT_TYPES` dictionary:
70+
71+
....
72+
export const REPORT_TYPES = {
73+
...
74+
"list": {
75+
label: "List",
76+
helperText: "I'm a list",
77+
component: NeoListReport,
78+
maxRecords: 10,
79+
settings: {}
80+
},
81+
...
82+
}
83+
....
84+
85+
Inspect the other entries for examples of the fields that each entry can
86+
have. Restart the application, and you should be able to select your new
87+
chart type. Finally, *Cypress* can be used to develop an end-to-end test
88+
for your component in a matter of minutes. See Testing for more on
89+
Cypress testing.
90+
91+
____
92+
After you added a visualization or a new customization, consider
93+
contributing it to the NeoDash project by creating a
94+
https://github.com/nielsdejong/neodash/pulls[Pull Request].
95+
____

docs/Bar-Chart.adoc

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
A bar chart will draw categories and values in a familiar bar-layout.
2+
The bar chart will require you to choose the following selections:
3+
4+
* *Category*: a text field. These will be the labels on the bars.
5+
* *Value*: a numeric field. This will be the height of the bars.
6+
* *Group*: Optionally, a second textual field. When ``Grouping'' is
7+
enabled in the advanced settings, the group can be used to draw a
8+
stacked bar chart, with several groups per category.
9+
10+
== Examples
11+
12+
=== Simple Bar Chart
13+
14+
[source,cypher]
15+
----
16+
MATCH (p:Person)-[e]->(m:Movie)
17+
RETURN m.title as Title, COUNT(p) as People
18+
----
19+
20+
image::./img/bar.png[Basic Table]
21+
22+
=== Stacked Bar Chart
23+
24+
[source,cypher]
25+
----
26+
Match (n:Person)-[e]->(m:Movie)
27+
RETURN m.title, COUNT(p) as People, type(e) as Role
28+
----
29+
30+
image::./img/barstacked.png[Basic Table]
31+
32+
== Advanced Settings
33+
34+
[width="100%",cols="19%,17%,26%,38%",options="header",]
35+
|===
36+
|Name |Type |Default Value |Description
37+
|Show Legend |on/off |off |If enabled, shows a legend at the top right
38+
of the visualization.
39+
40+
|Grouping |on/off |off |If enabled, lets users specify a third, grouping
41+
field. This is used to distinguish between different groups in the
42+
stacked bar chart.
43+
44+
|Value Scale |List |linear |When set to symlog, uses a Symmetric
45+
logarithmic scale instead of the default linear scale.
46+
47+
|Min Value |Number |auto |If not set to ``auto'', this variable is
48+
minimum value for the bar chart.
49+
50+
|Max Value |Number |auto |If not set to ``auto'', this variable is the
51+
maximum value for the bar chart.
52+
53+
|Group Mode |List |stacked |This setting determines how different groups
54+
are visualized when grouping is enabled. If set to stacked, different
55+
groups of the same category are stacked on top of each other. If set to
56+
grouped, they are placed alongside each other.
57+
58+
|Layout |List |vertical |Whether to use a vertical or horizontal bar
59+
chart layout.
60+
61+
|Color Scheme |List | |The color scheme to use for the category groups.
62+
Colors are assigned automatically (consequitevely) to the different
63+
groups returned by the Cypher query.
64+
65+
|Show Values on Bars |on/off |off |If enabled, shows the category value
66+
inside the respective bar.
67+
68+
|Label Rotation (degrees) |number |45 |the angle at which the bar labels
69+
are rotated.
70+
71+
|Margin Left (px) |number |50 |The margin in pixels on the left side of
72+
the visualization.
73+
74+
|Margin Right (px) |number |24 |The margin in pixels on the right side
75+
of the visualization.
76+
77+
|Margin Top (px) |number |24 |The margin in pixels on the top side of
78+
the visualization.
79+
80+
|Margin Bottom (px) |number |40 |The margin in pixels on the bottom side
81+
of the visualization.
82+
83+
|Legend Width (px) |number |128 |The width in pixels of each legend
84+
label on top of the visualization (if enabled).
85+
86+
|Hide Selections |on/off |off |If enabled, hides the property selector
87+
(footer of the visualization).
88+
89+
|Auto-run query |on/off |on |when activated automatically runs the query
90+
when the report is displayed. When set to `off', the query is displayed
91+
and will need to be executed manually.
92+
|===
93+
94+
== Rule-Based Styling
95+
96+
Using the link:Reports#rule-based-styling[Rule-Based Styling] menu, the
97+
following style rules can be applied to the bar chart:
98+
99+
- The color of the bar.

docs/Bloom-Integration.adoc

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
NeoDash can be linked to Neo4j Bloom perspectives by using
2+
https://neo4j.com/docs/bloom-user-guide/current/bloom-tutorial/deep-links/[Bloom
3+
Deep Links]. This functionality allows you to combine the power of graph
4+
reporting (NeoDash) with intuitive graph exploration (Bloom).
5+
6+
== Bloom Deep-Linking
7+
8+
To link NeoDash to a Bloom perspective, you will need to:
9+
10+
1. Create a Neo4j Bloom https://neo4j.com/docs/bloom-user-guide/current/bloom-perspectives/bloom-perspectives/[perspective].
11+
2. Define a https://neo4j.com/docs/bloom-user-guide/current/bloom-tutorial/search-phrases-advanced/[Bloom
12+
Search Phrase] for the perspective.
13+
3. Generate a https://neo4j.com/docs/bloom-user-guide/current/bloom-tutorial/deep-links/#_server_hosted_bloom[Deep
14+
Link] for your perspective and respective search phrase. This requires
15+
that you have a
16+
https://neo4j.com/docs/bloom-user-guide/current/bloom-installation/installation-activation/#installing-server-plugin[Server-hosted
17+
Bloom installation] running.
18+
19+
4. Use the deep link you created in either:
20+
- an iFrame Report (optionally passing in the dashboard parameters into
21+
the search phrase).
22+
- a Graph Report (Adding your deep link inside the
23+
`Drilldown Link' field under advanced settings):
24+
25+
image::./img/graphdrilldown.png[Graph Drilldown]

0 commit comments

Comments
 (0)