This is based on findings of Andrew N from https://community.skuid.com/t/automatically-refresh-render-conditions-on-component?utm_so….
When a queue has a render condition of “Model Property” set to “Has Data Rows”, the queue does not update it’s visibility as data in the model changes.
Notes
- Using Brooklyn 9.3.1
- When the queue is hidden, using the render API on the component does not redraw the component
- If the queue is visible and you call the render API on it, the editor-contents is removed but the queue header remains.
Steps to reproduce:
- Create page using XML below
- Preview page
- Click “Empty Accounts” button
Expected Behavior = Actual Behavior
Queue and table are removed from page
- Click “Load Accounts”
Expected Behavior
Queue and Table are visible
Actual Behavior
Queue is not visible, table is
- In page composer, set “Accounts” model to NOT “Load Model data on page load” and save
- Preview
Expected Behavior = Actual Behavior
Queue and Table are NOT visible
- Click “Load Accounts”
Expected Behavior
Queue and Table are visible
Actual Behavior
Queue is NOT visible, table is
Sample Page XML
<skuidpage unsavedchangeswarning="yes" personalizationmode="server" useviewportmeta="true" showsidebar="true" showheader="true" tabtooverride="Account"> <models> <model id="Account" limit="100" query="true" createrowifnonefound="false" datasource="salesforce" sobject="Account" type=""> <fields> <field id="Name"/> <field id="CreatedDate"/> </fields> <conditions/> <actions/> </model> </models> <components> <pagetitle model="Account" uniqueid="sk-2MgEto-87"> <maintitle> <template>{{Model.labelPlural}}</template> </maintitle> <subtitle> <template>Home</template> </subtitle> <actions> <action type="multi" label="Load Accounts"> <actions> <action type="requeryModels" behavior="standard"> <models> <model>Account</model> </models> </action> </actions> </action> <action type="multi" label="Empty Accounts"> <actions> <action type="emptyModelData"> <models> <model>Account</model> </models> </action> </actions> </action> <action type="multi" label="Add New Record to Accounts"> <actions> <action type="createRow" model="Account" appendorprepend="prepend" defaultmodefornewitems="edit" affectedrows="all"/> </actions> </action> </actions> </pagetitle> <grid uniqueid="sk-2OuP5_-111"> <divisions> <division behavior="flex" minwidth="100px" ratio="1"> <components> <queue tagrendertype="template" searchbox="true" tokenizesearch="true" showsearchbydefault="true" uniqueid="sk-2MgHYI-106" model="Account" title="Accounts"> <rendertemplate>{{Name}}</rendertemplate> <interactions> <interaction type="tap"> <action type="updateIncludePanel" querystring="id={{Id}}"/> </interaction> </interactions> <renderconditions logictype="and"> <rendercondition type="fieldvalue" enclosevalueinquotes="true" fieldmodel="Account" sourcetype="modelproperty" nosourcerowbehavior="deactivate" sourceproperty="hasRows"/> </renderconditions> </queue> </components> </division> <division behavior="flex" verticalalign="top" minwidth="100px" ratio="1"> <components> <skootable showconditions="true" showsavecancel="false" searchmethod="server" searchbox="true" showexportbuttons="false" pagesize="10" createrecords="true" model="Account" mode="read" allowcolumnreordering="true" uniqueid="sk-2MgEto-88"> <fields> <field id="Name" hideable="true" allowordering="true" uniqueid="fi-2MgE0P-399" valuehalign="" type=""/> </fields> <rowactions/> <massactions usefirstitemasdefault="true"/> <views> <view type="standard"/> </views> <renderconditions logictype="and"> <rendercondition type="fieldvalue" enclosevalueinquotes="true" fieldmodel="Account" sourcetype="modelproperty" nosourcerowbehavior="deactivate" sourceproperty="hasRows"/> </renderconditions> </skootable> </components> </division> </divisions> <styles> <styleitem type="background" bgtype="none"/> </styles> </grid> </components> <resources> <labels/> <css/> <javascript/> </resources> <styles> <styleitem type="background" bgtype="none"/> </styles> </skuidpage>