async def storage_dashboard_changed(change_type, item_id, item):
        """Handle a storage dashboard change."""
        url_path = item[CONF_URL_PATH]

        if change_type == collection.CHANGE_REMOVED:
            frontend.async_remove_panel(hass, url_path)
            await hass.data[DOMAIN]["dashboards"].pop(url_path).async_delete()
            return

        if change_type == collection.CHANGE_ADDED:

            existing = hass.data[DOMAIN]["dashboards"].get(url_path)

            if existing:
                _LOGGER.warning(
                    "Cannot register panel at %s, it is already defined in %s",
                    url_path,
                    existing,
                )
                return

            hass.data[DOMAIN]["dashboards"][url_path] = dashboard.LovelaceStorage(
                hass, item
            )

            update = False
        else:
            hass.data[DOMAIN]["dashboards"][url_path].config = item
            update = True

        try:
            _register_panel(hass, url_path, MODE_STORAGE, item, update)
        except ValueError:
            _LOGGER.warning("Failed to %s panel %s from storage", change_type, url_path)
async def update_dashboards() -> None:
    """Add this integrations Lovelace dashboard."""

    hass = get_base().hass

    config = {
        CONF_MODE:
        MODE_YAML,
        CONF_TITLE:
        TITLE,
        CONF_ICON:
        LOVELACE_DASHBOARD_ICON,
        CONF_SHOW_IN_SIDEBAR:
        True,
        CONF_REQUIRE_ADMIN:
        False,
        CONF_FILENAME:
        os.path.abspath(
            os.path.join(
                os.path.dirname(__file__),
                os.pardir,
                LOVELACE_DIR,
                LOVELACE_FILENAME_SOURCE,
            )),
    }

    yaml_config = LovelaceYAML(hass, LOVELACE_DASHBOARD_URL_PATH, config)
    hass.data[LOVELACE_DOMAIN][CONF_DASHBOARDS][
        LOVELACE_DASHBOARD_URL_PATH] = yaml_config

    kwargs = {
        "frontend_url_path": LOVELACE_DASHBOARD_URL_PATH,
        "require_admin": config[CONF_REQUIRE_ADMIN],
        "config": {
            CONF_MODE: config[CONF_MODE]
        },
        "update": False,
        "sidebar_title": config[CONF_TITLE],
        "sidebar_icon": config[CONF_ICON],
    }

    if LOVELACE_DASHBOARD_URL_PATH in hass.data.get(DATA_PANELS, {}):
        async_remove_panel(hass, LOVELACE_DASHBOARD_URL_PATH)

    async_register_built_in_panel(hass, LOVELACE_DOMAIN, **kwargs)

    # Refresh lovelace using browser_mod
    hass.async_create_task(
        hass.services.async_call("browser_mod", "lovelace_reload"))
Exemple #3
0
 def unregister():
     frontend.async_remove_panel(hass, panel_url)
Exemple #4
0
async def async_remove_entry(hass, config_entry):
    _LOGGER.warning("Dwains Dashboard is now uninstalled.")

    frontend.async_remove_panel(hass, "dwains-dashboard")
 async def delete(self, request, addon):
     """Handle remove add-on panel requests."""
     frontend.async_remove_panel(self.hass, addon)
     return web.Response()
Exemple #6
0
def async_unregister_panel(hass):
    frontend.async_remove_panel(hass, DOMAIN)
    _LOGGER.debug("Removing panel")