|
|
@@ -1,5 +1,5 @@
|
|
|
import React, {Component} from 'react';
|
|
|
-import {Layout, Menu, Input, Button, Spin, Breadcrumb, Icon, Radio, LocaleProvider} from 'antd';
|
|
|
+import {Layout, Menu, Input, Modal, Button, Spin, Breadcrumb, Icon, Radio, LocaleProvider} from 'antd';
|
|
|
import {BrowserRouter as Router, Route, Link, Switch, Redirect} from "react-router-dom";
|
|
|
import {Mutation, Query} from "react-apollo";
|
|
|
import gql from "graphql-tag";
|
|
|
@@ -15,6 +15,8 @@ import TrialCase from "../trialCase/TrialCase";
|
|
|
import Login from "../login/Login";
|
|
|
import '../common/graphql/index.css';
|
|
|
import './index.css'
|
|
|
+import Create from "../common/schema/Create";
|
|
|
+
|
|
|
import {SHOW_SCHEMA} from "../gql";
|
|
|
import axios from 'axios';
|
|
|
|
|
|
@@ -24,11 +26,10 @@ const {SubMenu} = Menu;
|
|
|
const {Header, Sider} = Layout;
|
|
|
moment.locale('en');
|
|
|
|
|
|
-
|
|
|
class App extends Component {
|
|
|
constructor(props) {
|
|
|
super(props);
|
|
|
- sessionStorage.setItem("language", "English");
|
|
|
+ sessionStorage.setItem("language","English");
|
|
|
this.state = {
|
|
|
menuLevel1: "trail",
|
|
|
sideBar: "e-commerce",
|
|
|
@@ -36,7 +37,9 @@ class App extends Component {
|
|
|
inlineCollapsed: false,
|
|
|
locale: undefined,
|
|
|
language: sessionStorage.getItem("language"),
|
|
|
+ visible: false,
|
|
|
userID: ''
|
|
|
+
|
|
|
};
|
|
|
}
|
|
|
|
|
|
@@ -52,7 +55,20 @@ class App extends Component {
|
|
|
});
|
|
|
};
|
|
|
|
|
|
+ showModal = () => {
|
|
|
+ this.setState({
|
|
|
+ visible: true,
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
+ hideModal = () => {
|
|
|
+ this.setState({
|
|
|
+ visible: false,
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
changeLocale = (e) => {
|
|
|
+ e.stopPropagation();
|
|
|
let language = sessionStorage.getItem("language");
|
|
|
// console.log('app language',language);
|
|
|
let local = language === "中文" ? zhCN : undefined;
|
|
|
@@ -74,9 +90,9 @@ class App extends Component {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
-
|
|
|
render() {
|
|
|
- const {locale, language} = this.state;
|
|
|
+ const { locale,language,visible } = this.state;
|
|
|
+
|
|
|
return (
|
|
|
<Router>
|
|
|
<Layout style={{minHeight: '100vh'}}>
|
|
|
@@ -89,7 +105,7 @@ class App extends Component {
|
|
|
<Menu
|
|
|
theme="dark"
|
|
|
mode="horizontal"
|
|
|
- // defaultSelectedKeys={['cloud-function']}
|
|
|
+ defaultSelectedKeys={['graphql-service']}
|
|
|
style={{lineHeight: '64px'}}
|
|
|
onClick={(e) => this.switchMenu('menuLevel1', e)}
|
|
|
>
|
|
|
@@ -97,8 +113,7 @@ class App extends Component {
|
|
|
<Link to="/"><FormattedMessage id="Graphql Service"/></Link>
|
|
|
</Menu.Item>
|
|
|
<Menu.Item key="wechat-service">
|
|
|
- <Link to="/wechat-service/trial-case/wechat case"><FormattedMessage
|
|
|
- id="Wechat Service"/></Link>
|
|
|
+ <Link to="/wechat-service/trial-case/wechat case"><FormattedMessage id="Wechat Service"/></Link>
|
|
|
</Menu.Item>
|
|
|
<Menu.Item key="quantization-service">
|
|
|
<Link to="/quant-service/"><FormattedMessage id="Quantization Service"/></Link>
|
|
|
@@ -108,29 +123,21 @@ class App extends Component {
|
|
|
<Link to="/login"><Button className='login-button' type='primary'>Login</Button></Link>
|
|
|
|
|
|
<div className="change-locale">
|
|
|
- <Button size="small" onClick={(e) => this.changeLocale(e)}>{language}</Button>
|
|
|
+ <Button size="small" onClick={(e)=>this.changeLocale(e)}>{language}</Button>
|
|
|
</div>
|
|
|
</Header>
|
|
|
|
|
|
-
|
|
|
- {(() => {
|
|
|
- switch (this.state.menuLevel1) {
|
|
|
- case 'graphql-service':
|
|
|
- return (
|
|
|
- <GraphqlSidebar collapsed={this.state.collapsed} onCollapse={this.onCollapse}
|
|
|
- inlineCollapsed={this.state.inlineCollapsed}
|
|
|
- sideBar={this.state.sideBar} switchMenu={this.switchMenu}
|
|
|
- userID={this.state.userID}/>
|
|
|
- );
|
|
|
- case 'wechat-service':
|
|
|
- return (
|
|
|
- <Sider
|
|
|
- width={200}
|
|
|
- style={{background: '#fff', marginTop: '64px', zIndex: '0'}}
|
|
|
- collapsible
|
|
|
- collapsed={this.state.collapsed}
|
|
|
- onCollapse={this.onCollapse}
|
|
|
- >
|
|
|
+ <Sider
|
|
|
+ width={200}
|
|
|
+ style={{background: '#fff', marginTop: '64px', zIndex: '0'}}
|
|
|
+ collapsible
|
|
|
+ collapsed={this.state.collapsed}
|
|
|
+ onCollapse={this.onCollapse}
|
|
|
+ >
|
|
|
+ {(() => {
|
|
|
+ switch (this.state.menuLevel1) {
|
|
|
+ case 'graphql-service':
|
|
|
+ return (
|
|
|
<Menu
|
|
|
theme="dark"
|
|
|
mode="inline"
|
|
|
@@ -149,32 +156,90 @@ class App extends Component {
|
|
|
position: 'fixed'
|
|
|
}}
|
|
|
>
|
|
|
- <SubMenu key="trial-case"
|
|
|
- title={<span><Icon type="appstore" theme="twoTone"/><span>Trial Case</span></span>}>
|
|
|
- <Menu.Item key="wechat"><Link
|
|
|
- to="/wechat-service/trial-case/wechat case">wechat
|
|
|
- case</Link></Menu.Item>
|
|
|
+ <SubMenu key="trial-case" title={<span><Icon type="appstore" theme="twoTone"/><span>Trial Case</span></span>}>
|
|
|
+ <Menu.Item key="e-commerce"><Link to="/graphql-service/trial-case/e-commerce">e-commerce</Link></Menu.Item>
|
|
|
+ <Menu.Item key="keep accounts"><Link to="/graphql-service/trial-case/keep accounts">keep accounts</Link></Menu.Item>
|
|
|
+ <Menu.Item key="appointment"><Link to="/graphql-service/trial-case/appointment">appointment</Link></Menu.Item>
|
|
|
</SubMenu>
|
|
|
|
|
|
+ <Menu.Item key="create-graphql" onClick={this.showModal}>
|
|
|
+ <Icon type="edit" theme="twoTone" />
|
|
|
+ <span>Create</span>
|
|
|
+ <Icon type="plus" style={{
|
|
|
+ position: 'absolute',
|
|
|
+ top: '35%',
|
|
|
+ right: '6px',
|
|
|
+ color: 'white'}}/>
|
|
|
+ </Menu.Item>
|
|
|
+
|
|
|
<SubMenu key="my-create"
|
|
|
- title={<span><Icon type="user"
|
|
|
- theme="outlined"/><span>My Create</span></span>}>
|
|
|
- <Menu.Item key="my wechat"><Link
|
|
|
- to="/wechat-service/my-create/my wechat">my
|
|
|
- wechat</Link></Menu.Item>
|
|
|
+ title={<span><Icon type="user" theme="outlined"/><span>My Create</span></span>}>
|
|
|
+ <Menu.Item key="my graphql"><Link to="/graphql-service/my-create/my graphql">my graphql</Link></Menu.Item>
|
|
|
</SubMenu>
|
|
|
</Menu>
|
|
|
- </Sider>
|
|
|
- );
|
|
|
- case 'quantization-service':
|
|
|
- return (
|
|
|
- <Sider
|
|
|
- width={200}
|
|
|
- style={{background: '#fff', marginTop: '64px', zIndex: '0'}}
|
|
|
- collapsible
|
|
|
- collapsed={this.state.collapsed}
|
|
|
- onCollapse={this.onCollapse}
|
|
|
- >
|
|
|
+ );
|
|
|
+ case 'wechat-service':
|
|
|
+ return (
|
|
|
+ <Menu
|
|
|
+ theme="dark"
|
|
|
+ mode="inline"
|
|
|
+ inlineCollapsed={this.state.inlineCollapsed}
|
|
|
+ defaultSelectedKeys={['wechat']}
|
|
|
+ defaultOpenKeys={['trial-case']}
|
|
|
+ // openKeys={['cloud-function']}
|
|
|
+ onClick={(e) => this.switchMenu('sideBar', e)}
|
|
|
+ selectedKeys={[this.state.sideBar]}
|
|
|
+ style={{
|
|
|
+ borderRight: 0,
|
|
|
+ overflow: 'auto',
|
|
|
+ height: '100vh',
|
|
|
+ left: '0',
|
|
|
+ width: '200px',
|
|
|
+ position: 'fixed'
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ <SubMenu key="trial-case" title={<span><Icon type="appstore" theme="twoTone"/><span>Trial Case</span></span>}>
|
|
|
+ <Menu.Item key="wechat"><Link to="/wechat-service/trial-case/wechat case">wechat case</Link></Menu.Item>
|
|
|
+ </SubMenu>
|
|
|
+
|
|
|
+ <SubMenu key="my-create"
|
|
|
+ title={<span><Icon type="user" theme="outlined"/><span>My Create</span></span>}>
|
|
|
+ <Menu.Item key="my wechat"><Link to="/wechat-service/my-create/my wechat">my wechat</Link></Menu.Item>
|
|
|
+ </SubMenu>
|
|
|
+ </Menu>
|
|
|
+ );
|
|
|
+ case 'quantization-service':
|
|
|
+ return (
|
|
|
+ <Menu
|
|
|
+ theme="dark"
|
|
|
+ mode="inline"
|
|
|
+ inlineCollapsed={this.state.inlineCollapsed}
|
|
|
+ defaultSelectedKeys={['quant-service']}
|
|
|
+ defaultOpenKeys={['trial-case']}
|
|
|
+ // openKeys={['cloud-function']}
|
|
|
+ onClick={(e) => this.switchMenu('sideBar', e)}
|
|
|
+ selectedKeys={[this.state.sideBar]}
|
|
|
+ style={{
|
|
|
+ borderRight: 0,
|
|
|
+ overflow: 'auto',
|
|
|
+ height: '100vh',
|
|
|
+ left: '0',
|
|
|
+ width: '200px',
|
|
|
+ position: 'fixed'
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ <SubMenu key="trial-case" title={<span><Icon type="appstore" theme="twoTone"/><span>Trial Case</span></span>}>
|
|
|
+ <Menu.Item key="quant-service"><Link to="/quant-service/">quant case</Link></Menu.Item>
|
|
|
+ </SubMenu>
|
|
|
+
|
|
|
+ <SubMenu key="my-create"
|
|
|
+ title={<span><Icon type="user" theme="outlined"/><span>My Create</span></span>}>
|
|
|
+ <Menu.Item key="my quant"><Link to="/quant-service/">my quant</Link></Menu.Item>
|
|
|
+ </SubMenu>
|
|
|
+ </Menu>
|
|
|
+ );
|
|
|
+ default:
|
|
|
+ return (
|
|
|
<Menu
|
|
|
theme="dark"
|
|
|
mode="inline"
|
|
|
@@ -193,30 +258,35 @@ class App extends Component {
|
|
|
position: 'fixed'
|
|
|
}}
|
|
|
>
|
|
|
- <SubMenu key="trial-case"
|
|
|
- title={<span><Icon type="appstore" theme="twoTone"/><span>Trial Case</span></span>}>
|
|
|
- <Menu.Item key="quant-service"><Link to="/quant-service/">quant
|
|
|
- case</Link></Menu.Item>
|
|
|
+ <SubMenu key="trial-case" title={<span><Icon type="appstore" theme="twoTone"/><span>Trial Case</span></span>}>
|
|
|
+ <Menu.Item key="e-commerce"><Link to="/graphql-service/trial-case/e-commerce">e-commerce</Link></Menu.Item>
|
|
|
+ <Menu.Item key="keep accounts"><Link to="/graphql-service/trial-case/keep accounts">keep accounts</Link></Menu.Item>
|
|
|
+ <Menu.Item key="appointment"><Link to="/graphql-service/trial-case/appointment">appointment</Link></Menu.Item>
|
|
|
</SubMenu>
|
|
|
|
|
|
+ <Menu.Item key="create-graphql" onClick={this.showModal}>
|
|
|
+ <Icon type="edit" theme="twoTone" />
|
|
|
+ <span>Create</span>
|
|
|
+ <Icon type="plus" style={{
|
|
|
+ position: 'absolute',
|
|
|
+ top: '35%',
|
|
|
+ right: '6px',
|
|
|
+ color: 'white'}}/>
|
|
|
+ </Menu.Item>
|
|
|
+
|
|
|
<SubMenu key="my-create"
|
|
|
- title={<span><Icon type="user"
|
|
|
- theme="outlined"/><span>My Create</span></span>}>
|
|
|
- <Menu.Item key="my quant"><Link to="/quant-service/">my
|
|
|
- quant</Link></Menu.Item>
|
|
|
+ title={<span><Icon type="user" theme="outlined"/><span>My Create</span></span>}>
|
|
|
+ <Menu.Item key="my graphql"><Link to="/graphql-service/my-create/my graphql">my graphql</Link></Menu.Item>
|
|
|
</SubMenu>
|
|
|
</Menu>
|
|
|
- </Sider>
|
|
|
- );
|
|
|
- default:
|
|
|
- return (
|
|
|
- <GraphqlSidebar collapsed={this.state.collapsed} onCollapse={this.onCollapse}
|
|
|
- inlineCollapsed={this.state.inlineCollapsed}
|
|
|
- sideBar={this.state.sideBar} switchMenu={this.switchMenu}
|
|
|
- userID={this.state.userID}/>
|
|
|
- );
|
|
|
- }
|
|
|
- })()}
|
|
|
+ );
|
|
|
+ }
|
|
|
+ })()}
|
|
|
+ </Sider>
|
|
|
+ <Create visible={visible} hideModal={this.hideModal}/>
|
|
|
+ {
|
|
|
+ // todo: 路由如何传值是个问题,包括schema_id, user_id
|
|
|
+ }
|
|
|
|
|
|
<LocaleProvider locale={locale}>
|
|
|
<Layout style={{marginTop: '64px', zIndex: '0'}}
|