mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Migration: Migrates Admin settings from angular to react (#19594)
This commit is contained in:
parent
dafc955338
commit
27ddd2d60f
79
public/app/features/admin/AdminSettings.tsx
Normal file
79
public/app/features/admin/AdminSettings.tsx
Normal file
@ -0,0 +1,79 @@
|
||||
import React from 'react';
|
||||
import { connect } from 'react-redux';
|
||||
import { hot } from 'react-hot-loader';
|
||||
|
||||
import { getBackendSrv } from '@grafana/runtime';
|
||||
import { NavModel } from '@grafana/data';
|
||||
|
||||
import { StoreState } from 'app/types';
|
||||
import { getNavModel } from 'app/core/selectors/navModel';
|
||||
import Page from 'app/core/components/Page/Page';
|
||||
|
||||
const backendSrv = getBackendSrv();
|
||||
|
||||
type Settings = { [key: string]: { [key: string]: string } };
|
||||
|
||||
interface Props {
|
||||
navModel: NavModel;
|
||||
}
|
||||
|
||||
interface State {
|
||||
settings: Settings;
|
||||
isLoading: boolean;
|
||||
}
|
||||
|
||||
export class AdminSettings extends React.PureComponent<Props, State> {
|
||||
state: State = {
|
||||
settings: {},
|
||||
isLoading: true,
|
||||
};
|
||||
|
||||
async componentDidMount() {
|
||||
const settings: Settings = await backendSrv.get('/api/admin/settings');
|
||||
this.setState({
|
||||
settings,
|
||||
isLoading: false,
|
||||
});
|
||||
}
|
||||
|
||||
render() {
|
||||
const { settings, isLoading } = this.state;
|
||||
const { navModel } = this.props;
|
||||
|
||||
return (
|
||||
<Page navModel={navModel}>
|
||||
<Page.Contents isLoading={isLoading}>
|
||||
<div className="grafana-info-box span8" style={{ margin: '20px 0 25px 0' }}>
|
||||
These system settings are defined in grafana.ini or custom.ini (or overridden in ENV variables). To change
|
||||
these you currently need to restart grafana.
|
||||
</div>
|
||||
|
||||
<table className="filter-table">
|
||||
<tbody>
|
||||
{Object.entries(settings).map(([sectionName, sectionSettings], i) => (
|
||||
<React.Fragment key={`section-${i}`}>
|
||||
<tr>
|
||||
<td className="admin-settings-section">{sectionName}</td>
|
||||
<td />
|
||||
</tr>
|
||||
{Object.entries(sectionSettings).map(([settingName, settingValue], j) => (
|
||||
<tr key={`property-${j}`}>
|
||||
<td style={{ paddingLeft: '25px' }}>{settingName}</td>
|
||||
<td>{settingValue}</td>
|
||||
</tr>
|
||||
))}
|
||||
</React.Fragment>
|
||||
))}
|
||||
</tbody>
|
||||
</table>
|
||||
</Page.Contents>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
const mapStateToProps = (state: StoreState) => ({
|
||||
navModel: getNavModel(state.navIndex, 'server-settings'),
|
||||
});
|
||||
|
||||
export default hot(module)(connect(mapStateToProps)(AdminSettings));
|
@ -18,18 +18,13 @@ interface State {
|
||||
}
|
||||
|
||||
export class ServerStats extends PureComponent<Props, State> {
|
||||
constructor(props: Props) {
|
||||
super(props);
|
||||
|
||||
this.state = {
|
||||
stats: [],
|
||||
isLoading: false,
|
||||
};
|
||||
}
|
||||
state: State = {
|
||||
stats: [],
|
||||
isLoading: true,
|
||||
};
|
||||
|
||||
async componentDidMount() {
|
||||
try {
|
||||
this.setState({ isLoading: true });
|
||||
const stats = await this.props.getServerStats();
|
||||
this.setState({ stats, isLoading: false });
|
||||
} catch (error) {
|
||||
|
@ -5,22 +5,8 @@ import AdminEditOrgCtrl from './AdminEditOrgCtrl';
|
||||
import StyleGuideCtrl from './StyleGuideCtrl';
|
||||
|
||||
import coreModule from 'app/core/core_module';
|
||||
import { BackendSrv } from 'app/core/services/backend_srv';
|
||||
import { NavModelSrv } from 'app/core/core';
|
||||
|
||||
class AdminSettingsCtrl {
|
||||
navModel: any;
|
||||
|
||||
/** @ngInject */
|
||||
constructor($scope: any, backendSrv: BackendSrv, navModelSrv: NavModelSrv) {
|
||||
this.navModel = navModelSrv.getNav('admin', 'server-settings', 0);
|
||||
|
||||
backendSrv.get('/api/admin/settings').then((settings: any) => {
|
||||
$scope.settings = settings;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
class AdminHomeCtrl {
|
||||
navModel: any;
|
||||
|
||||
@ -34,6 +20,5 @@ coreModule.controller('AdminListUsersCtrl', AdminListUsersCtrl);
|
||||
coreModule.controller('AdminEditUserCtrl', AdminEditUserCtrl);
|
||||
coreModule.controller('AdminListOrgsCtrl', AdminListOrgsCtrl);
|
||||
coreModule.controller('AdminEditOrgCtrl', AdminEditOrgCtrl);
|
||||
coreModule.controller('AdminSettingsCtrl', AdminSettingsCtrl);
|
||||
coreModule.controller('AdminHomeCtrl', AdminHomeCtrl);
|
||||
coreModule.controller('StyleGuideCtrl', StyleGuideCtrl);
|
||||
|
@ -1,23 +0,0 @@
|
||||
<page-header model="ctrl.navModel"></page-header>
|
||||
|
||||
<div class="page-container page-body">
|
||||
|
||||
<div class="grafana-info-box span8" style="margin: 20px 0 25px 0">
|
||||
These system settings are defined in grafana.ini or custom.ini (or overridden in ENV variables).
|
||||
To change these you currently need to restart grafana.
|
||||
</div>
|
||||
|
||||
<table class="filter-table">
|
||||
<tr ng-repeat-start="(secName, secValue) in settings">
|
||||
<td class="admin-settings-section">{{secName}}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr ng-repeat="(keyName, keyValue) in secValue" ng-repeat-end>
|
||||
<td style="padding-left: 25px;">{{keyName}}</td>
|
||||
<td>{{keyValue}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -266,9 +266,11 @@ export function setupAngularRoutes($routeProvider: route.IRouteProvider, $locati
|
||||
controllerAs: 'ctrl',
|
||||
})
|
||||
.when('/admin/settings', {
|
||||
templateUrl: 'public/app/features/admin/partials/settings.html',
|
||||
controller: 'AdminSettingsCtrl',
|
||||
controllerAs: 'ctrl',
|
||||
template: '<react-container />',
|
||||
resolve: {
|
||||
component: () =>
|
||||
SafeDynamicImport(import(/* webpackChunkName: "AdminSettings" */ 'app/features/admin/AdminSettings')),
|
||||
},
|
||||
})
|
||||
.when('/admin/users', {
|
||||
templateUrl: 'public/app/features/admin/partials/users.html',
|
||||
|
Loading…
Reference in New Issue
Block a user