Giter Site home page Giter Site logo

neo4j-labs / neodash Goto Github PK

View Code? Open in Web Editor NEW
402.0 20.0 130.0 86.34 MB

NeoDash - a Dashboard Builder for Neo4j

Home Page: https://neo4j.com/labs/neodash/

License: Apache License 2.0

Shell 0.27% JavaScript 4.26% HTML 0.42% CSS 0.86% TypeScript 91.65% Dockerfile 0.13% Cypher 2.40%
dashboard graph neo4j visualization nodes-2022

neodash's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

neodash's Issues

[Feature Request] Add ability to fill vertical white space with tiles

As different tile types often need to have a larger footprint to be useful outside of fullscreen view (e.g. Graph tiles), but others don't need such a large footprint (e.g. Parameter Select tiles), there are often cases like the one in the attached image in which I end up with a good amount of vertical white space. Since we can only move tiles left and right within a dashboard right now, there's no way to take a short tile and place it beneath another short tile, if they're in the same row as a tall tile.

The most straightforward solution would be drag-and-drop tile placement, but I know that's difficult for this tech stack. So perhaps an up/down arrow to complement the left/right arrow functionality?

image

Trouble with Line Charts

Issue:
Bar chart is working as expected with the query below but Line chart gives an error.

Query:
MATCH (n:Event)
RETURN
apoc.date.format(TIMESTAMP(n.createdAt), 'ms', 'MM-dd') AS Day,
COUNT(n) AS Count
ORDER BY Day ASC
LIMIT 30

Error:
Data was returned, but it can't be visualized.
This could have the following causes:

  • a numeric value field was selected, but no numeric values were returned.
  • a numeric value field was selected, but only zero's were returned.
  • Your visualization expects nodes/relationships, but none were returned.

Here is the same query working fine as a Bar chart:
image

Is there something I am doing wrong? I'd expect the bar and line charts to behave the same.

Thanks!

Using datetime values for x-axis linecharts

Hi Niels,

First of all, I like your dashboarding tool a lot, keep up the good work!

I'm currently working with a graph database that includes timestamps. It would be nice if it is possible to not only use numeric values for the x-axis, but also datetime-like values.

Neodash is not loading the dashboard

Hi Team,

I have performed the mandatory update of Neodash on Monday (3/01/22). After updating to the latest version (2.0.4) the Neodash is crashing and showing a white screen after a few seconds.

Issue - Dashboards are automatically getting closed as soon as we load them under Neodash. This is happening after updating Neodash to the latest version(2.0.4)

Please find the details below and the attached screenshot for more information -

Neo4j Desktop Version - 1.4.11
Neo4j DB Version - 4.2.10
Neodash Version - 2.0.4

image

Also please suggest a way to downgrade the Neodash version

Add option to embed iframes

Use-case 1: embedding a google slides presentation to go together with the graph-based reports
Use-case 2: embedding Neo4j bloom

Chosen graph labels not applied

Hi Niels,

When I export my dasyboard to JSON, I can see that the label selection is saved:

{
  "title": "Which entities are involved?",
  "query": "MATCH (c1:Country)--(:Entity)<-[:ORIGINATOR]-(f:Filing)-[:BENEFITS]->(:Entity)--(c2:Country)\nWHERE c1.name =  \"Netherlands\"\nAND distance(c2.location, point({latitude: 53, longitude: 9})) < 3000000\nWITH c1, c2, sum(f.amount) as amount\nWITH c1, c2, apoc.create.vRelationship(c1, \"TRANSFER\", {amount: amount}, c2) as t\n\nMATCH path=(c2:Country)-[r]-(e:Entity)\nRETURN c1, t, c2, collect(path)[0..10]",
  "width": "6",
  "type": "graph",
  "height": "3",
  "selection": {
    "Country": "location",
    "Entity": "id"
  },
  "settings": {}
}

In this case I selected to show location and id on the nodes.

But when I import the JSON file again, the selected labels aren't applied. It defaults back to show name and name.

Schermafbeelding 2021-12-16 om 11 58 52

Would be great if this selection could be re-applied on import :)

Graph: Relationship Color vs Relationship Width

Hi,

I have one graph where I would like to colour the relationships and modify their width with variables.
If I only do one of the two, it works fine.
If I add a variable for "Relationship Color Property" and another for "Relationship Width Property", the width property seems to be ignored.
Here is the graph without the colour variable:
without colour
And here with the colour (no other changes made):
with colour

