Model condition based on existence in another model

  • 1
  • Problem
  • Updated 1 year ago
  • In Progress
This is on the Skuid Platform (Brooklyn)
I have a table based on a model with a condition based on a field in a second model with a condition based on a page parameter.  My goal is to only show rows in the table based on these cascading conditions.  Unfortunately, the condition on the table model never gets applied and I get all rows.  I display a template on the page to show the value in the second model and it is correct.  If I make the the second model UI only and set the field to a constant, the table only shows the rows I want.
It appears that the models aren't loaded in the order that supports this.  I've even tried setting the "Load Model after Page" on the first model hoping the be sure the second model is loaded before attempting to load the first.
Any ideas on what I'm doing wrong or is this not supported?
Photo of Mark Ebersole

Mark Ebersole

  • 570 Points 500 badge 2x thumb

Posted 1 year ago

  • 1
Photo of Stephen Sells

Stephen Sells, Official Rep

  • 16,856 Points 10k badge 2x thumb
In what order are your models being loaded? It seems like the second model would need to be loaded first.

They load based on the position in the models section of the page builder. Top to bottom.

Does that solve your problem?
Photo of Mark Ebersole

Mark Ebersole

  • 570 Points 500 badge 2x thumb
You're right, the second model would need to be loaded first.  Changing position didn't help.  I believe I tried that once before.  In my desired design, I have the second model in a master page and the first model in a child page.  Using that approach I couldn't tell which one would load first so I moved the second model to the child page ahead of the 1st model so I could make sure it was above.  I examined the XML to make sure.
Still doesn't work.
Is there any way to intercept the process with some JS and check how things are being loaded?  I even tried to include an inline snippet to re-query the 1st model but I don't think I have the snippet right as I included an alert which didn't come up.
Photo of Stephen Sells

Stephen Sells, Official Rep

  • 16,856 Points 10k badge 2x thumb
At that point I'd be curious to test model uniqueness. Are the IDs of the model on the child page separate from the IDs of the master page? They would need to be different to have a hope that this would work.
Photo of Mark Ebersole

Mark Ebersole

  • 570 Points 500 badge 2x thumb
They are completely unique
Photo of Stephen Sells

Stephen Sells, Official Rep

  • 16,856 Points 10k badge 2x thumb
Is there an alternative method you could try, like instead of using the page parameters $Param, use $Models?
Photo of Mark Ebersole

Mark Ebersole

  • 570 Points 500 badge 2x thumb
Stephen, not sure what you're getting at here.  I created a simpler page without master page with a UserInfo model reading a record from my AppUser data object where the userID has a condition to =10000.  Then I have a model ControlItem with a condition CompanyID=UserInfo(CompanyID).  I then have a table based on ControlItem.  I also have a template on the page to show the value of CompanyID in the UserInfo model after the page is loaded.  It shows CompanyID=1 but the table shows all companies.

I've included some relevant XML.

