mirror of
https://github.com/grafana/grafana.git
synced 2025-02-12 00:25:46 -06:00
95 lines
2.6 KiB
TypeScript
95 lines
2.6 KiB
TypeScript
import React, { PureComponent } from 'react';
|
|
import { connect } from 'react-redux';
|
|
import { hot } from 'react-hot-loader';
|
|
import { NavModel, ApiKey } from '../../types';
|
|
import { getNavModel } from 'app/core/selectors/navModel';
|
|
// import { getSearchQuery, getTeams, getTeamsCount } from './state/selectors';
|
|
import PageHeader from 'app/core/components/PageHeader/PageHeader';
|
|
import { loadApiKeys, deleteApiKey } from './state/actions';
|
|
import EmptyListCTA from 'app/core/components/EmptyListCTA/EmptyListCTA';
|
|
|
|
export interface Props {
|
|
navModel: NavModel;
|
|
apiKeys: ApiKey[];
|
|
searchQuery: string;
|
|
loadApiKeys: typeof loadApiKeys;
|
|
deleteApiKey: typeof deleteApiKey;
|
|
// loadTeams: typeof loadTeams;
|
|
// deleteTeam: typeof deleteTeam;
|
|
// setSearchQuery: typeof setSearchQuery;
|
|
}
|
|
|
|
export class ApiKeysPage extends PureComponent<Props, any> {
|
|
componentDidMount() {
|
|
this.fetchApiKeys();
|
|
}
|
|
|
|
async fetchApiKeys() {
|
|
await this.props.loadApiKeys();
|
|
}
|
|
|
|
deleteApiKey(id: number) {
|
|
return () => {
|
|
this.props.deleteApiKey(id);
|
|
};
|
|
}
|
|
|
|
render() {
|
|
const { navModel, apiKeys } = this.props;
|
|
|
|
return (
|
|
<div>
|
|
<PageHeader model={navModel} />
|
|
<div className="page-container page-body">
|
|
<h3 className="page-heading">Existing Keys</h3>
|
|
<table className="filter-table">
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Role</th>
|
|
<th style={{ width: '34px' }} />
|
|
</tr>
|
|
</thead>
|
|
{apiKeys.length > 0 ? (
|
|
<tbody>
|
|
{apiKeys.map(key => {
|
|
// id, name, role
|
|
return (
|
|
<tr key={key.id}>
|
|
<td>{key.name}</td>
|
|
<td>{key.role}</td>
|
|
<td>
|
|
<a onClick={this.deleteApiKey(key.id)} className="btn btn-danger btn-mini">
|
|
<i className="fa fa-remove" />
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
);
|
|
})}
|
|
</tbody>
|
|
) : null}
|
|
</table>
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|
|
}
|
|
|
|
function mapStateToProps(state) {
|
|
return {
|
|
navModel: getNavModel(state.navIndex, 'apikeys'),
|
|
apiKeys: state.apiKeys.keys,
|
|
// searchQuery: getSearchQuery(state.teams),
|
|
};
|
|
}
|
|
|
|
const mapDispatchToProps = {
|
|
loadApiKeys,
|
|
deleteApiKey,
|
|
// loadTeams,
|
|
// deleteTeam,
|
|
// setSearchQuery,
|
|
};
|
|
|
|
export default hot(module)(connect(mapStateToProps, mapDispatchToProps)(ApiKeysPage));
|