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"))
def unregister(): frontend.async_remove_panel(hass, panel_url)
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()
def async_unregister_panel(hass): frontend.async_remove_panel(hass, DOMAIN) _LOGGER.debug("Removing panel")