From 2d3e450fcbd591b7ecd414fd407a913d15a0f8ae Mon Sep 17 00:00:00 2001
From: Nigel Kukard <nkukard@lbsd.net>
Date: Thu, 23 Jul 2009 08:11:06 +0000
Subject: [PATCH] * Improved startup of application

---
 webgui/index.html     | 52 +++++++++++++++++++++--------
 webgui/js/app/main.js | 77 +++++++++++++++++++++++--------------------
 2 files changed, 79 insertions(+), 50 deletions(-)

diff --git a/webgui/index.html b/webgui/index.html
index 887f99da..283b4eba 100644
--- a/webgui/index.html
+++ b/webgui/index.html
@@ -1,7 +1,19 @@
-<html>
+<!DOCTYPE html 
+     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
 <style type="text/css">
-	#loading {
+	#loading-mask{
+		position:absolute;
+		left:0;
+		top:0;
+		width:100%;
+		height:100%;
+		z-index:20000;
+		background-color:white;
+	}
+	#loading{
 		position:absolute;
 		left:45%;
 		top:40%;
@@ -9,29 +21,41 @@
 		z-index:20001;
 		height:auto;
 	}
+	#loading a {
+		color:#225588;
+	}
+	#loading .loading-indicator{
+		background:white;
+		color:#444;
+		font:bold 13px tahoma,arial,helvetica;
+		padding:10px;
+		margin:0;
+		height:auto;
+	}
 	#loading-msg {
 		font: normal 10px arial,tahoma,sans-serif;
 	}
 </style>
-
-
 </head>
 <body>
+	<div id="loading-mask" style=""></div>
 	<div id="loading">
-		<div class="loading-indicator">
-			Loading: <span id="loading-msg"></span>
+    		<div class="loading-indicator">
+			<img src="resources/extjs/images/extanim32.gif" width="32" height="32" style="margin-right:8px;float:left;vertical-align:top;"/>
+			SMRadius WebGUI - <a href="http://smradius.org">smradius.org</a><br /><span id="loading-msg">Loading styles and images...</span>
 		</div>
-	<div>
+	</div>
 
 
-	<script type="text/javascript">document.getElementById('loading-msg').innerHTML = 'Stylesheets...';</script>
+	<script type="text/javascript">document.getElementById('loading-msg').innerHTML = 'Loading stylesheets...';</script>
 
 	<link rel="stylesheet" type="text/css" href="resources/extjs/css/ext-all.css" />
 	<link rel="stylesheet" type="text/css" href="styles.css" />
+	<link rel="stylesheet" type="text/css" href="resources/custom/css/silk-icons.css" />
 	<link rel="stylesheet" type="text/css" href="icons.css" />
 	<link rel="stylesheet" type="text/css" href="resources/extjs/css/examples.css" />
 	
-	<script type="text/javascript">document.getElementById('loading-msg').innerHTML = 'Core API...';</script>
+	<script type="text/javascript">document.getElementById('loading-msg').innerHTML = 'Loading core API...';</script>
 	<script type="text/javascript" src="js/extjs/ext-base.js"></script>
 	<script type="text/javascript" src="js/extjs/ext-all.js"></script>
 
@@ -39,7 +63,7 @@
 	<!--
 		Our own libraries
 	-->
-	<script type="text/javascript">document.getElementById('loading-msg').innerHTML = 'Libraries...';</script>
+	<script type="text/javascript">document.getElementById('loading-msg').innerHTML = 'Loading libraries...';</script>
 	<script type="text/javascript" src="js/custom/util.js"></script>
 	<script type="text/javascript" src="js/custom/sprintf.js"></script>
 	<script type="text/javascript" src="js/custom/regexes.js"></script>
@@ -60,13 +84,13 @@
 	<!--
 		Main application
 	-->
-	<script type="text/javascript">document.getElementById('loading-msg').innerHTML = 'Configuration...';</script>
+	<script type="text/javascript">document.getElementById('loading-msg').innerHTML = 'Loading configuration...';</script>
 	<script type="text/javascript" src="js/app/config.js"></script>
 
