Dr. Evil Posted October 18, 2020 Posted October 18, 2020 Hello and thank you peeking at my question... I can not seem to get my scripts to behave in a way that is expected, driving me batty! OBJECTIVE :: Fix Popover Open button so that when clicked popover opens, and when clicked again the popover closes. CURRENT ERROR :: At the moment when Popover button is clicked the popover opens, and then just reopens when clicked again, which is not the desired behavior. NOTES :: To help illustrate my issue, I've attached some files. THANK YOU kindly for your time and help! 🤠 sample_popover_open_close.fmp12 I've been able to get the highlight open/close to work outside of this demo file. But NOT when I have a "clear highlight" script trigger attached popover. I need a "clear highlight" script trigger for when User clicks anywhere other then the button and closes the popover. Record should only highlight when popover is open.
Fitch Posted October 19, 2020 Posted October 19, 2020 Remove the script trigger from the popover, and instead add this to the top of the popover open script: If[ FOODS::__pk_FOODS = FOODS::highlightGlobal ] Set Field[ FOODS::highlightGlobal ; "" ] Exit Script End If
Dr. Evil Posted October 19, 2020 Author Posted October 19, 2020 (edited) Gottcha, Fitch!... in the working file outside this demo, I'm using the if [], and that works fine as long as the User presses the script button. But User is highly likely not to only click the button, and more likely to just randomly click elsewhere on the layout... which will cause the popover to close while leaving a highlighted state active. I've updated the file and screenshot of script: sample_popover_open_close_2.fmp12 Edited October 19, 2020 by Dr. Evil
LaRetta Posted October 20, 2020 Posted October 20, 2020 (edited) On 10/18/2020 at 7:50 PM, Dr. Evil said: randomly click elsewhere on the layout... which will cause the popover to close while leaving a highlighted state active. You almost had it ... since you want to clear the global value (that controls the conditional formatting), you must use OOExit script trigger on the popover. Attached is how I'd modify your example. Of course there are other ways to approach the problem ... there are always alternatives. 😁 sample_popover_open_close_MOD.fmp12 Edited October 20, 2020 by LaRetta
Dr. Evil Posted October 20, 2020 Author Posted October 20, 2020 ☺️ Thank you LaRetta!.. this functions, but still when User clicks say, the Burrito item, popup appears, if the User clicks the burrito again, it should close, but at the moment it pops back open. I'm hoping for the effect of it collapsing open when clicks, and collapse down with clicked again. This is normal behavior for a popover to collapse out when click, and collapse down when clicked again. BUT since it is being activated via script, the natural behavior has changed. I apologize for my awkward type up description, i often wish some in-person work could be done.
comment Posted October 22, 2020 Posted October 22, 2020 (edited) I don't think it's possible to have exactly what you ask for; however, there are two almost perfect workarounds. 1. Why I believe it's impossible It is imposible because of the order in which actions happen. When a popover is open, and you click anywhere outside of the popover, two things will happen: first, the popover will close; then - and only then - the click will be executed: if you clicked on the layout's background, the popover will close and the record will be committed; if you clicked in a field, the popover will close and the field will be activated; if you clicked on a button, the popover will close and the button will be fired. What this means is that by the time the button's action is executed, the popover is already closed. The button has no way of telling the difference between being clicked the first time and the second time; in both scenarios, it will open the popover. 2. The workarounds There is an exception to the rule above, and that is clicking the popover button itself. Here, clicking the button a second time will close the popover and nothing else. So the simplest way to achieve toggling the popover's state is to use the popover's button instead of your own - and compromise on the placement of the popover relative to the button: it could be upward or downward from the middle of the button or rightward/leftward from the left/right edge of the button. The other workaround is to cancel the second part of the action by attaching an OnObjectExit script trigger to the popover: Close Popover Exit Script [ Result: False ] This will make a second click on the button close the popover and nothing else - resulting in an effective toggle. However doing so has a side effect: if you click in a field, the popover will close - but the field will not be activated. Instead, the focus will pass to the popover's button (which could be hidden to minimize the effect of this). Edited October 22, 2020 by comment 1
Dr. Evil Posted October 22, 2020 Author Posted October 22, 2020 Comment, I enjoyed this educational read, thank you for taking the time to lay it out!
Recommended Posts
This topic is 1503 days old. Please don't post here. Open a new topic instead.
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now