mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-11 12:03:00 +00:00
move static files to share/jupyter/hub
avoids conflict with other jupyter projects
This commit is contained in:
127
share/jupyter/hub/static/js/utils.js
Normal file
127
share/jupyter/hub/static/js/utils.js
Normal file
@@ -0,0 +1,127 @@
|
||||
// Based on IPython's base.js.utils
|
||||
// Original Copyright (c) IPython Development Team.
|
||||
// Distributed under the terms of the Modified BSD License.
|
||||
|
||||
// Modifications Copyright (c) Juptyer Development Team.
|
||||
// Distributed under the terms of the Modified BSD License.
|
||||
|
||||
define(['jquery'], function($){
|
||||
"use strict";
|
||||
|
||||
var url_path_join = function () {
|
||||
// join a sequence of url components with '/'
|
||||
var url = '';
|
||||
for (var i = 0; i < arguments.length; i++) {
|
||||
if (arguments[i] === '') {
|
||||
continue;
|
||||
}
|
||||
if (url.length > 0 && url[url.length-1] != '/') {
|
||||
url = url + '/' + arguments[i];
|
||||
} else {
|
||||
url = url + arguments[i];
|
||||
}
|
||||
}
|
||||
url = url.replace(/\/\/+/, '/');
|
||||
return url;
|
||||
};
|
||||
|
||||
var parse_url = function (url) {
|
||||
// an `a` element with an href allows attr-access to the parsed segments of a URL
|
||||
// a = parse_url("http://localhost:8888/path/name#hash")
|
||||
// a.protocol = "http:"
|
||||
// a.host = "localhost:8888"
|
||||
// a.hostname = "localhost"
|
||||
// a.port = 8888
|
||||
// a.pathname = "/path/name"
|
||||
// a.hash = "#hash"
|
||||
var a = document.createElement("a");
|
||||
a.href = url;
|
||||
return a;
|
||||
};
|
||||
|
||||
var encode_uri_components = function (uri) {
|
||||
// encode just the components of a multi-segment uri,
|
||||
// leaving '/' separators
|
||||
return uri.split('/').map(encodeURIComponent).join('/');
|
||||
};
|
||||
|
||||
var url_join_encode = function () {
|
||||
// join a sequence of url components with '/',
|
||||
// encoding each component with encodeURIComponent
|
||||
return encode_uri_components(url_path_join.apply(null, arguments));
|
||||
};
|
||||
|
||||
|
||||
var escape_html = function (text) {
|
||||
// escape text to HTML
|
||||
return $("<div/>").text(text).html();
|
||||
};
|
||||
|
||||
var get_body_data = function(key) {
|
||||
// get a url-encoded item from body.data and decode it
|
||||
// we should never have any encoded URLs anywhere else in code
|
||||
// until we are building an actual request
|
||||
return decodeURIComponent($('body').data(key));
|
||||
};
|
||||
|
||||
|
||||
// http://stackoverflow.com/questions/2400935/browser-detection-in-javascript
|
||||
var browser = (function() {
|
||||
if (typeof navigator === 'undefined') {
|
||||
// navigator undefined in node
|
||||
return 'None';
|
||||
}
|
||||
var N= navigator.appName, ua= navigator.userAgent, tem;
|
||||
var M= ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i);
|
||||
if (M && (tem= ua.match(/version\/([\.\d]+)/i)) !== null) M[2]= tem[1];
|
||||
M= M? [M[1], M[2]]: [N, navigator.appVersion,'-?'];
|
||||
return M;
|
||||
})();
|
||||
|
||||
// http://stackoverflow.com/questions/11219582/how-to-detect-my-browser-version-and-operating-system-using-javascript
|
||||
var platform = (function () {
|
||||
if (typeof navigator === 'undefined') {
|
||||
// navigator undefined in node
|
||||
return 'None';
|
||||
}
|
||||
var OSName="None";
|
||||
if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows";
|
||||
if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS";
|
||||
if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX";
|
||||
if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux";
|
||||
return OSName;
|
||||
})();
|
||||
|
||||
var ajax_error_msg = function (jqXHR) {
|
||||
// Return a JSON error message if there is one,
|
||||
// otherwise the basic HTTP status text.
|
||||
if (jqXHR.responseJSON && jqXHR.responseJSON.message) {
|
||||
return jqXHR.responseJSON.message;
|
||||
} else {
|
||||
return jqXHR.statusText;
|
||||
}
|
||||
};
|
||||
|
||||
var log_ajax_error = function (jqXHR, status, error) {
|
||||
// log ajax failures with informative messages
|
||||
var msg = "API request failed (" + jqXHR.status + "): ";
|
||||
console.log(jqXHR);
|
||||
msg += ajax_error_msg(jqXHR);
|
||||
console.log(msg);
|
||||
};
|
||||
|
||||
var utils = {
|
||||
url_path_join : url_path_join,
|
||||
url_join_encode : url_join_encode,
|
||||
encode_uri_components : encode_uri_components,
|
||||
escape_html : escape_html,
|
||||
get_body_data : get_body_data,
|
||||
parse_url : parse_url,
|
||||
browser : browser,
|
||||
platform: platform,
|
||||
ajax_error_msg : ajax_error_msg,
|
||||
log_ajax_error : log_ajax_error,
|
||||
};
|
||||
|
||||
return utils;
|
||||
});
|
Reference in New Issue
Block a user