import { Ref, defineComponent, reactive, ref } from 'vue';
import styles from '../index.module.less';
import { NButton, NDataTable, NNumberAnimation } from 'naive-ui';
import numeral from 'numeral';
import { useECharts } from '@/hooks/web/useECharts';
import Pagination from '/src/components/pagination';
export default defineComponent({
  name: 'home-practiceData',
  setup() {
    const chartRef = ref<HTMLDivElement | null>(null);
    const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>);
    const practiceFlag = ref(true);
    const payForm = reactive({
      height: '360px',
      width: '100%',
      studentNum: 0,
      paymentAmount: 0,
      dateList: [
        '2022-10-10',
        '2022-10-11',
        '2022-10-12',
        '2022-10-13',
        '2022-10-14',
        '2022-10-15',
        '2022-10-16'
      ],
      timeList: [90, 128, 242, 120, 186, 77, 148]
    });

    const state = reactive({
      loading: false,
      pagination: {
        page: 1,
        rows: 10,
        pageTotal: 4
      },
      tableList: [
        {
          teacherName: '孙忆枫',
          createTime: '2023-06-27',
          endTime: '2023-06-30',
          status: 'ing',
          studentNum: 100,
          submitNum: 100,
          quantityNum: 60,
          submitRate: 100,
          quantityRate: 60
        },
        {
          teacherName: '孙忆枫',
          createTime: '2023-06-27',
          endTime: '2023-06-30',
          status: 'ing',
          studentNum: 100,
          submitNum: 100,
          quantityNum: 60,
          submitRate: 100,
          quantityRate: 60
        },
        {
          teacherName: '孙忆枫',
          createTime: '2023-06-27',
          endTime: '2023-06-30',
          status: 'ing',
          studentNum: 100,
          submitNum: 100,
          quantityNum: 60,
          submitRate: 100,
          quantityRate: 60
        },
        {
          teacherName: '孙忆枫',
          createTime: '2023-06-25',
          endTime: '2023-06-26',
          status: 'end',
          studentNum: 100,
          submitNum: 100,
          quantityNum: 60,
          submitRate: 100,
          quantityRate: 60
        }
      ] as any,
      goCourseVisiable: false
    });
    const columns = () => {
      return [
        {
          title: '日期',
          key: 'createTime'
        },
        {
          title: '练习人数',
          key: 'quantityNum',
          render(row: any) {
            return <span>{row.quantityNum}人</span>;
          }
        },

        {
          title: '平均练习时长(分钟)',
          key: 'submitNum',
          render(row: any) {
            return <span>{row.submitNum}分钟</span>;
          }
        }
      ];
    };
    const getList = () => {
      console.log('1');
    };
    const setChart = () => {
      setOptions({
        tooltip: {
          trigger: 'axis',
          axisPointer: {
            type: 'none'
          }
        },
        legend: {
          show: false,
          selected: {
            //在这里设置默认展示就ok了
            '练习时长(分钟)': practiceFlag.value
          }
        },
        xAxis: {
          type: 'category',
          boundaryGap: true,
          axisLabel: {
            show: true,
            interval: 0
          },
          data: payForm.dateList
        },
        yAxis: [
          {
            type: 'value',
            axisLabel: {
              formatter: '{value} min'
            },
            axisTick: {
              show: false
            },
            splitArea: {
              show: false,
              areaStyle: {
                color: ['rgba(255,255,255,0.2)']
              }
            }
          }
        ],
        grid: {
          left: '1%',
          right: '1%',
          top: '2%',
          bottom: 0,
          containLabel: true
        },
        series: [
          {
            // smooth: true,
            data: payForm.timeList,
            type: 'bar',
            barWidth: '48px',
            label: {
              // 柱图头部显示值
              show: true,
              position: 'top',
              color: '#333',
              fontSize: '12px',
              fontWeight: 600
            },

            itemStyle: {
              normal: {
                //这里设置柱形图圆角 [左上角，右上角，右下角，左下角]
                barBorderRadius: [8, 8, 0, 0],
                color: '#D5E9FF'
              },
              emphasis: {
                color: '#3583FA' //hover时改变柱子颜色
                // borderWidth: 4,
                // borderColor: 'rgba(213, 233, 255,.4)',
                // borderType: 'solid'
              }
            } as any
          }
        ],

        formatter: (item: any) => {
          if (Array.isArray(item)) {
            return [
              item[0].axisValueLabel,
              ...item.map(
                (d: any) =>
                  `<br/>${
                    d.marker
                  }<span style="margin-top:10px;margin-left:5px;font-size: 13px;font-weight: 500;
                  color: #131415;font-weight: 600;
                  margin-top:12px
                  line-height: 18px;">练习时长: ${d.value}${'分钟'} </span>`
              )
            ].join('');
          } else {
            return item;
          }
        }
        // dataZoom: [
        //   {
        //     type: 'slider',
        //     start: 5,
        //     end: 100,
        //     filterMode: 'empty'
        //   }
        // ]
      });
    };
    setChart();
    return () => (
      <>
        <div class={styles.homeTrainData}>
          <div class={styles.TrainDataTop}>
            <div class={styles.TrainDataTopLeft}>
              <div class={styles.TrainDataItem}>
                <p class={styles.TrainDataItemTitle}>
                  <span>
                    <NNumberAnimation from={0} to={32}></NNumberAnimation>
                  </span>
                  人
                </p>
                <p class={styles.TrainDataItemsubTitle}>练习人数</p>
              </div>
              <div class={styles.TrainDataItem}>
                <p class={styles.TrainDataItemTitle}>
                  <span>
                    <NNumberAnimation from={0} to={32}></NNumberAnimation>
                  </span>
                  分钟
                </p>
                <p class={styles.TrainDataItemsubTitle}>平均练习时长</p>
              </div>
            </div>
            <div class={styles.TrainDataTopRight}>
              <div
                // onClick={() => {
                //   practiceFlag.value = !practiceFlag.value;
                //   setChart();
                // }}
                class={[
                  styles.DataTopRightItem,
                  practiceFlag.value ? '' : styles.DataTopRightItemDis
                ]}>
                <div
                  class={[
                    styles.DataTopRightDot,
                    styles.DataTopRightDotBlue
                  ]}></div>
                <p>练习时长（分钟）</p>
              </div>
            </div>
          </div>
          <div class={styles.chatrs}>
            <div
              ref={chartRef}
              style={{ height: payForm.height, width: payForm.width }}></div>
          </div>
          <div class={styles.tableWrap}>
            <NDataTable
              class={styles.classTable}
              loading={state.loading}
              columns={columns()}
              data={state.tableList}></NDataTable>
            <Pagination
              v-model:page={state.pagination.page}
              v-model:pageSize={state.pagination.rows}
              v-model:pageTotal={state.pagination.pageTotal}
              onList={getList}
              sync
              saveKey="orchestraRegistration-key"
            />
          </div>
        </div>
      </>
    );
  }
});
