状态管理
|
本文档适用于 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
}