import React, {Component} from 'react';
import {Layout, Menu} from 'antd';

import GenerateJs from "./component/generateJs/GenerateJs";
import Deploy from '../common/deploy/Deploy';
import Schema from './component/schema/Schema';
import Graphql from "./component/graphql/Graphql";
import CaseMetabase from "./component/caseMetabase/CaseMetabase";
import axios from 'axios';
import {getIdUrl} from "../../config";

axios.defaults.withCredentials = true;

const {Content} = Layout;

class UserCreate extends Component {
    constructor(props) {
        super(props);
        this.state = {
            menuLevel2: "schema",
            userID: "",
        }
    }

    componentWillMount() {
        let _this = this;
        axios.get(getIdUrl)
            .then((res) => {
                if (res.data !== '') {
                    _this.setState({
                        userID: res.data
                    })
                }
            })
            .catch(function (err) {
                console.log(err);
            });
    }

    switchMenu = (menuName, e) => {
        this.setState({
            [menuName]: e.key,
        });
    };


    render() {
        let schemaID = this.props.history.location.state ? this.props.history.location.state.schemaID : "ecommerce_schemaID";
        let schemaName = this.props.history.location.state ? this.props.history.location.state.schemaName : "ecommerce";
        return (
            <div>
                <Menu
                    mode="horizontal"
                    defaultSelectedKeys={['schema']}
                    style={{padding: '0 24px', position: 'fixed', width: '100%', zIndex: '5',lineHeight:'50px',fontWeight:600}}
                    onClick={(e) => this.switchMenu('menuLevel2', e)}
                    selectedKeys={[this.state.menuLevel2]}
                >
                    <Menu.Item key="schema">schema</Menu.Item>
                    <Menu.Item key="deploy">deploy</Menu.Item>
                    <Menu.Item key="graphiql">graphql IDE</Menu.Item>
                    <Menu.Item key="template">template</Menu.Item>
                    <Menu.Item key="metabase">metabase</Menu.Item>
                </Menu>


                <Layout style={{padding: '24px', zIndex: '0'}}>
                    <Content style={{padding: '24px', minHeight: 280, background: '#fff', marginTop: '48px'}}>
                        {
                            (() => {
                                switch (this.state.menuLevel2) {
                                    case 'schema':
                                        return <Schema trialcase={false} userID={this.state.userID} schemaName={schemaName} schemaID={schemaID} history={this.props.history} location={this.props.location}/>;
                                    case 'deploy':
                                        return <Deploy userID={this.state.userID} schemaID={schemaID}/>;
                                    case 'graphiql':
                                        return <Graphql/>;
                                    case 'template':
                                        return <GenerateJs/>;
                                    case 'metabase':
                                        return <CaseMetabase/>;
                                    default:
                                        return <Graphql/>;
                                }
                            })()
                        }

                    </Content>
                </Layout>
            </div>
        )
    }
}

export default UserCreate;

