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
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" ) ) ) ) ) )
Chris said: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
Thank you, Chris
Thank you Mike Schmitt
Could not display interface. Please check definition and inputs. Interface Definition: Expression evaluation error at function 'trunc' parameter 1 [line 16]: Invalid division: Denominator may not be zero (0)
it is not working its giving me this error
The error is pretty clear. What problem are you facing in resolving this?