I’m stuck with a oh-repeater issue using oh-list with accordion set to true.
It took some time for me to get accordion working in general. However now the items are not looped anymore, and I don’t know what went wrong
YAML configuration with accordion enabled, but incomplete item-list
uid: all_timestamps_v5_ac
props:
parameters: []
parameterGroups: []
timestamp: Dec 21, 2023, 6:48:53 PM
component: f7-block
config: {}
slots:
default:
- component: oh-repeater
config:
fetchMetadata: semantics, widgetOrder, uiSemantics
for: allStatusItems
fragment: true
itemTags: Status,TimeStamp
listContainer: false
sourceType: itemsWithTags
slots:
default:
- component: oh-list
config:
accordionList: true
mediaList: true
slots:
default:
- component: oh-list-item
config:
visible: =(loop.allStatusItems_idx==0)
title: =loop.allStatusItems_source.length + " Sensors erkannt"
slots:
accordion:
- component: oh-list
config:
visible: =(loop.allStatusItems_idx==0)
mediaList: true
style:
margin-left: 0px
padding: 0px
width: 100%
slots:
default:
- component: oh-repeater
config:
fetchMetadata: semantics, widgetOrder, uiSemantics
filter: '(dayjs().diff(items[loop.i.name].state,"m") > 60) ? true : false '
for: i
in: =loop.allStatusItems_source
listContainer: false
sourceType: array
slots:
default:
- component: oh-list
config:
accordionList: true
slots:
default:
- component: oh-list-item
config:
visible: =(loop.i_idx==0)
title: =loop.i_source.length + " Sensors - OK"
slots:
accordion:
- component: oh-list
config: {}
slots:
default:
- component: oh-list-item
config:
iconUseState: false
action: group
actionGroupPopupItem: =loop.i.metadata.semantics.config.isPointOf
badge: =dayjs(items[loop.i.name].state).fromNow()
badgeColor: =dayjs().diff(dayjs(items[loop.i.name].state),"h")<1?"green":dayjs().diff(dayjs(items[loop.i.name].state),"d")<1?"orange":"red"
footer: =loop.i.metadata.uiSemantics.config.preposition + loop.i.metadata.uiSemantics.config.location
icon: f7:arrow_clockwise
iconColor: '=items[loop.i.name].state === "ON" || items[loop.i.name].state > 0 ? "green" : "gray"'
media-list: true
title: =loop.i.metadata.uiSemantics.config.equipment
noChevron: true
- component: oh-repeater
config:
fetchMetadata: semantics, widgetOrder, uiSemantics
filter: '(dayjs().diff(items[loop.i.name].state,"m") <= 60) ? true : false '
for: i
fragment: true
in: =loop.allStatusItems_source
listContainer: false
sourceType: array
slots:
default:
- component: oh-list
config:
accordionList: true
slots:
default:
- component: oh-list-item
config:
visible: =(loop.i_idx==0)
title: =loop.i_source.length + " Sensors - Warnung"
slots:
accordion:
- component: oh-list
config: {}
slots:
default:
- component: oh-list-item
config:
iconUseState: false
action: group
actionGroupPopupItem: =loop.i.metadata.semantics.config.isPointOf
badge: =dayjs(items[loop.i.name].state).fromNow()
badgeColor: =dayjs().diff(dayjs(items[loop.i.name].state),"h")<1?"green":dayjs().diff(dayjs(items[loop.i.name].state),"d")<1?"orange":"red"
footer: =loop.i.metadata.uiSemantics.config.preposition + loop.i.metadata.uiSemantics.config.location
icon: f7:arrow_clockwise
iconColor: '=items[loop.i.name].state === "ON" || items[loop.i.name].state > 0 ? "green" : "gray"'
media-list: true
title: =loop.i.metadata.uiSemantics.config.equipment
noChevron: true
The output should look like below screenshot, but for some reason only 1 item is listed when I use the config with accordion.
Any hint want I did wrong is appreciated
YAML config for working output, but without accordion enabled
uid: all_timestamps_v5
tags:
- example
- testing
props:
parameters: []
parameterGroups: []
timestamp: Dec 20, 2023, 2:30:54 PM
component: f7-card
config: {}
slots:
default:
- component: f7-list
slots:
default:
- component: oh-repeater
config:
fetchMetadata: semantics, widgetOrder, uiSemantics
for: allStatusItems
fragment: true
itemTags: Status,TimeStamp
listContainer: false
sourceType: itemsWithTags
accordionList: true
slots:
default:
- component: f7-block-title
config:
visible: =(loop.allStatusItems_idx==0)
slots:
default:
- component: Label
config:
text: =loop.allStatusItems_source.length + " Sensors erkannt"
- component: f7-list
config:
visible: =(loop.allStatusItems_idx==0)
mediaList: true
accordionList: true
style:
margin-left: 0px
padding: 0px
width: 100%
slots:
default:
- component: oh-repeater
config:
fetchMetadata: semantics, widgetOrder, uiSemantics
filter: '(dayjs().diff(items[loop.i.name].state,"m") > 60) ? true : false '
for: i
fragment: true
in: =loop.allStatusItems_source
listContainer: false
sourceType: array
accordionList: true
slots:
default:
- component: f7-block-title
config:
visible: =(loop.i_idx==0)
slots:
default:
- component: Label
config:
text: =loop.i_source.length + " Sensors - Warnung"
- component: oh-list-item
config:
iconUseState: false
action: group
actionGroupPopupItem: =loop.i.metadata.semantics.config.isPointOf
badge: =dayjs(items[loop.i.name].state).fromNow()
badgeColor: =dayjs().diff(dayjs(items[loop.i.name].state),"h")<1?"green":dayjs().diff(dayjs(items[loop.i.name].state),"d")<1?"orange":"red"
footer: =loop.i.metadata.uiSemantics.config.preposition + loop.i.metadata.uiSemantics.config.location
icon: f7:arrow_clockwise
iconColor: '=items[loop.i.name].state === "ON" || items[loop.i.name].state > 0 ? "green" : "gray"'
media-list: true
title: =loop.i.metadata.uiSemantics.config.equipment
noChevron: true
accordionItem: true
- component: oh-repeater
config:
fetchMetadata: semantics, widgetOrder, uiSemantics
filter: '(dayjs().diff(items[loop.i.name].state,"m") <= 60) ? true : false '
for: i
fragment: true
in: =loop.allStatusItems_source
listContainer: false
sourceType: array
slots:
default:
- component: f7-block-title
config:
visible: =(loop.i_idx==0)
slots:
default:
- component: Label
config:
text: =loop.i_source.length + " Sensors - OK"
- component: oh-list-item
config:
action: group
actionGroupPopupItem: =loop.i.metadata.semantics.config.isPointOf
badge: =dayjs(items[loop.i.name].state).fromNow()
badgeColor: =dayjs().diff(dayjs(items[loop.i.name].state),"h")<1?"green":dayjs().diff(dayjs(items[loop.i.name].state),"d")<1?"orange":"red"
footer: =loop.i.metadata.uiSemantics.config.preposition + loop.i.metadata.uiSemantics.config.location
icon: f7:arrow_clockwise
iconColor: '=items[loop.i.name].state === "ON" || items[loop.i.name].state > 0 ? "green" : "gray"'
media-list: true
title: =loop.i.metadata.uiSemantics.config.equipment
noChevron: true