create a nested queue where the second queue would display the unique picklist values of a specific field

  • 2
  • Question
  • Updated 3 years ago
  • Answered
Hi! I am attempting to create a nested queue for Campaigns and Campaign members where the first queue listed all of the active campaigns, the second queue would display the unique values of the status of the members (we have approx. 3 [invited, attending, responded]), and the third page include would show a table listing all of the members that have the selected unique status. Is there a way to only list those 3 picklist values in the 2nd queue? I know I could do this using a table and filters but I was wondering if this would be possible with a nested queue as well? Thank you!
Photo of Megan Minahan

Megan Minahan

  • 726 Points 500 badge 2x thumb

Posted 3 years ago

  • 2
Photo of Zach McElrath

Zach McElrath, Employee

  • 49,004 Points 20k badge 2x thumb
This could be done a couple different ways. You can use a "Queue within a Queue" approach by adding a "open/close a drawer" action to your top Queue, with the contents of this drawer simply being another Queue. This inner Queue could then be an Aggregate Model on the CampaignMember object, grouped by unique Status values, so that you would get the unique Status values for your org.

Here is the XML for a sample page that does this without any Page Includes at all, just using Action Framework:




<skuidpage unsavedchangeswarning="yes" personalizationmode="server" showsidebar="true" showheader="true" tabtooverride="Campaign">   
   <models>
      <model id="Campaign" limit="100" query="true" createrowifnonefound="false" sobject="Campaign" adapter="" type="">
         <fields>
            <field id="Name"/>
            <field id="CreatedDate"/>
            <field id="IsActive"/>
            <field id="Status"/>
         </fields>
         <conditions/>
         <actions/>
      </model>
      <model id="CampaignMemberStatuses" limit="1000000" query="true" createrowifnonefound="false" adapter="" type="aggregate" sobject="CampaignMember" orderby="Status">
         <fields>
            <field id="StatusIcon" uionly="true" displaytype="FORMULA" label="Status Icon" readonly="true" returntype="TEXT">
               <formula>IF({{{status}}}=="Responded","sk-icon-tasks-open","sk-icon-send-email")</formula>
            </field>
         </fields>
         <conditions>
            <condition type="fieldvalue" value="" enclosevalueinquotes="true" field="CampaignId" state="filterableoff" inactive="true" name="CampaignId"/>
         </conditions>
         <actions/>
         <groupby method="simple">
            <field id="Status" name="status"/>
         </groupby>
      </model>
      <model id="CampaignMembers" limit="100" query="false" createrowifnonefound="false" adapter="" type="" sobject="CampaignMember">
         <fields>
            <field id="ContactId"/>
            <field id="Contact.Name"/>
            <field id="FirstRespondedDate"/>
            <field id="LeadId"/>
            <field id="Lead.Name"/>
            <field id="HasResponded"/>
            <field id="Status"/>
         </fields>
         <conditions>
            <condition type="fieldvalue" value="" enclosevalueinquotes="true" field="CampaignId" state="filterableoff" inactive="true" name="CampaignId"/>
            <condition type="fieldvalue" value="" enclosevalueinquotes="true" field="Status" state="filterableoff" inactive="true" name="Status"/>
         </conditions>
         <actions/>
      </model>
      <model id="SelectedCampaign" limit="1" query="false" createrowifnonefound="false" adapter="" type="" sobject="Campaign">
         <fields>
            <field id="Name"/>
            <field id="IsActive"/>
            <field id="Status"/>
         </fields>
         <conditions/>
         <actions/>
      </model>
   </models>
   <components>
      <panelset type="standard" uniqueid="sk-XL8XQ-180" scroll="variable" offset="220px">
         <panels>
            <panel type="left" width="225px">
               <components>
                  <queue tagrendertype="template" querystring="id={{Id}}" defaultitemparameter="id" clickactiontype="multi" searchbox="true" tokenizesearch="true" model="Campaign" uniqueid="sk-XLI3d-233" title="Campaigns" itemicon="">
                     <searchfields/>
                     <actions>
                        <action type="emptyModelData">
                           <models>
                              <model>SelectedCampaign</model>
                           </models>
                        </action>
                        <action type="adoptRows" sourcemodel="Campaign" targetmodel="SelectedCampaign"/>
                        <action type="drawer">
                           <drawer title="Drawer Area" width="90%" closehandle="true">
                              <components>
                                 <queue tagrendertype="template" querystring="id={{Id}}" defaultitemparameter="id" clickactiontype="multi" searchbox="true" tokenizesearch="true" model="CampaignMemberStatuses" uniqueid="sk-XL-Co-332" itemicon="{{{StatusIcon}}}">
                                    <searchfields/>
                                    <actions>
                                       <action type="setCondition" model="CampaignMembers" condition="CampaignId" value="{{{$Model.SelectedCampaign.data.0.Id}}}"/>
                                       <action type="setCondition" model="CampaignMembers" condition="Status" value="{{{status}}}"/>
                                       <action type="requeryModels" behavior="standard">
                                          <models>
                                             <model>CampaignMembers</model>
                                          </models>
                                       </action>
                                    </actions>
                                    <rendertemplate>{{{status}}}</rendertemplate>
                                 </queue>
                              </components>
                              <beforeload/>
                           </drawer>
                        </action>
                     </actions>
                     <rendertemplate>{{Name}}</rendertemplate>
                  </queue>
               </components>
            </panel>
            <panel>
               <components>
                  <pagetitle model="CampaignMembers" uniqueid="sk-X8Aih-73">
                     <maintitle>
                        <template>{{Model.labelPlural}}</template>
                     </maintitle>
                     <subtitle>
                        <template>Home</template>
                     </subtitle>
                     <actions>
                        <action type="savecancel"/>
                        <action type="multi" label="Manage Campaigns">
                           <actions>
                              <action type="showPopup">
                                 <popup title="Manage Campaigns" width="90%">
                                    <components>
                                       <pagetitle model="Campaign" uniqueid="sk-XODi3-427">
                                          <actions>
                                             <action type="multi" label="Save and Close" icon="sk-icon-save">
                                                <actions>
                                                   <action type="save">
                                                      <models>
                                                         <model>Campaign</model>
                                                      </models>
                                                   </action>
                                                   <action type="closeTopmostPopup"/>
                                                </actions>
                                             </action>
                                             <action type="multi" label="Close" icon="sk-icon-close">
                                                <actions>
                                                   <action type="closeTopmostPopup"/>
                                                </actions>
                                             </action>
                                          </actions>
                                          <maintitle>{{Model.labelPlural}}</maintitle>
                                       </pagetitle>
                                       <skootable showconditions="true" showsavecancel="false" showerrorsinline="true" searchmethod="server" searchbox="true" showexportbuttons="false" pagesize="10" createrecords="true" model="Campaign" buttonposition="" mode="read" uniqueid="sk-XOEWi-430">
                                          <fields>
                                             <field id="Name"/>
                                             <field id="Status"/>
                                             <field id="IsActive"/>
                                          </fields>
                                          <rowactions>
                                             <action type="edit"/>
                                             <action type="delete"/>
                                          </rowactions>
                                          <massactions usefirstitemasdefault="true">
                                             <action type="massupdate"/>
                                             <action type="massdelete"/>
                                          </massactions>
                                          <views>
                                             <view type="standard"/>
                                          </views>
                                       </skootable>
                                    </components>
                                 </popup>
                              </action>
                           </actions>
                        </action>
                     </actions>
                     <renderconditions logictype="and"/>
                  </pagetitle>
                  <skootable showconditions="true" showsavecancel="false" showerrorsinline="true" searchmethod="server" searchbox="true" showexportbuttons="false" pagesize="10" createrecords="true" model="CampaignMembers" buttonposition="" mode="read" uniqueid="sk-XLBIW-194">
                     <fields>
                        <field id="ContactId" valuehalign="" type="">
                           <label>Contact</label>
                        </field>
                        <field id="LeadId" valuehalign="" type="">
                           <label>Lead</label>
                        </field>
                        <field id="HasResponded"/>
                        <field id="FirstRespondedDate" valuehalign="" type=""/>
                        <field id="Status"/>
                     </fields>
                     <rowactions>
                        <action type="edit"/>
                        <action type="delete"/>
                     </rowactions>
                     <massactions usefirstitemasdefault="true">
                        <action type="massupdate"/>
                        <action type="massdelete"/>
                     </massactions>
                     <views>
                        <view type="standard"/>
                     </views>
                     <renderconditions logictype="and">
                        <rendercondition type="fieldvalue" enclosevalueinquotes="true" fieldmodel="CampaignMembers" sourcetype="modelproperty" nosourcerowbehavior="deactivate" sourceproperty="hasRows"/>
                     </renderconditions>
                  </skootable>
               </components>
            </panel>
         </panels>
      </panelset>
   </components>
   <resources>
      <labels/>
      <css/>
      <javascript/>
   </resources>
   <styles>
      <styleitem type="background" bgtype="none"/>
   </styles>
</skuidpage>
Photo of Megan Minahan

Megan Minahan

  • 726 Points 500 badge 2x thumb
This is better than what I was looking for! Thanks Zach!