mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-15 13:26:34 +00:00
parent
afcfb4311a
commit
ba588fc779
@ -17,6 +17,7 @@
|
|||||||
"font-roboto-local": "~1.0.1",
|
"font-roboto-local": "~1.0.1",
|
||||||
"paper-scroll-header-panel": "~1.0.16",
|
"paper-scroll-header-panel": "~1.0.16",
|
||||||
"app-layout": "~0.10.2",
|
"app-layout": "~0.10.2",
|
||||||
"fecha": "~2.2.0"
|
"fecha": "~2.2.0",
|
||||||
|
"paper-range-slider": "IftachSadeh/paper-range-slider#~0.1.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
<link rel='import' href='../../bower_components/paper-item/paper-item.html'>
|
<link rel='import' href='../../bower_components/paper-item/paper-item.html'>
|
||||||
<link rel='import' href='../../bower_components/paper-dropdown-menu/paper-dropdown-menu.html'>
|
<link rel='import' href='../../bower_components/paper-dropdown-menu/paper-dropdown-menu.html'>
|
||||||
<link rel='import' href='../../bower_components/paper-toggle-button/paper-toggle-button.html'>
|
<link rel='import' href='../../bower_components/paper-toggle-button/paper-toggle-button.html'>
|
||||||
|
<link rel="import" href="../../bower_components/paper-range-slider/paper-range-slider.html">
|
||||||
|
|
||||||
<dom-module id='more-info-climate'>
|
<dom-module id='more-info-climate'>
|
||||||
<template>
|
<template>
|
||||||
@ -14,6 +15,9 @@
|
|||||||
<style>
|
<style>
|
||||||
:host {
|
:host {
|
||||||
color: var(--primary-text-color);
|
color: var(--primary-text-color);
|
||||||
|
--paper-input-container-input: {
|
||||||
|
text-transform: capitalize;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.container-away_mode,
|
.container-away_mode,
|
||||||
@ -46,22 +50,50 @@
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
paper-range-slider {
|
||||||
|
width: 198px;
|
||||||
|
height: 2px;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
--paper-range-slider-active-color: var(--primary-color);
|
||||||
|
--paper-range-slider-knob-color: var(--primary-color);
|
||||||
|
--paper-range-slider-pin-color: var(--primary-color);
|
||||||
|
}
|
||||||
|
|
||||||
.single-row {
|
.single-row {
|
||||||
padding: 8px 0;
|
padding: 8px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.capitalize {
|
||||||
|
text-transform: capitalize;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<div class$='[[computeClassNames(stateObj)]]'>
|
<div class$='[[computeClassNames(stateObj)]]'>
|
||||||
<div class='container-temperature'>
|
<div class='container-temperature'>
|
||||||
<div class='single-row'>
|
<div class='single-row'>
|
||||||
<div>Target Temperature</div>
|
<div hidden$='[[computeTargetTempHidden(stateObj)]]'>Target Temperature</div>
|
||||||
<paper-slider
|
<paper-slider
|
||||||
|
id="temp-slider"
|
||||||
min='[[stateObj.attributes.min_temp]]'
|
min='[[stateObj.attributes.min_temp]]'
|
||||||
max='[[stateObj.attributes.max_temp]]'
|
max='[[stateObj.attributes.max_temp]]'
|
||||||
step='0.5' pin
|
pin
|
||||||
|
step='0.5'
|
||||||
value='[[stateObj.attributes.temperature]]'
|
value='[[stateObj.attributes.temperature]]'
|
||||||
|
hidden$='[[computeHideTempSlider(stateObj)]]'
|
||||||
on-change='targetTemperatureSliderChanged'>
|
on-change='targetTemperatureSliderChanged'>
|
||||||
</paper-slider>
|
</paper-slider>
|
||||||
|
<paper-range-slider
|
||||||
|
id="temp-range-slider"
|
||||||
|
min='[[stateObj.attributes.min_temp]]'
|
||||||
|
max='[[stateObj.attributes.max_temp]]'
|
||||||
|
pin
|
||||||
|
step='0.5'
|
||||||
|
value-min='[[stateObj.attributes.target_temp_low]]'
|
||||||
|
value-max='[[stateObj.attributes.target_temp_high]]'
|
||||||
|
value-diff-min='2'
|
||||||
|
hidden$='[[computeHideTempRangeSlider(stateObj)]]'
|
||||||
|
on-change='targetTemperatureRangeSliderChanged'>
|
||||||
|
</paper-range-slider>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -84,7 +116,7 @@
|
|||||||
<paper-menu class="dropdown-content" selected="{{operationIndex}}">
|
<paper-menu class="dropdown-content" selected="{{operationIndex}}">
|
||||||
<template is='dom-repeat'
|
<template is='dom-repeat'
|
||||||
items='[[stateObj.attributes.operation_list]]'>
|
items='[[stateObj.attributes.operation_list]]'>
|
||||||
<paper-item>[[item]]</paper-item>
|
<paper-item class="capitalize">[[item]]</paper-item>
|
||||||
</template>
|
</template>
|
||||||
</paper-menu>
|
</paper-menu>
|
||||||
</paper-dropdown-menu>
|
</paper-dropdown-menu>
|
||||||
@ -208,6 +240,19 @@ Polymer({
|
|||||||
}.bind(this), 500);
|
}.bind(this), 500);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
computeTargetTempHidden: function (stateObj) {
|
||||||
|
return stateObj.attributes.operation_mode === 'off';
|
||||||
|
},
|
||||||
|
|
||||||
|
computeHideTempRangeSlider: function (stateObj) {
|
||||||
|
return stateObj.attributes.operation_mode !== 'auto';
|
||||||
|
},
|
||||||
|
|
||||||
|
computeHideTempSlider: function (stateObj) {
|
||||||
|
return stateObj.attributes.operation_mode === 'auto' ||
|
||||||
|
stateObj.attributes.operation_mode === 'off';
|
||||||
|
},
|
||||||
|
|
||||||
computeClassNames: function (stateObj) {
|
computeClassNames: function (stateObj) {
|
||||||
return 'more-info-climate ' + window.hassUtil.attributeClassNames(
|
return 'more-info-climate ' + window.hassUtil.attributeClassNames(
|
||||||
stateObj,
|
stateObj,
|
||||||
@ -224,6 +269,20 @@ Polymer({
|
|||||||
this.callServiceHelper('set_temperature', { temperature: temperature });
|
this.callServiceHelper('set_temperature', { temperature: temperature });
|
||||||
},
|
},
|
||||||
|
|
||||||
|
targetTemperatureRangeSliderChanged: function (ev) {
|
||||||
|
var targetTempLow = ev.currentTarget.valueMin;
|
||||||
|
var targetTempHigh = ev.currentTarget.valueMax;
|
||||||
|
|
||||||
|
if (targetTempLow === this.stateObj.attributes.target_temp_low &&
|
||||||
|
targetTempHigh === this.stateObj.attributes.target_temp_high) return;
|
||||||
|
this.callServiceHelper(
|
||||||
|
'set_temperature', {
|
||||||
|
target_temp_low: targetTempLow,
|
||||||
|
target_temp_high: targetTempHigh,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
targetHumiditySliderChanged: function (ev) {
|
targetHumiditySliderChanged: function (ev) {
|
||||||
var humidity = ev.target.value;
|
var humidity = ev.target.value;
|
||||||
|
|
||||||
|
@ -25,12 +25,24 @@
|
|||||||
.current {
|
.current {
|
||||||
color: var(--secondary-text-color);
|
color: var(--secondary-text-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.operation-mode {
|
||||||
|
font-weight: bold;
|
||||||
|
text-transform: capitalize;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<div class='horizontal justified layout'>
|
<div class='horizontal justified layout'>
|
||||||
<state-info state-obj="[[stateObj]]" in-dialog='[[inDialog]]'></state-info>
|
<state-info state-obj="[[stateObj]]" in-dialog='[[inDialog]]'></state-info>
|
||||||
<div class='state'>
|
<div class='state'>
|
||||||
<div class='target'>[[computeTargetTemperature(stateObj)]]</div>
|
<div class='target'>
|
||||||
|
<span class="operation-mode">
|
||||||
|
[[stateObj.attributes.operation_mode]]
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
[[computeTargetTemperature(stateObj)]]
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class='current'>
|
<div class='current'>
|
||||||
<span>Currently: </span>
|
<span>Currently: </span>
|
||||||
@ -52,14 +64,27 @@ Polymer({
|
|||||||
type: Boolean,
|
type: Boolean,
|
||||||
value: false,
|
value: false,
|
||||||
},
|
},
|
||||||
|
|
||||||
stateObj: {
|
stateObj: {
|
||||||
type: Object,
|
type: Object,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
computeTargetTemperature: function (stateObj) {
|
computeTargetTemperature: function (stateObj) {
|
||||||
return stateObj.attributes.temperature + ' ' + stateObj.attributes.unit_of_measurement;
|
var stateTemp = '';
|
||||||
|
|
||||||
|
if (stateObj.attributes.operation_mode === 'off') {
|
||||||
|
stateTemp = '';
|
||||||
|
} else if (stateObj.attributes.operation_mode === 'auto') {
|
||||||
|
stateTemp = stateObj.attributes.target_temp_low + ' - ' +
|
||||||
|
stateObj.attributes.target_temp_high + ' ' +
|
||||||
|
stateObj.attributes.unit_of_measurement;
|
||||||
|
} else {
|
||||||
|
stateTemp = stateObj.attributes.temperature + ' ' +
|
||||||
|
stateObj.attributes.unit_of_measurement;
|
||||||
|
}
|
||||||
|
|
||||||
|
return stateTemp;
|
||||||
},
|
},
|
||||||
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user