From 729366d059e80f641df409b7c90a66a42f6706c1 Mon Sep 17 00:00:00 2001 From: jemu75 Date: Wed, 27 Mar 2024 17:19:59 +0100 Subject: [PATCH] v4.0.33-beta --- README.md | 15 ++++++++++--- public/CHANGELOG.md | 5 +++++ public/templates/shellyPlus_1pm.json | 9 ++++---- src/components/PanelCard.vue | 4 ++-- src/components/SettingsProps.vue | 33 ++++++++++++++-------------- src/components/SettingsPropsList.vue | 10 ++++++--- src/components/SettingsPropsMain.vue | 26 ++++++++++------------ 7 files changed, 59 insertions(+), 43 deletions(-) diff --git a/README.md b/README.md index b83f9de9..2ff21cbe 100644 --- a/README.md +++ b/README.md @@ -411,7 +411,7 @@ Legt den Befehl fest, der bei kurzem Drücken des Button ausgeführt wird. |Beispiel|Erklärung| |---|---| -|`::set switch on`|sendet den Befehl `set switch on` an FHEM. Dabei wird im Panel unter dem [Element devices](#element-devices) nach dem Schlüssel `switch` gesucht und falls vorhanden, durch den Name des FHEM Devices ersetzt. Kann kein entsprechender Schlüssel gefunden werden, so wird der Befehl unverändert an FHEM gesendet.| +|`::set switch on`|sendet den Befehl `set switch on` an FHEM. Dabei wird im Panel unter dem [Element devices](#element-devices) nach dem Schlüssel `switch` gesucht und falls vorhanden, durch den Name des FHEM Devices ersetzt. Kann kein entsprechender Schlüssel gefunden werden, so wird der Befehl unverändert an FHEM gesendet. Es können auch mehrere Befehle (durch Semikolon getrennt) an FHEM gesendet werden.| |`::home:route`|wechselt zum Navigationspunkt `home` in **FHEMApp**. Die angegebene Route muss existieren und der Route in der URL (.../devices/{route}/?...)| |`::https\\://fhem.de:url`|wechsel direkt zu der URL `https://fhem.de`. Bei direkter Eingabe von URLs müssen Doppelpunkte entsprechend ersetzt werden. (siehe auch [Ersetzungen](#ersetzungen))| |`cam-link::%s:url`|wechsel direkt zu der URL, die im Device `cam` im Reading `link` hinterlegt ist| @@ -596,7 +596,9 @@ Damit Konfigurationen nicht für jedes Panel erstellt werden müssen, können di Nachdem eine Vorlage erstellt wurde, kann diese den gewünschten Panels in der [Panelkonfiguration](#panelkonfiguration) unter den [allgemeinen Einstellungen](#panel-allgemein) im Element [template](#element-template) zugewiesen werden. -Grundsätzlich können alle Elemente, die in einem Panel konfigurierbar sind auch in Vorlagen konfiguriert werden. +Grundsätzlich können alle Elemente, die in einem Panel konfigurierbar sind auch in Vorlagen konfiguriert werden. + +Mit **FHEMApp** werden verschiedene [Standardvorlagen](#standardvorlagen) bereitgestellt, welche direkt verwendet werden können. # Navigation Das Navigationsmenü von **FHEMApp** kann individuell angepasst werden. So ist es möglich die Reihenfolge der einzelnen Navigationspunkte festzulegen, Navigationspunkte mit einem Icon zu versehen oder alternative Beschriftungen für die Navigationspunkte festzulegen. @@ -631,4 +633,11 @@ Neben festen Sprachvariablen kann die Ersetzung `%t()` auch mit den Werten von F |Beispiel Elementdefinition|Sprachvariable|de|en|fr|es| |---|---|---|---|---|---| -|`state::%t(%s)`|`on`|an|on|allumé|encendida| \ No newline at end of file +|`state::%t(%s)`|`on`|an|on|allumé|encendida| + +## Standardvorlagen +Mit **FHEMApp** werden verschiedene Standardvorlagen bereitgestellt, die den Einstieg besonders einfach machen. +|Vorlage|Beispiel| +|---|---| +|[shellyPlus_1pm](./public/templates/shellyPlus_1pm.json)|![](./docs/media/example_panel.png)| +|...|| \ No newline at end of file diff --git a/public/CHANGELOG.md b/public/CHANGELOG.md index f3287bfd..2c51d980 100644 --- a/public/CHANGELOG.md +++ b/public/CHANGELOG.md @@ -1,3 +1,8 @@ +# v4.0.33-beta (27.03.2024) +## Settings +- bugfix for panel / template settings +## Panel +- bugfix show expand icon if no title is defined # v4.0.32-beta (26.03.2024) ## Panel Button - bugfix if more than one FHEM Command will be sended diff --git a/public/templates/shellyPlus_1pm.json b/public/templates/shellyPlus_1pm.json index 01028e45..0044453e 100644 --- a/public/templates/shellyPlus_1pm.json +++ b/public/templates/shellyPlus_1pm.json @@ -5,11 +5,12 @@ "dist": true, "panel": { "navigation": [ "a-group::groups->%s", "a-room::rooms->%s" ], - "sortby": [ "a-sortby::%s" ] + "sortby": [ "a-sortby::%s" ], + "devicekeys": ["switch:FHEM switch Device"] }, "status": { "title": [ "a-alias::%s" ], - "bar": [ "state:on:100:on", "::0:on" ], + "bar": [ "state:on:100:success", "::0:success" ], "imageUrl": [ "::https\\://picsum.photos/1920/1080?random" ] }, "main": [ @@ -17,8 +18,8 @@ "level": { "left1": "btn", "left2": null, "mid": "info", "right1": null, "right2": "btn" }, "mid": { "text": [ "state:off:aus", "relay_0_power:0.1:an", "relay_0_power:0:standby", "state:on:an" ], - "divider": [ "true" ], - "size": [ "8" ] + "divider": [ "::true" ], + "size": [ "::8" ] }, "right2": { "btn": [ "::mdi-power-on" ], diff --git a/src/components/PanelCard.vue b/src/components/PanelCard.vue index 4d5e476c..f3f985c0 100644 --- a/src/components/PanelCard.vue +++ b/src/components/PanelCard.vue @@ -136,9 +136,9 @@ - + - + {{ title.title }} diff --git a/src/components/SettingsProps.vue b/src/components/SettingsProps.vue index c745214c..ca01062b 100644 --- a/src/components/SettingsProps.vue +++ b/src/components/SettingsProps.vue @@ -166,12 +166,22 @@ return idx !== -1 ? fhem.app.panelList[idx] : null } - async function getReadings(devices) { + async function getReadings() { let devParts, res, + panelIdx, + devices = [], readings = [], result = {} + if(props.type === 'panels') { + if(item.value.panel.devices && item.value.panel.devices.length > 0) devices.push(...item.value.panel.devices) + } else { + panelIdx = fhem.app.config.panels.map((e) => e.template).indexOf(item.value.name) + + if(panelIdx !== -1 && fhem.app.config.panels[panelIdx].panel.devices) devices.push(...fhem.app.config.panels[panelIdx].panel.devices) + } + if(devices.length > 0) { for(const device of devices) { devParts = device.split(':') @@ -184,14 +194,14 @@ for(const parts of ['Internals', 'Readings', 'Attributes']) { for(const el of Object.keys(res.Results[0][parts])) readings.push(parts[0].toLowerCase() + '-' + el) } - - result[devParts[0]] = readings } + + result[devParts[0]] = readings } } } - return result + settings.value.devices = result } function addItem() { @@ -219,22 +229,11 @@ editItem(fhem.app.config[props.type].length - 1) } - async function editItem(idx) { - let panelIdx, - devices = [] - + function editItem(idx) { item.value = fhem.app.config[props.type][idx] settings.value.itemIdx = idx - if(props.type === 'panels') { - if(item.value.panel.devices && item.value.panel.devices.length > 0) devices.push(...item.value.panel.devices) - } else { - panelIdx = fhem.app.config.panels.map((e) => e.template).indexOf(item.value.name) - - if(panelIdx !== -1 && fhem.app.config.panels[panelIdx].panel.devices) devices.push(...fhem.app.config.panels[panelIdx].panel.devices) - } - - settings.value.devices = await getReadings(devices) + getReadings() settings.value.extended = items.value[items.value.map((e) => e.idx).indexOf(idx)].advanced !== '-' ? true : false diff --git a/src/components/SettingsPropsList.vue b/src/components/SettingsPropsList.vue index 3779b3c9..a13c06d3 100644 --- a/src/components/SettingsPropsList.vue +++ b/src/components/SettingsPropsList.vue @@ -15,8 +15,8 @@ const listItemDefs = { panel: [ - { type: 'defs', show: ['panels', 'extended.panels'], required: true, prop: 'devices', def: 'key:fhem_device', help: 'element-devices', assist: 'devices' }, { type: 'template', show: ['panels', 'extended.panels'], required: false, prop: 'template', help: 'element-template' }, + { type: 'defs', show: ['panels', 'extended.panels'], required: true, prop: 'devices', def: 'key:fhem_device', help: 'element-devices', assist: 'devices' }, { type: 'text', show: ['templates'], required: false, prop: 'author', def: 'text' }, { type: 'text', show: ['templates'], required: false, prop: 'date', def: 'text' }, { type: 'defs', show: ['templates'], required: true, prop: 'devicekeys', def: 'key:description', help: 'element-devicekeys' }, @@ -56,13 +56,17 @@ for(const template of fhem.app.config.templates) if(!template.dist) res.push({ title: template.name, value: template.name }) - res.sort((a, b) => (a.title > b.title) ? 1 : (b.title > a.title) ? -1 : 0) + if(res.length > 0) res.sort((a, b) => (a.title > b.title) ? 1 : (b.title > a.title) ? -1 : 0) for(const dist of fhem.app.distTemplates) res.push({ title: dist + ' (' + fhem.replacer('%t(_app.default)', '') + ')', value: dist }) return res }) + function loadDevices() { + console.log('hier versuchen, funktion von parent auszuführen') + } + function panelIcon(def) { let res = { icon: def.required ? 'mdi-alert-circle' : 'mdi-chevron-down', @@ -113,7 +117,7 @@ v-model="fhem.app.config.panels[props.typeIdx]['template']" :items="templates" :label="$t('_app.settings.templates.title')" - :disabled="fhem.app.config.templates.length === 0" + :disabled="templates.length === 0" density="compact" variant="outlined" class="pt-3"> diff --git a/src/components/SettingsPropsMain.vue b/src/components/SettingsPropsMain.vue index e9967e4f..f1a476de 100644 --- a/src/components/SettingsPropsMain.vue +++ b/src/components/SettingsPropsMain.vue @@ -256,21 +256,19 @@ - - - - - - - + + + + + \ No newline at end of file