Skip to content

Commit 784b7d4

Browse files
authored
fix: sorting buckets across UI (#3288)
* fix: buckets sorted the same across ui * fix: prettier * test: fixed bucket sorting * test: bucket sorting fix * feat: re-order buckets in tokens * fix: prettier * fix: re-ordering buckets by bucket name
1 parent 9acfec2 commit 784b7d4

File tree

6 files changed

+61
-19
lines changed

6 files changed

+61
-19
lines changed

cypress/e2e/cloud/buckets.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -492,15 +492,15 @@ describe('Buckets', () => {
492492
]
493493
const retentionDesc = [
494494
defaultBucket,
495-
monitoringBucket,
496495
createdBucket,
496+
monitoringBucket,
497497
tasksBucket,
498498
]
499499
const retentionAsc = [
500-
tasksBucket,
501-
monitoringBucket,
502500
createdBucket,
503501
defaultBucket,
502+
tasksBucket,
503+
monitoringBucket,
504504
]
505505

506506
cy.getByTestID('Create Bucket').click()

cypress/e2e/oss/buckets.test.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,9 @@ describe('Buckets', () => {
1414
)
1515
)
1616

17-
// TODO: Skipping this until we can sort out the differences between OSS and Cloud
1817
it('can sort by name and retention', () => {
1918
const buckets = ['defbuck', '_tasks', '_monitoring']
20-
const retentionDesc = ['_monitoring', '_tasks', 'defbuck']
19+
const retentionDesc = ['defbuck', '_monitoring', '_tasks']
2120
const retentionAsc = ['defbuck', '_tasks', '_monitoring']
2221

2322
cy.getByTestID('resource-sorter--button')

src/authorizations/components/redesigned/IndividualAccordionBody.tsx

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,24 @@ interface Props {
2626

2727
export const IndividualAccordionBody: FC<Props> = props => {
2828
const {resourceName, permissions, onToggle, title, disabled} = props
29+
let sortedPermissions
30+
31+
if (resourceName === 'buckets') {
32+
// re-order buckets: user buckets first followed by system buckets
33+
const systemBuckets = []
34+
const userBuckets = []
35+
36+
permissions.forEach(bucket => {
37+
if (bucket.name === '_monitoring' || bucket.name === '_tasks') {
38+
systemBuckets.push(bucket)
39+
} else {
40+
userBuckets.push(bucket)
41+
}
42+
})
43+
sortedPermissions = [...userBuckets, ...systemBuckets]
44+
} else {
45+
sortedPermissions = [...permissions]
46+
}
2947

3048
const handleReadToggle = id => {
3149
onToggle(resourceName, id, PermissionType.Read)
@@ -81,13 +99,13 @@ export const IndividualAccordionBody: FC<Props> = props => {
8199
{title}
82100
</Accordion.AccordionBodyItem>
83101
{permissions
84-
? Object.keys(permissions).map(key => {
102+
? Object.keys(sortedPermissions).map(key => {
85103
return (
86104
<Accordion.AccordionBodyItem
87-
key={permissions[key].id}
105+
key={sortedPermissions[key].id}
88106
className="resource-accordion-body"
89107
>
90-
{accordionBody(permissions[key])}
108+
{accordionBody(sortedPermissions[key])}
91109
</Accordion.AccordionBodyItem>
92110
)
93111
})

src/buckets/components/BucketList.tsx

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,14 +57,25 @@ class BucketList extends PureComponent<
5757
onUpdateBucket,
5858
onGetBucketSchema,
5959
} = this.props
60+
6061
const sortedBuckets = this.memGetSortedResources(
6162
buckets,
6263
sortKey,
6364
sortDirection,
6465
sortType
6566
)
67+
const userBuckets = []
68+
const systemBuckets = []
69+
sortedBuckets.forEach(bucket => {
70+
if (bucket.type === 'user') {
71+
userBuckets.push(bucket)
72+
} else {
73+
systemBuckets.push(bucket)
74+
}
75+
})
76+
const userAndSystemBuckets = [...userBuckets, ...systemBuckets]
6677

67-
return sortedBuckets.map(bucket => {
78+
return userAndSystemBuckets.map(bucket => {
6879
return (
6980
<BucketCard
7081
key={bucket.id}

src/buckets/pagination/BucketList.tsx

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,9 +125,20 @@ class BucketList
125125
this.props.bucketCount
126126
)
127127

128+
const userBuckets = []
129+
const systemBuckets = []
130+
sortedBuckets.forEach(bucket => {
131+
if (bucket.type === 'user') {
132+
userBuckets.push(bucket)
133+
} else {
134+
systemBuckets.push(bucket)
135+
}
136+
})
137+
const userAndSystemBuckets = [...userBuckets, ...systemBuckets]
138+
128139
const buckets = []
129140
for (let i = startIndex; i < endIndex; i++) {
130-
const bucket = sortedBuckets[i]
141+
const bucket = userAndSystemBuckets[i]
131142
if (bucket) {
132143
buckets.push(
133144
<BucketCard

src/timeMachine/components/queryBuilder/BucketsSelector.tsx

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,11 @@ import {selectBucket} from 'src/timeMachine/actions/queryBuilderThunks'
1414

1515
// Utils
1616
import {getActiveQuery} from 'src/timeMachine/selectors'
17-
import {getAll, getStatus} from 'src/resources/selectors'
17+
import {getStatus} from 'src/resources/selectors'
18+
import {getSortedBuckets} from 'src/buckets/selectors/index'
1819

1920
// Types
20-
import {AppState, Bucket, ResourceType} from 'src/types'
21+
import {AppState, ResourceType} from 'src/types'
2122
import {RemoteDataState} from 'src/types'
2223

2324
type ReduxProps = ConnectedProps<typeof connector>
@@ -28,12 +29,13 @@ const fb = term => bucket =>
2829

2930
const BucketSelector: FunctionComponent<Props> = ({
3031
selectedBucket,
31-
bucketNames,
32+
sortedBucketNames,
3233
bucketsStatus,
3334
onSelectBucket,
3435
}) => {
3536
const [searchTerm, setSearchTerm] = useState('')
36-
const list = bucketNames.filter(fb(searchTerm))
37+
38+
const list = sortedBucketNames.filter(fb(searchTerm))
3739

3840
const onSelect = (bucket: string) => {
3941
onSelectBucket(bucket, true)
@@ -51,7 +53,7 @@ const BucketSelector: FunctionComponent<Props> = ({
5153
)
5254
}
5355

54-
if (bucketsStatus === RemoteDataState.Done && !bucketNames.length) {
56+
if (bucketsStatus === RemoteDataState.Done && !sortedBucketNames.length) {
5557
return <BuilderCard.Empty>No buckets found</BuilderCard.Empty>
5658
}
5759

@@ -100,13 +102,14 @@ const Selector: FunctionComponent<SelectorProps> = ({
100102
}
101103

102104
const mstp = (state: AppState) => {
103-
const buckets = getAll<Bucket>(state, ResourceType.Buckets)
104-
const bucketNames = buckets.map(bucket => bucket.name || '')
105+
const sortedBucketNames = getSortedBuckets(state).map(
106+
bucket => bucket.name || ''
107+
)
105108
const bucketsStatus = getStatus(state, ResourceType.Buckets)
106109
const selectedBucket =
107-
getActiveQuery(state).builderConfig.buckets[0] || bucketNames[0]
110+
getActiveQuery(state).builderConfig.buckets[0] || sortedBucketNames[0]
108111

109-
return {selectedBucket, bucketNames, bucketsStatus}
112+
return {selectedBucket, sortedBucketNames, bucketsStatus}
110113
}
111114

112115
const mdtp = {

0 commit comments

Comments
 (0)