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
-
-
Set Connection Details
+
+ Connect Kapacitor
@@ -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
-
+
-
-
-
-
- Name
- Host
- Kapacitor
-
-
-
-
-
- {
- sources.map((source) => {
- return (
-
- {source.name}{source.default ? Default : null}
- {source.url}
- {_.get(source, ['kapacitor', 'name'], '')}
- Edit
- Connect
+
+
+
+
+
{sourcesTitle}
+ Add New Source
+
+
+
+
+
+
+ Name
+ Host
+ Kapacitor
+
- );
- })
- }
-
-
-
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
-
-
-
-
{editMode ? "Update" : "Create"}
+
+ {editMode ? "Save Changes" : "Add Source"}
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;
+ }
+}