display watch or digital clock

Certified Senior Developer

I want to show only the time left out of the total time allocated by me. 

Anyone can help me out on this?

  Discussion posts and replies are publicly visible

Parents
  • Just for an OOTB example, I implemented something for a similar requirement with a!gaugeField() for a countdown timer in a Meeting Minute type app:

    /* rule inputs are datetime */
    
    a!localVariables(
      local!notSet: or(
        rule!APN_isEmpty(ri!start),
        rule!APN_isEmpty(ri!end),
        rule!APN_isEmpty(ri!current),
        ri!current<ri!start
      ),
      local!hours: if(local!notSet,0,hour(tointervalds(ri!end-ri!start))),
      local!minutes: if(local!notSet,0,minute(tointervalds(ri!end-ri!start))),
      local!duration: if(local!notSet,0,(local!hours*60)+local!minutes),
      local!curHoursIn: if(local!notSet,0,hour(tointervalds(ri!current-ri!start))),
      local!curMinutesIn: if(local!notSet,0,minute(tointervalds(ri!current-ri!start))),
      local!durationIn: if(local!notSet,0,(local!curHoursIn*60)+local!curMinutesIn),
      local!remainingMinutes: if(local!notSet,0,if(local!durationIn>local!duration,0,local!duration-local!durationIn)),
      local!pct: if(local!notSet,0,trunc((local!durationIn/local!duration)*100,0)),
    
      {
        a!gaugeField(
          labelPosition: "COLLAPSED",
          percentage: local!pct,
          primaryText: if(local!notSet,"---",local!remainingMinutes),
          secondaryText: "mins remain",
          color: rule!MM_getGaugeColorForPct(
            pct: local!pct,
            notSet: local!notSet
          ),
          size: "MEDIUM",
          align: "CENTER",
        )
      }
    )
    

    Helper rule!MM_getGaugeColorForPct() (this could be optimized..):

    if(
      ri!notSet,
      "#afafaf",
      if(
        ri!pct < 20,
        "#008000",
        if(
          and(
            ri!pct >= 20,
            ri!pct < 40
          ),
          "#a4d100",
          if(
            and(
              ri!pct >= 40,
              ri!pct < 60
            ),
            "#f9fc00",
            if(
              and(
                ri!pct >= 60,
                ri!pct < 80
              ),
              "#ff8500",
              if(
                ri!pct >= 80,
                "#ff0500",
                "#afafaf"
              )
            )
          )
        )
      )
    )

  • 0
    Certified Lead Developer
    in reply to Chris
    this could be optimized..

    hint: a!match() executes its "whenTrue" parameters in order, choosing only the first one that returns true (which would get rid of your and() statements altogether, because you'd just go from the bottom up in evaluating values of ri!pct).

    Edit: i got bored so

    a!match(
      value: ri!pct,
      
      whenTrue: ri!notSet,
      then: "#afafaf",
      
      whenTrue: fv!value < 20,
      then: "#008000",
      
      whenTrue: fv!value < 40,
      then: "#a4d100",
      
      whenTrue: fv!value < 60,
      then: "#f9fc00",
      
      whenTrue: fv!value < 80,
      then: "#ff8500",
      
      whenTrue: fv!value >= 80,
      then: "#ff0500",
      
      default: "#afafaf"
    )

  • For sure that is a better solution with a!match() (for those on Appian 22.1 or newer), this was a weekend/internal/concept project for fun, quick build back a few years ago Upside down

Reply Children
No Data