Compare commits

...

6 Commits

Author SHA1 Message Date
Philip Abbey
f64bed5058 Add light effect selector example to Select.md (#301)
Added an example of a light effect selector in JSON format.
2025-10-30 09:03:58 +00:00
Philip Abbey
619671de5d Moved the contents of Select.md to Actions.md
Feels like we already have a home for the example without creating a separate new file.
2025-10-30 09:02:40 +00:00
Philip Abbey
6d18406880 Select schema version in web (#300)
To test the schema on a specific version:
```url
https://house-of-abbey.github.io/web/?version=v1.4
```
To test the schema on a specific branch:
```url
https://house-of-abbey.github.io/web/?branch=numeric-item-json-schema
```
To test the schema on an arbitrary URL (may be affected by cors):
```url
https://house-of-abbey.github.io/web/?schema={url}
```
2025-10-30 08:57:04 +00:00
Joseph Abbey
81fa876449 Add light effect selector example to Select.md
Added an example of a light effect selector in JSON format.

Signed-off-by: Joseph Abbey <me@josephabbey.dev>
2025-10-22 14:37:41 +01:00
Joseph Abbey
b563ab7923 Arbitrary schema URL 2025-10-22 09:08:24 +01:00
Joseph Abbey
2ebf36a445 Select schema version in web 2025-10-22 09:05:09 +01:00
5 changed files with 93 additions and 10 deletions

View File

@@ -108,3 +108,64 @@ If you would like to temporarily disable an item in your menu, e.g. for seasonal
"enabled": false
}
```
# Selects
Here is an example of how to make a light effect selector:
```json
{
"type": "group",
"name": "Example",
"title": "Light Effect",
"content": "{{ state_attr('light.moon', 'effect') }}",
"items": [
{
"type": "tap",
"name": "None",
"entity": "light.example",
"tap_action": {
"service": "light.turn_on",
"data": {
"effect": "None"
}
}
},
{
"type": "tap",
"name": "Rainbow",
"entity": "light.example",
"tap_action": {
"service": "light.turn_on",
"data": {
"effect": "Rainbow"
}
}
},
{
"type": "tap",
"name": "Glimmer",
"entity": "light.example",
"tap_action": {
"service": "light.turn_on",
"data": {
"effect": "Glimmer"
}
}
},
{
"type": "tap",
"name": "Twinkle",
"entity": "light.example",
"tap_action": {
"service": "light.turn_on",
"data": {
"effect": "Twinkle"
}
}
}
]
}
```
The same pattern works for any selector (`input_select.*`, `select.*`, `climate.*` mode).

View File

@@ -7,7 +7,7 @@
<link
rel="stylesheet"
data-name="vs/editor/editor.main"
href="https://www.unpkg.com/monaco-editor@0.45.0/min/vs/editor/editor.main.css" />
href="https://www.unpkg.com/monaco-editor@0.52.2/min/vs/editor/editor.main.css" />
<link
rel="stylesheet"
type="text/css"

View File

@@ -141,10 +141,32 @@ async function get_services() {
* @returns {Promise<{}>}
*/
async function get_schema() {
const res = await fetch(
'https://raw.githubusercontent.com/house-of-abbey/GarminHomeAssistant/main/config.schema.json'
);
return res.json();
const searchParams = new URL(window.location).searchParams;
const url = searchParams.get('schema');
if (url) return (await fetch(url)).json();
const branch = searchParams.get('branch');
if (branch)
return (
await fetch(
`https://raw.githubusercontent.com/house-of-abbey/GarminHomeAssistant/refs/heads/${branch}/config.schema.json`
)
).json();
const version = searchParams.get('version');
if (version)
return (
await fetch(
`https://raw.githubusercontent.com/house-of-abbey/GarminHomeAssistant/refs/tags/${version}/config.schema.json`
)
).json();
return (
await fetch(
`https://raw.githubusercontent.com/house-of-abbey/GarminHomeAssistant/main/config.schema.json`
)
).json();
}
/**

View File

@@ -10,7 +10,7 @@
"author": "",
"license": "ISC",
"devDependencies": {
"@types/toastify-js": "^1.12.4",
"@types/toastify-js": "1.12.0",
"@vscode/webview-ui-toolkit": "1.4.0",
"json-ast-comments": "1.1.1",
"monaco-editor": "0.52.2",

8
web/pnpm-lock.yaml generated
View File

@@ -6,8 +6,8 @@ settings:
devDependencies:
'@types/toastify-js':
specifier: ^1.12.4
version: 1.12.4
specifier: 1.12.0
version: 1.12.0
'@vscode/webview-ui-toolkit':
specifier: 1.4.0
version: 1.4.0(react@18.2.0)
@@ -55,8 +55,8 @@ packages:
exenv-es6: 1.1.1
dev: true
/@types/toastify-js@1.12.4:
resolution: {integrity: sha512-zfZHU4tKffPCnZRe7pjv/eFKzTVHozKewFCKaCjZ4gFinKgJRz/t0bkZiMCXJxPhv/ZoeDGNOeRD09R0kQZ/nw==}
/@types/toastify-js@1.12.0:
resolution: {integrity: sha512-fqpDHaKhFukN9KRm24bbH0wozvHmSwjvkaLjBUrWcSfSS4zysIwTYqNLG3XbSNhRlsTNRNLGS23tp/VhPwsfHQ==}
dev: true
/@vscode/webview-ui-toolkit@1.4.0(react@18.2.0):