Permalink
Cannot retrieve contributors at this time
Fetching contributors…
| // 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); | |
| return msg; | |
| }; | |
| var ajax_error_dialog = function (jqXHR, status, error) { | |
| console.log("ajax dialog", arguments); | |
| var msg = log_ajax_error(jqXHR, status, error); | |
| var dialog = $("#error-dialog"); | |
| dialog.find(".ajax-error").text(msg); | |
| dialog.modal(); | |
| }; | |
| 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, | |
| ajax_error_dialog : ajax_error_dialog, | |
| }; | |
| return utils; | |
| }); |