import { onMount, createSignal } from "solid-js"
import DataSet from '@antv/data-set';
import { Chart } from '@antv/g2';

import utils from "../utils/index"

import ItemHead from "../components/itemHead";
import Table from "../components/table";
import Water from "../components/water";

import "../assets/style/Fourth.css"

let WordEle, WordCanvas;
let lastTime = Date.now();
window.animationID = -1;
const [timeDate, setTimeDate] = createSignal(utils.getTime())
const [itemHeight, setItemHeight] = createSignal(utils.getTime())

function animation() {
    window.animationID = window.requestAnimFrame(() => {
    const nowTime = Date.now();
    window.cancelrequestAnimFrame(window.animationID);
    animation()
    if ((nowTime - lastTime) < 1000) return
    lastTime = nowTime;
    setTimeDate(utils.getTime())
  })
}

function ClassificationChart() {
  const data = [
    { item: '执法形象', a: 70, b: 30 },
    { item: '突发事件', a: 60, b: 70 },
    { item: '突发事故', a: 50, b: 60 },
    { item: '涉警、涉公务人员问题', a: 40, b: 50 },
    { item: '政府形象问题', a: 60, b: 70 },
    { item: '涉稳事件', a: 70, b: 50 },
    { item: '治安管理', a: 50, b: 40 },
    { item: '民生问题', a: 30, b: 40 },
    { item: '地区重点企业', a: 60, b: 40 },
    { item: '案件问题', a: 50, b: 60 },
  ];
  const { DataView } = DataSet;
  const dv = new DataView().source(data);
  dv.transform({
    type: 'fold',
    fields: ['a', 'b'], // 展开字段集
    key: 'user', // key字段
    value: 'score', // value字段
    renderer: 'svg'
  });
  const chart = new Chart({
    container: 'Classification',
    autoFit: true,
    padding: 20,
    height: WordEle.offsetHeight - 110,
  });
  chart.data(dv.rows);
  chart.scale('score', {
    min: 0,
    max: 80,
  });
  chart.coordinate('polar', {
    radius: 0.8,
  });
  chart.tooltip({
    shared: true,
    showCrosshairs: true,
    crosshairs: {
      line: {
        style: {
          lineDash: [4, 4],
          stroke: '#333'
        }
      }
    }
  });
  chart.axis('item', {
    line: null,
    tickLine: null,
    grid: {
      line: {
        style: {
          lineDash: null,
        },
      },
    },
  });
  chart.axis('score', {
    line: null,
    tickLine: null,
    grid: {
      line: {
        type: 'line',
        style: {
          lineDash: null,
        },
      },
    },
  });

  chart
    .line()
    .position('item*score')
    .color('user')
    .size(2);
  chart
    .point()
    .position('item*score')
    .color('user')
    .shape('circle')
    .size(4)
    .style({
      stroke: '#fff',
      lineWidth: 1,
      fillOpacity: 1,
    });
  chart
    .area()
    .position('item*score')
    .color('user');
  chart.render();
}

function TrendChart() {
  const data = [
    { year: '1991', value: 15468 },
    { year: '1992', value: 16100 },
    { year: '1993', value: 15900 },
    { year: '1994', value: 17409 },
    { year: '1995', value: 17000 },
    { year: '1996', value: 31056 },
    { year: '1997', value: 31982 },
    { year: '1998', value: 32040 },
    { year: '1999', value: 33233 },
  ];
  const chart = new Chart({
    container: 'Trend',
    autoFit: true,
    height: WordEle.offsetHeight - 110,
    renderer: 'svg',
    padding: [20, 20, 30, 50],
  });

  chart.data(data);
  chart.scale({
    value: {
      min: 10000,
      nice: true,
    },
    year: {
      range: [0, 1],
    },
  });
  chart.tooltip({
    showCrosshairs: true,
    shared: true,
  });

  chart.axis('value', {
    label: {
      formatter: (val) => {
        return (val / 1000).toFixed(1) + 'k';
      },
    },
  });

  chart.area().position('year*value').shape('smooth');
  chart.line().position('year*value').shape('smooth');

  chart.render();
}

function WordsChart() {
  WordCanvas.width = WordEle.offsetWidth
  WordCanvas.height = WordEle.offsetHeight - 110
  window.TagCanvas.Start("wordCloud", "tags", {
    textColour: "#3AEDE4",
    outlineColour: "rgba(0,0,0,0)",
    maxSpeed: 0.003,
    lock: "y",
  });
  window.TagCanvas.SetSpeed("wordCloud", [3, 3]);
}


