ionic4 + Angular7 使用echarts创建日历图,并添加点击事件

12 篇文章 0 订阅
3 篇文章 0 订阅

1.安装echarts

npm install echarts --save
npm install ngx-echarts --save

2.angular.json引入   echarts.min.js

"build": {
    "options": {
        ...
        "scripts": ["node_modules/echarts/dist/echarts.min.js"]
        ...
    }
}

3.app.module.ts 引入 NgxEchartsModule

import {NgxEchartsModule} from 'ngx-echarts';

@NgModule({
    imports: [
        ...
        NgxEchartsModule,
        ...
    ],
    declarations: []
})

4.echarts.component.html

<div echarts [options]="option" class="echarts" id="main"></div>

5.echarts.component.ts

import {Component, ElementRef, OnInit, SimpleChanges} from '@angular/core';
const echarts = require('echarts');

@Component({
    selector: 'app-echarts',
    templateUrl: './echarts.component.html',
    styleUrls: ['./echarts.component.scss'],
})

export class EchartsComponent implements OnInit {
    option;
    my_chart;
    data = [
        ['2019-1-1', '初四'],
        ['2019-1-2', '初五'],
        ['2019-1-3', '初六'],
        ['2019-1-4', '初七'],
        ['2019-1-5', '初八', '小寒'],
        ['2019-1-6', '初九'],
        ['2019-1-7', '初十'],
        ['2019-1-8', '十一'],
        ['2019-1-9', '十二'],
        ['2019-1-10', '十三'],
        ['2019-1-11', '十四'],
        ['2019-1-12', '十五'],
        ['2019-1-13', '十六'],
        ['2019-1-14', '十七'],
        ['2019-1-15', '十八'],
        ['2019-1-16', '十九'],
        ['2019-1-17', '二十'],
        ['2019-1-18', '廿一'],
        ['2019-1-19', '廿二'],
        ['2019-1-20', '廿三', '大寒'],
        ['2019-1-21', '廿四'],
        ['2019-1-22', '廿五'],
        ['2019-1-23', '廿六'],
        ['2019-1-24', '廿七'],
        ['2019-1-25', '廿八'],
        ['2019-1-26', '廿九'],
        ['2019-1-27', '三十'],
        ['2019-1-28', '正月'],
        ['2019-1-29', '初二'],
        ['2019-1-30', '初三'],
        ['2019-1-31', '初四'],
        ['2019-2-1', '初五'],
        ['2019-2-2', '初六'],
        ['2019-2-3', '初七', '立春'],
        ['2019-2-4', '初八'],
        ['2019-2-5', '初九'],
        ['2019-2-6', '初十'],
        ['2019-2-7', '十一'],
        ['2019-2-8', '十二'],
        ['2019-2-9', '十三'],
        ['2019-2-10', '十四'],
        ['2019-2-11', '十五'],
        ['2019-2-12', '十六'],
        ['2019-2-13', '十七'],
        ['2019-2-14', '十八'],
        ['2019-2-15', '十九'],
        ['2019-2-16', '二十'],
        ['2019-2-17', '廿一'],
        ['2019-2-18', '廿二', '雨水'],
        ['2019-2-19', '廿三'],
        ['2019-2-20', '廿四'],
        ['2019-2-21', '廿五'],
        ['2019-2-22', '廿六'],
        ['2019-2-23', '廿七'],
        ['2019-2-24', '廿八'],
        ['2019-2-25', '廿九'],
        ['2019-2-26', '二月'],
        ['2019-2-27', '初二'],
        ['2019-2-28', '初三'],
        ['2019-3-1', '初四'],
        ['2019-3-2', '初五'],
        ['2019-3-3', '初六'],
        ['2019-3-4', '初七'],
        ['2019-3-5', '初八', '驚蟄'],
        ['2019-3-6', '初九'],
        ['2019-3-7', '初十'],
        ['2019-3-8', '十一'],
        ['2019-3-9', '十二'],
        ['2019-3-10', '十三'],
        ['2019-3-11', '十四'],
        ['2019-3-12', '十五'],
        ['2019-3-13', '十六'],
        ['2019-3-14', '十七'],
        ['2019-3-15', '十八'],
        ['2019-3-16', '十九'],
        ['2019-3-17', '二十'],
        ['2019-3-18', '廿一'],
        ['2019-3-19', '廿二'],
        ['2019-3-20', '廿三', '春分'],
        ['2019-3-21', '廿四'],
        ['2019-3-22', '廿五'],
        ['2019-3-23', '廿六'],
        ['2019-3-24', '廿七'],
        ['2019-3-25', '廿八'],
        ['2019-3-26', '廿九'],
        ['2019-3-27', '三十'],
        ['2019-3-28', '三月'],
        ['2019-3-29', '初二'],
        ['2019-3-30', '初三'],
        ['2019-3-31', '初四'],
        ['2019-4-1', '初五'],
        ['2019-4-2', '初六'],
        ['2019-4-3', '初七'],
        ['2019-4-4', '初八', '清明'],
        ['2019-4-5', '初九'],
        ['2019-4-6', '初十'],
        ['2019-4-7', '十一'],
        ['2019-4-8', '十二'],
        ['2019-4-9', '十三'],
        ['2019-4-10', '十四'],
        ['2019-4-11', '十五'],
        ['2019-4-12', '十六'],
        ['2019-4-13', '十七'],
        ['2019-4-14', '十八'],
        ['2019-4-15', '十九'],
        ['2019-4-16', '二十'],
        ['2019-4-17', '廿一'],
        ['2019-4-18', '廿二'],
        ['2019-4-19', '廿三'],
        ['2019-4-20', '廿四', '穀雨'],
        ['2019-4-21', '廿五'],
        ['2019-4-22', '廿六'],
        ['2019-4-23', '廿七'],
        ['2019-4-24', '廿八'],
        ['2019-4-25', '廿九'],
        ['2019-4-26', '四月'],
        ['2019-4-27', '初二'],
        ['2019-4-28', '初三'],
        ['2019-4-29', '初四'],
        ['2019-4-30', '初五'],
        ['2019-5-1', '初六'],
        ['2019-5-2', '初七'],
        ['2019-5-3', '初八'],
        ['2019-5-4', '初九'],
        ['2019-5-5', '初十', '立夏'],
        ['2019-5-6', '十一'],
        ['2019-5-7', '十二'],
        ['2019-5-8', '十三'],
        ['2019-5-9', '十四'],
        ['2019-5-10', '十五'],
        ['2019-5-11', '十六'],
        ['2019-5-12', '十七'],
        ['2019-5-13', '十八'],
        ['2019-5-14', '十九'],
        ['2019-5-15', '二十'],
        ['2019-5-16', '廿一'],
        ['2019-5-17', '廿二'],
        ['2019-5-18', '廿三'],
        ['2019-5-19', '廿四'],
        ['2019-5-20', '廿五'],
        ['2019-5-21', '廿六', '小滿'],
        ['2019-5-22', '廿七'],
        ['2019-5-23', '廿八'],
        ['2019-5-24', '廿九'],
        ['2019-5-25', '三十'],
        ['2019-5-26', '五月'],
        ['2019-5-27', '初二'],
        ['2019-5-28', '初三'],
        ['2019-5-29', '初四'],
        ['2019-5-30', '初五'],
        ['2019-5-31', '初六'],
        ['2019-6-1', '初七'],
        ['2019-6-2', '初八'],
        ['2019-6-3', '初九'],
        ['2019-6-4', '初十'],
        ['2019-6-5', '十一', '芒種'],
        ['2019-6-6', '十二'],
        ['2019-6-7', '十三'],
        ['2019-6-8', '十四'],
        ['2019-6-9', '十五'],
        ['2019-6-10', '十六'],
        ['2019-6-11', '十七'],
        ['2019-6-12', '十八'],
        ['2019-6-13', '十九'],
        ['2019-6-14', '二十'],
        ['2019-6-15', '廿一'],
        ['2019-6-16', '廿二'],
        ['2019-6-17', '廿三'],
        ['2019-6-18', '廿四'],
        ['2019-6-19', '廿五'],
        ['2019-6-20', '廿六'],
        ['2019-6-21', '廿七', '夏至'],
        ['2019-6-22', '廿八'],
        ['2019-6-23', '廿九'],
        ['2019-6-24', '六月'],
        ['2019-6-25', '初二'],
        ['2019-6-26', '初三'],
        ['2019-6-27', '初四'],
        ['2019-6-28', '初五'],
        ['2019-6-29', '初六'],
        ['2019-6-30', '初七'],
        ['2019-7-1', '初八'],
        ['2019-7-2', '初九'],
        ['2019-7-3', '初十'],
        ['2019-7-4', '十一'],
        ['2019-7-5', '十二'],
        ['2019-7-6', '十三'],
        ['2019-7-7', '十四', '小暑'],
        ['2019-7-8', '十五'],
        ['2019-7-9', '十六'],
        ['2019-7-10', '十七'],
        ['2019-7-11', '十八'],
        ['2019-7-12', '十九'],
        ['2019-7-13', '二十'],
        ['2019-7-14', '廿一'],
        ['2019-7-15', '廿二'],
        ['2019-7-16', '廿三'],
        ['2019-7-17', '廿四'],
        ['2019-7-18', '廿五'],
        ['2019-7-19', '廿六'],
        ['2019-7-20', '廿七'],
        ['2019-7-21', '廿八'],
        ['2019-7-22', '廿九', '大暑'],
        ['2019-7-23', '閏六',],
        ['2019-7-24', '初二'],
        ['2019-7-25', '初三'],
        ['2019-7-26', '初四'],
        ['2019-7-27', '初五'],
        ['2019-7-28', '初六'],
        ['2019-7-29', '初七'],
        ['2019-7-30', '初八'],
        ['2019-7-31', '初九'],
        ['2019-8-1', '初十'],
        ['2019-8-2', '十一'],
        ['2019-8-3', '十二'],
        ['2019-8-4', '十三'],
        ['2019-8-5', '十四'],
        ['2019-8-6', '十五'],
        ['2019-8-7', '十六', '立秋'],
        ['2019-8-8', '十七'],
        ['2019-8-9', '十八'],
        ['2019-8-10', '十九'],
        ['2019-8-11', '二十'],
        ['2019-8-12', '廿一'],
        ['2019-8-13', '廿二'],
        ['2019-8-14', '廿三'],
        ['2019-8-15', '廿四'],
        ['2019-8-16', '廿五'],
        ['2019-8-17', '廿六'],
        ['2019-8-18', '廿七'],
        ['2019-8-19', '廿八'],
        ['2019-8-20', '廿九'],
        ['2019-8-21', '三十'],
        ['2019-8-22', '七月'],
        ['2019-8-23', '初二', '處暑'],
        ['2019-8-24', '初三'],
        ['2019-8-25', '初四'],
        ['2019-8-26', '初五'],
        ['2019-8-27', '初六'],
        ['2019-8-28', '初七'],
        ['2019-8-29', '初八'],
        ['2019-8-30', '初九'],
        ['2019-8-31', '初十'],
        ['2019-9-1', '十一'],
        ['2019-9-2', '十二'],
        ['2019-9-3', '十三'],
        ['2019-9-4', '十四'],
        ['2019-9-5', '十五'],
        ['2019-9-6', '十六'],
        ['2019-9-7', '十七', '白露'],
        ['2019-9-8', '十八'],
        ['2019-9-9', '十九'],
        ['2019-9-10', '二十'],
        ['2019-9-11', '廿一'],
        ['2019-9-12', '廿二'],
        ['2019-9-13', '廿三'],
        ['2019-9-14', '廿四'],
        ['2019-9-15', '廿五'],
        ['2019-9-16', '廿六'],
        ['2019-9-17', '廿七'],
        ['2019-9-18', '廿八'],
        ['2019-9-19', '廿九'],
        ['2019-9-20', '八月'],
        ['2019-9-21', '初二'],
        ['2019-9-22', '初三'],
        ['2019-9-23', '初四', '秋分'],
        ['2019-9-24', '初五'],
        ['2019-9-25', '初六'],
        ['2019-9-26', '初七'],
        ['2019-9-27', '初八'],
        ['2019-9-28', '初九'],
        ['2019-9-29', '初十'],
        ['2019-9-30', '十一'],
        ['2019-10-1', '十二'],
        ['2019-10-2', '十三'],
        ['2019-10-3', '十四'],
        ['2019-10-4', '十五'],
        ['2019-10-5', '十六'],
        ['2019-10-6', '十七'],
        ['2019-10-7', '十八'],
        ['2019-10-8', '十九', '寒露'],
        ['2019-10-9', '二十'],
        ['2019-10-10', '廿一'],
        ['2019-10-11', '廿二'],
        ['2019-10-12', '廿三'],
        ['2019-10-13', '廿四'],
        ['2019-10-14', '廿五'],
        ['2019-10-15', '廿六'],
        ['2019-10-16', '廿七'],
        ['2019-10-17', '廿八'],
        ['2019-10-18', '廿九'],
        ['2019-10-19', '三十'],
        ['2019-10-20', '九月'],
        ['2019-10-21', '初二'],
        ['2019-10-22', '初三'],
        ['2019-10-23', '初四', '霜降'],
        ['2019-10-24', '初五'],
        ['2019-10-25', '初六'],
        ['2019-10-26', '初七'],
        ['2019-10-27', '初八'],
        ['2019-10-28', '初九'],
        ['2019-10-29', '初十'],
        ['2019-10-30', '十一'],
        ['2019-10-31', '十二'],
        ['2019-11-1', '十三'],
        ['2019-11-2', '十四'],
        ['2019-11-3', '十五'],
        ['2019-11-4', '十六'],
        ['2019-11-5', '十七'],
        ['2019-11-6', '十八'],
        ['2019-11-7', '十九', '立冬'],
        ['2019-11-8', '二十'],
        ['2019-11-9', '廿一'],
        ['2019-11-10', '廿二'],
        ['2019-11-11', '廿三'],
        ['2019-11-12', '廿四'],
        ['2019-11-13', '廿五'],
        ['2019-11-14', '廿六'],
        ['2019-11-15', '廿七'],
        ['2019-11-16', '廿八'],
        ['2019-11-17', '廿九'],
        ['2019-11-18', '十月'],
        ['2019-11-19', '初二'],
        ['2019-11-20', '初三'],
        ['2019-11-21', '初四'],
        ['2019-11-22', '初五', '小雪'],
        ['2019-11-23', '初六'],
        ['2019-11-24', '初七'],
        ['2019-11-25', '初八'],
        ['2019-11-26', '初九'],
        ['2019-11-27', '初十'],
        ['2019-11-28', '十一'],
        ['2019-11-29', '十二'],
        ['2019-11-30', '十三'],
        ['2019-12-1', '十四'],
        ['2019-12-2', '十五'],
        ['2019-12-3', '十六'],
        ['2019-12-4', '十七'],
        ['2019-12-5', '十八'],
        ['2019-12-6', '十九'],
        ['2019-12-7', '二十', '大雪'],
        ['2019-12-8', '廿一'],
        ['2019-12-9', '廿二'],
        ['2019-12-10', '廿三'],
        ['2019-12-11', '廿四'],
        ['2019-12-12', '廿五'],
        ['2019-12-13', '廿六'],
        ['2019-12-14', '廿七'],
        ['2019-12-15', '廿八'],
        ['2019-12-16', '廿九'],
        ['2019-12-17', '三十'],
        ['2019-12-18', '十一月',],
        ['2019-12-19', '初二'],
        ['2019-12-20', '初三'],
        ['2019-12-21', '初四'],
        ['2019-12-22', '初五', '冬至'],
        ['2019-12-23', '初六'],
        ['2019-12-24', '初七'],
        ['2019-12-25', '初八'],
        ['2019-12-26', '初九'],
        ['2019-12-27', '初十'],
        ['2019-12-28', '十一'],
        ['2019-12-29', '十二'],
        ['2019-12-30', '十三'],
        ['2019-12-31', '十四']
    ];

