# YUI Container: Panel: Creating a 'Loading' Popup

# Using Panel as a 'Wait' Indicator

The Panel can be used to display a temporary message is automatically dismissed when a task has completed. In this tutorial, we will build a Panel that will be displayed while content is being loaded from an external data source, and will be dismissed when the content has finished loading.

We will start by instantiating a Panel and configuring it to display an image and some text in its body:

// Initialize the temporary Panel to display while waiting for external content to load YAHOO.example.container.wait = new YAHOO.widget.Panel("wait", { width:"240px", fixedcenter:true, close:false, draggable:false, modal:true, visible:false, effect:{effect:YAHOO.widget.ContainerEffect.FADE, duration:0.5} } ); YAHOO.example.container.wait.setHeader("Loading, please wait..."); YAHOO.example.container.wait.setBody('<img src="http://us.i1.yimg.com/us.yimg.com/i/us/per/gr/gp/rel_interstitial_loading.gif" />'); YAHOO.example.container.wait.render(document.body);

We will also need to place a container for the content that will be dynamically loaded:

<div id="content" style="visibility:hidden"></div>

Finally, we will set up our Connection object and configure its callback to load the content into the container element and close the Panel after the content has finished loading. If the connection is successful, the content will be loaded into the container and the Panel will be hidden. If the connection fails, an error message will be displayed in the container.

// Define the callback object for Connection Manager that will set the body of our content area when the content has loaded var content = document.getElementById("content"); var callback = { success : function(o) { content.innerHTML = o.responseText; content.style.visibility = "visible"; YAHOO.example.container.wait.hide(); }, failure : function(o) { content.innerHTML = o.responseText; content.style.visibility = "visible"; content.innerHTML = "CONNECTION FAILED!"; YAHOO.example.container.wait.hide(); } } // Show the Panel YAHOO.example.container.wait.show(); // Connect to our data source and load the data var conn = YAHOO.util.Connect.asyncRequest("GET", "../assets/somedata.php?r=" + new Date().getTime(), callback);
Continue to Functional Example >