function Fourth() {
  onMount(() => {
    ClassificationChart()
    TrendChart()
    WordsChart()
    animation()
    setItemHeight(WordEle.offsetHeight - 43)
  })
  const tHead = [{ text: '发布时间', type: 'Text' }, { text: '信息来源', type: 'Text' }, { text: '信息标题', type: 'Text', flex: 2 }];
  const tBody = [
    {
      color: "",
      col: [
        { text: '31分钟前', type: 'Text', color: "rgb(215 1 1 / 60%)", flex: 1 },
        { text: '懂车帝', type: 'Text', color: "rgb(215 1 1 / 60%)", flex: 1 },
        {
          flex: 2,
          text: '国足又输了 [流泪][流泪][流泪] 孔老二搬家 ……尽是书 说实话，怪不了这帮小子，他们尽力了，他们也就这能耐。 没有高考不行! 但是，高考为大众目标的教育，必然导致足球人口畸少而且素质极差。 此题',
          type: 'Scroll',
          color: "rgb(215 1 1 / 60%)"
        }
      ]
    }
  ]
  return (
    <div class="page">
      <div class="row FourthLayout height50">
        <div class="col4" style={{"padding":"0 .5em"}}>
          <div class="timeSub">
            预警运行时间：
            <div class="numberFonts">
              <span>{timeDate().year[2]}</span>
              <span>{timeDate().year[3]}</span>
              年
              <span>{timeDate().month[0]}</span>
              <span>{timeDate().month[1]}</span>
              月
              <span>{timeDate().day[0]}</span>
              <span>{timeDate().day[1]}</span>
              日
            </div>
            <div class="numberFonts">
              <span>{timeDate().hour[0]}</span>
              <span>{timeDate().hour[1]}</span>
              时
              <span>{timeDate().min[0]}</span>
              <span>{timeDate().min[1]}</span>
              分
              <span>{timeDate().sec[0]}</span>
              <span>{timeDate().sec[1]}</span>
              秒
            </div>
          </div>
          <div class="dataTotal" style={'height: ' + itemHeight() + 'px'}>
            <img style={{"float":"right"}} src="/src/assets/img/border_right.png" height="100%" />
            <div class="error">
              <div>
                <img src="/src/assets/img/all_error.png" style={{"width":"7em"}} />
                <div>全部预警</div>
              </div>
              <div>
                <img src="/src/assets/img/public_error.png" style={{"width":"7em"}} />
                <div>公共预警</div>
              </div>
            </div>
            <img src="/src/assets/img/link.gif" style={{"float":"right","width":"35%","height":"80%","margin-top":"2em"}} />
            <div class="data" style={{"width":"calc(75% - 1.68rem)","height":"100%"}}>
              <div class="allData">
                <div>监测信息总量</div>
                <img src="/src/assets/img/arrow_right.png" class="arrow" />
                <p>445349</p>
              </div>
              <div class="filterData">
                <div>排除信息量</div>
                <img src="/src/assets/img/arrow_right.png" class="arrow" />
                <p>444393</p>
              </div>
              <div class="proData">
                <div>排除信息占比</div>
                <img src="/src/assets/img/arrow_right.png" class="arrow arrow_left" />
                <p>99.79%</p>
              </div>
              <div style={{"height":"180px"}}>
              <div class="img">
                <img src="/src/assets/img/w1.png" style={{"top":"16px"}} alt="" />
                <img src="/src/assets/img/w2.png" style={{"top":"106px"}} alt="" />
              </div>
              </div>
              <Water percentage={0.21} text="舆情预警" />
            </div>
          </div>
        </div>
        <div class="col3">
          <ItemHead title="预警信息" subtitle="Warning Information" />
          <Table head={tHead} body={tBody} />
        </div>
      </div>
      <div class="row FourthLayout height50">
        <div class="col1">
          <ItemHead title="预警分类" subtitle="Warning Classification" />
          <div class="chart3" id="Classification"></div>
        </div>
        <div class="col1">
          <ItemHead title="预警趋势" subtitle="Warning Trend" />
          <div class="chart3" id="Trend"></div>
        </div>
        <div class="col1" ref={WordEle}>
          <ItemHead title="高频热词" subtitle="High-frequency words" />
          <div class="chart3 heightWord">
            <canvas id="wordCloud" ref={WordCanvas}></canvas>
            <div id="tags" class="tags" style={{"display":"none"}}>
              <ul>
                <li>
                  <a href="http://www.google.com" target="_blank">Google</a>
                </li>
                <li><a href="/fish">Fish</a></li>
                <li><a href="/chips">Chips</a></li>
                <li><a href="/salt">Salt</a></li>
                <li><a href="/vinegar">Vinegar</a></li>
                <li>
                  <a href="http://www.google.com" target="_blank">Google</a>
                </li>
                <li><a href="/fish">Fish</a></li>
                <li><a href="/chips">Chips</a></li>
                <li><a href="/salt">Salt</a></li>
                <li><a href="/vinegar">Vinegar</a></li>
                <li>
                  <a href="http://www.google.com" target="_blank">Google</a>
                </li>
                <li><a href="/fish">Fish</a></li>
                <li><a href="/chips">Chips</a></li>
                <li><a href="/salt">Salt</a></li>
                <li><a href="/vinegar">Vinegar</a></li>
                <li>
                  <a href="http://www.google.com" target="_blank">Google</a>
                </li>
                <li><a href="/fish">Fish</a></li>
                <li><a href="/chips">Chips</a></li>
                <li><a href="/salt">Salt</a></li>
                <li><a href="/vinegar">Vinegar</a></li>
                <li>
                  <a href="http://www.google.com" target="_blank">Google</a>
                </li>
                <li><a href="/fish">Fish</a></li>
                <li><a href="/chips">Chips</a></li>
                <li><a href="/salt">Salt</a></li>
                <li><a href="/vinegar">Vinegar</a></li>
              </ul>
            </div>
          </div>
        </div>
      </div>
    </div>
  );
}

export default Fourth;
