微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ECharts+ExtJs缩放与左右键菜单自定义

Ext.define('PhysicsEvaluationSystemV1.view.base.BaseCharts', {
    extend : 'Ext.panel.Panel',
    xtype : 'basecharts',
    html : '<div id="main" style="width: 600px; height: 400px;"></div>',
    // myChart : null,
    config : {
        options : {
            tooltip : {},
            /*
             * title : { text : "ECharts 入门示例" },
             */
            legend : {
                data : [ '销量' ]
            },
            xAxis : {
                data : [ "衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子" ]
            },
            yAxis : {},
            series : [ {
                name : '销量',
                type : 'bar',
                data : [ 5, 20, 36, 10, 10, 20 ]
            } ],
        }
    },
    mouseEvents : function() {
        var menuLeft = Ext.create('Ext.menu.Menu', {
            width : 100,
            plain : true
        });
        var menuRight = Ext.create('Ext.menu.Menu', {
            width : 100,
            plain : true
        });
        menuRight.plain = true;
        menuRight.add({
            id : 'right_1',
            text : 'right_1'
        });
        menuRight.add({
            id : 'right_2',
            text : 'right_2'
        });
        menuRight.add({
            id : 'right_3',
            text : 'right_3'
        });
        var me = this;
        // /////////////左鍵
        me.myChart.on('click', function(params) {
            menuLeft.remove("left_1");// 移除第一个菜单项
            menuLeft.insert({// 插入第一个菜单项
                id : "left_1",
                text : params.data
            });

            Ext.getBody().on("click", function(e) {
                menuLeft.showAt(e.getPoint()); // 显示在当前位置
            });

        });

        // //////////////右鍵
        me.myChart.on('contextmenu', function(params) {
            Ext.getBody().on("contextmenu", function(e) {
                menuRight.showAt(e.getPoint()); // 显示在当前位置
            });
            document.oncontextmenu = function() {
                return false;
            };
        });

        // //////////////鼠标移出
        me.myChart.on('mouSEOut', function(params) {

            Ext.getBody().on("contextmenu", function(e) {
                menuRight.hide(); // 隐藏
            });
            Ext.getBody().on("click", function(e) {

                menuLeft.hide();
            });
            document.oncontextmenu = function() {
                return true;
            };

        });
    },

    renderCharts : function(width, height) {
        var me = this;
        if (!me.myChart) {
            me.myChart = echarts.init(document.getElementById('main'));
        }
        me.myChart.setoption(me.options);
        me.myChart.resize({
            width : width * 0.8,
            height : height * 0.8,
            silent : false
        });
    },

    browserResize : function(panelWidth, panelHeight) {
        var me = this;
        var initialWindowHeight = window.outerHeight;
        var initialWindowWidth = window.outerWidth;

        window.onresize = function() {

            // 根据浏览器与panel的比例同步缩放
            var rateOfheight = initialWindowHeight / window.outerHeight;
            var rateOfWidth = initialWindowWidth / window.outerWidth;
            var newPanelHeight = me.getHeight() / rateOfheight;
            var newPanelWidth = me.getWidth() / rateOfWidth;
            me.setHeight(newPanelHeight);
            me.setWidth(newPanelWidth);
            me.renderCharts(newPanelWidth, newPanelHeight);
        }

    },

    listeners : {
        'afterrender' : function() {
            var me = this;
            me.renderCharts(me.getWidth(), me.getHeight());
            me.mouseEvents();
        },
        'resize' : function() {
            var me = this;
            me.renderCharts(me.getWidth(), me.getHeight());
            me.browserResize(me.getWidth(), me.getHeight());
        }
    }
});
测试用例:

<!DOCTYPE html>
<html>
<head>
<Meta charset="utf-8">
<title>EChartsTest</title>
<link rel="stylesheet"
    href="build/development/PhysicsEvaluationSystemV1/classic/resources/PhysicsEvaluationSystemV1-all_1.css" />
<script type="text/javascript" src="ext/build/ext-all.js"></script>
<script type="text/javascript" src="app/view/base/BaseCharts.js" charset="gbk"></script>
<script src="echarts.js"></script>
</head>
<body>
    <script type="text/javascript">
    Ext.create('PhysicsEvaluationSystemV1.view.base.BaseCharts',{
        title:'Echarts+Extjs Test',
         height:'600px',
         width:'1000px', 
        //layout:'fit',
        resizable : true,
        renderTo : Ext.getBody()
    });
    </script>
</body>
</html>

  

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