|
@@ -2,7 +2,7 @@ import React, { useEffect, useState } from 'react';
|
|
|
|
|
|
|
|
import { addActiveElement } from 'src/actions/MainNavigation/mainNavigationActions';
|
|
import { addActiveElement } from 'src/actions/MainNavigation/mainNavigationActions';
|
|
|
import TopPanel from 'src/components/TopPanel/TopPanel';
|
|
import TopPanel from 'src/components/TopPanel/TopPanel';
|
|
|
-import { useParams, useHistory } from 'react-router-dom';
|
|
|
|
|
|
|
+import { useHistory } from 'react-router-dom';
|
|
|
import { useDispatch, useSelector } from 'react-redux';
|
|
import { useDispatch, useSelector } from 'react-redux';
|
|
|
|
|
|
|
|
import { getServiceLogs } from 'src/ControlPanelService/Server';
|
|
import { getServiceLogs } from 'src/ControlPanelService/Server';
|
|
@@ -11,13 +11,12 @@ import { Helmet } from 'react-helmet';
|
|
|
import ReactHtmlParser from 'react-html-parser';
|
|
import ReactHtmlParser from 'react-html-parser';
|
|
|
|
|
|
|
|
import './styles.scss';
|
|
import './styles.scss';
|
|
|
|
|
+import QueryString from 'qs';
|
|
|
|
|
|
|
|
const ServiceInfo = () => {
|
|
const ServiceInfo = () => {
|
|
|
const { i18n, userName } = useSelector(state => state.session);
|
|
const { i18n, userName } = useSelector(state => state.session);
|
|
|
const dispatch = useDispatch();
|
|
const dispatch = useDispatch();
|
|
|
- const { activeElement } = useSelector(state => state.mainNavigation);
|
|
|
|
|
const history = useHistory();
|
|
const history = useHistory();
|
|
|
- const { service } = useParams();
|
|
|
|
|
const [state, setState] = useState({
|
|
const [state, setState] = useState({
|
|
|
data: "",
|
|
data: "",
|
|
|
loading: false
|
|
loading: false
|
|
@@ -30,14 +29,28 @@ const ServiceInfo = () => {
|
|
|
}, [userName]);
|
|
}, [userName]);
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
useEffect(() => {
|
|
|
- fetchData();
|
|
|
|
|
- dispatch(addActiveElement(`/list/server/${service}`));
|
|
|
|
|
- }, [activeElement]);
|
|
|
|
|
|
|
+ let queryParams = QueryString.parse(history.location.search, { ignoreQueryPrefix: true });
|
|
|
|
|
|
|
|
- const fetchData = () => {
|
|
|
|
|
|
|
+ if (!queryParams.srv) {
|
|
|
|
|
+ fetchData('cpu');
|
|
|
|
|
+ dispatch(addActiveElement('/list/server/service/?srv=cpu'));
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (!menuItems.find(item => item.service === queryParams.srv)) {
|
|
|
|
|
+ dispatch(addActiveElement('/list/server/service/?srv=cpu'));
|
|
|
|
|
+ history.push('/list/server/service/?srv=cpu');
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ fetchData(queryParams.srv);
|
|
|
|
|
+ dispatch(addActiveElement(`/list/server/service/?srv=${queryParams.srv}`));
|
|
|
|
|
+ }, [history.location.search]);
|
|
|
|
|
+
|
|
|
|
|
+ const fetchData = serviceName => {
|
|
|
setState({ ...state, loading: true });
|
|
setState({ ...state, loading: true });
|
|
|
|
|
|
|
|
- getServiceLogs(service)
|
|
|
|
|
|
|
+ getServiceLogs(serviceName)
|
|
|
.then(result => {
|
|
.then(result => {
|
|
|
setState({ ...state, data: result.data.service_log, loading: false });
|
|
setState({ ...state, data: result.data.service_log, loading: false });
|
|
|
})
|
|
})
|
|
@@ -49,35 +62,43 @@ const ServiceInfo = () => {
|
|
|
|
|
|
|
|
const menuItems = [
|
|
const menuItems = [
|
|
|
{
|
|
{
|
|
|
- route: '/list/server/cpu',
|
|
|
|
|
|
|
+ route: '/list/server/service/?srv=cpu',
|
|
|
|
|
+ service: 'cpu',
|
|
|
name: i18n['CPU']
|
|
name: i18n['CPU']
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
- route: '/list/server/mem',
|
|
|
|
|
|
|
+ route: '/list/server/service/?srv=mem',
|
|
|
|
|
+ service: 'mem',
|
|
|
name: i18n['MEMORY']
|
|
name: i18n['MEMORY']
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
- route: '/list/server/disk',
|
|
|
|
|
|
|
+ route: '/list/server/service/?srv=disk',
|
|
|
|
|
+ service: 'disk',
|
|
|
name: i18n['DISK']
|
|
name: i18n['DISK']
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
- route: '/list/server/net',
|
|
|
|
|
|
|
+ route: '/list/server/service/?srv=net',
|
|
|
|
|
+ service: 'net',
|
|
|
name: i18n['NETWORK']
|
|
name: i18n['NETWORK']
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
- route: '/list/server/web',
|
|
|
|
|
|
|
+ route: '/list/server/service/?srv=web',
|
|
|
|
|
+ service: 'web',
|
|
|
name: i18n['WEB']
|
|
name: i18n['WEB']
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
- route: '/list/server/dns',
|
|
|
|
|
|
|
+ route: '/list/server/service/?srv=dns',
|
|
|
|
|
+ service: 'dns',
|
|
|
name: i18n['DNS']
|
|
name: i18n['DNS']
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
- route: '/list/server/mail',
|
|
|
|
|
|
|
+ route: '/list/server/service/?srv=mail',
|
|
|
|
|
+ service: 'mail',
|
|
|
name: i18n['MAIL']
|
|
name: i18n['MAIL']
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
- route: '/list/server/db',
|
|
|
|
|
|
|
+ route: '/list/server/service/?srv=db',
|
|
|
|
|
+ service: 'db',
|
|
|
name: i18n['DB']
|
|
name: i18n['DB']
|
|
|
}
|
|
}
|
|
|
];
|
|
];
|
|
@@ -93,7 +114,7 @@ const ServiceInfo = () => {
|
|
|
state.loading
|
|
state.loading
|
|
|
? <Spinner />
|
|
? <Spinner />
|
|
|
: (<pre>
|
|
: (<pre>
|
|
|
- {state.data.length && state.data.map(line => (<>{ReactHtmlParser(line)}<br /></>))}
|
|
|
|
|
|
|
+ {state.data && ReactHtmlParser(state.data)}
|
|
|
</pre>)
|
|
</pre>)
|
|
|
}
|
|
}
|
|
|
</div>
|
|
</div>
|