import { StyleRulesCallback, WithStyles, withStyles } from '@material-ui/core/styles';
import { ArvadosTheme } from 'common/custom-theme';
import { compose, Dispatch } from 'redux';
-import { loadVirtualMachinesAdminData, openAddVirtualMachineLoginDialog, openRemoveVirtualMachineLoginDialog } from 'store/virtual-machines/virtual-machines-actions';
+import { loadVirtualMachinesAdminData, openAddVirtualMachineLoginDialog, openRemoveVirtualMachineLoginDialog, openEditVirtualMachineLoginDialog } from 'store/virtual-machines/virtual-machines-actions';
import { RootState } from 'store/store';
import { ListResults } from 'services/common-service/common-service';
import { MoreOptionsIcon, AddUserIcon } from 'components/icon/icon';
import { openVirtualMachinesContextMenu } from 'store/context-menu/context-menu-actions';
import { ResourceUuid, VirtualMachineHostname, VirtualMachineLogin } from 'views-components/data-explorer/renderers';
-type CssRules = 'moreOptionsButton' | 'moreOptions' | 'chipsRoot';
+type CssRules = 'moreOptionsButton' | 'moreOptions' | 'chipsRoot' | 'vmTableWrapper';
const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
moreOptionsButton: {
chipsRoot: {
margin: `0px -${theme.spacing.unit / 2}px`,
},
+ vmTableWrapper: {
+ overflowX: 'auto',
+ },
});
const mapStateToProps = (state: RootState) => {
};
};
-const mapDispatchToProps = (dispatch: Dispatch): Pick<VirtualMachinesPanelActionProps, 'loadVirtualMachinesData' | 'onOptionsMenuOpen' | 'onAddLogin' | 'onDeleteLogin'> => ({
+const mapDispatchToProps = (dispatch: Dispatch): Pick<VirtualMachinesPanelActionProps, 'loadVirtualMachinesData' | 'onOptionsMenuOpen' | 'onAddLogin' | 'onDeleteLogin' | 'onLoginEdit'> => ({
loadVirtualMachinesData: () => dispatch<any>(loadVirtualMachinesAdminData()),
onOptionsMenuOpen: (event, virtualMachine) => {
dispatch<any>(openVirtualMachinesContextMenu(event, virtualMachine));
onDeleteLogin: (uuid: string) => {
dispatch<any>(openRemoveVirtualMachineLoginDialog(uuid));
},
+ onLoginEdit: (uuid: string) => {
+ dispatch<any>(openEditVirtualMachineLoginDialog(uuid));
+ },
});
interface VirtualMachinesPanelDataProps {
onOptionsMenuOpen: (event: React.MouseEvent<HTMLElement>, virtualMachine: VirtualMachinesResource) => void;
onAddLogin: (uuid: string) => void;
onDeleteLogin: (uuid: string) => void;
+ onLoginEdit: (uuid: string) => void;
}
type VirtualMachineProps = VirtualMachinesPanelActionProps & VirtualMachinesPanelDataProps & WithStyles<CssRules>;
const CardContentWithVirtualMachines = (props: VirtualMachineProps) =>
<Grid item xs={12}>
<Card>
- <CardContent>
+ <CardContent className={props.classes.vmTableWrapper}>
{virtualMachinesTable(props)}
</CardContent>
</Card>
<Grid container spacing={8} className={props.classes.chipsRoot}>
{props.links.items.filter((link) => (link.headUuid === machine.uuid)).map((permission, i) => (
<Grid item key={i}>
- <Chip label={<VirtualMachineLogin linkUuid={permission.uuid} />} onDelete={event => props.onDeleteLogin(permission.uuid)} />
+ <Chip label={<VirtualMachineLogin linkUuid={permission.uuid} />} onDelete={event => props.onDeleteLogin(permission.uuid)} onClick={event => props.onLoginEdit(permission.uuid)} />
</Grid>
))}
</Grid>