mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-14 12:56:37 +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 "@polymer/paper-listbox/paper-listbox";
|
||||||
|
|
||||||
import EventTrigger from "./event";
|
import EventTrigger from "./event";
|
||||||
|
import GeolocationTrigger from "./geo_location";
|
||||||
import HassTrigger from "./homeassistant";
|
import HassTrigger from "./homeassistant";
|
||||||
import MQTTTrigger from "./mqtt";
|
import MQTTTrigger from "./mqtt";
|
||||||
import NumericStateTrigger from "./numeric_state";
|
import NumericStateTrigger from "./numeric_state";
|
||||||
@ -19,6 +20,7 @@ import ZoneTrigger from "./zone";
|
|||||||
const TYPES = {
|
const TYPES = {
|
||||||
event: EventTrigger,
|
event: EventTrigger,
|
||||||
state: StateTrigger,
|
state: StateTrigger,
|
||||||
|
geo_location: GeolocationTrigger,
|
||||||
homeassistant: HassTrigger,
|
homeassistant: HassTrigger,
|
||||||
mqtt: MQTTTrigger,
|
mqtt: MQTTTrigger,
|
||||||
numeric_state: NumericStateTrigger,
|
numeric_state: NumericStateTrigger,
|
||||||
|
@ -590,6 +590,14 @@
|
|||||||
"event_type": "Event type",
|
"event_type": "Event type",
|
||||||
"event_data": "Event data"
|
"event_data": "Event data"
|
||||||
},
|
},
|
||||||
|
"geo_location": {
|
||||||
|
"label": "Geolocation",
|
||||||
|
"source": "Source",
|
||||||
|
"zone": "Zone",
|
||||||
|
"event": "Event:",
|
||||||
|
"enter": "Enter",
|
||||||
|
"leave": "Leave"
|
||||||
|
},
|
||||||
"state": {
|
"state": {
|
||||||
"label": "State",
|
"label": "State",
|
||||||
"from": "From",
|
"from": "From",
|
||||||
|
@ -378,6 +378,14 @@
|
|||||||
"event_type": "Event type",
|
"event_type": "Event type",
|
||||||
"event_data": "Event data"
|
"event_data": "Event data"
|
||||||
},
|
},
|
||||||
|
"geo_location": {
|
||||||
|
"label": "Geolocation",
|
||||||
|
"source": "Source",
|
||||||
|
"zone": "Zone",
|
||||||
|
"event": "Event:",
|
||||||
|
"enter": "Enter",
|
||||||
|
"leave": "Leave"
|
||||||
|
},
|
||||||
"state": {
|
"state": {
|
||||||
"label": "State",
|
"label": "State",
|
||||||
"from": "From",
|
"from": "From",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user