-
Notifications
You must be signed in to change notification settings - Fork 48
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Lazily loading separate documents? #20
Comments
Thanks for the nice feedback! The basic answer is that I have
When the user changes the active page via the The functionality to change the page can be found here @param.depends("services.page_service.page", watch=True)
def _update_main_container(self):
with self.services.progress_service.mark_active(
f"Loading {self.services.page_service.page.name}"
):
if self.services.page_service.page.show_loading_page:
self.main[:] = [self.loading_page_component.main]
main_instance = self._application_page_instance.main
main_instance.align = "center"
main_instance.sizing_mode = "stretch_width"
self.main[:] = [
self._main_spacer, # Trick to force main to stretch to full width of appContent
main_instance,
] There are more details though.
Hope this guides you in the right direction. Feel free to ask more questions in order to get a good understanding. |
Below I will write a little bit of my thoughts behind the design of awesome-panel.org and the vision for it. My understanding of Panel is that
But it is not really, yet demonstrated that you can build a consistent, modern, secure and performant application in Panel and how. So I've set out to explore and build this. Both for my own fun and need. But also to help colleagues and fellow Pythonistas. One place I look for inspiration is in BI Tools like Power BI and Tableau. They are not nearly as powerful or flexible as Panel but using them it is very easy to develop something consistent and deploy it fast and securely. Another place is Streamlit. Streamlit is really, really easy to start using. But it yet very difficult to build larger, custom and more interactive applications. Maybe they will solve that. Maybe they cannot because of the Another thing I cant settle my mind on is really micro app versus (monolith) app platform. In some situations users would like to deploy apps as micro apps in one container for each app and maybe bind things together using reverse proxies etc. In some situations users would like to avoid all the DevOps stuff and just have one application to deploy, monitor and maintain. But an application that is really a platform for building and deploying small apps. I'm a little old fashion still so I tend to like the last solution. I fear ending up in container and devops hell. I have been thinking a lot about whether to have one document and load pages lazily as currently done for awesome-panel.org or just use The first is faster, more modern and can keep the state. I think eventually I will end up supporting both. Some For example I have a Material Designer application coming up where the user can select colors according to the Material color scheme and see how the existing Panel layouts, panes and widgets look in that theme (Dark theme yes :-)). I dont know yet if that will work out nicely working together with the rest of the pages. So maybe that will be served at a seperate url. I also have an intention one day to show case other themes than Material on which awesome-panel.org is currently built. For example Golden or SAP UI 5 (yes SAP and Python - weird combination :-)). SAP has actually released the most comprehensive set of web components and they work really, really well with Panel. I also have then intention one day to show case that you can build really, really nice looking dashboards and applications in Panel. Something that is just as nice as what people show case in Power BI, Panel or Dash. Those technologies focus on look and feel while Panel so far has focused on raw power and the underlying technology. FYI. @philippjfr |
@julioasotodv . My wish is actually that one day there is a general purpose application package for Panel. it could be the awesome-panel python package, it could be provided by Panel it self or maybe someone else. Currently I am still learning and refactoring. But my intention is to polish, mature and document so that what I have built can be used by others. But for that I would need someone who would like to use something like this and would be willing to guide how the api current feels and how it should feel. |
One thing that is not yet in awesome-panel.org is a better use of the I would also like to be able to save more of the state (like slider values etc.) in the url parameters. All of this to enable my users to bookmark and share deep links. Philipp has developed the |
Regarding data and dataframes I have to things I would like to integrate. My applications often contain one or more dataframes of data. I would like some general application functionality that enables selecting from a list of dataframes and downloading. That is really what the disabled Similarly I would like some general application functionality for dataframes that enables the user to select, explore and pivot a dataframe. I believe I would use the PerspectiveViewer for this. I believe the last functionality would be really, really powerful and something that BI tools do not provide today. |
And finally I think what makes Panel so powerful is really When I look at Streamlit, Voila and Dash its either not possible or not really communicated. So I would really, really like to understand and describe how to build larger applications using I'm experimenting with a Model-Service-Component-View model but have a feeling that might be too much for Panel and Panel users. |
@MarcSkovMadsen - I truly think you should publish your vision as a part of the documentation and not here. Thanks for the amazing work! |
Thanks all. Will close this one as the original request has been answered. |
First of all, thank you for this project. I’ts awesome :)
This issue is more of a question than anything else: I see that when you select a page in the top bar (for instance Gallery, Resources, About...) the page loads without redirecting to other url; and perhaps showing a blinking Panel logo while the page loads.
My question is basically how is it done, because it looks and feels really slick! I have tried to look it up in the code but I’m unsure where it happens. Is it all part of the same Bokeh document? Or is there a Bokeh Document for each page? And in that case, how are you able to switch between documents without triggering a url redirect?
Thank you! I’m really interested in knowing how it works :)
The text was updated successfully, but these errors were encountered: