Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
cloud_components.jsx126 linesDownload Raw Back to js
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'}}/>&nbsp;63            {option.icon}&nbsp;&nbsp;&nbsp;&nbsp;{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 
codekingpro/portable-devtools · Team Ai