<model id="UserInfo" query="true" createrowifnonefound="false" datasource="SOCAdmin" processonclient="true" deferfieldrendering="true" sobject="SOCAuditSupport.AppUser" label="UserInfo" labelplural="AppUsers">
         <fields>
            <field id="CompanyID" accessible="true" createable="true" editable="true" sortable="true" label="CompanyID" displaytype="NUMBER" edmtype="Edm.Int32" required="true" filterable="false" mininputlength="1"/>
            <field id="UserID" accessible="true" createable="true" editable="false" sortable="true" label="UserID" displaytype="NUMBER" edmtype="Edm.Int32" required="true" filterable="false" mininputlength="1"/>
         </fields>
         <conditions>
            <condition type="fieldvalue" value="10000" enclosevalueinquotes="false" field="UserID"/>
         </conditions>
         <actions/>
      </model>
      <model datasource="SOCAdmin" createrowifnonefound="false" query="true" id="ControlItem" label="ControlItem" labelplural="ControlItems" processonclient="true" orderby="CreateDatetime DESC" sobject="SOCAuditSupport.ControlItem">
         <fields>
            <field id="ControlItemName" label="ControlItemName" displaytype="STRING" filterable="true" accessible="true" required="true" edmtype="Edm.String" sortable="true" editable="true" createable="true"/>
            <field id="ControlItemDescr" label="ControlItemDescr" displaytype="STRING" filterable="true" accessible="true" required="true" edmtype="Edm.String" sortable="true" editable="true" createable="true"/>
            <field id="ControlItemCode" label="ControlItemCode" displaytype="STRING" filterable="true" accessible="true" required="true" edmtype="Edm.String" sortable="true" editable="true" createable="true"/>
            <field id="CreateDatetime" label="CreateDatetime" displaytype="DATETIME" filterable="false" accessible="true" required="true" edmtype="Edm.DateTime" sortable="true" editable="true" createable="true"/>
            <field id="EffectiveDate" label="Eff Date" displaytype="DATE" filterable="false" accessible="true" required="true" ogdisplaytype="DATETIME" defaultvaluetype="fieldvalue" edmtype="Edm.DateTime" sortable="true" editable="true" createable="true" overridemetadata="true"/>
            <field id="VersionNumber" label="VersionNumber" displaytype="STRING" filterable="true" accessible="true" required="true" edmtype="Edm.String" sortable="true" editable="true" createable="true"/>
            <field id="CompanyID" label="CompanyID" displaytype="NUMBER" filterable="false" accessible="true" required="true" edmtype="Edm.Int32" sortable="true" editable="true" createable="true"/>
            <field id="ControlItemTypeID" label="ControlItemTypeID" displaytype="NUMBER" filterable="false" accessible="true" required="false" edmtype="Edm.Int32" sortable="true" editable="true" createable="true"/>
            <field id="ControlItemType.ControlItemTypeDescr" label="ControlItemTypeDescr" displaytype="STRING" filterable="true" accessible="true" required="true" edmtype="Edm.String" sortable="true" editable="true" createable="true"/>
            <field id="Company.CompanyName" label="CompanyName" displaytype="STRING" filterable="true" accessible="true" required="true" edmtype="Edm.String" sortable="true" editable="true" createable="true"/>
         </fields>
         <conditions>
            <condition type="fieldvalue" value="" operator="=" enclosevalueinquotes="false" field="CompanyID" name="CompanyID" inactive="true" state="filterableoff"/>
            <condition type="fieldvalue" value="" operator="=" enclosevalueinquotes="false" field="ControlItemTypeID" name="ControlItemTypeID" inactive="true" state="filterableoff"/>
            <condition type="modelmerge" value="" model="UserInfo" operator="=" enclosevalueinquotes="false" mergefield="CompanyID" field="CompanyID" novaluebehavior="deactivate"/>
         </conditions>
         <actions/>
      </model>

<template multiple="false" uniqueid="sk-1-MDs3-207" model="UserInfo">
                     <contents>&lt;span style='color:red'&gt;            CompanyID =  {{CompanyID}}  UserID={{UserID}}</contents>


