123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- 'use strict';
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
- /*
- *+------------------------------------------------------------------------+
- *| Licensed Materials - Property of IBM
- *| IBM Cognos Products: Dashboard
- *| (C) Copyright IBM Corp. 2018
- *|
- *| US Government Users Restricted Rights - Use, duplication or disclosure
- *| restricted by GSA ADP Schedule Contract with IBM Corp.
- *+------------------------------------------------------------------------+
- */
- define(['underscore'], function (_) {
- 'use strict';
- return function () {
- function VisRenderTrace(renderState) {
- _classCallCheck(this, VisRenderTrace);
- // disable tracer by default
- this._enabledTrace = false;
- this._trace = {};
- this._renderState = renderState;
- }
- /**
- * Enable or disable the tracer
- * note: tracer is disabled by default
- * @param {boolean} [enable = true] boolean flag to enable tracing when it's true otherwise disable tracing
- */
- VisRenderTrace.prototype.enable = function enable() {
- var _enable = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
- return this._enabledTrace = _enable;
- };
- /**
- * Clear all trace
- */
- VisRenderTrace.prototype.clear = function clear() {
- return this._trace = {};
- };
- /**
- * Get all recorded render sequence trace
- * @return {Object} render sequence trace
- */
- VisRenderTrace.prototype.getTrace = function getTrace() {
- return this._trace;
- };
- /**
- * Starts a trace for a single render senquence run
- * @param {Object[]} tasks array of all tasks to run in the current render sequence
- * @param {Object} renderContext render context object
- * @param {Object} renderOptions render options given by the caller on the render request
- */
- VisRenderTrace.prototype.startRender = function startRender(tasks, renderContext, options) {
- var _this = this;
- if (this._enabledTrace) {
- var renderId = renderContext.id;
- // prepare the render sequence trace object
- if (this._trace[renderId] === undefined) {
- this._trace[renderId] = {
- options: options,
- steps: []
- };
- }
- // prepare the render sequence task trace object for each tasks
- _.each(tasks, function (task) {
- _this._trace[renderId].steps.push({
- step: task.id
- });
- });
- }
- };
- /**
- * Starts a trace for a single render sequemce task
- * @param {Object} task render sequence task
- * @param {Object} renderContext render context object
- */
- VisRenderTrace.prototype.startTask = function startTask(task, renderContext) {
- if (this._enabledTrace) {
- var trace = this._getRenderTaskTrace(renderContext.id, task.id);
- if (trace) {
- // record the task start time
- trace.start = new Date().toISOString();
- }
- }
- };
- /**
- * trace a task dependency
- */
- VisRenderTrace.prototype.taskDependency = function taskDependency(task, renderContext, dependency) {
- if (this._enabledTrace) {
- var trace = this._getRenderTaskTrace(renderContext.id, task.id);
- if (trace) {
- if (trace.dependencies === undefined) {
- trace.dependencies = [];
- }
- trace.dependencies.push(dependency);
- }
- }
- };
- /**
- * Ends a trace for a sing render sequence task
- * @param {Object} task render sequence task
- * @param {Object} renderContext render context object
- * @param {string} status status string of the task
- * @param {Error=} err optional error object
- */
- VisRenderTrace.prototype.endTask = function endTask(task, renderContext, status, err) {
- if (this._enabledTrace) {
- var trace = this._getRenderTaskTrace(renderContext.id, task.id);
- if (trace) {
- // record the task end time, status and currentContext
- trace.end = new Date().toISOString();
- trace.status = status;
- trace.currentContext = _.clone(this._renderState._currentContext);
- // record the error object (if applicable)
- if (err) {
- trace.error = err;
- }
- // record the render laps time after each task
- var renderTrace = this._getRenderTrace(renderContext.id);
- if (renderTrace) {
- renderTrace.elapsed = new Date(trace.end).getTime() - new Date(renderTrace.steps[0].start).getTime();
- }
- }
- }
- };
- /**
- * Get a root trace object for particular render sequence
- * @param {string} renderId render identifier
- * @return {object} render sequence trace object
- */
- VisRenderTrace.prototype._getRenderTrace = function _getRenderTrace(renderId) {
- return this._trace[renderId];
- };
- /**
- * Get a trace object for a particular render sequence and task
- * @param {string} renderId render identifier
- * @param {string} taskId render sequence task identifier
- * @return {object} render sequence task trace object
- */
- VisRenderTrace.prototype._getRenderTaskTrace = function _getRenderTaskTrace(renderId, taskId) {
- var renderTrace = this._getRenderTrace(renderId);
- if (renderTrace) {
- return _.find(renderTrace.steps, function (entry) {
- return entry.step === taskId;
- });
- }
- };
- return VisRenderTrace;
- }();
- });
- //# sourceMappingURL=VisRenderTrace.js.map
|