import React from 'react'; import PropTypes from 'prop-types'; import Controls from './Controls'; import EditableTitle from '../../components/EditableTitle'; import Button from '../../components/Button'; import FaveStar from '../../components/FaveStar'; import InfoTooltipWithTrigger from '../../components/InfoTooltipWithTrigger'; import { t } from '../../locales'; const propTypes = { dashboard: PropTypes.object.isRequired, filters: PropTypes.object.isRequired, userId: PropTypes.string.isRequired, isStarred: PropTypes.bool, addSlicesToDashboard: PropTypes.func, onSave: PropTypes.func, onChange: PropTypes.func, fetchFaveStar: PropTypes.func, renderSlices: PropTypes.func, saveFaveStar: PropTypes.func, serialize: PropTypes.func, startPeriodicRender: PropTypes.func, updateDashboardTitle: PropTypes.func, editMode: PropTypes.bool.isRequired, setEditMode: PropTypes.func.isRequired, unsavedChanges: PropTypes.bool.isRequired, }; class Header extends React.PureComponent { constructor(props) { super(props); this.handleSaveTitle = this.handleSaveTitle.bind(this); this.toggleEditMode = this.toggleEditMode.bind(this); } handleSaveTitle(title) { this.props.updateDashboardTitle(title); } toggleEditMode() { this.props.setEditMode(!this.props.editMode); } renderUnsaved() { if (!this.props.unsavedChanges) { return null; } return ( ); } renderEditButton() { if (!this.props.dashboard.dash_save_perm) { return null; } const btnText = this.props.editMode ? 'Switch to View Mode' : 'Edit Dashboard'; return ( ); } render() { const dashboard = this.props.dashboard; return (

{this.renderUnsaved()}

{this.renderEditButton()}
); } } Header.propTypes = propTypes; export default Header;