大家好,我是陈杨。终于有时间来分享一些技术文章了,自从 McCharts 组件上线第一期之后,就开始忙碌鸿蒙创新赛与极客马拉松比赛。在比赛的过程一直收到很多Issues,但是由于腾不出时间来维护,导致大家以为我们不维护了。在这里给大家说一声对不起。现在两个比赛都结束了,刚好鸿蒙推出全新的 HarmonyOS NEXT 版本,我们也是第一时间投入开发,将所有Issues全部解决,上架 2.0 版本,完美适配鸿蒙最新的版本。

顺便分享一下这次比赛的经历,这次比赛我们是以个人小队去参与的,一边自学一边开发,最后也闯入了决赛,与各方大佬进行最终决斗。虽然最后输了,但是学习了很多东西,也对自己的一些不足进行总结,后面我也会专门写一篇经验分享与总结的文章。

image.png

来看看我们这次主要修复和更新了哪些内容?也会跟大家讲一下小伙伴遇到的一些开发工具版本的问题。
修复
先讲一下修复了哪些问题:

● 修复 Tooltip 中的 app.float.xxxx 资源引用不到,编译不通过的问题
● 修复设置自定义属性必须要把属性写全,否则会丢失默认值的问题
● 修复折线图设置 x 轴的 label 和刻度尺的时候,会导致 x 轴的文本不显示出来的问题
● 修复折线图 x 轴的 data 设置为 number 类型的数组会报错的问题
● 修复 series 的 data 数据类型定义错误的问题
● 修复 @state defOptions: Options = new Options({})时会报错
● 修复不显示 tooltip 情况下点击扇区报错的问题
● 修复柱状图 X 轴文本没有和图对齐的问题

这里大部分的原因主要是一期考虑数据处理的时候,没有考虑到覆盖的问题。还有就是数据类型定义的不是很全面,这次也是着重检查了一遍。欢迎大家提出的问题,后续我们也会及时修复。
更新
来看一下我们这次更新了哪些功能:

● 新增折线图支持设置平滑曲线

// 示例代码
import { McLineChart, Options, chartInterface } from '@mcui/mccharts'

@Entry
@Component
struct Index {
  @State seriesOption: Options = new Options({
      xAxis:{
        data: ['周一','周二','周三','周四','周五','周六','周日'] // 数据
      },
      series:[
        {
          // 平滑曲线
          smooth: true,
          data:[11, 11, 15, 13, 12, 130, 10] // 数据
        }
      ]
  })
  build() {
    Row() {
      McLineChart({
        options: this.seriesOption
      })
    }
    .height('50%')
  }
}

● 新增 X 轴文本支持设置直接截断与换行

// 示例代码
import { McLineChart, Options } from '@mcui/mccharts'

@Entry
@Component
struct Index {
  @State xAxisDefOption: Options = new Options({
    title: {
      show: true,
      text: 'xAxis属性',
      right: 20,
      top: 30
    },
    color: ['#53e075'],
    xAxis:{
      axisLabel: {
        overflow: 'breakAll', // 换行
        width: '30px'
      },
      data: ['周一','周二','周三','周四','周五','周六','周日'] // 数据
    },
    series: [
      {
        name: '最高气温',
        data: [11, 11, 15, 13, 12, 13, 10]
      }
    ]
  })
  build() {
    Row() {
      McLineChart({
        options: this.xAxisOption
      })
    }
    .height('50%')
  }
}

● 新增 X 轴动态设置间隔显示文本标签

// 示例代码
import { McLineChart, Options } from '@mcui/mccharts'

@Entry
@Component
struct Index {
  @State xAxisDefOption: Options = new Options({
    title: {
      show: true,
      text: 'xAxis属性',
      right: 20,
      top: 30
    },
    color: ['#53e075'],
    xAxis:{
      axisLabel: {
        interval: 0, // 不间隔显示,全部显示
      },
      data: ['周一','周二','周三','周四','周五','周六','周日'] // 数据
    },
    series: [
      {
        name: '最高气温',
        data: [11, 11, 15, 13, 12, 13, 10]
      }
    ]
  })
  build() {
    Row() {
      McLineChart({
        options: this.xAxisOption
      })
    }
    .height('50%')
  }
}

