157 lines
5.2 KiB
Java
157 lines
5.2 KiB
Java
/*
|
|
* Copyright 1999-2018 Alibaba Group Holding Ltd.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
/**
|
|
* 入口页
|
|
*/
|
|
import React from 'react';
|
|
import ReactDOM from 'react-dom';
|
|
import { createStore, combineReducers, compose, applyMiddleware } from 'redux';
|
|
import { routerReducer } from 'react-router-redux';
|
|
import thunk from 'redux-thunk';
|
|
import { Provider, connect } from 'react-redux';
|
|
import { HashRouter, Route, Switch, Redirect } from 'react-router-dom';
|
|
import { ConfigProvider, Loading } from '@alifd/next';
|
|
|
|
import './lib';
|
|
|
|
import Layout from './layouts/MainLayout';
|
|
import { LANGUAGE_KEY, REDUX_DEVTOOLS } from './constants';
|
|
|
|
import Login from './pages/Login';
|
|
import Namespace from './pages/NameSpace';
|
|
import Newconfig from './pages/ConfigurationManagement/NewConfig';
|
|
import Configsync from './pages/ConfigurationManagement/ConfigSync';
|
|
import Configdetail from './pages/ConfigurationManagement/ConfigDetail';
|
|
import Configeditor from './pages/ConfigurationManagement/ConfigEditor';
|
|
import HistoryDetail from './pages/ConfigurationManagement/HistoryDetail';
|
|
import ConfigRollback from './pages/ConfigurationManagement/ConfigRollback';
|
|
import HistoryRollback from './pages/ConfigurationManagement/HistoryRollback';
|
|
import ListeningToQuery from './pages/ConfigurationManagement/ListeningToQuery';
|
|
import ConfigurationManagement from './pages/ConfigurationManagement/ConfigurationManagement';
|
|
import ServiceList from './pages/ServiceManagement/ServiceList';
|
|
import ServiceDetail from './pages/ServiceManagement/ServiceDetail';
|
|
import SubscriberList from './pages/ServiceManagement/SubscriberList';
|
|
import ClusterNodeList from './pages/ClusterManagement/ClusterNodeList';
|
|
import UserManagement from './pages/AuthorityControl/UserManagement';
|
|
import PermissionsManagement from './pages/AuthorityControl/PermissionsManagement';
|
|
import RolesManagement from './pages/AuthorityControl/RolesManagement';
|
|
import Welcome from './pages/Welcome/Welcome';
|
|
|
|
import reducers from './reducers';
|
|
import { changeLanguage } from './reducers/locale';
|
|
|
|
import './index.scss';
|
|
import PropTypes from 'prop-types';
|
|
|
|
module.hot && module.hot.accept();
|
|
|
|
if (!localStorage.getItem(LANGUAGE_KEY)) {
|
|
localStorage.setItem(LANGUAGE_KEY, navigator.language === 'zh-CN' ? 'zh-CN' : 'en-US');
|
|
}
|
|
|
|
const reducer = combineReducers({
|
|
...reducers,
|
|
routing: routerReducer,
|
|
});
|
|
|
|
const store = createStore(
|
|
reducer,
|
|
compose(applyMiddleware(thunk), window[REDUX_DEVTOOLS] ? window[REDUX_DEVTOOLS]() : f => f)
|
|
);
|
|
|
|
const MENU = [
|
|
{ path: '/', exact: true, render: () => <Redirect to="/welcome" /> },
|
|
{ path: '/welcome', component: Welcome },
|
|
{ path: '/namespace', component: Namespace },
|
|
{ path: '/newconfig', component: Newconfig },
|
|
{ path: '/configsync', component: Configsync },
|
|
{ path: '/configdetail', component: Configdetail },
|
|
{ path: '/configeditor', component: Configeditor },
|
|
{ path: '/historyDetail', component: HistoryDetail },
|
|
{ path: '/configRollback', component: ConfigRollback },
|
|
{ path: '/historyRollback', component: HistoryRollback },
|
|
{ path: '/listeningToQuery', component: ListeningToQuery },
|
|
{ path: '/configurationManagement', component: ConfigurationManagement },
|
|
{ path: '/serviceManagement', component: ServiceList },
|
|
{ path: '/serviceDetail', component: ServiceDetail },
|
|
{ path: '/subscriberList', component: SubscriberList },
|
|
{ path: '/clusterManagement', component: ClusterNodeList },
|
|
{ path: '/userManagement', component: UserManagement },
|
|
{ path: '/rolesManagement', component: RolesManagement },
|
|
{ path: '/permissionsManagement', component: PermissionsManagement },
|
|
];
|
|
|
|
@connect(state => ({ ...state.locale }), { changeLanguage })
|
|
class App extends React.Component {
|
|
static propTypes = {
|
|
locale: PropTypes.object,
|
|
changeLanguage: PropTypes.func,
|
|
};
|
|
|
|
constructor(props) {
|
|
super(props);
|
|
this.state = {
|
|
shownotice: 'none',
|
|
noticecontent: '',
|
|
nacosLoading: {},
|
|
};
|
|
}
|
|
|
|
componentDidMount() {
|
|
const language = localStorage.getItem(LANGUAGE_KEY);
|
|
this.props.changeLanguage(language);
|
|
}
|
|
|
|
get router() {
|
|
return (
|
|
<HashRouter>
|
|
<Switch>
|
|
<Route path="/login" component={Login} />
|
|
<Layout>
|
|
{MENU.map(item => (
|
|
<Route key={item.path} {...item} />
|
|
))}
|
|
</Layout>
|
|
</Switch>
|
|
</HashRouter>
|
|
);
|
|
}
|
|
|
|
render() {
|
|
const { locale } = this.props;
|
|
return (
|
|
<Loading
|
|
className="nacos-loading"
|
|
shape="flower"
|
|
tip="loading..."
|
|
visible={false}
|
|
fullScreen
|
|
{...this.state.nacosLoading}
|
|
>
|
|
<ConfigProvider locale={locale}>{this.router}</ConfigProvider>
|
|
</Loading>
|
|
);
|
|
}
|
|
}
|
|
|
|
ReactDOM.render(
|
|
<Provider store={store}>
|
|
<App />
|
|
</Provider>,
|
|
document.getElementById('root')
|
|
);
|