Disable temp var dropdowns for viewers when auth enabled

pull/3354/head
Brandon Farmer 2018-05-02 11:46:35 -07:00
parent aa9c02b06b
commit 50b6f38f19
3 changed files with 20 additions and 1 deletions

View File

@ -12,6 +12,8 @@ interface Props {
isOpen: boolean isOpen: boolean
onOpenTemplateManager: () => void onOpenTemplateManager: () => void
onSelectTemplate: (id: string) => void onSelectTemplate: (id: string) => void
meRole: string
isUsingAuth: boolean
} }
const TemplateControlBar: SFC<Props> = ({ const TemplateControlBar: SFC<Props> = ({
@ -19,6 +21,8 @@ const TemplateControlBar: SFC<Props> = ({
templates, templates,
onSelectTemplate, onSelectTemplate,
onOpenTemplateManager, onOpenTemplateManager,
meRole,
isUsingAuth,
}) => ( }) => (
<div className={classnames('template-control-bar', {show: isOpen})}> <div className={classnames('template-control-bar', {show: isOpen})}>
<div className="template-control--container"> <div className="template-control--container">
@ -27,6 +31,8 @@ const TemplateControlBar: SFC<Props> = ({
templates.map(template => ( templates.map(template => (
<TemplateControlDropdown <TemplateControlDropdown
key={uuid.v4()} key={uuid.v4()}
meRole={meRole}
isUsingAuth={isUsingAuth}
template={template} template={template}
onSelectTemplate={onSelectTemplate} onSelectTemplate={onSelectTemplate}
/> />

View File

@ -4,8 +4,11 @@ import Dropdown from 'src/shared/components/Dropdown'
import {calculateDropdownWidth} from 'src/dashboards/constants/templateControlBar' import {calculateDropdownWidth} from 'src/dashboards/constants/templateControlBar'
import {Template} from 'src/types/dashboard' import {Template} from 'src/types/dashboard'
export const VIEWER_ROLE = 'viewer'
interface Props { interface Props {
template: Template template: Template
meRole: string
isUsingAuth: boolean
onSelectTemplate: (id: string) => void onSelectTemplate: (id: string) => void
} }
@ -13,7 +16,12 @@ interface Props {
// the full array, and [item] to all `selected` values when we update // the full array, and [item] to all `selected` values when we update
// this component to support multiple values // this component to support multiple values
const TemplateControlDropdown: SFC<Props> = ({template, onSelectTemplate}) => { const TemplateControlDropdown: SFC<Props> = ({
template,
onSelectTemplate,
isUsingAuth,
meRole,
}) => {
const dropdownItems = template.values.map(value => ({ const dropdownItems = template.values.map(value => ({
...value, ...value,
text: value.value, text: value.value,
@ -34,6 +42,7 @@ const TemplateControlDropdown: SFC<Props> = ({template, onSelectTemplate}) => {
menuClass="dropdown-astronaut" menuClass="dropdown-astronaut"
useAutoComplete={true} useAutoComplete={true}
selected={selectedItem.text} selected={selectedItem.text}
disabled={isUsingAuth && (!meRole || meRole === VIEWER_ROLE)}
onChoose={onSelectTemplate(template.id)} onChoose={onSelectTemplate(template.id)}
/> />
<label className="template-control--label">{template.tempVar}</label> <label className="template-control--label">{template.tempVar}</label>

View File

@ -305,6 +305,8 @@ class DashboardPage extends Component {
const {zoomedTimeRange} = this.state const {zoomedTimeRange} = this.state
const {zoomedLower, zoomedUpper} = zoomedTimeRange const {zoomedLower, zoomedUpper} = zoomedTimeRange
const { const {
isUsingAuth,
meRole,
source, source,
sources, sources,
timeRange, timeRange,
@ -426,6 +428,8 @@ class DashboardPage extends Component {
{inPresentationMode || ( {inPresentationMode || (
<TemplateControlBar <TemplateControlBar
templates={dashboard && dashboard.templates} templates={dashboard && dashboard.templates}
meRole={meRole}
isUsingAuth={isUsingAuth}
onSelectTemplate={this.handleSelectTemplate} onSelectTemplate={this.handleSelectTemplate}
onOpenTemplateManager={this.handleOpenTemplateManager} onOpenTemplateManager={this.handleOpenTemplateManager}
isOpen={showTemplateControlBar} isOpen={showTemplateControlBar}