状态管理

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
}