1
0
mirror of https://github.com/beestat/app.git synced 2025-07-09 03:04:07 -04:00

Updated heat map type to support °C

This commit is contained in:
Jon Ziebell 2022-08-19 22:44:39 -04:00
parent cde2ac1d29
commit 97c65a95b9
8 changed files with 85 additions and 22 deletions

View File

@ -5,6 +5,8 @@
*
* @param {object} args Instructions on how to format:
* temperature (required) - Temperature to work with
* input_temperature_unit (optional, default °F) - Input temperature unit
* output_temperature_unit (optional, default °F|°C) - Input temperature unit; default matches setting.
* convert (optional, default true) - Whether or not to convert to Celcius if necessary
* delta (optional, default false) - Whether or not the convert action is for a delta instead of a normal value
* round (optional, default 1) - Number of decimal points to round to
@ -21,7 +23,14 @@ beestat.temperature = function(args) {
};
}
var convert = beestat.default_value(args.convert, true);
var input_temperature_unit = beestat.default_value(
args.input_temperature_unit,
'°F'
);
var output_temperature_unit = beestat.default_value(
args.output_temperature_unit,
beestat.setting('temperature_unit')
);
var delta = beestat.default_value(args.delta, false);
var round = beestat.default_value(args.round, 1);
var units = beestat.default_value(args.units, false);
@ -35,11 +44,19 @@ beestat.temperature = function(args) {
}
// Convert to Celcius if necessary and asked for.
if (convert === true && beestat.setting('temperature_unit') === '°C') {
if (delta === true) {
temperature *= (5 / 9);
} else {
temperature = (temperature - 32) * (5 / 9);
if (input_temperature_unit !== output_temperature_unit) {
if (input_temperature_unit === '°F') {
if (delta === true) {
temperature *= (5 / 9);
} else {
temperature = (temperature - 32) * (5 / 9);
}
} else if (input_temperature_unit === '°C') {
if (delta === true) {
temperature *= (9 / 5);
} else {
temperature = (temperature * (9 / 5)) + 32;
}
}
}
@ -62,7 +79,7 @@ beestat.temperature = function(args) {
// Append units if asked for.
if (units === true) {
temperature += beestat.setting('temperature_unit');
temperature += output_temperature_unit;
}
return temperature;

View File

@ -103,7 +103,6 @@ beestat.component.card.three_d.prototype.decorate_contents_ = function(parent) {
parent.appendChild(controls_container);
this.decorate_controls_(controls_container);
// var thermostat = beestat.cache.thermostat[this.thermostat_id_];
let required_begin;

View File

@ -150,21 +150,65 @@ beestat.component.card.visualize_settings.prototype.decorate_heat_map_type_ = fu
parent.appendChild(min_max_container);
const min = new beestat.component.input.text()
.set_value(beestat.setting(
'visualize.heat_map_absolute.' + beestat.setting('visualize.data_type') + '.min')
.set_maxlength('5')
.set_requirements({
'type': 'decimal',
'required': true
})
.set_value(
beestat.temperature(beestat.setting(
'visualize.heat_map_absolute.' + beestat.setting('visualize.data_type') + '.min'
))
)
.set_width(50);
min.addEventListener('change', function() {
beestat.setting('visualize.heat_map_absolute.' + beestat.setting('visualize.data_type') + '.min', min.get_value());
if (min.meets_requirements() === true) {
beestat.setting(
'visualize.heat_map_absolute.' + beestat.setting('visualize.data_type') + '.min',
beestat.temperature({
'temperature': min.get_value(),
'input_temperature_unit': beestat.setting('temperature_unit'),
'output_temperature_unit': '°F'
})
);
} else {
min.set_value(
beestat.temperature(beestat.setting(
'visualize.heat_map_absolute.' + beestat.setting('visualize.data_type') + '.min'
))
);
}
});
const max = new beestat.component.input.text()
.set_value(beestat.setting(
'visualize.heat_map_absolute.' + beestat.setting('visualize.data_type') + '.max')
.set_maxlength('5')
.set_requirements({
'type': 'decimal',
'required': true
})
.set_value(
beestat.temperature(beestat.setting(
'visualize.heat_map_absolute.' + beestat.setting('visualize.data_type') + '.max'
))
)
.set_width(50);
max.addEventListener('change', function() {
beestat.setting('visualize.heat_map_absolute.' + beestat.setting('visualize.data_type') + '.max', max.get_value());
if (max.meets_requirements() === true) {
beestat.setting(
'visualize.heat_map_absolute.' + beestat.setting('visualize.data_type') + '.max',
beestat.temperature({
'temperature': max.get_value(),
'input_temperature_unit': beestat.setting('temperature_unit'),
'output_temperature_unit': '°F'
})
);
} else {
max.set_value(
beestat.temperature(beestat.setting(
'visualize.heat_map_absolute.' + beestat.setting('visualize.data_type') + '.max'
))
);
}
});
let span;

View File

@ -230,7 +230,7 @@ beestat.component.chart.runtime_sensor_detail_temperature.prototype.get_options_
} else {
value = beestat.temperature({
'temperature': point.value,
'convert': false,
'input_temperature_unit': beestat.setting('temperature_unit'),
'units': true
});
point_value = point.value;

View File

@ -288,7 +288,7 @@ beestat.component.chart.runtime_thermostat_detail_temperature.prototype.get_opti
value = beestat.temperature({
'temperature': value,
'convert': false,
'input_temperature_unit': beestat.setting('temperature_unit'),
'units': true
});
} else if (point.series_code.includes('humidity') === true) {

View File

@ -234,14 +234,14 @@ beestat.component.chart.runtime_thermostat_summary.prototype.get_options_tooltip
) {
value = beestat.temperature({
'temperature': values.min_outdoor_temperature,
'convert': false,
'input_temperature_unit': beestat.setting('temperature_unit'),
'units': true,
'round': 0
});
value += ' to ';
value += beestat.temperature({
'temperature': values.max_outdoor_temperature,
'convert': false,
'input_temperature_unit': beestat.setting('temperature_unit'),
'units': true,
'round': 0
});
@ -252,7 +252,7 @@ beestat.component.chart.runtime_thermostat_summary.prototype.get_options_tooltip
color = point.series.color;
value = beestat.temperature({
'temperature': values.avg_outdoor_temperature,
'convert': false,
'input_temperature_unit': beestat.setting('temperature_unit'),
'units': true,
'round': 0
});

View File

@ -296,7 +296,7 @@ beestat.component.chart.temperature_profiles.prototype.get_options_tooltip_forma
var value = beestat.temperature({
'temperature': point.y,
'units': true,
'convert': false,
'input_temperature_unit': beestat.setting('temperature_unit'),
'delta': true,
'type': 'string'
}) + ' / h';
@ -321,7 +321,7 @@ beestat.component.chart.temperature_profiles.prototype.get_options_tooltip_forma
'temperature': this.x,
'round': 0,
'units': true,
'convert': false
'input_temperature_unit': beestat.setting('temperature_unit')
}),
sections
);
@ -380,7 +380,7 @@ beestat.component.chart.temperature_profiles.prototype.get_options_xAxis_ = func
'useHTML': true,
'text': 'Now: ' + beestat.temperature({
'temperature': this.data_.metadata.chart.outdoor_temperature,
'convert': false,
'input_temperature_unit': beestat.setting('temperature_unit'),
'units': true,
'round': 0
})

View File

@ -79,6 +79,9 @@ beestat.component.input.prototype.meets_requirements = function() {
case 'integer':
this.requirements_.regexp = /^-?\d+$/;
break;
case 'decimal':
this.requirements_.regexp = /^-?\d+(?:\.\d+)?$/;
break;
}
if (