fleet/frontend/components/side_panels/HostSidePanel/PanelGroup/PanelGroup.jsx
Mike Stone 630ba45448 756 status labels (#967)
* API client to get status label summary

* Handle status label counts in state

* Display status counts in hosts side panel
2017-01-16 15:59:01 -05:00

57 lines
1.3 KiB
JavaScript

import React, { Component, PropTypes } from 'react';
import { isEqual, noop } from 'lodash';
import labelInterface from 'interfaces/label';
import PanelGroupItem from 'components/side_panels/HostSidePanel/PanelGroupItem';
import statusLabelsInterface from 'interfaces/status_labels';
class PanelGroup extends Component {
static propTypes = {
groupItems: PropTypes.arrayOf(labelInterface),
onLabelClick: PropTypes.func,
selectedLabel: labelInterface,
statusLabels: statusLabelsInterface,
type: PropTypes.string,
};
static defaultProps = {
onLabelClick: noop,
};
renderGroupItem = (item) => {
const {
onLabelClick,
selectedLabel,
statusLabels,
type,
} = this.props;
const selected = isEqual(selectedLabel, item);
return (
<PanelGroupItem
isSelected={selected}
item={item}
key={item.display_text}
onLabelClick={onLabelClick(item)}
statusLabels={statusLabels}
type={type}
/>
);
}
render () {
const { groupItems } = this.props;
const { renderGroupItem } = this;
const baseClass = 'panel-group';
return (
<div className={baseClass}>
{groupItems.map((item) => {
return renderGroupItem(item);
})}
</div>
);
}
}
export default PanelGroup;