import Collapse from '@material-ui/core/Collapse';
import ExpandMore from '@material-ui/icons/ExpandMore';
import { Link } from 'react-router-dom';
import ListItemIcon from '@material-ui/core/ListItemIcon';
import ListItemText from '@material-ui/core/ListItemText';
import MenuItem from '@material-ui/core/MenuItem';
import MenuList from '@material-ui/core/MenuList';
import NavigateNextIcon from '@material-ui/icons/NavigateNext';
import PropTypes from 'prop-types';
import React from 'react';
import SuccessRateDot from "./util/SuccessRateDot.jsx";
import _merge from 'lodash/merge';
import _orderBy from 'lodash/orderBy';
import { friendlyTitle } from "./util/Utils.js";
import { processedMetricsPropType } from './util/MetricUtils.jsx';
import { withContext } from './util/AppContext.jsx';
import { withStyles } from '@material-ui/core/styles';
const styles = () => ({
navMenuItem: {
paddingLeft: "24px",
paddingRight: "12px",
},
navResourceItem: {
marginRight: "0",
paddingLeft: "38px",
},
navResourceText: {
overflow: "hidden",
padding: "0px 0px 0px 10px",
textOverflow: "ellipsis",
}
});
class NavigationResource extends React.Component {
static defaultProps = {
metrics: [],
}
static propTypes = {
api: PropTypes.shape({
prefixLink: PropTypes.func.isRequired,
}).isRequired,
classes: PropTypes.shape({}).isRequired,
metrics: PropTypes.arrayOf(processedMetricsPropType),
type: PropTypes.string.isRequired,
};
constructor(props) {
super(props);
let resources = props.metrics
.filter(m => m.pods.meshedPods !== "0")
.map(m =>
_merge(m, {
menuName: props.type === "namespaces" ? m.name : `${m.namespace}/${m.name}`
})
);
this.resources = _orderBy(resources, r => r.menuName);
this.to = props.api.prefixLink("/" + props.type);
this.state = {open: false};
}
handleOnClick = () => {
this.setState({ open: !this.state.open });
};
listItemIcon() {
let icon = ;
if (this.state.open) {
icon = ;
}
return ({icon});
}
menu() {
const { classes, type } = this.props;
return (
);
}
subMenu() {
const { api, classes } = this.props;
return (
{
this.resources.map(r => {
let url = api.prefixLink(api.generateResourceURL(r));
return (
);
})
}
);
}
render() {
return (
{this.menu()}
{this.subMenu()}
);
}
}
export default withContext(withStyles(styles, { withTheme: true })(NavigationResource));