diff --git a/README.md b/README.md index 5cc6626..4ec3688 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ Custom Home Assistant card displaying a responsive overview of multiple days wit Add: ```yaml resources: - - url: /local/week-planner-card.js?version=1.0.0 + - url: /local/week-planner-card.js?version=1.0.1 type: module ``` - **Using the graphical editor** diff --git a/package-lock.json b/package-lock.json index 1a5d868..a69b31c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "week-planner-card", - "version": "0.0.1-alpha", + "version": "1.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "week-planner-card", - "version": "0.0.1-alpha", + "version": "1.0.1", "dependencies": { "lit": "^3.1.2", "moment": "^2.30.1" diff --git a/package.json b/package.json index 1a5cd79..5570863 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "week-planner-card", - "version": "1.0.0", + "version": "1.0.1", "description": "Custom Home Assistant card to display events for a number of days from one or several calendars.", "source": "src/index.js", "module": "dist/week-planner-card.js", diff --git a/src/card.js b/src/card.js index 781826b..de0c314 100644 --- a/src/card.js +++ b/src/card.js @@ -5,10 +5,15 @@ import moment from 'moment'; export class WeekPlannerCard extends LitElement { static styles = styles; - _hass; _loading = 0; _events = {}; _jsonDays = ''; + _calendars; + _numberOfDays; + _updateInterval; + _noCardBackground; + _eventBackground; + _language; /** * Get properties @@ -17,13 +22,8 @@ export class WeekPlannerCard extends LitElement { */ static get properties() { return { - _calendars: { type: Array, state: true }, - _numberOfDays: { type: Number, state: true }, - _days: { type: Array, state: true }, - _updateInterval: { type: Number, state: true }, - _noCardBackground: { type: Boolean, state: true }, - _eventBackground: { type: String, state: true }, - _language: { type: Object, state: true } + _days: { type: Array }, + _config: { type: Object } } } @@ -33,6 +33,8 @@ export class WeekPlannerCard extends LitElement { * @param {Object} config */ setConfig(config) { + this._config = config; + if (!config.calendars) { throw new Error('No calendars are configured'); } @@ -61,23 +63,14 @@ export class WeekPlannerCard extends LitElement { ); } - /** - * Set hass - * - * @param {Object} hass - */ - set hass(hass) { - this._hass = hass; - - this._updateEvents(); - } - /** * Render * * @return {Object} */ render() { + this._waitForHassAndConfig(); + return html`
@@ -137,24 +130,31 @@ export class WeekPlannerCard extends LitElement { `; } - _updateEvents() { - if (this._loading > 0) { + _waitForHassAndConfig() { + if (!this.hass || !this._calendars) { + window.setTimeout(() => { + this._waitForHassAndConfig(); + }, 50) return; } - this._loading++; - this._events = {}; + this._updateEvents(); + } - if (!this._calendars) { + _updateEvents() { + if (this._loading > 0) { return; } + this._loading++; + this._events = {}; + let startDate = moment().startOf('day'); let endDate = moment().startOf('day').add(this._numberOfDays, 'days'); this._calendars.forEach(calendar => { this._loading++; - this._hass.callApi( + this.hass.callApi( 'get', 'calendars/' + calendar.entity + '?start=' + startDate.format('YYYY-MM-DD[T]HH:mm:ss[Z]') + '&end=' + endDate.format('YYYY-MM-DD[T]HH:mm:ss[Z]') ).then(response => {