diff --git a/ui/src/kapacitor/containers/KapacitorPage.js b/ui/src/kapacitor/containers/KapacitorPage.js index 397a8fb951..1e4e285e7e 100644 --- a/ui/src/kapacitor/containers/KapacitorPage.js +++ b/ui/src/kapacitor/containers/KapacitorPage.js @@ -46,7 +46,7 @@ export const KapacitorPage = React.createClass({ username: newUsername, password: this.kapacitorPassword.value, }).then(() => { - this.props.addFlashMessage({type: 'success', text: 'Kapacitor saved'}); + this.props.addFlashMessage({type: 'success', text: 'Kapacitor Created!'}); this.fetchKapacitor(); }).catch(() => { this.props.addFlashMessage({type: 'error', text: 'There was a problem creating the Kapacitor record'}); @@ -61,7 +61,7 @@ export const KapacitorPage = React.createClass({ username: newUsername || kapacitor.username, password: this.kapacitorPassword.value, }).then(() => { - this.props.addFlashMessage({type: 'success', text: 'Kapacitor saved'}); + this.props.addFlashMessage({type: 'success', text: 'Kapacitor Saved!'}); this.fetchKapacitor(); }).catch(() => { this.props.addFlashMessage({type: 'error', text: 'There was a problem updating the Kapacitor record'}); @@ -93,7 +93,7 @@ export const KapacitorPage = React.createClass({

- Kapacitor Configuration + Configure Kapacitor

@@ -101,7 +101,7 @@ export const KapacitorPage = React.createClass({
-
+

@@ -109,10 +109,8 @@ export const KapacitorPage = React.createClass({ This page will let you configure which Kapacitor to use and set up alert end points like email, Slack, and others.

-
- -
-

Kapacitor Connection Information

+
+

Connection Details


@@ -134,8 +132,8 @@ export const KapacitorPage = React.createClass({
-
- +
+
@@ -143,7 +141,7 @@ export const KapacitorPage = React.createClass({
-
+
{this.renderAlertOutputs()}
diff --git a/ui/src/sources/containers/CreateSource.js b/ui/src/sources/containers/CreateSource.js index 8292a62488..65451b8b79 100644 --- a/ui/src/sources/containers/CreateSource.js +++ b/ui/src/sources/containers/CreateSource.js @@ -41,7 +41,7 @@ export const CreateSource = React.createClass({ render() { return (
-
+
diff --git a/ui/src/sources/containers/ManageSources.js b/ui/src/sources/containers/ManageSources.js index b9d679bd46..f30881979a 100644 --- a/ui/src/sources/containers/ManageSources.js +++ b/ui/src/sources/containers/ManageSources.js @@ -40,48 +40,63 @@ export const ManageSources = React.createClass({ render() { const {sources} = this.state; const {pathname} = this.props.location; + const numSources = sources.length; + let sourcesTitle = `${numSources} Sources`; + + if (numSources === 1) { + sourcesTitle = `${numSources} Source`; + } return (
-

- Manage Sources -

+

InfluxDB Sources

-
+
-
- - - - - - - - - - - - { - sources.map((source) => { - return ( - - - - - - +
+ +
+
+

{sourcesTitle}

+ Add New Source +
+
+
+
NameHostKapacitor
{source.name}{source.default ? Default : null}{source.url}{_.get(source, ['kapacitor', 'name'], '')}EditConnect
+ + + + + + - ); - }) - } - -
NameHostKapacitor
- Add + + + { + sources.map((source) => { + return ( + + {source.name}{source.default ? Default : null} + {source.url} + {_.get(source, ['kapacitor', 'name'], '')} + + Edit + Connect + + + ); + }) + } + + +
+
+
diff --git a/ui/src/sources/containers/SourceForm.js b/ui/src/sources/containers/SourceForm.js index ca27c21a6f..94ccce354b 100644 --- a/ui/src/sources/containers/SourceForm.js +++ b/ui/src/sources/containers/SourceForm.js @@ -1,6 +1,7 @@ import React, {PropTypes} from 'react'; import {withRouter} from 'react-router'; import {getSource, createSource, updateSource} from 'shared/apis'; +import classNames from 'classnames'; export const SourceForm = React.createClass({ propTypes: { @@ -81,17 +82,17 @@ export const SourceForm = React.createClass({

- Source Form + {editMode ? "Edit Source" : "Add a New Source"}

-
+
-

{editMode ? "Update Existing Source" : "Connect to a New Source"}

+

Connection Details


@@ -112,18 +113,16 @@ export const SourceForm = React.createClass({ this.sourcePassword = r} className="form-control" id="password" onChange={this.onInputChange} value={source.password || ''}>
-
-
- +
+
+ this.sourceDefault = r} /> +
-
- +
+
diff --git a/ui/src/style/enterprise_style/_enterprise-custom.scss b/ui/src/style/enterprise_style/_enterprise-custom.scss index e0d4d3c343..8a6b1a78bf 100644 --- a/ui/src/style/enterprise_style/_enterprise-custom.scss +++ b/ui/src/style/enterprise_style/_enterprise-custom.scss @@ -609,6 +609,82 @@ table.table.error-table { border-radius: 4px; padding: 0 18px; line-height: 36px; + position: relative; + + input[type="checkbox"] { + position: relative; + left: -9999px; + visibility: hidden; + width: 0; + height: 0; + margin: 0; + + // Faux Checkbox + & + label { + transition: color 0.25s ease; + margin-left: 24px; + user-select: none; + -ms-user-select: none; + -moz-user-selct: none; + -webkit-user-select: none; + + &:before { + content: ''; + position: absolute; + top: 50%; + left: 18px; + transform: translateY(-50%); + width: 16px; + height: 16px; + background-color: $g18-cloud; + border: 2px solid $g17-whisper; + border-radius: 3px; + z-index: 2; + transition: + background-color 0.25s ease; + } + &:after { + content: ''; + position: absolute; + top: 50%; + left: (18px + (16px / 2)); + transform: translate(-50%,-50%) scale(2,2); + opacity: 0; + width: 6px; + height: 6px; + border-radius: 50%; + background-color: $c-pool; + z-index: 3; + transition: + opacity 0.25s ease, + transform 0.25s cubic-bezier(0.175, 0.885, 0.32, 1.275); + } + &:hover { + cursor: pointer; + + &:before { + background-color: $g20-white; + } + } + } + // Faux Checkbox (Checked) + &:checked + label { + color: $c-pool; + + &:after { + opacity: 1; + transform: translate(-50%,-50%) scale(1,1); + } + } + } +} +/* + Button alignment in tables + ---------------------------------------------- +*/ + +table .text-right .btn { + margin: 0 0 0 6px; } @@ -646,3 +722,16 @@ table .monotype { background-color: $c-fire; } } + +/* + Sources / Kapacitor Config Pages + ---------------------------------------------- +*/ + +#source-form-page, +#manage-sources-page, +.kapacitor { + .enterprise-header { + margin-bottom: 45px; + } +}