download.html 2.53 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
<!doctype html>
<html lang="en">
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title>jQuery UI Progressbar - Download Dialog</title>
	<link rel="stylesheet" href="../../themes/base/all.css">
	<link rel="stylesheet" href="../demos.css">
	<script src="../../external/requirejs/require.js"></script>
	<script src="../bootstrap.js" data-modules="dialog">
		var progressTimer,
			progressbar = $( "#progressbar" ),
			progressLabel = $( ".progress-label" ),
			dialogButtons = [{
				text: "Cancel Download",
				click: closeDownload
			}],
			dialog = $( "#dialog" ).dialog({
				autoOpen: false,
				closeOnEscape: false,
				resizable: false,
				buttons: dialogButtons,
				open: function() {
					progressTimer = setTimeout( progress, 2000 );
				},
				beforeClose: function() {
					downloadButton.button( "option", {
						disabled: false,
						label: "Start Download"
					});
				}
			}),
			downloadButton = $( "#downloadButton" )
				.button()
				.on( "click", function() {
					$( this ).button( "option", {
						disabled: true,
						label: "Downloading..."
					});
					dialog.dialog( "open" );
				});

		progressbar.progressbar({
			value: false,
			change: function() {
				progressLabel.text( "Current Progress: " + progressbar.progressbar( "value" ) + "%" );
			},
			complete: function() {
				progressLabel.text( "Complete!" );
				dialog.dialog( "option", "buttons", [{
					text: "Close",
					click: closeDownload
				}]);
				$(".ui-dialog button").last().trigger( "focus" );
			}
		});

		function progress() {
			var val = progressbar.progressbar( "value" ) || 0;

			progressbar.progressbar( "value", val + Math.floor( Math.random() * 3 ) );

			if ( val <= 99 ) {
				progressTimer = setTimeout( progress, 50 );
			}
		}

		function closeDownload() {
			clearTimeout( progressTimer );
			dialog
				.dialog( "option", "buttons", dialogButtons )
				.dialog( "close" );
			progressbar.progressbar( "value", false );
			progressLabel
				.text( "Starting download..." );
			downloadButton.trigger( "focus" );
		}
	</script>
	<style>
	#progressbar {
		margin-top: 20px;
	}

	.progress-label {
		font-weight: bold;
		text-shadow: 1px 1px 0 #fff;
	}

	.ui-dialog-titlebar-close {
		display: none;
	}
	</style>
</head>
<body>

<div id="dialog" title="File Download">
	<div class="progress-label">Starting download...</div>
	<div id="progressbar"></div>
</div>
<button id="downloadButton">Start Download</button>

<div class="demo-description">
<p>Download dialog progressbar demo.</p>
</div>
</body>
</html>