From 25a0782682711c8ca391a0aa3178ff6f8edc8ac0 Mon Sep 17 00:00:00 2001 From: JoW Date: Tue, 22 Jul 2025 16:24:45 +0200 Subject: [PATCH 1/3] Fix navigate to page for deep links --- src/dashboard/DashboardThunks.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/dashboard/DashboardThunks.ts b/src/dashboard/DashboardThunks.ts index 3ef4e62bf..738e3c8fe 100644 --- a/src/dashboard/DashboardThunks.ts +++ b/src/dashboard/DashboardThunks.ts @@ -3,7 +3,7 @@ import { updateDashboardSetting } from '../settings/SettingsActions'; import { addPage, movePage, removePage, resetDashboardState, setDashboard, setDashboardUuid } from './DashboardActions'; import { QueryStatus, runCypherQuery } from '../report/ReportQueryRunner'; import { setDraft, setParametersToLoadAfterConnecting, setWelcomeScreenOpen } from '../application/ApplicationActions'; -import { updateGlobalParametersThunk } from '../settings/SettingsThunks'; +import { updateGlobalParametersThunk,setPageNumberThunk } from '../settings/SettingsThunks'; import { createUUID } from '../utils/uuid'; import { createLogThunk } from '../application/logging/LoggingThunk'; import { applicationGetConnectionUser, applicationIsStandalone } from '../application/ApplicationSelectors'; @@ -125,6 +125,17 @@ export const loadDashboardThunk = (uuid, text) => (dispatch: any, getState: any) }); dispatch(setDashboard(dashboard)); + + // Check if we have to navigate to a page + const queryString = window.location.search; + const urlParams = new URLSearchParams(queryString); + const pageToSet = urlParams.get('page'); + if (pageToSet !== '' && pageToSet !== null) { + if (!isNaN(pageToSet)) { + dispatch(setPageNumberThunk(pageToSet)); + } + } + const { application } = getState(); From 66c0d01f8919981b96ebb16f56f61b3ed4eec568 Mon Sep 17 00:00:00 2001 From: JoW Date: Tue, 5 Aug 2025 09:30:17 +0200 Subject: [PATCH 2/3] multiple values for a parameter in standalone mode --- .../ROOT/pages/developer-guide/standalone-mode.adoc | 1 + src/application/ApplicationThunks.ts | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/docs/modules/ROOT/pages/developer-guide/standalone-mode.adoc b/docs/modules/ROOT/pages/developer-guide/standalone-mode.adoc index 30f7ac0be..892642305 100644 --- a/docs/modules/ROOT/pages/developer-guide/standalone-mode.adoc +++ b/docs/modules/ROOT/pages/developer-guide/standalone-mode.adoc @@ -73,6 +73,7 @@ To dynamically view a deployed NeoDash dashboard, you can deep-link into a deplo the following deeplinking options are available via URL parameters: - Appending `?page=1` to the URL will open up a dashboard at a given page. (Starting at zero). - Appending `?neodash_person_name=Tom` to the URL will set a dashboard parameter as a default for the entire dashboard. +- Appending `?neodash_list_person_name=Tom&neodash_list_person_name=Peter` to the URL will pass one parameter person_name as an array you can use in WHERE IN clauses Multiple parameters can be used in a deep-link by concatinating them: .... diff --git a/src/application/ApplicationThunks.ts b/src/application/ApplicationThunks.ts index cdb204394..f73148468 100644 --- a/src/application/ApplicationThunks.ts +++ b/src/application/ApplicationThunks.ts @@ -244,7 +244,14 @@ export const handleSharedDashboardsThunk = () => (dispatch: any) => { const paramsToSetAfterConnecting = {}; Array.from(urlParams.entries()).forEach(([key, value]) => { if (key.startsWith('neodash_')) { - paramsToSetAfterConnecting[key] = value; + if (key.startsWith('neodash_list_')) { + if (paramsToSetAfterConnecting[key] ==null){ + paramsToSetAfterConnecting[key]=[]; + } + paramsToSetAfterConnecting[key].push(value); + } else { + paramsToSetAfterConnecting[key] = value; + } } }); if (Object.keys(paramsToSetAfterConnecting).length > 0) { From 487672dac21146d2168d154860b290306a86f811 Mon Sep 17 00:00:00 2001 From: JoW Date: Tue, 12 Aug 2025 14:59:19 +0200 Subject: [PATCH 3/3] remove code smell. --- src/application/ApplicationThunks.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/application/ApplicationThunks.ts b/src/application/ApplicationThunks.ts index 8dffd368e..e5c394ce0 100644 --- a/src/application/ApplicationThunks.ts +++ b/src/application/ApplicationThunks.ts @@ -246,10 +246,7 @@ export const handleSharedDashboardsThunk = () => (dispatch: any) => { Array.from(urlParams.entries()).forEach(([key, value]) => { if (key.startsWith('neodash_')) { if (key.startsWith('neodash_list_')) { - if (paramsToSetAfterConnecting[key] ==null){ - paramsToSetAfterConnecting[key]=[]; - } - paramsToSetAfterConnecting[key].push(value); + (paramsToSetAfterConnecting[key]??=[]).push(value); } else { paramsToSetAfterConnecting[key] = value; }