|
|
@@ -7,16 +7,88 @@ import '../developVersion/index.css';
|
|
|
import ExampleShow from "./exampleShow/ExampleShow";
|
|
|
import MyDeploy from "./myDeploy/MyDeploy";
|
|
|
import Communication from "./communication/Communication";
|
|
|
+import {logoutUrl} from "../../config";
|
|
|
+import {getCookie, setCookie} from "../../cookie";
|
|
|
+import {GET_USER} from "../../gql";
|
|
|
+
|
|
|
+import {Query} from "react-apollo";
|
|
|
+import gql from "graphql-tag";
|
|
|
+import axios from 'axios';
|
|
|
+import moment from 'moment';
|
|
|
+import 'moment/locale/zh-cn';
|
|
|
+import zhCN from 'antd/lib/locale-provider/zh_CN';
|
|
|
+axios.defaults.withCredentials = true;
|
|
|
const {Header, Content} = Layout;
|
|
|
|
|
|
class BasicVersion extends Component {
|
|
|
constructor(props) {
|
|
|
super(props);
|
|
|
this.state = {
|
|
|
+ menuLevel1: "example",
|
|
|
+ language: props.language,
|
|
|
+ locale: props.language === "中文" ? zhCN : undefined,
|
|
|
+ languageButton: props.language === "中文" ? "English" : "中文",
|
|
|
+ userID: '',
|
|
|
+ avatar: ''
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
+ switchMenuLevel = (menuName, value) => {
|
|
|
+ this.setState({
|
|
|
+ [menuName]: value,
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
+ switchMenuTab = (menuName, e) => {
|
|
|
+ this.setState({
|
|
|
+ [menuName]: e.key,
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
+ componentWillMount() {
|
|
|
+ let userID = getCookie('user_id');
|
|
|
+ if (userID === undefined || '') {
|
|
|
+ axios.get(this.state.getIdUrl)
|
|
|
+ .then((res) => {
|
|
|
+ if (res.data !== '') {
|
|
|
+ setCookie("user_id", res.data);
|
|
|
+ this.setState({
|
|
|
+ userID: res.data
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(function (err) {
|
|
|
+ console.log(err);
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ this.setState({
|
|
|
+ userID
|
|
|
+ })
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ changeLocale = (e) => {
|
|
|
+ e.stopPropagation();
|
|
|
+ let {language} = this.state;
|
|
|
+ // console.log('app language',language);
|
|
|
+ let changeLanguage = language === "中文" ? "English" : "中文";
|
|
|
+ let local = language === "中文" ? undefined : zhCN;
|
|
|
+ let languageButton = language === "中文" ? "中文" : "English";
|
|
|
+
|
|
|
+ sessionStorage.setItem("language", changeLanguage);
|
|
|
+ this.props.changeLanguage(changeLanguage);
|
|
|
+ this.setState({
|
|
|
+ language: changeLanguage,
|
|
|
+ locale: local,
|
|
|
+ languageButton: languageButton
|
|
|
+ });
|
|
|
+ if (!local) {
|
|
|
+ moment.locale('en');
|
|
|
+ } else {
|
|
|
+ moment.locale('zh-cn');
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
render() {
|
|
|
return (
|
|
|
<Layout style={{minHeight: '100vh'}}>
|
|
|
@@ -30,6 +102,8 @@ class BasicVersion extends Component {
|
|
|
theme="dark"
|
|
|
mode="horizontal"
|
|
|
style={{lineHeight: '64px'}}
|
|
|
+ selectedKeys={[this.state.menuLevel1]}
|
|
|
+ onClick={(e) => this.switchMenuTab('menuLevel1', e)}
|
|
|
>
|
|
|
<Menu.Item key="example">
|
|
|
<Link to="/common/example"><FormattedMessage id="Example"/></Link>
|
|
|
@@ -41,6 +115,22 @@ class BasicVersion extends Component {
|
|
|
<Link to="/common/communication"><FormattedMessage id="Communication"/></Link>
|
|
|
</Menu.Item>
|
|
|
</Menu>
|
|
|
+
|
|
|
+ {
|
|
|
+ this.state.userID === '' ?
|
|
|
+ <Link to="/login">
|
|
|
+ <Button className='login-button' type='primary'
|
|
|
+ onClick={() => this.switchMenuLevel('menuLevel1', 'user')}>
|
|
|
+ <FormattedMessage id="Login"/></Button>
|
|
|
+ </Link>
|
|
|
+ :
|
|
|
+ <User
|
|
|
+ userID={this.state.userID}
|
|
|
+ languageButton={this.state.languageButton}
|
|
|
+ changeLocale={this.changeLocale}
|
|
|
+ />
|
|
|
+ }
|
|
|
+
|
|
|
</Header>
|
|
|
|
|
|
<Layout style={{marginTop: '64px', zIndex: '0'}}>
|
|
|
@@ -57,4 +147,91 @@ class BasicVersion extends Component {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-export default BasicVersion;
|
|
|
+export default BasicVersion;
|
|
|
+
|
|
|
+
|
|
|
+class User extends Component {
|
|
|
+ constructor(props) {
|
|
|
+ super(props);
|
|
|
+ this.state = {
|
|
|
+ show: false
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ logout = () => {
|
|
|
+
|
|
|
+ axios.get(logoutUrl)
|
|
|
+ .then((res) => {
|
|
|
+ console.log('logout success',res);
|
|
|
+ setCookie("user_id", '');
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
+ render() {
|
|
|
+ return (
|
|
|
+ <Query query={gql(GET_USER)} variables={{id: this.props.userID}}>
|
|
|
+ {
|
|
|
+ ({loading, error, data}) => {
|
|
|
+ if (loading) {
|
|
|
+ return <Spin style={{marginLeft: 3}}/>
|
|
|
+ }
|
|
|
+ if (error) {
|
|
|
+ return 'error!';
|
|
|
+ }
|
|
|
+ let user = data.user_by_id;
|
|
|
+ if (user !== null) {
|
|
|
+ const menu = (
|
|
|
+ <Menu className={'user-detail'}>
|
|
|
+ <Menu.Item className={'user-info'}>
|
|
|
+ <p className={'user-info-nickname'}>{user.nickname}</p>
|
|
|
+ <p className={'user-info-email'}>{user.email}</p>
|
|
|
+ </Menu.Item>
|
|
|
+ <Menu.Item>
|
|
|
+ <a href='https://www.ioobot.com' onClick={(e) => {
|
|
|
+ e.preventDefault();
|
|
|
+ this.props.changeLocale(e)
|
|
|
+ }}>{this.props.languageButton}</a>
|
|
|
+ </Menu.Item>
|
|
|
+ <Menu.Item>
|
|
|
+ <Link to="/login">
|
|
|
+ <div>
|
|
|
+ <FormattedMessage id="Account center"/>
|
|
|
+ </div>
|
|
|
+ </Link>
|
|
|
+ </Menu.Item>
|
|
|
+ <Menu.Item>
|
|
|
+ <Link to="/ticket">
|
|
|
+ <div>
|
|
|
+ <FormattedMessage id="Submit Support Ticket"/>
|
|
|
+ </div>
|
|
|
+ </Link>
|
|
|
+ </Menu.Item>
|
|
|
+ <Menu.Item className={'login-out'}>
|
|
|
+ <a href='https://www.ioobot.com' onClick={(e) => {
|
|
|
+ e.preventDefault();
|
|
|
+ this.logout();
|
|
|
+ }}><FormattedMessage id="exit"/></a>
|
|
|
+ </Menu.Item>
|
|
|
+ </Menu>
|
|
|
+ );
|
|
|
+ return (
|
|
|
+ <div className='login-nickname' onClick={()=>{}}>
|
|
|
+ <Dropdown overlay={menu} placement="bottomRight" trigger={['click']}>
|
|
|
+ <div>
|
|
|
+ <span style={{ marginRight: 5 }}>
|
|
|
+ <Badge dot><Avatar shape="user" icon="user" /></Badge>
|
|
|
+ </span>
|
|
|
+ {/*<Icon type="down" />*/}
|
|
|
+ </div>
|
|
|
+ </Dropdown>
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ </Query>
|
|
|
+ )
|
|
|
+ }
|
|
|
+}
|