Skip to content

Commit

Permalink
v4.0.33-beta
Browse files Browse the repository at this point in the history
  • Loading branch information
jemu75 committed Mar 27, 2024
1 parent 8f0fc90 commit 729366d
Show file tree
Hide file tree
Showing 7 changed files with 59 additions and 43 deletions.
15 changes: 12 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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|
Expand Down Expand Up @@ -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.

Expand Down Expand Up @@ -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|
|`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)|
|...||
5 changes: 5 additions & 0 deletions public/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down
9 changes: 5 additions & 4 deletions public/templates/shellyPlus_1pm.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,21 @@
"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": [
{
"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" ],
Expand Down
4 changes: 2 additions & 2 deletions src/components/PanelCard.vue
Original file line number Diff line number Diff line change
Expand Up @@ -136,9 +136,9 @@

<v-sheet color="secondary">
<v-img :src="img.url" :gradient="img.url ? fhem.app.header.imageGradient : ''" height="48" cover>
<v-card-title v-if="panel.status.title">
<v-card-title>
<v-row no-gutters>
<v-col>
<v-col v-if="panel.status.title">
{{ title.title }}
</v-col>
<v-spacer></v-spacer>
Expand Down
33 changes: 16 additions & 17 deletions src/components/SettingsProps.vue
Original file line number Diff line number Diff line change
Expand Up @@ -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(':')
Expand All @@ -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() {
Expand Down Expand Up @@ -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
Expand Down
10 changes: 7 additions & 3 deletions src/components/SettingsPropsList.vue
Original file line number Diff line number Diff line change
Expand Up @@ -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' },
Expand Down Expand Up @@ -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',
Expand Down Expand Up @@ -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">
Expand Down
26 changes: 12 additions & 14 deletions src/components/SettingsPropsMain.vue
Original file line number Diff line number Diff line change
Expand Up @@ -256,21 +256,19 @@
<v-list-item>
<v-row no-gutters>
<v-col>
<v-pagination v-model="lvl" :length="lvlCount" total-visible="5" rounded="circle"></v-pagination>
</v-col>
<v-col cols="2" class="text-right">
<v-btn
variant="text"
icon="mdi-plus"
@click="addLevel()">
</v-btn>
<v-btn
variant="text"
icon="mdi-delete"
:disabled="lvlCount < 2"
@click="deleteLevel()">
</v-btn>
<v-pagination v-model="lvl" :length="lvlCount" total-visible="5" rounded="circle" density="compact" @update:model-value="subSectionIdx = 0"></v-pagination>
</v-col>
<v-btn
variant="plain"
icon="mdi-plus"
@click="addLevel()">
</v-btn>
<v-btn
variant="plain"
icon="mdi-delete"
:disabled="lvlCount < 2"
@click="deleteLevel()">
</v-btn>
</v-row>
</v-list-item>
</template>

0 comments on commit 729366d

Please sign in to comment.