mirror of
https://github.com/beestat/app.git
synced 2025-05-24 02:14:03 -04:00
195 lines
6.0 KiB
JavaScript
195 lines
6.0 KiB
JavaScript
/**
|
|
* Custom date range for the Runtime Summary chart.
|
|
*/
|
|
beestat.component.modal.runtime_thermostat_summary_custom = function() {
|
|
beestat.component.modal.apply(this, arguments);
|
|
};
|
|
beestat.extend(beestat.component.modal.runtime_thermostat_summary_custom, beestat.component.modal);
|
|
|
|
beestat.component.modal.runtime_thermostat_summary_custom.prototype.decorate_contents_ = function(parent) {
|
|
var self = this;
|
|
|
|
parent.appendChild($.createElement('p').innerHTML('Choose a custom range to display on the Runtime Summary chart.'));
|
|
|
|
// Time count
|
|
var time_count = new beestat.component.input.text()
|
|
.set_width(75)
|
|
.set_maxlength(10)
|
|
.set_icon('pound')
|
|
.set_value(beestat.setting('runtime_thermostat_summary_time_count'));
|
|
|
|
self.state_.runtime_thermostat_summary_time_count =
|
|
beestat.setting('runtime_thermostat_summary_time_count');
|
|
|
|
time_count.addEventListener('blur', function() {
|
|
self.state_.runtime_thermostat_summary_time_count =
|
|
parseInt(this.get_value(), 10) || 1;
|
|
});
|
|
|
|
// Button groups
|
|
var options = {
|
|
'runtime_thermostat_summary_time_period': [
|
|
'day',
|
|
'week',
|
|
'month',
|
|
'year',
|
|
'all'
|
|
],
|
|
'runtime_thermostat_summary_group_by': [
|
|
'day',
|
|
'week',
|
|
'month',
|
|
'year'
|
|
]
|
|
};
|
|
|
|
var tile_groups = {};
|
|
|
|
this.selected_buttons_ = {};
|
|
for (let key in options) {
|
|
let current_type = beestat.setting(key);
|
|
|
|
let tile_group = new beestat.component.tile_group();
|
|
options[key].forEach(function(value) {
|
|
let text = value.replace('runtime_thermostat_summary_', '')
|
|
.charAt(0)
|
|
.toUpperCase() +
|
|
value.slice(1) +
|
|
(
|
|
(
|
|
key === 'runtime_thermostat_summary_time_period' &&
|
|
value !== 'all'
|
|
) ? 's' : ''
|
|
);
|
|
|
|
let button = new beestat.component.tile()
|
|
.set_background_hover_color(beestat.style.color.lightblue.base)
|
|
.set_text_color('#fff')
|
|
.set_text(text)
|
|
.addEventListener('click', function() {
|
|
if (key === 'runtime_thermostat_summary_time_period') {
|
|
if (value === 'all') {
|
|
time_count.set_value('∞').set_enabled(false);
|
|
} else if (time_count.get_value() === '∞') {
|
|
time_count
|
|
.set_value(self.state_.runtime_thermostat_summary_time_count || '1')
|
|
.set_enabled(true);
|
|
time_count.dispatchEvent('blur');
|
|
}
|
|
}
|
|
|
|
if (current_type !== value) {
|
|
this.set_background_color(beestat.style.color.lightblue.base);
|
|
if (self.selected_buttons_[key] !== undefined) {
|
|
self.selected_buttons_[key]
|
|
.set_background_color(beestat.style.color.bluegray.base);
|
|
}
|
|
self.selected_buttons_[key] = this;
|
|
self.state_[key] = value;
|
|
current_type = value;
|
|
}
|
|
});
|
|
|
|
if (current_type === value) {
|
|
if (
|
|
key === 'runtime_thermostat_summary_time_period' &&
|
|
value === 'all'
|
|
) {
|
|
time_count.set_value('∞').set_enabled(false);
|
|
}
|
|
|
|
button.set_background_color(beestat.style.color.lightblue.base);
|
|
self.state_[key] = value;
|
|
self.selected_buttons_[key] = button;
|
|
} else {
|
|
button.set_background_color(beestat.style.color.bluegray.base);
|
|
}
|
|
|
|
tile_group.add_tile(button);
|
|
});
|
|
tile_groups[key] = tile_group;
|
|
}
|
|
|
|
// Display it all
|
|
var row;
|
|
var column;
|
|
|
|
(new beestat.component.title('Time Period')).render(parent);
|
|
row = $.createElement('div').addClass('row');
|
|
parent.appendChild(row);
|
|
column = $.createElement('div').addClass(['column column_2']);
|
|
row.appendChild(column);
|
|
time_count.render(column);
|
|
column = $.createElement('div').addClass(['column column_10']);
|
|
row.appendChild(column);
|
|
tile_groups.runtime_thermostat_summary_time_period.render(column);
|
|
(new beestat.component.title('Group By')).render(parent);
|
|
row = $.createElement('div').addClass('row');
|
|
parent.appendChild(row);
|
|
column = $.createElement('div').addClass(['column column_12']);
|
|
row.appendChild(column);
|
|
tile_groups.runtime_thermostat_summary_group_by.render(column);
|
|
};
|
|
|
|
/**
|
|
* Get title.
|
|
*
|
|
* @return {string} Title
|
|
*/
|
|
beestat.component.modal.runtime_thermostat_summary_custom.prototype.get_title_ = function() {
|
|
return 'Thermostat Summary - Custom Range';
|
|
};
|
|
|
|
/**
|
|
* Get the buttons that go on the bottom of this modal.
|
|
*
|
|
* @return {[beestat.component.button]} The buttons.
|
|
*/
|
|
beestat.component.modal.runtime_thermostat_summary_custom.prototype.get_buttons_ = function() {
|
|
var self = this;
|
|
|
|
var cancel = new beestat.component.tile()
|
|
.set_background_color('#fff')
|
|
.set_text_color(beestat.style.color.gray.base)
|
|
.set_text_hover_color(beestat.style.color.red.base)
|
|
.set_shadow(false)
|
|
.set_text('Cancel')
|
|
.addEventListener('click', function() {
|
|
self.dispose();
|
|
});
|
|
|
|
var save = new beestat.component.tile()
|
|
.set_background_color(beestat.style.color.green.base)
|
|
.set_background_hover_color(beestat.style.color.green.light)
|
|
.set_text_color('#fff')
|
|
.set_text('Save')
|
|
.addEventListener('click', function() {
|
|
this
|
|
.set_background_color(beestat.style.color.gray.base)
|
|
.set_background_hover_color()
|
|
.removeEventListener('click');
|
|
|
|
beestat.setting(
|
|
{
|
|
'runtime_thermostat_summary_time_count':
|
|
self.state_.runtime_thermostat_summary_time_period === 'all'
|
|
? 0
|
|
: self.state_.runtime_thermostat_summary_time_count,
|
|
'runtime_thermostat_summary_time_period':
|
|
self.state_.runtime_thermostat_summary_time_period,
|
|
'runtime_thermostat_summary_group_by':
|
|
self.state_.runtime_thermostat_summary_group_by
|
|
},
|
|
undefined,
|
|
function() {
|
|
self.dispose();
|
|
}
|
|
);
|
|
});
|
|
|
|
return [
|
|
cancel,
|
|
save
|
|
];
|
|
};
|