From 0ff6e15029344afc93ace39b6a5825a166544d35 Mon Sep 17 00:00:00 2001 From: mentalilll Date: Wed, 31 Jul 2024 23:36:48 +0200 Subject: [PATCH] added: ghost for ghostmap frozen view, you can disable that feature if you dont need it. reworked some calculation stuff, fixed some bugs, and added better error handling. --- README.md | 54 ++++++++++++++++--------------- assets/image.png | Bin 29755 -> 24503 bytes assets/settings.png | Bin 0 -> 56329 bytes dist/bar.js | 6 ++-- dist/chart.css | 31 +++++++++++++----- dist/chart.js | 61 +++++++++++++++++++++++++----------- dist/ha-vpd-chart-editor.js | 47 ++++++++++++++++++++------- dist/ha-vpd-chart.js | 6 ++-- dist/methods.js | 17 ++++++++-- 9 files changed, 153 insertions(+), 69 deletions(-) create mode 100644 assets/settings.png diff --git a/README.md b/README.md index 7082da8..44e4c3e 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,11 @@ ![HaVpdChart Image](https://github.com/mentalilll/ha-vpd-chart/blob/main/assets/image.png?raw=true) -![HaVpdChart Image](https://github.com/mentalilll/ha-vpd-chart/blob/main/assets/bar_view.png) +![HaVpdChart Image](https://github.com/mentalilll/ha-vpd-chart/blob/main/assets/bar_view.png?raw=true) -![HaVpdChart Image](https://github.com/mentalilll/ha-vpd-chart/blob/main/assets/bar_view_light.png) +![HaVpdChart Image](https://github.com/mentalilll/ha-vpd-chart/blob/main/assets/bar_view_light.png?raw=true) + +![HaVpdChart Image](https://github.com/mentalilll/ha-vpd-chart/blob/main/assets/settings.png?raw=true) `HaVpdChart` is a custom card component for Home Assistant that allows for visual representations of VPD (Vapour Pressure Deficit) based on temperature and humidity sensors. It's ideal for monitoring environmental conditions in tents or rooms. @@ -103,7 +105,7 @@ enable_triangle: false #optional enable_crosshair: true #optional enable_fahrenheit: false #optional enable_zoom: false #optional -leaf_temperature_offset: 2 #optional +leaf_temperature_offset: 2 || input_number.leaf_offset_example #optional sensors: - temperature: sensor.temperature_2 humidity: sensor.humidity_2 @@ -139,29 +141,29 @@ calculateVPD: |2- ## Configuration Parameters -| Name | Type | Required | Default | Description | -|-------------------------|---------|--------------|-----------------|-----------------------------------------------------------------------------------------------------| -| type | string | **required** | | Must be `custom:ha-vpd-chart`. | -| air_text | string | optional | `Air` | The text used for temperature readings. Default is "Air". | -| rh_text | string | optional | `RH` | The text used for humidity readings. Default is "RH". | -| kpa_text | string | optional | `kPa` | The text used for kPa readings. Default is "kPa". | -| min_temperature | number | optional | `5` | Minimum temperature in the chart. Default is 5. | -| min_humidity | number | optional | `10` | Minimum humidity in the chart. Default is 10. | -| max_temperature | number | optional | `35` | Maximum temperature in the chart. Default is 35. | -| max_humidity | number | optional | `90` | Maximum humidity in the chart. Default is 90. | -| min_height | number | optional | `200` | Minimum height of the chart as px. Default is 200. | -| leaf_temperature_offset | number | optional | `2` | Sets the Temperature Offset of the Leaf | | -| sensors | list | **required** | | A list of sensors with their temperature and humidity entity IDs, and an optional name for display. | -| vpd_phases | list | optional | See description | A list of VPD phases and their classes for visual representation. See below for defaults. | -| enable_tooltip | boolean | optional | `true` | Tooltip enabled by default. | -| is_bar_view | boolean | optional | `false` | Second view of this chart for fast information of sensors | -| enable_axes | boolean | optional | `true` | Enable Axes on the Chart | -| enable_ghostmap | boolean | optional | `true` | Enable Ghostmap on the Chart | -| enable_triangle | boolean | optional | `true` | Enable Triangle instead of Circle for tooltip marker | -| enable_crosshair | boolean | optional | `true` | Enable MouseHover Crosshair | -| enable_fahrenheit | boolean | optional | `false` | Enable Fahrenheit instead of Celsius | -| enable_zoom | boolean | optional | `false` | Enable zoom function for chart | -| calculateVPD | string | optional | See description | Custom function to calculate VPD. | +| Name | Type | Required | Default | Description | +|-------------------------|----------------|--------------|-----------------------------------------|-----------------------------------------------------------------------------------------------------| +| type | string | **required** | | Must be `custom:ha-vpd-chart`. | +| air_text | string | optional | `Air` | The text used for temperature readings. Default is "Air". | +| rh_text | string | optional | `RH` | The text used for humidity readings. Default is "RH". | +| kpa_text | string | optional | `kPa` | The text used for kPa readings. Default is "kPa". | +| min_temperature | number | optional | `5` | Minimum temperature in the chart. Default is 5. | +| min_humidity | number | optional | `10` | Minimum humidity in the chart. Default is 10. | +| max_temperature | number | optional | `35` | Maximum temperature in the chart. Default is 35. | +| max_humidity | number | optional | `90` | Maximum humidity in the chart. Default is 90. | +| min_height | number | optional | `200` | Minimum height of the chart as px. Default is 200. | +| leaf_temperature_offset | number\|string | optional | `2`\|`input_number.leaf_offset_example` | Sets the Temperature Offset of the Leaf | | +| sensors | list | **required** | | A list of sensors with their temperature and humidity entity IDs, and an optional name for display. | +| vpd_phases | list | optional | See description | A list of VPD phases and their classes for visual representation. See below for defaults. | +| enable_tooltip | boolean | optional | `true` | Tooltip enabled by default. | +| is_bar_view | boolean | optional | `false` | Second view of this chart for fast information of sensors | +| enable_axes | boolean | optional | `true` | Enable Axes on the Chart | +| enable_ghostmap | boolean | optional | `true` | Enable Ghostmap on the Chart | +| enable_triangle | boolean | optional | `true` | Enable Triangle instead of Circle for tooltip marker | +| enable_crosshair | boolean | optional | `true` | Enable MouseHover Crosshair | +| enable_fahrenheit | boolean | optional | `false` | Enable Fahrenheit instead of Celsius | +| enable_zoom | boolean | optional | `false` | Enable zoom function for chart | +| calculateVPD | string | optional | See description | Custom function to calculate VPD. | **Default `vpd_phases` Configuration:** diff --git a/assets/image.png b/assets/image.png index 83751eed1aef6ffad581b3effa28e3727e21e10e..2660c9a3675e0fb8fa277bf07f3c1f3f314b80a8 100644 GIT binary patch literal 24503 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 diff --git a/assets/settings.png b/assets/settings.png new file mode 100644 index 0000000000000000000000000000000000000000..92176c83fde70b5013110f6b233ca955aedf6d50 GIT binary patch literal 56329 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

pb5j{RSSX=kW``BPP6xnZVzs_iovOXG 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 { let humidity = this._hass.states[sensor.humidity].state; let temperature = this._hass.states[sensor.temperature].state; - let leafTemperature = temperature - (this.config.leaf_temperature_offset || 2); + let leafTemperature = temperature - this.getLeafTemperatureOffset(); if (sensor.leaf_temperature !== undefined) { if (this._hass.states[sensor.leaf_temperature] !== undefined) { leafTemperature = this._hass.states[sensor.leaf_temperature].state; @@ -86,7 +86,7 @@ export const bar = { this.config.sensors.forEach((sensor, index) => { let humidity = this._hass.states[sensor.humidity].state; let temperature = this._hass.states[sensor.temperature].state; - let leafTemperature = temperature - (this.config.leaf_temperature_offset || 2); + let leafTemperature = temperature - this.getLeafTemperatureOffset(); if (sensor.leaf_temperature !== undefined) { leafTemperature = this._hass.states[sensor.leaf_temperature].state; } @@ -183,7 +183,7 @@ export const bar = { if (humidities[tempIndex]) { data['sensor-' + index].push({ time: temperature.last_changed, - vpd: this.calculateVPD(this.toFixedNumber(temperature.state) - (this.config.leaf_temperature_offset || 2), this.toFixedNumber(temperature.state), this.toFixedNumber(humidities[tempIndex].state)).toFixed(2), + vpd: this.calculateVPD(this.toFixedNumber(temperature.state) - this.getLeafTemperatureOffset(), this.toFixedNumber(temperature.state), this.toFixedNumber(humidities[tempIndex].state)).toFixed(2), }); } }); diff --git a/dist/chart.css b/dist/chart.css index e66f317..815fc6a 100644 --- a/dist/chart.css +++ b/dist/chart.css @@ -51,7 +51,7 @@ ha-card.vpd-chart-view, ha-card.vpd-chart-view .vpd-card-container { .vpd-chart-view .highlight { position: absolute; - z-index: 3; + z-index: 2; cursor: pointer; width: 10px; height: 10px; @@ -66,10 +66,6 @@ ha-card.vpd-chart-view, ha-card.vpd-chart-view .vpd-card-container { transform: translate(-50%); } -.vpd-chart-view .highlight:hover { - z-index: 4; -} - .vpd-chart-view .vertical-line { top: 0; bottom: 0; @@ -130,7 +126,7 @@ ha-card.vpd-chart-view, ha-card.vpd-chart-view .vpd-card-container { font-size: 12px; line-height: 1.2; position: absolute; - z-index: 2; + z-index: 3; } .vpd-chart-view .mouse-custom-tooltip { @@ -261,12 +257,17 @@ ha-card.vpd-chart-view, ha-card.vpd-chart-view .vpd-card-container { .vpd-chart-view #sensors .sensor-triangle { width: 16px !important; - height: 0 !important; + height: 16px !important; padding: 0 !important; margin: 0 !important; border: 0 !important; border-radius: 0 !important; background: transparent !important; + z-index: 3; +} + +.vpd-chart-view #sensors .sensor-pointer { + z-index: 3; } .vpd-chart-view #sensors .sensor-triangle:after { @@ -281,4 +282,20 @@ ha-card.vpd-chart-view, ha-card.vpd-chart-view .vpd-card-container { content: " "; font-size: 0; line-height: 0; +} + +.vpd-chart-view .ghostmapClick { + display: inline-block; + vertical-align: text-bottom; + cursor: pointer; + pointer-events: all; + fill: #ffffff; +} + +.vpd-chart-view .ghostmapClick:hover { + fill: #00aa00; +} + +.vpd-chart-view .ghostmapClick:active, .vpd-chart-view .ghostmapClick.active { + fill: #00ff00; } \ No newline at end of file diff --git a/dist/chart.js b/dist/chart.js index 008546c..de2648c 100644 --- a/dist/chart.js +++ b/dist/chart.js @@ -109,7 +109,7 @@ export const chart = { const temperature = this.min_temperature + (temperatureRange * yPercent / 100); const humidity = this.max_humidity - (humidityRange * xPercent / 100); - const leafTemperature = temperature - (this.config.leaf_temperature_offset || 2); + const leafTemperature = temperature - this.getLeafTemperatureOffset(); const vpd = this.calculateVPD(leafTemperature, temperature, humidity); @@ -275,7 +275,7 @@ export const chart = { if (this._hass.states[sensor.humidity] && this._hass.states[sensor.temperature]) { const humidity = parseFloat(this._hass.states[sensor.humidity].state); const temperature = parseFloat(this._hass.states[sensor.temperature].state); - let leafTemperature = temperature - (this.config.leaf_temperature_offset || 2); + let leafTemperature = temperature - this.getLeafTemperatureOffset(); if (sensor.leaf_temperature !== undefined) { leafTemperature = parseFloat(this._hass.states[sensor.leaf_temperature].state); } @@ -284,8 +284,8 @@ export const chart = { } else { vpd = this.calculateVPD(leafTemperature, temperature, humidity).toFixed(2); } - const min_vpd = this.calculateVPD(temperature - (this.config.leaf_temperature_offset || 2), temperature, this.max_humidity); - const max_vpd = this.calculateVPD(temperature - (this.config.leaf_temperature_offset || 2), temperature, this.min_humidity); + const min_vpd = this.calculateVPD(temperature - this.getLeafTemperatureOffset(), temperature, this.max_humidity); + const max_vpd = this.calculateVPD(temperature - this.getLeafTemperatureOffset(), temperature, this.min_humidity); const relativeVpd = vpd - min_vpd; const totalVpdRange = max_vpd - min_vpd; const percentageVpd = (relativeVpd / totalVpdRange) * 100; @@ -302,6 +302,15 @@ export const chart = { // Check and append only if elements are Nodes if (pointerElements.pointer instanceof Node) { sensors.appendChild(pointerElements.pointer); + if (this.enable_ghostclick) { + let ghostmapClick = this.querySelector(`.ghostmapClick_${index}`) || document.createElement('div'); + let classes = `ghostmapClick ghostmapClick_${index}`; + if (this.clickedTooltip) { + classes += ' active'; + } + ghostmapClick.setAttribute('class', classes); + ghostmapClick.addEventListener('click', this.toggleSensorDetails.bind(this, index)); + } } if (pointerElements.horizontalLine instanceof Node) { sensors.appendChild(pointerElements.horizontalLine); @@ -334,30 +343,46 @@ export const chart = { verticalLine.style.left = `calc(${percentageHumidity}% - 0.5px)`; let tooltip = null; - if (this.enable_tooltip) { - tooltip = this.querySelector(`.custom-tooltip[data-index="${index}"]`) || document.createElement('div'); - tooltip.className = `custom-tooltip custom-tooltip-${index}`; - tooltip.setAttribute('data-index', index.toString()); - tooltip.innerHTML = `${sensorName} ${this.kpa_text ? this.kpa_text + ':' : ''} ${vpd}${this.rh_text ? this.rh_text + ':' : ''} ${humidity}%${this.air_text ? this.air_text + ':' : ''} ${temperature}${this.unit_temperature}`; - tooltip.style.bottom = `${100 - percentageTemperature}%`; - tooltip.style.left = `${percentageHumidity}%`; - if ((tooltip.offsetLeft + (tooltip.offsetWidth / 2)) > this.content.offsetWidth) { - const containerWidth = this.content.offsetWidth; - const overflowWidth = (tooltip.offsetLeft + (tooltip.offsetWidth / 2)) - containerWidth; - tooltip.style.left = `calc(${percentageHumidity}% - ${overflowWidth}px)`; - } + tooltip = this.querySelector(`.custom-tooltip[data-index="${index}"]`) || document.createElement('div'); + tooltip.className = `custom-tooltip custom-tooltip-${index}`; + tooltip.setAttribute('data-index', index.toString()); + // if sensorName not undefined or empty then show in tooltip + let innerHTML = ''; + if (sensorName !== undefined && sensorName !== '') { + innerHTML += `${sensorName}`; + } + innerHTML += `${this.kpa_text ? this.kpa_text + ': ' : ''}${vpd}`; + innerHTML += `${this.rh_text ? this.rh_text + ': ' : ''}${humidity}%`; + innerHTML += `${this.air_text ? this.air_text + ': ' : ''}${temperature}${this.unit_temperature}`; + innerHTML += `${this.getPhaseClass(vpd)}`; + if (this.enable_ghostclick) { + innerHTML += ` `; + } + tooltip.innerHTML = innerHTML; + + + tooltip.style.bottom = `${100 - percentageTemperature}%`; + tooltip.style.left = `${percentageHumidity}%`; + if ((tooltip.offsetLeft + (tooltip.offsetWidth / 2)) > this.content.offsetWidth) { + const containerWidth = this.content.offsetWidth; + const overflowWidth = (tooltip.offsetLeft + (tooltip.offsetWidth / 2)) - containerWidth + 5; + tooltip.style.left = `calc(${percentageHumidity}% - ${overflowWidth}px)`; + } + if ((tooltip.offsetLeft - (tooltip.offsetWidth / 2)) < 0) { + const overflowWidth = (tooltip.offsetWidth / 2) - tooltip.offsetLeft + 5; + tooltip.style.left = `calc(${percentageHumidity}% + ${overflowWidth}px)`; + } if (!pointer.isConnected) { pointer.addEventListener('mouseover', this.showSensorDetails.bind(this, index)); pointer.addEventListener('mouseleave', this.hideSensorDetails.bind(this, index)); - pointer.addEventListener('click', this.toggleSensorDetails.bind(this, index)); } return {pointer, horizontalLine, verticalLine, tooltip}; }, toggleSensorDetails(index) { this.clickedTooltip = !this.clickedTooltip; - if (this.clickedTooltip) { + if (!this.clickedTooltip) { this.hideSensorDetails(index); } else { this.showSensorDetails(index); diff --git a/dist/ha-vpd-chart-editor.js b/dist/ha-vpd-chart-editor.js index 9d20027..cd818f3 100644 --- a/dist/ha-vpd-chart-editor.js +++ b/dist/ha-vpd-chart-editor.js @@ -96,15 +96,19 @@ export class HaVpdChartEditor extends HTMLElement { } get _enable_axes() { - return this._config.enable_axes !== undefined ? this._config.enable_axes : false; + return this._config.enable_axes !== undefined ? this._config.enable_axes : true; + } + + get _enable_ghostclick() { + return this._config.enable_ghostclick !== undefined ? this._config.enable_ghostclick : true; } get _enable_ghostmap() { - return this._config.enable_ghostmap !== undefined ? this._config.enable_ghostmap : false; + return this._config.enable_ghostmap !== undefined ? this._config.enable_ghostmap : true; } get _enable_triangle() { - return this._config.enable_triangle || false; + return this._config.enable_triangle || true; } get _enable_crosshair() { @@ -112,7 +116,7 @@ export class HaVpdChartEditor extends HTMLElement { } get _enable_tooltip() { - return this._config.enable_tooltip !== undefined ? this._config.enable_tooltip : false; + return this._config.enable_tooltip !== undefined ? this._config.enable_tooltip : true; } get _ghostmap_hours() { @@ -155,7 +159,10 @@ export class HaVpdChartEditor extends HTMLElement { if (value === "off") { value = false; } - + // if empty value + if (value === "") { + value = undefined; + } if (Object.isExtensible(this._config)) { if (this._config[configValue] !== value) { this._config[configValue] = value; @@ -239,7 +246,7 @@ export class HaVpdChartEditor extends HTMLElement { - + @@ -275,38 +282,47 @@ export class HaVpdChartEditor extends HTMLElement { + + + + + - - + + + @@ -355,6 +371,7 @@ export class HaVpdChartEditor extends HTMLElement { {id: 'min_height', prop: '_min_height', type: 'value'}, {id: 'is_bar_view', prop: '_is_bar_view', type: 'checked'}, {id: 'enable_axes', prop: '_enable_axes', type: 'checked'}, + {id: 'enable_ghostclick', prop: '_enable_ghostclick', type: 'checked'}, {id: 'enable_ghostmap', prop: '_enable_ghostmap', type: 'checked'}, {id: 'enable_triangle', prop: '_enable_triangle', type: 'checked'}, {id: 'enable_crosshair', prop: '_enable_crosshair', type: 'checked'}, @@ -369,7 +386,15 @@ export class HaVpdChartEditor extends HTMLElement { const element = this.shadowRoot.querySelector(`#${id}`); if (element) { if (Object.isExtensible(element)) { - element[type] = this[prop]; + if (type === "checked") { + if (this[prop]) { + element[type] = 'checked'; + } else { + element[type] = ''; + } + } else { + element[type] = this[prop]; + } } else { console.warn('Cannot define property on a non-extensible object'); } diff --git a/dist/ha-vpd-chart.js b/dist/ha-vpd-chart.js index 795891c..20c037d 100644 --- a/dist/ha-vpd-chart.js +++ b/dist/ha-vpd-chart.js @@ -12,7 +12,7 @@ const FAHRENHEIT_UNIT_TEMPERATURE = '°F'; const CONFIG_KEYS = [ 'vpd_phases', 'sensors', 'air_text', 'rh_text', 'kpa_text', 'min_temperature', 'max_temperature', 'min_humidity', 'max_humidity', 'min_height', - 'is_bar_view', 'enable_axes', 'enable_ghostmap', 'enable_triangle', + 'is_bar_view', 'enable_axes', 'enable_ghostclick', 'enable_ghostmap', 'enable_triangle', 'enable_tooltip', 'enable_crosshair', 'enable_fahrenheit', 'ghostmap_hours', 'unit_temperature', 'enable_zoom' ]; @@ -25,7 +25,7 @@ class HaVpdChart extends HTMLElement { initializeDefaults() { this.vpd_phases = [ - {lower: -0.6, upper: 0, className: 'gray-danger-zone', color: '#999999'}, + {upper: 0, className: 'gray-danger-zone', color: '#999999'}, {lower: 0, upper: 0.4, className: 'under-transpiration', color: '#1a6c9c'}, {lower: 0.4, upper: 0.8, className: 'early-veg', color: '#22ab9c'}, {lower: 0.8, upper: 1.2, className: 'late-veg', color: '#9cc55b'}, @@ -47,6 +47,7 @@ class HaVpdChart extends HTMLElement { this.rh_text = "RH"; this.kpa_text = "kPa"; this.enable_axes = true; + this.enable_ghostclick = true; this.enable_ghostmap = true; this.enable_triangle = false; this.enable_crosshair = false; @@ -75,6 +76,7 @@ class HaVpdChart extends HTMLElement { enable_tooltip: {type: Boolean}, is_bar_view: {type: Boolean}, enable_axes: {type: Boolean}, + enable_ghostclick: {type: Boolean}, enable_ghostmap: {type: Boolean}, enable_triangle: {type: Boolean}, enable_crosshair: {type: Boolean}, diff --git a/dist/methods.js b/dist/methods.js index 9e5a02f..17ed0e2 100644 --- a/dist/methods.js +++ b/dist/methods.js @@ -56,7 +56,7 @@ export const methods = { for (let Tair = minTemperature; Tair <= maxTemperature; Tair += stepsTemperature) { const row = []; - const Tleaf = Tair - (this.config.leaf_temperature_offset || 2); + const Tleaf = Tair - 2; for (let RH = minHumidity; RH <= maxHumidity; RH += stepsHumidity) { const vpd = this.calculateVPD(Tleaf, Tair, RH).toFixed(2); @@ -70,6 +70,19 @@ export const methods = { } return vpdMatrix; - } + }, + getLeafTemperatureOffset() { + let offset = 2; + if (typeof this.config.leaf_temperature_offset === 'number') { + return this.config.leaf_temperature_offset; + } + if (typeof this.config.leaf_temperature_offset === 'string') { + offset = this._hass.states[this.config.leaf_temperature_offset].state; + if (!isNaN(offset)) { + return offset; + } + } + return offset; + }, } \ No newline at end of file