0.1.13 • Published 12 months ago

hp-2 v0.1.13

Weekly downloads
-
License
MIT
Repository
-
Last release
12 months ago

hp-2

数据可视化组件

Build Setup

安装 hp-2 组件,npm i hp-2

Using Setup

该组件输入的数据格式

{
  data: [ // 图表数据
    {
      em_wave_length: '590',
      ex_wave_length: '560',
      sample_name: "MeasureingSample",
      size: [8,12],
      start_time: "05:18:07",
      end_time: "05:18:07",
      wavelengthMeasurement: '',
      value: [{
        x: 'A',
        y: '1',
        value: 77
      },
      {
        x: 'A',
        y: '2',
        value: 99
      },
      ...]
    },
    ...
  ],
  width: '250px', // 图表宽度
  height: '330px' // 图表高度
}

在需要的页面中引入组件

<template>
    <g2p-com :datasource="heatmapDatasource" />
</template>

<script>
import g2pCom from 'hp-2/src/packages/g2pCom/index.vue'

export default{
  data() {
    return {
      // heatmapData为数据导入后赋予的变量,这里的require('../src/assets/data.json')可忽略
      heatmapData: require('../src/assets/data.json'),
      heatmapDatasource: {}
    }
  },
  methods: {
    handleData(data) {
      console.log('🚀 ~ file: visualDialog.vue:74 ~ handleData ~ dataSource:', dataSource)
      const result = [] // 结果数组
      const { typeName, objectValue } = dataSource // 解构获取 typeName 和 objectValue
      console.log('🚀 ~ file: visualDialog.vue:77 ~ handleData ~ objectValue:', objectValue)

      let data
      let errorInfo = ''

      try {
        data = objectValue // 将 objectValue 转为 JSON 格式并赋值给 data 变量
      } catch (e) {
        data = ''
        console.error(e)
        errorInfo = 'notJSON'
      }

      // 处理数据的函数,将数组转换为展示所需的格式
      const processData = single => {
        return Array.isArray(single) // 如果是数组
          ? single.flatMap((item, i) =>
              Array.isArray(item)
                ? item.map((val, j) => ({
                    x: `${j + 1}`,
                    y: String.fromCharCode(i + 65),
                    value: val === true ? 1 : val === false ? 0 : val
                  }))
                : {
                    x: 1 + '',
                    y: String.fromCharCode(i + 65),
                    value: item === true ? 1 : item === false ? 0 : item
                  }
            ) // 返回转换后的数组格式
          : single // 否则返回原本的数据
      }

      // 处理 generalDataMatrix 数据的函数
      const processGeneralDataMatrix = single => {
        const singleitem = {
          // 定义要返回的对象
          sample_name: single && single.sample_name ? single.sample_name : '', // 样品名称
          size: single && single.size ? single.size : '', // 尺寸
          em_wave_length: '', // 发射波长
          ex_wave_length: '', // 激发波长
          wavelengthMeasurement: '', // 波长测量
          value:
            single && single.value
              ? single.value.flatMap((item, i) =>
                  item
                    ? Array.isArray(item)
                      ? item.map((val, j) => ({
                          x: `${j + 1}`,
                          y: String.fromCharCode(i + 65),
                          value: single.mask[i][j] === 0 ? null : this.formatNumber(val)
                        }))
                      : {
                          x: 1 + '',
                          y: String.fromCharCode(i + 65),
                          value: single.mask[i][j] === 0 ? null : this.formatNumber(item)
                        }
                    : []
                )
              : [], // 转换后的数据
          start_time: '', // 开始时间
          end_time: '' // 结束时间
        }

        const processTimeString = timeString => {
          return timeString.split(' ')[1] || ''
        }

        single &&
          single.method &&
          single.method.split(',').forEach(item => {
            // 遍历 method 字符串
            if (item.includes('EmissionModeWavelength')) {
              // 如果包含发射波长
              singleitem.em_wave_length = item.split(':')[1] // 将发射波长赋值给对象的 em_wave_length 属性
            }
            if (item.includes('ExcitationModeWavelength')) {
              // 如果包含激发波长
              singleitem.ex_wave_length = item.split(':')[1] // 将激发波长赋值给对象的 ex_wave_length 属性
            }
            if (item.includes('WavelengthMeasurement')) {
              // 如果包含波长测量
              singleitem.wavelengthMeasurement = item.split(':')[1] // 将波长测量赋值给对象的 wavelengthMeasurement 属性
            }
          })

        // 将 start_time 字符串分割取第二个元素并赋值给对象的 start_time 属性
        singleitem.start_time = single && single.start_time ? processTimeString(single.start_time) : ''
        // 将 end_time 字符串分割取第二个元素并赋值给对象的 end_time 属性
        singleitem.end_time = single && single.end_time ? processTimeString(single.end_time) : ''

        return singleitem // 返回转换后的对象
      }

      if (data) {
        switch (typeName) {
          case 'generalDataMatrix':
            result.push(processGeneralDataMatrix(data))
            break
          case 'array':
            result.push({ value: processData(data) })
            break
          default:
            data.forEach(single => {
              const value = single.sample_name === undefined ? processData(single) : processGeneralDataMatrix(single)
              result.push(value)
            })
            break
        }
      }

      const params = {
        width: '370px',
        height: '360px',
        typeName,
        data: result,
        errorInfo,
        initValue: data,
        backgroundColor: 'black',
        fontColor: 'white',
        lang: 'en_CN' // 'en_US' or 'zh_CN
      }
      this.heatmapDatasource = params
    }
  },
  created() {
    this.handleData(this.heatmapData)
  },
  components: {
    g2pCom
  }
}
</script>

