Support for Nested Conditional Logic?

advanced-prototyping

#1

It looks like the conditional logic system in Axure 7 Beta can theoretically support nested conditional logic, but I can’t seem to be able to get an if statement to indent. Am I doing something wrong, or is this feature still in progress? Here’s a screenshot:

What I’m attempting to do is create a fully-automated breadcrumb system that the community can use that supports multiple levels just with a bit of page naming convention magic. Here’s how the sitemap would look:

1.0.0 Dashboard Summary1.1.0 Item Detail
[INDENT=2]1.1.1 Some Widget Detail
1.1.2 Another Widget Detail[/INDENT]
1.2.0 Another Item Details
2.0.0 Visit Status

Then, I would have one Dynamic Panel for L1, L2, and L3, each containing a state for each possible page at a given level regardless of who its parent is. Then, nested conditional logic handles building the breadcrumb one level at a time as follows:

If [[PageName.chartAt(0)]]=1 (We’re at least at L1 - the Dashboard)set BreadcrumbDynamicPanelL1 to state 1 (Set L1 DP to show “Dashboard”, and drill in further)
if [[PageName.charAt(2]]=0 (We’re at the root of L1, so stop)
[INDENT=2]end[/INDENT]
else if [[PageName.chartAt(2)=1 (We’re at L2 of Dashboard and into Sub-level 1)
[INDENT=2]set BreadcrumbDynamicPanelL2 to state 1 (Set L2 DP to show “Item Detail”, and drill in further)
If [[PageName.charAt(4]]=0 (We’re at the root of L2, so stop)[/INDENT]
[INDENT=3]end[/INDENT]
[INDENT=2]else if [[PageName.charAt(4]]=1 (We’re at L3 under Dashbord Sub-level 1)[/INDENT]
[INDENT=3]set BreadcrumbDynamicPanelL3 to state 1 (Set L3 DP to show “Some Widget Detail” and stop)
end[/INDENT]
[INDENT=2]else if [[PageName.charAt(4]]=2 (We’re at L3 under Dashbord Sub-level 1)set BreadcrumbDynamicPanelL3 to state 2 (Set L3 DP to show “Another Widget Detail” and stop)
end
[/INDENT]
else if [[PageName.chartAt(2)=2 (We’re at L2 of Dashboard and into Sub-level 2)
[INDENT=2]set BreadcrumbDynamicPanelL2 to state 1 (Set L2 DP to show “Item Detail”, and drill in further)
If [[PageName.charAt(4]]=0 (We’re at the root of L2, so stop)[/INDENT]
[INDENT=3]end[/INDENT]
[INDENT=2]else if [[PageName.charAt(4]]=1 (We’re at L3 under Dashbord Sub-level 2)[/INDENT]
[INDENT=3]set BreadcrumbDynamicPanelL3 to state 1 (Set L3 DP to show “Some Widget Detail” and stop)
end[/INDENT]
[INDENT=2]else if [[PageName.charAt(4]]=2 (We’re at L3 under Dashbord Sub-level 2)set BreadcrumbDynamicPanelL3 to state 2 (Set L3 DP to show “Another Widget Detail” and stop)
end
[/INDENT]
else if [[PageName.chartAt(0)]]=2 (We’re at least at L1 - Visit Status)

… continues with basically the same pattern from above for each L1 page …

So, using nested conditional logic would allow total automation of the breadcrumb setting rules on a per-level basis, and be pretty much completely automated. The key to all of this is being able to have one set of if’s that are only reached if its parent ifs also pass.

Thoughts?


#2

Hello r0tt3n,

maybe it may help you to use multiple conditions.

In condition builder you can use plus sign to add conditions.
Switching “satisfy all” and “satisfy any” means AND respectively OR.


Regards,
Ben


#3

Hello r0tt3n,

maybe it may help you to use multiple conditions.

In condition builder you can use plus sign to add conditions.
Switching “satisfy all” and “satisfy any” means AND respectively OR.


Regards,
Ben


#4

Please add nested logic!
My workaround is to “trigger” a new event on a Dynamic Panel so I can use another level of conditions. It is very cumbersome to do this for a simple programming structure.


#5

Nested case logic is desperately needed. Axure seems to get slower when the level of complexity of the case logic increases. I have had to created so many conditional statements over and over because they vary on more than one condition… having a top level conditional logic would be much more efficient.


#6

Has this feature been added yet? I just started learning Axure and was needing this feature on my first project. I had to build a work-around as I couldn’t figure out how to do nested if-logic. Incase the featuer is there could you point the direction to it.


#7

AFAIK, the nearly-final release of Axure RP 7.0 doesn’t include nested conditionals. Sad pandas all around. Only work-around is to have hidden dynamic panels with 2 states and on state switch, do the rest of the nested if. Very clunky and untidy and hard to follow if you’re in a shared/collaborative environment.


#8

Bumping this topic as nested conditional logic would be very benefitial to many of my projects. Using the work around above doesn’t work when I use multiple master panels on a page that have dynamic panels within them.

Axure your help on other work arounds to this would be greatly appreciated at this point.


#9

Hi mrwhoruhe and others,

I will certainly ping our product management team regarding the continued interest in having nested conditionals.

More specifically in regards to mrwhoruhe’s latest comment, my colleagues and I would be happy to work with you on possible work arounds. But at this level of complexity I’m not really sure there’s much help that can be offered without seeing your file and having a detailed description of your design goals.

You are welcome to post that here on the forum, but the best way forward is probably just to write in to:

support at axure dot com

I’m hopeful we’d find a solution for you. But if not, it would still provide us valuable information regarding use cases that we’d want to support in the future.

Thanks again!


#10

we all are looking forward for a nice solution.


#11

Useful will be write your own code into the “Description” panel (and rename it ^^).
Or atlast have possibility select the AND/OR satisfy on selected conditions. So you can have then something like:

If this is (this OR this) AND (this OR this)
do something

usefull will be too the “nested” condition as well :] (and maybe better, cause this conditions you will evade with nested conditions :])


#12

looking forward :slight_smile:


#13

Several times I have also run into the need for a statement such as: If (x or y) and (a or b) then do ABC. Any progress on a feature to support this behavior in the condition builder? My thought is to have an optional switch that allows the user to add additional layers of conditions in the Conditional Builder.


#14

Hi LogCastle,

The feature request has been filed with product management as Tuomas mentioned, but it looks like we’re currently working on developing and releasing other features first. We should be able to come back to and work on this request when those are done, but the other features should be useful to you guys in the meantime (once they’re released, of course) :).


#15

Will this be in version 8?


#16

Hi Elvos,

It won’t be in the initial beta, but we will be actively developing and adding features before the final release. I’ll make sure it’s on the list for evaluation for possible inclusion.


#17

A bump for nested conditional logic.
It would make things so much less complicated.


#18

Agreed, please add nested conditional logic!


#19

PLEASE add conditional logic


#20

You can do quite a bit of conditional nested logic now, assuming the attributes you want are available via properties, functions, or local variables by using Boolean operators in an expression in the condition builder and equating it to true.

For example, if you wanted to say…

(If text of foo is “x” OR text of foo is “y”) AND (text of sum is greater than 0 OR selected of check equals true)

…choose “value” in the leftmost dropdown in the condition builder, hit the fx button for the value, and fill it out like so:


Then just make sure you are equating this expression to the value true:


This is one of the reasons I want all attributes of everything (e.g., states of dynamic panels, visibility of objects…) available in the fx panel!