1
1
import React , { memo , useEffect } from 'react' ;
2
2
import PropTypes from 'prop-types' ;
3
- import { Box , Card , CardContent , CardHeader , Typography } from '@mui/material' ;
3
+ import { Box , Button , Card , CardContent , CardHeader , Typography } from '@mui/material' ;
4
4
import { useClient } from '../../context/client-context' ;
5
5
import { DataGridList } from '../Points/DataGridList' ;
6
6
import { CopyButton } from '../Common/CopyButton' ;
@@ -17,6 +17,21 @@ export const CollectionInfo = ({ collectionName }) => {
17
17
const [ clusterInfo , setClusterInfo ] = React . useState ( null ) ;
18
18
19
19
useEffect ( ( ) => {
20
+ fetchCollection ( ) ;
21
+ qdrantClient
22
+ . api ( 'cluster' )
23
+ . collectionClusterInfo ( { collection_name : collectionName } )
24
+ . then ( ( res ) => {
25
+ setClusterInfo ( ( ) => {
26
+ return { ...res . data } ;
27
+ } ) ;
28
+ } )
29
+ . catch ( ( err ) => {
30
+ enqueueSnackbar ( err . message , getSnackbarOptions ( 'error' , closeSnackbar ) ) ;
31
+ } ) ;
32
+ } , [ collectionName ] ) ;
33
+
34
+ const fetchCollection = ( ) => {
20
35
qdrantClient
21
36
. getCollection ( collectionName )
22
37
. then ( ( res ) => {
@@ -27,19 +42,21 @@ export const CollectionInfo = ({ collectionName }) => {
27
42
. catch ( ( err ) => {
28
43
enqueueSnackbar ( err . message , getSnackbarOptions ( 'error' , closeSnackbar ) ) ;
29
44
} ) ;
45
+ } ;
30
46
47
+ const triggerOptimizers = ( ) => {
31
48
qdrantClient
32
- . api ( 'cluster' )
33
- . collectionClusterInfo ( { collection_name : collectionName } )
34
- . then ( ( res ) => {
35
- setClusterInfo ( ( ) => {
36
- return { ... res . data } ;
37
- } ) ;
49
+ . updateCollection ( collectionName , {
50
+ optimizers_config : { } ,
51
+ } )
52
+ . then ( ( ) => {
53
+ enqueueSnackbar ( 'Optimizers triggered' , getSnackbarOptions ( 'success' , closeSnackbar ) ) ;
54
+ fetchCollection ( ) ;
38
55
} )
39
56
. catch ( ( err ) => {
40
57
enqueueSnackbar ( err . message , getSnackbarOptions ( 'error' , closeSnackbar ) ) ;
41
58
} ) ;
42
- } , [ collectionName ] ) ;
59
+ } ;
43
60
44
61
return (
45
62
< Box pt = { 2 } >
@@ -57,9 +74,17 @@ export const CollectionInfo = ({ collectionName }) => {
57
74
data = { collection }
58
75
specialCases = { {
59
76
status : (
60
- < Typography variant = "subtitle1" color = "text.secondary" >
61
- { collection . status } < Dot color = { collection . status } />
62
- </ Typography >
77
+ < Box display = "flex" alignItems = "center" justifyContent = { 'space-between' } >
78
+ < Typography variant = "subtitle1" color = "text.secondary" >
79
+ { collection . status } < Dot color = { collection . status } />
80
+ </ Typography >
81
+ { ( collection . status === 'grey' ||
82
+ collection . optimizer_status ?. error === `optimizations pending, awaiting update operation` ) && (
83
+ < Button variant = "outlined" size = "small" onClick = { triggerOptimizers } >
84
+ Trigger optimizers
85
+ </ Button >
86
+ ) }
87
+ </ Box >
63
88
) ,
64
89
} }
65
90
/>
0 commit comments