<template>
    <div class="tabs">
        <div class="tab-item" @click="onTabClick('kuoxian')" :class="{'active': currentTab === 'kuoxian'}">
            垂直廓线
            <img src="/images/line.png" v-if="currentTab === 'kuoxian'" />
        </div>
        <div class="tab-item" @click="onTabClick('对流指数')" :class="{'active': currentTab === '对流指数'}">
            对流指数
            <img src="/images/line.png" v-if="currentTab === '对流指数'" />
        </div>
        <div class="tab-item" @click="onTabClick('T-logP图')" :class="{'active': currentTab === 'T-logP图'}">
            T-logP图
            <img src="/images/line.png" v-if="currentTab === 'T-logP图'" />
        </div>
        <div class="tab-item" @click="onTabClick('BP反演产品')" :class="{'active': currentTab === 'BP反演产品'}">
            BP反演产品
            <img src="/images/line.png" v-if="currentTab === 'BP反演产品'" />
        </div>
    </div>
    <div class="main">
        <div class="menu panel">
            <div class="menu-item">
                <h2 class="tip">区域选择</h2>
                <el-row :gutter="12">
                    <el-col :span="8"><span @click="onRegionClick('jiangning')" :class="{'active': currentRegion === 'jiangning'}">江宁</span></el-col>
                    <el-col :span="8"><span @click="onRegionClick('liuhe')" :class="{'active': currentRegion === 'liuhe'}">六合</span></el-col>
                    <el-col :span="8"><span @click="onRegionClick('pukou')" :class="{'active': currentRegion === 'pukou'}">浦口</span></el-col>
                    <el-col :span="8"><span @click="onRegionClick('gaochun')" :class="{'active': currentRegion === 'gaochun'}">高淳</span></el-col>
                    <el-col :span="8"><span @click="onRegionClick('lishui')" :class="{'active': currentRegion === 'lishui'}">溧水</span></el-col>
                </el-row>
            </div>
            <div class="menu-item" v-if="currentTab === 'kuoxian'">
                <h2 class="tip">要素选择</h2>
                <el-row :gutter="12">
                    <el-col :span="8"><span @click="onElementClick('TEMP')" :class="{'active': currentElement === 'TEMP'}">温度</span></el-col>
                    <el-col :span="8"><span @click="onElementClick('RH')" :class="{'active': currentElement === 'RH'}">湿度</span></el-col>
                </el-row>
            </div>
            <div class="menu-item" v-if="currentTab === '对流指数'">
                <h2 class="tip">要素选择</h2>
                <el-row :gutter="12">
                    <el-col :span="8"><span @click="onCategoryClick('CAPE')" :class="{'active': currentCategory === 'CAPE'}">CAPE</span></el-col>
                    <el-col :span="8"><span @click="onCategoryClick('CIN')" :class="{'active': currentCategory === 'CIN'}">CIN</span></el-col>
                </el-row>
            </div>
        </div>
        <div class="container panel">
            <div class="toolbar">
                <div class="times">
                    <div class="time-item" v-for="(time, index) in times" :key="index" :class="{'active': currentTime === time.date, 'first-hour': time.minute === '00'}">
                        <span class="hour">{{time.hour}}</span>
                        <span class="minute" @click="onTimeClick(time)">{{time.minute}}</span>
                    </div>
                </div>
                <el-date-picker v-model="date" type="date" placeholder="请选择" :clearable="false" :editable="false" class="date-picker"  @change="onDateChange">
                </el-date-picker>
                <div class="control-btn">
                    <span @click="onPrevDayClick"><img src="/images/prev.png" /></span>
                    <span @click="onNextDayClick"><img src="/images/next.png" /></span>
                </div>
                <el-select v-model="currentHour" placeholder="" @change="onHourChange">
                    <el-option
                    v-for="item in hours"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                    >
                    </el-option>
                </el-select>
                <p class="unit">时</p>
                <div class="refresh-btn">
                    <img src="/images/refresh.png" />
                </div>
                <div class="btns-group">
                    <span>播放动画</span>
                    <span>下载动画</span>
                </div>
            </div>
            <div class="picture-view">
                <span class="arrow arrow-prev" @click="onPrevImgClick"><img src="/images/prev-btn.png" /></span>
                <span class="arrow arrow-next" @click="onNextImgClick"><img src="/images/next-btn.png" /></span>
                <span class="save-btn"><img src="/images/save.png" /></span>
                <h2 class="title">{{title}}</h2>
                <div class="picture">
                    <el-image
                        :src="imgUrl"
                        :preview-src-list="srcList"
                        :initial-index="1"
                        fit="contain"
                    >
                    </el-image>
                </div>
            </div>
        </div>
    </div>
