Skuid page for "Field Trip" app

  • 2
  • Idea
  • Updated 1 year ago
  • (Edited)
Thought I'd share a Skuid page I made to help view results of the "Field Trip" app. 

Field Trip is a (really useful) free app exchange app that helps admin analyze the usage of fields. https://appexchange.salesforce.com/listingDetail?listingId=a0N30000003HSXEEA4 One drawback is that for objects with many fields you need to copy and paste to excel to really work with the data. Skuid fixes that with sortable columns and a search bar! 

If you use this page, the only change you'll need to make is to change the "Field Trip Tab" link in the navigation component to point to the correct link for your org.

**Note: this was built on Skuid version 8.15.8


<skuidpage unsavedchangeswarning="yes" personalizationmode="server" showsidebar="true" showheader="true">
    <models>
        <model id="AllFieldTrips" limit="20" query="true" createrowifnonefound="false" adapter="salesforce" type="" sobject="Field_Trip__Object_Analysis__c">
            <fields>
                <field id="Name"/>
                <field id="Field_Trip__Object_Name__c"/>
                <field id="Id"/>
            </fields>
            <conditions/>
            <actions/>
        </model>
        <model id="FieldtripObject" limit="20" query="true" createrowifnonefound="false" adapter="salesforce" type="" sobject="Field_Trip__Object_Analysis__c">
            <fields>
                <field id="Id"/>
                <field id="Name"/>
                <field id="Field_Trip__Last_Analyzed__c"/>
            </fields>
            <conditions>
                <condition type="fieldvalue" value="a0I1600000zZQJbEAO" enclosevalueinquotes="true" field="Id" state="filterableon" inactive="false" name="Id"/>
            </conditions>
            <actions/>
        </model>
        <model id="FieldTripFields" limit="" query="true" createrowifnonefound="false" adapter="salesforce" type="" sobject="Field_Trip__Field_Analysis__c">
            <fields>
                <field id="Field_Trip__Object_Analysis__c"/>
                <field id="Field_Trip__Object_Analysis__r.Name"/>
                <field id="Name"/>
                <field id="Field_Trip__Label__c"/>
                <field id="Field_Trip__Populated_On__c"/>
                <field id="Field_Trip__Populated_On_Percent__c"/>
                <field id="Field_Trip__Type__c"/>
                <field id="Field_Trip__isRequired__c"/>
                <field id="Field_Trip__isCustom__c"/>
            </fields>
            <conditions>
                <condition type="modelmerge" value="" field="Field_Trip__Object_Analysis__c" operator="=" model="FieldtripObject" enclosevalueinquotes="true" mergefield="Id" novaluebehavior="noquery"/>
            </conditions>
            <actions/>
        </model>
    </models>
    <components>
        <grid uniqueid="sk-3C5r_3-155" columngutter="20px">
            <divisions>
                <division behavior="specified" verticalalign="top" width="30em">
                    <components>
                        <wrapper uniqueid="sk-3C6mX3-244">
                            <components>
                                <navigation uniqueid="sk-3C6yYA-255">
                                    <navigationitems>
                                        <navigationitem label="Field Trip Tab" icon="fa-arrow-circle-right">
                                            <actions>
                                                <action type="redirect" window="blank" url="/a0I/o"/>
                                            </actions>
                                            <renderconditions logictype="and"/>
                                        </navigationitem>
                                    </navigationitems>
                                </navigation>
                            </components>
                            <styles>
                                <styleitem type="background"/>
                                <styleitem type="border" padding="bottom,top,">
                                    <styles>
                                        <styleitem property="padding-top" value="10px"/>
                                        <styleitem property="padding-bottom" value="15px"/>
                                        <styleitem property="box-sizing" value="border-box"/>
                                    </styles>
                                </styleitem>
                                <styleitem type="size"/>
                            </styles>
                        </wrapper>
                        <queue tagrendertype="template" querystring="id={{Id}}" defaultitemparameter="id" clickactiontype="multi" searchbox="true" tokenizesearch="true" model="AllFieldTrips" uniqueid="sk-3C5z32-175" title="All Field Trips">
                            <rendertemplate>{{{Name}}}</rendertemplate>
                            <actions>
                                <action type="setCondition" model="FieldtripObject" condition="Id" value="{{Id}}"/>
                                <action type="requeryModel" model="FieldtripObject" behavior="standard"/>
                                <action type="requeryModel" model="FieldTripFields" behavior="standard"/>
                            </actions>
                        </queue>
                    </components>
                </division>
                <division behavior="flex" verticalalign="top" minwidth="100px" ratio="1">
                    <components>
                        <pagetitle model="FieldtripObject" uniqueid="sk-3C6QqC-231">
                            <maintitle>
                                <template>{{Name}}</template>
                            </maintitle>
                            <actions/>
                            <subtitle>Last Analyzed {{Field_Trip__Last_Analyzed__c}}</subtitle>
                        </pagetitle>
                        <skootable showconditions="true" showsavecancel="false" showerrorsinline="true" searchmethod="server" searchbox="true" showexportbuttons="false" pagesize="all" createrecords="false" model="FieldTripFields" buttonposition="" mode="readonly" uniqueid="sk-23mmcm-174">
                            <fields>
                                <field type="COMBO" valuehalign="">
                                    <label>Field Name</label>
                                    <template>{{{Name}}}</template>
                                </field>
                                <field id="Field_Trip__Label__c" valuehalign="" type="" allowordering="true"/>
                                <field id="Field_Trip__Populated_On__c" decimalplaces="" valuehalign="" type="" allowordering="true"/>
                                <field id="Field_Trip__Populated_On_Percent__c" decimalplaces="" valuehalign="" type="" allowordering="true"/>
                                <field id="Field_Trip__isRequired__c" type="" valuehalign="" allowordering="true"/>
                                <field id="Field_Trip__Type__c" valuehalign="" type="" allowordering="true"/>
                                <field id="Field_Trip__isCustom__c" type="" valuehalign="" allowordering="true"/>
                            </fields>
                            <rowactions/>
                            <massactions usefirstitemasdefault="true"/>
                            <views>
                                <view type="standard"/>
                            </views>
                            <searchfields/>
                        </skootable>
                    </components>
                </division>
            </divisions>
            <styles>
                <styleitem type="background" bgtype="none"/>
                <styleitem property="padding-top" value="10px"/>
            </styles>
        </grid>
    </components>
    <resources>
        <labels/>
        <javascript/>
        <css>
            <cssitem location="inline" name="newcss" cachelocation="false">.nx-skootable&gt;.nx-editor-header{
   margin: 0px;
}</cssitem>
        </css>
    </resources>
    <styles>
        <styleitem type="background" bgtype="none"/>
    </styles>
