echarts流程1
2021-03-12 10:34:01 21 举报
本流程图梳理了echarts的绘制流程
作者其他创作
大纲/内容
结束
timelineOpt或rawOption.options存在
否
baseOption = rawOption.baseOption
rawOption.media存在
根据上面获取的类对象构造组件模型对象
model/Global.js
optionManager挂载option
返回值赋给newParsedOption
合并option(mergeOption)
初始化鼠标事件
初始化对象:this._chartsViews = []this._chartsMap = {}this._componentsViews = []this._componentsMap = {}
初始化调度对象(Scheduler)
是
模型(ecModel)没有初始化或者不是合并属性模式
web图形流程图2
初始化zrender
根据优先级(priority)对数据处理函数排序(dataProcessorFuncs)
调用componentModel.mergeOption
合并全局默认option到baseOption
type不存在或type=='media'或type=='recreate'
设置dom属性
主类型是series
设置主进程标志为true(IN_MAIN_PROCESS)
遍历mediaOptions合并每项option
hwcharts.js
初始化坐标系统管理类(CoordinateSystemManager)
设置属性(setOption)
拓扑遍历完组件类型
创建HWCharts对象
序列数据是typedArray类型
optionPreprocessorFuncs调用接口registerPreprocessor添加
Scheduler.js
初始化基本配置(initBase)
this.option不存在或type=='recreate'
是否存在option备份(_optionBackup)
ecModel初始化(option置空,初始化_theme,_optionManager赋值)
N
Y
恢复数据(restoreData)
创建option管理对象(OptionManager)
解析option(parseRawOption)
初始化(int)
拓扑遍历所有组件,调用组件的restoreData
zrender刷新
克隆原始option为rawOption
1、传人的组件类型与定义的组件类型取并集;2、存在依赖时,如果依赖未定义则跳过
初始化option和_componentsMap
option.series遍历完成
返回对象
初始化_dataProcessorHandlers
optionChanged = true
rawOption.baseOption存在
this._optionBackup = newParsedOption
调用接口registerLayout和registerVisual添加
_optionManager.setOption
是否懒更新模式(lazyUpdate)
初始化_allHandlers
组件模型存在并且跟上面的获取的是同一个类对象
合并主题option到baseOption
预处理(prepare)
调用componentModel.optionUpdated
遍历newOption,找出所有需要创建的类型(如xAxis、yAxis、series等),如果没有组件类,直接合并(如color、animaition等)
设置series.data的原始标记为true
type不存在或等于recreate
OptionManager.js
新建全局模型对象ecModel
设置为true后克隆对象时跳过
从optionManager中获取mediaOptions
是否遍历完mapResult
type=='timeline'或type=='media'
触发更新事件(triggerUpdatedEvent)
给optionManager属性赋值:_timelineOptions_mediaList_mediaDefault_currentMediaIndices返回baseOption
this._newBaseOption=newParsedOption.baseOption
合并备份的baseOption和newParsedOption的baseOption
提示已释放
创建序列索引映射(ecModel._seriesIndicesMap)
重置option(resetOption)
获取mapResult(mappingToExists)
初始化api(扩展ExtensionAPI)
根据优先级(priority)对视觉函数排序(visualFuncs)
初始化_stageTaskMap
newOption
遍历optionPreprocessorFuncs调用每一个处理函数
newCptOption不存在
添加渲染完成监听
IN_MAIN_PROCESS=false
实例存在
baseOption = rawOption
type
OPTION_UPDATED=false
根据dom对象获取chart实例
调用接口registerProcessor添加
componentModel= resultItem.exist;newCptOption=resultItem.option;
返回chart实例
timelineOpt = rawOption.timeline
ecModel设置option(setOption)
开始
可以实现多个chart之间的交互
实例是否已释放(this._disposed)
更新(updateMethods.update)
初始化_visualHandlers
将chart的id设置给dom的一个属性(_hwcharts_instance_),便于通过dom的这个属性获取chart实例
设置OPTION_UPDATED为静默模式
返回optionChanged
baseOption=baseOption||{};mediaList和mediaDefault赋值
刷新搁置操作(flushPendingActions)
baseOption不存在
type不存在或type=='timeline'或type=='recreate'
设置zrender节流刷新(throttle)
调用componentModel.init
创建序列索引映射(createSeriesIndices)
ecModel的调度对象(scheduler)赋值
启用chart连接(enableConnect)
baseOption=baseOption||{};timelineOptions=(rawOption.options || []).slice()
加载文件
绑定zrender动画的frame监听
baseOption
根据主类型和子类型获取类对象
将componentModel放入componentsMap对象中
timelineOption存在
从optionManager中获取timelineOption
收藏
收藏
0 条评论
下一页