Skip to content

Commit 32ccb85

Browse files
authored
Merge pull request #160 from mercedes-benz/develop
OUPT Sprint 44 / Neodash 2.4.9 merge
2 parents bd7380d + b760424 commit 32ccb85

File tree

105 files changed

+2118
-1118
lines changed

Some content is hidden

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

105 files changed

+2118
-1118
lines changed

.eslintrc.json

+6-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
"extends": ["eslint:recommended", "prettier", "plugin:@typescript-eslint/recommended"], // this is optional
55
"env": {
66
"browser": true,
7-
"node": true
7+
"node": true,
8+
"jest": true
89
},
910
"settings": {
1011
"react": {
@@ -166,5 +167,9 @@
166167
],
167168
"symbol-description": "error",
168169
"yoda": "error"
170+
},
171+
"globals": {
172+
"cy": "readonly",
173+
"Cypress": "readonly"
169174
}
170175
}

.github/workflows/master-deployment.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ jobs:
7979
context: .
8080
file: ./Dockerfile
8181
push: true
82-
tags: ${{ secrets.DOCKER_HUB_LABS_USERNAME }}/neodash:latest,${{ secrets.DOCKER_HUB_LABS_USERNAME }}/neodash:2.4.8
82+
tags: ${{ secrets.DOCKER_HUB_LABS_USERNAME }}/neodash:latest,${{ secrets.DOCKER_HUB_LABS_USERNAME }}/neodash:2.4.9
8383
build-docker-legacy:
8484
needs: build-test
8585
runs-on: neodash-runners
@@ -103,7 +103,7 @@ jobs:
103103
context: .
104104
file: ./Dockerfile
105105
push: true
106-
tags: ${{ secrets.DOCKER_HUB_USERNAME }}/neodash:latest,${{ secrets.DOCKER_HUB_USERNAME }}/neodash:2.4.8
106+
tags: ${{ secrets.DOCKER_HUB_USERNAME }}/neodash:latest,${{ secrets.DOCKER_HUB_USERNAME }}/neodash:2.4.9
107107
deploy-gallery:
108108
runs-on: neodash-runners
109109
strategy:

README.md

+15-7
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,24 @@
11

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.
2+
## NeoDash Labs - Neo4j Dashboard Builder
43