-	<script type="text/javascript">document.getElementById('loading-msg').innerHTML = 'Menus...';</script>
+	<script type="text/javascript">document.getElementById('loading-msg').innerHTML = 'Loading menus...';</script>
 	<script type="text/javascript" src="js/app/menus.js"></script>
 
-	<script type="text/javascript">document.getElementById('loading-msg').innerHTML = 'Windows...';</script>
+	<script type="text/javascript">document.getElementById('loading-msg').innerHTML = 'Loading windows...';</script>
 	<script type="text/javascript" src="js/app/windows/WiSPUsers.js"></script>
 	<script type="text/javascript" src="js/app/windows/WiSPUserLogs.js"></script>
 	<script type="text/javascript" src="js/app/windows/WiSPUserTopups.js"></script>
@@ -86,7 +110,7 @@
 	<script type="text/javascript" src="js/app/windows/AdminGroupAttributes.js"></script>
 	<script type="text/javascript" src="js/app/windows/AdminGroupMembers.js"></script>
 
-	<script type="text/javascript">document.getElementById('loading-msg').innerHTML = 'Layout...';</script>
+	<script type="text/javascript">document.getElementById('loading-msg').innerHTML = 'Loading layout...';</script>
 	<script type="text/javascript" src="js/app/main-layout.js"></script>
 
 	<script type="text/javascript">document.getElementById('loading-msg').innerHTML = 'Starting...';</script>
diff --git a/webgui/js/app/main.js b/webgui/js/app/main.js
index aeb8ec55..4df7e53d 100644
--- a/webgui/js/app/main.js
+++ b/webgui/js/app/main.js
@@ -1,36 +1,41 @@
-/*
- * Ext JS Library 2.1
- * Copyright(c) 2006-2008, Ext JS, LLC.
- * licensing@extjs.com
- * 
- * http://extjs.com/license
- */
-
-
-
-Ext.onReady(function(){
-	// Turn off the loading icon
-	document.getElementById('loading').style.visibility = 'hidden';
-
-// this seems to save window states
-//    Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
-
-	// Enable tips
-	Ext.QuickTips.init();
-
-	// Turn on validation errors beside the field globally
-	Ext.form.Field.prototype.msgTarget = 'side';
-
-	// Range menu items, used on GridFilter
-        Ext.menu.RangeMenu.prototype.icons = {
-		gt: 'resources/extjs/images/greater_then.png',
-		lt: 'resources/extjs/images/less_then.png',
-		eq: 'resources/extjs/images/equals.png'
-        };
-        Ext.grid.filter.StringFilter.prototype.icon = 'resources/extjs/images/find.png';
-
-
-	// Fire everything up
-	initViewport();
-
-});
+/*
+ * Ext JS Library 2.1
+ * Copyright(c) 2006-2008, Ext JS, LLC.
+ * licensing@extjs.com
+ * 
+ * http://extjs.com/license
+ */
+
+
+
+Ext.onReady(function(){
+
+	// Enable tips
+	Ext.QuickTips.init();
+
+	// Turn on validation errors beside the field globally
+	Ext.form.Field.prototype.msgTarget = 'side';
+
+	// Range menu items, used on GridFilter
+        Ext.menu.RangeMenu.prototype.icons = {
+		gt: 'resources/extjs/images/greater_then.png',
+		lt: 'resources/extjs/images/less_then.png',
+		eq: 'resources/extjs/images/equals.png'
+        };
+        Ext.grid.filter.StringFilter.prototype.icon = 'resources/extjs/images/find.png';
+
+
+	// Turn off the loading icon
+	var hideMask = function () {
+		Ext.get('loading').remove();
+		Ext.fly('loading-mask').fadeOut({
+			remove: true,
+			callback: function() {
+				// Fire everything up
+				initViewport();
+			}
+		});
+	}
+
+	hideMask.defer(250);
+});
-- 
GitLab