Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

How do I keep a numeric confiforms field from being set to less than zero?

Brian Robbins
Contributor
November 14, 2024

Part of a task assignment rotation program that I'm building includes the ability to add a "skip".  A technician can still be in the rotation to be assigned a task. assign_task_skips.png

 

When the Assign Task button is pressed, the Skips field is decremented by 1. Obviously, this should only happen if the value of the Skips field is greater than zero. 

 

I have a Rule for Field Definition set up, but cannot get it to fire when the form updates. 

 

2 answers

1 accepted

1 vote
Answer accepted
Alex Medved _ConfiForms_
Community Champion
November 14, 2024

Hi @Brian Robbins 

Something like this maybe

<p><br /></p><ac:structured-macro ac:name="confiform" ac:schema-version="1" ac:macro-id="a5e261dc-0998-4bc3-bd92-3c4bd1b621b0"><ac:parameter ac:name="formName">form</ac:parameter><ac:rich-text-body>
<p><ac:structured-macro ac:name="confiform-field-definition" ac:schema-version="1" ac:macro-id="85a72a26-0b76-40e0-9ac6-4fdd339f3bda"><ac:parameter ac:name="fieldName">RASTechSkips</ac:parameter><ac:parameter ac:name="fieldLabel">Skips</ac:parameter><ac:parameter ac:name="type">number</ac:parameter><ac:parameter ac:name="separator">true</ac:parameter></ac:structured-macro><ac:structured-macro ac:name="confiform-field-definition" ac:schema-version="1" ac:macro-id="5a24f515-a16c-4f83-be53-1bf2cd974ce1"><ac:parameter ac:name="fieldName">AssignTaskButton</ac:parameter><ac:parameter ac:name="fieldLabel">Assign Task</ac:parameter><ac:parameter ac:name="extras">RASTechLastAssigned=[entry._now]&amp;RASTechSkips=(IF([entry.RASTechSkips]&lt;1, 0, ([entry.RASTechSkips]-1)))</ac:parameter><ac:parameter ac:name="type">action_button</ac:parameter></ac:structured-macro></p>
<p><ac:structured-macro ac:name="confiform-field-definition" ac:schema-version="1" ac:macro-id="b79061da-c9f2-43d9-aa74-0c3d0afc22fd"><ac:parameter ac:name="fieldName">RASTechLastAssigned</ac:parameter><ac:parameter ac:name="fieldLabel">RASTechLastAssigned</ac:parameter><ac:parameter ac:name="type">datetime</ac:parameter></ac:structured-macro> <ac:structured-macro ac:name="confiform-field-definition-rules" ac:schema-version="1" ac:macro-id="375e6803-a2a8-4d91-a55d-bf676a4ebf68"><ac:parameter ac:name="fieldName">RASTechLastAssigned</ac:parameter><ac:parameter ac:name="action">Hide field</ac:parameter></ac:structured-macro></p><ac:structured-macro ac:name="confiform-ifttt" ac:schema-version="1" ac:macro-id="09ddecb3-3215-4738-afd2-4522503d4e96"><ac:parameter ac:name="condition">RASTechSkips:&lt;0</ac:parameter><ac:parameter ac:name="action">Create ConfiForms Entry</ac:parameter><ac:parameter ac:name="event">onCreated</ac:parameter><ac:parameter ac:name="title">entryId=[entry.id]&amp;RASTechSkips=0</ac:parameter><ac:rich-text-body>
<p><br /></p></ac:rich-text-body></ac:structured-macro>
<p><br /></p><ac:structured-macro ac:name="confiform-entry-register" ac:schema-version="1" ac:macro-id="4ed1ee0f-4bc4-4146-9806-fe9f8e8f0077"><ac:parameter ac:name="type">Embedded</ac:parameter><ac:rich-text-body>
<p><br /></p></ac:rich-text-body></ac:structured-macro>
<p><br /></p></ac:rich-text-body></ac:structured-macro>
<p><br /></p><ac:structured-macro ac:name="confiform-table" ac:schema-version="1" ac:macro-id="8fb32a27-ee57-487d-a590-863334128e7b"><ac:parameter ac:name="formName">form</ac:parameter><ac:rich-text-body>
<p><br /></p></ac:rich-text-body></ac:structured-macro>
<p><br /></p>

But I would actually move the assignment for the RASTechLastAssigned as a ConfiForms IFTTT macro to update this field ONLY when the RASTechSkips field value changes... as otherwise it will change on each click on the "assign task" button

Alex

Brian Robbins
Contributor
November 15, 2024

Thanks Alex, I'll take a look!

 

The Last Assigned field is supposed to be updated on each click of the assign task button. The view for those in office is sorted by last assigned, ascending, in order to keep the tech with the longest duration between assigned tasks at the top.

Brian Robbins
Contributor
November 15, 2024

Brillian @Alex Medved _ConfiForms_  worked like a charm. Didn't know you could embed an IF statement into the action!

Alex Medved _ConfiForms_
Community Champion
November 15, 2024

You see.. the action will still run... adding the IF into the action itself is not practical

That is why I suggested to move RASTechLastAssigned value update to IFTTT that you can make conditional

hasChanged(RASTechSkips):true
Like Brian Robbins likes this
0 votes
Brian Robbins
Contributor
November 14, 2024
Configuration:
<ac:structured-macro ac:macro-id="bc6f7c03-94c0-43d2-abee-dbe22403cf34" ac:name="confiform-field-definition" ac:schema-version="1">
<ac:parameter ac:name="fieldName">AssignTaskButton</ac:parameter>
<ac:parameter ac:name="fieldLabel">Assign Task</ac:parameter>
<ac:parameter ac:name="extras">RASTechLastAssigned=[entry._now]&amp;RASTechSkips=([entry.RASTechSkips]-1)</ac:parameter>
<ac:parameter ac:name="type">action_button</ac:parameter>
</ac:structured-macro>

<ac:structured-macro ac:macro-id="71dbd978-83a6-4950-91e6-808bf89777c0" ac:name="confiform-field-definition-rules" ac:schema-version="1">
<ac:parameter ac:name="condition">[entry.RASTechSkips]:&lt;0</ac:parameter>
<ac:parameter ac:name="noPropagation">true</ac:parameter>
<ac:parameter ac:name="values">[entry.RASTechSkips]=0</ac:parameter>
<ac:parameter ac:name="action">Set value</ac:parameter>
<ac:parameter ac:name="onUserActionOnly">true</ac:parameter>
</ac:structured-macro>

<ac:structured-macro ac:macro-id="85a72a26-0b76-40e0-9ac6-4fdd339f3bda" ac:name="confiform-field-definition" ac:schema-version="1">
<ac:parameter ac:name="fieldName">RASTechSkips</ac:parameter>
<ac:parameter ac:name="fieldLabel">Skips</ac:parameter>
<ac:parameter ac:name="type">number</ac:parameter>
<ac:parameter ac:name="separator">true</ac:parameter>
</ac:structured-macro>

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events