2021SC@SDUSC
本周分析DocumentManager
DocumentManager(一)
私有属性
filename:文档名
page_array: pageArry维护一个page_id组成的数组和current_page当前页面的index
header:文档的基本信息
Document中有对object、xml、json进行处理的方法,对项目实现具有重要作用,但是xml的解析使用已经被废弃了,故只解析Json与Object之间的关系
这部分代码实现了对Json的加载,分别对json_object的header和pageList和Elements部分进行加载
DocumentManager.loadJson = function (json_object) {
this.clearData();
this._header.loadJson(json_object.Header);
this._page_array.loadJson(json_object.PageList);
ElementManager.loadJson(json_object.Elements);
};
这部分代码实现了对Json的保存,分别对json_object的header和pageList和Elements部分进行保存
DocumentManager.saveJson = function () {
let output = {};
output.Header = this._header.saveJson();
output.PageList = this._page_array.saveJson();
output.Elements = ElementManager.saveJson();
return output;
};
这部分代码实现了对Json的导出,分别对json_object的header和pageList和Elements以及Document部分进行到处
DocumentManager.exportJson = function () {
let output = {};
output.Header = this._header.exportJson();
output.Document = this.getExportDocument();
output.PageList = this._page_array.exportJson();
output.Elements = ElementManager.exportJson();
return output;
};
接下来是对DocumentManger中最大的generateDocumentByText
进行解析
首先是对一系列变量进行初始化
然后对 newPage进行初始化
先对canvas进行初始化
然后开始在canvas上进行绘制,并保存
然后分别对不同的类型进行处理
再调用createModulePage方法创建样例页面
最终对页面填写元素