</skuidpage>
Photo of susan.nordquist

susan.nordquist

  • 354 Points 250 badge 2x thumb
  • helpful

Posted 1 year ago

  • 2
Photo of mB Pat Vachon

mB Pat Vachon, Champion

  • 42,674 Points 20k badge 2x thumb
Yup. We've done something very similar. Drawers instead of Queue/Page Include.

<skuidpage unsavedchangeswarning="yes"> <models> <model id="Object_Analysis" limit="" query="true" createrowifnonefound="false" type="" sobject="Field_Trip__Object_Analysis__c" orderby="Field_Trip__Object_Label__c ASC" datasource="salesforce"> <fields> <field id="Name"/> <field id="Field_Trip__Object_Label__c"/> <field id="Field_Trip__Object_Name__c"/> <field id="Field_Trip__isCustom__c"/> <field id="Field_Trip__Fields__c"/> <field id="Field_Trip__Records__c"/> <field id="Field_Trip__Record_Types__c"/> <field id="Field_Trip__Last_Analyzed__c"/> <field id="Object_Limits_URL__c"/> <field id="Id"/> </fields> <conditions> <condition type="fieldvalue" value="true" enclosevalueinquotes="false" field="Field_Trip__isCustom__c" state="filterableoff" inactive="true" name="Field_Trip__isCustom__c"/> </conditions> <actions/> </model> <model id="Field_Analysis" limit="" query="true" createrowifnonefound="false" adapter="salesforce" type="" sobject="Field_Trip__Field_Analysis__c" orderby="Field_Trip__Label__c ASC"> <fields> <field id="Name"/> <field id="Field_Trip__Label__c"/> <field id="Field_Trip__Type__c"/> <field id="Field_Trip__Populated_On__c"/> <field id="Field_Trip__Populated_On_Percent__c"/> <field id="Field_Trip__Object_Analysis__c"/> <field id="Field_Trip__Object_Analysis__r.Name"/> </fields> <conditions> <condition type="fieldvalue" value="" field="Field_Trip__Object_Analysis__c" operator="=" novaluebehavior="" enclosevalueinquotes="true" state="filterableoff" inactive="true" name="Field_Trip__Object_Analysis__c"/> </conditions> <actions/> </model> </models> <pageregioncontents> <pageregioncontent regionid="sk-1uFo3V-67" uniqueid="sk-NpI3q-152"> <components> <tabset rememberlastusertab="true" defertabrendering="true" uniqueid="sk-NPWmm-79" renderas=""> <tabs> <tab name="Object and Field Analysis" icon="fa-search"> <components> <pagetitle model="Object_Analysis" uniqueid="sk-NRjkj-232"> <maintitle>Object and Field Analysis</maintitle> <actions> <action type="savecancel" label="New Button" window="self" uniqueid="sk-3-JR5O-169"> <cancelhotkeys/> <savehotkeys/> <models> <model>Field_Analysis</model> </models> </action> <action type="sfdcweblink" weblinkname="Field_Trip__Analyze" label="Analyze" weblinkobject="Field_Trip__Object_Analysis__c" uniqueid="sk-3-JR5R-171"/> </actions> </pagetitle> <skootable showconditions="true" showsavecancel="true" showerrorsinline="true" searchmethod="server" searchbox="true" showexportbuttons="false" pagesize="50" createrecords="false" model="Object_Analysis" buttonposition="" mode="read" uniqueid="sk-NQiSJ-114"> <fields> <field id="Field_Trip__Object_Label__c" valuehalign="" type="" readonly="true" allowordering="true" uniqueid="sk-3-JR5Z-174"/> <field id="Field_Trip__Object_Name__c" valuehalign="" type="" readonly="true" allowordering="true" uniqueid="sk-3-JR5a-176"> <label>Object API Name</label> </field> <field id="Field_Trip__isCustom__c" type="" valuehalign="" readonly="true" allowordering="true" uniqueid="sk-3-JR5g-178"/> <field id="Field_Trip__Fields__c" decimalplaces="" valuehalign="" type="" allowordering="true" uniqueid="sk-3-JR5h-180"/> <field id="Field_Trip__Records__c" decimalplaces="" valuehalign="" type="" readonly="true" allowordering="true" uniqueid="sk-3-JR5k-182"/> <field id="Field_Trip__Record_Types__c" decimalplaces="" valuehalign="" type="" readonly="true" allowordering="true" uniqueid="sk-3-JR5k-184"/> <field id="Field_Trip__Last_Analyzed__c" valuehalign="" type="" readonly="true" allowordering="true" uniqueid="sk-3-JR5l-186"/> <field id="Object_Limits_URL__c" hideable="true" uniqueid="fi-3-JXVX-820" valuehalign="" type=""/> </fields> <rowactions> <action type="redirect" label="Re-Analyze" icon="fa-refresh" window="blank" url="https://field-trip.na17.visual.force.com/apex/analyzeLaunch?scontrolCaching=1&amp;id={{Id}}"...; <popup width="80%" title="Viewing {{Model.label}}: {{Name}}"> <components> <basicfieldeditor showheader="true" showsavecancel="true" mode="edit" model="Object_Analysis"> <conditions> <condition type="contextrow" field="Id" mergefield="Id" autocreated="true"/> </conditions> <columns> <column width="50%"> <sections> <section title="Section A"> <fields> <field id="Name" uniqueid="fi-3-JVQ4-803"/> <field id="Field_Trip__Object_Label__c" uniqueid="fi-3-JVQ4-804"/> <field id="Field_Trip__Object_Name__c" uniqueid="fi-3-JVQ4-805"/> <field id="Field_Trip__isCustom__c" uniqueid="fi-3-JVQ4-806"/> </fields> </section> </sections> </column> <column width="50%"> <sections> <section title="Section B"> <fields> <field id="Field_Trip__Fields__c" uniqueid="fi-3-JVQ4-807"/> <field id="Field_Trip__Records__c" uniqueid="fi-3-JVQ4-808"/> <field id="Field_Trip__Record_Types__c" uniqueid="fi-3-JVQ4-809"/> <field id="Field_Trip__Last_Analyzed__c" uniqueid="fi-3-JVQ4-810"/> <field id="Object_Limits_URL__c" uniqueid="fi-3-JVQ4-811"/> </fields> </section> </sections> </column> </columns> </basicfieldeditor> </components> </popup> </action> <action type="multi" label="View Object Limits" icon="fa-cogs"> <actions> <action type="redirect" window="blank" url="{{Object_Limits_URL__c}}"/> </actions> </action> <action type="multi" label="View Field Analysis" icon="fa-folder"> <actions> <action type="drawer" openicon="fa-folder-open"> <drawer title="Drawer Area" width="90%" closehandle="true"> <components> <skootable showconditions="true" showsavecancel="false" showerrorsinline="true" searchmethod="server" searchbox="true" showexportbuttons="false" pagesize="50" createrecords="false" model="Field_Analysis" buttonposition="" mode="readonly" uniqueid="sk-NTiS0-122" emptysearchbehavior="query"> <fields> <field id="Field_Trip__Label__c" valuehalign="" type="" allowordering="true" uniqueid="fi-3-JVQ4-812"> <label>Field Label</label> </field> <field id="Name" valuehalign="" type="" allowordering="true" uniqueid="fi-3-JVQ4-813"> <label>Field API Name</label> </field> <field id="Field_Trip__Type__c" valuehalign="" type="" allowordering="true" uniqueid="fi-3-JVQ4-814"/> <field id="Field_Trip__Populated_On__c" decimalplaces="" valuehalign="" type="" allowordering="true" uniqueid="fi-3-JVQ4-815"/> <field id="Field_Trip__Populated_On_Percent__c" decimalplaces="" valuehalign="" type="" allowordering="true" uniqueid="fi-3-JVQ4-816"/> </fields> <rowactions/> <massactions usefirstitemasdefault="true"/> <views> <view type="standard"/> </views> <searchfields/> <conditions> <condition type="contextrow" field="Field_Trip__Object_Analysis__c" mergefield="Id" operator="="/> </conditions> <renderconditions logictype="and"/> </skootable> </components> <beforeload/> </drawer> </action> </actions> </action> <action type="edit"/> </rowactions> <massactions usefirstitemasdefault="true"/> <views> <view type="standard"/> </views> <searchfields/> <filters> <filter type="select" filteroffoptionlabel="All Objects" createfilteroffoption="true" affectcookies="true" autocompthreshold="25" conditionsource="manual" labelmode="no" condition="Field_Trip__isCustom__c"> <sources> <source type="manual" effectsbehavior="justdefault"> <options> <option label="Custom Only" type="simple" value="TRUE"/> <option label="Standard Only" type="simple" value="FALSE"/> </options> </source> </sources> </filter> </filters> </skootable> </components> </tab> </tabs> </tabset> </components> </pageregioncontent> </pageregioncontents> <components/> <resources> <labels/> <css/> <javascript/> </resources> </skuidpage>