mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Utils: Global debugger utils (#32951)
* Global debugger utils * Update packages/grafana-ui/src/utils/debug.ts Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com> * Update packages/grafana-ui/src/utils/debug.ts Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com> * Update packages/grafana-ui/src/components/uPlot/utils.ts Co-authored-by: Torkel Ödegaard <torkel@grafana.org> * Update packages/grafana-ui/src/utils/debug.ts Co-authored-by: Torkel Ödegaard <torkel@grafana.org> * fix merge suggestion * Typos Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com> Co-authored-by: Torkel Ödegaard <torkel@grafana.org>
This commit is contained in:
parent
52243d859b
commit
024b6b5779
@ -1,7 +1,7 @@
|
|||||||
import { deprecationWarning, UrlQueryMap, urlUtil } from '@grafana/data';
|
import { deprecationWarning, UrlQueryMap, urlUtil } from '@grafana/data';
|
||||||
import * as H from 'history';
|
import * as H from 'history';
|
||||||
import { LocationUpdate } from './LocationSrv';
|
import { LocationUpdate } from './LocationSrv';
|
||||||
import { createLogger } from '@grafana/ui';
|
import { attachDebugger, createLogger } from '@grafana/ui';
|
||||||
import { config } from '../config';
|
import { config } from '../config';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -35,24 +35,6 @@ export class HistoryWrapper implements LocationService {
|
|||||||
? H.createMemoryHistory({ initialEntries: ['/'] })
|
? H.createMemoryHistory({ initialEntries: ['/'] })
|
||||||
: H.createBrowserHistory({ basename: config.appSubUrl ?? '/' });
|
: H.createBrowserHistory({ basename: config.appSubUrl ?? '/' });
|
||||||
|
|
||||||
// For debugging purposes the location service is attached to global _debug variable
|
|
||||||
if (process.env.NODE_ENV !== 'production') {
|
|
||||||
// @ts-ignore
|
|
||||||
let debugGlobal = window['_debug'];
|
|
||||||
if (debugGlobal) {
|
|
||||||
debugGlobal = {
|
|
||||||
...debugGlobal,
|
|
||||||
location: this,
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
debugGlobal = {
|
|
||||||
location: this,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
// @ts-ignore
|
|
||||||
window['_debug'] = debugGlobal;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.partial = this.partial.bind(this);
|
this.partial = this.partial.bind(this);
|
||||||
this.push = this.push.bind(this);
|
this.push = this.push.bind(this);
|
||||||
this.replace = this.replace.bind(this);
|
this.replace = this.replace.bind(this);
|
||||||
@ -168,5 +150,10 @@ export const setLocationService = (location: LocationService) => {
|
|||||||
locationService = location;
|
locationService = location;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const navigationLog = createLogger('Router');
|
||||||
|
|
||||||
/** @internal */
|
/** @internal */
|
||||||
export const navigationLogger = createLogger('Router');
|
export const navigationLogger = navigationLog.logger;
|
||||||
|
|
||||||
|
// For debugging purposes the location service is attached to global _debug variable
|
||||||
|
attachDebugger('location', locationService, navigationLog);
|
||||||
|
@ -2,8 +2,8 @@ import { DataFrame, dateTime, FieldType } from '@grafana/data';
|
|||||||
import { AlignedData, Options } from 'uplot';
|
import { AlignedData, Options } from 'uplot';
|
||||||
import { PlotPlugin, PlotProps } from './types';
|
import { PlotPlugin, PlotProps } from './types';
|
||||||
import { createLogger } from '../../utils/logger';
|
import { createLogger } from '../../utils/logger';
|
||||||
|
import { attachDebugger } from '../../utils';
|
||||||
|
|
||||||
const LOGGING_ENABLED = false;
|
|
||||||
const ALLOWED_FORMAT_STRINGS_REGEX = /\b(YYYY|YY|MMMM|MMM|MM|M|DD|D|WWWW|WWW|HH|H|h|AA|aa|a|mm|m|ss|s|fff)\b/g;
|
const ALLOWED_FORMAT_STRINGS_REGEX = /\b(YYYY|YY|MMMM|MMM|MM|M|DD|D|WWWW|WWW|HH|H|h|AA|aa|a|mm|m|ss|s|fff)\b/g;
|
||||||
|
|
||||||
export function timeFormatToTemplate(f: string) {
|
export function timeFormatToTemplate(f: string) {
|
||||||
@ -63,4 +63,7 @@ export function preparePlotData(frame: DataFrame, ignoreFieldTypes?: FieldType[]
|
|||||||
// Dev helpers
|
// Dev helpers
|
||||||
|
|
||||||
/** @internal */
|
/** @internal */
|
||||||
export const pluginLog = createLogger('uPlot Plugin', LOGGING_ENABLED);
|
export const pluginLogger = createLogger('uPlot Plugin');
|
||||||
|
export const pluginLog = pluginLogger.logger;
|
||||||
|
|
||||||
|
attachDebugger('graphng', undefined, pluginLogger);
|
||||||
|
22
packages/grafana-ui/src/utils/debug.ts
Normal file
22
packages/grafana-ui/src/utils/debug.ts
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
import { Logger } from './logger';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allows debug helpers attachement to the window object
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
export function attachDebugger(key: string, thebugger?: any, logger?: Logger) {
|
||||||
|
if (process.env.NODE_ENV === 'production') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let completeDebugger = thebugger || {};
|
||||||
|
|
||||||
|
if (logger !== undefined) {
|
||||||
|
completeDebugger = { ...completeDebugger, enable: () => logger.enable(), disable: () => logger.disable() };
|
||||||
|
}
|
||||||
|
|
||||||
|
// @ts-ignore
|
||||||
|
let debugGlobal = window['_debug'] ?? {};
|
||||||
|
debugGlobal[key] = completeDebugger;
|
||||||
|
// @ts-ignore
|
||||||
|
window['_debug'] = debugGlobal;
|
||||||
|
}
|
@ -12,3 +12,4 @@ import * as DOMUtil from './dom'; // includes Element.closest polyfill
|
|||||||
export { DOMUtil };
|
export { DOMUtil };
|
||||||
export { renderOrCallToRender } from './renderOrCallToRender';
|
export { renderOrCallToRender } from './renderOrCallToRender';
|
||||||
export { createLogger } from './logger';
|
export { createLogger } from './logger';
|
||||||
|
export { attachDebugger } from './debug';
|
||||||
|
@ -1,15 +1,33 @@
|
|||||||
import throttle from 'lodash/throttle';
|
import throttle from 'lodash/throttle';
|
||||||
|
|
||||||
/** @internal */
|
/**
|
||||||
|
* @internal
|
||||||
|
* */
|
||||||
const throttledLog = throttle((...t: any[]) => {
|
const throttledLog = throttle((...t: any[]) => {
|
||||||
console.log(...t);
|
console.log(...t);
|
||||||
}, 500);
|
}, 500);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
export interface Logger {
|
||||||
|
logger: (...t: any[]) => void;
|
||||||
|
enable: () => void;
|
||||||
|
disable: () => void;
|
||||||
|
}
|
||||||
|
|
||||||
/** @internal */
|
/** @internal */
|
||||||
export const createLogger = (name: string, enable = true) => (id: string, throttle = false, ...t: any[]) => {
|
export const createLogger = (name: string): Logger => {
|
||||||
if (process.env.NODE_ENV === 'production' || process.env.NODE_ENV === 'test' || !enable) {
|
let LOGGIN_ENABLED = false;
|
||||||
|
return {
|
||||||
|
logger: (id: string, throttle = false, ...t: any[]) => {
|
||||||
|
if (process.env.NODE_ENV === 'production' || process.env.NODE_ENV === 'test' || !LOGGIN_ENABLED) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const fn = throttle ? throttledLog : console.log;
|
const fn = throttle ? throttledLog : console.log;
|
||||||
fn(`[${name}: ${id}]: `, ...t);
|
fn(`[${name}: ${id}]: `, ...t);
|
||||||
|
},
|
||||||
|
enable: () => (LOGGIN_ENABLED = true),
|
||||||
|
disable: () => (LOGGIN_ENABLED = false),
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user