@parca/profile 0.16.337 → 0.16.340
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 +12 -0
- package/dist/ProfileIcicleGraph/ActionButtons/GroupByDropdown.js +1 -1
- package/dist/ProfileIcicleGraph/ActionButtons/RuntimeFilterDropdown.js +1 -1
- package/dist/ProfileIcicleGraph/ActionButtons/SortBySelect.js +1 -1
- package/dist/ProfileIcicleGraph/index.js +1 -1
- package/dist/ProfileSelector/CompareButton.js +1 -1
- package/dist/ProfileSelector/index.js +1 -1
- package/dist/ProfileView/FilterByFunctionButton.js +1 -1
- package/dist/ProfileView/index.js +1 -1
- package/dist/components/ProfileShareButton/index.js +1 -1
- package/package.json +7 -7
- package/src/ProfileIcicleGraph/ActionButtons/GroupByDropdown.tsx +4 -1
- package/src/ProfileIcicleGraph/ActionButtons/RuntimeFilterDropdown.tsx +4 -1
- package/src/ProfileIcicleGraph/ActionButtons/SortBySelect.tsx +1 -0
- package/src/ProfileIcicleGraph/index.tsx +2 -0
- package/src/ProfileSelector/CompareButton.tsx +1 -0
- package/src/ProfileSelector/index.tsx +1 -1
- package/src/ProfileView/FilterByFunctionButton.tsx +1 -0
- package/src/ProfileView/index.tsx +2 -1
- package/src/components/ProfileShareButton/index.tsx +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,18 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [0.16.340](https://github.com/parca-dev/parca/compare/@parca/profile@0.16.339...@parca/profile@0.16.340) (2024-02-12)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @parca/profile
|
|
9
|
+
|
|
10
|
+
## [0.16.339](https://github.com/parca-dev/parca/compare/@parca/profile@0.16.338...@parca/profile@0.16.339) (2024-02-09)
|
|
11
|
+
|
|
12
|
+
**Note:** Version bump only for package @parca/profile
|
|
13
|
+
|
|
14
|
+
## [0.16.338](https://github.com/parca-dev/parca/compare/@parca/profile@0.16.337...@parca/profile@0.16.338) (2024-02-07)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @parca/profile
|
|
17
|
+
|
|
6
18
|
## [0.16.337](https://github.com/parca-dev/parca/compare/@parca/profile@0.16.336...@parca/profile@0.16.337) (2024-02-06)
|
|
7
19
|
|
|
8
20
|
**Note:** Version bump only for package @parca/profile
|
|
@@ -52,6 +52,6 @@ const GroupByDropdown = ({ groupBy, toggleGroupBy, }) => {
|
|
|
52
52
|
: groupBy.length === 1
|
|
53
53
|
? groupByOptions.find(option => option.value === groupBy[0])?.label
|
|
54
54
|
: 'Multiple';
|
|
55
|
-
return (_jsxs("div", { className: "relative", children: [_jsx("label", { className: "text-sm", children: "Group" }), _jsxs(Menu, { as: "div", className: "relative text-left", children: [_jsxs(Menu.Button, { className: "relative w-max cursor-default rounded-md border bg-white py-2 pl-3 pr-[1.7rem] text-left text-sm shadow-sm focus:border-indigo-500 focus:outline-none focus:ring-1 focus:ring-indigo-500 dark:border-gray-600 dark:bg-gray-900 sm:text-sm", children: [_jsx("span", { className: "block overflow-x-hidden text-ellipsis", children: label }), _jsx("span", { className: "pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2 text-gray-400", children: _jsx(Icon, { icon: "heroicons:chevron-down-20-solid", "aria-hidden": "true" }) })] }), _jsx(Transition, { as: "div", leave: "transition ease-in duration-100", leaveFrom: "opacity-100", leaveTo: "opacity-0", children: _jsx(Menu.Items, { className: "absolute left-0 z-10 mt-1 min-w-[400px] overflow-auto rounded-md bg-gray-50 py-1 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none dark:border-gray-600 dark:bg-gray-900 dark:ring-white dark:ring-opacity-20 sm:text-sm", children: _jsx("div", { className: "p-4", children: _jsx("fieldset", { children: _jsx("div", { className: "space-y-5", children: groupByOptions.map(({ value, label, description, disabled }) => (_jsxs("div", { className: "relative flex items-start", children: [_jsx("div", { className: "flex h-6 items-center", children: _jsx("input", { id: value, name: value, type: "checkbox", disabled: disabled, className: "h-4 w-4 rounded border-gray-300 text-indigo-600 focus:ring-indigo-600", checked: groupBy.includes(value), onChange: () => toggleGroupBy(value) }) }), _jsxs("div", { className: "ml-3 text-sm leading-6", children: [_jsx("label", { htmlFor: value, className: "font-medium text-gray-900 dark:text-gray-200", children: label }), _jsx("p", { className: "text-gray-500 dark:text-gray-400", children: description })] })] }, value))) }) }) }) }) })] })] }));
|
|
55
|
+
return (_jsxs("div", { className: "relative", children: [_jsx("label", { className: "text-sm", children: "Group" }), _jsxs(Menu, { as: "div", className: "relative text-left", children: [_jsxs(Menu.Button, { id: "h-group-by-filter", className: "relative w-max cursor-default rounded-md border bg-white py-2 pl-3 pr-[1.7rem] text-left text-sm shadow-sm focus:border-indigo-500 focus:outline-none focus:ring-1 focus:ring-indigo-500 dark:border-gray-600 dark:bg-gray-900 sm:text-sm", children: [_jsx("span", { className: "block overflow-x-hidden text-ellipsis", children: label }), _jsx("span", { className: "pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2 text-gray-400", children: _jsx(Icon, { icon: "heroicons:chevron-down-20-solid", "aria-hidden": "true" }) })] }), _jsx(Transition, { as: "div", leave: "transition ease-in duration-100", leaveFrom: "opacity-100", leaveTo: "opacity-0", children: _jsx(Menu.Items, { className: "absolute left-0 z-10 mt-1 min-w-[400px] overflow-auto rounded-md bg-gray-50 py-1 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none dark:border-gray-600 dark:bg-gray-900 dark:ring-white dark:ring-opacity-20 sm:text-sm", children: _jsx("div", { className: "p-4", children: _jsx("fieldset", { children: _jsx("div", { className: "space-y-5", children: groupByOptions.map(({ value, label, description, disabled }) => (_jsxs("div", { className: "relative flex items-start", children: [_jsx("div", { className: "flex h-6 items-center", children: _jsx("input", { id: value, name: value, type: "checkbox", disabled: disabled, className: "h-4 w-4 rounded border-gray-300 text-indigo-600 focus:ring-indigo-600", checked: groupBy.includes(value), onChange: () => toggleGroupBy(value) }) }), _jsxs("div", { className: "ml-3 text-sm leading-6", children: [_jsx("label", { htmlFor: value, className: "font-medium text-gray-900 dark:text-gray-200", children: label }), _jsx("p", { className: "text-gray-500 dark:text-gray-400", children: description })] })] }, value))) }) }) }) }) })] })] }));
|
|
56
56
|
};
|
|
57
57
|
export default GroupByDropdown;
|
|
@@ -18,6 +18,6 @@ const RuntimeToggle = ({ id, state, toggle, label, description, }) => {
|
|
|
18
18
|
return (_jsxs("div", { className: "relative flex items-start", children: [_jsx("div", { className: "flex h-6 items-center", children: _jsx("input", { id: id, name: id, type: "checkbox", className: "h-4 w-4 rounded border-gray-300 text-indigo-600 focus:ring-indigo-600", checked: state, onChange: () => toggle() }) }), _jsxs("div", { className: "ml-3 text-sm leading-6", children: [_jsx("label", { htmlFor: id, className: "font-medium text-gray-900 dark:text-gray-200", children: label }), _jsx("p", { className: "text-gray-500 dark:text-gray-400", children: description })] })] }, id));
|
|
19
19
|
};
|
|
20
20
|
const RuntimeFilterDropdown = ({ showRuntimeRuby, toggleShowRuntimeRuby, showRuntimePython, toggleShowRuntimePython, showInterpretedOnly, toggleShowInterpretedOnly, }) => {
|
|
21
|
-
return (_jsxs("div", { children: [_jsx("label", { className: "text-sm", children: "Runtimes" }), _jsxs(Menu, { as: "div", className: "relative text-left", children: [_jsx("div", { children: _jsxs(Menu.Button, { className: "relative w-full cursor-default rounded-md border bg-white py-2 pl-3 pr-[1.7rem] text-left text-sm shadow-sm focus:border-indigo-500 focus:outline-none focus:ring-1 focus:ring-indigo-500 dark:border-gray-600 dark:bg-gray-900 sm:text-sm", children: [_jsx("span", { className: "block overflow-x-hidden text-ellipsis", children: "Runtimes" }), _jsx("span", { className: "pointer-events-none absolute inset-y-0 right-0 ml-3 flex items-center pr-2 text-gray-400", children: _jsx(Icon, { icon: "heroicons:chevron-down-20-solid", "aria-hidden": "true" }) })] }) }), _jsx(Transition, { as: Fragment, leave: "transition ease-in duration-100", leaveFrom: "opacity-100", leaveTo: "opacity-0", children: _jsx(Menu.Items, { className: "absolute left-0 z-10 mt-1 min-w-[400px] overflow-auto rounded-md bg-gray-50 py-1 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none dark:border-gray-600 dark:bg-gray-900 dark:ring-white dark:ring-opacity-20 sm:text-sm", children: _jsx("div", { className: "p-4", children: _jsx("fieldset", { children: _jsxs("div", { className: "space-y-5", children: [_jsx(RuntimeToggle, { id: "show-runtime-ruby", state: showRuntimeRuby, toggle: toggleShowRuntimeRuby, label: "Ruby", description: "Show Ruby runtime functions." }), _jsx(RuntimeToggle, { id: "show-runtime-python", state: showRuntimePython, toggle: toggleShowRuntimePython, label: "Python", description: "Show Python runtime functions." }), _jsx(RuntimeToggle, { id: "show-interpreted-only", state: showInterpretedOnly, toggle: toggleShowInterpretedOnly, label: "Interpreted Only", description: "Show only interpreted functions." })] }) }) }) }) })] })] }));
|
|
21
|
+
return (_jsxs("div", { children: [_jsx("label", { className: "text-sm", children: "Runtimes" }), _jsxs(Menu, { as: "div", className: "relative text-left", children: [_jsx("div", { children: _jsxs(Menu.Button, { className: "relative w-full cursor-default rounded-md border bg-white py-2 pl-3 pr-[1.7rem] text-left text-sm shadow-sm focus:border-indigo-500 focus:outline-none focus:ring-1 focus:ring-indigo-500 dark:border-gray-600 dark:bg-gray-900 sm:text-sm", id: "h-runtimes-filter", children: [_jsx("span", { className: "block overflow-x-hidden text-ellipsis", children: "Runtimes" }), _jsx("span", { className: "pointer-events-none absolute inset-y-0 right-0 ml-3 flex items-center pr-2 text-gray-400", children: _jsx(Icon, { icon: "heroicons:chevron-down-20-solid", "aria-hidden": "true" }) })] }) }), _jsx(Transition, { as: Fragment, leave: "transition ease-in duration-100", leaveFrom: "opacity-100", leaveTo: "opacity-0", children: _jsx(Menu.Items, { className: "absolute left-0 z-10 mt-1 min-w-[400px] overflow-auto rounded-md bg-gray-50 py-1 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none dark:border-gray-600 dark:bg-gray-900 dark:ring-white dark:ring-opacity-20 sm:text-sm", children: _jsx("div", { className: "p-4", children: _jsx("fieldset", { children: _jsxs("div", { className: "space-y-5", children: [_jsx(RuntimeToggle, { id: "show-runtime-ruby", state: showRuntimeRuby, toggle: toggleShowRuntimeRuby, label: "Ruby", description: "Show Ruby runtime functions." }), _jsx(RuntimeToggle, { id: "show-runtime-python", state: showRuntimePython, toggle: toggleShowRuntimePython, label: "Python", description: "Show Python runtime functions." }), _jsx(RuntimeToggle, { id: "show-interpreted-only", state: showInterpretedOnly, toggle: toggleShowInterpretedOnly, label: "Interpreted Only", description: "Show only interpreted functions." })] }) }) }) }) })] })] }));
|
|
22
22
|
};
|
|
23
23
|
export default RuntimeFilterDropdown;
|
|
@@ -14,7 +14,7 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
|
|
|
14
14
|
import { Select } from '@parca/components';
|
|
15
15
|
import { FIELD_CUMULATIVE, FIELD_DIFF, FIELD_FUNCTION_NAME } from '../IcicleGraphArrow';
|
|
16
16
|
const SortBySelect = ({ sortBy, setSortBy, compareMode, }) => {
|
|
17
|
-
return (_jsxs("div", { children: [_jsx("label", { className: "text-sm", children: "Sort" }), _jsx(Select, { className: "!px-3", items: [
|
|
17
|
+
return (_jsxs("div", { children: [_jsx("label", { className: "text-sm", children: "Sort" }), _jsx(Select, { id: "h-sort-by-filter", className: "!px-3", items: [
|
|
18
18
|
{
|
|
19
19
|
key: FIELD_FUNCTION_NAME,
|
|
20
20
|
disabled: false,
|
|
@@ -39,7 +39,7 @@ const ShowHideLegendButton = ({ navigateTo, isHalfScreen, }) => {
|
|
|
39
39
|
const setColorStackLegend = useCallback((value) => {
|
|
40
40
|
setStoreColorStackLegend(value);
|
|
41
41
|
}, [setStoreColorStackLegend]);
|
|
42
|
-
return (_jsx(_Fragment, { children: colorProfileName === 'default' || compareMode ? null : (_jsx(_Fragment, { children: isHalfScreen ? (_jsx(IconButton, { className: "rounded-md focus:outline-none focus:ring-2 focus:ring-offset-2 items-center flex border border-gray-200 dark:border-gray-600 dark:text-white justify-center !py-2 !px-3 cursor-pointer min-h-[38px]", icon: isColorStackLegendEnabled ? 'ph:eye-closed' : 'ph:eye', toolTipText: isColorStackLegendEnabled ? 'Hide legend' : 'Show legend', onClick: () => setColorStackLegend(isColorStackLegendEnabled ? 'false' : 'true') })) : (_jsxs(Button, { className: "gap-2 w-max", variant: "neutral", onClick: () => setColorStackLegend(isColorStackLegendEnabled ? 'false' : 'true'), children: [isColorStackLegendEnabled ? 'Hide legend' : 'Show legend', _jsx(Icon, { icon: isColorStackLegendEnabled ? 'ph:eye-closed' : 'ph:eye', width: 20 })] })) })) }));
|
|
42
|
+
return (_jsx(_Fragment, { children: colorProfileName === 'default' || compareMode ? null : (_jsx(_Fragment, { children: isHalfScreen ? (_jsx(IconButton, { className: "rounded-md focus:outline-none focus:ring-2 focus:ring-offset-2 items-center flex border border-gray-200 dark:border-gray-600 dark:text-white justify-center !py-2 !px-3 cursor-pointer min-h-[38px]", icon: isColorStackLegendEnabled ? 'ph:eye-closed' : 'ph:eye', toolTipText: isColorStackLegendEnabled ? 'Hide legend' : 'Show legend', onClick: () => setColorStackLegend(isColorStackLegendEnabled ? 'false' : 'true'), id: "h-show-legend-button" })) : (_jsxs(Button, { className: "gap-2 w-max", variant: "neutral", onClick: () => setColorStackLegend(isColorStackLegendEnabled ? 'false' : 'true'), id: "h-show-legend-button", children: [isColorStackLegendEnabled ? 'Hide legend' : 'Show legend', _jsx(Icon, { icon: isColorStackLegendEnabled ? 'ph:eye-closed' : 'ph:eye', width: 20 })] })) })) }));
|
|
43
43
|
};
|
|
44
44
|
const GroupAndSortActionButtons = ({ navigateTo }) => {
|
|
45
45
|
const [storeSortBy = FIELD_FUNCTION_NAME, setStoreSortBy] = useURLState({
|
|
@@ -24,6 +24,6 @@ const CompareButton = ({ disabled, onClick, }) => {
|
|
|
24
24
|
const compareExplanation = 'Compare two profiles and see the relative difference between them more clearly.';
|
|
25
25
|
if (disabled)
|
|
26
26
|
return _jsx(_Fragment, {});
|
|
27
|
-
return (_jsxs("div", { ref: setComparePopperReferenceElement, children: [_jsx(Button, { variant: "neutral", disabled: disabled, onClick: onClick, onMouseEnter: () => setCompareHover(true), onMouseLeave: () => setCompareHover(false), children: "Compare" }), compareHover && (_jsx("div", { ref: setComparePopperElement, style: styles.popper, ...attributes.popper, className: "z-50", children: _jsx("div", { className: "flex", children: _jsxs("div", { className: "relative mx-2", children: [_jsx("svg", { className: "left-0 h-1 w-full text-black", x: "0px", y: "0px", viewBox: "0 0 255 127.5", children: _jsx("polygon", { className: "fill-current", points: "0,127.5 127.5,0 255,127.5" }) }), _jsx("div", { className: "right-0 w-40 rounded bg-black px-3 py-2 text-xs text-white", children: compareExplanation })] }) }) }))] }));
|
|
27
|
+
return (_jsxs("div", { ref: setComparePopperReferenceElement, children: [_jsx(Button, { variant: "neutral", disabled: disabled, onClick: onClick, onMouseEnter: () => setCompareHover(true), onMouseLeave: () => setCompareHover(false), id: "h-compare-button", children: "Compare" }), compareHover && (_jsx("div", { ref: setComparePopperElement, style: styles.popper, ...attributes.popper, className: "z-50", children: _jsx("div", { className: "flex", children: _jsxs("div", { className: "relative mx-2", children: [_jsx("svg", { className: "left-0 h-1 w-full text-black", x: "0px", y: "0px", viewBox: "0 0 255 127.5", children: _jsx("polygon", { className: "fill-current", points: "0,127.5 127.5,0 255,127.5" }) }), _jsx("div", { className: "right-0 w-40 rounded bg-black px-3 py-2 text-xs text-white", children: compareExplanation })] }) }) }))] }));
|
|
28
28
|
};
|
|
29
29
|
export default CompareButton;
|
|
@@ -158,7 +158,7 @@ const ProfileSelector = ({ queryClient, querySelection, selectProfile, selectQue
|
|
|
158
158
|
viewComponent !== undefined && _jsx("div", { children: viewComponent?.createViewComponent })] }), _jsx(MatchersInput, { queryClient: queryClient, setMatchersString: setMatchersString, runQuery: setQueryExpression, currentQuery: query })] }), _jsx(DateTimeRangePicker, { onRangeSelection: setTimeRangeSelection, range: timeRangeSelection }), _jsxs(ButtonGroup, { children: [!searchDisabled && (_jsx(_Fragment, { children: !comparing && (_jsx(CompareButton, { disabled: compareDisabled, onClick: handleCompareClick })) })), _jsx(Button, { disabled: searchDisabled, onClick: (e) => {
|
|
159
159
|
e.preventDefault();
|
|
160
160
|
setQueryExpression(true);
|
|
161
|
-
}, id: "matcher-search-button", children: "Search" })] })] }), _jsx("div", { children: comparing && _jsx(IconButton, { onClick: () => closeProfile(), icon: _jsx(CloseIcon, {}) }) })] }), _jsx("div", { className: "rounded bg-white shadow dark:border-gray-500 dark:bg-gray-700", children: _jsx("div", { style: { height: heightStyle }, children: !isDataLoading &&
|
|
161
|
+
}, id: "h-matcher-search-button", children: "Search" })] })] }), _jsx("div", { children: comparing && _jsx(IconButton, { onClick: () => closeProfile(), icon: _jsx(CloseIcon, {}) }) })] }), _jsx("div", { className: "rounded bg-white shadow dark:border-gray-500 dark:bg-gray-700", children: _jsx("div", { style: { height: heightStyle }, children: !isDataLoading &&
|
|
162
162
|
querySelection.expression !== undefined &&
|
|
163
163
|
querySelection.expression.length > 0 &&
|
|
164
164
|
querySelection.from !== undefined &&
|
|
@@ -29,6 +29,6 @@ const FilterByFunctionButton = ({ navigateTo, }) => {
|
|
|
29
29
|
setStoreValue(localValue);
|
|
30
30
|
}
|
|
31
31
|
}, [localValue, isClearAction, setStoreValue]);
|
|
32
|
-
return (_jsx(Input, { placeholder: "Filter by function", className: "text-sm", onAction: onAction, onChange: e => setLocalValue(e.target.value), value: localValue ?? '', onBlur: () => setLocalValue(storeValue), actionIcon: isClearAction ? _jsx(Icon, { icon: "ep:circle-close" }) : _jsx(Icon, { icon: "ep:arrow-right" }) }));
|
|
32
|
+
return (_jsx(Input, { placeholder: "Filter by function", id: "h-filter-by-function", className: "text-sm", onAction: onAction, onChange: e => setLocalValue(e.target.value), value: localValue ?? '', onBlur: () => setLocalValue(storeValue), actionIcon: isClearAction ? _jsx(Icon, { icon: "ep:circle-close" }) : _jsx(Icon, { icon: "ep:arrow-right" }) }));
|
|
33
33
|
};
|
|
34
34
|
export default FilterByFunctionButton;
|
|
@@ -156,7 +156,7 @@ export const ProfileView = ({ total, filtered, flamegraphData, topTableData, cal
|
|
|
156
156
|
'items-center': hasProfileSource,
|
|
157
157
|
}), children: [_jsxs("div", { children: [hasProfileSource && (_jsxs("div", { className: "max-w-[300px]", children: [_jsx("div", { className: "text-sm font-medium capitalize", children: headerParts.length > 0 ? headerParts[0].replace(/"/g, '') : '' }), _jsx("div", { className: "text-xs", children: headerParts.length > 1
|
|
158
158
|
? headerParts[headerParts.length - 1].replace(/"/g, '')
|
|
159
|
-
: '' })] })), profileViewExternalMainActions != null ? profileViewExternalMainActions : null] }), _jsxs("div", { className: "lg:flex flex-wrap items-center gap-2 md:justify-end hidden", children: [_jsx(FilterByFunctionButton, { navigateTo: navigateTo }), profileViewExternalSubActions != null ? profileViewExternalSubActions : null, _jsx(UserPreferences, { customButton: _jsxs(Button, { className: "gap-2", variant: "neutral", children: ["Preferences", _jsx(Icon, { icon: "pajamas:preferences", width: 20 })] }) }), profileSource !== undefined && queryClient !== undefined ? (_jsx(ProfileShareButton, { queryRequest: profileSource.QueryRequest(), queryClient: queryClient })) : null, _jsxs(Button, { className: "gap-2", variant: "neutral", onClick: e => {
|
|
159
|
+
: '' })] })), profileViewExternalMainActions != null ? profileViewExternalMainActions : null] }), _jsxs("div", { className: "lg:flex flex-wrap items-center gap-2 md:justify-end hidden", children: [_jsx(FilterByFunctionButton, { navigateTo: navigateTo }), profileViewExternalSubActions != null ? profileViewExternalSubActions : null, _jsx(UserPreferences, { customButton: _jsxs(Button, { className: "gap-2", variant: "neutral", id: "h-viz-preferences", children: ["Preferences", _jsx(Icon, { icon: "pajamas:preferences", width: 20 })] }) }), profileSource !== undefined && queryClient !== undefined ? (_jsx(ProfileShareButton, { queryRequest: profileSource.QueryRequest(), queryClient: queryClient })) : null, _jsxs(Button, { id: "h-download-pprof", className: "gap-2", variant: "neutral", onClick: e => {
|
|
160
160
|
e.preventDefault();
|
|
161
161
|
onDownloadPProf();
|
|
162
162
|
}, disabled: pprofDownloading, children: [pprofDownloading != null && pprofDownloading ? 'Downloading...' : 'Download pprof', _jsx(Icon, { icon: "material-symbols:download", width: 20 })] }), _jsx(ViewSelector, { defaultValue: "", navigateTo: navigateTo, position: -1, placeholderText: "Add panel", icon: _jsx(Icon, { icon: "material-symbols:add", width: 20 }), addView: true, disabled: isMultiPanelView || dashboardItems.length < 1 })] })] }), _jsx("div", { className: "w-full", ref: ref, children: _jsx(DragDropContext, { onDragEnd: onDragEnd, children: _jsx(Droppable, { droppableId: "droppable", direction: "horizontal", children: provided => (_jsx("div", { ref: provided.innerRef, className: cx('grid w-full gap-2', isMultiPanelView ? 'grid-cols-2' : 'grid-cols-1'), ...provided.droppableProps, children: dashboardItems.map((dashboardItem, index) => {
|
|
@@ -55,6 +55,6 @@ const ProfileShareModal = ({ isOpen, closeModal, queryRequest, queryClient, }) =
|
|
|
55
55
|
};
|
|
56
56
|
const ProfileShareButton = ({ queryRequest, queryClient, disabled = false }) => {
|
|
57
57
|
const [isOpen, setIsOpen] = useState(false);
|
|
58
|
-
return (_jsxs(_Fragment, { children: [_jsxs(Button, { variant: "neutral", onClick: () => setIsOpen(true), disabled: disabled, className: "gap-2", children: ["Share profile", _jsx(Icon, { icon: "material-symbols:share", width: 20 })] }), _jsx(ProfileShareModal, { isOpen: isOpen, closeModal: () => setIsOpen(false), queryRequest: queryRequest, queryClient: queryClient })] }));
|
|
58
|
+
return (_jsxs(_Fragment, { children: [_jsxs(Button, { variant: "neutral", onClick: () => setIsOpen(true), disabled: disabled, className: "gap-2", id: "h-share-profile-button", children: ["Share profile", _jsx(Icon, { icon: "material-symbols:share", width: 20 })] }), _jsx(ProfileShareModal, { isOpen: isOpen, closeModal: () => setIsOpen(false), queryRequest: queryRequest, queryClient: queryClient })] }));
|
|
59
59
|
};
|
|
60
60
|
export default ProfileShareButton;
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@parca/profile",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.340",
|
|
4
4
|
"description": "Profile viewing libraries",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@parca/client": "^0.16.
|
|
7
|
-
"@parca/components": "^0.16.
|
|
6
|
+
"@parca/client": "^0.16.102",
|
|
7
|
+
"@parca/components": "^0.16.250",
|
|
8
8
|
"@parca/dynamicsize": "^0.16.60",
|
|
9
|
-
"@parca/hooks": "^0.0.
|
|
9
|
+
"@parca/hooks": "^0.0.40",
|
|
10
10
|
"@parca/parser": "^0.16.68",
|
|
11
|
-
"@parca/store": "^0.16.
|
|
12
|
-
"@parca/utilities": "^0.0.
|
|
11
|
+
"@parca/store": "^0.16.127",
|
|
12
|
+
"@parca/utilities": "^0.0.55",
|
|
13
13
|
"@tanstack/react-query": "^4.0.5",
|
|
14
14
|
"@types/react-beautiful-dnd": "^13.1.3",
|
|
15
15
|
"apache-arrow": "^12.0.0",
|
|
@@ -51,5 +51,5 @@
|
|
|
51
51
|
"access": "public",
|
|
52
52
|
"registry": "https://registry.npmjs.org/"
|
|
53
53
|
},
|
|
54
|
-
"gitHead": "
|
|
54
|
+
"gitHead": "e7080a85def2fdff1db52e48116998a4dc19484b"
|
|
55
55
|
}
|
|
@@ -73,7 +73,10 @@ const GroupByDropdown = ({
|
|
|
73
73
|
<div className="relative">
|
|
74
74
|
<label className="text-sm">Group</label>
|
|
75
75
|
<Menu as="div" className="relative text-left">
|
|
76
|
-
<Menu.Button
|
|
76
|
+
<Menu.Button
|
|
77
|
+
id="h-group-by-filter"
|
|
78
|
+
className="relative w-max cursor-default rounded-md border bg-white py-2 pl-3 pr-[1.7rem] text-left text-sm shadow-sm focus:border-indigo-500 focus:outline-none focus:ring-1 focus:ring-indigo-500 dark:border-gray-600 dark:bg-gray-900 sm:text-sm"
|
|
79
|
+
>
|
|
77
80
|
<span className="block overflow-x-hidden text-ellipsis">{label}</span>
|
|
78
81
|
<span className="pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2 text-gray-400">
|
|
79
82
|
<Icon icon="heroicons:chevron-down-20-solid" aria-hidden="true" />
|
|
@@ -71,7 +71,10 @@ const RuntimeFilterDropdown = ({
|
|
|
71
71
|
<label className="text-sm">Runtimes</label>
|
|
72
72
|
<Menu as="div" className="relative text-left">
|
|
73
73
|
<div>
|
|
74
|
-
<Menu.Button
|
|
74
|
+
<Menu.Button
|
|
75
|
+
className="relative w-full cursor-default rounded-md border bg-white py-2 pl-3 pr-[1.7rem] text-left text-sm shadow-sm focus:border-indigo-500 focus:outline-none focus:ring-1 focus:ring-indigo-500 dark:border-gray-600 dark:bg-gray-900 sm:text-sm"
|
|
76
|
+
id="h-runtimes-filter"
|
|
77
|
+
>
|
|
75
78
|
<span className="block overflow-x-hidden text-ellipsis">Runtimes</span>
|
|
76
79
|
<span className="pointer-events-none absolute inset-y-0 right-0 ml-3 flex items-center pr-2 text-gray-400">
|
|
77
80
|
<Icon icon="heroicons:chevron-down-20-solid" aria-hidden="true" />
|
|
@@ -97,12 +97,14 @@ const ShowHideLegendButton = ({
|
|
|
97
97
|
icon={isColorStackLegendEnabled ? 'ph:eye-closed' : 'ph:eye'}
|
|
98
98
|
toolTipText={isColorStackLegendEnabled ? 'Hide legend' : 'Show legend'}
|
|
99
99
|
onClick={() => setColorStackLegend(isColorStackLegendEnabled ? 'false' : 'true')}
|
|
100
|
+
id="h-show-legend-button"
|
|
100
101
|
/>
|
|
101
102
|
) : (
|
|
102
103
|
<Button
|
|
103
104
|
className="gap-2 w-max"
|
|
104
105
|
variant="neutral"
|
|
105
106
|
onClick={() => setColorStackLegend(isColorStackLegendEnabled ? 'false' : 'true')}
|
|
107
|
+
id="h-show-legend-button"
|
|
106
108
|
>
|
|
107
109
|
{isColorStackLegendEnabled ? 'Hide legend' : 'Show legend'}
|
|
108
110
|
<Icon icon={isColorStackLegendEnabled ? 'ph:eye-closed' : 'ph:eye'} width={20} />
|
|
@@ -370,7 +370,7 @@ export const ProfileView = ({
|
|
|
370
370
|
{profileViewExternalSubActions != null ? profileViewExternalSubActions : null}
|
|
371
371
|
<UserPreferences
|
|
372
372
|
customButton={
|
|
373
|
-
<Button className="gap-2" variant="neutral">
|
|
373
|
+
<Button className="gap-2" variant="neutral" id="h-viz-preferences">
|
|
374
374
|
Preferences
|
|
375
375
|
<Icon icon="pajamas:preferences" width={20} />
|
|
376
376
|
</Button>
|
|
@@ -383,6 +383,7 @@ export const ProfileView = ({
|
|
|
383
383
|
/>
|
|
384
384
|
) : null}
|
|
385
385
|
<Button
|
|
386
|
+
id="h-download-pprof"
|
|
386
387
|
className="gap-2"
|
|
387
388
|
variant="neutral"
|
|
388
389
|
onClick={e => {
|
|
@@ -132,6 +132,7 @@ const ProfileShareButton = ({queryRequest, queryClient, disabled = false}: Props
|
|
|
132
132
|
onClick={() => setIsOpen(true)}
|
|
133
133
|
disabled={disabled}
|
|
134
134
|
className="gap-2"
|
|
135
|
+
id="h-share-profile-button"
|
|
135
136
|
>
|
|
136
137
|
Share profile
|
|
137
138
|
<Icon icon="material-symbols:share" width={20} />
|