状态管理
本文档适用于 NeoDash 的不受支持版本,该版本属于 Neo4j Labs 的一部分。对于支持的 NeoDash 产品用户,请参考 NeoDash 商业版。 |
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 }