We are celebrating the 10-year anniversary of the Alteryx Community! Learn more and join in on the fun here.
Start Free Trial

Alteryx Designer Desktop Discussions

Find answers, ask questions, and share expertise about Alteryx Designer Desktop and Intelligence Suite.

about BindUserDataChanged method or registerpropertylistener to control html GUI element ?

flying008
15 - Aurora

Dear all & @rpaugh , hello! 

 

1- How to use the BindUserDataChanged method to control the display and hide properties of document.getElementById("Base") according to the value of showMap? To achieve the effect of real-time update.

 

2- If the checkbox is selected, the TextBox is displayed. If the checkbox is not selected, the TextBox is hidden. It is necessary to achieve a real-time WYSIWYG effect.

 

3- Please help me fix the code, thank you!

 

 

 

<!DOCTYPE html>
<html>
<head>
// ***some code
    <form>
        <div id="showMapUid">
            <br />
            <ayx data-ui-props='{type:"CheckBox", widgetId:"showMapUid", label:"XMSG("Rest GUI")"}'></ayx>
        </div>
        <fieldset id="Base">
            <ayx data-ui-props='{type:"TextBox", widgetId:"Mini"}' data-item-props='{dataName: "Mini"}'></ayx>
        </fieldset>
    </form>

    <script type="text/javascript">
        window.Alteryx.Gui.BeforeLoad = function (manager, AlteryxDataItems, json) {
            var showMap = new AlteryxDataItems.SimpleBool('showMapUid');
            manager.bindDataItemToWidget(showMap, 'showMapUid');
            manager.addDataItem(showMap);
            showMap.setValue(0);
            
            document.getElementById('showMapUid').onclick = function (uiValue) {
                showMap.setValue(uiValue.target.value);
            };
        }
        
        window.Alteryx.Gui.AfterLoad = function (manager, AlteryxDataItems) {
            var showMap = manager.getDataItem('showMapUid');
            document.getElementById('showMapUid').value = showMap.getValue();
            //How to use the BindUserDataChanged method to control the display and hide properties of document.getElementById("Base") according to the value of showMap. To achieve the effect of real-time update.
            // the following code is invalid:
            //Invalid const showMapChanged = (v) => {
            // if(v) {
            // document.getElementById("Base").classList.remove("hide");
            // } else {
            // document.getElementById("Base").classList.add("hide");
            // }
            //};
            //showMap.BindUserDataChanged(showMapChanged);
        }
    </script>
</body>
</html>
        

 

 

 

 

2 REPLIES 2
Raj
16 - Nebula

@flying008 you can try this

 

<!DOCTYPE html>
<html>
<head>
<!-- ***some code -->
</head>
<body>
<form>
<div id="showMapUid">
<br />
<ayx data-ui-props='{type:"CheckBox", widgetId:"showMapUid", label:"XMSG("Rest GUI")"}'></ayx>
</div>
<fieldset id="Base" class="hide">
<ayx data-ui-props='{type:"TextBox", widgetId:"Mini"}' data-item-props='{dataName: "Mini"}'></ayx>
</fieldset>
</form>

<script type="text/javascript">
window.Alteryx.Gui.BeforeLoad = function (manager, AlteryxDataItems, json) {
var showMap = new AlteryxDataItems.SimpleBool('showMapUid');
manager.bindDataItemToWidget(showMap, 'showMapUid');
manager.addDataItem(showMap);
showMap.setValue(0);
};

window.Alteryx.Gui.AfterLoad = function (manager, AlteryxDataItems) {
var showMap = manager.getDataItem('showMapUid');
document.getElementById('showMapUid').onclick = function (uiValue) {
var isChecked = uiValue.target.checked;
showMap.setValue(isChecked);
};

// Function to control the display and hide properties of the fieldset based on the value of showMap
const showMapChanged = (v) => {
if (v) {
document.getElementById("Base").classList.remove("hide");
} else {
document.getElementById("Base").classList.add("hide");
}
};

showMap.bindUserDataChanged(showMapChanged);
showMapChanged(showMap.getValue()); // Initial call to set the visibility based on the initial value
};
</script>

<style>
.hide {
display: none;
}
</style>
</body>
</html>

flying008
15 - Aurora

Hi, @Raj 

 

Thank you for your reply ! but nothing is happen, the text-box always hide even checked the checkbox, and give the error after run:

 

TypeError: '<' not supported between instances of 'int' and 'NoneType'

 

 

And we want to get the effect.

录制_2024_06_05_08_58_12_578.gif

 

Labels
Top Solution Authors