首页 > 科技 >

ECharts+BaiduMap+HT for Web网络拓扑图应用(3)

2019-01-30 02:45:08 网络整理 阅读:175 评论:0

view.style.position = 'absolute';

view.style.setProperty('box-sizing', 'border-box', null);

self._option = option;

self._chart = echarts.init(self.getView());

if(option)

self._chart.setOption(option);

self._FIRST = true;

};

ht.Default.def('ht.Chart', Object, {

ms_v: 1,

ms_fire: 1,

ms_ac: ['chart', 'option', 'isFirst', 'view'],

validateImpl: function(){

var self = this,

chart = self._chart;

chart.resize();

if(self._FIRST){

self._FIRST = false;

chart.restore();

}

},

setSize: function(w, h){

var view = this._view;

view.style.width = w + 'px';

view.style.height = h + 'px';

}

});

function createPanel(title, width, height){

chart = new ht.Chart(option);

var c = chart.getChart();

c.on(echarts.config.EVENT.LEGEND_SELECTED, legendSelectedFun);

var chartPanel = new ht.widget.Panel({

title: title,

restoreToolTip: "Overview",

width: width,

contentHeight: height,

narrowWhenCollapse: true,

content: chart,

expanded: true

});

chartPanel.setPositionRelativeTo("rightBottom");

chartPanel.setPosition(0, 0);

chartPanel.getView().style.margin = '10px';

document.body.appendChild(chartPanel.getView());

}

首先定义了ht.Chart类,并实现了validateImpl方法,方法中处理的逻辑也很简单:在每次方法执行的时候调用图表的reset方法重新设定图标的展示大小,如果该方法是第一次执行的话,就调用图表的restore方法将图表还原为最原始的状态。会有这样的设计是因为ht.Chart类中的view是动态创建的,在没有添加到dom之前将一直存在于内存中,在内存中因为并没有浏览器宽高信息,所以div的实际宽高均为0,因此chart将option内容绘制在宽高为0的div中,即使你resize了chart,如果没用重置图表状态的话,图表状态将无法在图表上正常显示。

相关文章