For detailed explanation on how things work, consult the docs for vue-loader.

What's Changed

0.1.13:
1、fix:优化tooltip对齐方式

0.1.12:
1、fix:优化国际化

0.1.11:
1、fix:优化数据[1,2,3,4]的展示
2、fix:优化深色主题下,色卡选中后不明显的问题
3、fix:深色主题下,下载的热力图色卡名称与色卡翻页显示不出来
4、fix:深色主题下,暂无数据与数据错误显示与原型不一致
5、fix:384孔板测量的generalDataMatrix类型数据查看显示与原型不一致
6、fix:优化查看趋势图中多色卡的效果

0.1.10:
1、fix:优化更多异常数据格式的处理
2、fix:优化背景为暗色系时,趋势图线条高亮不明显

0.1.8:
1、fix:优化异常数据的判断
2、fix:优化趋势图中文件下载的文件名

0.1.7:
1、fix:优化空数据传入时报错的问题
2、fix:优化框选热力图时,出现跳动的问题
3、fix:优化数据展示的有效位数
4、fix:重新展示物料名称
5、fix:优化空样本展示的逻辑
6、fix:修改复制完整数据的操作
7、fix:优化色卡翻页太靠边问题
8、fix:修改数据处理逻辑:在数组转换转换中添加数据格式转换

0.1.5:
1、fix:修改进入趋势图的条件
2、fix:修改图片为svg

0.1.1:
1、fix:优化下方信息栏中在中文模式和英文模式下的位置和文本

0.1.0:
1、fix:优化热力图框选的颜色
2、fix:优化趋势图对称问题
3、fix:优化没有数据和数据错误时的提示效果
4、fix:优化黑夜模式下趋势图图例不明显的问题
5、fix:数据格式错误检查
6、fix:优化复制值功能的按钮位置和功能
7、fix:取消标题
8、fix:优化趋势图触发条件和交互


0.0.28:
1、fix:优化“右键查看趋势图”和“查看趋势图”两个标签与激活的相对位置
2、fix:优化list中不同数据格式时触发趋势图的处理

0.0.27:
1、fix:适配输入数据类型

0.0.26:
1、fix:解决圆形孔和方形孔之间的转换
2、fix:适配 list、array 和 generalDataMatrix 三种数据格式的转换
3、fix:修改使用文档,更新了 data、methods 和 created 三个部分的代码

0.0.23:
1、update:调整高度后,图表保持垂直居中
2、update:禁止右键框选
3、fix:右键点击查看趋势的提示框位置偏移问题

0.0.21:
1、fix:折线图点击不明位置后翻页
2、fix:黑夜模式下坐标不清晰问题
3、调试黑夜模式和语言切换
0.1.10

12 months ago

0.1.11

12 months ago

0.1.12

12 months ago

0.1.13

12 months ago

0.1.8

12 months ago

0.1.7

12 months ago

0.1.9

12 months ago

0.1.6

1 year ago

0.1.5

1 year ago

0.1.4

1 year ago

0.1.3

1 year ago

0.1.2

1 year ago

0.1.1

1 year ago

0.1.0

1 year ago

0.0.28

1 year ago

0.0.27

1 year ago

0.0.26

1 year ago

0.0.25

1 year ago

0.0.24

1 year ago

0.0.23

1 year ago

0.0.22

1 year ago

0.0.21

1 year ago

0.0.20

1 year ago

0.0.19

1 year ago

0.0.18

1 year ago

0.0.17

1 year ago

0.0.16

1 year ago

0.0.15

1 year ago

0.0.14

1 year ago

0.0.13

1 year ago

0.0.12

1 year ago

0.0.11

1 year ago

0.0.10

1 year ago

0.0.9

1 year ago

0.0.8

1 year ago

0.0.7

1 year ago

0.0.6

1 year ago

0.0.5

1 year ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago