The calendar is sooooooooo slow...

  • 1
  • Question
  • Updated 3 years ago
What can I do to improve the performance of the calendar? I have decent bandwidth (10 down), the models are relatively simple, and it's the only function on the page.

It takes over 10 seconds on average to load. 

Tips?
Photo of Griffin Brown

Griffin Brown

  • 2,766 Points 2k badge 2x thumb
  • like this veggie cleanse was a bit much

Posted 3 years ago

  • 1
Photo of Ben Hubbard

Ben Hubbard, Employee

  • 12,490 Points 10k badge 2x thumb
Quick things to check.

1. Do you have "Load Model Data on Page Load" checkbox unchecked on your model? You should.
2. Do you have any additional conditions on the model? If so, what are they?
3. How many records total do you have in the object the calendar is based on?
Photo of Griffin Brown

Griffin Brown

  • 2,766 Points 2k badge 2x thumb
1. Yes
2. No
3. 76 records


I use a formula field for my startdatetime and enddatetime - could that be it?
Photo of Ben Hubbard

Ben Hubbard, Employee

  • 12,490 Points 10k badge 2x thumb
With only 76 records, your query should not be a problem. I'd follow the instructions under "Where's the problem" in the Skuid Perfomance Guide and post a screenshot of that graph. It might help us find where the issue is.
Photo of Griffin Brown

Griffin Brown

  • 2,766 Points 2k badge 2x thumb
How have I never seen this - it's amazing. I'll get to it as soon as feasible
Photo of Zach McElrath

Zach McElrath, Employee

  • 49,056 Points 20k badge 2x thumb
Can you post the XML for the Model that your Calendar is based on?
Photo of Griffin Brown

Griffin Brown

  • 2,766 Points 2k badge 2x thumb
