Created
November 14, 2016 22:46
-
-
Save brianmfear/ae3ee70d93166f5cf5f2d1c365ae22aa to your computer and use it in GitHub Desktop.
Asynchronous Loading of Data: JavaScript vs Visualforce
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class LoaderDemoController { | |
@RemoteAction public static String getSalesforce() { | |
Long start = DateTime.now().getTime(); | |
String Salesforce = | |
'data:image/jpeg;base64,'+ | |
EncodingUtil.base64Encode( | |
new ApexPages.PageReference(url.getSalesforceBaseUrl().toExternalForm()+'/img/seasonLogos/Winter_17_175x65.png').getContent() | |
); | |
// minimum 1 second delay... | |
while(DateTime.now().getTime()-start<1000); | |
return Salesforce; | |
} | |
public String SalesforceString { get; set; } | |
public Boolean SalesforceLoaded { get; set; } | |
public LoaderDemoController() { | |
SalesforceLoaded = false; | |
} | |
public void loadSalesforce() { | |
SalesforceLoaded = true; | |
SalesforceString = getSalesforce(); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<apex:page controller="LoaderDemoController"> | |
<script> | |
function load(event) { | |
var div = document.getElementById('ajaxSpinner'); | |
div.classList.remove('hidden'); | |
event.preventDefault(); | |
{!$RemoteAction.LoaderDemoController.getSalesforce}( | |
function(data, event) { | |
document.getElementById('imageHolder').src = data; | |
document.getElementById('imageHolder').classList.remove('hidden'); | |
div.classList.add('hidden'); | |
} | |
); | |
return false; | |
} | |
</script> | |
<apex:form id="form"> | |
<div style="position: relative; height: 400px"> | |
<div style="vertical-align: text-top; height: 100%; display: inline-block; width: 49%; text-align: center; position: relative"> | |
<h1> | |
AJAX Salesforce Load | |
</h1> | |
<button style="btn" onclick="return load(event);"> | |
Load Salesforce | |
</button> | |
<div id="ajaxSpinner" class="hidden" style="position; absolute; left: 0; top: 0; right: 0; bottom: 0; margin-top: 190px"> | |
<img src="/img/loading.gif" /> | |
</div> | |
<div> | |
<img class="hidden" id="imageHolder" /> | |
</div> | |
</div> | |
<div style="vertical-align: text-top; height: 100%; display: inline-block; width: 49%; text-align: center; position: relative"> | |
<h1> | |
Visualforce Salesforce Load | |
</h1> | |
<div style="position: absolute; left: 0; right: 0; top: 0; bottom: 0; margin-top:200px;"> | |
<apex:actionStatus id="status"> | |
<apex:facet name="start"> | |
<img src="/img/loading.gif" /> | |
</apex:facet> | |
</apex:actionStatus> | |
</div> | |
<apex:commandButton action="{!loadSalesforce}" value="Load Salesforce" reRender="form" status="status" /> | |
<apex:outputText escape="false" rendered="{!SalesforceLoaded}"> | |
<div> | |
<img src="{!SalesforceString}" /> | |
</div> | |
</apex:outputText> | |
</div> | |
</div> | |
</apex:form> | |
</apex:page> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment