codekingpro/portable-devtools
114k
1/////////////////////////////////////////////////////////////2//3// pgAdmin 4 - PostgreSQL Tools4//5// Copyright (C) 2013 - 2024, The pgAdmin Development Team6// This software is released under the PostgreSQL Licence7//8//////////////////////////////////////////////////////////////9 10import React from 'react';11import { ToggleButton, ToggleButtonGroup } from '@mui/material';12import CheckRoundedIcon from '@mui/icons-material/CheckRounded';13import { DefaultButton, PrimaryButton } from '../../../../static/js/components/Buttons';14import { makeStyles } from '@mui/styles';15import PropTypes from 'prop-types';16import { getAWSSummary } from './aws';17import {getAzureSummary} from './azure';18import { getBigAnimalSummary } from './biganimal';19import { commonTableStyles } from '../../../../static/js/Theme';20import { Table, TableBody, TableCell, TableHead, TableRow } from '@mui/material';21import clsx from 'clsx';22import gettext from 'sources/gettext';23import { getGoogleSummary } from './google';24import { CLOUD_PROVIDERS_LABELS } from './cloud_constants';25 26const useStyles = makeStyles(() =>27 ({28 toggleButtonGroup: {29 height: '100px',30 flexGrow: '1'31 },32 toggleButtonMargin:{33 marginTop: '0px !important',34 padding: '12px'35 },36 gcpiconpadding:{37 paddingLeft: '1.5rem'38 }39 40 }),41);42 43 44export function ToggleButtons(props) {45 const classes = useStyles();46 47 const handleCloudProvider = (event, provider) => {48 if (provider) props.setCloudProvider(provider);49 };50 51 return (52 <ToggleButtonGroup53 color="primary"54 value={props.cloudProvider}55 onChange={handleCloudProvider}56 className={classes.toggleButtonGroup}57 orientation="vertical"58 exclusive>59 {60 (props.options||[]).map((option)=>{61 return (<ToggleButton value={option.value} key={option.label} aria-label={option.label} className={clsx(classes.toggleButtonMargin, option.label==gettext(CLOUD_PROVIDERS_LABELS.GOOGLE) ? classes.gcpiconpadding : null )} component={props.cloudProvider == option.value ? PrimaryButton : DefaultButton}>62 <CheckRoundedIcon style={{visibility: props.cloudProvider == option.value ? 'visible': 'hidden'}}/> 63 {option.icon} {option.label}64 </ToggleButton>);65 })66 }67 </ToggleButtonGroup>68 );69}70ToggleButtons.propTypes = {71 setCloudProvider: PropTypes.func,72 cloudProvider: PropTypes.string,73 options: PropTypes.array,74};75 76 77export function FinalSummary(props) {78 const tableClasses = commonTableStyles();79 let summary = [],80 summaryHeader = ['Cloud Details', 'Version and Instance Details', 'Storage Details', 'Database Details'];81 82 if (props.cloudProvider == 'biganimal') {83 summary = getBigAnimalSummary(props.cloudProvider, props.clusterTypeData, props.instanceData, props.databaseData);84 summaryHeader = ['Cloud Details', 'Cluster Details' ,'Version Details', 'Storage Details', 'Database Details'];85 } else if(props.cloudProvider == 'azure') {86 summaryHeader.push('Network Connectivity','Availability');87 summary = getAzureSummary(props.cloudProvider, props.instanceData, props.databaseData);88 }else if(props.cloudProvider == 'google') {89 summaryHeader.push('Network Connectivity','Availability');90 summary = getGoogleSummary(props.cloudProvider, props.instanceData, props.databaseData);91 }else {92 summaryHeader.push('Availability');93 summary = getAWSSummary(props.cloudProvider, props.instanceData, props.databaseData);94 }95 96 const displayTableRows = (rows) => {97 return rows.map((row) => (98 <TableRow key={row.name} >99 <TableCell scope="row">{row.name}</TableCell>100 <TableCell align="right">{row.value}</TableCell>101 </TableRow>102 ));103 };104 105 return summary.map((item, index) => {106 return (107 <Table key={summaryHeader[index]} className={clsx(tableClasses.table)}>108 <TableHead>109 <TableRow>110 <TableCell colSpan={2}>{gettext(summaryHeader[index])}</TableCell>111 </TableRow>112 </TableHead>113 <TableBody>114 {displayTableRows(item)}115 </TableBody>116 </Table>117 );118 });119}120FinalSummary.propTypes = {121 cloudProvider: PropTypes.string,122 instanceData: PropTypes.object,123 databaseData: PropTypes.object,124 clusterTypeData: PropTypes.object,125};126 