<skuidpage unsavedchangeswarning="yes" personalizationmode="server" showsidebar="false" showheader="false" theme="newCalendar">
   <models>
      <model id="Appts" limit="" query="false" createrowifnonefound="false" adapter="" type="" sobject="Appointment__c" doclone="">
         <fields>
            <field id="End_Formula__c"/>
            <field id="Start_Formula__c"/>
            <field id="User__c"/>
            <field id="User__r.Name"/>
            <field id="User__r.LastName"/>
            <field id="Case__c"/>
            <field id="Case__r.Name"/>
            <field id="newColor__c"/>
            <field id="Subject__c"/>
         </fields>
         <conditions/>
         <actions/>
      </model>
      <model id="User" limit="" query="true" createrowifnonefound="false" adapter="" type="" sobject="User" orderby="LastName">
         <fields>
            <field id="Name"/>
            <field id="LastName"/>
            <field id="IsActive"/>
            <field id="Responsibilities__c"/>
         </fields>
         <conditions>
            <condition type="fieldvalue" value="true" enclosevalueinquotes="false" field="IsActive"/>
            <condition type="multiple" value="" field="Responsibilities__c" operator="includes" enclosevalueinquotes="true">
               <values>
                  <value>Speech</value>
                  <value>Physical</value>
                  <value>Occupational</value>
               </values>
            </condition>
         </conditions>
         <actions/>
      </model>
      <model id="TimeIn" limit="" query="false" createrowifnonefound="false" adapter="" type="" sobject="Daily_Summary__c" doclone="" unloadwarningifunsavedchanges="false">
         <fields>
            <field id="Day_Start_Formula__c"/>
            <field id="Time_In_Formula__c"/>
            <field id="User__c"/>
            <field id="User__r.Name"/>
            <field id="Time_In__c"/>
            <field id="Time_Out__c"/>
            <field id="Time_Out_Formula__c"/>
            <field id="Day_End_Formula__c"/>
            <field id="Time_Out_Event_Display__c"/>
            <field id="Daily_Summary_Notes__c"/>
            <field id="Time_In_Event_Display__c"/>
            <field id="Time_in_and_out_same__c"/>
            <field id="Date__c"/>
            <field id="Day_of_the_week__c"/>
         </fields>
         <conditions/>
         <actions>
            <action>
               <actions>
                  <action type="showPopup">
                     <popup title="Would you like to change just this block or all blocks going forward for this day of the week?" width="50%">
                        <components>
                           <pagetitle model="TimeIn" uniqueid="sk-3uzZPN-227">
                              <actions>
                                 <action type="multi" label="Just this block">
                                    <actions>
                                       <action type="blockUI" message="Saving changes"/>
                                       <action type="save">
                                          <models>
                                             <model>TimeIn</model>
                                          </models>
                                       </action>
                                       <action type="requeryModel" model="TimeIn" behavior="standard"/>
                                       <action type="closeAllPopups"/>
                                       <action type="unblockUI"/>
                                    </actions>
                                    <renderconditions logictype="and">
                                       <rendercondition type="fieldvalue" enclosevalueinquotes="false" fieldmodel="TimeIn" sourcetype="modelproperty" sourceproperty="hasChanged" value="true" operator="="/>
                                    </renderconditions>
                                    <enableconditions/>
                                 </action>
                                 <action type="multi" label="All blocks going forward">
                                    <actions>
                                       <action type="blockUI" message="Finding the blocked time going forward" timeout=""/>
                                       <action type="setCondition" model="TimeForward" condition="User__c" value="{{User__c}}"/>
                                       <action type="setCondition" model="TimeForward" condition="Day_of_the_week__c" value="{{Day_of_the_week__c}}"/>
                                       <action type="setCondition" model="TimeForward" condition="Date__c" value="{{Date__c}}"/>
                                       <action type="save">
                                          <models>
                                             <model>TimeIn</model>
                                          </models>
                                       </action>
                                       <action type="requeryModels" behavior="standard">
                                          <models>
                                             <model>TimeIn</model>
                                          </models>
                                       </action>
                                       <action type="requeryModels" behavior="standard">
                                          <models>
                                             <model>TimeForward</model>
                                          </models>
                                       </action>
                                       <action type="unblockUI"/>
                                       <action type="updateRow" fieldmodel="TimeForward" field="Time_In__c" enclosevalueinquotes="true" value="{{Time_In__c}}"/>
                                       <action type="updateRow" fieldmodel="TimeForward" field="Time_Out__c" enclosevalueinquotes="true" value="{{Time_Out__c}}"/>
                                    </actions>
                                    <renderconditions logictype="and">
                                       <rendercondition type="fieldvalue" enclosevalueinquotes="false" fieldmodel="TimeIn" sourcetype="modelproperty" sourceproperty="hasChanged" value="true" operator="="/>
                                    </renderconditions>
                                    <enableconditions/>
                                 </action>
                                 <action type="multi" label="Save Changes">
                                    <actions>
                                       <action type="blockUI" message="Saving the changes"/>
                                       <action type="save">
                                          <models>
                                             <model>TimeForward</model>
                                          </models>
                                       </action>
                                       <action type="emptyModelData">
                                          <models>
                                             <model>TimeForward</model>
                                          </models>
                                       </action>
                                       <action type="closeAllPopups"/>
                                       <action type="unblockUI"/>
                                    </actions>
                                    <renderconditions logictype="and">
                                       <rendercondition type="fieldvalue" enclosevalueinquotes="true" fieldmodel="TimeForward" sourcetype="modelproperty" sourceproperty="hasRows"/>
                                    </renderconditions>
                                    <enableconditions/>
                                 </action>
                                 <action type="multi" label="Cancel">
                                    <actions>
                                       <action type="blockUI" message="Cancelling changes"/>
                                       <action type="emptyModelData">
                                          <models>
                                             <model>TimeForward</model>
                                          </models>
                                       </action>
                                       <action type="closeAllPopups"/>
                                       <action type="unblockUI"/>
                                    </actions>
                                    <renderconditions logictype="and">
                                       <rendercondition type="fieldvalue" enclosevalueinquotes="true" fieldmodel="TimeForward" sourcetype="modelproperty" sourceproperty="hasRows"/>
                                    </renderconditions>
                                    <enableconditions/>
                                 </action>
                              </actions>
                              <subtitle> </subtitle>
                              <conditions>
                                 <condition type="contextrow" field="Id" mergefield="Id" operator="="/>
                              </conditions>
                              <renderconditions logictype="and"/>
                           </pagetitle>
                           <skootable showconditions="true" showsavecancel="false" showerrorsinline="true" searchmethod="server" searchbox="false" showexportbuttons="false" pagesize="200" createrecords="false" model="TimeForward" buttonposition="" mode="edit" uniqueid="sk-3u_5ej-255" emptysearchbehavior="query">
                              <fields>
                                 <field id="Date__c" valuehalign="" type="" allowordering="true" readonly="true"/>
                                 <field id="Time_In__c"/>
                                 <field id="Time_Out__c"/>
                              </fields>
                              <rowactions/>
                              <massactions usefirstitemasdefault="true">
                                 <action type="massupdate"/>
                              </massactions>
                              <views>
                                 <view type="standard"/>
                              </views>
                              <conditions/>
                              <renderconditions logictype="and">
                                 <rendercondition type="fieldvalue" enclosevalueinquotes="true" fieldmodel="TimeForward" sourcetype="modelproperty" nosourcerowbehavior="deactivate" sourceproperty="hasRows"/>
                              </renderconditions>
                              <searchfields/>
                           </skootable>
                        </components>
                     </popup>
                  </action>
               </actions>
               <events>
                  <event>row.updated</event>
               </events>
               <fields>
                  <field>Time_In__c</field>
                  <field>Time_Out__c</field>
               </fields>
            </action>
         </actions>
      </model>
      <model id="TimeForward" limit="" query="false" createrowifnonefound="false" adapter="" type="" sobject="Daily_Summary__c" orderby="Date__c">
         <fields>
            <field id="User__c"/>
            <field id="User__r.Name"/>
            <field id="Date__c"/>
            <field id="Time_In__c"/>
            <field id="Time_Out__c"/>
            <field id="Day_of_the_week__c"/>
         </fields>
         <conditions>
            <condition type="fieldvalue" value="" enclosevalueinquotes="true" field="User__c" state="filterableoff" inactive="true" name="User__c"/>
            <condition type="fieldvalue" value="" enclosevalueinquotes="false" field="Date__c" state="filterableoff" inactive="true" name="Date__c" operator="gt"/>
            <condition type="fieldvalue" value="" enclosevalueinquotes="true" field="Day_of_the_week__c" state="filterableoff" inactive="true" name="Day_of_the_week__c"/>
         </conditions>
         <actions/>
      </model>
   </models>
   <components>
      <wrapper uniqueid="sk-3q49Fi-190">
         <components>
            <skoocal rememberdate="true" rememberview="true" uniqueid="sk-3psSh0-182">
               <sources>
                  <eventsource name="Appointments" createable="true" deleteable="true" updateable="true" eventclickhandler="custompopup" showdefaultbuttons="true" model="Appts" startfield="Start_Formula__c" endfield="End_Formula__c" groupfield="User__c" color="{{newColor__c}}" namefield="Subject__c">
                     <eventtemplate>{{Case__r.Name}}</eventtemplate>
                     <onclickpopup title="Edit Event" width="90%" showdefaultbuttons="true">
                        <components>
                           <basicfieldeditor showheader="true" showsavecancel="true" showerrorsinline="true" model="Appts" buttonposition="" uniqueid="sk-3v7iPy-859" mode="read">
                              <columns>
                                 <column width="50%">
                                    <sections>
                                       <section title="Section A" collapsible="no">
                                          <fields>
                                             <field id="Subject__c"/>
                                          </fields>
                                       </section>
                                    </sections>
                                 </column>
                                 <column width="50%">
                                    <sections>
                                       <section title="Section B">
                                          <fields/>
                                       </section>
                                    </sections>
                                 </column>
                              </columns>
                              <conditions>
                                 <condition type="contextrow" field="Id" mergefield="Id" autocreated="true"/>
                              </conditions>
                           </basicfieldeditor>
                        </components>
                     </onclickpopup>
                  </eventsource>
                  <eventsource name="Time In" createable="false" deleteable="false" updateable="true" eventclickhandler="custompopup" showdefaultbuttons="true" model="TimeIn" startfield="Day_Start_Formula__c" endfield="Time_In_Formula__c" groupfield="User__c">
                     <onclickpopup title="Set Time In and Time Out" width="40%" showdefaultbuttons="false">
                        <components>
                           <basicfieldeditor showheader="true" showsavecancel="false" showerrorsinline="true" model="TimeIn" buttonposition="" uniqueid="sk-3ub0ki-168" mode="edit" layout="above">
                              <columns>
                                 <column width="100%">
                                    <sections>
                                       <section title="Time In" collapsible="no" showheader="false">
                                          <fields>
                                             <columns layoutmode="fixed">
                                                <column width="50%">
                                                   <sections>
                                                      <section title="New Section" collapsible="no" showheader="false">
                                                         <fields/>
                                                      </section>
                                                      <section title="Time In" collapsible="no">
                                                         <fields>
                                                            <field id="Time_In__c" valuehalign="" type="">
                                                               <label> </label>
                                                            </field>
                                                         </fields>
                                                      </section>
                                                   </sections>
                                                </column>
                                                <column width="50%">
                                                   <sections>
                                                      <section title="New Section" collapsible="no" showheader="false">
                                                         <fields/>
                                                      </section>
                                                      <section title="Time Out" collapsible="no">
                                                         <fields>
                                                            <field id="Time_Out__c" valuehalign="" type="">
                                                               <label> </label>
                                                            </field>
                                                         </fields>
                                                      </section>
                                                   </sections>
                                                </column>
                                             </columns>
                                          </fields>
                                       </section>
                                    </sections>
                                 </column>
                              </columns>
                              <conditions>
                                 <condition type="contextrow" field="Id" mergefield="Id" autocreated="true"/>
                              </conditions>
                           </basicfieldeditor>
                           <richtext multiple="false" uniqueid="sk-3uooJX-140">
                              <contents>&lt;p style="text-align: center;"&gt;&lt;span style="font-size:18px;"&gt;&lt;span style="color:#FF0000;"&gt;Let&amp;#39;s make a note about why the clinician is absent&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
