jupyter / dashboards

[RETIRED] See Voilà as a supported replacement
https://github.com/voila-dashboards
Other
984 stars 211 forks source link

Links/user interactions across dashboards #150

Open thibaudh opened 8 years ago

thibaudh commented 8 years ago

I would like start a discussion on a potential new feature: linking dashboards with each others through user interactions. For instance, when the user clicks on one column of a bar chart in dashboard A, I would like to open dashboard B in another tab with a pre-filled textfield matching the column clicked. This opens the door to creating small apps from a set of dashboards.

From discussions with @parente, we would need to

Is that a reasonable implementation strategy? What could we do better?

parente commented 8 years ago

Thanks for opening this to start the discussion.

Teach jupyter-incubator/declarativewidgets to fill textfields, update sliders, etc. based on values from URL parameters.

I'm not sure the widgets need to change at all. Since the second notebook will need to execute top-to-bottom anyway, it can easily include code that reads URL parameters and sets widget state. If patterns become apparent, then may be there's something that can be done in the declarative widgets to simply further.

I would like to open dashboard B in another tab ...

This part worries me the most. What if the user clicks a field in A to cause B to open. The goes back to A and clicks another field. Does that open yet another tab C? Or overwrite B? And if it's B and C, which one gets to drive the single kernel behind that second dashboard/notebook? And is the performance going to be terrible from having to Run All on every tab open?

/cc @lbustelo @jtyberg

jtyberg commented 8 years ago

Well, it's an interesting idea. I ran across a situation recently where we built two dashboards with some overlapping functionality. We're now merging the two into a single dashboard. What worries me about this is now the single notebook becomes a development environment for what is becoming a full-fledged web app, and now it literally has more widget markup than python code. So yeah, the notion of smaller dashboards with a few widgets each that can somehow communicate with one another sounds like a cool idea.

On the other hand, it feels more and more like I'm doing my laundry in my dishwasher. When we start talking about this level of complexity, I start to wonder: Are notebooks the right tool for the job?

I personally like to keep my browser tabs organized, so I hate the idea of multiple browser tabs opening with the same content. And as I think more about it, I'm trying to envision a scenario where using multiple tabs/windows doesn't feel a bit clumsy. I think in concrete terms, so maybe a use case would help.

dalogsdon commented 8 years ago

@thibaudh: This opens the door to creating small apps from a set of dashboards.

@jtyberg: now the single notebook becomes a development environment for what is becoming a full-fledged web app

I think these comments are reaching for something broader than dashboards. From these comments as well as discussions in other issues it is becoming clear that Dynamic Dashboards + Declarative Widgets are exposing a desire/need for rapid web app development using the notebook.

A dashboard is a specific type of app (single-page, single kernel), and there are certainly broader use cases like those mentioned here (multi-page, multi-kernel/kernel management). In such cases there would need to be components for managing things like more complex functionality and making it easier to drop in widgets, and I envision them as being above Dynamic Dashboards rather than part of it.

I'm not sure if all of this has been discussed yet, but perhaps it is worth a conversation.

cc @parente

parente commented 8 years ago

Updated on this convo: This request will be handled outside the notebook by the way dashboards_nodejs_app is implemented. You can push two or more notebooks to a single instance of that server and have them refer to each other by relative paths.

Within the notebook server, this still remains an open question.

RobbieShan commented 7 years ago

Just a newbie trying to use the Dashboards (which I think is a fantastic idea!).

Is it possible to get one Dashboard split into multiple tabs. (The Kernel doesn't need to be different)

I'm talking about something like what github has below

image

The Code, Issues, Pull Requests etc.. are in the same browser tab but display different data. I'm wondering if there is a way to take one notebook (one kernel) and split up cells to different "screens". That way a user can stay within the Same Browser Tab but thumb through these screens instead of vertically scrolling through them.

PS: One way I've tried to get around this is by using the Table of Content Extension. But it would be ideal to be able to truly convert my long notebooks into "thumbable" screens one a single browser tab and on a single kernel.