[OH3] How to use transformation in expressions (custom-widgets)

You both are the best!!!

It works - filtered by timed out heartbeat:

Unfiltered (full) list:

That’s the working code:

  - component: oh-repeater
    config:
      for: i
      sourceType: itemsInGroup
      groupItem: =props.mainItem
      fetchMetadata: semantics,widgetOrder,uiSemantics
      filter: '( loop.i.state < dayjs().add(-1,"hour").format() ) ? true : vars.detailsOn '
    slots:
      default:
        - component: oh-list-item
          config:
            icon: =props.icon
            iconColor: '=items[loop.i.name].state === "ON" || items[loop.i.name].state > 0 ? "green" : "gray"'
            footer: =loop.i.metadata.uiSemantics.config.preposition + loop.i.metadata.uiSemantics.config.location 
            title: =loop.i.metadata.uiSemantics.config.equipment
            item: =loop.i.name
            badge: =dayjs(loop.i.state).fromNow()
            badgeColor: '=dayjs(loop.i.state).fromNow().includes("Sek") ? "green" : dayjs(loop.i.state).fromNow().includes("Minu") ? "green" : dayjs(loop.i.state).fromNow().includes("Stun") ? "orange" : "red"'

Many thanks mates!

EDIT: Any idea for some sleeker code for:

badgeColor: '=dayjs(loop.i.state).fromNow().includes("Sek") ? "green" : dayjs(loop.i.state).fromNow().includes("Minu") ? "green" : dayjs(loop.i.state).fromNow().includes("Stun") ? "orange" : "red"'`

EDIT2:
Slightly better (but not that much ;-):

badgeColor: '=dayjs(loop.i.state).isAfter(dayjs().add(-1,"hour")) ? "green" : dayjs(loop.i.state).isAfter(dayjs().add(-1,"day")) ? "orange" : "red"'

:wink:

1 Like