ADd tracking for framework event debugging
Summary: ^ Reviewed By: lblasa Differential Revision: D48645332 fbshipit-source-id: faf558c592b00a69586970edea407d8997a54699
This commit is contained in:
committed by
Facebook GitHub Bot
parent
c0347ec830
commit
a275235a7c
@@ -56,14 +56,14 @@ type FrameworkEventAttribution = Stacktrace | Reason | UpstreamEvent;
|
|||||||
|
|
||||||
export type FrameworkEvent = {
|
export type FrameworkEvent = {
|
||||||
id: number;
|
id: number;
|
||||||
treeId?: Id;
|
treeId?: Id; //todo should be mandatory once ios implements this
|
||||||
nodeId: Id;
|
nodeId: Id;
|
||||||
type: FrameworkEventType;
|
type: FrameworkEventType;
|
||||||
timestamp: number;
|
timestamp: number;
|
||||||
payload?: JsonObject;
|
payload?: JsonObject;
|
||||||
duration?: number;
|
duration?: number;
|
||||||
attribution?: FrameworkEventAttribution;
|
attribution?: FrameworkEventAttribution;
|
||||||
thread?: 'main' | string;
|
thread?: 'main' | string; //todo should be mandatory once ios implements this
|
||||||
};
|
};
|
||||||
|
|
||||||
export type InitEvent = {
|
export type InitEvent = {
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import {eventTypeToName} from './sidebar/inspector/FrameworkEventsInspector';
|
|||||||
import {startCase} from 'lodash';
|
import {startCase} from 'lodash';
|
||||||
import {Visualization2D} from './visualizer/Visualization2D';
|
import {Visualization2D} from './visualizer/Visualization2D';
|
||||||
import {getNode} from '../utils/map';
|
import {getNode} from '../utils/map';
|
||||||
|
import {tracker} from '../utils/tracker';
|
||||||
|
|
||||||
export function FrameworkEventsTable({
|
export function FrameworkEventsTable({
|
||||||
nodeId,
|
nodeId,
|
||||||
@@ -45,6 +46,7 @@ export function FrameworkEventsTable({
|
|||||||
);
|
);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
tracker.track('framework-event-table-opened', {});
|
||||||
instance.uiActions.onSelectNode(undefined, 'tree');
|
instance.uiActions.onSelectNode(undefined, 'tree');
|
||||||
if (nodeId != null) {
|
if (nodeId != null) {
|
||||||
managerRef.current?.resetFilters();
|
managerRef.current?.resetFilters();
|
||||||
@@ -77,6 +79,12 @@ export function FrameworkEventsTable({
|
|||||||
|
|
||||||
const onSelectRow = useCallback(
|
const onSelectRow = useCallback(
|
||||||
(event: FrameworkEvent | undefined): void => {
|
(event: FrameworkEvent | undefined): void => {
|
||||||
|
if (event != null) {
|
||||||
|
tracker.track('framework-event-table-row-selected', {
|
||||||
|
eventType: event.type,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
instance.uiActions.onFocusNode(event?.nodeId);
|
instance.uiActions.onFocusNode(event?.nodeId);
|
||||||
},
|
},
|
||||||
[instance.uiActions],
|
[instance.uiActions],
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ import {FilterOutlined, TableOutlined} from '@ant-design/icons';
|
|||||||
import {ViewMode} from '../../../DesktopTypes';
|
import {ViewMode} from '../../../DesktopTypes';
|
||||||
import {MultiSelectableDropDownItem} from '../../shared/MultiSelectableDropDownItem';
|
import {MultiSelectableDropDownItem} from '../../shared/MultiSelectableDropDownItem';
|
||||||
import {formatDuration, formatTimestampMillis} from '../../../utils/timeUtils';
|
import {formatDuration, formatTimestampMillis} from '../../../utils/timeUtils';
|
||||||
|
import {tracker} from '../../../utils/tracker';
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
node: ClientNode;
|
node: ClientNode;
|
||||||
@@ -97,6 +98,14 @@ export const FrameworkEventsInspector: React.FC<Props> = ({
|
|||||||
{(showEventTypesSection || showThreadsSection) && (
|
{(showEventTypesSection || showThreadsSection) && (
|
||||||
<Dropdown
|
<Dropdown
|
||||||
overlayStyle={{minWidth: 200}}
|
overlayStyle={{minWidth: 200}}
|
||||||
|
onVisibleChange={(visible) => {
|
||||||
|
if (visible) {
|
||||||
|
tracker.track(
|
||||||
|
'framework-event-timeline-filters-adjusted',
|
||||||
|
{},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}}
|
||||||
overlay={
|
overlay={
|
||||||
<Layout.Container
|
<Layout.Container
|
||||||
gap="small"
|
gap="small"
|
||||||
@@ -179,6 +188,9 @@ export const FrameworkEventsInspector: React.FC<Props> = ({
|
|||||||
onClick={(current) => {
|
onClick={(current) => {
|
||||||
const idx = parseInt(current, 10);
|
const idx = parseInt(current, 10);
|
||||||
const event = filteredEvents[idx];
|
const event = filteredEvents[idx];
|
||||||
|
tracker.track('framework-event-timeline-event-selected', {
|
||||||
|
eventType: event.type,
|
||||||
|
});
|
||||||
showExtra?.(
|
showExtra?.(
|
||||||
'Event details',
|
'Event details',
|
||||||
<EventDetails
|
<EventDetails
|
||||||
|
|||||||
@@ -30,6 +30,14 @@ type TrackerEvents = {
|
|||||||
eventType: FrameworkEventType;
|
eventType: FrameworkEventType;
|
||||||
monitored: boolean;
|
monitored: boolean;
|
||||||
};
|
};
|
||||||
|
'framework-event-table-row-selected': {
|
||||||
|
eventType: FrameworkEventType;
|
||||||
|
};
|
||||||
|
'framework-event-table-opened': {};
|
||||||
|
'framework-event-timeline-filters-adjusted': {};
|
||||||
|
'framework-event-timeline-event-selected': {
|
||||||
|
eventType: FrameworkEventType;
|
||||||
|
};
|
||||||
'search-term-updated': {
|
'search-term-updated': {
|
||||||
searchTerm: string;
|
searchTerm: string;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user