Skip to content

Commit a3d57a2

Browse files
committed
feat(database-collecttions): add uncompressed data stat field
Add uncompressed data field in database and collections list. Also, update the tooltip for storage and uncompressed data size fields so that it gets easier for users to understand these fields. On branch feat/uncompressed-data-size Changes to be committed: modified: packages/compass-components/src/components/inline-definition.tsx modified: packages/databases-collections-list/src/collections.tsx modified: packages/databases-collections-list/src/databases.tsx modified: packages/databases-collections-list/src/index.spec.tsx
1 parent d07e301 commit a3d57a2

File tree

4 files changed

+51
-17
lines changed

4 files changed

+51
-17
lines changed

packages/compass-components/src/components/inline-definition.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* eslint-disable react/prop-types */
22
import React from 'react';
3-
import { css } from '@leafygreen-ui/emotion';
3+
import { css, cx } from '@leafygreen-ui/emotion';
44
import { Body, Tooltip } from './leafygreen';
55

66
const underline = css({
@@ -15,6 +15,10 @@ const maxWidth = css({
1515
maxWidth: '360px',
1616
});
1717

18+
const breakSpaces = css({
19+
whiteSpace: 'break-spaces',
20+
});
21+
1822
const InlineDefinition: React.FunctionComponent<
1923
React.HTMLProps<HTMLSpanElement> & {
2024
definition: React.ReactNode;
@@ -34,7 +38,7 @@ const InlineDefinition: React.FunctionComponent<
3438
}
3539
{...tooltipProps}
3640
>
37-
<Body className={maxWidth}>{definition}</Body>
41+
<Body className={cx(maxWidth, breakSpaces)}>{definition}</Body>
3842
</Tooltip>
3943
);
4044
};

packages/databases-collections-list/src/collections.tsx

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -126,30 +126,46 @@ const CollectionsList: React.FunctionComponent<{
126126
: coll.type === 'timeseries'
127127
? [
128128
{
129-
label: 'Storage size',
129+
label: 'Storage',
130130
value:
131131
coll.calculated_storage_size !== undefined
132132
? compactBytes(coll.calculated_storage_size)
133133
: 'N/A',
134+
hint:
135+
coll.calculated_storage_size !== undefined &&
136+
'Storage Data: Sum of the disk space allocated to all collections in the database for document storage.',
137+
},
138+
{
139+
label: 'Uncompressed data',
140+
value:
141+
coll.document_size !== undefined
142+
? compactBytes(coll.document_size)
143+
: 'N/A',
134144
hint:
135145
coll.document_size !== undefined &&
136-
`Uncompressed data size: ${compactBytes(
137-
coll.document_size
138-
)}`,
146+
'Uncompressed Data Size: Total size of the uncompressed data held in the database.',
139147
},
140148
]
141149
: [
142150
{
143-
label: 'Storage size',
151+
label: 'Storage',
144152
value:
145153
coll.calculated_storage_size !== undefined
146154
? compactBytes(coll.calculated_storage_size)
147155
: 'N/A',
156+
hint:
157+
coll.calculated_storage_size !== undefined &&
158+
'Storage Data: Sum of the disk space allocated to all collections in the database for document storage.',
159+
},
160+
{
161+
label: 'Uncompressed data',
162+
value:
163+
coll.document_size !== undefined
164+
? compactBytes(coll.document_size)
165+
: 'N/A',
148166
hint:
149167
coll.document_size !== undefined &&
150-
`Uncompressed data size: ${compactBytes(
151-
coll.document_size
152-
)}`,
168+
'Uncompressed Data Size: Total size of the uncompressed data held in the database.',
153169
},
154170
{
155171
label: 'Documents',

packages/databases-collections-list/src/databases.tsx

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,15 +74,24 @@ const DatabasesList: React.FunctionComponent<{
7474
inferredFromPrivileges={db.inferred_from_privileges}
7575
data={[
7676
{
77-
label: 'Storage size',
77+
label: 'Storage',
7878
value:
7979
enableDbAndCollStats && db.storage_size !== undefined
8080
? compactBytes(db.storage_size)
8181
: 'N/A',
8282
hint:
8383
enableDbAndCollStats &&
84-
db.data_size !== undefined &&
85-
`Uncompressed data size: ${compactBytes(db.data_size)}`,
84+
'Storage Data: Sum of the disk space allocated to all collections in the database for document storage.',
85+
},
86+
{
87+
label: 'Uncompressed data',
88+
value:
89+
enableDbAndCollStats && db.data_size !== undefined
90+
? compactBytes(db.data_size)
91+
: 'N/A',
92+
hint:
93+
enableDbAndCollStats &&
94+
'Uncompressed Data Size: Total size of the uncompressed data held in the database.',
8695
},
8796
{
8897
label: 'Collections',

packages/databases-collections-list/src/index.spec.tsx

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -151,8 +151,10 @@ describe('databases and collections list', function () {
151151
expect(screen.getAllByTestId('database-grid-item')).to.have.lengthOf(1);
152152
expect(screen.getByText('foo')).to.exist;
153153

154-
expect(screen.getByText(/Storage size/)).to.exist;
154+
expect(screen.getByText(/Storage/)).to.exist;
155155
expect(screen.getByText('1.50 kB')).to.exist;
156+
expect(screen.getByText(/Uncompressed data/)).to.exist;
157+
expect(screen.getByText('1.00 kB')).to.exist;
156158
expect(screen.getByText(/Collections/)).to.exist;
157159
expect(screen.getByText('35')).to.exist;
158160
expect(screen.getByText(/Indexes/)).to.exist;
@@ -249,7 +251,7 @@ describe('databases and collections list', function () {
249251
]);
250252
});
251253

252-
it('should not display statistics (except storage size) on timeseries collection card', function () {
254+
it('should not display statistics (except storage and uncompressed data size) on timeseries collection card', function () {
253255
renderCollectionsList({
254256
namespace: 'db',
255257
collections: colls,
@@ -260,7 +262,8 @@ describe('databases and collections list', function () {
260262
.getByText('bat.bat')
261263
.closest('[data-testid="collection-grid-item"]');
262264
expect(timeseriesCard).to.exist;
263-
expect(timeseriesCard).to.contain.text('Storage size:');
265+
expect(timeseriesCard).to.contain.text('Storage:');
266+
expect(timeseriesCard).to.contain.text('Uncompressed data:');
264267
expect(timeseriesCard).to.not.contain.text('Documents:');
265268
expect(timeseriesCard).to.not.contain.text('Avg. document size::');
266269
expect(timeseriesCard).to.not.contain.text('Indexes:');
@@ -278,8 +281,10 @@ describe('databases and collections list', function () {
278281
onCollectionClick: () => {},
279282
});
280283

281-
expect(screen.getByText(/Storage size/)).to.exist;
284+
expect(screen.getByText(/Storage/)).to.exist;
282285
expect(screen.getByText('1.50 kB')).to.exist;
286+
expect(screen.getByText(/Uncompressed data/)).to.exist;
287+
expect(screen.getByText('11.00 B')).to.exist;
283288
expect(screen.getByText(/Documents/)).to.exist;
284289
expect(screen.getByText('10')).to.exist;
285290
expect(screen.getByText(/Avg. document size/)).to.exist;

0 commit comments

Comments
 (0)