diff --git a/.github/workflows/master-deployment.yml b/.github/workflows/master-deployment.yml index 820b12d8c..ea07725c0 100644 --- a/.github/workflows/master-deployment.yml +++ b/.github/workflows/master-deployment.yml @@ -79,7 +79,7 @@ jobs: context: . file: ./Dockerfile push: true - tags: ${{ secrets.DOCKER_HUB_LABS_USERNAME }}/neodash:latest,${{ secrets.DOCKER_HUB_LABS_USERNAME }}/neodash:2.4.9 + tags: ${{ secrets.DOCKER_HUB_LABS_USERNAME }}/neodash:latest,${{ secrets.DOCKER_HUB_LABS_USERNAME }}/neodash:2.4.10 build-docker-legacy: needs: build-test runs-on: neodash-runners @@ -103,7 +103,7 @@ jobs: context: . file: ./Dockerfile push: true - tags: ${{ secrets.DOCKER_HUB_USERNAME }}/neodash:latest,${{ secrets.DOCKER_HUB_USERNAME }}/neodash:2.4.9 + tags: ${{ secrets.DOCKER_HUB_USERNAME }}/neodash:latest,${{ secrets.DOCKER_HUB_USERNAME }}/neodash:2.4.10 deploy-gallery: runs-on: neodash-runners strategy: diff --git a/Dockerfile b/Dockerfile index a31be8d85..c3861089d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -44,4 +44,4 @@ USER nginx EXPOSE $NGINX_PORT HEALTHCHECK cmd curl --fail "http://localhost:$NGINX_PORT" || exit 1 -LABEL version="2.4.9" +LABEL version="2.4.10" diff --git a/changelog.md b/changelog.md index 9227e1fff..a00d1268a 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,19 @@ +## NeoDash 2.4.10 - Community contributions +This is a minor release containing bug fixes and improvements contributed by the NeoDash community. +- [#1039](https://github.com/neo4j-labs/neodash/pull/1039) - Fix default color scheme for bar charts +- [#1038](https://github.com/neo4j-labs/neodash/pull/1038) - Fix rule-based styling for line charts +- [#1036](https://github.com/neo4j-labs/neodash/pull/1036) - Fix table cell rule-based styling +- [#1029](https://github.com/neo4j-labs/neodash/pull/1029) - Fix rule-based styling for numeric values +- [#1028](https://github.com/neo4j-labs/neodash/pull/1028) - Fix OpenStreetMap leaflet display +- [#1020](https://github.com/neo4j-labs/neodash/pull/1020) - Fix boolean handling in parameter selection +- [#1014](https://github.com/neo4j-labs/neodash/pull/1014) - Remove autoPageSize flag (defaults to 0) +- [#1009](https://github.com/neo4j-labs/neodash/pull/1009) - Fix SSO parameters lost on browser redirect +- [#1008](https://github.com/neo4j-labs/neodash/pull/1008) - Fix existence check for `value.low` +- [#1005](https://github.com/neo4j-labs/neodash/pull/1005) - Replace Neo4j Logo +- [#1002](https://github.com/neo4j-labs/neodash/pull/1002) - Patch FAQ on supportability +- [#999](https://github.com/neo4j-labs/neodash/pull/999) - Fix dark mode table header styling +- [#956](https://github.com/neo4j-labs/neodash/pull/956) - Change default protocol to `neo4j+s` + ## NeoDash 2.4.9 This release adds some minor changes to documentation and implements some community contributions. - Added notice about project evolution: [#967](https://github.com/neo4j-labs/neodash/pull/967) diff --git a/cypress/Page.js b/cypress/Page.js index f90742a41..4297e3189 100644 --- a/cypress/Page.js +++ b/cypress/Page.js @@ -31,6 +31,7 @@ export class Page { connectToNeo4j() { cy.get('#form-dialog-title', { timeout: 20000 }).should('contain', 'Connect to Neo4j'); + cy.get('#protocol').type('neo4j{enter}'); cy.get('#url').clear().type(DB_URL); cy.get('#dbusername').clear().type(DB_USERNAME); cy.get('#dbpassword').type(DB_PASSWORD); diff --git a/cypress/e2e/start_page.cy.js b/cypress/e2e/start_page.cy.js index 8038866b3..e0fd02806 100644 --- a/cypress/e2e/start_page.cy.js +++ b/cypress/e2e/start_page.cy.js @@ -59,11 +59,11 @@ describe('NeoDash E2E Tests', () => { .should('contain', 'title') .and('contain', 'released') .and('not.contain', '__id'); - // cy.get('main .react-grid-item:eq(2) .MuiDataGrid-virtualScroller .MuiDataGrid-row').should('have.length', 5); - // cy.get('main .react-grid-item:eq(2) .MuiDataGrid-footerContainer').should('contain', '1–5 of 8'); - cy.get('main .react-grid-item:eq(2) .MuiDataGrid-footerContainer button[aria-label="Go to next page"]').click(); - cy.get('main .react-grid-item:eq(2) .MuiDataGrid-virtualScroller .MuiDataGrid-row').should('have.length', 3); - cy.get('main .react-grid-item:eq(2) .MuiDataGrid-footerContainer').should('contain', '6–8 of 8'); + // cy.get('main .react-grid-item:eq(2) .MuiDataGrid-virtualScroller .MuiDataGrid-row').should('have.length', 8); + // cy.get('main .react-grid-item:eq(2) .MuiDataGrid-footerContainer').should('contain', '1–8 of 8'); + // cy.get('main .react-grid-item:eq(2) .MuiDataGrid-footerContainer button[aria-label="Go to next page"]').click(); + // cy.get('main .react-grid-item:eq(2) .MuiDataGrid-virtualScroller .MuiDataGrid-row').should('have.length', 3); + // cy.get('main .react-grid-item:eq(2) .MuiDataGrid-footerContainer').should('contain', '6–8 of 8'); }); it('creates a bar chart report', () => { diff --git a/docs/modules/ROOT/pages/developer-guide/adding-visualizations.adoc b/docs/modules/ROOT/pages/developer-guide/adding-visualizations.adoc index 4d9fd76eb..aeea0744e 100644 --- a/docs/modules/ROOT/pages/developer-guide/adding-visualizations.adoc +++ b/docs/modules/ROOT/pages/developer-guide/adding-visualizations.adoc @@ -2,6 +2,8 @@ include::../banner.adoc[] = Adding Visualizations +include::../banner.adoc[] + You can extend NeoDash with your own visualizations without diving deep into the core application. Likewise, adding a new customization to an existing report requires minimal changes. diff --git a/docs/modules/ROOT/pages/developer-guide/build-and-run.adoc b/docs/modules/ROOT/pages/developer-guide/build-and-run.adoc index f52b88fb5..47503bb16 100644 --- a/docs/modules/ROOT/pages/developer-guide/build-and-run.adoc +++ b/docs/modules/ROOT/pages/developer-guide/build-and-run.adoc @@ -2,6 +2,8 @@ include::../banner.adoc[] = Build & Run +include::../banner.adoc[] + To start developing the application, you will need to set up the development environment. diff --git a/docs/modules/ROOT/pages/developer-guide/component-overview.adoc b/docs/modules/ROOT/pages/developer-guide/component-overview.adoc index 27d78236d..24b0df640 100644 --- a/docs/modules/ROOT/pages/developer-guide/component-overview.adoc +++ b/docs/modules/ROOT/pages/developer-guide/component-overview.adoc @@ -2,6 +2,7 @@ include::../banner.adoc[] = Component Overview +include::../banner.adoc[] The image below contains a high-level overview of the component hierarchy within the application. The following conceptual building diff --git a/docs/modules/ROOT/pages/developer-guide/configuration.adoc b/docs/modules/ROOT/pages/developer-guide/configuration.adoc index cca62fdbd..27e2e9cc1 100644 --- a/docs/modules/ROOT/pages/developer-guide/configuration.adoc +++ b/docs/modules/ROOT/pages/developer-guide/configuration.adoc @@ -2,6 +2,8 @@ include::../banner.adoc[] = Configuration +include::../banner.adoc[] + When using a custom NeoDash deployment, there are several settings that can be configured. These mostly relate to link:../standalone-mode[Standalone Mode] and SSO configurations. @@ -21,7 +23,7 @@ will look like this: "ssoProviders": [], "ssoDiscoveryUrl": "https://example.com", "standalone": false, - "standaloneProtocol": "neo4j", + "standaloneProtocol": "neo4j+s", "standaloneHost": "localhost", "standalonePort": "7687", "standaloneDatabase": "neo4j", @@ -57,7 +59,7 @@ mode (false), or reader mode (true). The terms ``Reader mode'' and ``Standalone mode'' are used interchangibly. |standaloneProtocol |string |neo4j |When running in standalone mode, the -protocol to used for the Neo4j driver. This shoudl be set to one of +protocol to used for the Neo4j driver. This should be set to one of `neo4j`, `neo4j+s`, `neo4j+ssc`, `bolt`, `bolt+s`, or `bolt+ssc`. |standaloneHost |string |localhost |When running in standalone mode, the diff --git a/docs/modules/ROOT/pages/developer-guide/contributing.adoc b/docs/modules/ROOT/pages/developer-guide/contributing.adoc index 90c198ff9..707d723f8 100644 --- a/docs/modules/ROOT/pages/developer-guide/contributing.adoc +++ b/docs/modules/ROOT/pages/developer-guide/contributing.adoc @@ -2,6 +2,8 @@ include::../banner.adoc[] = Contributing +include::../banner.adoc[] + Contributions to the project are highly welcomed. Please consider creating a https://github.com/neo4j-labs/neodash/pulls[Pull Request]. Ensure you start from the `develop` branch, and set the merge base to diff --git a/docs/modules/ROOT/pages/developer-guide/deploy-a-build.adoc b/docs/modules/ROOT/pages/developer-guide/deploy-a-build.adoc index 5646b89ad..df2786752 100644 --- a/docs/modules/ROOT/pages/developer-guide/deploy-a-build.adoc +++ b/docs/modules/ROOT/pages/developer-guide/deploy-a-build.adoc @@ -1,6 +1,7 @@ += Deploy a Build + include::../banner.adoc[] -= Deploy a Build If you have a pre-built NeoDash application, you can easily deploy it on an any webserver. A NeoDash build is "just" a collection of HTML, CSS and JavaScript files, so it can run virtually anywhere. @@ -39,7 +40,7 @@ Depending on the webserver type and version, this could be different directory. As an example - to copy the files to an nginx webserver using `scp`: ```bash -scp neodash-2.4.9-labs username@host:/usr/share/nginx/html +scp neodash-2.4.10-labs username@host:/usr/share/nginx/html ``` NeoDash should now be visible by visiting your (sub)domain in the browser. diff --git a/docs/modules/ROOT/pages/developer-guide/design.adoc b/docs/modules/ROOT/pages/developer-guide/design.adoc index 3c7bd32eb..9f3a15acf 100644 --- a/docs/modules/ROOT/pages/developer-guide/design.adoc +++ b/docs/modules/ROOT/pages/developer-guide/design.adoc @@ -2,6 +2,12 @@ include::../banner.adoc[] = Design +include::../banner.adoc[] + + +include::../banner.adoc[] + + This page contains some key guidelines for design of the application. This entails code architecture, as well as UX/UI design. diff --git a/docs/modules/ROOT/pages/developer-guide/index.adoc b/docs/modules/ROOT/pages/developer-guide/index.adoc index b9424ebb0..fb8d45566 100644 --- a/docs/modules/ROOT/pages/developer-guide/index.adoc +++ b/docs/modules/ROOT/pages/developer-guide/index.adoc @@ -2,6 +2,12 @@ include::../banner.adoc[] = Developer Guide +include::../banner.adoc[] + + +include::../banner.adoc[] + + This guide contains information for developers looking to deploy NeoDash, or extend it for their own needs. - link:build-and-run[Build & Run] diff --git a/docs/modules/ROOT/pages/developer-guide/session-storage.adoc b/docs/modules/ROOT/pages/developer-guide/session-storage.adoc index 7a668e4a7..8864bb36a 100644 --- a/docs/modules/ROOT/pages/developer-guide/session-storage.adoc +++ b/docs/modules/ROOT/pages/developer-guide/session-storage.adoc @@ -2,6 +2,8 @@ include::../banner.adoc[] = Session Storage +include::../banner.adoc[] + This reducer serves only to store data that we want to reset at each new session. To connect to it, just define a key and use the predefined actions to set a new pair (key,value) inside of it. Inside the actions there is also an action to delete all the keys that match a precise prefix, it can be useful, for example, to wipe the sessionStorage state for a certain extension, if it stores the data inside the sessionStorage using a prefix (for example look at the query-translator extension at getSessionStorageHistoryKey). \ No newline at end of file diff --git a/docs/modules/ROOT/pages/developer-guide/standalone-mode.adoc b/docs/modules/ROOT/pages/developer-guide/standalone-mode.adoc index 58575256e..30f7ac0be 100644 --- a/docs/modules/ROOT/pages/developer-guide/standalone-mode.adoc +++ b/docs/modules/ROOT/pages/developer-guide/standalone-mode.adoc @@ -2,6 +2,8 @@ include::../banner.adoc[] = Standalone Mode +include::../banner.adoc[] + Next to being a dashboard editor, NeoDash can be deployed in a `standalone mode' - allowing you set up a architecture to publish and read dashboards. @@ -44,7 +46,7 @@ docker run -it --rm -p 5005:5005 \ -e ssoProviders=[] \ -e ssoDiscoveryUrl="https://example.com" \ -e standalone=true \ - -e standaloneProtocol="neo4j" \ + -e standaloneProtocol="neo4j+s" \ -e standaloneHost="localhost" \ -e standalonePort="7687" \ -e standaloneDatabase="neo4j" \ diff --git a/docs/modules/ROOT/pages/developer-guide/state-management.adoc b/docs/modules/ROOT/pages/developer-guide/state-management.adoc index 1083bf2c1..e1aef1787 100644 --- a/docs/modules/ROOT/pages/developer-guide/state-management.adoc +++ b/docs/modules/ROOT/pages/developer-guide/state-management.adoc @@ -2,6 +2,8 @@ include::../banner.adoc[] = State Management +include::../banner.adoc[] + NeoDash is an application with a complex internal state. If you are planning to extend the application state in some way, make sure you are familiar with https://redux.js.org/[Redux] design patterns. @@ -131,7 +133,7 @@ standalone mode. "ssoEnabled": false, "ssoProviders": [], "ssoDiscoveryUrl": "https://example.com", - "standaloneProtocol": "neo4j", + "standaloneProtocol": "neo4j+s", "standaloneHost": "localhost", "standalonePort": "7687", "standaloneDatabase": "neo4j", diff --git a/docs/modules/ROOT/pages/developer-guide/style-configuration.adoc b/docs/modules/ROOT/pages/developer-guide/style-configuration.adoc index 4d5495a91..8ec08ac75 100644 --- a/docs/modules/ROOT/pages/developer-guide/style-configuration.adoc +++ b/docs/modules/ROOT/pages/developer-guide/style-configuration.adoc @@ -2,6 +2,8 @@ include::../banner.adoc[] = Style Configuration +include::../banner.adoc[] + When using a custom NeoDash deployment, there are several theme variables that can be configured. These mostly relate to css tokens for link:https://cdn.jsdelivr.net/npm/@neo4j-ndl/base@1.4.0/lib/tokens/css/tokens.css[Needle] and some other brand specific options. diff --git a/docs/modules/ROOT/pages/developer-guide/testing.adoc b/docs/modules/ROOT/pages/developer-guide/testing.adoc index 5c492a375..e95a21012 100644 --- a/docs/modules/ROOT/pages/developer-guide/testing.adoc +++ b/docs/modules/ROOT/pages/developer-guide/testing.adoc @@ -2,6 +2,8 @@ include::../banner.adoc[] = Testing +include::../banner.adoc[] + NeoDash uses *Cypress* for automated testing. To install Cypress, check out the official https://docs.cypress.io/guides/getting-started/installing-cypress#What-you-ll-learn[installation diff --git a/docs/modules/ROOT/pages/index.adoc b/docs/modules/ROOT/pages/index.adoc index 83eadebd0..56627a889 100644 --- a/docs/modules/ROOT/pages/index.adoc +++ b/docs/modules/ROOT/pages/index.adoc @@ -1,6 +1,9 @@ include::/banner.adoc[] = Introduction + +include::/banner.adoc[] + This portal contains information on getting started with NeoDash - A Low-Code Dashboard Builder for Neo4j. 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. diff --git a/docs/modules/ROOT/pages/quickstart.adoc b/docs/modules/ROOT/pages/quickstart.adoc index 4ae165058..075db6f64 100644 --- a/docs/modules/ROOT/pages/quickstart.adoc +++ b/docs/modules/ROOT/pages/quickstart.adoc @@ -2,6 +2,8 @@ include::/banner.adoc[] = Quickstart +include::/banner.adoc[] + There are three easy ways to run NeoDash and start dashboarding your Neo4j data: . The latest version is always available online: diff --git a/docs/modules/ROOT/pages/user-guide/access-control.adoc b/docs/modules/ROOT/pages/user-guide/access-control.adoc index 47cf3da31..383f63a54 100644 --- a/docs/modules/ROOT/pages/user-guide/access-control.adoc +++ b/docs/modules/ROOT/pages/user-guide/access-control.adoc @@ -2,6 +2,8 @@ include::../banner.adoc[] = Access Control +include::../banner.adoc[] + The Access Control feature in NeoDash is a security measure that allows Users with write access or higher privileges to manage who has access to specific dashboards. diff --git a/docs/modules/ROOT/pages/user-guide/bloom-integration.adoc b/docs/modules/ROOT/pages/user-guide/bloom-integration.adoc index 09dcce58c..175996a17 100644 --- a/docs/modules/ROOT/pages/user-guide/bloom-integration.adoc +++ b/docs/modules/ROOT/pages/user-guide/bloom-integration.adoc @@ -2,6 +2,8 @@ include::../banner.adoc[] = Bloom Integration +include::../banner.adoc[] + NeoDash can be linked to Neo4j Bloom perspectives by using https://neo4j.com/docs/bloom-user-guide/current/bloom-tutorial/deep-links/[Bloom Deep Links]. This functionality allows you to combine the power of graph diff --git a/docs/modules/ROOT/pages/user-guide/dashboards.adoc b/docs/modules/ROOT/pages/user-guide/dashboards.adoc index d0aa53b11..3a747f97f 100644 --- a/docs/modules/ROOT/pages/user-guide/dashboards.adoc +++ b/docs/modules/ROOT/pages/user-guide/dashboards.adoc @@ -2,6 +2,8 @@ include::../banner.adoc[] = Dashboards +include::../banner.adoc[] + In NeoDash, a dashboard consists of several pages, each of which can consist of multiple reports. diff --git a/docs/modules/ROOT/pages/user-guide/extensions/access-control-management.adoc b/docs/modules/ROOT/pages/user-guide/extensions/access-control-management.adoc index 9a6219c45..34a12e0ad 100644 --- a/docs/modules/ROOT/pages/user-guide/extensions/access-control-management.adoc +++ b/docs/modules/ROOT/pages/user-guide/extensions/access-control-management.adoc @@ -1,7 +1,8 @@ -include::../../banner.adoc[] = Access Control Management +include::../../banner.adoc[] + This extension lets you manage access control for roles and users, letting you assign users to roles as well as controlling which node labels can be read by a user. This extension is only visible to users with the role of "Administrator" or "Super User". Enabling this extension will allow the admin user to manage the labels of the roles in the database and then attach them to the users. diff --git a/docs/modules/ROOT/pages/user-guide/extensions/advanced-visualizations.adoc b/docs/modules/ROOT/pages/user-guide/extensions/advanced-visualizations.adoc index f4e7e8e98..452fff908 100644 --- a/docs/modules/ROOT/pages/user-guide/extensions/advanced-visualizations.adoc +++ b/docs/modules/ROOT/pages/user-guide/extensions/advanced-visualizations.adoc @@ -1,7 +1,8 @@ -include::../../banner.adoc[] = Advanced Visualizations +include::../../banner.adoc[] + Advanced visualizations let you extend your dashboard with complex, powerful visualizations beyond the standard visualizations. For specific use-cases, these visualizations may convey information that a simple visualization cannot. To use advanced visualizations, enable them in the **Extensions Window**. This makes them selectable inside reports, as well as add examples to the Example window. diff --git a/docs/modules/ROOT/pages/user-guide/extensions/forms.adoc b/docs/modules/ROOT/pages/user-guide/extensions/forms.adoc index 3ea8c965e..f7363508c 100644 --- a/docs/modules/ROOT/pages/user-guide/extensions/forms.adoc +++ b/docs/modules/ROOT/pages/user-guide/extensions/forms.adoc @@ -1,7 +1,8 @@ -include::../../banner.adoc[] = Forms +include::../../banner.adoc[] + The 'forms' extension lets you combine different parameter selectors to update / modify your graph data. Update queries are predefined by the dashboard builder, and the user is limited to specifying the parameters for the query only. diff --git a/docs/modules/ROOT/pages/user-guide/extensions/index.adoc b/docs/modules/ROOT/pages/user-guide/extensions/index.adoc index 6d16b1700..153c84979 100644 --- a/docs/modules/ROOT/pages/user-guide/extensions/index.adoc +++ b/docs/modules/ROOT/pages/user-guide/extensions/index.adoc @@ -1,7 +1,8 @@ -include::../../banner.adoc[] = Extensions +include::../../banner.adoc[] + Extensions provide a way to expand the basic functionality of NeoDash with extra features. To enable an extension, open up the extensions window by clicking the puzzle piece icon in the left-sidebar of the screen. This will open up the **Extensions Window**, which lets you toggle active extensions for the current dashboard. diff --git a/docs/modules/ROOT/pages/user-guide/extensions/natural-language-queries.adoc b/docs/modules/ROOT/pages/user-guide/extensions/natural-language-queries.adoc index 675a00a2d..1ab9e374d 100644 --- a/docs/modules/ROOT/pages/user-guide/extensions/natural-language-queries.adoc +++ b/docs/modules/ROOT/pages/user-guide/extensions/natural-language-queries.adoc @@ -1,6 +1,8 @@ -include::../../banner.adoc[] = Text2Cypher - Natural Language Queries + +include::../../banner.adoc[] + Use natural language to generate Cypher queries in NeoDash. Connect to an LLM through an API, and let NeoDash use your database schema + the report types to generate queries automatically. == How it works diff --git a/docs/modules/ROOT/pages/user-guide/extensions/report-actions.adoc b/docs/modules/ROOT/pages/user-guide/extensions/report-actions.adoc index a381c0076..069ec804e 100644 --- a/docs/modules/ROOT/pages/user-guide/extensions/report-actions.adoc +++ b/docs/modules/ROOT/pages/user-guide/extensions/report-actions.adoc @@ -1,7 +1,8 @@ -include::../../banner.adoc[] = Report Actions +include::../../banner.adoc[] + link:../#_2_pro_extensions[label:Pro Extension[]] Report actions let dashboard builders add interactivity into dashboards. Actions can be used to achieve: diff --git a/docs/modules/ROOT/pages/user-guide/extensions/rule-based-styling.adoc b/docs/modules/ROOT/pages/user-guide/extensions/rule-based-styling.adoc index 8a4b0ea9c..a4d044c12 100644 --- a/docs/modules/ROOT/pages/user-guide/extensions/rule-based-styling.adoc +++ b/docs/modules/ROOT/pages/user-guide/extensions/rule-based-styling.adoc @@ -1,7 +1,7 @@ -include::../../banner.adoc[] = Rule-Based Styling +include::../../banner.adoc[] The rule-based styling extension allows users to dynamically color elements in a visualization based on output values. This can be applied to tables, graphs, bar charts, line charts, and more. To use the extension, click on the 'rule-based styling' icon inside the settings of a report. diff --git a/docs/modules/ROOT/pages/user-guide/extensions/workflows.adoc b/docs/modules/ROOT/pages/user-guide/extensions/workflows.adoc index a735dbc2c..2d8def8aa 100644 --- a/docs/modules/ROOT/pages/user-guide/extensions/workflows.adoc +++ b/docs/modules/ROOT/pages/user-guide/extensions/workflows.adoc @@ -1,7 +1,8 @@ -include::../../banner.adoc[] = Workflows +include::../../banner.adoc[] + Introducing an advanced extension for creating, managing, and running workflows with Cypher queries. Simplify ETL flows, execute complex query chains, and run graph data science workloads effortlessly from Neodash. == Enable the extension diff --git a/docs/modules/ROOT/pages/user-guide/faq.adoc b/docs/modules/ROOT/pages/user-guide/faq.adoc index 08ece7dd1..16837cfd8 100644 --- a/docs/modules/ROOT/pages/user-guide/faq.adoc +++ b/docs/modules/ROOT/pages/user-guide/faq.adoc @@ -2,6 +2,8 @@ include::../banner.adoc[] = FAQ +include::../banner.adoc[] + == 1. How can I learn more about NeoDash? To learn more, check out the following list of resources (blogs, videos @@ -48,17 +50,8 @@ If you need help setting this up, please contact the NeoDash team. == 4. Is NeoDash Production Ready? -NeoDash is safe to be used in a production environment. As it is a -reporting tool, keep the following things in mind: - -- Always use *read-only* Neo4j accounts when connecting to a dashboard. -- Always deploy NeoDash with SSL, so that an encrypted Neo4j connection must be -used. -- As NeoDash accesses Neo4j directly, make sure you only give -access to the right people. As a rule of thumb, you should give NeoDash -access to the people that can also see Bloom. - -For other questions regarding setting up your own production deployment, contact the NeoDash team. +NeoDash Labs is an experimental tool without official support. +For production-grade usage with Neo4j Enterprise Edition, we recommend a `NeoDash commercial` license. == 5. Can I use NeoDash with Neo4j Community Edition? diff --git a/docs/modules/ROOT/pages/user-guide/index.adoc b/docs/modules/ROOT/pages/user-guide/index.adoc index d87dffb6d..972291ebd 100644 --- a/docs/modules/ROOT/pages/user-guide/index.adoc +++ b/docs/modules/ROOT/pages/user-guide/index.adoc @@ -2,6 +2,8 @@ include::../banner.adoc[] = User Guide +include::../banner.adoc[] + The following pages contain everything you need to get started with NeoDash. diff --git a/docs/modules/ROOT/pages/user-guide/pages.adoc b/docs/modules/ROOT/pages/user-guide/pages.adoc index 0d01f37d4..c946aaa46 100644 --- a/docs/modules/ROOT/pages/user-guide/pages.adoc +++ b/docs/modules/ROOT/pages/user-guide/pages.adoc @@ -2,6 +2,8 @@ include::../banner.adoc[] = Pages +include::../banner.adoc[] + A page is a collection of link:../reports[reports] that can be viewed at the same time. Each page can have an unlimited number of reports in it, and will switch to a scrollable view when the number of reports do not diff --git a/docs/modules/ROOT/pages/user-guide/publishing.adoc b/docs/modules/ROOT/pages/user-guide/publishing.adoc index 8fe77739c..fb1904abe 100644 --- a/docs/modules/ROOT/pages/user-guide/publishing.adoc +++ b/docs/modules/ROOT/pages/user-guide/publishing.adoc @@ -2,6 +2,8 @@ include::../banner.adoc[] = Publishing +include::/banner.adoc[] + When you are done building a dashboard, you may want to *publish* that dashboard for others to view. The workflow for a continuous dashboarding cycle may look something like this: diff --git a/docs/modules/ROOT/pages/user-guide/reports/areamap.adoc b/docs/modules/ROOT/pages/user-guide/reports/areamap.adoc index 9d3c4a79e..9c3c152f4 100644 --- a/docs/modules/ROOT/pages/user-guide/reports/areamap.adoc +++ b/docs/modules/ROOT/pages/user-guide/reports/areamap.adoc @@ -1,7 +1,8 @@ -include::../../banner.adoc[] = Area Map +include::../../banner.adoc[] + link:../../extensions/advanced-visualizations[label:Advanced Visualization[]] The Area Map charts can be used to render geographical based information on geoJson polygons. It's possible to click a polygon to visualize its regions and their related data. diff --git a/docs/modules/ROOT/pages/user-guide/reports/bar-chart.adoc b/docs/modules/ROOT/pages/user-guide/reports/bar-chart.adoc index 6a280c750..8a258ada5 100644 --- a/docs/modules/ROOT/pages/user-guide/reports/bar-chart.adoc +++ b/docs/modules/ROOT/pages/user-guide/reports/bar-chart.adoc @@ -1,7 +1,8 @@ -include::../../banner.adoc[] = Bar Chart +include::../../banner.adoc[] + A bar chart will draw categories and values in a familiar bar-layout. The bar chart will require you to choose the following selections: diff --git a/docs/modules/ROOT/pages/user-guide/reports/choropleth.adoc b/docs/modules/ROOT/pages/user-guide/reports/choropleth.adoc index 8cfd6037c..318b832d3 100644 --- a/docs/modules/ROOT/pages/user-guide/reports/choropleth.adoc +++ b/docs/modules/ROOT/pages/user-guide/reports/choropleth.adoc @@ -1,7 +1,8 @@ -include::../../banner.adoc[] = Choropleth +include::../../banner.adoc[] + link:../../extensions/advanced-visualizations[label:Advanced Visualization[]] A Choropleth chart will render geographical data in geoJson polygons diff --git a/docs/modules/ROOT/pages/user-guide/reports/circle-packing.adoc b/docs/modules/ROOT/pages/user-guide/reports/circle-packing.adoc index cab5079bd..f9693ef47 100644 --- a/docs/modules/ROOT/pages/user-guide/reports/circle-packing.adoc +++ b/docs/modules/ROOT/pages/user-guide/reports/circle-packing.adoc @@ -1,7 +1,8 @@ -include::../../banner.adoc[] = Circle Packing +include::../../banner.adoc[] + link:../../extensions/advanced-visualizations[label:Advanced Visualization[]] A circle packing chart will render hierarchical data in a group of diff --git a/docs/modules/ROOT/pages/user-guide/reports/form.adoc b/docs/modules/ROOT/pages/user-guide/reports/form.adoc index f10776561..584c3aab8 100644 --- a/docs/modules/ROOT/pages/user-guide/reports/form.adoc +++ b/docs/modules/ROOT/pages/user-guide/reports/form.adoc @@ -1,7 +1,8 @@ -include::../../banner.adoc[] = Form +include::../../banner.adoc[] + A form is a special type of report that lets users run predefined, parameterized queries. A single form can consist of: diff --git a/docs/modules/ROOT/pages/user-guide/reports/gantt.adoc b/docs/modules/ROOT/pages/user-guide/reports/gantt.adoc index 0332fdd04..149c3e343 100644 --- a/docs/modules/ROOT/pages/user-guide/reports/gantt.adoc +++ b/docs/modules/ROOT/pages/user-guide/reports/gantt.adoc @@ -1,7 +1,8 @@ -include::../../banner.adoc[] = Gantt Chart +include::../../banner.adoc[] + link:../../extensions/advanced-visualizations[label:Advanced Visualization[]] A Gantt chart can be used to visualize tasks on a timeline, as well as their dependencies. diff --git a/docs/modules/ROOT/pages/user-guide/reports/gauge-chart.adoc b/docs/modules/ROOT/pages/user-guide/reports/gauge-chart.adoc index 41ed80eba..9786ad83f 100644 --- a/docs/modules/ROOT/pages/user-guide/reports/gauge-chart.adoc +++ b/docs/modules/ROOT/pages/user-guide/reports/gauge-chart.adoc @@ -1,7 +1,8 @@ -include::../../banner.adoc[] = Gauge Chart +include::../../banner.adoc[] + link:../../extensions/advanced-visualizations[label:Advanced Visualization[]] A gauge chart takes a single numeric value, and plots it on an animated gauge: diff --git a/docs/modules/ROOT/pages/user-guide/reports/graph.adoc b/docs/modules/ROOT/pages/user-guide/reports/graph.adoc index 8638ac9e6..1d8677199 100644 --- a/docs/modules/ROOT/pages/user-guide/reports/graph.adoc +++ b/docs/modules/ROOT/pages/user-guide/reports/graph.adoc @@ -1,7 +1,8 @@ -include::../../banner.adoc[] = Graph +include::../../banner.adoc[] + The graph report will render all returned nodes, relationships and paths in a force-directed graph layout. This includes collections (lists) of these objects. diff --git a/docs/modules/ROOT/pages/user-guide/reports/graph3d.adoc b/docs/modules/ROOT/pages/user-guide/reports/graph3d.adoc index d2ddeb9dc..6eb17c49e 100644 --- a/docs/modules/ROOT/pages/user-guide/reports/graph3d.adoc +++ b/docs/modules/ROOT/pages/user-guide/reports/graph3d.adoc @@ -1,7 +1,8 @@ -include::../../banner.adoc[] = 3D Graph +include::../../banner.adoc[] + link:../../extensions/advanced-visualizations[label:Advanced Visualization[]] The 3D graph report extends the default graph visualization with another dimension. diff --git a/docs/modules/ROOT/pages/user-guide/reports/iframe.adoc b/docs/modules/ROOT/pages/user-guide/reports/iframe.adoc index 8f0fb9598..f8c7784c6 100644 --- a/docs/modules/ROOT/pages/user-guide/reports/iframe.adoc +++ b/docs/modules/ROOT/pages/user-guide/reports/iframe.adoc @@ -1,7 +1,8 @@ -include::../../banner.adoc[] = iFrame +include::../../banner.adoc[] + An iFrame report lets you embed a webpage inside your NeoDash dashboard. The page can be loaded from any web address starting with `http://` or `https://`, with some exceptions*. diff --git a/docs/modules/ROOT/pages/user-guide/reports/index.adoc b/docs/modules/ROOT/pages/user-guide/reports/index.adoc index d05324060..ac1827f59 100644 --- a/docs/modules/ROOT/pages/user-guide/reports/index.adoc +++ b/docs/modules/ROOT/pages/user-guide/reports/index.adoc @@ -1,7 +1,8 @@ -include::../../banner.adoc[] = Reports +include::../../banner.adoc[] + A report is the smallest building build of your dashboard. Each report will have a single Cypher query behind it that is used to populate the report. Reports can be of several types (graph, table, bar chart, etc.), diff --git a/docs/modules/ROOT/pages/user-guide/reports/line-chart.adoc b/docs/modules/ROOT/pages/user-guide/reports/line-chart.adoc index 56adcd965..1cedb878c 100644 --- a/docs/modules/ROOT/pages/user-guide/reports/line-chart.adoc +++ b/docs/modules/ROOT/pages/user-guide/reports/line-chart.adoc @@ -1,7 +1,8 @@ -include::../../banner.adoc[] = Line Chart +include::../../banner.adoc[] + A line chart can be used to draw one or more lines in a two-dimensional plane. It requires two numeric fields: diff --git a/docs/modules/ROOT/pages/user-guide/reports/map.adoc b/docs/modules/ROOT/pages/user-guide/reports/map.adoc index 4779c3c98..6a4d2f263 100644 --- a/docs/modules/ROOT/pages/user-guide/reports/map.adoc +++ b/docs/modules/ROOT/pages/user-guide/reports/map.adoc @@ -1,7 +1,8 @@ -include::../../banner.adoc[] = Map +include::../../banner.adoc[] + The map report will render all returned nodes, relationships and paths on a geomap. https://www.openstreetmap.org[Open Street Map] is used to visualize the data on the map. diff --git a/docs/modules/ROOT/pages/user-guide/reports/markdown.adoc b/docs/modules/ROOT/pages/user-guide/reports/markdown.adoc index 85d19cec6..f49b5f065 100644 --- a/docs/modules/ROOT/pages/user-guide/reports/markdown.adoc +++ b/docs/modules/ROOT/pages/user-guide/reports/markdown.adoc @@ -1,7 +1,8 @@ -include::../../banner.adoc[] = Markdown +include::../../banner.adoc[] + Markdown reports let you specify https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#styling-text[Markdown] text, to be renderer as rich HTML. This lets you turn your dashboards diff --git a/docs/modules/ROOT/pages/user-guide/reports/parameter-select.adoc b/docs/modules/ROOT/pages/user-guide/reports/parameter-select.adoc index cfa09b69a..40553a1ee 100644 --- a/docs/modules/ROOT/pages/user-guide/reports/parameter-select.adoc +++ b/docs/modules/ROOT/pages/user-guide/reports/parameter-select.adoc @@ -1,6 +1,8 @@ -include::../../banner.adoc[] = Parameter Select + +include::../../banner.adoc[] + Parameter select reports provide you with an easy way to add interactivity into your dashboards. diff --git a/docs/modules/ROOT/pages/user-guide/reports/pie-chart.adoc b/docs/modules/ROOT/pages/user-guide/reports/pie-chart.adoc index f4ad133b5..99df73cd4 100644 --- a/docs/modules/ROOT/pages/user-guide/reports/pie-chart.adoc +++ b/docs/modules/ROOT/pages/user-guide/reports/pie-chart.adoc @@ -1,7 +1,8 @@ -include::../../banner.adoc[] = Pie Chart +include::../../banner.adoc[] + A pie chart will draw categories and values in a circular disc layout. The pie chart will require you to choose the following selections: diff --git a/docs/modules/ROOT/pages/user-guide/reports/radar.adoc b/docs/modules/ROOT/pages/user-guide/reports/radar.adoc index e6a4bcaf6..b1e580499 100644 --- a/docs/modules/ROOT/pages/user-guide/reports/radar.adoc +++ b/docs/modules/ROOT/pages/user-guide/reports/radar.adoc @@ -1,7 +1,8 @@ -include::../../banner.adoc[] = Radar Chart +include::../../banner.adoc[] + link:../../extensions/advanced-visualizations[label:Advanced Visualization[]] A Radar chart can be used to render multivariate data from an array of nodes diff --git a/docs/modules/ROOT/pages/user-guide/reports/raw-json.adoc b/docs/modules/ROOT/pages/user-guide/reports/raw-json.adoc index ec9725e83..5755eadd3 100644 --- a/docs/modules/ROOT/pages/user-guide/reports/raw-json.adoc +++ b/docs/modules/ROOT/pages/user-guide/reports/raw-json.adoc @@ -1,7 +1,8 @@ -include::../../banner.adoc[] = Raw JSON +include::../../banner.adoc[] + The Raw JSON report renders the JSON response received from Neo4j directly. This is typically used for debugging queries, or, understanding the exact data types being returned from Neo4j. diff --git a/docs/modules/ROOT/pages/user-guide/reports/sankey.adoc b/docs/modules/ROOT/pages/user-guide/reports/sankey.adoc index 22d014803..183ddbb3d 100644 --- a/docs/modules/ROOT/pages/user-guide/reports/sankey.adoc +++ b/docs/modules/ROOT/pages/user-guide/reports/sankey.adoc @@ -1,7 +1,8 @@ -include::../../banner.adoc[] = Sankey Chart +include::../../banner.adoc[] + link:../../extensions/advanced-visualizations[label:Advanced Visualization[]] A Sankey visualization will generate a flow diagram from nodes and links. diff --git a/docs/modules/ROOT/pages/user-guide/reports/single-value.adoc b/docs/modules/ROOT/pages/user-guide/reports/single-value.adoc index f5a2f99c7..0f467135e 100644 --- a/docs/modules/ROOT/pages/user-guide/reports/single-value.adoc +++ b/docs/modules/ROOT/pages/user-guide/reports/single-value.adoc @@ -1,7 +1,8 @@ -include::../../banner.adoc[] = Single Value +include::../../banner.adoc[] + A single value report will render the first column of the first row returned by the Cypher query. Single value reports are typically used for key metrics: diff --git a/docs/modules/ROOT/pages/user-guide/reports/sunburst.adoc b/docs/modules/ROOT/pages/user-guide/reports/sunburst.adoc index 6f17c7541..648532b59 100644 --- a/docs/modules/ROOT/pages/user-guide/reports/sunburst.adoc +++ b/docs/modules/ROOT/pages/user-guide/reports/sunburst.adoc @@ -1,7 +1,8 @@ -include::../../banner.adoc[] = Sunburst +include::../../banner.adoc[] + link:../../extensions/advanced-visualizations[label:Advanced Visualization[]] A sunburst chart will render hierarchical data in a multi-level pie diff --git a/docs/modules/ROOT/pages/user-guide/reports/table.adoc b/docs/modules/ROOT/pages/user-guide/reports/table.adoc index 8b352f2c2..7a96ce83e 100644 --- a/docs/modules/ROOT/pages/user-guide/reports/table.adoc +++ b/docs/modules/ROOT/pages/user-guide/reports/table.adoc @@ -1,7 +1,8 @@ -include::../../banner.adoc[] = Table +include::../../banner.adoc[] + The most common report in a dashboard is often a simple table view. NeoDash contains a powerful table component that can render all the data returned by a Cypher query. This includes simple data like numbers or diff --git a/docs/modules/ROOT/pages/user-guide/reports/treemap.adoc b/docs/modules/ROOT/pages/user-guide/reports/treemap.adoc index a8e620060..34b421895 100644 --- a/docs/modules/ROOT/pages/user-guide/reports/treemap.adoc +++ b/docs/modules/ROOT/pages/user-guide/reports/treemap.adoc @@ -1,7 +1,8 @@ -include::../../banner.adoc[] = Treemap +include::../../banner.adoc[] + link:../../extensions/advanced-visualizations[label:Advanced Visualization[]] A treemap chart will render hierarchical data in a nested rectangle diff --git a/k8s-deploy/neodash/Chart.yaml b/k8s-deploy/neodash/Chart.yaml index 41e4e6c4e..24cd57a3d 100644 --- a/k8s-deploy/neodash/Chart.yaml +++ b/k8s-deploy/neodash/Chart.yaml @@ -21,4 +21,4 @@ version: 1.0.0 # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "2.4.9" \ No newline at end of file +appVersion: "2.4.10" \ No newline at end of file diff --git a/package.json b/package.json index 5208d3ea0..12a34cc05 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "neodash", - "version": "2.4.9", + "version": "2.4.10", "description": "NeoDash - Neo4j Dashboard Builder", "neo4jDesktop": { "apiVersion": "^1.2.0" diff --git a/public/config.json b/public/config.json index 4e8d475a2..17d012515 100644 --- a/public/config.json +++ b/public/config.json @@ -3,7 +3,7 @@ "ssoProviders": [], "ssoDiscoveryUrl": "https://example.com", "standalone": false, - "standaloneProtocol": "neo4j", + "standaloneProtocol": "neo4j+s", "standaloneHost": "localhost", "standalonePort": "7687", "standaloneDatabase": "neo4j", diff --git a/public/neo4j-icon-color-full.png b/public/neo4j-icon-color-full.png index e0a889814..19bdf50ff 100644 Binary files a/public/neo4j-icon-color-full.png and b/public/neo4j-icon-color-full.png differ diff --git a/public/neo4j-icon-color.png b/public/neo4j-icon-color.png index ebe609b74..a35315924 100644 Binary files a/public/neo4j-icon-color.png and b/public/neo4j-icon-color.png differ diff --git a/public/neo4j-icon.png b/public/neo4j-icon.png index c2349fa05..f8050bdf0 100644 Binary files a/public/neo4j-icon.png and b/public/neo4j-icon.png differ diff --git a/public/style.css b/public/style.css index 63cf9fca1..a84170683 100644 --- a/public/style.css +++ b/public/style.css @@ -65,13 +65,6 @@ margin-left: 0px; } -.leaflet-control-attribution { - display: none; -} - -.leaflet-custom-tooltip { -} - .leaflet-marker-icon { width: 50px !important; margin-left: -25px !important; @@ -117,6 +110,10 @@ border-bottom: 2px solid rgba(0, 0, 0, 0.4) !important; } +div:has(> .table-small-header) { + background: unset !important; +} + .MuiDataGrid-footerContainer { border-top: none !important; } diff --git a/release-notes.md b/release-notes.md index 68200808b..57ef0ff13 100644 --- a/release-notes.md +++ b/release-notes.md @@ -1,19 +1,14 @@ -## NeoDash 2.4.9 -This release adds some minor changes to documentation and implements some community contributions. -- Added notice about project evolution: [#967](https://github.com/neo4j-labs/neodash/pull/967) -- Added community contributions and bug fixes: -[#967](https://github.com/neo4j-labs/neodash/pull/967) -[#894](https://github.com/neo4j-labs/neodash/pull/894) -[#822](https://github.com/neo4j-labs/neodash/pull/822) -[#951](https://github.com/neo4j-labs/neodash/pull/951) -[#946](https://github.com/neo4j-labs/neodash/pull/946) -[#944](https://github.com/neo4j-labs/neodash/pull/944) -[#943](https://github.com/neo4j-labs/neodash/pull/943) -[#938](https://github.com/neo4j-labs/neodash/pull/938) -[#935](https://github.com/neo4j-labs/neodash/pull/935) -[#918](https://github.com/neo4j-labs/neodash/pull/918) -[#908](https://github.com/neo4j-labs/neodash/pull/908) -[#906](https://github.com/neo4j-labs/neodash/pull/906) -[#902](https://github.com/neo4j-labs/neodash/pull/902) -[#895](https://github.com/neo4j-labs/neodash/pull/895) -[#893](https://github.com/neo4j-labs/neodash/pull/893) \ No newline at end of file +## NeoDash 2.4.10 - Community contributions +- [#1039](https://github.com/neo4j-labs/neodash/pull/1039) - Fix default color scheme for bar charts +- [#1038](https://github.com/neo4j-labs/neodash/pull/1038) - Fix rule-based styling for line charts +- [#1036](https://github.com/neo4j-labs/neodash/pull/1036) - Fix table cell rule-based styling +- [#1029](https://github.com/neo4j-labs/neodash/pull/1029) - Fix rule-based styling for numeric values +- [#1028](https://github.com/neo4j-labs/neodash/pull/1028) - Fix OpenStreetMap leaflet display +- [#1020](https://github.com/neo4j-labs/neodash/pull/1020) - Fix boolean handling in parameter selection +- [#1014](https://github.com/neo4j-labs/neodash/pull/1014) - Remove autoPageSize flag (defaults to 0) +- [#1009](https://github.com/neo4j-labs/neodash/pull/1009) - Fix SSO parameters lost on browser redirect +- [#1008](https://github.com/neo4j-labs/neodash/pull/1008) - Fix existence check for `value.low` +- [#1005](https://github.com/neo4j-labs/neodash/pull/1005) - Replace Neo4j Logo +- [#1002](https://github.com/neo4j-labs/neodash/pull/1002) - Patch FAQ on supportability +- [#999](https://github.com/neo4j-labs/neodash/pull/999) - Fix dark mode table header styling +- [#956](https://github.com/neo4j-labs/neodash/pull/956) - Change default protocol to `neo4j+s` diff --git a/src/application/ApplicationReducer.ts b/src/application/ApplicationReducer.ts index e662ade63..fefbedf92 100644 --- a/src/application/ApplicationReducer.ts +++ b/src/application/ApplicationReducer.ts @@ -58,7 +58,7 @@ const initialState = { draft: false, aboutModalOpen: false, connection: { - protocol: 'neo4j', + protocol: 'neo4j+s', url: DEFAULT_NEO4J_URL, port: '7687', database: '', diff --git a/src/application/ApplicationThunks.ts b/src/application/ApplicationThunks.ts index 6af4b6339..cdb204394 100644 --- a/src/application/ApplicationThunks.ts +++ b/src/application/ApplicationThunks.ts @@ -291,7 +291,6 @@ export const handleSharedDashboardsThunk = () => (dispatch: any) => { if (skipConfirmation === true) { dispatch(onConfirmLoadSharedDashboardThunk()); } - window.history.pushState({}, document.title, window.location.pathname); } else { dispatch(setConnectionModalOpen(false)); @@ -358,7 +357,6 @@ export const onConfirmLoadSharedDashboardThunk = () => (dispatch: any, getState: } if (shareDetails.standalone == true) { dispatch(setStandaloneMode(true)); - localStorage.setItem('standaloneShared', 'true'); // EDGE CASE: redirect SSO removes the shareDetails when redirecting } dispatch(resetShareDetails()); } catch (e) { @@ -384,7 +382,7 @@ export const loadApplicationConfigThunk = () => async (dispatch: any, getState: ssoProviders: [], ssoDiscoveryUrl: 'http://example.com', standalone: false, - standaloneProtocol: 'neo4j', + standaloneProtocol: 'neo4j+s', standaloneHost: 'localhost', standalonePort: '7687', standaloneDatabase: 'neo4j', @@ -410,29 +408,33 @@ export const loadApplicationConfigThunk = () => async (dispatch: any, getState: try { // Parse the URL parameters to see if there's any deep linking of parameters. + const state = getState(); const queryString = window.location.search; const urlParams = new URLSearchParams(queryString); + if (state.application.waitForSSO) { + const paramsBeforeSSO = JSON.parse(sessionStorage.getItem('SSO_PARAMS_BEFORE_REDIRECT') || '{}'); + Object.entries(paramsBeforeSSO).forEach(([key, value]) => { + urlParams.set(key, value); + }); + } const paramsToSetAfterConnecting = {}; Array.from(urlParams.entries()).forEach(([key, value]) => { if (key.startsWith('neodash_')) { paramsToSetAfterConnecting[key] = value; } }); - + sessionStorage.getItem('SSO_PARAMS_BEFORE_REDIRECT'); const page = urlParams.get('page'); if (page !== '' && page !== null) { if (!isNaN(page)) { dispatch(setPageNumberThunk(parseInt(page))); } } - const state = getState(); dispatch(setSSOEnabled(config.ssoEnabled, state.application.cachedSSODiscoveryUrl)); dispatch(setSSOProviders(config.ssoProviders)); // Check if we are in standalone mode - // const standaloneShared = localStorage.getItem('standaloneShared') == 'true'; // EDGE case: from url param it could happen that we lose the value due to SSO redirect - const { standalone } = config; - // || standaloneShared; + const standalone = config.standalone || urlParams.get('standalone') == 'Yes'; // if a dashboard database was previously set, remember to use it. const dashboardDatabase = state.application.standaloneDashboardDatabase; @@ -455,7 +457,6 @@ export const loadApplicationConfigThunk = () => async (dispatch: any, getState: config.standaloneDatabaseList ) ); - localStorage.removeItem('standaloneShared'); dispatch(setLoggingMode(config.loggingMode)); dispatch(setLoggingDatabase(config.loggingDatabase)); @@ -530,14 +531,18 @@ export const loadApplicationConfigThunk = () => async (dispatch: any, getState: } if (standalone) { - if (config.standaloneDashboardURL !== undefined && config.standaloneDashboardURL.length > 0) { + if (urlParams.get('id')) { + dispatch(setDashboardToLoadAfterConnecting(urlParams.get('id'))); + } else if (config.standaloneDashboardURL !== undefined && config.standaloneDashboardURL.length > 0) { dispatch(setDashboardToLoadAfterConnecting(config.standaloneDashboardURL)); } else { dispatch(setDashboardToLoadAfterConnecting(`name:${config.standaloneDashboardName}`)); } dispatch(setParametersToLoadAfterConnecting(paramsToSetAfterConnecting)); } + sessionStorage.removeItem('SSO_PARAMS_BEFORE_REDIRECT'); }); + dispatch(setWaitForSSO(false)); if (!success) { alert('Unable to connect using SSO. See the browser console for more details.'); @@ -550,6 +555,12 @@ export const loadApplicationConfigThunk = () => async (dispatch: any, getState: } else { return; } + } else if (state.application.ssoEnabled && !state.application.waitForSSO && urlParams) { + let paramsToStore = {}; + urlParams.forEach((value, key) => { + paramsToStore[key] = value; + }); + sessionStorage.setItem('SSO_PARAMS_BEFORE_REDIRECT', JSON.stringify(paramsToStore)); } if (standalone) { diff --git a/src/chart/ChartUtils.ts b/src/chart/ChartUtils.ts index 6a2911ef4..45b0b14c8 100644 --- a/src/chart/ChartUtils.ts +++ b/src/chart/ChartUtils.ts @@ -164,7 +164,7 @@ export const downloadCSV = (rows) => { headers.forEach((header) => { // Parse value let value = row[header]; - if (value && 'low' in value) { + if (value?.low !== undefined) { value = value.low; } csv += `${JSON.stringify(value)}`; diff --git a/src/chart/bar/BarChart.tsx b/src/chart/bar/BarChart.tsx index cd3a5582f..b0fefc419 100644 --- a/src/chart/bar/BarChart.tsx +++ b/src/chart/bar/BarChart.tsx @@ -168,23 +168,25 @@ const NeoBarChart = (props: ChartProps) => { const chartColorsByScheme = getD3ColorsByScheme(colorScheme); // Compute bar color based on rules - overrides default color scheme completely. const getBarColor = (bar) => { - let { id } = bar; - let colorIndex = keys.indexOf(id); + let { index: colorIndex } = bar; if (colorIndex >= chartColorsByScheme.length) { colorIndex %= chartColorsByScheme.length; } - const dict = {}; if (!props.selection) { return chartColorsByScheme[colorIndex]; } + + const dict = {}; dict[selection.index] = bar.indexValue; dict[selection.value] = bar.value; dict[selection.key] = bar.id; + const validRuleIndex = evaluateRulesOnDict(dict, styleRules, ['bar color']); if (validRuleIndex !== -1) { return styleRules[validRuleIndex].customizationValue; } + return chartColorsByScheme[colorIndex]; }; diff --git a/src/chart/line/LineChart.tsx b/src/chart/line/LineChart.tsx index c4e106fd4..ada63c847 100644 --- a/src/chart/line/LineChart.tsx +++ b/src/chart/line/LineChart.tsx @@ -3,13 +3,7 @@ import React, { useEffect } from 'react'; import { NoDrawableDataErrorMessage } from '../../component/editor/CodeViewerComponent'; import { evaluateRulesOnDict, useStyleRules } from '../../extensions/styling/StyleRuleEvaluator'; import { ChartProps } from '../Chart'; -import { - convertRecordObjectToString, - mutateName, - processHierarchyFromRecords, - recordToNative, - toNumber, -} from '../ChartUtils'; +import { recordToNative, toNumber } from '../ChartUtils'; import { themeNivo } from '../Utils'; import { extensionEnabled } from '../../utils/ReportUtils'; @@ -77,17 +71,18 @@ const NeoLineChart = (props: ChartProps) => { // For line charts, the line color is overridden if at least one value meets the criteria. const getLineColors = (line) => { const xFieldName = props.selection && props.selection.x; - const yFieldName = line.id && line.id.split('(')[1] && line.id.split('(')[1].split(')')[0]; + const yFieldName = line.id; let color = 'black'; - line.data.forEach((entry) => { + for (const entry of line.data) { const data = {}; - data[xFieldName] = entry[selection.x]; - data[yFieldName] = entry[selection.value]; + data[xFieldName] = entry.x; + data[yFieldName] = entry.y; const validRuleIndex = evaluateRulesOnDict(data, styleRules, ['line color']); if (validRuleIndex !== -1) { color = styleRules[validRuleIndex].customizationValue; + break; } - }); + } return color; }; diff --git a/src/chart/parameter/component/NodePropertyParameterSelect.tsx b/src/chart/parameter/component/NodePropertyParameterSelect.tsx index 4972ff225..967f3c6fc 100644 --- a/src/chart/parameter/component/NodePropertyParameterSelect.tsx +++ b/src/chart/parameter/component/NodePropertyParameterSelect.tsx @@ -118,7 +118,9 @@ const NodePropertyParameterSelectComponent = (props: ParameterSelectProps) => { newValue.push(RenderSubValue(val)); } } else if (!isMulti) { - newValue = extraRecords.filter((r) => (r?._fields?.[displayValueRowIndex]?.toString() || null) == newDisplay)[0] + // if records are toStringed before comparison, toString the comparing variable + const newDisplay2 = typeof newDisplay === 'boolean' ? newDisplay.toString() : newDisplay; + newValue = extraRecords.filter((r) => (r?._fields?.[displayValueRowIndex]?.toString() || null) == newDisplay2)[0] ._fields[realValueRowIndex]; newValue = @@ -165,8 +167,13 @@ const NodePropertyParameterSelectComponent = (props: ParameterSelectProps) => { /> ); } - let options = extraRecords?.map((r) => r?._fields?.[displayValueRowIndex] || '(no data)'); + + // "false" will not be mapped to "(no data)" + let options = extraRecords + ?.map((r) => r?._fields?.[displayValueRowIndex]) + .map((f) => (f === undefined || f === null ? '(no data)' : f)); options = props.autoSort ? options.sort() : options; + return (