import React, { PropTypes } from 'react'; import { Tabs, Tab, ProgressBar, IconButton } from 'react-mdl'; import { hashHistory, Link } from 'react-router'; import HistoryComponent from '../history/history-list-toggle-container'; import MetricComponent from './metric-container'; import EditFeatureToggle from './form-edit-container.jsx'; import { SwitchWithLabel } from '../common'; import { formatFullDateTime } from '../common/util'; const TABS = { view: 0, edit: 1, history: 2, }; export default class ViewFeatureToggleComponent extends React.Component { constructor (props) { super(props); } static propTypes () { return { activeTab: PropTypes.string.isRequired, featureToggleName: PropTypes.string.isRequired, features: PropTypes.array.isRequired, toggleFeature: PropTypes.func.isRequired, removeFeatureToggle: PropTypes.func.isRequired, fetchFeatureToggles: PropTypes.array.isRequired, featureToggle: PropTypes.object.isRequired, }; } componentWillMount () { if (this.props.features.length === 0) { this.props.fetchFeatureToggles(); } } getTabContent (activeTab) { const { featureToggle, featureToggleName, } = this.props; if (TABS[activeTab] === TABS.history) { return ; } else if (TABS[activeTab] === TABS.edit) { return ; } else { return ; } } goToTab (tabName, featureToggleName) { hashHistory.push(`/features/${tabName}/${featureToggleName}`); } render () { const { featureToggle, features, activeTab, featureToggleName, toggleFeature, removeFeatureToggle, } = this.props; if (!featureToggle) { if (features.length === 0 ) { return ; } return ( Could not find the toggle {featureToggleName} ); } const activeTabId = TABS[this.props.activeTab] ? TABS[this.props.activeTab] : TABS.view; const tabContent = this.getTabContent(activeTab); const removeToggle = () => { if (window.confirm('Are you sure you want to remove this toggle?')) { // eslint-disable-line no-alert removeFeatureToggle(featureToggle.name); hashHistory.push('/features'); } }; return (

toggleFeature(featureToggle.name)} /> {featureToggle.name} {featureToggle.enabled ? 'is enabled' : 'is disabled'} Created {formatFullDateTime(featureToggle.createdAt)}

{featureToggle.description}
this.goToTab('view', featureToggleName)}>Metrics this.goToTab('edit', featureToggleName)}>Edit this.goToTab('history', featureToggleName)}>History {tabContent}
); } }