diff --git a/ui/src/admin/actions/chronograf.js b/ui/src/admin/actions/chronograf.js
index 6d1639f9b..e43fdf374 100644
--- a/ui/src/admin/actions/chronograf.js
+++ b/ui/src/admin/actions/chronograf.js
@@ -110,6 +110,13 @@ export const updateMapping = mapping => ({
},
})
+export const createMapping = mapping => ({
+ type: 'CHRONOGRAF_CREATE_MAPPING',
+ payload: {
+ mapping,
+ },
+})
+
// async actions (thunks)
export const loadUsersAsync = url => async dispatch => {
try {
diff --git a/ui/src/admin/components/chronograf/ProvidersTable.js b/ui/src/admin/components/chronograf/ProvidersTable.js
index 6923ff6a0..d5feedcfa 100644
--- a/ui/src/admin/components/chronograf/ProvidersTable.js
+++ b/ui/src/admin/components/chronograf/ProvidersTable.js
@@ -21,6 +21,9 @@ class ProvidersTable extends Component {
handleCreateMap = newMap => {
const {onCreateMap} = this.props
+ this.setState({isCreatingMap: false})
+ const newMapID = this.props.mappings.length.toString()
+ newMap.id = newMapID
onCreateMap(newMap)
}
diff --git a/ui/src/admin/components/chronograf/ProvidersTableRowNew.js b/ui/src/admin/components/chronograf/ProvidersTableRowNew.js
index 4f44d007c..20900681e 100644
--- a/ui/src/admin/components/chronograf/ProvidersTableRowNew.js
+++ b/ui/src/admin/components/chronograf/ProvidersTableRowNew.js
@@ -32,10 +32,17 @@ class ProvidersTableRowNew extends Component {
this.setState({redirectOrg: org})
}
+ handleSaveNewMapping = () => {
+ const {scheme, provider, providerOrganization, redirectOrg} = this.state
+ const {onCreate} = this.props
+ // id is calculated in providers table
+ onCreate({id: '', scheme, provider, providerOrganization, redirectOrg})
+ }
+
render() {
const {scheme, provider, providerOrganization, redirectOrg} = this.state
- const {organizations, onCreate, onCancel} = this.props
+ const {organizations, onCancel} = this.props
const dropdownItems = organizations.map(role => ({
...role,
@@ -71,7 +78,10 @@ class ProvidersTableRowNew extends Component {
className="dropdown-stretch"
/>
-
+
)
}
diff --git a/ui/src/admin/containers/ProvidersPage.js b/ui/src/admin/containers/ProvidersPage.js
index bb34c26b8..6d6cfe338 100644
--- a/ui/src/admin/containers/ProvidersPage.js
+++ b/ui/src/admin/containers/ProvidersPage.js
@@ -6,6 +6,7 @@ import * as adminChronografActionCreators from 'src/admin/actions/chronograf'
import {publishAutoDismissingNotification} from 'shared/dispatchers'
import ProvidersTable from 'src/admin/components/chronograf/ProvidersTable'
+import {createMapping} from '../actions/chronograf'
class ProvidersPage extends Component {
constructor(props) {
@@ -22,7 +23,10 @@ class ProvidersPage extends Component {
loadMappingsAsync(links.mappings)
}
- handleCreateMap = () => {}
+ handleCreateMap = mapping => {
+ // update the redux store
+ this.props.actions.createMapping(mapping)
+ }
handleUpdateMap = updatedMap => {
// update the redux store
diff --git a/ui/src/admin/reducers/chronograf.js b/ui/src/admin/reducers/chronograf.js
index 2f513f5ba..e3ddb0496 100644
--- a/ui/src/admin/reducers/chronograf.js
+++ b/ui/src/admin/reducers/chronograf.js
@@ -115,6 +115,14 @@ const adminChronograf = (state = initialState, action) => {
),
}
}
+
+ case 'CHRONOGRAF_CREATE_MAPPING': {
+ const {mapping} = action.payload
+ return {
+ ...state,
+ mappings: [...state.mappings, mapping],
+ }
+ }
}
return state