<template>
  <a-row :gutter="30">
    <a-col :md="12" :sm="1" >
      <!-- 查询区域 -->
      <div class="table-page-search-wrapper">
         <a-select  placeholder="选择数据类型"  option-filter-prop="children" v-model="datatypequeryParam.schemaName" @change="getTables" style="width: 40%;">
            <a-select-option v-for="d in dataTypedataSources" :key="d.id">
              {{ d.cnName }}
            </a-select-option>
          </a-select>
        </div>
        <!-- table区域-begin -->
        <div style="height:900px;overflow-y:auto;">
          <a-table
            ref="table"
            size="middle"
            bordered
            :pagination="false"
            :scroll="{ y: 800 }"
            rowKey="id"
            :columns="columns"
            :dataSource="dataSource">
    <!--        :locale="myLocale"-->

            <!-- 字符串超长截取省略号显示-->
          </a-table>
        </div>
    </a-col>
    <a-col :md="12" :sm="2" >
      <a-card :bordered="false">

<!-- 查询区域 -->
<div class="table-page-search-wrapper">
    <a-form layout="inline">
          <a-row :gutter="30">
            <a-col :md="6" :sm="10" >
              <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
                <a-button @click="dataAdd" type="primary" v-has="'cont:btn'" icon="plus">发布到专题库</a-button>
              </span>
            </a-col>
          </a-row>
        </a-form>
        <a-progress :percent="percent" status="active" />
      </div>
      <!-- table区域-begin -->
      <div style="height:900px;overflow-y:auto;">
        <a-list bordered :data-source="contentList">
        <a-list-item slot="renderItem" slot-scope="item, index">
            {{ item }}
          </a-list-item>
        </a-list>
      </div>
      </a-card>
    </a-col>
  </a-row>
  
</template>

<script>
  import store from '@/store/'
  import {getAction} from '@/api/manage'
  import { 
    dataTypePageList,
    dataTypeDeleteById } from '@/api/dataType'
  export default {
    name: "dataManage",
    components: {
    },
    data () {
      return {
        description: '标准库',
        contentList:[],
        percent:0,
        websock:{},
        datatypequeryParam: {
          schemaName:"",
          sourceType:2
        },
        queryParam: {
          pageNum :1,
          pageSize:9999999,
        },
        dataTypedataSources: [],
        dataSource:[
        ],
        columns: [
          {
            title: '#',
            dataIndex: '',
            key:'id',
            width:60,
            align:"id",
            customRender:function (t,r,index) {
              return parseInt(index)+1;
            }
          },
          {
            title: '表名',
            align:"center",
            dataIndex: 'tableName',
          },
          {
            title: '报文名',
            align:"center",
            dataIndex: 'tableMessName'
          },
          {
            title: '开始时间',
            align:"center",
            dataIndex: 'startTime'
          },
          {
            title: '最后更新时间',
            align:"center",
            dataIndex: 'endTime'
          },
          {
            title: '标签类型',
            align:"center",
            dataIndex: 'tagNames'
          },
        ],
      }
    },
    mounted() { 
          //初始化websocket
          this.initWebSocket()
          this.getselect()
    },
    computed: {
    },
    destroyed: function () { // 离开页面生命周期函数
      var userId = store.getters.userInfo.id;
      this.websock.send("close_"+userId);
      this.websocketclose();
    },
    created () {

    },
    methods: {
      initWebSocket: function () {
        // WebSocket与普通的请求所用协议有所不同，ws等同于http，wss等同于https
        var userId = store.getters.userInfo.id;
        var url = window._CONFIG['domianURL'].replace("https://","ws://").replace("http://","ws://")+"/websocket/"+userId+"/data_distribute";
        this.websock = new WebSocket(url);
        this.websock.onopen = this.websocketonopen;
        this.websock.onerror = this.websocketonerror;
        this.websock.onmessage = this.websocketonmessage;
        this.websock.onclose = this.websocketclose;
      },
      websocketonopen: function () {
        this.contentList.unshift("消息服务连接成功");
      },
      websocketonerror: function (e) {
        this.contentList.unshift("消息服务连接失败"+JSON.stringify(e));
      },
      websocketonmessage: function (e) {
        var data = eval("(" + e.data + ")"); 
        console.log(data);
          //处理订阅信息
        if(data.content.length >0){
          this.contentList.unshift(data.content);
        }
        if(data.currProgress != null){
          this.percent = data.currProgress;
        }
      },
      websocketclose: function (e) {
        console.log("connection closed (" + e + ")");
      },
      dataAdd(){
        getAction("/dataSpecial/special").then((res) => {
            if (res.success) {
                this.$message.success(res.message);
            }
        });
      },
      getselect(){
        dataTypePageList(this.queryParam).then((res) => {
            if (res.success) {
                this.dataTypedataSources = res.result.rows||res.result;
                this.datatypequeryParam.schemaName = res.result.rows[0].cnName
                this.getTables();
            } else {
                this.$message.warning(res.message);
            }
        });
      },
      getTables(){
        getAction("/dataManager/getDataManagerInfo",this.datatypequeryParam).then((res) => {
            if (res.result) {
              this.dataSource = res.result;
            } else {
                this.$message.warning(res.message);
            }
        });
      },
    }
  }
</script>
<style scoped>
  @import '~@assets/less/common.less';
</style>