You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
devdocs/assets/javascripts/debug.js

113 lines
3.0 KiB

// TODO: This file was created by bulk-decaffeinate.
// Sanity-check the conversion and remove this comment.
/*
* decaffeinate suggestions:
* DS102: Remove unnecessary code created because of implicit returns
* DS203: Remove `|| {}` from converted for-own loops
* DS207: Consider shorter variations of null checks
* DS208: Avoid top-level this
* DS209: Avoid top-level return
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/main/docs/suggestions.md
*/
if (!(typeof console !== 'undefined' && console !== null ? console.time : undefined) || !console.groupCollapsed) { return; }
//
// App
//
const _init = app.init;
app.init = function() {
console.time('Init');
_init.call(app);
console.timeEnd('Init');
return console.time('Load');
};
const _start = app.start;
app.start = function() {
console.timeEnd('Load');
console.time('Start');
_start.call(app, ...arguments);
return console.timeEnd('Start');
};
//
// Searcher
//
const _super = app.Searcher;
const _proto = app.Searcher.prototype;
app.Searcher = function() {
_super.apply(this, arguments);
const _setup = this.setup.bind(this);
this.setup = function() {
console.groupCollapsed(`Search: ${this.query}`);
console.time('Total');
return _setup();
};
const _match = this.match.bind(this);
this.match = () => {
if (this.matcher) { console.timeEnd(this.matcher.name); }
return _match();
};
const _setupMatcher = this.setupMatcher.bind(this);
this.setupMatcher = function() {
console.time(this.matcher.name);
return _setupMatcher();
};
const _end = this.end.bind(this);
this.end = function() {
console.log(`Results: ${this.totalResults}`);
console.timeEnd('Total');
console.groupEnd();
return _end();
};
const _kill = this.kill.bind(this);
this.kill = function() {
if (this.timeout) {
if (this.matcher) { console.timeEnd(this.matcher.name); }
console.groupEnd();
console.timeEnd('Total');
console.warn('Killed');
}
return _kill();
};
};
$.extend(app.Searcher, _super);
_proto.constructor = app.Searcher;
app.Searcher.prototype = _proto;
//
// View tree
//
this.viewTree = function(view, level, visited) {
if (view == null) { view = app.document; }
if (level == null) { level = 0; }
if (visited == null) { visited = []; }
if (visited.indexOf(view) >= 0) { return; }
visited.push(view);
console.log(`%c ${Array(level + 1).join(' ')}${view.constructor.name}: ${!!view.activated}`,
'color:' + ((view.activated && 'green') || 'red'));
for (var key of Object.keys(view || {})) {
var value = view[key];
if ((key !== 'view') && value) {
if ((typeof value === 'object') && value.setupElement) {
this.viewTree(value, level + 1, visited);
} else if (value.constructor.toString().match(/Object\(\)/)) {
for (var k of Object.keys(value || {})) { var v = value[k]; if (v && (typeof v === 'object') && v.setupElement) { this.viewTree(v, level + 1, visited); } }
}
}
}
};