forked from platypush/platypush
Added PercentSensor
entity type.
This commit is contained in:
parent
e7f64843a5
commit
65481dc6b4
3 changed files with 82 additions and 1 deletions
|
@ -0,0 +1,52 @@
|
|||
<template>
|
||||
<div class="entity sensor-container">
|
||||
<div class="head">
|
||||
<div class="col-1 icon">
|
||||
<EntityIcon
|
||||
:entity="value"
|
||||
:loading="loading"
|
||||
:error="error" />
|
||||
</div>
|
||||
|
||||
<div class="col-s-8 col-m-9 label">
|
||||
<div class="name" v-text="value.name" />
|
||||
</div>
|
||||
|
||||
<div class="col-s-3 col-m-2 pull-right" v-text="displayValue" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import EntityMixin from "./EntityMixin"
|
||||
import EntityIcon from "./EntityIcon"
|
||||
|
||||
export default {
|
||||
name: 'PercentSensor',
|
||||
components: {EntityIcon},
|
||||
mixins: [EntityMixin],
|
||||
computed: {
|
||||
displayValue() {
|
||||
if (this.value.value == null) {
|
||||
return null
|
||||
}
|
||||
|
||||
let normValue = 100 * this.value.value
|
||||
return (
|
||||
normValue.toString() == normValue.toFixed(0)
|
||||
? normValue.toFixed(0) : normValue.toFixed(1)
|
||||
) + '%'
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import "common";
|
||||
|
||||
.entity {
|
||||
.icon {
|
||||
margin-right: 1em;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -295,6 +295,14 @@
|
|||
}
|
||||
},
|
||||
|
||||
"percent_sensor": {
|
||||
"name": "Sensor",
|
||||
"name_plural": "Sensors",
|
||||
"icon": {
|
||||
"class": "fas fa-thermometer"
|
||||
}
|
||||
},
|
||||
|
||||
"enum_sensor": {
|
||||
"name": "Sensor",
|
||||
"name_plural": "Sensors",
|
||||
|
|
|
@ -91,7 +91,7 @@ if 'raw_sensor' not in Base.metadata:
|
|||
}
|
||||
|
||||
|
||||
if 'numeric_sensor' not in Base.metadata:
|
||||
if 'numeric_sensor' not in Base.metadata and 'percent_sensor' not in Base.metadata:
|
||||
|
||||
class NumericSensor(Sensor):
|
||||
"""
|
||||
|
@ -113,6 +113,27 @@ if 'numeric_sensor' not in Base.metadata:
|
|||
'polymorphic_identity': __tablename__,
|
||||
}
|
||||
|
||||
class PercentSensor(NumericSensor):
|
||||
"""
|
||||
A subclass of ``NumericSensor`` that represents a percentage value.
|
||||
"""
|
||||
|
||||
__tablename__ = 'percent_sensor'
|
||||
|
||||
id = Column(
|
||||
Integer, ForeignKey(NumericSensor.id, ondelete='CASCADE'), primary_key=True
|
||||
)
|
||||
|
||||
__mapper_args__ = {
|
||||
'polymorphic_identity': __tablename__,
|
||||
}
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.min = 0.0
|
||||
self.max = 1.0
|
||||
self.unit = '%'
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
|
||||
if 'binary_sensor' not in Base.metadata:
|
||||
|
||||
|
|
Loading…
Reference in a new issue