<template>
  <div class="app-wrapper">
    <div v-show="listShow" class="examList" :style="{width: widthLeft+'px'}">
      <demon-list ref="demonList" :width="widthLeft" @createMap="createMap" />
    </div>
    <drap-left :width-left="widthLeft" @drapWidth="drapWidth" />
    <transition>
      <router-view />
    </transition>
  </div>
</template>

<script>
import { mapGetters } from 'vuex';
import demonList from './demonList';
import drapLeft from '@/views/components/drapLeft/index';
import { launchFullscreen } from '@/utils/screen';
import localStore from 'storejs';
import { getSessionStorage, setSessionStorage } from '@/utils/auth';

export default {
    name: 'DesignPlatform',
    components: {
        demonList,
        drapLeft
    },
    data() {
        return {
            listShow: true,
            widthLeft: Number(localStore.get('LeftWidth')) || 450,
            lineCode: ''
        };
    },
    computed: {
        ...mapGetters([
            'lessonbar'
        ]),
        width() {
            return this.$store.state.app.width;
        }
    },
    watch: {
        'lessonbar.opened': function (val) {
            this.listShow = val;
        },
        widthLeft(val) {
            this.setMapResize(val);
        },
        '$store.state.app.windowSizeCount': function() {
            this.resize();
        }
    },
    created() {
        this.resize();
    },
    mounted() {
        const againEnter = getSessionStorage('againEnter') || null;
        if (!againEnter) {
            launchFullscreen();
            setSessionStorage('againEnter', true);
        }
        this.widthLeft = Number(localStore.get('LeftWidth'));
    },
    methods: {
        refresh() {
            this.$refs && this.$refs.demonList && this.$refs.demonList.loadInitData();
        },
        drapWidth(width) {
            this.widthLeft = Number(width);
        },
        resize() {
            this.widthLeft = Number(localStore.get('LeftWidth')) || this.widthLeft;
            const width = this.$store.state.app.width - 521 - this.widthLeft;
            const height = this.$store.state.app.height - 90;
            this.$store.dispatch('config/resize', { width: width, height: height });
        },
        setMapResize(LeftWidth) {
            const widths = this.$store.state.app.width - 521 - LeftWidth;
            const heights = this.$store.state.app.height - 90;
            this.$store.dispatch('config/resize', { width: widths, height: heights });
        }
    }
};
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
    @import "src/styles/mixin.scss";

    .app-wrapper {
        @include clearfix;
        position: relative;
        height: 100%;
        width: 100%;
        overflow: hidden;
    }

    .examList {
        float: left;
        height: 100%;
    }
</style>
