状态管理
NeoDash 是一个具有复杂内部状态的应用程序。如果您打算以某种方式扩展应用程序状态,请确保您熟悉 Redux 设计模式。
应用程序的整个状态对象封装在以下 JSON 结构中
{ "dashboard": { "title": "My Dashboard Name", "version": "2.4", "settings": { "pagenumber": 0, "editable": true, ... "parameters": { ... } }, "pages": [ ... ] }, "application": { ... }, "version": "2.1.0" }
在最高级别,此对象包含三个条目
-
dashboard
:与当前活动仪表盘相关的所有状态。当仪表盘加载、修改或删除时,这会发生变化。 -
application
:与应用程序本身相关的所有状态。这描述了哪些窗口已打开,您连接到哪个数据库等等。 -
version
:正在运行的 NeoDash 的版本。请注意,这些是完整的版本号(形如 X.Y.Z),与仪表盘版本不同,仪表盘版本有不同的版本控制方案。
想要查看应用程序的完整状态对象?从“关于”窗口生成一份调试报告。
仪表盘状态
仪表盘条目包含当前加载的仪表盘的整个状态。以以下简单仪表盘为例。
{ "dashboard": { "title": "A Simple Dashboard", "version": "2.4", "settings": { "pagenumber": 0, "editable": true, "fullscreenEnabled": true, "parameters": { "neodash_person_name": "Bob" } }, "pages": [ { title: “My Page” reports: [ { "title": "My Report", "query": "MATCH (n)-[e]->(m) RETURN n,e,m", "type": "graph", "x": "1", "y": "2", "width": "6", "height": "3", "settings": { "nodeColorSchmeme": "blue" } } ] } ] } }
对象的重点条目是
-
title
:仪表盘的标题。这将显示在窗口顶部。 -
version
:主加载的仪表盘版本。 -
settings
:包含仪表盘的设置。这包括当前页码、仪表盘是否可编辑、仪表盘是否处于全屏模式以及当前设置的仪表盘参数。 -
pages
:包含仪表盘中所有页面的列表。每个页面都有一个标题和一个报表列表。
应用程序状态
应用程序状态是一个扁平的字典,其中包含确定用户窗口外观(哪些窗口已打开?)以及当前数据库连接以及应用程序是否在独立模式下运行的值。
"application": { "notificationTitle": null, "notificationMessage": null, "connectionModalOpen": false, "welcomeScreenOpen": true, "aboutModalOpen": true, "connection": { "protocol": "neo4j+s", "url": "localhost", "port": "", "database": "", "username": "neo4j", "password": "************" }, "desktopConnection": null, "connected": false, "dashboardToLoadAfterConnecting": null, "waitForSSO": false, "standalone": false, "oldDashboard": null, "ssoEnabled": false, "ssoProviders": [], "ssoDiscoveryUrl": "https://example.com", "standaloneProtocol": "neo4j", "standaloneHost": "localhost", "standalonePort": "7687", "standaloneDatabase": "neo4j", "standaloneDashboardName": "My Dashboard", "standaloneDashboardDatabase": "dashboards", "standaloneDashboardURL": "dashboards", "loggingMode": "0", "loggingDatabase": "logging", "standaloneAllowLoad": false, "standaloneLoadFromOtherDatabases ": false, "standaloneMultiDatabase": false, "standaloneDatabaseList": "neo4j", "notificationIsDismissable": null }