Browse Source

Merge branch 'master' of http://gogs.ioobot.com:6680/xy/online

kulley 7 years ago
parent
commit
1ed1221be4
3 changed files with 70 additions and 1 deletions
  1. 16 0
      src/app/App.jsx
  2. 52 0
      src/app/common/Graphiql.jsx
  3. 2 1
      src/config.js

+ 16 - 0
src/app/App.jsx

@@ -24,6 +24,8 @@ import WxCreate from "./wechatService/wxCreate/WxCreate";
 import {CASE_AND_PROJECT, GET_USER} from "../gql";
 import axios from 'axios';
 import {getCookie, setCookie} from "../cookie";
+import {logoutUrl} from "../config";
+import Graphiql from "./common/Graphiql";
 
 axios.defaults.withCredentials = true;
 
@@ -355,9 +357,11 @@ class App extends Component {
                                 <Route path="/wechat-service/trial-case/:case" component={WxTrialCase}/>
                                 <Route path="/wechat-service/my-create/:case" component={WxUserCreate}/>
                                 <Route path="/quant-service/:sidebar/:case" component={QuantService}/>
+                                <Route path="/quant-service/:sidebar/:case" component={QuantService}/>
                                 <Route path="/login/:setting" component={Login}/>
                                 <Route path="/login" component={Login}/>
                                 <Route path="/ticket" component={Ticket}/>
+                                <Route path="/graphiql" component={Graphiql}/>
                                 <Redirect path="*" to="/"/>
                             </Switch>
                         </Layout>
@@ -612,6 +616,17 @@ class User extends Component {
         }
     }
 
+    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}}>
@@ -654,6 +669,7 @@ class User extends Component {
                                     <Menu.Item className={'login-out'}>
                                         <a href='https://www.ioobot.com' onClick={(e) => {
                                             e.preventDefault();
+                                            this.logout();
                                         }}><FormattedMessage id="exit"/></a>
                                     </Menu.Item>
                                 </Menu>

+ 52 - 0
src/app/common/Graphiql.jsx

@@ -0,0 +1,52 @@
+import React, {Component} from 'react';
+import {Input, Spin} from 'antd';
+import GraphiQL from "graphiql";
+import fetch from "isomorphic-fetch";
+
+const Search = Input.Search;
+
+class Graphiql extends Component {
+    constructor(props) {
+        super(props);
+        this.state = {
+            api: 'http://123.206.193.98:3123/graphql',
+        };
+    };
+
+    shouldComponentUpdate(nextProps,nextState){
+        if(nextState.api !== this.state.api){
+            return true;
+        }
+        return false;
+    }
+
+    graphQLFetcher = (graphQLParams) => {
+        // console.log('graphQLParams',graphQLParams);
+        // 已经存在的 magazine api, 设想: 用户生成 schema,返回 api 自动替换这里
+        return fetch(this.state.api, {
+            method: 'post',
+            headers: {'Content-Type': 'application/json'},
+            body: JSON.stringify(graphQLParams),
+        }).then(response => response.json());
+    };
+
+    render() {
+        return (
+            <div>
+                <Search
+                    style={{marginTop: 10}}
+                    placeholder="input api url"
+                    defaultValue={this.state.api}
+                    enterButton="POST"
+                    onSearch={value => {
+                        // console.log(value);
+                        this.setState({api: value});
+                    }}
+                />
+                <GraphiQL fetcher={this.graphQLFetcher.bind(this)}/>
+            </div>
+        )
+    }
+}
+
+export default Graphiql;

+ 2 - 1
src/config.js

@@ -22,6 +22,7 @@ const graphqlUrl = graphqlIP + ':' + graphqlPort + '/graphql';
 // api 配置
 const getIdUrl = backend + '/getuserid';
 const loginUrl = backend + '/login';
+const logoutUrl = backend + '/logout';
 const registerUrl = backend + '/resetpassword';
 
 // graphql 部署配置
@@ -36,4 +37,4 @@ const removeAPI = backendGQ + '/removeapi';
 // 通过在该数组中添加 userID,可以管理 trialcase 的增删改查
 const manageUsers = ['xy_1_je9{d\'\'_32sD+'];
 
-export {getIdUrl, loginUrl, registerUrl, checkSchemaUrl, deployUrl, genJsUrl, graphqlUrl, manageUsers, removeFC, removeAPI}
+export {getIdUrl, loginUrl, registerUrl, logoutUrl,checkSchemaUrl, deployUrl, genJsUrl, graphqlUrl, manageUsers, removeFC, removeAPI}