● 新增 X 轴支持设置滚动模式

// 示例代码
import { McLineChart, Options, chartInterface } from '@mcui/mccharts'

@Entry
@Component
struct Index {
  @State dataZoomOption: Options = new Options({
    xAxis:{
      data: ['周一','周二','周三','周四','周五','周六','周日',
       '周一','周二','周三','周四','周五','周六','周日'] // 数据
    },
    dataZoom: {
      show: true,
      start: 3,
      end: 8
    },
    series: [
      {
        name: '最高气温',
        data: [11, 110, 15, 130, 12, 130, 10]
      }
    ]
  })
  build() {
    Row() {
      McLineChart({
        options: this.dataZoomOption
      })
    }
    .height('50%')
  }
}

● 新增 X 轴支持设置文本与轴线的距离

// 示例代码
import { McLineChart, Options } from '@mcui/mccharts'

@Entry
@Component
struct Index {
  @State xAxisDefOption: Options = new Options({
    title: {
      show: true,
      text: 'xAxis属性',
      right: 20,
      top: 30
    },
    color: ['#53e075'],
    xAxis:{
      axisLabel: {
        margin: 10, // 不间隔显示,全部显示
      },
      data: ['周一','周二','周三','周四','周五','周六','周日'] // 数据
    },
    series: [
      {
        name: '最高气温',
        data: [11, 11, 15, 13, 12, 13, 10]
      }
    ]
  })
  build() {
    Row() {
      McLineChart({
        options: this.xAxisOption
      })
    }
    .height('50%')
  }
}

● 新增 Y 轴支持设置名称与轴线的距离


import { McLineChart, Options } from '@mcui/mccharts'

@Entry
@Component
struct Index {
  @State yAxisOption: Options = new Options({
      xAxis:{
        data: ['周一','周二','周三','周四','周五','周六','周日'] // 数据
      },
      yAxis:{
        name: '单位/摄氏度', // 坐标名称
        nameGap: 10,
      },
      series:[
        {
          name:'最高气温',
          data:[11, 11, 15, 13, 12, 130, 10]
        }
      ]
  })
  build() {
    Row() {
      McLineChart({
        options: this.yAxisOption
      })
    }
    .height('50%')
  }
}

● 等等内容,更多的可以查看官网

这次主要的更新点是 x 轴滚动模式、折线图平滑曲线展示、自定义提示层、饼图新增设置 title 功能。这些功能都是在 E charts 比较常见的,所以我们也是会第一时间去实现。可以看一下我们的示例图:

以上就是这次版本的更新内容了。我们也规划了一些功能,在后续时间里面逐步去完成相关功能的开发,大家可以不用怕我们不维护哈。
官网更新
不光光这次组件更新了,我们也对官网进行了更新。以前的官网的模式是讲解属性功能,加一张静态图片跟示例代码,详细的属性介绍会放在最下面,可能会导致用户不知道怎么使用。所以我们这次换成了功能讲解+动态图+示例代码+详细属性讲解作为一个模块,不会分开展示,让你们使用起来更加方便。下面简单看一下演示视频:

大家也可以自己体验一下。记得给我们一个小小的star!!!

官方文档地址:http://meichuangit.net.cn/

Github地址:https://github.com/Yuan-Mr/mcCharts

总结
这次的分享就到此为止了,开发这个组件目的还是希望大家能够轻松迁移 Echarts 或者开发图表功能。而开源是更好的跟大家一起学习,我们也会坚持下去。谢谢大家在使用的过程中提出你们宝贵的意见,有兴趣的可以加入我们的组件技术交流群。

在未来我们也会分享更多的工具案例,有免费使用的案例,也有付费的案例,打造一个全面的鸿蒙生态。也欢迎大家加入鸿蒙开发,体验自己国产的操作系统,这也是一件值得骄傲的事情。


Chen_Mr
0 声望1 粉丝