Template titles
This commit is contained in:
		
							parent
							
								
									b82da219ce
								
							
						
					
					
						commit
						fbf37fbdfd
					
				@ -1863,8 +1863,15 @@ const AutoSettingsMixin = (SuperClass) => {
 | 
			
		||||
    return class AutoSettingsMixinClass extends SuperClass {
 | 
			
		||||
        constructor() {
 | 
			
		||||
            super();
 | 
			
		||||
            this.__currentTitle = undefined;
 | 
			
		||||
            this._auto_settings_setup();
 | 
			
		||||
            this.addEventListener("browser-mod-config-update", () => this._auto_settings_setup());
 | 
			
		||||
            window.addEventListener("location-changed", () => {
 | 
			
		||||
                this._updateTitle();
 | 
			
		||||
                setTimeout(() => this._updateTitle(), 500);
 | 
			
		||||
                setTimeout(() => this._updateTitle(), 1000);
 | 
			
		||||
                setTimeout(() => this._updateTitle(), 5000);
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
        async _auto_settings_setup() {
 | 
			
		||||
            await this.connectionPromise;
 | 
			
		||||
@ -1908,7 +1915,20 @@ const AutoSettingsMixin = (SuperClass) => {
 | 
			
		||||
                })();
 | 
			
		||||
            }
 | 
			
		||||
            // Title template
 | 
			
		||||
            if (settings.titleTemplate !== undefined) ;
 | 
			
		||||
            if (settings.titleTemplate !== undefined) {
 | 
			
		||||
                (async () => {
 | 
			
		||||
                    if (this._titleTemplateSubscription) {
 | 
			
		||||
                        this._titleTemplateSubscription();
 | 
			
		||||
                    }
 | 
			
		||||
                    this._titleTemplateSubscription = undefined;
 | 
			
		||||
                    this._titleTemplateSubscription =
 | 
			
		||||
                        await this.connection.subscribeMessage(this._updateTitle.bind(this), {
 | 
			
		||||
                            type: "render_template",
 | 
			
		||||
                            template: settings.titleTemplate,
 | 
			
		||||
                            variables: {},
 | 
			
		||||
                        });
 | 
			
		||||
                })();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        get _currentFavicon() {
 | 
			
		||||
            const link = document.head.querySelector("link[rel~='icon']");
 | 
			
		||||
@ -1927,6 +1947,16 @@ const AutoSettingsMixin = (SuperClass) => {
 | 
			
		||||
            link.href = result;
 | 
			
		||||
            window.browser_mod.fireEvent("browser-mod-favicon-update");
 | 
			
		||||
        }
 | 
			
		||||
        get _currentTitle() {
 | 
			
		||||
            return this.__currentTitle;
 | 
			
		||||
        }
 | 
			
		||||
        _updateTitle(data = undefined) {
 | 
			
		||||
            if (data)
 | 
			
		||||
                this.__currentTitle = data.result;
 | 
			
		||||
            if (this.__currentTitle)
 | 
			
		||||
                document.title = this.__currentTitle;
 | 
			
		||||
            window.browser_mod.fireEvent("browser-mod-favicon-update");
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -1967,12 +1997,13 @@ const AutoSettingsMixin = (SuperClass) => {
 | 
			
		||||
    X Framework
 | 
			
		||||
    x Save sidebar
 | 
			
		||||
    x Kiosk mode
 | 
			
		||||
    - Default panel?
 | 
			
		||||
    - Default panel
 | 
			
		||||
    - Screensaver?
 | 
			
		||||
    x Favicon templates
 | 
			
		||||
    - Title templates
 | 
			
		||||
    x Title templates
 | 
			
		||||
  - Tweaks
 | 
			
		||||
    - Quickbar tweaks (ctrl+enter)?
 | 
			
		||||
    - Card-mod preload
 | 
			
		||||
  - Video player?
 | 
			
		||||
  - Media_seek
 | 
			
		||||
  - Screensavers
 | 
			
		||||
 | 
			
		||||
@ -119,8 +119,9 @@ class BrowserModSettingsCard extends s {
 | 
			
		||||
        return $ `
 | 
			
		||||
      <ha-card header="Frontend settings" outlined>
 | 
			
		||||
        <div class="card-content">
 | 
			
		||||
        <ha-alert alert-type="warning">
 | 
			
		||||
          <p>
 | 
			
		||||
            Please note: Those settings severely change the way the Home
 | 
			
		||||
            Please note: The settings in this section severely change the way the Home
 | 
			
		||||
            Assistant frontend works and looks. It is very easy to forget that
 | 
			
		||||
            you made a setting here when you switch devices or user.
 | 
			
		||||
          </p>
 | 
			
		||||
@ -130,6 +131,7 @@ class BrowserModSettingsCard extends s {
 | 
			
		||||
            caches. Failure to do so means you risk wasting a lot of peoples
 | 
			
		||||
            time, and you will be severly and rightfully ridiculed.
 | 
			
		||||
          </p>
 | 
			
		||||
          </ha-alert>
 | 
			
		||||
          <p>
 | 
			
		||||
          Global settings are applied for all users and browsers.</br>
 | 
			
		||||
          User settings are applied to the current user and overrides any Global settings.</br>
 | 
			
		||||
@ -189,10 +191,32 @@ class BrowserModSettingsCard extends s {
 | 
			
		||||
 | 
			
		||||
        <div class="separator"></div>
 | 
			
		||||
 | 
			
		||||
        <ha-settings-row>
 | 
			
		||||
          <span slot="heading">Title template</span>
 | 
			
		||||
          ${OVERRIDDEN("titleTemplate")}
 | 
			
		||||
        </ha-settings-row>
 | 
			
		||||
        <ha-code-editor
 | 
			
		||||
          .hass=${this.hass}
 | 
			
		||||
          .value=${current.titleTemplate}
 | 
			
		||||
          @value-changed=${(ev) => {
 | 
			
		||||
            const tpl = ev.detail.value || undefined;
 | 
			
		||||
            window.browser_mod.set_setting("titleTemplate", tpl, level);
 | 
			
		||||
        }}
 | 
			
		||||
        ></ha-code-editor>
 | 
			
		||||
        <ha-settings-row>
 | 
			
		||||
          <mwc-button
 | 
			
		||||
            @click=${() => window.browser_mod.set_setting("titleTemplate", undefined, level)}
 | 
			
		||||
          >
 | 
			
		||||
            Clear
 | 
			
		||||
          </mwc-button>
 | 
			
		||||
        </ha-settings-row>
 | 
			
		||||
 | 
			
		||||
        <div class="separator"></div>
 | 
			
		||||
 | 
			
		||||
        <ha-settings-row>
 | 
			
		||||
          <span slot="heading">Hide Sidebar</span>
 | 
			
		||||
          <span slot="description">Hide the sidebar and hamburger menu</span>
 | 
			
		||||
          Currenty: ${DESC_BOOLEAN(current.hideSidebar)}
 | 
			
		||||
          Currently: ${DESC_BOOLEAN(current.hideSidebar)}
 | 
			
		||||
          ${OVERRIDDEN("hideSidebar")}
 | 
			
		||||
        </ha-settings-row>
 | 
			
		||||
        <ha-settings-row>
 | 
			
		||||
@ -218,7 +242,7 @@ class BrowserModSettingsCard extends s {
 | 
			
		||||
        <ha-settings-row>
 | 
			
		||||
          <span slot="heading">Hide Header</span>
 | 
			
		||||
          <span slot="description">Hide the header on all pages</span>
 | 
			
		||||
          Currenty: ${DESC_BOOLEAN(current.hideHeader)}
 | 
			
		||||
          Currently: ${DESC_BOOLEAN(current.hideHeader)}
 | 
			
		||||
          ${OVERRIDDEN("hideHeader")}
 | 
			
		||||
        </ha-settings-row>
 | 
			
		||||
        <ha-settings-row>
 | 
			
		||||
@ -246,7 +270,7 @@ class BrowserModSettingsCard extends s {
 | 
			
		||||
          <span slot="description"
 | 
			
		||||
            >Order and visibility of sidebar buttons</span
 | 
			
		||||
          >
 | 
			
		||||
          Currenty: ${DESC_SET_UNSET(current.sidebarPanelOrder)}
 | 
			
		||||
          Currently: ${DESC_SET_UNSET(current.sidebarPanelOrder)}
 | 
			
		||||
          ${OVERRIDDEN("sidebarPanelOrder")}
 | 
			
		||||
        </ha-settings-row>
 | 
			
		||||
        <ha-settings-row>
 | 
			
		||||
 | 
			
		||||
@ -27,8 +27,9 @@ class BrowserModSettingsCard extends LitElement {
 | 
			
		||||
    return html`
 | 
			
		||||
      <ha-card header="Frontend settings" outlined>
 | 
			
		||||
        <div class="card-content">
 | 
			
		||||
        <ha-alert alert-type="warning">
 | 
			
		||||
          <p>
 | 
			
		||||
            Please note: Those settings severely change the way the Home
 | 
			
		||||
            Please note: The settings in this section severely change the way the Home
 | 
			
		||||
            Assistant frontend works and looks. It is very easy to forget that
 | 
			
		||||
            you made a setting here when you switch devices or user.
 | 
			
		||||
          </p>
 | 
			
		||||
@ -38,6 +39,7 @@ class BrowserModSettingsCard extends LitElement {
 | 
			
		||||
            caches. Failure to do so means you risk wasting a lot of peoples
 | 
			
		||||
            time, and you will be severly and rightfully ridiculed.
 | 
			
		||||
          </p>
 | 
			
		||||
          </ha-alert>
 | 
			
		||||
          <p>
 | 
			
		||||
          Global settings are applied for all users and browsers.</br>
 | 
			
		||||
          User settings are applied to the current user and overrides any Global settings.</br>
 | 
			
		||||
@ -106,10 +108,33 @@ class BrowserModSettingsCard extends LitElement {
 | 
			
		||||
 | 
			
		||||
        <div class="separator"></div>
 | 
			
		||||
 | 
			
		||||
        <ha-settings-row>
 | 
			
		||||
          <span slot="heading">Title template</span>
 | 
			
		||||
          ${OVERRIDDEN("titleTemplate")}
 | 
			
		||||
        </ha-settings-row>
 | 
			
		||||
        <ha-code-editor
 | 
			
		||||
          .hass=${this.hass}
 | 
			
		||||
          .value=${current.titleTemplate}
 | 
			
		||||
          @value-changed=${(ev) => {
 | 
			
		||||
            const tpl = ev.detail.value || undefined;
 | 
			
		||||
            window.browser_mod.set_setting("titleTemplate", tpl, level);
 | 
			
		||||
          }}
 | 
			
		||||
        ></ha-code-editor>
 | 
			
		||||
        <ha-settings-row>
 | 
			
		||||
          <mwc-button
 | 
			
		||||
            @click=${() =>
 | 
			
		||||
              window.browser_mod.set_setting("titleTemplate", undefined, level)}
 | 
			
		||||
          >
 | 
			
		||||
            Clear
 | 
			
		||||
          </mwc-button>
 | 
			
		||||
        </ha-settings-row>
 | 
			
		||||
 | 
			
		||||
        <div class="separator"></div>
 | 
			
		||||
 | 
			
		||||
        <ha-settings-row>
 | 
			
		||||
          <span slot="heading">Hide Sidebar</span>
 | 
			
		||||
          <span slot="description">Hide the sidebar and hamburger menu</span>
 | 
			
		||||
          Currenty: ${DESC_BOOLEAN(current.hideSidebar)}
 | 
			
		||||
          Currently: ${DESC_BOOLEAN(current.hideSidebar)}
 | 
			
		||||
          ${OVERRIDDEN("hideSidebar")}
 | 
			
		||||
        </ha-settings-row>
 | 
			
		||||
        <ha-settings-row>
 | 
			
		||||
@ -138,7 +163,7 @@ class BrowserModSettingsCard extends LitElement {
 | 
			
		||||
        <ha-settings-row>
 | 
			
		||||
          <span slot="heading">Hide Header</span>
 | 
			
		||||
          <span slot="description">Hide the header on all pages</span>
 | 
			
		||||
          Currenty: ${DESC_BOOLEAN(current.hideHeader)}
 | 
			
		||||
          Currently: ${DESC_BOOLEAN(current.hideHeader)}
 | 
			
		||||
          ${OVERRIDDEN("hideHeader")}
 | 
			
		||||
        </ha-settings-row>
 | 
			
		||||
        <ha-settings-row>
 | 
			
		||||
@ -169,7 +194,7 @@ class BrowserModSettingsCard extends LitElement {
 | 
			
		||||
          <span slot="description"
 | 
			
		||||
            >Order and visibility of sidebar buttons</span
 | 
			
		||||
          >
 | 
			
		||||
          Currenty: ${DESC_SET_UNSET(current.sidebarPanelOrder)}
 | 
			
		||||
          Currently: ${DESC_SET_UNSET(current.sidebarPanelOrder)}
 | 
			
		||||
          ${OVERRIDDEN("sidebarPanelOrder")}
 | 
			
		||||
        </ha-settings-row>
 | 
			
		||||
        <ha-settings-row>
 | 
			
		||||
 | 
			
		||||
@ -4,6 +4,7 @@ export const AutoSettingsMixin = (SuperClass) => {
 | 
			
		||||
  return class AutoSettingsMixinClass extends SuperClass {
 | 
			
		||||
    _faviconTemplateSubscription;
 | 
			
		||||
    _titleTemplateSubscription;
 | 
			
		||||
    __currentTitle = undefined;
 | 
			
		||||
 | 
			
		||||
    constructor() {
 | 
			
		||||
      super();
 | 
			
		||||
@ -12,6 +13,13 @@ export const AutoSettingsMixin = (SuperClass) => {
 | 
			
		||||
      this.addEventListener("browser-mod-config-update", () =>
 | 
			
		||||
        this._auto_settings_setup()
 | 
			
		||||
      );
 | 
			
		||||
 | 
			
		||||
      window.addEventListener("location-changed", () => {
 | 
			
		||||
        this._updateTitle();
 | 
			
		||||
        setTimeout(() => this._updateTitle(), 500);
 | 
			
		||||
        setTimeout(() => this._updateTitle(), 1000);
 | 
			
		||||
        setTimeout(() => this._updateTitle(), 5000);
 | 
			
		||||
      });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async _auto_settings_setup() {
 | 
			
		||||
@ -72,6 +80,21 @@ export const AutoSettingsMixin = (SuperClass) => {
 | 
			
		||||
 | 
			
		||||
      // Title template
 | 
			
		||||
      if (settings.titleTemplate !== undefined) {
 | 
			
		||||
        (async () => {
 | 
			
		||||
          if (this._titleTemplateSubscription) {
 | 
			
		||||
            this._titleTemplateSubscription();
 | 
			
		||||
          }
 | 
			
		||||
          this._titleTemplateSubscription = undefined;
 | 
			
		||||
          this._titleTemplateSubscription =
 | 
			
		||||
            await this.connection.subscribeMessage(
 | 
			
		||||
              this._updateTitle.bind(this),
 | 
			
		||||
              {
 | 
			
		||||
                type: "render_template",
 | 
			
		||||
                template: settings.titleTemplate,
 | 
			
		||||
                variables: {},
 | 
			
		||||
              }
 | 
			
		||||
            );
 | 
			
		||||
        })();
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -93,5 +116,15 @@ export const AutoSettingsMixin = (SuperClass) => {
 | 
			
		||||
      link.href = result;
 | 
			
		||||
      window.browser_mod.fireEvent("browser-mod-favicon-update");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    get _currentTitle() {
 | 
			
		||||
      return this.__currentTitle;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    _updateTitle(data = undefined) {
 | 
			
		||||
      if (data) this.__currentTitle = data.result;
 | 
			
		||||
      if (this.__currentTitle) document.title = this.__currentTitle;
 | 
			
		||||
      window.browser_mod.fireEvent("browser-mod-favicon-update");
 | 
			
		||||
    }
 | 
			
		||||
  };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -53,12 +53,13 @@ import { AutoSettingsMixin } from "./auto-settings";
 | 
			
		||||
    X Framework
 | 
			
		||||
    x Save sidebar
 | 
			
		||||
    x Kiosk mode
 | 
			
		||||
    - Default panel?
 | 
			
		||||
    - Default panel
 | 
			
		||||
    - Screensaver?
 | 
			
		||||
    x Favicon templates
 | 
			
		||||
    - Title templates
 | 
			
		||||
    x Title templates
 | 
			
		||||
  - Tweaks
 | 
			
		||||
    - Quickbar tweaks (ctrl+enter)?
 | 
			
		||||
    - Card-mod preload
 | 
			
		||||
  - Video player?
 | 
			
		||||
  - Media_seek
 | 
			
		||||
  - Screensavers
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user