</template>

<script lang="ts">
    import { onMounted, reactive, toRefs } from 'vue';
    import moment from "moment";
    import { MicrowaveRadiationConfig } from '../hooks/Config';
    
    export default {
        name: 'MicrowaveRadiation',
        setup() {
            let options = reactive({
                currentTab: 'kuoxian',
                currentRegion: 'jiangning',
                currentElement: 'TEMP',
                currentCategory: 'CAPE',
                date: moment().format('YYYY-MM-DD'),
                currentHour: '10',
                hours: [],
                times: [],
                currentTime: null,
                imgUrl: null,
                srcList: ['/images/picture.png'],
                isPlay: false,
                title: null,
                test: []
            })

            onMounted(() => {
                initHours();
                initTimeLine();
                activeImage();
                setTitle(moment(options.date, 'YYYY-MM-DD').hour(parseInt(options.currentHour)))
            })
            
            const onTabClick = (name) => {
                options.currentTab = name;
            }

            const onRegionClick = (region) => {
                options.currentRegion = region;
            }

            const onElementClick = (element) => {
                options.currentElement = element;
            }

            const onCategoryClick = (category) => {
                options.currentCategory = category;
            }

            const setTitle = (date) => {
                console.log(date)
                options.title = date.format('YYYY.MM.DD HH:mm') + '  ' + options.currentElement;
            }

            const activeImage = () => {
                console.log(MicrowaveRadiationConfig.getUrl("jingning", "kuoxian_TEMP", moment()));
                options.imgUrl = MicrowaveRadiationConfig.getUrl(options.currentRegion, options.currentTab + '_' + options.currentElement, moment(options.date).hour(parseInt(options.currentHour)).minute(0));
                console.log(options.imgUrl)
            }

            const initTimeLine = () => {
                options.times = [];
                options.currentTime = moment(options.date).hour(parseInt(options.currentHour)).format('YYYY-MM-DD HH:mm');

                let now = moment(options.date).hour(parseInt(options.currentHour) - 2);

                let minute = now.minute();
                const remainder = minute % 6;
                if (remainder > 0){
                    now.minute(minute + (6 - remainder));
                }

                now.minute(now.minute() - 6);

                for (let i = 0; i < 21 ; i++) {
                    options.times.push({
                        hour: now.add(6, 'minute').format('HH时'),
                        minute: now.format('mm'),
                        date: now.format('YYYY-MM-DD HH:mm'),
                        name: 'hour' + now.format('HH')
                    });
                }
            }

            const initHours = () => {
                for (let i = 0; i < 23; i++) {
                    options.hours.push({
                        value: i,
                        label: i < 10 ? '0' + i : i,
                    })
                }
            }

            const onTimeClick = (time) => {
                options.currentTime = time.date;
                setTitle(moment(time.date, 'YYYY-MM-DD HH:mm'));
                activeImage();
            }

            const onPrevDayClick = () => {
                options.date = moment(options.date).add(-1, 'day').format('YYYY-MM-DD')
            }

            const onNextDayClick = () => {
                options.date = moment(options.date).add(1, 'day').format('YYYY-MM-DD')
            }

            const onPrevImgClick = () => {

            }
            
            const onNextImgClick = () => {
                
            }

            const onHourChange = () => {
                initTimeLine();
                setTitle(moment(options.date).hour(parseInt(options.currentHour)));
            }

            const onDateChange = () => {
                initTimeLine();
                setTitle(moment(options.date).hour(parseInt(options.currentHour)));
            }

            return {
                ...toRefs(options),
                onTabClick,
                onRegionClick,
                onElementClick,
                onCategoryClick,
                onTimeClick,
                onPrevDayClick,
                onNextDayClick,
                onPrevImgClick,
                onNextImgClick,
                onHourChange,
                onDateChange
            }
        }
    }
</script>
<style lang="less" scoped>
    
</style>
