.. _faq:

==========================
Frequently Asked Questions
==========================

What is the relationship between ``Dashboards``, ``Panels``, and navigation?

    The navigational structure is strongly encouraged to flow from
    ``Dashboard`` objects as top-level navigation items to ``Panel`` objects as
    sub-navigation items as in the current implementation. Template tags
    are provided to automatically generate this structure.

    That said, you are not required to use the provided tools and can write
    templates and URLconfs by hand to create any desired structure.

Does a panel have to be an app in ``INSTALLED_APPS``?

    A panel can live in any Python module. It can be a standalone which ties
    into an existing dashboard, or it can be contained alongside others within
    a larger dashboard "app". There is no strict enforcement here. Python
    is "a language for consenting adults." A module containing a Panel does
    not need to be added to ``INSTALLED_APPS``, but this is a common and
    convenient way to load a standalone panel.

Could I hook an external service into a panel using, for example, an iFrame?

    Panels are just entry-points to hook views into the larger dashboard
    navigational structure and enforce common attributes like RBAC. The
    views and corresponding templates can contain anything you would like,
    including iFrames.

What does this mean for visual design?

    The ability to add an arbitrary number of top-level navigational items
    (``Dashboard`` objects) poses a new design challenge. Horizon's lead
    designer has taken on the challenge of providing a reference design
    for Horizon which supports this possibility.

