From 2f4100e62d0ca77de992ff22fd540caca8f5bdc4 Mon Sep 17 00:00:00 2001 From: KirillovIlya Date: Fri, 23 Dec 2022 10:28:01 +0300 Subject: [PATCH] [oform] Work on xml writer --- oform/OForm.js | 14 +++++++++++++ oform/format/Document.js | 4 ++++ oform/xml/XmlContext.js | 43 ++++++++++++++++++++++++++++------------ oform/xml/XmlPackage.js | 21 +++++++++++++------- 4 files changed, 62 insertions(+), 20 deletions(-) diff --git a/oform/OForm.js b/oform/OForm.js index f039390..faa63e8 100644 --- a/oform/OForm.js +++ b/oform/OForm.js @@ -64,6 +64,20 @@ { return this.Format; }; + OForm.prototype.fromZip = function(zip) + { + let xmlPkg = new AscOForm.XmlPackage(zip); + xmlPkg.setContext(new AscOForm.XmlReaderContext(xmlPkg)); + this.Format.fromPkg(xmlPkg); + }; + OForm.prototype.toZip = function(zip) + { + let writer = new AscCommon.CMemory(); + let xmlPkg = new AscOForm.XmlPackage(zip, writer); + xmlPkg.setContext(new AscOForm.XmlWriterContext(xmlPkg)); + writer.context = xmlPkg.getContext(); + this.Format.toPkg(xmlPkg); + }; OForm.prototype.setCurrentRole = function(roleName) { let role = this.getRole(roleName); diff --git a/oform/format/Document.js b/oform/format/Document.js index 5de0dea..3d481c6 100644 --- a/oform/format/Document.js +++ b/oform/format/Document.js @@ -217,6 +217,10 @@ { document.addFieldMaster(fieldMaster); }); + }; + CDocument.prototype.toPkg = function(xmlPkg) + { + }; CDocument.prototype.fromXml = function(reader) { diff --git a/oform/xml/XmlContext.js b/oform/xml/XmlContext.js index 8fd314c..59123df 100644 --- a/oform/xml/XmlContext.js +++ b/oform/xml/XmlContext.js @@ -40,10 +40,10 @@ const PATH_FIELD_MASTERS = "/fieldMasters/"; /** - * Класс для работы с ссылками внутри xml структуры + * Класс для работы с ссылками внутри xml структуры во время чтения * @constructor */ - function XmlContext(pkg) + function XmlReaderContext(pkg) { this.pkg = pkg; @@ -52,7 +52,7 @@ this.pathToField = {}; this.pathToFieldMaster = {}; } - XmlContext.prototype.getUser = function(path) + XmlReaderContext.prototype.getUser = function(path) { let user = this.pathToUser[path]; if (user) @@ -66,7 +66,7 @@ this.pathToUser[path] = user; return user; }; - XmlContext.prototype.getUserMaster = function(path) + XmlReaderContext.prototype.getUserMaster = function(path) { let userMaster = this.pathToUserMaster[path]; if (userMaster) @@ -80,7 +80,7 @@ this.pathToUserMaster[path] = userMaster; return userMaster; }; - XmlContext.prototype.getField = function(path) + XmlReaderContext.prototype.getField = function(path) { let field = this.pathToField[path]; if (field) @@ -97,7 +97,7 @@ // this.pathToField[path] = field; // return field; }; - XmlContext.prototype.getFieldMaster = function(path) + XmlReaderContext.prototype.getFieldMaster = function(path) { let fieldMaster = this.pathToFieldMaster[path]; if (fieldMaster) @@ -111,28 +111,28 @@ this.pathToFieldMaster[path] = fieldMaster; return fieldMaster; }; - XmlContext.prototype.getAllUsers = function() + XmlReaderContext.prototype.getAllUsers = function() { return this.getAllByMapAndPath(this.pathToUser, PATH_USERS, AscOForm.CUser.fromXml); }; - XmlContext.prototype.getAllUserMasters = function() + XmlReaderContext.prototype.getAllUserMasters = function() { return this.getAllByMapAndPath(this.pathToUserMaster, PATH_USER_MASTERS, AscOForm.CUserMaster.fromXml); }; - XmlContext.prototype.getAllFields = function() + XmlReaderContext.prototype.getAllFields = function() { // TODO: Implement return []; //return this.getAllByMapAndPath(this.pathToField, PATH_FIELDS, AscOForm.CField.fromXml); }; - XmlContext.prototype.getAllFieldMasters = function() + XmlReaderContext.prototype.getAllFieldMasters = function() { return this.getAllByMapAndPath(this.pathToFieldMaster, PATH_FIELD_MASTERS, AscOForm.CFieldMaster.fromXml); }; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Private area //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - XmlContext.prototype.getXmlReader = function(path) + XmlReaderContext.prototype.getXmlReader = function(path) { let part = this.pkg.getPartByUri(path); if (!part) @@ -144,7 +144,7 @@ return new AscCommon.StaxParser(partContent, part, this); }; - XmlContext.prototype.getAllByMapAndPath = function(map, path, fromXml) + XmlReaderContext.prototype.getAllByMapAndPath = function(map, path, fromXml) { let result = []; for (let key in map) @@ -171,6 +171,23 @@ return result; } //--------------------------------------------------------export---------------------------------------------------- - AscOForm.XmlContext = XmlContext; + AscOForm.XmlReaderContext = XmlReaderContext; + + + /** + * Класс для работы с ссылками внутри xml структуры во время записи + * @constructor + */ + function XmlWriterContext(pkg) + { + this.pkg = pkg; + + this.userToPath = {}; + this.userMasterToPath = {}; + this.fieldToPath = {}; + this.fieldMasterToPath = {}; + } + //--------------------------------------------------------export---------------------------------------------------- + AscOForm.XmlWriterContext = XmlWriterContext; })(window); diff --git a/oform/xml/XmlPackage.js b/oform/xml/XmlPackage.js index 8a0618c..0ff74a6 100644 --- a/oform/xml/XmlPackage.js +++ b/oform/xml/XmlPackage.js @@ -43,7 +43,7 @@ { AscCommon.openXml.OpenXmlPackage.apply(this, arguments); - this.context = new AscOForm.XmlContext(this); + this.context = new AscOForm.XmlReaderContext(this); } XmlPackage.prototype = Object.create(AscCommon.openXml.OpenXmlPackage.prototype); XmlPackage.prototype.constructor = XmlPackage; @@ -74,11 +74,15 @@ { return this.context; }; + XmlPackage.prototype.setContext = function(context) + { + this.context = context; + }; //--------------------------------------------------------export---------------------------------------------------- AscOForm.XmlPackage = XmlPackage; - AscOForm.Test = function() + AscOForm.TestRead = function() { let bse64Zip = "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"; var dstLen = bse64Zip.length; @@ -92,17 +96,20 @@ let jsZlib = new AscCommon.ZLib(); if (jsZlib.open(new Uint8Array(pointer.data))) { - let xmlPkg = new XmlPackage(jsZlib); - let logicDocument = editor.WordControl.m_oLogicDocument; let oform = logicDocument.GetOFormDocument(); - let oformDocument = oform.getFormat(); - - oformDocument.fromPkg(xmlPkg) + oform.fromZip(jsZlib); console.log(oform); } } + AscOForm.TestWrite = function() + { + let jsZlibToSave = new AscCommon.ZLib(); + jsZlibToSave.create(); + model.toZip(jsZlibToSave, context); + + } })(window);