wesky93/two-one

neodash Standalone Mode PoC

Closed this issue · 3 comments

https://neo4j.com/labs/neodash/2.1/developer-guide/standalone-mode/
도커 컴포즈 구동시 자동으로 사전 구축된 대시보드를 불러올수 있는지 여부 테스트

neodash는 대시보드를 neo4j에 저장하는 것을 지원합니다.
이때 노드에다가 아래 내용을 저장 하는 방식이라
cli에서 대시보드 밀어넣기 명령어를 통해 사전에 만든 대시보드를 넣어주면 작동 할거 같습니다.

{
  "title": "My dashboard",
  "version": "2.3",
  "settings": {
    "pagenumber": 0,
    "editable": true,
    "fullscreenEnabled": false,
    "parameters": {},
    "theme": "dark",
    "downloadImageEnabled": true
  },
  "pages": [
    {
      "title": "Main Page",
      "reports": [
        {
          "id": "dadfa29a-4e38-450f-baab-2f703372fb60",
          "title": "Hi there 👋",
          "query": "**This is your first dashboard!** \n \nYou can click (⋮) to edit this report, or add a new report to get started. You can run any Cypher query directly from each report and render data in a variety of formats. \n \nTip: try _renaming_ this report by editing the title text. You can also edit the dashboard header at the top of the screen.\n\n\n",
          "width": 3,
          "height": 2,
          "x": 0,
          "y": 0,
          "type": "text",
          "selection": {},
          "settings": {}
        },
        {
          "id": "b9bffac0-076a-498d-b9b0-9e01f9680f32",
          "title": "",
          "query": "MATCH (n)-[e]->(m) RETURN n,e,m LIMIT 20\n\n\n",
          "width": 3,
          "height": 2,
          "x": 3,
          "y": 0,
          "type": "graph",
          "selection": {},
          "settings": {}
        },
        {
          "id": "b970efaf-f814-485f-839f-1f2eaf803d64",
          "title": "",
          "query": "\n\n\n",
          "width": 3,
          "height": 2,
          "x": 6,
          "y": 0,
          "type": "graph",
          "selection": {},
          "settings": {},
          "schema": []
        }
      ]
    },
    {
      "title": "New page",
      "reports": []
    }
  ],
  "parameters": {},
  "extensions": {
    "active": true,
    "activeReducers": [],
    "advanced-charts": {
      "active": true
    },
    "styling": {
      "active": true
    },
    "actions": {
      "active": true
    }
  }
}
2023-08-28_22-00-27 이런식으로 _Neodash_Dashboard 타입의 노드에 저장 됩니다.

DASHBOARD = {
    "title": "Two One",
    "version": "2.3",
    "settings": {
        "pagenumber": 0,
        "editable": True,
        "fullscreenEnabled": False,
        "parameters": {},
        "theme": "dark",
        "downloadImageEnabled": True
    },
    "pages": [
        {
            "title": "Overview",
            "reports": [
                {
                    "id": "dadfa29a-4e38-450f-baab-2f703372fb60",
                    "title": "Hi there 👋",
                    "query": "**This is your first dashboard!** \n \nYou can click (⋮) to edit this report, or add a new report to get started. You can run any Cypher query directly from each report and render data in a variety of formats. \n \nTip: try _renaming_ this report by editing the title text. You can also edit the dashboard header at the top of the screen.\n\n\n",
                    "width": 3,
                    "height": 2,
                    "x": 0,
                    "y": 0,
                    "type": "text",
                    "selection": {},
                    "settings": {}
                },
                {
                    "id": "b9bffac0-076a-498d-b9b0-9e01f9680f32",
                    "title": "",
                    "query": "MATCH (n)-[e]->(m) RETURN n,e,m LIMIT 20\n\n\n",
                    "width": 3,
                    "height": 2,
                    "x": 3,
                    "y": 0,
                    "type": "graph",
                    "selection": {},
                    "settings": {}
                },
                {
                    "id": "d1bfc841-4b74-436c-a1c4-2da85df22ab1",
                    "title": "",
                    "query": "MATCH (n)\nRETURN COUNT(n) as Total\n\n",
                    "width": 3,
                    "height": 2,
                    "x": 6,
                    "y": 0,
                    "type": "table",
                    "selection": {},
                    "settings": {},
                    "schema": []
                },
                {
                    "id": "147bf516-a17b-4809-a1ab-fe33a00495e2",
                    "title": "",
                    "query": "\nMATCH (n)\nRETURN COUNT(n) as Total\n\n\n\n",
                    "width": 3,
                    "height": 2,
                    "x": 9,
                    "y": 0,
                    "type": "bar",
                    "selection": {
                        "index": "Total",
                        "value": "Total",
                        "key": "(none)"
                    },
                    "settings": {},
                    "schema": []
                }
            ]
        },
        {
            "title": "Details",
            "reports": []
        }
    ],
    "parameters": {},
    "extensions": {
        "active": True,
        "activeReducers": [],
        "advanced-charts": {
            "active": True
        },
        "styling": {
            "active": True
        },
        "actions": {
            "active": True
        }
    }
}


class NeoDashboard(StructuredNode):
    __label__ = '_Neodash_Dashboard'
    title = StringProperty()
    date = DateTimeProperty()
    user = StringProperty()
    content = JSONProperty()

    @classmethod
    def ingest_dashboard(cls, uesr='neo4j'):
        data = dict(
            title='Two One',
            date=datetime.now(),
            user=uesr,
            content=DASHBOARD
        )
        cls.create_or_update(data)

아래 같은 형식으로 사용자의 DB에 미리 만든 대시보드를 밀어 넣고
NeoDash에서 불러오기 가능한걸 확인 했습니다.

standalone-mode 문서에는
dashboard 이름을 입력 하면 자동으로 불러오는것처럼 보이나
실제로 작동되지 않아서 일단 문서를 통해 수동으로 불러오기를 가이드 하고
추후 완전 연동을 고려할 예정입니다.