@parca/profile 0.19.139 → 0.19.142
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/dist/GraphTooltipArrow/Content.js +224 -30
- package/dist/GraphTooltipArrow/DockedGraphTooltip/index.js +192 -33
- package/dist/GraphTooltipArrow/ExpandOnHoverValue.js +53 -3
- package/dist/GraphTooltipArrow/index.d.ts.map +1 -1
- package/dist/GraphTooltipArrow/index.js +86 -56
- package/dist/GraphTooltipArrow/useGraphTooltip/index.js +37 -37
- package/dist/GraphTooltipArrow/useGraphTooltipMetaInfo/index.js +103 -73
- package/dist/MatchersInput/SuggestionItem.js +91 -12
- package/dist/MatchersInput/SuggestionsList.d.ts +2 -1
- package/dist/MatchersInput/SuggestionsList.d.ts.map +1 -1
- package/dist/MatchersInput/SuggestionsList.js +371 -157
- package/dist/MatchersInput/SuggestionsList.test.d.ts +2 -0
- package/dist/MatchersInput/SuggestionsList.test.d.ts.map +1 -0
- package/dist/MatchersInput/index.js +308 -115
- package/dist/MetricsCircle/index.js +39 -3
- package/dist/MetricsGraph/MetricsContextMenu/index.js +119 -19
- package/dist/MetricsGraph/MetricsInfoPanel/index.js +81 -20
- package/dist/MetricsGraph/MetricsTooltip/index.d.ts.map +1 -1
- package/dist/MetricsGraph/MetricsTooltip/index.js +107 -74
- package/dist/MetricsGraph/index.js +552 -203
- package/dist/MetricsGraph/useMetricsGraphDimensions.js +46 -25
- package/dist/MetricsGraph/utils/colorMapping.js +24 -17
- package/dist/MetricsSeries/index.js +70 -7
- package/dist/PreSelectedMatchers/index.d.ts.map +1 -1
- package/dist/PreSelectedMatchers/index.js +249 -102
- package/dist/ProfileExplorer/ProfileExplorerCompare.js +240 -49
- package/dist/ProfileExplorer/ProfileExplorerSingle.js +98 -11
- package/dist/ProfileExplorer/index.js +183 -32
- package/dist/ProfileFlameChart/SamplesStrips/SamplesGraph/index.js +333 -148
- package/dist/ProfileFlameChart/SamplesStrips/SamplesStrips.stories.js +69 -35
- package/dist/ProfileFlameChart/SamplesStrips/index.js +645 -134
- package/dist/ProfileFlameChart/SamplesStrips/labelSetUtils.js +114 -55
- package/dist/ProfileFlameChart/index.js +266 -134
- package/dist/ProfileFlameGraph/FlameGraphArrow/ContextMenu.js +287 -88
- package/dist/ProfileFlameGraph/FlameGraphArrow/ContextMenuWrapper.js +56 -20
- package/dist/ProfileFlameGraph/FlameGraphArrow/FlameGraphNodes.js +211 -140
- package/dist/ProfileFlameGraph/FlameGraphArrow/MemoizedTooltip.js +133 -38
- package/dist/ProfileFlameGraph/FlameGraphArrow/MiniMap.js +261 -216
- package/dist/ProfileFlameGraph/FlameGraphArrow/TextWithEllipsis.d.ts.map +1 -1
- package/dist/ProfileFlameGraph/FlameGraphArrow/TextWithEllipsis.js +71 -45
- package/dist/ProfileFlameGraph/FlameGraphArrow/TooltipContext.d.ts.map +1 -1
- package/dist/ProfileFlameGraph/FlameGraphArrow/TooltipContext.js +58 -28
- package/dist/ProfileFlameGraph/FlameGraphArrow/ZoomControls.d.ts.map +1 -1
- package/dist/ProfileFlameGraph/FlameGraphArrow/ZoomControls.js +59 -8
- package/dist/ProfileFlameGraph/FlameGraphArrow/index.js +396 -179
- package/dist/ProfileFlameGraph/FlameGraphArrow/useBatchedRendering.d.ts.map +1 -1
- package/dist/ProfileFlameGraph/FlameGraphArrow/useBatchedRendering.js +68 -50
- package/dist/ProfileFlameGraph/FlameGraphArrow/useMappingList.js +62 -38
- package/dist/ProfileFlameGraph/FlameGraphArrow/useNodeColor.js +14 -6
- package/dist/ProfileFlameGraph/FlameGraphArrow/useScrollViewport.js +124 -82
- package/dist/ProfileFlameGraph/FlameGraphArrow/useVisibleNodes.js +160 -98
- package/dist/ProfileFlameGraph/FlameGraphArrow/useZoom.js +232 -112
- package/dist/ProfileFlameGraph/FlameGraphArrow/utils.js +137 -114
- package/dist/ProfileFlameGraph/benchmarks/benchdata/populateData.js +85 -0
- package/dist/ProfileFlameGraph/index.js +324 -148
- package/dist/ProfileMetricsGraph/hooks/useQueryRange.js +140 -32
- package/dist/ProfileMetricsGraph/index.js +518 -259
- package/dist/ProfileSelector/CompareButton.js +132 -12
- package/dist/ProfileSelector/MetricsGraphSection.js +234 -67
- package/dist/ProfileSelector/index.d.ts.map +1 -1
- package/dist/ProfileSelector/index.js +730 -142
- package/dist/ProfileSelector/useAutoQuerySelector.js +249 -130
- package/dist/ProfileSource.js +230 -163
- package/dist/ProfileTypeSelector/index.js +214 -125
- package/dist/ProfileView/components/ActionButtons/GroupByDropdown.js +50 -4
- package/dist/ProfileView/components/ActionButtons/SortByDropdown.js +139 -33
- package/dist/ProfileView/components/ColorStackLegend.js +184 -55
- package/dist/ProfileView/components/DashboardItems/index.js +87 -28
- package/dist/ProfileView/components/DashboardLayout/index.js +108 -16
- package/dist/ProfileView/components/DiffLegend.js +172 -29
- package/dist/ProfileView/components/GroupByLabelsDropdown/index.js +199 -55
- package/dist/ProfileView/components/InvertCallStack/index.js +99 -10
- package/dist/ProfileView/components/ProfileFilters/filterPresets.js +260 -315
- package/dist/ProfileView/components/ProfileFilters/index.js +518 -215
- package/dist/ProfileView/components/ProfileFilters/useProfileFilters.js +370 -306
- package/dist/ProfileView/components/ProfileFilters/useProfileFiltersUrlState.js +188 -120
- package/dist/ProfileView/components/ProfileHeader/index.js +105 -11
- package/dist/ProfileView/components/ShareButton/ResultBox.js +119 -16
- package/dist/ProfileView/components/ShareButton/index.js +352 -62
- package/dist/ProfileView/components/Toolbars/MultiLevelDropdown.d.ts.map +1 -1
- package/dist/ProfileView/components/Toolbars/MultiLevelDropdown.js +675 -195
- package/dist/ProfileView/components/Toolbars/SwitchMenuItem.js +94 -7
- package/dist/ProfileView/components/Toolbars/TableColumnsDropdown.js +198 -157
- package/dist/ProfileView/components/Toolbars/index.js +441 -21
- package/dist/ProfileView/components/ViewSelector/Dropdown.js +233 -22
- package/dist/ProfileView/components/ViewSelector/index.js +211 -91
- package/dist/ProfileView/components/VisualizationContainer/index.d.ts.map +1 -1
- package/dist/ProfileView/components/VisualizationContainer/index.js +52 -7
- package/dist/ProfileView/components/VisualizationPanel.js +185 -8
- package/dist/ProfileView/context/DashboardContext.js +84 -28
- package/dist/ProfileView/context/ProfileViewContext.js +56 -15
- package/dist/ProfileView/hooks/useAutoSelectDimension.js +71 -41
- package/dist/ProfileView/hooks/useProfileMetadata.js +50 -18
- package/dist/ProfileView/hooks/useResetFlameGraphState.js +31 -10
- package/dist/ProfileView/hooks/useResetStateOnProfileTypeChange.js +72 -29
- package/dist/ProfileView/hooks/useResetStateOnSeriesChange.js +39 -13
- package/dist/ProfileView/hooks/useVisualizationState.js +262 -87
- package/dist/ProfileView/index.js +383 -45
- package/dist/ProfileView/types/visualization.js +1 -13
- package/dist/ProfileView/utils/colorUtils.js +8 -7
- package/dist/ProfileViewWithData.js +332 -237
- package/dist/QueryControls/index.js +418 -47
- package/dist/Sandwich/components/CalleesSection.js +54 -4
- package/dist/Sandwich/components/CallersSection.js +97 -27
- package/dist/Sandwich/components/TableSection.js +77 -4
- package/dist/Sandwich/index.js +125 -12
- package/dist/Sandwich/utils/processRowData.js +48 -39
- package/dist/SelectWithRefresh/index.js +102 -28
- package/dist/SimpleMatchers/Select.js +520 -187
- package/dist/SimpleMatchers/index.js +590 -288
- package/dist/SourceView/Highlighter.js +230 -70
- package/dist/SourceView/LineNo.js +72 -17
- package/dist/SourceView/index.js +177 -101
- package/dist/SourceView/lang-detector/ext-to-lang.json +798 -798
- package/dist/SourceView/lang-detector/index.js +28 -14
- package/dist/SourceView/useSelectedLineRange.js +97 -16
- package/dist/Table/ColorCell.js +42 -1
- package/dist/Table/ColumnsVisibility.js +114 -6
- package/dist/Table/MoreDropdown.js +121 -27
- package/dist/Table/TableContextMenu.js +150 -139
- package/dist/Table/TableContextMenuWrapper.js +59 -14
- package/dist/Table/hooks/useColorManagement.js +58 -16
- package/dist/Table/hooks/useTableConfiguration.d.ts.map +1 -1
- package/dist/Table/hooks/useTableConfiguration.js +331 -168
- package/dist/Table/index.js +222 -126
- package/dist/Table/utils/functions.js +169 -144
- package/dist/Table/utils/topAndBottomExpandedRowModel.js +69 -52
- package/dist/TimelineGuide/index.js +209 -16
- package/dist/TopTable/benchmarks/benchdata/populateData.js +91 -0
- package/dist/TopTable/index.js +340 -122
- package/dist/contexts/LabelsQueryProvider.js +94 -32
- package/dist/contexts/UnifiedLabelsContext.js +114 -49
- package/dist/contexts/utils.js +37 -15
- package/dist/hooks/useCompareModeMeta.js +157 -94
- package/dist/hooks/useLabels.js +295 -52
- package/dist/hooks/useQueryState.js +371 -330
- package/dist/index.js +21 -16
- package/dist/testdata/fg-diff.json +3750 -0
- package/dist/testdata/fg-simple.json +1879 -0
- package/dist/testdata/link_data.json +56 -0
- package/dist/testdata/tabular.json +30 -0
- package/dist/testdata/test_flamegraph.json +26846 -0
- package/dist/testdata/test_graph.json +53 -0
- package/dist/useDelayedLoader.js +32 -18
- package/dist/useGrpcQuery/index.js +71 -11
- package/dist/useHasProfileData.js +90 -12
- package/dist/useQuery.js +205 -64
- package/dist/useSumBy.d.ts.map +1 -1
- package/dist/useSumBy.js +294 -138
- package/dist/utils.js +62 -30
- package/package.json +9 -9
- package/src/GraphTooltipArrow/index.tsx +3 -0
- package/src/MatchersInput/SuggestionsList.test.tsx +70 -0
- package/src/MatchersInput/SuggestionsList.tsx +11 -10
- package/src/MatchersInput/index.tsx +1 -1
- package/src/MetricsGraph/MetricsTooltip/index.tsx +22 -34
- package/src/PreSelectedMatchers/index.tsx +3 -0
- package/src/ProfileFlameGraph/FlameGraphArrow/TextWithEllipsis.tsx +3 -0
- package/src/ProfileFlameGraph/FlameGraphArrow/TooltipContext.tsx +3 -0
- package/src/ProfileFlameGraph/FlameGraphArrow/ZoomControls.tsx +3 -0
- package/src/ProfileFlameGraph/FlameGraphArrow/useBatchedRendering.ts +3 -0
- package/src/ProfileSelector/index.tsx +30 -7
- package/src/ProfileView/components/Toolbars/MultiLevelDropdown.tsx +3 -0
- package/src/ProfileView/components/VisualizationContainer/index.tsx +3 -0
- package/src/Table/hooks/useTableConfiguration.tsx +7 -13
- package/src/useDelayedLoader.ts +10 -10
- package/src/useSumBy.ts +12 -18
- package/dist/ProfileView/components/ProfileFilters/useProfileFiltersUrlState.test.js +0 -541
- package/dist/hooks/useQueryState.test.js +0 -984
package/dist/Table/index.js
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
2
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
4
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
5
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
2
7
|
// Copyright 2022 The Parca Authors
|
|
3
8
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
9
|
// you may not use this file except in compliance with the License.
|
|
@@ -11,144 +16,235 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
11
16
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
17
|
// See the License for the specific language governing permissions and
|
|
13
18
|
// limitations under the License.
|
|
19
|
+
|
|
14
20
|
import React, { useCallback, useEffect, useMemo, useRef } from 'react';
|
|
15
21
|
import { tableFromIPC } from '@uwdata/flechette';
|
|
16
22
|
import { AnimatePresence, motion } from 'framer-motion';
|
|
17
23
|
import { useContextMenu } from 'react-contexify';
|
|
18
|
-
import { Table as TableComponent, TableSkeleton, useParcaContext, useURLState
|
|
24
|
+
import { Table as TableComponent, TableSkeleton, useParcaContext, useURLState } from '@parca/components';
|
|
19
25
|
import { useCurrentColorProfile } from '@parca/hooks';
|
|
20
|
-
import useMappingList, { useFilenamesList
|
|
26
|
+
import useMappingList, { useFilenamesList } from '../ProfileFlameGraph/FlameGraphArrow/useMappingList';
|
|
21
27
|
import { useProfileViewContext } from '../ProfileView/context/ProfileViewContext';
|
|
22
28
|
import { alignedUint8Array } from '../utils';
|
|
23
29
|
import TableContextMenuWrapper from './TableContextMenuWrapper';
|
|
24
30
|
import { useColorManagement } from './hooks/useColorManagement';
|
|
25
31
|
import { useTableConfiguration } from './hooks/useTableConfiguration';
|
|
26
32
|
import { ROW_HEIGHT, RowName, getRowColor } from './utils/functions';
|
|
27
|
-
|
|
28
|
-
export
|
|
29
|
-
export
|
|
30
|
-
export
|
|
31
|
-
export
|
|
32
|
-
export
|
|
33
|
-
export
|
|
34
|
-
export
|
|
35
|
-
export
|
|
36
|
-
export
|
|
37
|
-
export
|
|
38
|
-
export
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
filtered,
|
|
80
|
-
compareMode,
|
|
33
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
34
|
+
export var FIELD_MAPPING_FILE = 'mapping_file';
|
|
35
|
+
export var FIELD_LOCATION_ADDRESS = 'location_address';
|
|
36
|
+
export var FIELD_FUNCTION_NAME = 'function_name';
|
|
37
|
+
export var FIELD_FUNCTION_SYSTEM_NAME = 'function_system_name';
|
|
38
|
+
export var FIELD_FUNCTION_FILE_NAME = 'function_file_name';
|
|
39
|
+
export var FIELD_FLAT = 'flat';
|
|
40
|
+
export var FIELD_FLAT_DIFF = 'flat_diff';
|
|
41
|
+
export var FIELD_CUMULATIVE = 'cumulative';
|
|
42
|
+
export var FIELD_CUMULATIVE_DIFF = 'cumulative_diff';
|
|
43
|
+
export var FIELD_CALLERS = 'callers';
|
|
44
|
+
export var FIELD_CALLEES = 'callees';
|
|
45
|
+
export var Table = /*#__PURE__*/React.memo(function Table(_ref) {
|
|
46
|
+
var data = _ref.data,
|
|
47
|
+
total = _ref.total,
|
|
48
|
+
filtered = _ref.filtered,
|
|
49
|
+
profileType = _ref.profileType,
|
|
50
|
+
loading = _ref.loading,
|
|
51
|
+
isHalfScreen = _ref.isHalfScreen,
|
|
52
|
+
unit = _ref.unit,
|
|
53
|
+
metadataMappingFiles = _ref.metadataMappingFiles,
|
|
54
|
+
error = _ref.error;
|
|
55
|
+
var currentColorProfile = useCurrentColorProfile();
|
|
56
|
+
var _useURLState = useURLState('dashboard_items', {
|
|
57
|
+
alwaysReturnArray: true
|
|
58
|
+
}),
|
|
59
|
+
_useURLState2 = _slicedToArray(_useURLState, 1),
|
|
60
|
+
dashboardItems = _useURLState2[0];
|
|
61
|
+
var _useURLState3 = useURLState('sandwich_function_name'),
|
|
62
|
+
_useURLState4 = _slicedToArray(_useURLState3, 2),
|
|
63
|
+
_ = _useURLState4[0],
|
|
64
|
+
setSandwichFunctionName = _useURLState4[1];
|
|
65
|
+
var _useURLState5 = useURLState('color_by'),
|
|
66
|
+
_useURLState6 = _slicedToArray(_useURLState5, 2),
|
|
67
|
+
colorBy = _useURLState6[0],
|
|
68
|
+
setColorBy = _useURLState6[1];
|
|
69
|
+
var _useParcaContext = useParcaContext(),
|
|
70
|
+
isDarkMode = _useParcaContext.isDarkMode;
|
|
71
|
+
var _useProfileViewContex = useProfileViewContext(),
|
|
72
|
+
compareMode = _useProfileViewContex.compareMode;
|
|
73
|
+
var MENU_ID = 'table-context-menu';
|
|
74
|
+
var contextMenuRef = useRef(null);
|
|
75
|
+
var _useContextMenu = useContextMenu({
|
|
76
|
+
id: MENU_ID
|
|
77
|
+
}),
|
|
78
|
+
show = _useContextMenu.show;
|
|
79
|
+
var table = useMemo(function () {
|
|
80
|
+
if (loading || data == null) {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
return tableFromIPC(alignedUint8Array(data), {
|
|
84
|
+
useBigInt: true
|
|
81
85
|
});
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
const onRowContextMenu = useCallback((e, row) => {
|
|
96
|
-
e.preventDefault();
|
|
97
|
-
contextMenuRef.current?.setRow(row, () => {
|
|
98
|
-
show({
|
|
99
|
-
event: e,
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
|
-
}, [show]);
|
|
103
|
-
const rows = useMemo(() => {
|
|
104
|
-
if (table == null || table.numRows === 0) {
|
|
105
|
-
return [];
|
|
106
|
-
}
|
|
107
|
-
const flatColumn = table.getChild(FIELD_FLAT);
|
|
108
|
-
const flatDiffColumn = table.getChild(FIELD_FLAT_DIFF);
|
|
109
|
-
const cumulativeColumn = table.getChild(FIELD_CUMULATIVE);
|
|
110
|
-
const cumulativeDiffColumn = table.getChild(FIELD_CUMULATIVE_DIFF);
|
|
111
|
-
const functionNameColumn = table.getChild(FIELD_FUNCTION_NAME);
|
|
112
|
-
const functionSystemNameColumn = table.getChild(FIELD_FUNCTION_SYSTEM_NAME);
|
|
113
|
-
const functionFileNameColumn = table.getChild(FIELD_FUNCTION_FILE_NAME);
|
|
114
|
-
const mappingFileColumn = table.getChild(FIELD_MAPPING_FILE);
|
|
115
|
-
const locationAddressColumn = table.getChild(FIELD_LOCATION_ADDRESS);
|
|
116
|
-
const getRow = (i) => {
|
|
117
|
-
const flat = flatColumn?.get(i) ?? 0n;
|
|
118
|
-
const flatDiff = flatDiffColumn?.get(i) ?? 0n;
|
|
119
|
-
const cumulative = cumulativeColumn?.get(i) ?? 0n;
|
|
120
|
-
const cumulativeDiff = cumulativeDiffColumn?.get(i) ?? 0n;
|
|
121
|
-
const functionSystemName = functionSystemNameColumn?.get(i) ?? '';
|
|
122
|
-
const functionFileName = functionFileNameColumn?.get(i) ?? '';
|
|
123
|
-
const mappingFile = mappingFileColumn?.get(i) ?? '';
|
|
124
|
-
return {
|
|
125
|
-
id: i,
|
|
126
|
-
colorProperty: {
|
|
127
|
-
color: getRowColor(colorByColors, mappingFileColumn, i, functionFileNameColumn, colorBy),
|
|
128
|
-
mappingFile,
|
|
129
|
-
},
|
|
130
|
-
name: RowName(mappingFileColumn, locationAddressColumn, functionNameColumn, i),
|
|
131
|
-
flat,
|
|
132
|
-
flatDiff,
|
|
133
|
-
cumulative,
|
|
134
|
-
cumulativeDiff,
|
|
135
|
-
functionSystemName,
|
|
136
|
-
functionFileName,
|
|
137
|
-
mappingFile,
|
|
138
|
-
};
|
|
139
|
-
};
|
|
140
|
-
const rows = Array.from({ length: table.numRows }, (_, i) => getRow(i));
|
|
141
|
-
return rows;
|
|
142
|
-
}, [table, colorByColors, colorBy]);
|
|
143
|
-
if (loading) {
|
|
144
|
-
return (_jsx("div", { className: "overflow-clip h-[700px] min-h-[700px]", children: _jsx(TableSkeleton, { isHalfScreen: isHalfScreen, isDarkMode: isDarkMode }) }));
|
|
86
|
+
}, [data, loading]);
|
|
87
|
+
var mappingsList = useMappingList(metadataMappingFiles);
|
|
88
|
+
var filenamesList = useFilenamesList(table);
|
|
89
|
+
var mappingsListCount = useMemo(function () {
|
|
90
|
+
return mappingsList.filter(function (m) {
|
|
91
|
+
return m !== '';
|
|
92
|
+
}).length;
|
|
93
|
+
}, [mappingsList]);
|
|
94
|
+
|
|
95
|
+
// If there is only one mapping file, we want to color by filename by default.
|
|
96
|
+
useEffect(function () {
|
|
97
|
+
if (mappingsListCount === 1 && colorBy !== 'filename') {
|
|
98
|
+
setColorBy('filename');
|
|
145
99
|
}
|
|
146
|
-
|
|
147
|
-
|
|
100
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
101
|
+
}, [mappingsListCount]);
|
|
102
|
+
var _useColorManagement = useColorManagement({
|
|
103
|
+
isDarkMode: isDarkMode,
|
|
104
|
+
currentColorProfile: currentColorProfile,
|
|
105
|
+
mappingsList: mappingsList,
|
|
106
|
+
filenamesList: filenamesList,
|
|
107
|
+
colorBy: colorBy
|
|
108
|
+
}),
|
|
109
|
+
colorByColors = _useColorManagement.colorByColors;
|
|
110
|
+
unit = useMemo(function () {
|
|
111
|
+
var _ref2;
|
|
112
|
+
return (_ref2 = unit !== null && unit !== void 0 ? unit : profileType === null || profileType === void 0 ? void 0 : profileType.sampleUnit) !== null && _ref2 !== void 0 ? _ref2 : '';
|
|
113
|
+
}, [unit, profileType === null || profileType === void 0 ? void 0 : profileType.sampleUnit]);
|
|
114
|
+
var tableConfig = useTableConfiguration({
|
|
115
|
+
unit: unit,
|
|
116
|
+
total: total,
|
|
117
|
+
filtered: filtered,
|
|
118
|
+
compareMode: compareMode
|
|
119
|
+
});
|
|
120
|
+
var columns = tableConfig.columns,
|
|
121
|
+
initialSorting = tableConfig.initialSorting,
|
|
122
|
+
columnVisibility = tableConfig.columnVisibility;
|
|
123
|
+
var selectSpan = useCallback(function (span) {
|
|
124
|
+
if (!dashboardItems.includes('flamegraph')) {
|
|
125
|
+
setSandwichFunctionName(span.trim());
|
|
148
126
|
}
|
|
149
|
-
|
|
150
|
-
|
|
127
|
+
}, [setSandwichFunctionName, dashboardItems]);
|
|
128
|
+
var onRowClick = useCallback(function (row) {
|
|
129
|
+
// If there is only one dashboard item, we don't want to select a span
|
|
130
|
+
if (dashboardItems.length <= 1) {
|
|
131
|
+
return;
|
|
151
132
|
}
|
|
152
|
-
|
|
133
|
+
selectSpan(row.name);
|
|
134
|
+
}, [selectSpan, dashboardItems.length]);
|
|
135
|
+
var onRowContextMenu = useCallback(function (e, row) {
|
|
136
|
+
var _contextMenuRef$curre;
|
|
137
|
+
e.preventDefault();
|
|
138
|
+
(_contextMenuRef$curre = contextMenuRef.current) === null || _contextMenuRef$curre === void 0 || _contextMenuRef$curre.setRow(row, function () {
|
|
139
|
+
show({
|
|
140
|
+
event: e
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
}, [show]);
|
|
144
|
+
var rows = useMemo(function () {
|
|
145
|
+
if (table == null || table.numRows === 0) {
|
|
146
|
+
return [];
|
|
147
|
+
}
|
|
148
|
+
var flatColumn = table.getChild(FIELD_FLAT);
|
|
149
|
+
var flatDiffColumn = table.getChild(FIELD_FLAT_DIFF);
|
|
150
|
+
var cumulativeColumn = table.getChild(FIELD_CUMULATIVE);
|
|
151
|
+
var cumulativeDiffColumn = table.getChild(FIELD_CUMULATIVE_DIFF);
|
|
152
|
+
var functionNameColumn = table.getChild(FIELD_FUNCTION_NAME);
|
|
153
|
+
var functionSystemNameColumn = table.getChild(FIELD_FUNCTION_SYSTEM_NAME);
|
|
154
|
+
var functionFileNameColumn = table.getChild(FIELD_FUNCTION_FILE_NAME);
|
|
155
|
+
var mappingFileColumn = table.getChild(FIELD_MAPPING_FILE);
|
|
156
|
+
var locationAddressColumn = table.getChild(FIELD_LOCATION_ADDRESS);
|
|
157
|
+
var getRow = function getRow(i) {
|
|
158
|
+
var _flatColumn$get, _flatDiffColumn$get, _cumulativeColumn$get, _cumulativeDiffColumn, _functionSystemNameCo, _functionFileNameColu, _mappingFileColumn$ge;
|
|
159
|
+
var flat = (_flatColumn$get = flatColumn === null || flatColumn === void 0 ? void 0 : flatColumn.get(i)) !== null && _flatColumn$get !== void 0 ? _flatColumn$get : 0n;
|
|
160
|
+
var flatDiff = (_flatDiffColumn$get = flatDiffColumn === null || flatDiffColumn === void 0 ? void 0 : flatDiffColumn.get(i)) !== null && _flatDiffColumn$get !== void 0 ? _flatDiffColumn$get : 0n;
|
|
161
|
+
var cumulative = (_cumulativeColumn$get = cumulativeColumn === null || cumulativeColumn === void 0 ? void 0 : cumulativeColumn.get(i)) !== null && _cumulativeColumn$get !== void 0 ? _cumulativeColumn$get : 0n;
|
|
162
|
+
var cumulativeDiff = (_cumulativeDiffColumn = cumulativeDiffColumn === null || cumulativeDiffColumn === void 0 ? void 0 : cumulativeDiffColumn.get(i)) !== null && _cumulativeDiffColumn !== void 0 ? _cumulativeDiffColumn : 0n;
|
|
163
|
+
var functionSystemName = (_functionSystemNameCo = functionSystemNameColumn === null || functionSystemNameColumn === void 0 ? void 0 : functionSystemNameColumn.get(i)) !== null && _functionSystemNameCo !== void 0 ? _functionSystemNameCo : '';
|
|
164
|
+
var functionFileName = (_functionFileNameColu = functionFileNameColumn === null || functionFileNameColumn === void 0 ? void 0 : functionFileNameColumn.get(i)) !== null && _functionFileNameColu !== void 0 ? _functionFileNameColu : '';
|
|
165
|
+
var mappingFile = (_mappingFileColumn$ge = mappingFileColumn === null || mappingFileColumn === void 0 ? void 0 : mappingFileColumn.get(i)) !== null && _mappingFileColumn$ge !== void 0 ? _mappingFileColumn$ge : '';
|
|
166
|
+
return {
|
|
167
|
+
id: i,
|
|
168
|
+
colorProperty: {
|
|
169
|
+
color: getRowColor(colorByColors, mappingFileColumn, i, functionFileNameColumn, colorBy),
|
|
170
|
+
mappingFile: mappingFile
|
|
171
|
+
},
|
|
172
|
+
name: RowName(mappingFileColumn, locationAddressColumn, functionNameColumn, i),
|
|
173
|
+
flat: flat,
|
|
174
|
+
flatDiff: flatDiff,
|
|
175
|
+
cumulative: cumulative,
|
|
176
|
+
cumulativeDiff: cumulativeDiff,
|
|
177
|
+
functionSystemName: functionSystemName,
|
|
178
|
+
functionFileName: functionFileName,
|
|
179
|
+
mappingFile: mappingFile
|
|
180
|
+
};
|
|
181
|
+
};
|
|
182
|
+
var rows = Array.from({
|
|
183
|
+
length: table.numRows
|
|
184
|
+
}, function (_, i) {
|
|
185
|
+
return getRow(i);
|
|
186
|
+
});
|
|
187
|
+
return rows;
|
|
188
|
+
}, [table, colorByColors, colorBy]);
|
|
189
|
+
if (loading) {
|
|
190
|
+
return /*#__PURE__*/_jsx("div", {
|
|
191
|
+
className: "overflow-clip h-[700px] min-h-[700px]",
|
|
192
|
+
children: /*#__PURE__*/_jsx(TableSkeleton, {
|
|
193
|
+
isHalfScreen: isHalfScreen,
|
|
194
|
+
isDarkMode: isDarkMode
|
|
195
|
+
})
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
if (error != null) {
|
|
199
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
200
|
+
className: "mx-auto text-center",
|
|
201
|
+
children: ["Error: ", error.message]
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
if (rows.length === 0) {
|
|
205
|
+
return /*#__PURE__*/_jsx("div", {
|
|
206
|
+
className: "mx-auto text-center",
|
|
207
|
+
children: "Profile has no samples"
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
return /*#__PURE__*/_jsx(AnimatePresence, {
|
|
211
|
+
children: /*#__PURE__*/_jsx(motion.div, {
|
|
212
|
+
className: "h-full w-full",
|
|
213
|
+
initial: {
|
|
214
|
+
display: 'none',
|
|
215
|
+
opacity: 0
|
|
216
|
+
},
|
|
217
|
+
animate: {
|
|
218
|
+
display: 'block',
|
|
219
|
+
opacity: 1
|
|
220
|
+
},
|
|
221
|
+
transition: {
|
|
222
|
+
duration: 0.5
|
|
223
|
+
},
|
|
224
|
+
children: /*#__PURE__*/_jsxs("div", {
|
|
225
|
+
className: "relative",
|
|
226
|
+
children: [/*#__PURE__*/_jsx(TableContextMenuWrapper, {
|
|
227
|
+
ref: contextMenuRef,
|
|
228
|
+
menuId: MENU_ID,
|
|
229
|
+
unit: unit,
|
|
230
|
+
total: total,
|
|
231
|
+
totalUnfiltered: total,
|
|
232
|
+
columnVisibility: columnVisibility
|
|
233
|
+
}), /*#__PURE__*/_jsx("div", {
|
|
234
|
+
className: "font-robotoMono h-[80vh] w-full",
|
|
235
|
+
children: /*#__PURE__*/_jsx(TableComponent, {
|
|
236
|
+
data: rows,
|
|
237
|
+
columns: columns,
|
|
238
|
+
initialSorting: initialSorting,
|
|
239
|
+
columnVisibility: columnVisibility,
|
|
240
|
+
onRowClick: onRowClick,
|
|
241
|
+
onRowContextMenu: onRowContextMenu,
|
|
242
|
+
usePointerCursor: dashboardItems.length > 1,
|
|
243
|
+
estimatedRowHeight: ROW_HEIGHT
|
|
244
|
+
})
|
|
245
|
+
})]
|
|
246
|
+
})
|
|
247
|
+
}, "table-loaded")
|
|
248
|
+
});
|
|
153
249
|
});
|
|
154
|
-
export default Table;
|
|
250
|
+
export default Table;
|