5-
![screenshot](public/screenshot.png)
4+
![screenshot](evolving.png)
5+
6+
In September 2024 **Neo4j [announced](https://www.datanami.com/2024/09/04/neo4j-simplifies-graph-database-in-the-cloud/#:~:text=NeoDash%20is%20an%20open%20source,was%20open%20source%2C%20not%20supported) NeoDash is evolving into a fully supported dashboard builder, as part of the Neo4j product suite**.
7+
8+
This project (NeoDash Labs) will still be available and contain experimental features, but will **not** have official support. If you're interested to get official support for NeoDash as part of a Neo4j License agreement, please reach out to your Neo4j contact person.
9+
10+
## About NeoDash Labs
11+
NeoDash is a web-based tool for visualizing your Neo4j data. It lets you group visualizations together as dashboards, and allow for interactions between reports.
612

713
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.
814

9-
## Try NeoDash
15+
## Try NeoDash Labs
1016
You can run NeoDash in one of three ways:
1117

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.
18+
1. You can install NeoDash Labs into Neo4j Desktop from the [graph app gallery](https://install.graphapp.io). NeoDash will automatically connect to your active database.
19+
> Note: never versions of Neo4j Desktop do not support adding experimental graph apps such as NeoDash.
20+
21+
2. You can run NeoDash Labs from a web browser by visiting http://neodash.graphapp.io.
1422
3. For on-prem deployments, you can build the application yourself, or pull the latest Docker image from Docker Hub.
1523
```
1624
# Run the application on http://localhost:5005
@@ -79,4 +87,4 @@ If you have any questions about NeoDash, please reach out to the maintainers:
7987
- Connect with us on the [Neo4j Discord](https://neo4j.com/developer/discord/).
8088
- Create a post on the Neo4j [Community Forum](https://community.neo4j.com/).
8189

82-
> 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.
90+
> NeoDash Labs is a free and open-source tool developed by the Neo4j community - not an official Neo4j product. Use at your own risk!

changelog.md

+20
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,23 @@
1+
## NeoDash 2.4.9
2+
This release adds some minor changes to documentation and implements some community contributions.
3+
- Added notice about project evolution: [#967](https://github.com/neo4j-labs/neodash/pull/967)
4+
- Added community contributions and bug fixes:
5+
[#967](https://github.com/neo4j-labs/neodash/pull/967)
6+
[#894](https://github.com/neo4j-labs/neodash/pull/894)
7+
[#822](https://github.com/neo4j-labs/neodash/pull/822)
8+
[#951](https://github.com/neo4j-labs/neodash/pull/951)
9+
[#946](https://github.com/neo4j-labs/neodash/pull/946)
10+
[#944](https://github.com/neo4j-labs/neodash/pull/944)
11+
[#943](https://github.com/neo4j-labs/neodash/pull/943)
12+
[#938](https://github.com/neo4j-labs/neodash/pull/938)
13+
[#935](https://github.com/neo4j-labs/neodash/pull/935)
14+
[#918](https://github.com/neo4j-labs/neodash/pull/918)
15+
[#908](https://github.com/neo4j-labs/neodash/pull/908)
16+
[#906](https://github.com/neo4j-labs/neodash/pull/906)
17+
[#902](https://github.com/neo4j-labs/neodash/pull/902)
18+
[#895](https://github.com/neo4j-labs/neodash/pull/895)
19+
[#893](https://github.com/neo4j-labs/neodash/pull/893)
20+
121
## NeoDash 2.4.8
222
This is a minor release containing an important fix and other minor fixes:
323

cypress.config.ts

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ export default defineConfig({
55
projectId: 'a8nh14',
66
video: false,
77
e2e: {
8+
defaultCommandTimeout: 20000,
89
experimentalMemoryManagement: true,
910
numTestsKeptInMemory: 0,
1011
baseUrl: 'http://localhost:3000',

cypress/Page.js

+156
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
const DB_URL = 'localhost';
2+
const DB_USERNAME = 'neo4j';
3+
const DB_PASSWORD = 'test1234';
4+
5+
export class Page {
6+
constructor(cardSelector) {
7+
this.cardSelector = cardSelector;
8+
}
9+
10+
init() {
11+
cy.viewport(1920, 1080);
12+
cy.visit('/', {
13+
onBeforeLoad(win) {
14+
win.localStorage.clear();
15+
},
16+
});
17+
return this;
18+
}
19+
20+
createNewDashboard() {
21+
cy.get('#form-dialog-title').then(($div) => {
22+
const text = $div.text();
23+
if (text == 'NeoDash - Neo4j Dashboard Builder') {
24+
cy.wait(100);
25+
// Create new dashboard
26+
cy.contains('New Dashboard').click();
27+
}
28+
});
29+
return this;
30+
}
31+
32+
connectToNeo4j() {
33+
cy.get('#form-dialog-title', { timeout: 20000 }).should('contain', 'Connect to Neo4j');
34+
cy.get('#url').clear().type(DB_URL);
35+
cy.get('#dbusername').clear().type(DB_USERNAME);
36+
cy.get('#dbpassword').type(DB_PASSWORD);
37+
cy.get('button').contains('Connect').click();
38+
cy.wait(100);
39+
return this;
40+
}
41+
42+
enableReportActions() {
43+
cy.get('main button[aria-label="Extensions').should('be.visible').click();
44+
cy.get('#checkbox-actions').scrollIntoView();
45+
cy.get('#checkbox-actions').should('be.visible').click();
46+
cy.get('.ndl-dialog-close').scrollIntoView().should('be.visible').click();
47+
cy.wait(100);
48+
return this;
49+
}
50+
51+
enableAdvancedVisualizations() {
52+
cy.get('main button[aria-label="Extensions').should('be.visible').click();
53+
cy.get('#checkbox-advanced-charts').should('be.visible').click();
54+
cy.get('.ndl-dialog-close').scrollIntoView().should('be.visible').click();
55+
cy.wait(100);
56+
return this;
57+
}
58+
59+
enableFormsExtension() {
60+
cy.get('main button[aria-label="Extensions').should('be.visible').click();
61+
cy.get('#checkbox-forms').scrollIntoView();
62+
cy.get('#checkbox-forms').should('be.visible').click();
63+
cy.get('.ndl-dialog-close').scrollIntoView().should('be.visible').click();
64+
cy.wait(100);
65+
return this;
66+
}
67+
68+
selectReportOfType(type) {
69+
cy.get('main .react-grid-item button[aria-label="add report"]').should('be.visible').click();
70+
cy.get('main .react-grid-item')
71+
.contains('No query specified.')
72+
.parentsUntil('.react-grid-item')
73+
.find('button[aria-label="settings"]', { timeout: 2000 })
74+
.should('be.visible')
75+
.click();
76+
cy.get(`${this.cardSelector} #type`, { timeout: 2000 }).should('be.visible').click();
77+
cy.contains(type).click();
78+
cy.wait(100);
79+
return this;
80+
}
81+
82+
createReportOfType(type, query, fast = false, run = true) {
83+
this.selectReportOfType(type);
84+
if (fast) {
85+
cy.get(`${this.cardSelector} .ReactCodeMirror`).type(query, {
86+
delay: 1,
87+
parseSpecialCharSequences: false,
88+
});
89+
} else {
90+
cy.get(`${this.cardSelector} .ReactCodeMirror`).type(query, { parseSpecialCharSequences: false });
91+
}
92+
cy.wait(400);
93+
94+
if (run) {
95+
this.closeSettings();
96+
}
97+
98+
cy.wait(100);
99+
return this;
100+
}
101+
102+
openSettings() {
103+
cy.get(this.cardSelector).find('button[aria-label="settings"]', { WAITING_TIME: 2000 }).click();
104+
cy.wait(100);
105+
return this;
106+
}
107+
108+
closeSettings() {
109+
cy.get(`${this.cardSelector} button[aria-label="run"]`).click();
110+
cy.wait(100);
111+
return this;
112+
}
113+
114+
openAdvancedSettings() {
115+
this.openSettings();
116+
cy.get(this.cardSelector).contains('Advanced settings').click();
117+
cy.wait(100);
118+
return this;
119+
}
120+
121+
closeAdvancedSettings() {
122+
cy.get(this.cardSelector).contains('Advanced settings').click();
123+
this.closeSettings();
124+
return this;
125+
}
126+
127+
openReportActionsMenu() {
128+
this.openSettings();
129+
cy.get(this.cardSelector).find('button[aria-label="custom actions"]').click();
130+
cy.wait(100);
131+
return this;
132+
}
133+
134+
updateDropdownAdvancedSetting(settingLabel, targetValue) {
135+
this.openAdvancedSettings();
136+
cy.get(`${this.cardSelector} .ndl-dropdown`).contains(settingLabel).siblings('div').click();
137+
cy.contains(targetValue).click();
138+
this.closeAdvancedSettings();
139+
return this;
140+
}
141+
142+
updateChartQuery(query) {
143+
this.openSettings();
144+
145+
cy.get(this.cardSelector)
146+
.find('.ndl-cypher-editor div[role="textbox"]')
147+
.should('be.visible')
148+
.click()
149+
.clear()
150+
.type(query);
151+
cy.wait(100);
152+
153+
this.closeSettings();
154+
return this;
155+
}
156+
}

0 commit comments

Comments
 (0)