def server_doc(self, doc=None, title=None, location=True): """ Returns a serveable bokeh Document with the panel attached Arguments --------- doc : bokeh.Document (optional) The bokeh Document to attach the panel to as a root, defaults to bokeh.io.curdoc() title : str A string title to give the Document location : boolean or panel.io.location.Location Whether to create a Location component to observe and set the URL location. Returns ------- doc : bokeh.Document The bokeh document the panel was attached to """ doc = doc or _curdoc() title = title or 'Panel Application' doc.title = title model = self.get_root(doc) if hasattr(doc, 'on_session_destroyed'): doc.on_session_destroyed(self._server_destroy) self._documents[doc] = model add_to_doc(model, doc) if location: self._add_location(doc, location, model) return doc
def get_root(self, doc=None, comm=None): """ Returns the root model and applies pre-processing hooks Arguments --------- doc: bokeh.Document Bokeh document the bokeh model will be attached to. comm: pyviz_comms.Comm Optional pyviz_comms when working in notebook Returns ------- Returns the bokeh model corresponding to this panel object """ doc = doc or _curdoc() root = self._get_model(doc, comm=comm) self._preprocess(root) ref = root.ref['id'] state._views[ref] = (self, root, doc, comm) return root
def server_doc(self, doc=None, title=None, location=True): """ Returns a serveable bokeh Document with the panel attached Arguments --------- doc : bokeh.Document (optional) The bokeh Document to attach the panel to as a root, defaults to bokeh.io.curdoc() title : str A string title to give the Document location : boolean or panel.io.location.Location Whether to create a Location component to observe and set the URL location. Returns ------- doc : bokeh.Document The bokeh document the panel was attached to """ from .io.location import Location doc = doc or _curdoc() title = title or 'Panel Application' doc.title = title model = self.get_root(doc) if hasattr(doc, 'on_session_destroyed'): doc.on_session_destroyed(self._server_destroy) self._documents[doc] = model add_to_doc(model, doc) if location: if isinstance(location, Location): loc = location elif state._locations.get(doc) is not None: loc = state._locations[doc] else: loc = Location() state._locations[doc] = loc loc_model = loc._get_model(doc, model) doc.add_root(loc_model) return doc
def servable(self, title=None, location=True): """ Serves the object if in a `panel serve` context and returns the Panel object to allow it to display itself in a notebook context. Arguments --------- title : str A string title to give the Document (if served as an app) location : boolean or panel.io.location.Location Whether to create a Location component to observe and set the URL location. Returns ------- The Panel object itself """ if _curdoc().session_context: logger = logging.getLogger('bokeh') for handler in logger.handlers: if isinstance(handler, logging.StreamHandler): handler.setLevel(logging.WARN) self.server_doc(title=title, location=True) return self