Redesign template variables control bar to not scroll with the page

pull/10616/head
Alex P 2018-04-16 13:21:50 -07:00
parent 0924cd498c
commit 78d96eb92b
5 changed files with 57 additions and 25 deletions

View File

@ -2,7 +2,6 @@ import React from 'react'
import PropTypes from 'prop-types' import PropTypes from 'prop-types'
import classnames from 'classnames' import classnames from 'classnames'
import TemplateControlBar from 'src/dashboards/components/TemplateControlBar'
import LayoutRenderer from 'shared/components/LayoutRenderer' import LayoutRenderer from 'shared/components/LayoutRenderer'
import FancyScrollbar from 'shared/components/FancyScrollbar' import FancyScrollbar from 'shared/components/FancyScrollbar'
@ -19,11 +18,8 @@ const Dashboard = ({
onCloneCell, onCloneCell,
onPositionChange, onPositionChange,
inPresentationMode, inPresentationMode,
onOpenTemplateManager,
templatesIncludingDashTime, templatesIncludingDashTime,
onSummonOverlayTechnologies, onSummonOverlayTechnologies,
onSelectTemplate,
showTemplateControlBar,
setScrollTop, setScrollTop,
inView, inView,
}) => { }) => {
@ -48,14 +44,6 @@ const Dashboard = ({
setScrollTop={setScrollTop} setScrollTop={setScrollTop}
> >
<div className="dashboard container-fluid full-width"> <div className="dashboard container-fluid full-width">
{inPresentationMode ? null : (
<TemplateControlBar
templates={dashboard.templates}
onSelectTemplate={onSelectTemplate}
onOpenTemplateManager={onOpenTemplateManager}
isOpen={showTemplateControlBar}
/>
)}
{cells.length ? ( {cells.length ? (
<LayoutRenderer <LayoutRenderer
cells={cells} cells={cells}
@ -124,9 +112,6 @@ Dashboard.propTypes = {
autoRefresh: number.isRequired, autoRefresh: number.isRequired,
manualRefresh: number, manualRefresh: number,
timeRange: shape({}).isRequired, timeRange: shape({}).isRequired,
onOpenTemplateManager: func.isRequired,
onSelectTemplate: func.isRequired,
showTemplateControlBar: bool,
onZoom: func, onZoom: func,
setScrollTop: func, setScrollTop: func,
inView: func, inView: func,

View File

@ -93,6 +93,10 @@ const TemplateControlBar = ({
const {arrayOf, bool, func, shape, string} = PropTypes const {arrayOf, bool, func, shape, string} = PropTypes
TemplateControlBar.defaultProps = {
templates: [],
}
TemplateControlBar.propTypes = { TemplateControlBar.propTypes = {
templates: arrayOf( templates: arrayOf(
shape({ shape({

View File

@ -14,6 +14,7 @@ import DashboardHeader from 'src/dashboards/components/DashboardHeader'
import Dashboard from 'src/dashboards/components/Dashboard' import Dashboard from 'src/dashboards/components/Dashboard'
import TemplateVariableManager from 'src/dashboards/components/template_variables/Manager' import TemplateVariableManager from 'src/dashboards/components/template_variables/Manager'
import ManualRefresh from 'src/shared/components/ManualRefresh' import ManualRefresh from 'src/shared/components/ManualRefresh'
import TemplateControlBar from 'src/dashboards/components/TemplateControlBar'
import {errorThrown as errorThrownAction} from 'shared/actions/errors' import {errorThrown as errorThrownAction} from 'shared/actions/errors'
import {notify as notifyAction} from 'shared/actions/notifications' import {notify as notifyAction} from 'shared/actions/notifications'
@ -373,7 +374,7 @@ class DashboardPage extends Component {
})) }))
return ( return (
<div className="page"> <div className="page dashboard-page">
{isTemplating ? ( {isTemplating ? (
<OverlayTechnologies> <OverlayTechnologies>
<TemplateVariableManager <TemplateVariableManager
@ -426,6 +427,14 @@ class DashboardPage extends Component {
onToggleTempVarControls={this.handleToggleTempVarControls} onToggleTempVarControls={this.handleToggleTempVarControls}
handleClickPresentationButton={handleClickPresentationButton} handleClickPresentationButton={handleClickPresentationButton}
/> />
{inPresentationMode ? null : (
<TemplateControlBar
templates={dashboard && dashboard.templates}
onSelectTemplate={this.handleSelectTemplate}
onOpenTemplateManager={this.handleOpenTemplateManager}
isOpen={showTemplateControlBar}
/>
)}
{dashboard ? ( {dashboard ? (
<Dashboard <Dashboard
source={source} source={source}

View File

@ -11,23 +11,25 @@ $template-control-dropdown-min-width: 146px;
$template-control-dropdown-max-width: 300px; $template-control-dropdown-max-width: 300px;
.template-control-bar { .template-control-bar {
position: absolute;
top: $chronograf-page-header-height;
left: 0;
width: 100%;
display: none; display: none;
height: auto; background-color: $g3-castle;
margin-bottom: 8px;
&.show { &.show {
display: block; display: block;
} }
} }
.template-control--container { .template-control--container {
width: 100%;
height: $chronograf-page-header-height;
display: flex; display: flex;
flex-wrap: nowrap; flex-wrap: nowrap;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
padding: $template-control--margin; padding: 0 60px;
@extend .cell-shell;
background-color: $g0-obsidian;
min-height: $template-control--min-height;
} }
.template-control--heading { .template-control--heading {
font-size: 16px; font-size: 16px;
@ -38,18 +40,46 @@ $template-control-dropdown-max-width: 300px;
white-space: nowrap; white-space: nowrap;
} }
button.btn.template-control--manage { button.btn.template-control--manage {
margin: 7px 8px; margin: 7px 0 7px 8px;
} }
.template-control--controls { .template-control--controls {
display: flex; display: flex;
flex: 1 0 0%; flex: 1 0 0%;
flex-wrap: wrap; flex-wrap: nowrap;
overflow-x: auto;
overflow-y: hidden;
&::-webkit-scrollbar {
height: 8px;
&-button {
display: none;
}
&-track {
background-color: $g3-castle;
}
&-track-piece {
background-color: $g3-castle;
border: 2px solid $g3-castle;
border-radius: 4px;
}
&-thumb {
background-color: $g6-smoke;
border: 2px solid $g3-castle;
border-radius: 4px;
}
&-corner {
display: none;
}
}
&::-webkit-resizer {
display: none;
}
} }
.template-control--empty { .template-control--empty {
color: $g11-sidewalk; color: $g11-sidewalk;
font-size: 14px; font-size: 14px;
font-weight: 500; font-weight: 500;
margin-left: 18px;
@include no-user-select(); @include no-user-select();
} }
.template-control--dropdown { .template-control--dropdown {

View File

@ -33,6 +33,10 @@
display: flex; display: flex;
align-items: stretch; align-items: stretch;
} }
.template-control-bar.show + .page-contents {
top: $chronograf-page-header-height * 2;
height: calc(100% - #{$chronograf-page-header-height * 2}) !important;
}
.container-fluid { .container-fluid {
margin: 0 auto; margin: 0 auto;
padding: ($chronograf-page-header-height / 2) $page-wrapper-padding; padding: ($chronograf-page-header-height / 2) $page-wrapper-padding;