qtools_profiler-8.x-1.x-dev/js/profiler-preview-silent.js

js/profiler-preview-silent.js
/**
 * @file
 * Behaviours for profiler wrapper.
 */

// Namespace.
var qToolsProfilerPreview = {
  'loaded': null,
  'defaultReport': null,
  'inspector': null,
  'requests': [],
  'reports': [],
  'iframeReceiver': null
};

(function () {
  var preview = qToolsProfilerPreview;
  var observer = qToolsProfilerPreviewObserver;
  var log = !!qtools.cookieGet('qToolsProfilerPreview.log');

  /**
   * Sends updated requests list to inspector.
   */
  preview.onUpdateRequests = function (requests) {
    // Save request info locally for late inspector connections.
    preview.requests = requests;
    preview.sendRequestsList(requests);
  };

  /**
   * Sends report content to inspector.
   */
  preview.onSetReportContent = function (data) {
    preview.sendReportContent(data.report, data.content || {});
  };

  /**
   * Sends report content to inspector.
   */
  preview.sendForceReport = function (report) {
    preview.defaultReport = report;
    preview.sendMessage('FORCE_REPORT', {
      'report': report
    });
  };


  /**
   * Sends report content to inspector.
   */
  preview.sendReportContent = function (report, content) {
    preview.sendMessage('REPORT_CONTENT_SET', {
      'report': report,
      'content': content
    });
  };

  /**
   * Sends request list to inspector.
   */
  preview.sendRequestsList = function (requests) {
    preview.sendMessage('REQUESTS_SET', requests);
  };

  /**
   * Sends request list to inspector.
   */
  preview.sendReportsList = function (reports) {
    preview.sendMessage('REPORTS_SET', reports);
  };

  /**
   * Message handlers.
   */
  preview.handleMessage = {};

  /**
   * Handle connect message.
   */
  preview.handleMessage['CONNECT'] = function(data, e) {
    preview.inspector = e.data.data;
    log && console.log('Inspector connected :', preview.inspector);
    preview.sendRequestsList(preview.requests);
    preview.sendReportsList(preview.reports);
    preview.sendForceReport(preview.defaultReport);
  };

  /**
   * Handle report selection message.
   */
  preview.handleMessage['SELECT_REPORT'] = function(data, e) {
    preview.reportSelected(data);
  };

  /**
   * Sends message to preview content frame.
   */
  preview.sendMessage = function (type, data) {
    var message = {
      'type': type,
      'data': data,
      'version': 1,
      'source': 'preview',
      'inspector': preview.inspector
    };
    if (preview.inspector) {
      log && console.log('sendMessage', type, message);
      if (preview.inspector.mode === 'devtools') {
        // This message will be relayed via content-js from extension.
        window.postMessage(message);
      }
      else if (preview.inspector.mode === 'iframe' && preview.iframeReceiver) {
        // We post this message directly to iframe container.
        preview.iframeReceiver.postMessage(message, '*');
      }
      else {
        log && console.log('sendMessage failed', type, data);
      }
    }
    else {
      log && console.log('sendMessage declined', type, data);
    }
  };

  /**
   * Select report.
   */
  preview.reportSelected = function(data) {
    observer.reportSelected(data.report);
  };

  /**
   * Handle pageLoad.
   */
  preview.handlePageLoad = function (context, settings) {
    if (!preview.loaded && settings.qtools_profiler.request_id) {
      preview.loaded = true;
      // preview.requestId = settings.qtools_profiler.request_id;
      preview.reports = settings.qtools_profiler.reports;

      // Starts listening window messages.
      window.addEventListener('message', function(e) {
        if (e.data && e.data.type && e.data.source !== 'preview') {
          if (preview.handleMessage[e.data.type]) {
            preview.handleMessage[e.data.type](e.data.data, e);
          }
          else {
            log && console.log('Unhandled message', e);
          }
        }
      });

      // Subscribe to observer.
      observer.subscribe({
        'onUpdateRequests': function (data) {
          preview.onUpdateRequests(data.requests);
        },
        'onSetReportContent': function (data) {
          preview.onSetReportContent(data);
        }
      });
    }
  };

  /**
   * Register behavior.
   */
  Drupal.behaviors.qToolsProfilerPreview = {
    attach: function (context, settings) {
      preview.handlePageLoad(context, settings);
    }
  };

})();

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc