Page 2 of 3
Re: Subfile Fold, Again
Posted: Fri May 02, 2014 4:44 pm
by Scott Klement
Depends on the type of widget. I just re-read this thread, and I'm thinking that you're probably working with a CSS Button. Is that true?
If so, I wouldn't use pui.set, I'd use applyProperty, like this:
Code: Select all
applyProperty("btnExpand", "value", "F8 - Close");
applyProperty("btnExpand", "icon", "up arrow");
Re: Subfile Fold, Again
Posted: Fri May 02, 2014 4:51 pm
by DaveLClarkI
That is one of the iterations I tried. The grid opens and closes without errors. But, the button text and icon doesn't change. I figured it was either because those properties were bound to RPG fields or because the button needs to be redrawn.
Code: Select all
var grid = getObj("ACTMVTRS").grid; // get pointer to grid object
grid.toggle(); // toggle the grid rows open or closed
if (grid.expanded) // if grid now expanded
{
applyProperty("btnExpand", "value", "F8 - Close");
applyProperty("btnExpand", "icon", "up arrow");
}
else // else, grid is collapsed
{
applyProperty("btnExpand", "value", "F8 - Open");
applyProperty("btnExpand", "icon", "down arrow");
}
Re: Subfile Fold, Again
Posted: Fri May 02, 2014 4:57 pm
by Scott Klement
Hmmm.... it could be that I'm wrong, then. If you want to force the widget to re-render, you can do that by changing it's field type, such as:
Code: Select all
applyProperty("btnExpand", "field type", "css button");
Most of the widgets work that way, they draw when their "field type" is changed, so changing it (even to the same value it was already set to) will cause it to re-draw.
So you can try that... but it could very well be that I'm wrong about something in the way this works in a CSS button. If setting the field type doesn't help, I may need to create a test case to try it out.
Re: Subfile Fold, Again
Posted: Fri May 02, 2014 5:19 pm
by DaveLClarkI
OK, I put that widget redraw code in there but the button text and icon still don't change. So, it must be the fact that those properties are bound to RPG fields which prevents them from being changed directly via applyProperty(). Anything else?
Re: Subfile Fold, Again
Posted: Fri May 02, 2014 5:34 pm
by Scott Klement
Hmmm... I set up a test case, and it works fine for me.
Please make sure you are using the button's "id" property on the applyProperty() call (not the bound field name). Also, it's case-sensitive, so be sure the upper/lower case matches exactly.
Re: Subfile Fold, Again
Posted: Fri May 02, 2014 5:37 pm
by DaveLClarkI
mpilo0 wrote:I've had the same problem on other properties I wanted to set in Javascript. The best way that i have found to do this is to simply add a hidden textbox/checkbox to your screen where you store the value giving the textbox/checkbox the same binding field as the property.
mpilo0, I tried your suggestion and that is not working, either. I created two hidden text boxes and bound their "value" property each to the same RPG fields as the button in question. Then I set their value instead the button properties and do the redraw just for good measure. No dice.
Code: Select all
var grid = getObj("ACTMVTRS").grid; // get pointer to grid object
grid.toggle(); // toggle the grid rows open or closed
if (grid.expanded === true) // if grid now expanded
{
//applyProperty("btnExpand", "value", "F8 - Close");
//applyProperty("btnExpand", "icon", "up arrow");
pui.set("txtF8FOLDTEXT", 'F8 - Close');
pui.set("txtF8FOLDICON", 'up arow');
}
else // else, grid is collapsed
{
//applyProperty("btnExpand", "value", "F8 - Open");
//applyProperty("btnExpand", "icon", "down arrow");
pui.set("txtF8FOLDTEXT", 'F8 - Open');
pui.set("txtF8FOLDICON", 'down arow');
}
applyProperty("btnExpand", "field type", "css button"); // redraw
Re: Subfile Fold, Again
Posted: Fri May 02, 2014 5:49 pm
by DaveLClarkI
Scott Klement wrote:Hmmm... I set up a test case, and it works fine for me.
Please make sure you are using the button's "id" property on the applyProperty() call (not the bound field name). Also, it's case-sensitive, so be sure the upper/lower case matches exactly.
I did a copy-n-paste from the id field of the button into the JavaScript code for the onclick event of that same button. Still not working.
Re: Subfile Fold, Again
Posted: Mon May 05, 2014 1:16 pm
by DaveLClarkI
I found the problem... I put alerts in the code for the grid.expanded property and it is coming up "undefined" so that explains why the button text is not changing -- because the answer to the if-condition is always false.
What is the correct property name? Thanks.
Re: Subfile Fold, Again
Posted: Mon May 05, 2014 2:57 pm
by DaveLClarkI
Well, I ran it through Firebug to look at the properties on the grid and there isn't an exposed property that seems to fit the bill. There are several obfuscated property names with true/false values but, not knowing which one, I figured that is what you're going to tell me -- that the needed property is not exposed and would have to be done in a future release.
In the meantime, I created a workaround to capture the indicator coming from RPG in my screen's onload event:
Code: Select all
window.WISEsfl_Expanded = (pui.get('txtExpanded') == 'true');
Then, in my button's onclick event I did the following and all is working as desired.
Code: Select all
var obj = getObj("ACTMVTRS").grid; // get pointer to grid object
if (window.WISEsfl_Expanded === true) // if grid is expanded
{
obj.collapse(); // then collapse the grid rows
window.WISEsfl_Expanded = false; // reverse my internal flag
applyProperty("btnExpand", "value", "F8 - Open");
applyProperty("btnExpand", "icon", "down arrow");
}
else // else, grid is collapsed
{
obj.expand(); // so expand the grid rows
window.WISEsfl_Expanded = true; // reverse my internal flag
applyProperty("btnExpand", "value", "F8 - Close");
applyProperty("btnExpand", "icon", "up arrow");
}
Re: Subfile Fold, Again
Posted: Mon May 05, 2014 10:33 pm
by Scott Klement
That's very strange... I can see the "expanded" property in Firebug...
- expanded.png (8.83 KiB) Viewed 717 times
Not sure why it'd be different for you? I'm running Profound UI 4.8.4.