<skootable uniqueid="sk-1jWE0i-114" model="ControlItem" mode="read" buttonposition="" showerrorsinline="true" showsavecancel="true" pagesize="10" emptysearchbehavior="query" searchbox="true" searchmethod="server" showexportbuttons="false" showconditions="true" createrecords="false" allowcolumnreordering="true">
                     <fields>
                        <field type="" id="Company.CompanyName" uniqueid="fi-27MSA1-153" valuehalign="" allowordering="false" hideable="true">
                           <label>Company</label>
                        </field>
                        <field id="CompanyID" hideable="true" uniqueid="fi-1QWsxJ-192" decimalplaces="" valuehalign="" type=""/>
                        <field type="" id="ControlItemName" uniqueid="fi-1jWKdp-139" valuehalign="" allowordering="true" hideable="true">
                           <label>CI Name</label>
                        </field>
                        <field type="" id="ControlItemDescr" uniqueid="fi-1jWKdp-140" valuehalign="" allowordering="false" columnwidth="250px" hideable="true">
                           <label>CI Descr</label>
                        </field>
                        <field type="" id="ControlItemCode" uniqueid="fi-1jWKdq-141" valuehalign="" allowordering="true" hideable="true">
                           <label>CI Code</label>
                        </field>
                        <field type="" id="CreateDatetime" uniqueid="fi-1jWKdq-142" valuehalign="" allowordering="true" hideable="true">
                           <label>Create DT</label>
                        </field>
                        <field type="" id="ControlItemType.ControlItemTypeDescr" uniqueid="fi-27M92f-118" valuehalign="" allowordering="false" hideable="true">
                           <label>Control Item Type</label>
                        </field>
                        <field type="" id="EffectiveDate" uniqueid="fi-1jYcZ5-215" valuehalign="" allowordering="true" snippet="DateOnly" hideable="true" minuteincrement="5">
                           <renderconditions logictype="and" onhidedatabehavior="keep"/>
                           <enableconditions/>
                        </field>
                        <field type="" id="VersionNumber" uniqueid="fi-1jYmls-229" valuehalign="" allowordering="true" hideable="true">
                           <label>Ver#</label>
                        </field>
                     </fields>
                     <rowactions>
                        <action type="popup" label="View record details" icon="sk-icon-popup">
                           <popup title="Viewing {{Model.label}}: {{Name}}" width="80%">
                              <components>
                                 <basicfieldeditor uniqueid="sk-1jkl0I-445" model="ControlItem" mode="edit" showsavecancel="true" showheader="true">
                                    <conditions>
                                       <condition type="contextrow" mergefield="Id" field="Id" autocreated="true"/>
                                    </conditions>
                                    <columns>
                                       <column width="50%">
                                          <sections>
                                             <section title="Section A">
                                                <fields>
                                                   <field id="ControlItemName" uniqueid="fi-1jjYER-366"/>
                                                   <field id="ControlItemDescr" uniqueid="fi-1jjYER-367"/>
                                                   <field id="ControlItemCode" uniqueid="fi-1jjYER-368"/>
                                                </fields>
                                             </section>
                                          </sections>
                                       </column>
                                       <column width="50%">
                                          <sections>
                                             <section title="Section B">
                                                <fields>
                                                   <field id="CreateDatetime" uniqueid="fi-1jjYER-369"/>
                                                   <field id="EffectiveDate" uniqueid="fi-1jjYER-370"/>
                                                   <field id="VersionNumber" uniqueid="fi-1jjYES-371"/>
                                                   <field id="CompanyID" uniqueid="fi-1jjYES-372"/>
                                                   <field id="ControlItemTypeID" uniqueid="fi-1jjYES-373"/>
                                                </fields>
                                             </section>
                                          </sections>
                                       </column>
                                    </columns>
                                 </basicfieldeditor>
                              </components>
                           </popup>
                        </action>
                        <action type="delete"/>
                     </rowactions>
                     <massactions usefirstitemasdefault="true"/>
                     <views>
                        <view type="standard"/>
                     </views>
                     <actions usefirstitemasdefault="true" defaulticon="sk-icon-magic" defaultlabel="Global Actions">
                        <action type="multi" label="Append New Control Item" icon="sk-icon-magic">
                           <actions>
                              <action type="emptyModelData" model="ControlItem" defaultmodefornewitems="edit" appendorprepend="append" affectedrows="context">
                                 <defaults/>
                                 <models>
                                    <model>NewControlItem</model>
                                 </models>
                              </action>
                              <action type="save" rollbackonanyerror="true">
                                 <models>
                                    <model>ControlItem</model>
                                 </models>
                              </action>
                              <action type="activateCondition" model="NewControlItem" condition="CompanyID"/>
                              <action type="createRow" model="NewControlItem" defaultmodefornewitems="edit" appendorprepend="prepend" affectedrows="context">
                                 <defaults>
                                    <default type="fieldvalue" value="NOW" enclosevalueinquotes="false" field="CreateDatetime"/>
                                 </defaults>
                              </action>
                              <action type="showPopup" datasource="SOCAdmin">
                                 <popup title="Control Item Details" width="700px">
                                    <components>
                                       <pagetitle uniqueid="sk-1jmHJY-499" model="NewControlItem">
                                          <actions>
                                             <action type="multi" label="Save">
                                                <actions>
                                                   <action type="blockUI" message="Saving Changes to New Control Item"/>
                                                   <action type="save">
                                                      <models>
                                                         <model>NewControlItem</model>
                                                      </models>
                                                      <onerroractions>
                                                         <action type="unblockUI" message="There was an error" timeout="3000"/>
                                                         <action type="cancel" message="There was an error" timeout="3000"/>
                                                      </onerroractions>
                                                   </action>
                                                   <action type="requeryModel" behavior="standard" model="ControlItem"/>
                                                   <action type="closeAllPopups"/>
                                                   <action type="unblockUI"/>
                                                </actions>
                                                <hotkeys/>
                                             </action>
                                             <action type="multi" label="Cancel">
                                                <actions>
                                                   <action type="cancel">
                                                      <models>
                                                         <model>NewControlItem</model>
                                                      </models>
                                                   </action>
                                                   <action type="unblockUI"/>
                                                </actions>
                                             </action>
                                          </actions>
                                          <maintitle>New Control Item</maintitle>
                                       </pagetitle>
                                       <basicfieldeditor uniqueid="sk-1jnCel-527" model="NewControlItem" layout="" mode="edit" buttonposition="" showerrorsinline="true" showsavecancel="false" showheader="true">
                                          <columns layoutmode="fixed">
                                             <column width="50%">
                                                <sections>
                                                   <section title="" showheader="false" collapsible="no">
                                                      <fields>
                                                         <field type="" id="CompanyID" uniqueid="fi-27UTDq-280" valuehalign="" readonly="true">
                                                            <label>Company ID</label>
                                                         </field>
                                                         <field type="" id="ControlItemCode" uniqueid="fi-27UTDq-281" valuehalign="">
                                                            <label>Control Item Code</label>
                                                         </field>
                                                         <field type="" id="ControlItemDescr" uniqueid="fi-27UTDq-282" valuehalign="">
                                                            <label>Control Item Descr</label>
                                                         </field>
                                                         <field type="" id="ControlItemName" uniqueid="fi-27UTDq-283" valuehalign="">
                                                            <label>Control Item Name</label>
                                                         </field>
                                                      </fields>
                                                      <renderconditions logictype="and"/>
                                                   </section>
                                                </sections>
                                             </column>
                                             <column width="50%">
                                                <sections>
                                                   <section title="" showheader="false" collapsible="no">
                                                      <fields>
                                                         <field type="REFPICK" id="ControlItemTypeID" uniqueid="fi-27UTDq-284" valuehalign="" pagesize="5" required="true" addnoneoption="true" displaytemplate="{{ControlItemTypeDescr}}" optionsource="model" optionmodel="ControlItemType" nonelabel="-- Select Type --" decimalplaces="">
                                                            <label>Control Item Type</label>
                                                            <filters/>
                                                            <searchfields/>
                                                            <renderconditions logictype="and" onhidedatabehavior="keep"/>
                                                            <enableconditions/>
                                                         </field>
                                                         <field type="" id="EffectiveDate" uniqueid="fi-27UTDq-286" valuehalign="">
                                                            <label>Effective Date</label>
                                                         </field>
                                                         <field type="" id="VersionNumber" uniqueid="fi-27UTDq-287" valuehalign="">
                                                            <label>Version Number</label>
                                                         </field>
                                                      </fields>
                                                   </section>
                                                </sections>
                                             </column>
                                          </columns>
                                       </basicfieldeditor>
                                    </components>
                                 </popup>
                              </action>
                           </actions>
                        </action>
                     </actions>
                     <filters>
                        <filter type="select" label="Control Item Type" condition="ControlItemTypeID" conditionsource="manual" autocompthreshold="25" affectcookies="true" createfilteroffoption="true" filteroffoptionlabel="-- All Ctrl Item Types --" labelmode="manual">
                           <sources>
                              <source type="model" model="ControlItemType" effectsbehavior="justdefault">
                                 <labeltemplate>{{ControlItemTypeDescr}}</labeltemplate>
                                 <valuetemplate>{{ControlItemTypeID}}</valuetemplate>
                              </source>
                           </sources>
                        </filter>
                     </filters>
                     <searchfields/>
                     <renderconditions logictype="and"/>
                  </skootable>
Photo of Stephen Sells

Stephen Sells, Official Rep

  • 16,856 Points 10k badge 2x thumb
What data sources are you attempting to use for these two models on skuid platform?
Photo of Mark Ebersole

Mark Ebersole

  • 570 Points 500 badge 2x thumb
SOCAdmin.  It's my own database on Azure with an Odata cloud service in front of it.
BTW, I discovered that if I toggle the controlitemtype filter from all to a specific one and then back, the model is re-queried and only desired companyID as indicated in appuser is shown.  This reinforces the fact that there is a problem with the query order.