Row action conditional rendering not showing action when it meets condition

  • 2
  • Problem
  • Updated 3 years ago
  • Acknowledged
When a row action is configured with conditional rendering, on initial page display if the condition is TRUE, the action is not displayed.

Steps to reproduce:
1) Create page from XML below
2) Preview page

Expected Behavior
"Flag for delete" row action should be visible

Actual Behavior
"Flag for delete" is not visible

Notes:
1) When configuring the global action "My Global Action" with the same condition, it displays as expected
2) If you change the condition on the row action to "!='Bar'" the row action appears on initial page display

Sample Page XML
<skuidpage unsavedchangeswarning="yes" personalizationmode="server" showsidebar="true" showheader="true" tabtooverride="Account">   <models>
      <model id="Account" limit="100" query="true" createrowifnonefound="false" sobject="Account" adapter="" type="">
         <fields>
            <field id="Name"/>
            <field id="CreatedDate"/>
         </fields>
         <conditions/>
         <actions/>
      </model>
      <model id="Tracker" limit="1" query="false" createrowifnonefound="true" adapter="" type="" sobject="Account">
         <fields>
            <field id="Mode" uionly="true" displaytype="TEXT" label="Mode" defaultValue="Bar"/>
         </fields>
         <conditions/>
         <actions/>
      </model>
   </models>
   <components>
      <pagetitle model="Account" uniqueid="sk-2Q5m2_-66">
         <maintitle>Mode Is {{$Model.Tracker.data.0.Mode}}</maintitle>
         <subtitle>
            <template>Home</template>
         </subtitle>
         <actions>
            <action type="multi" label="Update to Foo">
               <actions>
                  <action type="updateRow" fieldmodel="Tracker" field="Mode" enclosevalueinquotes="true" value="Foo"/>
               </actions>
            </action>
            <action type="multi" label="Update to Bar">
               <actions>
                  <action type="updateRow" fieldmodel="Tracker" field="Mode" enclosevalueinquotes="true" value="Bar"/>
               </actions>
            </action>
         </actions>
      </pagetitle>
      <skootable showconditions="true" showsavecancel="false" searchmethod="server" searchbox="false" showexportbuttons="false" pagesize="10" createrecords="false" model="Account" mode="edit" uniqueid="sk-2Q5m2_-67" emptysearchbehavior="query">
         <fields>
            <field id="Name" allowordering="true" valuehalign="" type=""/>
            <field id="CreatedDate" allowordering="true" valuehalign="" type=""/>
         </fields>
         <rowactions>
            <action type="delete">
               <renderconditions logictype="and">
                  <rendercondition type="fieldvalue" operator="=" enclosevalueinquotes="true" fieldmodel="Tracker" sourcetype="fieldvalue" nosourcerowbehavior="skipandnorender" field="Mode" value="Bar"/>
               </renderconditions>
            </action>
         </rowactions>
         <massactions usefirstitemasdefault="true"/>
         <views>
            <view type="standard"/>
         </views>
         <actions defaultlabel="Global Actions" defaulticon="sk-icon-magic" usefirstitemasdefault="true">
            <action type="multi" label="My Global Action" icon="sk-icon-magic">
               <renderconditions logictype="and">
                  <rendercondition type="fieldvalue" operator="=" enclosevalueinquotes="true" fieldmodel="Tracker" sourcetype="fieldvalue" nosourcerowbehavior="skipandnorender" field="Mode" value="Bar"/>
               </renderconditions>
               <actions/>
            </action>
         </actions>
         <searchfields/>
      </skootable>
   </components>
   <resources>
      <labels/>
      <css/>
      <javascript/>
   </resources>
   <styles>
      <styleitem type="background" bgtype="none"/>
   </styles>
</skuidpage>
Photo of Barry Schnell

Barry Schnell, Champion

  • 18,076 Points 10k badge 2x thumb

Posted 3 years ago

  • 2
Photo of JD Bell

JD Bell, Senior Product Engineer

  • 2,996 Points 2k badge 2x thumb
This one took some research.

In the end, the reason you are seeing this behavior is because both of your models are built using the same SObject. Skuid, recognizing that both the referenced model and the context model are built on the same object, is being over-aggressive about optimization and choosing to use the context row (from your table) rather than traversing your other model to get a different row. Obviously, though, it should do a few more checks to make sure that this is appropriate.

If you had built your "Tracker" model on a different SObject, this issue wouldn't have presented itself.

I've logged it in our bug tracker and we'll address it in a future update.
Photo of Barry Schnell

Barry Schnell, Champion

  • 18,076 Points 10k badge 2x thumb
Thanks JD!
Photo of Ben Hubbard

Ben Hubbard, Employee

  • 12,490 Points 10k badge 2x thumb
This fix has been made and is scheduled for Banzai Update 9.
Photo of Barry Schnell

Barry Schnell, Champion

  • 18,076 Points 10k badge 2x thumb
Thank you!
Photo of Ben Hubbard

Ben Hubbard, Employee

  • 12,490 Points 10k badge 2x thumb
This fix is now available from skuid.com/releases in either the Banzai Update 9 release or the Rockaway Release.
Photo of Barry Schnell

Barry Schnell, Champion

  • 18,076 Points 10k badge 2x thumb
Tested and confirmed with Skuid 8.8.  Thank you!