UNPKG

pixl-webapp

Version:

A client-side JavaScript framework, designed to be a base for web applications.

117 lines (96 loc) 3.34 kB
// Dialog Tools // Author: Joseph Huckaby // Released under the MIT License. var Dialog = { active: false, clickBlock: false, showAuto: function(title, inner_html, click_block) { // measure size of HTML to create correctly positioned dialog var temp = $('<div/>').css({ position: 'absolute', visibility: 'hidden' }).html(inner_html).appendTo('body'); var width = temp.width(); var height = temp.height(); temp.remove(); this.show( width, height, title, inner_html, click_block ); }, autoResize: function() { // automatically resize dialog to match changed content size var temp = $('<div/>').css({ position: 'absolute', visibility: 'hidden' }).html( $('#dialog_main').html() ).appendTo('body'); var width = temp.width(); var height = temp.height(); temp.remove(); var size = get_inner_window_size(); var x = Math.floor( (size.width / 2) - ((width + 0) / 2) ); var y = Math.floor( ((size.height / 2) - (height / 2)) * 0.75 ); $('#dialog_main').css({ width: '' + width + 'px', height: '' + height + 'px' }); $('#dialog_container').css({ left: '' + x + 'px', top: '' + y + 'px' }); }, show: function(width, height, title, inner_html, click_block) { // show dialog this.clickBlock = click_block || false; var body = document.getElementsByTagName('body')[0]; // build html for dialog var html = ''; if (title) { html += '<div class="tab_bar" style="width:'+width+'px;">'; html += '<div class="tab active"><span class="content">'+title+'</span></div>'; html += '</div>'; } html += '<div id="dialog_main" style="width:auto; height:auto;">'; html += inner_html; html += '</div>'; var size = get_inner_window_size(); var x = Math.floor( (size.width / 2) - ((width + 0) / 2) ); var y = Math.floor( ((size.height / 2) - (height / 2)) * 0.75 ); if ($('#dialog_overlay').length) { $('#dialog_overlay').stop().remove(); } var overlay = document.createElement('div'); overlay.id = 'dialog_overlay'; overlay.style.opacity = 0; body.appendChild(overlay); $(overlay).fadeTo( 500, 0.75 ).click(function() { if (!Dialog.clickBlock) Dialog.hide(); }); if ($('#dialog_container').length) { $('#dialog_container').stop().remove(); } var container = document.createElement('div'); container.id = 'dialog_container'; container.style.opacity = 0; container.style.left = '' + x + 'px'; container.style.top = '' + y + 'px'; container.innerHTML = html; body.appendChild(container); $(container).fadeTo( 250, 1.0 ); this.active = true; }, hide: function() { // hide dialog if (this.active) { $('#dialog_container').stop().fadeOut( 250, function() { $(this).remove(); } ); $('#dialog_overlay').stop().fadeOut( 500, function() { $(this).remove(); } ); this.active = false; } }, showProgress: function(msg) { // show simple progress dialog (unspecified duration) var html = ''; html += '<table width="300" height="120" cellspacing="0" cellpadding="0"><tr><td width="300" height="120" align="center" valign="center">'; html += '<img src="images/loading.gif" width="32" height="32"/><br/><br/>'; html += '<span class="label" style="padding-top:5px">' + msg + '</span>'; html += '</td></tr></table>'; this.show( 300, 120, '', html ); } };