@@ -25,6 +25,10 @@ import {useIsUserAllowedToMakeChanges} from '../../utils/hooks/useIsUserAllowedT
2525
2626import  i18n  from  './i18n' ; 
2727
28+ function  isFollowerTablet ( state : TTabletStateInfo )  { 
29+     return  state . Leader  ===  false ; 
30+ } 
31+ 
2832function  getColumns ( { nodeId} : { nodeId ?: string  |  number } )  { 
2933    const  columns : DataTableColumn < TTabletStateInfo  &  { fqdn ?: string } > [ ]  =  [ 
3034        { 
@@ -34,7 +38,7 @@ function getColumns({nodeId}: {nodeId?: string | number}) {
3438                return  i18n ( 'Type' ) ; 
3539            } , 
3640            render : ( { row} )  =>  { 
37-                 const  isFollower  =  row . Leader   ===   false ; 
41+                 const  isFollower  =  isFollowerTablet ( row ) ; 
3842                return  ( 
3943                    < span > 
4044                        { row . Type }  { isFollower  ? < Text  color = "secondary" > follower</ Text >  : '' } 
@@ -138,7 +142,8 @@ function getColumns({nodeId}: {nodeId?: string | number}) {
138142} 
139143
140144function  TabletActions ( tablet : TTabletStateInfo )  { 
141-     const  isDisabledRestart  =  tablet . State  ===  ETabletState . Stopped ; 
145+     const  isFollower  =  isFollowerTablet ( tablet ) ; 
146+     const  isDisabledRestart  =  tablet . State  ===  ETabletState . Stopped  ||  isFollower ; 
142147    const  isUserAllowedToMakeChanges  =  useIsUserAllowedToMakeChanges ( ) ; 
143148    const  [ killTablet ]  =  tabletApi . useKillTabletMutation ( ) ; 
144149
@@ -147,22 +152,27 @@ function TabletActions(tablet: TTabletStateInfo) {
147152        return  null ; 
148153    } 
149154
155+     let  popoverContent : React . ReactNode ; 
156+ 
157+     if  ( isFollower )  { 
158+         popoverContent  =  i18n ( 'controls.kill-impossible-follower' ) ; 
159+     }  else  if  ( ! isUserAllowedToMakeChanges )  { 
160+         popoverContent  =  i18n ( 'controls.kill-not-allowed' ) ; 
161+     }  else  { 
162+         popoverContent  =  i18n ( 'dialog.kill-header' ) ; 
163+     } 
164+ 
150165    return  ( 
151166        < ButtonWithConfirmDialog 
152167            buttonView = "outlined" 
153-             buttonTitle = { i18n ( 'dialog.kill-header' ) } 
154168            dialogHeader = { i18n ( 'dialog.kill-header' ) } 
155169            dialogText = { i18n ( 'dialog.kill-text' ) } 
156170            onConfirmAction = { ( )  =>  { 
157171                return  killTablet ( { id} ) . unwrap ( ) ; 
158172            } } 
159173            buttonDisabled = { isDisabledRestart  ||  ! isUserAllowedToMakeChanges } 
160174            withPopover 
161-             popoverContent = { 
162-                 isUserAllowedToMakeChanges 
163-                     ? i18n ( 'dialog.kill-header' ) 
164-                     : i18n ( 'controls.kill-not-allowed' ) 
165-             } 
175+             popoverContent = { popoverContent } 
166176            popoverPlacement = { [ 'right' ,  'bottom' ] } 
167177            popoverDisabled = { false } 
168178        > 
0 commit comments