@bundle-stats/ui 4.13.0-beta.15 → 4.13.0-beta.17
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/lib/assets/icons.svg +70 -67
- package/lib/assets/icons.svg.js +14 -12
- package/lib/assets/icons.svg.js.map +1 -1
- package/lib/components/bundle-assets/bundle-assets.js +39 -7
- package/lib/components/bundle-assets/bundle-assets.js.map +1 -1
- package/lib/components/bundle-assets-totals/bundle-assets-totals.js +4 -4
- package/lib/components/bundle-assets-totals/bundle-assets-totals.js.map +1 -1
- package/lib/components/bundle-modules/bundle-modules.js +28 -7
- package/lib/components/bundle-modules/bundle-modules.js.map +1 -1
- package/lib/components/bundle-packages/bundle-packages.js +39 -7
- package/lib/components/bundle-packages/bundle-packages.js.map +1 -1
- package/lib/components/delta/delta.module.css +10 -1
- package/lib/components/metrics-display-selector/metrics-display-selector.js +41 -4
- package/lib/components/metrics-display-selector/metrics-display-selector.js.map +1 -1
- package/lib/components/metrics-display-selector/metrics-display-selector.module.css +15 -7
- package/lib/components/metrics-treemap/index.js +4 -0
- package/lib/components/metrics-treemap/index.js.map +1 -1
- package/lib/components/metrics-treemap/metrics-treemap.constants.js +3 -0
- package/lib/components/metrics-treemap/metrics-treemap.constants.js.map +1 -0
- package/lib/components/metrics-treemap/metrics-treemap.js +57 -38
- package/lib/components/metrics-treemap/metrics-treemap.js.map +1 -1
- package/lib/components/metrics-treemap/metrics-treemap.module.css +55 -25
- package/lib/components/metrics-treemap/metrics-treemap.utils.js +70 -0
- package/lib/components/metrics-treemap/metrics-treemap.utils.js.map +1 -0
- package/lib/components/run-info/run-info.module.css +7 -7
- package/lib/hooks/metrics-display-type.js +56 -24
- package/lib/hooks/metrics-display-type.js.map +1 -1
- package/lib/ui/icon/icon.js +1 -0
- package/lib/ui/icon/icon.js.map +1 -1
- package/lib-esm/assets/icons.svg +70 -67
- package/lib-esm/assets/icons.svg.js +14 -12
- package/lib-esm/assets/icons.svg.js.map +1 -1
- package/lib-esm/components/bundle-assets/bundle-assets.js +40 -8
- package/lib-esm/components/bundle-assets/bundle-assets.js.map +1 -1
- package/lib-esm/components/bundle-assets-totals/bundle-assets-totals.js +5 -5
- package/lib-esm/components/bundle-assets-totals/bundle-assets-totals.js.map +1 -1
- package/lib-esm/components/bundle-modules/bundle-modules.js +29 -8
- package/lib-esm/components/bundle-modules/bundle-modules.js.map +1 -1
- package/lib-esm/components/bundle-packages/bundle-packages.js +40 -8
- package/lib-esm/components/bundle-packages/bundle-packages.js.map +1 -1
- package/lib-esm/components/delta/delta.module.css +10 -1
- package/lib-esm/components/metrics-display-selector/metrics-display-selector.js +41 -4
- package/lib-esm/components/metrics-display-selector/metrics-display-selector.js.map +1 -1
- package/lib-esm/components/metrics-display-selector/metrics-display-selector.module.css +15 -7
- package/lib-esm/components/metrics-treemap/index.js +1 -0
- package/lib-esm/components/metrics-treemap/index.js.map +1 -1
- package/lib-esm/components/metrics-treemap/metrics-treemap.constants.js +2 -0
- package/lib-esm/components/metrics-treemap/metrics-treemap.constants.js.map +1 -0
- package/lib-esm/components/metrics-treemap/metrics-treemap.js +58 -39
- package/lib-esm/components/metrics-treemap/metrics-treemap.js.map +1 -1
- package/lib-esm/components/metrics-treemap/metrics-treemap.module.css +55 -25
- package/lib-esm/components/metrics-treemap/metrics-treemap.utils.js +65 -0
- package/lib-esm/components/metrics-treemap/metrics-treemap.utils.js.map +1 -0
- package/lib-esm/components/run-info/run-info.module.css +7 -7
- package/lib-esm/hooks/metrics-display-type.js +57 -24
- package/lib-esm/hooks/metrics-display-type.js.map +1 -1
- package/lib-esm/ui/icon/icon.js +1 -0
- package/lib-esm/ui/icon/icon.js.map +1 -1
- package/package.json +8 -8
- package/src/assets/icons/check.svg +4 -0
- package/src/assets/icons.svg +70 -67
- package/src/assets/icons.svg.jsx +12 -12
- package/src/components/bundle-assets/bundle-assets.jsx +76 -20
- package/src/components/bundle-assets-totals/bundle-assets-totals.jsx +5 -4
- package/src/components/bundle-modules/bundle-modules.tsx +76 -16
- package/src/components/bundle-packages/bundle-packages.jsx +71 -16
- package/src/components/delta/delta.module.css +10 -1
- package/src/components/metrics-display-selector/metrics-display-selector.module.css +15 -7
- package/src/components/metrics-display-selector/metrics-display-selector.stories.tsx +33 -0
- package/src/components/metrics-display-selector/metrics-display-selector.tsx +83 -25
- package/src/components/metrics-treemap/__tests__/metrics-treemap.utils.ts +143 -0
- package/src/components/metrics-treemap/index.ts +1 -0
- package/src/components/metrics-treemap/metrics-treemap.constants.ts +43 -0
- package/src/components/metrics-treemap/metrics-treemap.module.css +55 -25
- package/src/components/metrics-treemap/metrics-treemap.stories.tsx +44 -10
- package/src/components/metrics-treemap/metrics-treemap.tsx +247 -84
- package/src/components/metrics-treemap/metrics-treemap.utils.ts +107 -0
- package/src/components/run-info/run-info.module.css +7 -7
- package/src/hooks/metrics-display-type.ts +87 -29
- package/src/ui/icon/icon.tsx +1 -0
- package/types/components/metrics-display-selector/metrics-display-selector.d.ts +3 -1
- package/types/components/metrics-treemap/index.d.ts +1 -0
- package/types/components/metrics-treemap/metrics-treemap.constants.d.ts +15 -0
- package/types/components/metrics-treemap/metrics-treemap.d.ts +7 -5
- package/types/components/metrics-treemap/metrics-treemap.utils.d.ts +4 -0
- package/types/hooks/metrics-display-type.d.ts +8 -2
- package/types/ui/icon/icon.d.ts +2 -0
|
@@ -54,6 +54,9 @@ const metrics_display_selector_1 = require("../metrics-display-selector");
|
|
|
54
54
|
const constants_1 = require("../../constants");
|
|
55
55
|
const metrics_treemap_1 = require("../metrics-treemap");
|
|
56
56
|
const metrics_display_type_1 = require("../../hooks/metrics-display-type");
|
|
57
|
+
const DISPLAY_TYPE_GROUPS = {
|
|
58
|
+
[constants_1.MetricsDisplayType.TREEMAP]: ['folder'],
|
|
59
|
+
};
|
|
57
60
|
const getDropdownFilters = ({ compareMode, filters }) => ({
|
|
58
61
|
[utils_1.PACKAGE_FILTERS.CHANGED]: {
|
|
59
62
|
label: 'Changed',
|
|
@@ -107,10 +110,42 @@ RowHeader.propTypes = {
|
|
|
107
110
|
filters: prop_types_1.default.object,
|
|
108
111
|
search: prop_types_1.default.string,
|
|
109
112
|
};
|
|
113
|
+
const ViewMetricsTreemap = (props) => {
|
|
114
|
+
const { metricsTableTitle, jobs, items, displayType, emptyMessage, showEntryInfo, updateSearch } = props;
|
|
115
|
+
const treeNodes = (0, react_1.useMemo)(() => {
|
|
116
|
+
if (displayType.groupBy === 'folder') {
|
|
117
|
+
return (0, metrics_treemap_1.getTreemapNodesGroupedByPath)(items);
|
|
118
|
+
}
|
|
119
|
+
return (0, metrics_treemap_1.getTreemapNodes)(items);
|
|
120
|
+
}, [items, displayType.groupBy]);
|
|
121
|
+
const onGroupClick = (0, react_1.useCallback)((groupPath) => {
|
|
122
|
+
if (groupPath) {
|
|
123
|
+
updateSearch(`^${groupPath}/`);
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
updateSearch('');
|
|
127
|
+
}
|
|
128
|
+
}, [updateSearch]);
|
|
129
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
130
|
+
react_1.default.createElement(table_1.Table, { compact: true },
|
|
131
|
+
react_1.default.createElement(metrics_table_header_1.MetricsTableHeader, { metricTitle: metricsTableTitle, showSum: true, jobs: jobs, rows: items })),
|
|
132
|
+
react_1.default.createElement(metrics_treemap_1.MetricsTreemap, { treeNodes: treeNodes, nested: Boolean(displayType.groupBy), emptyMessage: emptyMessage, onItemClick: showEntryInfo, onGroupClick: onGroupClick })));
|
|
133
|
+
};
|
|
134
|
+
ViewMetricsTreemap.propTypes = {
|
|
135
|
+
jobs: prop_types_1.default.arrayOf(prop_types_1.default.object).isRequired,
|
|
136
|
+
items: prop_types_1.default.arrayOf(prop_types_1.default.object).isRequired,
|
|
137
|
+
metricsTableTitle: prop_types_1.default.node.isRequired,
|
|
138
|
+
displayType: prop_types_1.default.shape({
|
|
139
|
+
groupBy: prop_types_1.default.string,
|
|
140
|
+
}).isRequired,
|
|
141
|
+
emptyMessage: prop_types_1.default.node.isRequired,
|
|
142
|
+
showEntryInfo: prop_types_1.default.func.isRequired,
|
|
143
|
+
updateSearch: prop_types_1.default.func.isRequired,
|
|
144
|
+
};
|
|
110
145
|
const BundlePackages = (props) => {
|
|
111
146
|
const { className, jobs, items, updateFilters, resetFilters, resetAllFilters, totalRowCount, filters, sort, updateSort, search, updateSearch, hasActiveFilters, customComponentLink: CustomComponentLink, entryId, allItems, hideEntryInfo, showEntryInfo, } = props;
|
|
112
147
|
const jobLabels = jobs?.map((job) => job?.label);
|
|
113
|
-
const [displayType, setDisplayType] = (0, metrics_display_type_1.useMetricsDisplayType)();
|
|
148
|
+
const [displayType, setDisplayType] = (0, metrics_display_type_1.useMetricsDisplayType)(DISPLAY_TYPE_GROUPS);
|
|
114
149
|
const dropdownFilters = (0, react_1.useMemo)(() => getDropdownFilters({ compareMode: jobs?.length > 1, filters }), [jobs, filters]);
|
|
115
150
|
const metricsTableTitle = (0, react_1.useMemo)(() => (react_1.default.createElement(metrics_table_title_1.MetricsTableTitle, { title: i18n_1.default.PACKAGES, info: `${items.length}/${totalRowCount}`, popoverInfo: i18n_1.default.PACKAGES_INFO, popoverHref: config_json_1.default.documentation.packages })), [items, totalRowCount]);
|
|
116
151
|
const renderRowHeader = (0, react_1.useCallback)((row) => (react_1.default.createElement(RowHeader, { row: row, labels: jobLabels, CustomComponentLink: CustomComponentLink, filters: filters, search: search })), [CustomComponentLink, jobLabels, filters, search]);
|
|
@@ -124,17 +159,14 @@ const BundlePackages = (props) => {
|
|
|
124
159
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
125
160
|
react_1.default.createElement(stack_1.Stack, { space: "xsmall", as: "section", className: (0, classnames_1.default)(bundle_packages_module_css_1.default.root, className) },
|
|
126
161
|
react_1.default.createElement(toolbar_1.Toolbar, { className: bundle_packages_module_css_1.default.toolbar, renderActions: ({ actionClassName }) => (react_1.default.createElement(flex_stack_1.FlexStack, { space: "xxsmall", className: (0, classnames_1.default)(bundle_packages_module_css_1.default.dropdown, actionClassName) },
|
|
127
|
-
react_1.default.createElement(metrics_display_selector_1.MetricsDisplaySelector, { onSelect: setDisplayType, value: displayType }),
|
|
162
|
+
react_1.default.createElement(metrics_display_selector_1.MetricsDisplaySelector, { onSelect: setDisplayType, value: displayType.value, groupBy: displayType.groupBy, groups: DISPLAY_TYPE_GROUPS }),
|
|
128
163
|
react_1.default.createElement(metrics_table_options_1.MetricsTableOptions, { handleViewAll: resetAllFilters, handleResetFilters: resetFilters }))) },
|
|
129
164
|
react_1.default.createElement(flex_stack_1.FlexStack, { space: "xxsmall" },
|
|
130
165
|
react_1.default.createElement(input_search_1.InputSearch, { className: bundle_packages_module_css_1.default.toolbarSearch, placeholder: bundle_packages_i18n_1.SEARCH_PLACEHOLDER, defaultValue: search, onChange: updateSearch }),
|
|
131
166
|
react_1.default.createElement(filters_1.Filters, { filters: dropdownFilters, label: `Filters (${items.length}/${totalRowCount})`, onChange: updateFilters, hasActiveFilters: hasActiveFilters }))),
|
|
132
167
|
react_1.default.createElement(box_1.Box, { outline: true, as: "main" },
|
|
133
|
-
displayType === constants_1.MetricsDisplayType.TABLE && (react_1.default.createElement(metrics_table_1.MetricsTable, { runs: jobs, items: items, emptyMessage: emptyMessage, renderRowHeader: renderRowHeader, showHeaderSum: true, title: metricsTableTitle, sort: sort, updateSort: updateSort })),
|
|
134
|
-
displayType === constants_1.MetricsDisplayType.TREEMAP && (react_1.default.createElement(
|
|
135
|
-
react_1.default.createElement(table_1.Table, { compact: true },
|
|
136
|
-
react_1.default.createElement(metrics_table_header_1.MetricsTableHeader, { metricTitle: metricsTableTitle, showSum: true, jobs: jobs, rows: items })),
|
|
137
|
-
react_1.default.createElement(metrics_treemap_1.MetricsTreemap, { emptyMessage: emptyMessage, items: items, onItemClick: showEntryInfo }))))),
|
|
168
|
+
displayType.value === constants_1.MetricsDisplayType.TABLE && (react_1.default.createElement(metrics_table_1.MetricsTable, { runs: jobs, items: items, emptyMessage: emptyMessage, renderRowHeader: renderRowHeader, showHeaderSum: true, title: metricsTableTitle, sort: sort, updateSort: updateSort })),
|
|
169
|
+
displayType.value === constants_1.MetricsDisplayType.TREEMAP && (react_1.default.createElement(ViewMetricsTreemap, { jobs: jobs, items: items, displayType: displayType, emptyMessage: emptyMessage, showEntryInfo: showEntryInfo, updateSearch: updateSearch })))),
|
|
138
170
|
entryItem && (react_1.default.createElement(package_info_1.PackageInfo, { className: bundle_packages_module_css_1.default.packageInfo, item: entryItem, labels: jobLabels, customComponentLink: CustomComponentLink, onClose: hideEntryInfo }))));
|
|
139
171
|
};
|
|
140
172
|
exports.BundlePackages = BundlePackages;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle-packages.js","sourceRoot":"","sources":["../../../src/components/bundle-packages/bundle-packages.jsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAoD;AACpD,4DAAmC;AACnC,4DAA4B;AAC5B,+CAA+F;AAE/F,oEAAuC;AACvC,sDAA8B;AAC9B,0CAAuC;AACvC,wDAAoD;AACpD,8CAA2C;AAC3C,wDAAoD;AACpD,kDAA8C;AAC9C,8CAA2C;AAC3C,sCAAmC;AACnC,0CAAuC;AACvC,8CAA2C;AAC3C,sDAAkD;AAClD,oDAAgD;AAChD,kEAA6D;AAC7D,oEAA+D;AAC/D,gEAA2D;AAC3D,kDAA8C;AAC9C,iEAA4D;AAC5D,8FAA+C;AAC/C,0EAAqE;AACrE,+CAAqD;AACrD,
|
|
1
|
+
{"version":3,"file":"bundle-packages.js","sourceRoot":"","sources":["../../../src/components/bundle-packages/bundle-packages.jsx"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
white-space: nowrap;
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
+
.CHANGE {
|
|
8
|
+
color: var(--color-info);
|
|
9
|
+
}
|
|
10
|
+
|
|
7
11
|
.HIGH_NEGATIVE {
|
|
8
12
|
color: var(--color-red-dark);
|
|
9
13
|
}
|
|
@@ -29,11 +33,16 @@
|
|
|
29
33
|
}
|
|
30
34
|
|
|
31
35
|
.inverted {
|
|
32
|
-
|
|
36
|
+
padding: 0 2px;
|
|
37
|
+
border-radius: var(--radius-xsmall);
|
|
33
38
|
background-color: var(--color-gray-ultra-light);
|
|
34
39
|
color: var(--color-light);
|
|
35
40
|
}
|
|
36
41
|
|
|
42
|
+
.inverted.CHANGE {
|
|
43
|
+
background: var(--color-info-light);
|
|
44
|
+
}
|
|
45
|
+
|
|
37
46
|
.inverted.HIGH_NEGATIVE {
|
|
38
47
|
background: var(--color-red-dark);
|
|
39
48
|
}
|
|
@@ -9,13 +9,50 @@ const classnames_1 = __importDefault(require("classnames"));
|
|
|
9
9
|
const constants_1 = require("../../constants");
|
|
10
10
|
const button_1 = require("../../ui/button");
|
|
11
11
|
const control_group_1 = require("../../ui/control-group");
|
|
12
|
+
const dropdown_1 = require("../../ui/dropdown");
|
|
12
13
|
const icon_1 = require("../../ui/icon");
|
|
13
14
|
const metrics_display_selector_module_css_1 = __importDefault(require("./metrics-display-selector.module.css"));
|
|
15
|
+
const layout_1 = require("../../layout");
|
|
16
|
+
const DEFAULT_GROUP_BY = '';
|
|
17
|
+
const METRICS_DISPLAY_MAP = {
|
|
18
|
+
[constants_1.MetricsDisplayType.TABLE]: {
|
|
19
|
+
glyph: icon_1.Icon.ICONS.TABLE,
|
|
20
|
+
label: 'Table',
|
|
21
|
+
},
|
|
22
|
+
[constants_1.MetricsDisplayType.TREEMAP]: {
|
|
23
|
+
glyph: icon_1.Icon.ICONS.TREEMAP,
|
|
24
|
+
label: 'Treemap',
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
const displayTypes = Object.values(constants_1.MetricsDisplayType);
|
|
14
28
|
const MetricsDisplaySelector = (props) => {
|
|
15
|
-
const {
|
|
16
|
-
return (react_1.default.createElement(control_group_1.ControlGroup, {
|
|
17
|
-
|
|
18
|
-
|
|
29
|
+
const { value, groupBy = DEFAULT_GROUP_BY, groups = {}, onSelect, ...restProps } = props;
|
|
30
|
+
return (react_1.default.createElement(control_group_1.ControlGroup, { ...restProps }, displayTypes.map((displayType, index) => {
|
|
31
|
+
const displayGroups = groups?.[displayType];
|
|
32
|
+
const displayProps = METRICS_DISPLAY_MAP[displayType];
|
|
33
|
+
const isLast = displayTypes.length - 1 === index;
|
|
34
|
+
const isActive = displayType === value;
|
|
35
|
+
if (!displayGroups || displayGroups.length === 0) {
|
|
36
|
+
return (react_1.default.createElement(button_1.Button, { outline: true, active: isActive, size: "small", type: "button", glyph: displayProps.glyph, onClick: () => onSelect(displayType), className: isLast && metrics_display_selector_module_css_1.default.itemLast, key: displayType }, displayProps.label));
|
|
37
|
+
}
|
|
38
|
+
const displayGroupsData = [
|
|
39
|
+
{
|
|
40
|
+
value: DEFAULT_GROUP_BY,
|
|
41
|
+
label: 'No groups',
|
|
42
|
+
},
|
|
43
|
+
...displayGroups.map((displayGroup) => ({
|
|
44
|
+
value: displayGroup,
|
|
45
|
+
label: `Group by ${displayGroup}`,
|
|
46
|
+
})),
|
|
47
|
+
];
|
|
48
|
+
return (react_1.default.createElement(dropdown_1.Dropdown, { glyph: displayProps.glyph, label: displayProps.label, className: (0, classnames_1.default)(isLast && metrics_display_selector_module_css_1.default.itemLast, isActive && metrics_display_selector_module_css_1.default.buttonActive), key: displayType }, displayGroupsData.map((displayGroupData) => {
|
|
49
|
+
const isGroupActive = isActive && displayGroupData.value === groupBy;
|
|
50
|
+
return (react_1.default.createElement(dropdown_1.DropdownItem, { onClick: () => onSelect(displayType, displayGroupData.value), isActive: isGroupActive, className: (0, classnames_1.default)(metrics_display_selector_module_css_1.default.dropdownItem, isGroupActive && metrics_display_selector_module_css_1.default.dropdownItemActive), key: displayGroupData.value },
|
|
51
|
+
react_1.default.createElement(layout_1.FlexStack, { space: "xxxsmall", alignItems: "center" },
|
|
52
|
+
react_1.default.createElement(icon_1.Icon, { glyph: icon_1.Icon.ICONS.CHECK, size: "small", className: metrics_display_selector_module_css_1.default.dropdownItemIcon }),
|
|
53
|
+
react_1.default.createElement("span", null, displayGroupData.label))));
|
|
54
|
+
})));
|
|
55
|
+
})));
|
|
19
56
|
};
|
|
20
57
|
exports.MetricsDisplaySelector = MetricsDisplaySelector;
|
|
21
58
|
//# sourceMappingURL=metrics-display-selector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics-display-selector.js","sourceRoot":"","sources":["../../../src/components/metrics-display-selector/metrics-display-selector.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,4DAA4B;AAE5B,+CAAqD;AACrD,4CAAyC;AACzC,0DAAsD;AACtD,wCAAqC;AACrC,gHAAwD;
|
|
1
|
+
{"version":3,"file":"metrics-display-selector.js","sourceRoot":"","sources":["../../../src/components/metrics-display-selector/metrics-display-selector.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,18 @@
|
|
|
1
|
-
.
|
|
2
|
-
|
|
1
|
+
.buttonActive {
|
|
2
|
+
background: var(--color-highlight);
|
|
3
3
|
}
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
.
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
/* explicit ControlGroup last item styles to override ariakit injected sibling nodes */
|
|
6
|
+
.itemLast {
|
|
7
|
+
border-top-right-radius: var(--radius-small) !important;
|
|
8
|
+
border-bottom-right-radius: var(--radius-small) !important;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.dropdownItemIcon {
|
|
12
|
+
opacity: 0;
|
|
13
|
+
transition: var(--transition-out);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.dropdownItemActive .dropdownItemIcon {
|
|
17
|
+
opacity: 1;
|
|
10
18
|
}
|
|
@@ -14,5 +14,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.getTreemapNodesGroupedByPath = exports.getTreemapNodes = void 0;
|
|
17
18
|
__exportStar(require("./metrics-treemap"), exports);
|
|
19
|
+
var metrics_treemap_utils_1 = require("./metrics-treemap.utils");
|
|
20
|
+
Object.defineProperty(exports, "getTreemapNodes", { enumerable: true, get: function () { return metrics_treemap_utils_1.getTreemapNodes; } });
|
|
21
|
+
Object.defineProperty(exports, "getTreemapNodesGroupedByPath", { enumerable: true, get: function () { return metrics_treemap_utils_1.getTreemapNodesGroupedByPath; } });
|
|
18
22
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/metrics-treemap/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/metrics-treemap/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,iEAAwF;AAA/E,wHAAA,eAAe,OAAA;AAAE,qIAAA,4BAA4B,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics-treemap.constants.js","sourceRoot":"","sources":["../../../src/components/metrics-treemap/metrics-treemap.constants.ts"],"names":[],"mappings":""}
|
|
@@ -38,8 +38,9 @@ const delta_1 = require("../delta");
|
|
|
38
38
|
const run_info_1 = require("../run-info");
|
|
39
39
|
const metrics_treemap_module_css_1 = __importDefault(require("./metrics-treemap.module.css"));
|
|
40
40
|
const SQUARIFY_RATIO = 1.33;
|
|
41
|
-
const PADDING_OUTER =
|
|
41
|
+
const PADDING_OUTER = 2;
|
|
42
42
|
const PADDING_INNER = 2;
|
|
43
|
+
const GROUPED_PADDING_TOP = 16;
|
|
43
44
|
const PADDING_TOP = 4;
|
|
44
45
|
const PADDING_BOTTOM = 2;
|
|
45
46
|
const PADDING_LEFT = 16;
|
|
@@ -47,6 +48,15 @@ const PADDING_RIGHT = 4;
|
|
|
47
48
|
const VERTICAL_SPACING = 4;
|
|
48
49
|
const LINE_HEIGHT = 16;
|
|
49
50
|
const LINE_HEIGHT_SMALL = 13.3;
|
|
51
|
+
function resolveTileGroupSizeDisplay(width, height) {
|
|
52
|
+
if (height < GROUPED_PADDING_TOP || width < 24) {
|
|
53
|
+
return 'minimal';
|
|
54
|
+
}
|
|
55
|
+
if (height < GROUPED_PADDING_TOP + 8) {
|
|
56
|
+
return 'small';
|
|
57
|
+
}
|
|
58
|
+
return 'default';
|
|
59
|
+
}
|
|
50
60
|
function resolveTileSizeDisplay(width, height) {
|
|
51
61
|
if (height > PADDING_TOP + PADDING_BOTTOM + VERTICAL_SPACING + LINE_HEIGHT * 2 &&
|
|
52
62
|
width > PADDING_LEFT + PADDING_RIGHT + 128) {
|
|
@@ -73,10 +83,10 @@ const TileContent = (0, react_1.forwardRef)((props, ref) => {
|
|
|
73
83
|
return react_1.default.createElement("div", { className: metrics_treemap_module_css_1.default.tileContent, ref: ref });
|
|
74
84
|
}
|
|
75
85
|
return (react_1.default.createElement("div", { className: metrics_treemap_module_css_1.default.tileContent, ref: ref },
|
|
76
|
-
react_1.default.createElement(file_name_1.FileName, { as: "p", className: metrics_treemap_module_css_1.default.
|
|
77
|
-
sizeDisplay !== 'small' && (react_1.default.createElement("p", { className: metrics_treemap_module_css_1.default.
|
|
78
|
-
react_1.default.createElement("span", { className: metrics_treemap_module_css_1.default.
|
|
79
|
-
react_1.default.createElement(delta_1.Delta, { className: metrics_treemap_module_css_1.default.
|
|
86
|
+
react_1.default.createElement(file_name_1.FileName, { as: "p", className: metrics_treemap_module_css_1.default.tileContentLabel, name: item.label }),
|
|
87
|
+
sizeDisplay !== 'small' && (react_1.default.createElement("p", { className: metrics_treemap_module_css_1.default.tileContentValue },
|
|
88
|
+
react_1.default.createElement("span", { className: metrics_treemap_module_css_1.default.tileContentMetric }, runInfo.displayValue),
|
|
89
|
+
react_1.default.createElement(delta_1.Delta, { className: metrics_treemap_module_css_1.default.tileContentDelta, displayValue: runInfo.displayDeltaPercentage, deltaType: runInfo.deltaType })))));
|
|
80
90
|
});
|
|
81
91
|
const TileContentWithTooltip = (props) => {
|
|
82
92
|
const { sizeDisplay, item, runInfo, parentRef } = props;
|
|
@@ -107,56 +117,65 @@ const Tile = (props) => {
|
|
|
107
117
|
const { item } = data;
|
|
108
118
|
const runInfo = item.runs?.[0];
|
|
109
119
|
const sizeDisplay = (0, react_1.useMemo)(() => resolveTileSizeDisplay(width, height), [width, height]);
|
|
110
|
-
const handleOnClick = (0, react_1.useCallback)(() =>
|
|
120
|
+
const handleOnClick = (0, react_1.useCallback)((event) => {
|
|
121
|
+
event.stopPropagation();
|
|
122
|
+
onClick?.(item.key);
|
|
123
|
+
}, [item.key, onClick]);
|
|
111
124
|
const contentRef = (0, react_1.useRef)(null);
|
|
112
125
|
const hover = (0, react_use_1.useHoverDirty)(contentRef);
|
|
113
|
-
const className = (0, classnames_1.default)(metrics_treemap_module_css_1.default.tile, metrics_treemap_module_css_1.default[`tile-${runInfo.deltaType}`], sizeDisplay === 'small' && metrics_treemap_module_css_1.default.
|
|
126
|
+
const className = (0, classnames_1.default)(metrics_treemap_module_css_1.default.tile, metrics_treemap_module_css_1.default[`tile-${runInfo.deltaType}`], sizeDisplay === 'small' && metrics_treemap_module_css_1.default.tileSizeSmall, sizeDisplay === 'default' && metrics_treemap_module_css_1.default.tileSizeDefault, left === 0 && metrics_treemap_module_css_1.default.tileFirstCol);
|
|
114
127
|
return (react_1.default.createElement("button", { type: "button", onClick: handleOnClick, ref: contentRef, style: { left, top, width, height }, className: className }, hover ? (react_1.default.createElement(TileContentWithTooltip, { sizeDisplay: sizeDisplay, item: item, runInfo: runInfo, parentRef: contentRef })) : (react_1.default.createElement(TileContent, { sizeDisplay: sizeDisplay, item: item, runInfo: runInfo }))));
|
|
115
128
|
};
|
|
129
|
+
const TileGroup = (props) => {
|
|
130
|
+
const { title = '', id, childNodes, onItemClick, onGroupClick, left, top, width, height, absoluteLeft, absoluteTop, } = props;
|
|
131
|
+
const onClick = (0, react_1.useCallback)((event) => {
|
|
132
|
+
onGroupClick?.(id);
|
|
133
|
+
event.stopPropagation();
|
|
134
|
+
}, [onGroupClick, id]);
|
|
135
|
+
const displaySize = (0, react_1.useMemo)(() => resolveTileGroupSizeDisplay(width || 0, height || 0), [width, height]);
|
|
136
|
+
if (title && displaySize === 'minimal') {
|
|
137
|
+
return (react_1.default.createElement("div", { onClick: onClick, role: "button", "aria-label": "View children entries", className: metrics_treemap_module_css_1.default.tileGroup, style: { left, top, width, height } }));
|
|
138
|
+
}
|
|
139
|
+
if (title && displaySize === 'small') {
|
|
140
|
+
return (react_1.default.createElement("div", { onClick: onClick, role: "button", "aria-label": "View children entries", style: { left, top, width, height }, className: metrics_treemap_module_css_1.default.tileGroup },
|
|
141
|
+
react_1.default.createElement("div", { className: metrics_treemap_module_css_1.default.tileGroupTitle }, title)));
|
|
142
|
+
}
|
|
143
|
+
return (react_1.default.createElement("div", { onClick: onClick, role: "button", "aria-label": "View children entries", className: (0, classnames_1.default)(metrics_treemap_module_css_1.default.tileGroup, metrics_treemap_module_css_1.default.tileGroupSizeDefault), style: { left, top, width, height } },
|
|
144
|
+
title && react_1.default.createElement("div", { className: metrics_treemap_module_css_1.default.tileGroupTitle }, title),
|
|
145
|
+
childNodes?.map((childNode) => {
|
|
146
|
+
if ('children' in childNode) {
|
|
147
|
+
return (react_1.default.createElement(TileGroup, { title: childNode.data.label, id: childNode.data.id, childNodes: childNode.children, left: childNode.x0 - absoluteLeft, top: childNode.y0 - absoluteTop, absoluteLeft: childNode.x0, absoluteTop: childNode.y0, width: childNode.x1 - childNode.x0, height: childNode.y1 - childNode.y0, onItemClick: onItemClick, onGroupClick: onGroupClick, key: childNode.data.id }));
|
|
148
|
+
}
|
|
149
|
+
return (react_1.default.createElement(Tile, { data: childNode.data, left: childNode.x0 - absoluteLeft, top: childNode.y0 - absoluteTop, width: childNode.x1 - childNode.x0, height: childNode.y1 - childNode.y0, onClick: onItemClick, key: childNode.data.id }));
|
|
150
|
+
})));
|
|
151
|
+
};
|
|
116
152
|
function useMetricsTreemapHierarchy(params) {
|
|
117
|
-
const {
|
|
153
|
+
const { treeNodes, width, height, nested } = params;
|
|
118
154
|
const treemapHierarchy = (0, react_1.useMemo)(() => {
|
|
119
|
-
const
|
|
120
|
-
const values = item.runs.map((run) => run?.value || 0);
|
|
121
|
-
const value = Math.max(...values);
|
|
122
|
-
return {
|
|
123
|
-
id: item.key,
|
|
124
|
-
value,
|
|
125
|
-
item,
|
|
126
|
-
};
|
|
127
|
-
});
|
|
128
|
-
const treemapData = {
|
|
129
|
-
id: 'root',
|
|
130
|
-
name: 'root',
|
|
131
|
-
value: 0,
|
|
132
|
-
children,
|
|
133
|
-
};
|
|
134
|
-
const customHierarchy = (0, d3_1.hierarchy)(treemapData);
|
|
155
|
+
const customHierarchy = (0, d3_1.hierarchy)(treeNodes);
|
|
135
156
|
customHierarchy.sum((node) => node.value);
|
|
136
157
|
customHierarchy.sort((a, b) => b.value - a.value);
|
|
137
158
|
return customHierarchy;
|
|
138
|
-
}, [
|
|
139
|
-
const
|
|
140
|
-
|
|
159
|
+
}, [treeNodes]);
|
|
160
|
+
const treemapNodes = (0, react_1.useMemo)(() => {
|
|
161
|
+
let createTremapLayout = (0, d3_1.treemap)()
|
|
141
162
|
.size([width, height])
|
|
142
163
|
.tile(d3_1.treemapSquarify.ratio(SQUARIFY_RATIO))
|
|
143
164
|
.paddingOuter(PADDING_OUTER)
|
|
144
165
|
.paddingInner(PADDING_INNER);
|
|
145
|
-
|
|
146
|
-
|
|
166
|
+
if (nested) {
|
|
167
|
+
createTremapLayout = createTremapLayout.paddingTop(GROUPED_PADDING_TOP);
|
|
168
|
+
}
|
|
169
|
+
return createTremapLayout(treemapHierarchy);
|
|
147
170
|
}, [height, width, treemapHierarchy]);
|
|
148
|
-
return
|
|
171
|
+
return treemapNodes;
|
|
149
172
|
}
|
|
150
173
|
const MetricsTreemap = (props) => {
|
|
151
|
-
const { className = '',
|
|
174
|
+
const { className = '', treeNodes, onItemClick, onGroupClick, emptyMessage = 'No data', nested = false, ...restProps } = props;
|
|
152
175
|
const [containerRef, { width, height }] = (0, react_use_1.useMeasure)();
|
|
153
|
-
const
|
|
154
|
-
return (react_1.default.createElement("div", { className: (0, classnames_1.default)(metrics_treemap_module_css_1.default.root, className), ...restProps, ref: containerRef },
|
|
155
|
-
|
|
156
|
-
return null;
|
|
157
|
-
}
|
|
158
|
-
return (react_1.default.createElement(Tile, { data: tile.data, left: tile.x0, top: tile.y0, width: tile.x1 - tile.x0, height: tile.y1 - tile.y0, onClick: onItemClick, key: tile.id }));
|
|
159
|
-
}))) : (react_1.default.createElement("div", { className: metrics_treemap_module_css_1.default.emptyMessage },
|
|
176
|
+
const rootNode = useMetricsTreemapHierarchy({ treeNodes, width, height, nested });
|
|
177
|
+
return (react_1.default.createElement("div", { className: (0, classnames_1.default)(metrics_treemap_module_css_1.default.root, nested && metrics_treemap_module_css_1.default.nested, className), ...restProps, ref: containerRef }, rootNode.children && rootNode.children.length > 0 ? (react_1.default.createElement("div", { className: metrics_treemap_module_css_1.default.canvas },
|
|
178
|
+
react_1.default.createElement(TileGroup, { title: nested ? rootNode.data.label : undefined, id: rootNode.data.id, childNodes: rootNode.children, onItemClick: onItemClick, onGroupClick: onGroupClick, left: rootNode.x0, top: rootNode.y0, absoluteLeft: rootNode.x0, absoluteTop: rootNode.y0, width: rootNode.x1 - rootNode.x0, height: rootNode.y1 - rootNode.y0 }))) : (react_1.default.createElement("div", { className: metrics_treemap_module_css_1.default.emptyMessage },
|
|
160
179
|
react_1.default.createElement("div", { className: metrics_treemap_module_css_1.default.emptyMessageWrapper }, emptyMessage)))));
|
|
161
180
|
};
|
|
162
181
|
exports.MetricsTreemap = MetricsTreemap;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics-treemap.js","sourceRoot":"","sources":["../../../src/components/metrics-treemap/metrics-treemap.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+
|
|
1
|
+
{"version":3,"file":"metrics-treemap.js","sourceRoot":"","sources":["../../../src/components/metrics-treemap/metrics-treemap.tsx"],"names":[],"mappings":"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"}
|
|
@@ -13,15 +13,44 @@
|
|
|
13
13
|
top: 0;
|
|
14
14
|
width: 100%;
|
|
15
15
|
height: 100%;
|
|
16
|
-
fill: var(--color-text);
|
|
17
|
-
font-family: var(--font-family);
|
|
18
16
|
background: var(--color-background);
|
|
19
17
|
}
|
|
20
18
|
|
|
21
|
-
/**
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Tile group
|
|
21
|
+
*/
|
|
22
|
+
.tileGroup {
|
|
23
|
+
position: absolute;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.tileGroupTitle {
|
|
27
|
+
width: 100%;
|
|
28
|
+
padding: 2px var(--space-xxxsmall);
|
|
29
|
+
color: var(--color-text);
|
|
30
|
+
font-size: 10px;
|
|
31
|
+
line-height: 1em;
|
|
32
|
+
overflow: hidden;
|
|
33
|
+
white-space: nowrap;
|
|
34
|
+
text-overflow: ellipsis;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** Tile group size variation */
|
|
38
|
+
.tileGroupSizeDefault {
|
|
39
|
+
transition: var(--ui-transition-in);
|
|
40
|
+
transition-property: left top width height;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** Tile group nested variation */
|
|
44
|
+
.nested .tileGroup {
|
|
45
|
+
background: rgba(128, 128, 128, 0.05);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.nested .tileGroup:hover {
|
|
49
|
+
background: rgba(128, 128, 128, 0.08);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.nested .tileGroup:hover .tileGroupTitle {
|
|
53
|
+
color: var(--color-text-dark);
|
|
25
54
|
}
|
|
26
55
|
|
|
27
56
|
/** Leaf wrapper button */
|
|
@@ -31,7 +60,7 @@
|
|
|
31
60
|
border: 0;
|
|
32
61
|
border-radius: 0;
|
|
33
62
|
padding: 0;
|
|
34
|
-
background:
|
|
63
|
+
background: var(--color-background);
|
|
35
64
|
display: flex;
|
|
36
65
|
align-items: center;
|
|
37
66
|
font-family: var(--font-family-fixed);
|
|
@@ -57,12 +86,9 @@
|
|
|
57
86
|
opacity: 0.75;
|
|
58
87
|
}
|
|
59
88
|
|
|
60
|
-
.tile:hover {
|
|
61
|
-
transition: var(--ui-transition-in);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
89
|
.tile:hover::before {
|
|
65
90
|
transition: var(--ui-transition-in);
|
|
91
|
+
transition-property: opacity;
|
|
66
92
|
opacity: 0.5;
|
|
67
93
|
}
|
|
68
94
|
|
|
@@ -84,7 +110,7 @@
|
|
|
84
110
|
padding-left: var(--space-small);
|
|
85
111
|
}
|
|
86
112
|
|
|
87
|
-
.
|
|
113
|
+
.tileContentLabel {
|
|
88
114
|
flex: 0 1 auto;
|
|
89
115
|
width: 100%;
|
|
90
116
|
min-width: 0;
|
|
@@ -92,32 +118,37 @@
|
|
|
92
118
|
overflow: hidden;
|
|
93
119
|
}
|
|
94
120
|
|
|
95
|
-
.
|
|
121
|
+
.tileContentValue {
|
|
96
122
|
flex: 0 0 auto;
|
|
97
123
|
max-width: calc(100% + var(--space-xxsmall));
|
|
98
124
|
white-space: nowrap;
|
|
99
125
|
overflow: hidden;
|
|
100
126
|
}
|
|
101
127
|
|
|
102
|
-
.
|
|
128
|
+
.tileContentMetric {
|
|
103
129
|
font-weight: bold;
|
|
104
130
|
}
|
|
105
131
|
|
|
106
|
-
.
|
|
132
|
+
.tileContentDelta {
|
|
107
133
|
margin-left: var(--space-xxxsmall);
|
|
108
134
|
}
|
|
109
135
|
|
|
110
136
|
/** Tile size variation */
|
|
111
|
-
.
|
|
137
|
+
.tileSizeSmall .tileContent {
|
|
112
138
|
padding: var(--space-xxxsmall) var(--space-xxsmall);
|
|
113
139
|
gap: 0;
|
|
114
140
|
font-size: var(--size-xsmall);
|
|
115
141
|
}
|
|
116
142
|
|
|
117
|
-
.
|
|
143
|
+
.tileSizeSmall .tileContentLabel {
|
|
118
144
|
margin-top: 0;
|
|
119
145
|
}
|
|
120
146
|
|
|
147
|
+
.tileSizeDefault {
|
|
148
|
+
transition: var(--ui-transition-in);
|
|
149
|
+
transition-property: left top width height;
|
|
150
|
+
}
|
|
151
|
+
|
|
121
152
|
/** Tile diff variation */
|
|
122
153
|
.tile-NO_CHANGE {
|
|
123
154
|
color: var(--color-text-light);
|
|
@@ -125,7 +156,7 @@
|
|
|
125
156
|
|
|
126
157
|
.tile-NO_CHANGE::before {
|
|
127
158
|
color: var(--color-gray-50);
|
|
128
|
-
opacity: 0.
|
|
159
|
+
opacity: 0.3;
|
|
129
160
|
}
|
|
130
161
|
|
|
131
162
|
.tile-NO_CHANGE:hover::before {
|
|
@@ -193,17 +224,16 @@
|
|
|
193
224
|
pointer-events: none;
|
|
194
225
|
}
|
|
195
226
|
|
|
196
|
-
/* prevent tooltip portal wrapper from capturing events */
|
|
197
|
-
div[role="presentation"]:has(.tooltip) {
|
|
198
|
-
pointer-events: none;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
|
|
202
227
|
.tileTooltipArrow svg {
|
|
203
228
|
display: block;
|
|
204
229
|
fill: var(--color-background) !important;
|
|
205
230
|
}
|
|
206
231
|
|
|
207
232
|
.tileTooltipContentTitle {
|
|
208
|
-
font-size: var(--size-
|
|
233
|
+
font-size: var(--size-small);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/* prevent tooltip portal wrapper from capturing events */
|
|
237
|
+
div[role="presentation"]:has(.tooltip) {
|
|
238
|
+
pointer-events: none;
|
|
209
239
|
}
|