summaryrefslogtreecommitdiff
path: root/vendor/assets/javascripts/peek.js
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/assets/javascripts/peek.js')
-rw-r--r--vendor/assets/javascripts/peek.js84
1 files changed, 84 insertions, 0 deletions
diff --git a/vendor/assets/javascripts/peek.js b/vendor/assets/javascripts/peek.js
new file mode 100644
index 00000000000..2d5d05ca8e6
--- /dev/null
+++ b/vendor/assets/javascripts/peek.js
@@ -0,0 +1,84 @@
+var requestId;
+
+requestId = null;
+
+(function($) {
+ var fetchRequestResults, getRequestId, initializeTipsy, peekEnabled, toggleBar, updatePerformanceBar;
+ getRequestId = function() {
+ if (requestId != null) {
+ return requestId;
+ } else {
+ return $('#peek').data('request-id');
+ }
+ };
+ peekEnabled = function() {
+ return $('#peek').length;
+ };
+ updatePerformanceBar = function(results) {
+ var key, label;
+ for (key in results.data) {
+ for (label in results.data[key]) {
+ $("[data-defer-to=" + key + "-" + label + "]").text(results.data[key][label]);
+ }
+ }
+ return $(document).trigger('peek:render', [getRequestId(), results]);
+ };
+ initializeTipsy = function() {
+ return $('#peek .peek-tooltip, #peek .tooltip').each(function() {
+ var el, gravity;
+ el = $(this);
+ gravity = el.hasClass('rightwards') || el.hasClass('leftwards') ? $.fn.tipsy.autoWE : $.fn.tipsy.autoNS;
+ return el.tipsy({
+ gravity: gravity
+ });
+ });
+ };
+ toggleBar = function(event) {
+ var wrapper;
+ if ($(event.target).is(':input')) {
+ return;
+ }
+ if (event.which === 96 && !event.metaKey) {
+ wrapper = $('#peek');
+ if (wrapper.hasClass('disabled')) {
+ wrapper.removeClass('disabled');
+ return document.cookie = "peek=true; path=/";
+ } else {
+ wrapper.addClass('disabled');
+ return document.cookie = "peek=false; path=/";
+ }
+ }
+ };
+ fetchRequestResults = function() {
+ return $.ajax('/peek/results', {
+ data: {
+ request_id: getRequestId()
+ },
+ success: function(data, textStatus, xhr) {
+ return updatePerformanceBar(data);
+ },
+ error: function(xhr, textStatus, error) {}
+ });
+ };
+ $(document).on('keypress', toggleBar);
+ $(document).on('peek:update', initializeTipsy);
+ $(document).on('peek:update', fetchRequestResults);
+ $(document).on('pjax:end', function(event, xhr, options) {
+ if (xhr != null) {
+ requestId = xhr.getResponseHeader('X-Request-Id');
+ }
+ if (peekEnabled()) {
+ return $(this).trigger('peek:update');
+ }
+ });
+ $(document).on('page:change turbolinks:load', function() {
+ if (peekEnabled()) {
+ return $(this).trigger('peek:update');
+ }
+ });
+ return $(function() {
+ if (peekEnabled()) {
+ return $(this).trigger('peek:update');
+ }
+ });
+})(jQuery);