    constructor(private el: ElementRef) {}

    ngOnInit() {
        this.my_chart = echarts.init(this.el.nativeElement.querySelector('#main'));

        // 点击日历上的号数,触发的事件
        this.my_chart.on('click', (params) => {
            this.my_chart.setOption(this.option);
        });
    }

    echarts(){
        const heatmapData = [];
        const lunarData = [];
        for (let i = 0; i < this.data.length; i++) {
            heatmapData.push([
                this.data[i][0],
                Math.random() * 300
            ]);
            lunarData.push({
                value:[this.data[i][0],1,this.data[i][1],this.data[i][2] ],
                symbol:'rect', // 核心1,这边长方形来填充
                itemStyle:{
                    color:'rgba(0,0,0,0)',  // 填充色颜色
                    borderColor : '#ff4546', // 选中,边框颜色
                },
            });
        }

        this.option = {
            tooltip: {
                formatter(params) {
                    return '降雨量: ' + params.value[1].toFixed(2);
                }
            },

            visualMap: {
                show: true,
                min: 0,
                max: 300,
                calculable: true,
                seriesIndex: [2],
                orient: 'horizontal',
                left: 'center',
                bottom: 20,
                inRange: {
                    color: ['#e0ffff', '#006edd'],
                    opacity: 0.3
                },
                controller: {
                    inRange: {
                        opacity: 0.5
                    }
                }
            },

            calendar: [{
                left: 'center',
                top: 'middle',
                cellSize: ['auto', 55],
                yearLabel: {show: true},
                orient: 'vertical',
                dayLabel: {
                    firstDay: 1,
                    // nameMap: 'cn',
                    nameMap: ['周日','周一','周二','周三','周四','周五','周六'],
                    margin: 0, // 星期标签与轴线之间的距离
                    padding: [15,22,15,22],
                    /*backgroundColor: '#FAFAFA', // 可以是直接的颜色值,例如:'#123234', 'red', rgba(0,23,11,0.3)'
                    color : '#85807C',*/
                },
                monthLabel: {show: false},
                range: this.range,
                itemStyle: {
                    borderColor:'#F0F0F0'
                },
                splitLine : {
                    show:false
                }
            }],

            series: [
                {
                    type: 'scatter',
                    coordinateSystem: 'calendar',
                    symbolSize: (e)=> {
                        // console.log(e);
                        if (e[0] === this.current_day) {
                            return [50,55];
                        } else {
                            return 1;
                        }
                    },
                    label: {
                        normal: {
                            show: true,
                            formatter(params) {
                                const d = echarts.number.parseDate(params.value[0]);
                                return d.getDate() + '\n\n'+params.value[2] + '\n\n'
                            },
                            textStyle: {
                                color: '#000'
                            }
                        }
                    },
                    data: lunarData
                },
                {
                    type: 'scatter',
                    coordinateSystem: 'calendar',
                    symbolSize: 1,
                    label: {
                        normal: {
                            show: true,
                            formatter(params) {
                                return '\n\n' + (params.value[3] || '');
                            },
                            textStyle: {
                                fontSize: 12,
                                fontWeight: 700,
                                color: '#a00'
                            }
                        }
                    },
                    data: lunarData
                },
                {
                    name: '降雨量',
                    type: 'heatmap',
                    coordinateSystem: 'calendar',
                    data: heatmapData,
                }
            ]
        };
    }
    
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值