mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-13 20:36:35 +00:00
Support for geolocation trigger (#2617)
* initial working version of geolocation trigger * removed unused code * removed unused code and imports * sources now localisable * fixed source picker to not immediately show save button after loading automation * labels * removed unused code * removed unused import * transformed source dropdown to simple edit field
This commit is contained in:
parent
b37eee56c0
commit
b0958f589b
85
src/panels/config/js/trigger/geo_location.js
Normal file
85
src/panels/config/js/trigger/geo_location.js
Normal file
@ -0,0 +1,85 @@
|
||||
import { h, Component } from "preact";
|
||||
import "@polymer/paper-radio-button/paper-radio-button";
|
||||
import "@polymer/paper-radio-group/paper-radio-group";
|
||||
import "../../../../components/entity/ha-entity-picker";
|
||||
|
||||
import { onChangeEvent } from "../../../../common/preact/event";
|
||||
|
||||
export default class GeolocationTrigger extends Component {
|
||||
constructor() {
|
||||
super();
|
||||
|
||||
this.onChange = onChangeEvent.bind(this, "trigger");
|
||||
this.zonePicked = this.zonePicked.bind(this);
|
||||
this.radioGroupPicked = this.radioGroupPicked.bind(this);
|
||||
}
|
||||
|
||||
zonePicked(ev) {
|
||||
this.props.onChange(
|
||||
this.props.index,
|
||||
Object.assign({}, this.props.trigger, { zone: ev.target.value })
|
||||
);
|
||||
}
|
||||
|
||||
radioGroupPicked(ev) {
|
||||
this.props.onChange(
|
||||
this.props.index,
|
||||
Object.assign({}, this.props.trigger, { event: ev.target.selected })
|
||||
);
|
||||
}
|
||||
|
||||
/* eslint-disable camelcase */
|
||||
render({ trigger, hass, localize }) {
|
||||
const { source, zone, event } = trigger;
|
||||
|
||||
return (
|
||||
<div>
|
||||
<paper-input
|
||||
label={localize(
|
||||
"ui.panel.config.automation.editor.triggers.type.geo_location.source"
|
||||
)}
|
||||
name="source"
|
||||
value={source}
|
||||
onvalue-changed={this.onChange}
|
||||
/>
|
||||
<ha-entity-picker
|
||||
label={localize(
|
||||
"ui.panel.config.automation.editor.triggers.type.geo_location.zone"
|
||||
)}
|
||||
value={zone}
|
||||
onChange={this.zonePicked}
|
||||
hass={hass}
|
||||
allowCustomEntity
|
||||
domainFilter="zone"
|
||||
/>
|
||||
<label id="eventlabel">
|
||||
{localize(
|
||||
"ui.panel.config.automation.editor.triggers.type.geo_location.event"
|
||||
)}
|
||||
</label>
|
||||
<paper-radio-group
|
||||
selected={event}
|
||||
aria-labelledby="eventlabel"
|
||||
onpaper-radio-group-changed={this.radioGroupPicked}
|
||||
>
|
||||
<paper-radio-button name="enter">
|
||||
{localize(
|
||||
"ui.panel.config.automation.editor.triggers.type.geo_location.enter"
|
||||
)}
|
||||
</paper-radio-button>
|
||||
<paper-radio-button name="leave">
|
||||
{localize(
|
||||
"ui.panel.config.automation.editor.triggers.type.geo_location.leave"
|
||||
)}
|
||||
</paper-radio-button>
|
||||
</paper-radio-group>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
GeolocationTrigger.defaultConfig = {
|
||||
source: "",
|
||||
zone: "",
|
||||
event: "enter",
|
||||
};
|
@ -5,6 +5,7 @@ import "@polymer/paper-item/paper-item";
|
||||
import "@polymer/paper-listbox/paper-listbox";
|
||||
|
||||
import EventTrigger from "./event";
|
||||
import GeolocationTrigger from "./geo_location";
|
||||
import HassTrigger from "./homeassistant";
|
||||
import MQTTTrigger from "./mqtt";
|
||||
import NumericStateTrigger from "./numeric_state";
|
||||
@ -19,6 +20,7 @@ import ZoneTrigger from "./zone";
|
||||
const TYPES = {
|
||||
event: EventTrigger,
|
||||
state: StateTrigger,
|
||||
geo_location: GeolocationTrigger,
|
||||
homeassistant: HassTrigger,
|
||||
mqtt: MQTTTrigger,
|
||||
numeric_state: NumericStateTrigger,
|
||||
|
@ -590,6 +590,14 @@
|
||||
"event_type": "Event type",
|
||||
"event_data": "Event data"
|
||||
},
|
||||
"geo_location": {
|
||||
"label": "Geolocation",
|
||||
"source": "Source",
|
||||
"zone": "Zone",
|
||||
"event": "Event:",
|
||||
"enter": "Enter",
|
||||
"leave": "Leave"
|
||||
},
|
||||
"state": {
|
||||
"label": "State",
|
||||
"from": "From",
|
||||
|
@ -378,6 +378,14 @@
|
||||
"event_type": "Event type",
|
||||
"event_data": "Event data"
|
||||
},
|
||||
"geo_location": {
|
||||
"label": "Geolocation",
|
||||
"source": "Source",
|
||||
"zone": "Zone",
|
||||
"event": "Event:",
|
||||
"enter": "Enter",
|
||||
"leave": "Leave"
|
||||
},
|
||||
"state": {
|
||||
"label": "State",
|
||||
"from": "From",
|
||||
|
Loading…
x
Reference in New Issue
Block a user