</contents>
                              <renderconditions logictype="and">
                                 <rendercondition type="fieldvalue" operator="=" enclosevalueinquotes="false" fieldmodel="TimeIn" sourcetype="fieldvalue" nosourcerowbehavior="deactivate" field="Time_in_and_out_same__c" value="true"/>
                              </renderconditions>
                           </richtext>
                           <basicfieldeditor showheader="true" showsavecancel="false" showerrorsinline="true" model="TimeIn" buttonposition="" uniqueid="sk-3uhp7s-197" mode="edit" layout="above">
                              <columns>
                                 <column width="100%">
                                    <sections>
                                       <section title="Notes for this day" collapsible="no">
                                          <fields>
                                             <field id="Daily_Summary_Notes__c" valuehalign="" type="">
                                                <label> </label>
                                             </field>
                                          </fields>
                                       </section>
                                    </sections>
                                 </column>
                              </columns>
                              <conditions>
                                 <condition type="contextrow" field="Id" mergefield="Id" autocreated="true"/>
                              </conditions>
                           </basicfieldeditor>
                        </components>
                     </onclickpopup>
                     <eventtemplate>{{Time_In_Event_Display__c}}</eventtemplate>
                  </eventsource>
                  <eventsource name="Time Out" createable="false" deleteable="false" updateable="true" eventclickhandler="custompopup" showdefaultbuttons="true" model="TimeIn" startfield="Time_Out_Formula__c" endfield="Day_End_Formula__c" groupfield="User__c">
                     <onclickpopup title="Set Time In and Out" width="40%" showdefaultbuttons="false">
                        <components>
                           <basicfieldeditor showheader="true" showsavecancel="false" showerrorsinline="true" model="TimeIn" buttonposition="" uniqueid="sk-3ud2pS-405" mode="edit" layout="above">
                              <columns>
                                 <column width="50%">
                                    <sections>
                                       <section title="Time In" collapsible="no">
                                          <fields>
                                             <field id="Time_In__c" valuehalign="" type="">
                                                <label> </label>
                                             </field>
                                          </fields>
                                       </section>
                                    </sections>
                                 </column>
                                 <column width="50%">
                                    <sections>
                                       <section title="Time Out" collapsible="no">
                                          <fields>
                                             <field id="Time_Out__c" valuehalign="" type="">
                                                <label> </label>
                                             </field>
                                          </fields>
                                       </section>
                                    </sections>
                                 </column>
                              </columns>
                              <conditions>
                                 <condition type="contextrow" field="Id" mergefield="Id" autocreated="true"/>
                              </conditions>
                           </basicfieldeditor>
                           <basicfieldeditor showheader="true" showsavecancel="false" showerrorsinline="true" model="TimeIn" buttonposition="" uniqueid="sk-3uhQBY-139" mode="read" layout="above">
                              <columns>
                                 <column width="100%">
                                    <sections>
                                       <section title="Notes for this day" collapsible="no">
                                          <fields>
                                             <field id="Daily_Summary_Notes__c" valuehalign="" type="">
                                                <label> </label>
                                             </field>
                                          </fields>
                                       </section>
                                    </sections>
                                 </column>
                              </columns>
                              <conditions>
                                 <condition type="contextrow" field="Id" mergefield="Id" autocreated="true"/>
                              </conditions>
                           </basicfieldeditor>
                        </components>
                     </onclickpopup>
                     <eventtemplate>{{Time_Out_Event_Display__c}}</eventtemplate>
                  </eventsource>
               </sources>
               <views>
                  <eventview type="dayscheduling" searchbox="true" searchmethod="client" groupingmodel="User" pagesize="" starthour="8" endhour="19" divisionsperhour="2">
                     <groupingtemplate>{{Name}}</groupingtemplate>
                  </eventview>
               </views>
            </skoocal>
         </components>
         <styles>
            <styleitem type="background" bgtype="color">
               <styles>
                  <styleitem property="background-color" value="white"/>
               </styles>
            </styleitem>
            <styleitem type="border" padding="bottom,right,top,left," margin="top,">
               <styles>
                  <styleitem property="padding-left" value="5px"/>
                  <styleitem property="padding-top" value="5px"/>
                  <styleitem property="padding-right" value="5px"/>
                  <styleitem property="padding-bottom" value="5px"/>
                  <styleitem property="margin-top" value="25px"/>
                  <styleitem property="box-sizing" value="border-box"/>
               </styles>
            </styleitem>
            <styleitem type="size"/>
         </styles>
         <renderconditions logictype="and"/>
      </wrapper>
      <richtext multiple="false" uniqueid="sk-3qfAau-90">
         <contents>&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</contents>
      </richtext>
   </components>
   <resources>
      <labels/>
      <javascript/>
      <css/>
   </resources>
   <styles>
      <styleitem type="background" bgtype="image" bg-source="external" bg-url="https://upload.wikimedia.org/wikipedia/commons/2/2a/Mission_Mountains_National_Bison_Range_Montana.j...;
         <styles>
            <styleitem property="background-size" value="cover"/>
            <styleitem property="background-attachment" value="fixed"/>
            <styleitem property="background-position" value="center center"/>
            <styleitem property="background-repeat" value="no-repeat"/>
            <styleitem property="background-color" value="transparent"/>
         </styles>
      </styleitem>
      <styleitem property="padding-left" value="5%"/>
      <styleitem property="padding-right" value="5%"/>
   </styles>
   <pageregioncontents>
      <pageregioncontent uniqueid="__header">
         <components>
            <skuidheader sticky="true">
               <components>
                  <grid uniqueid="sk-3lnf82-76">
                     <divisions>
                        <division behavior="fit" verticalalign="center">
                           <components>
                              <navigation uniqueid="sk-3lnjtA-94">
                                 <navigationitems>
                                    <navigationitem icon="fa-bars">
                                       <actions>
                                          <action type="redirect" window="self"/>
                                       </actions>
                                    </navigationitem>
                                 </navigationitems>
                              </navigation>
                           </components>
                        </division>
                        <division behavior="flex" verticalalign="center" minwidth="100px" ratio="1">
                           <components>
                              <pagetitle uniqueid="sk-3lngyU-85" model="Appts">
                                 <actions>
                                    <action type="savecancel" window="self">
                                       <savehotkeys>
                                          <hotkey modifiers="ctrl" key="s"/>
                                       </savehotkeys>
                                       <models>
                                          <model>User</model>
                                          <model>TimeIn&l
Photo of Griffin Brown

Griffin Brown

  • 2,766 Points 2k badge 2x thumb
Apparently when you use a datetime formula field, it really slows down the performance. I did a workflow workaround