Fix bugs relating to property selection reports

  • global properties are not unset when changing the selections
  • cards that use global parameters are refreshed also if other global parameters are changed.
  • custom settings card looks weird for reports with width > 4.
  • Autocompletion is very slow for larger databases, both in the settings view and the user view.
  • Add option for multiple selections per card

Create docker image

The project is awesome and so is the online demo. It would be great if we can build docker images automatically and publish it to a registry so users can deploy more easily.

Map: two points at same location

Hi,

I've been playing around a bit with NeoDash, and most features are very easy to use :)

One minor bug I found is in the map, if I have two nodes at the same location. In that case, only one of them is displayed, and the other just vanishes.

[Feature Request] Free Text Parameter / [Help] Using Parameter Select as Free Text

Hello.

I love NeoDash so far, it makes prototyping quick and easy.

I want implement a search on nodes that meet a certain condition, something like

match(x [....])
where x.$neodash_x_property CONTAINS $neodash_searchword
return x limit 1000

where $neodash_x_property is selected by a parameter select
and $neodash_searchword is selected using a free text field.

Am I missing some advanced option to use the current parameter select as a free text input?
Are there any design choices or technical hurdles opposing such an implementation?

I do know that searching on properties is inefficient.
My data set is small. << 1M nodes
The search will be rarely used. I cannot remodel the graph. (It wouldn't make sense aswell, since this feature will rarely be used)

Thanks for considering this change!

npm run build fails

When running the build command, it fails with the below error.
image

In the gitbash, it throws below error -

image

Kindly help in making the build as it runs on local server fine.

Line Chart: Weird errors

Hi again,

one larger bug that confused me a lot (and still does) happens when I try to create a Line Chart.
I can get the data into a nice table without problems:
Table
But then, when I switch to a Line Chart, I get this message:
Error Message
If I save the dashboard as a json, close the browser (Chrome / Edge), and import the saved dashboard, at least I can select the axis:
Parts of a chart
Now, for the y-axis, at first it only gives me "xhour" as an option. If I click that, the option suddenly disappears and I get the correct options for the chart. I can then finally display the chart.

Fix rendering of Javascript driver return types as strings

In the table and graph visualization view, certain data types are sometimes rendered incorrectly.

  • Numbers are rendered as {low: X, high: Y} in the table when collected, or in the graph visualization on node click.
  • Other properties (dates) are also rendered as a stringified JSON dict.

Parameter Select: custom/auto-resizing of text box

For free text Parameter Select tile type (although probably relevant for other types of PS tiles too), I'm not seeing the text box expand with input/have the ability to be expanded regardless of tile size. I have a use case in which users will be inputting a list of strings that are then used for filtering elsewhere, so they may need a fair amount of space in the text box to enter all their words of interest. Is there a way to do this? If not, could this be added to the feature wishlist please?

image

Npm build fails on Module not found errors

We are developing a neodash prototype, and we were interested in running the 2.0.0-preview version. We can’t get it to build unfortunately. I could post the full error log, but the main issue seems to be missing modules. We are using node 16. Is the package.json on the develop branch complete?

Apologies if we are just too early in wanting to try the new version.

(And thanks for developing neodash!)

Recommend making standalone web-based variant

This tool is extremely helpful for us when we're prototyping out a visualization set for a new client. However, due to some restraints on client systems, we can't always install Neo4j Desktop and instead clients just access the remote graph server we've setup via their web browser. If we could set up NeoDash to run on a pre-specified port in a similar fashion, that would be amazing!

Fix several CSS errors

  • Size selection dropdown is clipping inside small reports
  • card settings can't be clicked for very tall JSON output reports
  • Bar chart's category labels are clipping outside the rendered frame

Parameter select in dashboard builder is not displaying the correct list of a node's properties after update

Hi and thanks for this great tool.

After the recent update to v2, I noticed a number of bugs in existing dashboards (also present in the newly created ones). I created a brief list with screenshots. All of the following were working in the previous version:

1. Adding a Parameter Select box: The Property Name dropdown menu is not updated based on the selection of the Node Label. That leads to not being able to select node-specific properties.
Image Pasted at 2021-12-7 10-56

  1. Similar to 1. the available resources for visualization are not updated in the dropdown menu.
    Image Pasted at 2021-12-7 10-58

  2. Nodes with multiple labels (e.g. a node is of label "Resource" and "nS0_EC-Project") cannot be differentiated and color-coded.
    Image Pasted at 2021-12-7 12-21

It's possible that having multiple labels for each node is the source for this confusion, although it's still unclear to me as to why, given that it worked perfectly in the previous version.

I am using Neodash: v2.0.2 and Neo4j Desktop: v1.4.10.

Build fails on @graphapps/charts

Hey there,

Failed at building in docker container (centos8) image, tried with node12 with npm6. Here are my steps :

[root@8a4add468cc0 neodash]# npm install
..
[root@8a4add468cc0 neodash]# npm run build
..
ERROR in ./src/chart/BarChart.tsx
Module not found: Error: Can't resolve '@graphapps/charts/dist/components/reports/bar' in '/usr/local/src/neodash/src/chart'
 @ ./src/chart/BarChart.tsx 2:0-70 12:42-51
 @ ./src/config/ExampleConfig.tsx
 @ ./src/modal/DocumentationModal.tsx
 @ ./src/dashboard/DashboardDrawer.tsx
 @ ./src/dashboard/Dashboard.tsx
 @ ./src/application/Application.tsx
 @ ./src/index.tsx

ERROR in ./src/chart/LineChart.tsx
Module not found: Error: Can't resolve '@graphapps/charts/dist/components/reports/line' in '/usr/local/src/neodash/src/chart'
 @ ./src/chart/LineChart.tsx 2:0-72 19:38-48
 @ ./src/config/ExampleConfig.tsx
 @ ./src/modal/DocumentationModal.tsx
 @ ./src/dashboard/DashboardDrawer.tsx
 @ ./src/dashboard/Dashboard.tsx
 @ ./src/application/Application.tsx
 @ ./src/index.tsx

I see that package.json points at "@graphapps/charts": "github:nielsdejong/charts#cd8bf3707d48f2c34ec6a1ad126cfd28b5ac3065", not sure if this commitid has broken code.

Even tried with following but getting the same error :

[root@8a4add468cc0 neodash]# npm install -g @graphapps/charts
[root@8a4add468cc0 neodash]# export NODE_PATH=/usr/local/lib/node_modules/

Glitch in hosted demo

Hi Niels,

So far I really enjoy playing around with Neodash! My local installation works fine (latest dev branch). But the version hosted at neodash.graphapp.io seems to have a glitch with the sidebar. It won't collapse and is always on top of the dashboard. Perhaps it needs to be redeployed with the latest version?

Schermafbeelding 2021-11-30 om 14 29 59

I'd love to show Neodash to some of my colleagues and sending them a link to neodash.graphapp.io would definitely be the easiest way to do so :)

Feature Request (Single Number Tile)

A few different thoughts as I'm using the Single Number Tile on ways to improve it:

  1. Allow for more automated vertical text alignment, akin to the left/center/right dropdown used for horizontal alignment in the Text Align advanced setting instead of having to adjust the margin padding in pixels. This is especially important when working with two single value tiles side-by-side that have different font sizes, as a larger font size would require a different padding number to align it well with a smaller font size tile that is also padded (see attached screenshot for an example of what happens when you try to use the same padding value for both).
  2. Generally for all tiles: allow for some preset colors that can be entered as free text, not just as the RGBA code. So allow for RBGA codes still, as this is great flexibility, but build in some basic choices too (e.g. from a dropdown maybe or a color picker if possible)
  3. Modify the default font size to at least 64, if not 128, as even small laptop screens can usually handle those values and they should also accommodate reasonably large numbers (e.g. my screen could handle a font of 64 with numbers in the hundreds of millions).
  4. Recommend adding the ability to include a thousands separator (e.g. ",") as large numbers become hard to view. Also would ideally include an option to turn scientific notation on/off (e.g. 1.57E8).
  5. Dynamic font sizing would be great as well, to make sure that the font size chosen doesn't cut off a large number's digits (especially since users may not be aware this is happening and draw false conclusions as a result).

image

Sorting Dropdowns

Hi again,

as you can see, I am busy building dashboards.....

I have a couple of dropdown menus for graphs etc where there are a lot of entries (let's say fifty or so). I am not sure what criteria they are currently being ordered by, but for human users it would be really nice if they could be sorted alphabetically, with "(no label)" either on top or at the bottom.

Add linked selection 'cards' to set parameters

(Request from user)

Example: have a search field with the name of a product that is added to the query.
In a more advanced version, I could have a drop-down that is tied to another cypher query which lists all available products.

Parameter select does not show labels and properties for big database

Hello,

thank you for this awesome dashboard functionality.

When I run a dedicated cypher query, I get nice chart (see image on left). However Parameter select does not show any options. I assume you are fetching them from a function like 'call apoc.meta.data()'. Unfortunately, that call also does not finish within a minute when I run it in neo4j browser. A simple call to find all node labels ("MATCH (n) RETURN distinct labels(n)") already takes half a minute for my case. Our DB contains 55 Mio. nodes and 100 Mio. relationships. Am I correct that slow query time is the problem here? And if, is there a way around maybe?

Thanks in advance!

Dashboard_Selection_Problem

Dashboard sharing functionality erroring out

When I try to share the dashboard via Share from Neo4j, another user I send the link to can't load it (error message attached). It appears to be having issues with the credentials, but I've set Include Connection Details and Standalone Dashboard both to "Yes". Note that I've tested this on both an HTTP-accessible Neo4j server and an HTTPS-accessible one, with the same problem both times. Any ideas on what could be happening? Note that I get the same error as the other user if I try to open the link.

image

Add cross-report filtering and interactivity

Addition: a feature to let dashboard builders specify charts that are connected, e.g. filtering a report by clicking/selecting parts of the another visualization:

  • Click on a table cell
  • Click on Nodes/relationships in a graph
  • Click on a bars in a bar chart

This click action should set a parameter $neodash_xyz, just like a parameter selection. The parameter can then be used in other reports.

[Feature Request] Graph Tile Popup Enhancement

The graph tile type is quite good, thank you!

As you can see in the screenshots below, if you have a long-value property in a node, when you click on the node to see its pop-up pane in fullness, the text is all right-justified. As this makes it look like all other properties are null/blank (until you scroll all the way to the right), it would probably be more helpful if the property value text were left-justified.

image
image

Show nodes on map related to location

Just wanted to leave this here for others who may struggle with showing nodes on the map.

I have nodes without latitude/longitude attributes, but they are related to a Location node which has them.
In order to put those nodes on the map, in the right location, I had to use this Cypher query:

MATCH (n)-[]-(l:Location)
WITH collect(n{.*, id: id(n), label: labels(n), latitude: l.latitude, longitude: l.longitude}) as items
return items

Basically this keeps all the attributes of node n and temporarily adds lat/long attributes (only for plotting, not modifying in the database). The trick was to also add the id and label, without them the map wouldn't plot the returned data.

Perhaps it would be an idea to document what format the map chart expects.

Bar Chart: Display without grouping is confusing

Hello again,

This may be a feature rather than a bug, but it confused me for quite some time, so I'll share it anyway:
If I have a bar chart, in my case a timeline with one bar for each hour, and I select a variable to group by, it looks good.
grouping
If I do not group by any variable, I only get the data that was marked in yellow in the graphic above.
no grouping
Why? What I would expect to see is either

  • nothing at all
  • a notice that I need to select something to group by
  • the dashboard somehow magically knowing that "connected router" is the variable to generally group by, and then displaying the sum over that variable as one large bar without differentiating into different colours.

Standalone, non editable deployment

Hi,

thanks for the latest version 2.0.6 :)

We would be interested in a standalone deployment of a dashboard without any editing capabilities anymore to avoid people misuing the DB. When we deploy testwise as "standalone", the menu and the possibility to make the app editable is still there. Maybe we are using the app wrongly too. Could you maybe provide a small description also in the docs how this would be possible?

How to adjust the maximum query time interactively?

I'm finding that I need to extend my query response time beyond the default 20 seconds, due to the size of my graph (I'm only able to get it to execute within 75 seconds after implementing relevant indexes). Is there any way to adjust the max query response time configuration without needing to build and deploy the project yourself (e.g. via the interface provided on http://neodash.graphapp.io/)?

Add functionality for multi-page reports

Allow the user to build reports that span multiple pages.
I'm thinking a 'tab' selection at the top of the page with which you can switch pages.
A multi-page report should be saved in a single JSON.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.