diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js
index 2fcf6d1510..518f9b9a2d 100644
--- a/dashboard-ui/scripts/site.js
+++ b/dashboard-ui/scripts/site.js
@@ -48,16 +48,17 @@ var Dashboard = {
$.mobile.panel.prototype.options.classes.panel = "largePanel ui-panel";
$.event.special.swipe.verticalDistanceThreshold = 40;
- $.mobile.loader.prototype.options.disabled = true;
-
-
$.mobile.page.prototype.options.domCache = true;
+
+
+
$.mobile.loadingMessage = false;
- $.mobile.loader.prototype.options.html = "";
- $.mobile.loader.prototype.options.textVisible = false;
- $.mobile.loader.prototype.options.textOnly = true;
- $.mobile.loader.prototype.options.text = "";
+ //$.mobile.loader.prototype.options.disabled = true;
+ //$.mobile.loader.prototype.options.html = "";
+ //$.mobile.loader.prototype.options.textVisible = false;
+ //$.mobile.loader.prototype.options.textOnly = true;
+ //$.mobile.loader.prototype.options.text = "";
$.mobile.hideUrlBar = false;
$.mobile.autoInitializePage = false;
diff --git a/dashboard-ui/thirdparty/jquerymobile-1.4.5/jquery.mobile.custom.js b/dashboard-ui/thirdparty/jquerymobile-1.4.5/jquery.mobile.custom.js
index 2579d48adf..aefcea09f1 100644
--- a/dashboard-ui/thirdparty/jquerymobile-1.4.5/jquery.mobile.custom.js
+++ b/dashboard-ui/thirdparty/jquerymobile-1.4.5/jquery.mobile.custom.js
@@ -928,17 +928,7 @@ $.ui.plugin = {
}
},
- loading: function() {
- // If this is the first call to this function, instantiate a loader widget
- var loader = this.loading._widget || $( $.mobile.loader.prototype.defaultHtml ).loader(),
-
- // Call the appropriate method on the loader
- returnValue = loader.loader.apply( loader, arguments );
-
- // Make sure the loader is retained for future calls to this function.
- this.loading._widget = loader;
-
- return returnValue;
+ loading: function () {
}
});
@@ -3009,8 +2999,9 @@ $.widget.extend = function( target ) {
return target;
};
-$.widget.bridge = function( name, object ) {
- var fullName = object.prototype.widgetFullName || name;
+$.widget.bridge = function (name, object) {
+
+ var fullName = object.prototype.widgetFullName || name;
$.fn[ name ] = function( options ) {
var isMethodCall = typeof options === "string",
args = slice.call( arguments, 1 ),
@@ -3467,44 +3458,42 @@ $.widget( "mobile.page", {
});
this.element.enhanceWithin();
- // Dialog widget is deprecated in 1.4 remove this in 1.5
- if ( $.mobile.getAttribute( this.element[0], "role" ) === "dialog" && $.mobile.dialog ) {
- this.element.dialog();
- }
},
_enhance: function () {
var attrPrefix = "data-" + $.mobile.ns,
self = this;
+ var element = this.element[0];
+
if ( this.options.role ) {
- this.element.attr( "data-" + $.mobile.ns + "role", this.options.role );
+ element.setAttribute("data-" + $.mobile.ns + "role", this.options.role);
}
- this.element
- .attr( "tabindex", "0" )
- .addClass( "ui-page ui-page-theme-" + this.options.theme );
+ element.setAttribute("tabindex", "0");
+ element.classList.add("ui-page");
+ element.classList.add("ui-page-theme-" + this.options.theme);
- // Manipulation of content os Deprecated as of 1.4 remove in 1.5
- this.element.find( "[" + attrPrefix + "role='content']" ).each( function() {
- var $this = $( this ),
- theme = this.getAttribute( attrPrefix + "theme" ) || undefined;
- self.options.contentTheme = theme || self.options.contentTheme || ( self.options.dialog && self.options.theme ) || ( self.element.jqmData("role") === "dialog" && self.options.theme );
- $this.addClass( "ui-content" );
- if ( self.options.contentTheme ) {
- $this.addClass( "ui-body-" + ( self.options.contentTheme ) );
- }
- // Add ARIA role
- $this.attr( "role", "main" ).addClass( "ui-content" );
- });
+ var content = element.querySelector("div[data-role='content']");
+
+ if (content) {
+ var theme = content.getAttribute(attrPrefix + "theme") || undefined;
+ self.options.contentTheme = theme || self.options.contentTheme || (self.options.dialog && self.options.theme) || (self.element.jqmData("role") === "dialog" && self.options.theme);
+ content.classList.add("ui-content");
+ if (self.options.contentTheme) {
+ content.classList.add("ui-body-" + (self.options.contentTheme));
+ }
+ // Add ARIA role
+ content.setAttribute("role", "main");
+ content.classList.add("ui-content");
+ }
},
bindRemove: function( callback ) {
var page = this.element;
// when dom caching is not enabled or the page is embedded bind to remove the page on hide
- if ( !page.data( "mobile-page" ).options.domCache &&
- page.is( ":jqmData(external-page='true')" ) ) {
+ if ( !page.data( "mobile-page" ).options.domCache ) {
// TODO use _on - that is, sort out why it doesn't work in this case
page.bind( "pagehide.remove", callback || function( e, data ) {
@@ -3539,13 +3528,13 @@ $.widget( "mobile.page", {
this.setContainerBackground();
},
// Deprecated in 1.4 remove in 1.5
- removeContainerBackground: function() {
- this.element.closest( ":mobile-pagecontainer" ).pagecontainer({ "theme": "none" });
+ removeContainerBackground: function () {
+ $(this.element[0].parentNode).pagecontainer({ "theme": "none" });
},
// Deprecated in 1.4 remove in 1.5
// set the page container background to the page theme
setContainerBackground: function( theme ) {
- this.element.parent().pagecontainer( { "theme": theme || this.options.theme } );
+ $(this.element[0].parentNode).pagecontainer({ "theme": theme || this.options.theme });
},
// Deprecated in 1.4 remove in 1.5
keepNativeSelector: function() {
@@ -5164,15 +5153,16 @@ $.fn.grid = function( options ) {
return content.page({ role: role });
},
- _include: function( page, settings ) {
- // append to page and enhance
- page.appendTo( this.element );
+ _include: function (page, jPage, settings) {
+
+ // append to page and enhance
+ this.element[0].appendChild(page);
// use the page widget to enhance
- this._enhance( page, settings.role );
+ this._enhance(jPage, settings.role);
// remove page on hide
- page.page( "bindRemove" );
+ jPage.page("bindRemove");
},
_find: function( absUrl ) {
@@ -5219,25 +5209,9 @@ $.fn.grid = function( options ) {
},
_showLoading: function( delay, theme, msg, textonly ) {
- // This configurable timeout allows cached pages a brief
- // delay to load without showing a message
- if ( this._loadMsg ) {
- return;
- }
-
- this._loadMsg = setTimeout($.proxy(function() {
- this._getLoader().loader( "show", theme, msg, textonly );
- this._loadMsg = 0;
- }, this), delay );
},
_hideLoading: function() {
- // Stop message show timer
- clearTimeout( this._loadMsg );
- this._loadMsg = 0;
-
- // Hide loading message
- this._getLoader().loader( "hide" );
},
_showError: function() {
@@ -5254,36 +5228,41 @@ $.fn.grid = function( options ) {
_parse: function( html, fileUrl ) {
// TODO consider allowing customization of this method. It's very JQM specific
- var page, all = $( "
" );
+ var page, all = document.createElement('div');
//workaround to allow scripts to execute when included in page divs
- all.get( 0 ).innerHTML = html;
+ all.innerHTML = html;
- page = all.find( ":jqmData(role='page'), :jqmData(role='dialog')" ).first();
+ page = all.querySelector("*[data-role='page'],*[data-role='dialog']");
//if page elem couldn't be found, create one and insert the body element's contents
- if ( !page.length ) {
+ if ( !page ) {
page = $( "" +
( html.split( /<\/?body[^>]*>/gmi )[1] || "" ) +
- "
" );
+ "" )[0];
}
// TODO tagging a page with external to make sure that embedded pages aren't
// removed by the various page handling code is bad. Having page handling code
// in many places is bad. Solutions post 1.0
- page.attr( "data-" + this._getNs() + "url", this._createDataUrl( fileUrl ) )
- .attr( "data-" + this._getNs() + "external-page", true );
+ page.setAttribute("data-" + this._getNs() + "url", this._createDataUrl(fileUrl));
+ page.setAttribute("data-" + this._getNs() + "external-page", true);
return page;
},
_setLoadedTitle: function( page, html ) {
//page title regexp
- var newPageTitle = html.match( /]*>([^<]*)/ ) && RegExp.$1;
+ if ( !page.jqmData("title") ) {
- if ( newPageTitle && !page.jqmData("title") ) {
- newPageTitle = $( "" + newPageTitle + "
" ).text();
- page.jqmData( "title", newPageTitle );
+ var newPageTitle = html.match(/]*>([^<]*)/) && RegExp.$1;
+
+ if (newPageTitle) {
+ var temp = document.createElement('div');
+ temp.innerHTML = newPageTitle;
+ newPageTitle = temp.innerText || $(temp).text();
+ page.jqmData("title", newPageTitle);
+ }
}
},
@@ -5327,36 +5306,14 @@ $.fn.grid = function( options ) {
if ($.mobile.filterHtml) {
html = $.mobile.filterHtml(html);
}
- //pre-parse html to check for a data-url,
- //use it as the new fileUrl, base path, etc
- var content,
-
- // TODO handle dialogs again
- pageElemRegex = new RegExp( "(<[^>]+\\bdata-" + this._getNs() + "role=[\"']?page[\"']?[^>]*>)" ),
-
- dataUrlRegex = new RegExp( "\\bdata-" + this._getNs() + "url=[\"']?([^\"'>]*)[\"']?" );
-
- // data-url must be provided for the base tag so resource requests
- // can be directed to the correct url. loading into a temprorary
- // element makes these requests immediately
- if ( pageElemRegex.test( html ) &&
- RegExp.$1 &&
- dataUrlRegex.test( RegExp.$1 ) &&
- RegExp.$1 ) {
- fileUrl = $.mobile.path.getFilePath( $("" + RegExp.$1 + "
").text() );
-
- // We specify that, if a data-url attribute is given on the page div, its value
- // must be given non-URL-encoded. However, in this part of the code, fileUrl is
- // assumed to be URL-encoded, so we URL-encode the retrieved value here
- fileUrl = this.window[ 0 ].encodeURIComponent( fileUrl );
- }
//dont update the base tag if we are prefetching
if ( settings.prefetch === undefined ) {
this._getBase().set( fileUrl );
}
- content = this._parse( html, fileUrl );
+ var contentElem = this._parse(html, fileUrl);
+ var content = $(contentElem);
this._setLoadedTitle( content, html );
@@ -5371,25 +5328,12 @@ $.fn.grid = function( options ) {
triggerData.toPage = content;
- // If the default behavior is prevented, stop here!
- // Note that it is the responsibility of the listener/handler
- // that called preventDefault(), to resolve/reject the
- // deferred object within the triggerData.
- if ( this._triggerWithDeprecated( "load", triggerData ).event.isDefaultPrevented() ) {
- return;
- }
-
// rewrite src and href attrs to use a base url if the base tag won't work
if ( this._isRewritableBaseTag() && content ) {
this._getBase().rewrite( fileUrl, content );
}
- this._include( content, settings );
-
- // Remove loading message.
- if ( settings.showLoadMsg ) {
- this._hideLoading();
- }
+ this._include(contentElem, content, settings);
deferred.resolve( absUrl, settings, content );
}, this);
@@ -6472,142 +6416,6 @@ $.fn.grid = function( options ) {
})( jQuery );
-(function( $ ) {
- // TODO move loader class down into the widget settings
- var loaderClass = "ui-loader", $html = $( "html" );
-
- $.widget( "mobile.loader", {
- // NOTE if the global config settings are defined they will override these
- // options
- options: {
- // the theme for the loading message
- theme: "a",
-
- // whether the text in the loading message is shown
- textVisible: false,
-
- // custom html for the inner content of the loading message
- html: "",
-
- // the text to be displayed when the popup is shown
- text: "loading"
- },
-
- defaultHtml: "" +
- "" +
- "
" +
- "",
-
- // For non-fixed supportin browsers. Position at y center (if scrollTop supported), above the activeBtn (if defined), or just 100px from top
- fakeFixLoader: function() {
- var activeBtn = $( "." + $.mobile.activeBtnClass ).first();
-
- this.element
- .css({
- top: $.support.scrollTop && this.window.scrollTop() + this.window.height() / 2 ||
- activeBtn.length && activeBtn.offset().top || 100
- });
- },
-
- // check position of loader to see if it appears to be "fixed" to center
- // if not, use abs positioning
- checkLoaderPosition: function() {
- var offset = this.element.offset(),
- scrollTop = this.window.scrollTop(),
- screenHeight = $.mobile.getScreenHeight();
-
- if ( offset.top < scrollTop || ( offset.top - scrollTop ) > screenHeight ) {
- this.element.addClass( "ui-loader-fakefix" );
- this.fakeFixLoader();
- this.window
- .unbind( "scroll", this.checkLoaderPosition )
- .bind( "scroll", $.proxy( this.fakeFixLoader, this ) );
- }
- },
-
- resetHtml: function() {
- this.element.html( $( this.defaultHtml ).html() );
- },
-
- // Turn on/off page loading message. Theme doubles as an object argument
- // with the following shape: { theme: '', text: '', html: '', textVisible: '' }
- // NOTE that the $.mobile.loading* settings and params past the first are deprecated
- // TODO sweet jesus we need to break some of this out
- show: function( theme, msgText, textonly ) {
- var textVisible, message, loadSettings;
-
- this.resetHtml();
-
- // use the prototype options so that people can set them globally at
- // mobile init. Consistency, it's what's for dinner
- if ( $.type( theme ) === "object" ) {
- loadSettings = $.extend( {}, this.options, theme );
-
- theme = loadSettings.theme;
- } else {
- loadSettings = this.options;
-
- // here we prefer the theme value passed as a string argument, then
- // we prefer the global option because we can't use undefined default
- // prototype options, then the prototype option
- theme = theme || loadSettings.theme;
- }
-
- // set the message text, prefer the param, then the settings object
- // then loading message
- message = msgText || ( loadSettings.text === false ? "" : loadSettings.text );
-
- // prepare the dom
- $html.addClass( "ui-loading" );
-
- textVisible = loadSettings.textVisible;
-
- // add the proper css given the options (theme, text, etc)
- // Force text visibility if the second argument was supplied, or
- // if the text was explicitly set in the object args
- this.element.attr("class", loaderClass +
- " ui-corner-all ui-body-" + theme +
- " ui-loader-" + ( textVisible || msgText || theme.text ? "verbose" : "default" ) +
- ( loadSettings.textonly || textonly ? " ui-loader-textonly" : "" ) );
-
- // TODO verify that jquery.fn.html is ok to use in both cases here
- // this might be overly defensive in preventing unknowing xss
- // if the html attribute is defined on the loading settings, use that
- // otherwise use the fallbacks from above
- if ( loadSettings.html ) {
- this.element.html( loadSettings.html );
- } else {
- this.element.find( "h1" ).text( message );
- }
-
- // If the pagecontainer widget has been defined we may use the :mobile-pagecontainer
- // and attach to the element on which the pagecontainer widget has been defined. If not,
- // we attach to the body.
- this.element.appendTo( $.mobile.pagecontainer ?
- $( ":mobile-pagecontainer" ) : $( "body" ) );
-
- // check that the loader is visible
- this.checkLoaderPosition();
-
- // on scroll check the loader position
- this.window.bind( "scroll", $.proxy( this.checkLoaderPosition, this ) );
- },
-
- hide: function() {
- $html.removeClass( "ui-loading" );
-
- if ( this.options.text ) {
- this.element.removeClass( "ui-loader-fakefix" );
- }
-
- this.window.unbind( "scroll", this.fakeFixLoader );
- this.window.unbind( "scroll", this.checkLoaderPosition );
- }
- });
-
-})(jQuery, this);
-
-
(function( $, window, undefined ) {
var $html = $( "html" ),
$window = $.mobile.window;