[ABI 5.2] canvas可以引进平台封装组件吗

11364
2

15253170099 数据达人Lv4

发表于2021-6-22 22:27

悬赏1

未解决

楼主

最近看过此主题的会员

yjh111

伶俐

15866325070

bbs

ESENSOFT官方技术支持

yangqh

果冻出场

2个回答

只看楼主

yangqh 数据老手Lv5

发表于2021-6-22 23:29

只看该作者

取消 关注该作者的回复

沙发

没明白什么意思,具体描述下需求?

15253170099 数据达人Lv4

发表于2021-6-23 09:01

只看该作者

取消 关注该作者的回复

板凳

yangqh 发表于 2021-6-22 23:29
没明白什么意思,具体描述下需求?

//将下边的编码封装成abi524组件使用 ,怎么封装,这边按照二次开发手册封装的不生效


const CubeLeft = echarts.graphic.extendShape({
            shape: {
                x: 0,
                y: 0,
            },
            buildPath: function (ctx, shape) {
                //中间柱子
                const xAxisPoint = shape.xAxisPoint;
                const c0 = [shape.x, shape.y - 4];
                const c1 = [shape.x - 15, shape.y - 8]; //左上
                const c2 = [xAxisPoint[0] - 15, xAxisPoint[1] - 5]; //左下
                const c3 = [xAxisPoint[0], xAxisPoint[1] - 1];
                ctx.moveTo(c0[0], c0[1]).lineTo(c1[0], c1[1]).lineTo(c2[0], c2[1]).lineTo(c3[0], c3[1]).closePath();
            },
        });
        const CubeRight = echarts.graphic.extendShape({
            shape: {
                x: 0,
                y: 0,
            },
            buildPath: function (ctx, shape) {
                const xAxisPoint = shape.xAxisPoint;
                const c1 = [shape.x, shape.y - 4];
                const c2 = [xAxisPoint[0] + 1, xAxisPoint[1] - 1]; //右矩形左下
                const c3 = [xAxisPoint[0] + 9, xAxisPoint[1] - 9]; //右下
                const c4 = [shape.x + 10, shape.y - 9]; //右上
                ctx.moveTo(c1[0], c1[1]).lineTo(c2[0], c2[1]).lineTo(c3[0], c3[1]).lineTo(c4[0], c4[1]).closePath();
            },
        });
        const CubeTop = echarts.graphic.extendShape({
            shape: {
                x: 0,
                y: 0,
            },
            buildPath: function (ctx, shape) {
                const c1 = [shape.x, shape.y - 4]; //bottom
                const c2 = [shape.x + 9, shape.y - 9]; //right
                const c3 = [shape.x - 2, shape.y - 13]; //top
                const c4 = [shape.x - 15, shape.y - 8]; //left
                ctx.moveTo(c1[0], c1[1]).lineTo(c2[0], c2[1]).lineTo(c3[0], c3[1]).lineTo(c4[0], c4[1]).closePath();
            },
        });
        echarts.graphic.registerShape('CubeLeft', CubeLeft);
        echarts.graphic.registerShape('CubeRight', CubeRight);
        echarts.graphic.registerShape('CubeTop', CubeTop);
        const MAX = [6000, 6000, 6000, 6000, 6000, 6000, 6000, 6000, 6000, 6000, 6000, 6000];
        const VALUE = [2012, 1230, 3790, 2349, 1654, 1230, 3790, 2349, 1654, 3790, 2349, 1654];
        const xdata=['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']
        option = {
            backgroundColor: '#010d27',
            title: {
                text: '',
                top: 32,
                left: 20,
                textStyle: {
                    color: '#00F6FF',
                    fontSize: 24,
                },
            },
            grid: {
                left: -10,
                right: 20,
                bottom: '40',
                top: 40,
                containLabel: true,
            },
            xAxis: {
                type: 'category',
                data: xdata,
                axisLine: {
                    show: false,
                    lineStyle: {
                        color: 'white', //x轴颜色
                    },
                },
                offset: 20, //x轴标签距离x轴距离
                axisTick: {
                    //刻度线
                    show: false,
                    length: 9,
                    alignWithLabel: true,
                    lineStyle: {
                        color: '#7DFFFD',
                    },
                },
                axisLabel: {
                    fontSize: 12, //x轴标签文字 大小
                },
            },
            yAxis: {
                type: 'value',
                axisLine: {
                    show: false,
                    lineStyle: {
                        color: 'white', //y轴颜色
                    },
                },
                splitLine: {
                    show: false, //网格
                },
                axisTick: {
                    show: false, //刻度
                },
                axisLabel: {
                    fontSize: 16, //y轴标签文字大小
                    color: 'transparent',
                },
                boundaryGap: ['10%', '10%'],
            },
            series: [
                {
                    type: 'custom', //色块
                    renderItem: function (params, api) {
                        const location = api.coord([api.value(0), api.value(1)]);
                        return {
                            type: 'group',
                            children: [
                                {
                                    type: 'CubeLeft',
                                    shape: {
                                        api,
                                        xValue: api.value(0),
                                        yValue: api.value(1),
                                        x: location[0],
                                        y: location[1],
                                        xAxisPoint: api.coord([api.value(0), 0]),
                                    },
                                    style: { stroke: '#39b8da', fill: 'rgba(1,178,245,.3)' },
                                },
                                {
                                    type: 'CubeRight',
                                    shape: {
                                        api,
                                        xValue: api.value(0),
                                        yValue: api.value(1),
                                        x: location[0],
                                        y: location[1],
                                        xAxisPoint: api.coord([api.value(0), 0]),
                                    },
                                    style: {
                                        stroke: '#39b8da',
                                        fill: 'rgba(1,178,245,.2)', //柱子右侧
                                    },
                                },
                                {
                                    type: 'CubeTop',
                                    shape: {
                                        api,
                                        xValue: api.value(0),
                                        yValue: api.value(1),
                                        x: location[0],
                                        y: location[1],
                                        xAxisPoint: api.coord([api.value(0), 0]),
                                    },
                                    style: {
                                        stroke: '#39b8da',
                                        fill: 'rgba(1,178,245,.3)', //顶
                                    },
                                },
                            ],
                        };
                    },
                    data: MAX,
                },
                {
                    type: 'custom',
                    renderItem: (params, api) => {
                        const location = api.coord([api.value(0), api.value(1)]);
                        return {
                            type: 'group',
                            children: [
                                {
                                    type: 'CubeLeft',
                                    shape: {
                                        api,
                                        xValue: api.value(0),
                                        yValue: api.value(1),
                                        x: location[0],
                                        y: location[1],
                                        xAxisPoint: api.coord([api.value(0), 0]),
                                    },
                                    style: {
                                        stroke: '#39b8da',
                                        fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                                            {
                                                offset: 0,
                                                color: '#0195ee', //color: '#3B80E2'
                                            },
                                            {
                                                offset: 1,
                                                color: 'rgb(2,70,118)', //'#49BEE5'
                                            },
                                        ]),
                                    },
                                },
                                {
                                    type: 'CubeRight',
                                    shape: {
                                        api,
                                        xValue: api.value(0),
                                        yValue: api.value(1),
                                        x: location[0],
                                        y: location[1],
                                        xAxisPoint: api.coord([api.value(0), 0]),
                                    },
                                    style: {
                                        stroke: '#0195ee',
                                        fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                                            {
                                                offset: 0,
                                                color: '#49BEE5',
                                            },
                                            {
                                                offset: 1,
                                                color: 'rgb(2,70,118)',
                                            },
                                        ]),
                                    },
                                },
                                {
                                    type: 'CubeTop',
                                    shape: {
                                        api,
                                        xValue: api.value(0),
                                        yValue: api.value(1),
                                        x: location[0],
                                        y: location[1],
                                        xAxisPoint: api.coord([api.value(0), 0]),
                                    },
                                    style: {
                                        stroke: '#39b8da', //底
                                        fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                                            {
                                                offset: 0,
                                                color: '#39b8da',
                                            },
                                            {
                                                offset: 1,
                                                color: '#39b8da',
                                            },
                                        ]),
                                    },
                                },
                            ],
                        };
                    },
                    data: VALUE,
                },
                {
                    type: 'bar',
                    label: {
                        normal: {
                            show: true,
                            position: 'top',
                            /* formatter: (e) => {
                            switch (e.name) {
                                case '10kV线路':
                                    return VALUE[0]
                                case '公用配变':
                                    return VALUE[1]
                                case '35kV主变':
                                    return VALUE[2]
                                case '水':
        
                            }
                        },*/
                            formatter: function (VALUE) {
                                return VALUE[3];
                            },
                            fontSize: 16,
                            color: '#fff',
                            offset: [4, -25],
                        },
                    }, // 4

                    itemStyle: {
                        color: 'transparent',
                    },
                    data: MAX,
                },
            ],
        };




登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号