From 923eed266f6495de9f7fa54d77b35af8cd5d9c99 Mon Sep 17 00:00:00 2001 From: KirillovIlya Date: Thu, 22 Dec 2022 14:18:11 +0300 Subject: [PATCH] [oform] Implement reading all users,user masters, field masters --- oform/format/Document.js | 19 +++++++++++++-- oform/format/FieldGroup.js | 4 ++-- oform/xml/XmlContext.js | 49 ++++++++++++++++++++++++++++++++++++++ oform/xml/XmlPackage.js | 2 +- 4 files changed, 69 insertions(+), 5 deletions(-) diff --git a/oform/format/Document.js b/oform/format/Document.js index dbe99e7..5de0dea 100644 --- a/oform/format/Document.js +++ b/oform/format/Document.js @@ -195,13 +195,28 @@ }; CDocument.prototype.fromPkg = function(xmlPkg) { + let xmlContext = xmlPkg.getContext(); let mainPart = xmlPkg.getMainPart(); let mainContent = mainPart ? mainPart.getDocumentContent() : null; if (mainContent) { - let reader = new AscCommon.StaxParser(mainContent, mainPart, xmlPkg.getContext()); + let reader = new AscCommon.StaxParser(mainContent, mainPart, xmlContext); this.fromXml(reader); } + + let document = this; + xmlContext.getAllUsers().forEach(function(user) + { + document.addUser(user) + }); + xmlContext.getAllUserMasters().forEach(function(userMaster) + { + document.addUserMaster(userMaster); + }); + xmlContext.getAllFieldMasters().forEach(function(fieldMaster) + { + document.addFieldMaster(fieldMaster); + }); }; CDocument.prototype.fromXml = function(reader) { @@ -294,7 +309,7 @@ }; CDocument.prototype.removeUser = function(user) { - let index = this.User.indexOf(user); + let index = this.Users.indexOf(user); if (-1 === index) return; diff --git a/oform/format/FieldGroup.js b/oform/format/FieldGroup.js index fb9db6f..be46641 100644 --- a/oform/format/FieldGroup.js +++ b/oform/format/FieldGroup.js @@ -149,8 +149,8 @@ let fields = []; for (let fieldIndex = 0, fieldCount = this.Fields.length; fieldIndex < fieldCount; ++fieldIndex) { - if (this.Fields[index].isUseInDocument()) - fields.push(this.Fields[index]); + if (this.Fields[fieldIndex].isUseInDocument()) + fields.push(this.Fields[fieldIndex]); } if (this.Users.length && this.Parent) diff --git a/oform/xml/XmlContext.js b/oform/xml/XmlContext.js index 4bd904a..8fd314c 100644 --- a/oform/xml/XmlContext.js +++ b/oform/xml/XmlContext.js @@ -34,6 +34,11 @@ (function(window) { + const PATH_USERS = "/users/"; + const PATH_USER_MASTERS = "/userMasters/"; + const PATH_FIELDS = "/fields/"; + const PATH_FIELD_MASTERS = "/fieldMasters/"; + /** * Класс для работы с ссылками внутри xml структуры * @constructor @@ -106,6 +111,24 @@ this.pathToFieldMaster[path] = fieldMaster; return fieldMaster; }; + XmlContext.prototype.getAllUsers = function() + { + return this.getAllByMapAndPath(this.pathToUser, PATH_USERS, AscOForm.CUser.fromXml); + }; + XmlContext.prototype.getAllUserMasters = function() + { + return this.getAllByMapAndPath(this.pathToUserMaster, PATH_USER_MASTERS, AscOForm.CUserMaster.fromXml); + }; + XmlContext.prototype.getAllFields = function() + { + // TODO: Implement + return []; + //return this.getAllByMapAndPath(this.pathToField, PATH_FIELDS, AscOForm.CField.fromXml); + }; + XmlContext.prototype.getAllFieldMasters = function() + { + return this.getAllByMapAndPath(this.pathToFieldMaster, PATH_FIELD_MASTERS, AscOForm.CFieldMaster.fromXml); + }; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Private area //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -121,6 +144,32 @@ return new AscCommon.StaxParser(partContent, part, this); }; + XmlContext.prototype.getAllByMapAndPath = function(map, path, fromXml) + { + let result = []; + for (let key in map) + { + result.push(map[key]); + } + + for (let uri in this.pkg.parts) + { + if (uri.startsWith(path) + && uri.endsWith(".xml") + && !map[uri]) + { + let reader = this.getXmlReader(uri); + if (!reader) + return; + + let element = fromXml(reader); + if (element) + result.push(element); + } + } + + return result; + } //--------------------------------------------------------export---------------------------------------------------- AscOForm.XmlContext = XmlContext; diff --git a/oform/xml/XmlPackage.js b/oform/xml/XmlPackage.js index 6a1289c..8a0618c 100644 --- a/oform/xml/XmlPackage.js +++ b/oform/xml/XmlPackage.js @@ -80,7 +80,7 @@ AscOForm.Test = function() { - let bse64Zip = "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"; + let bse64Zip = "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"; var dstLen = bse64Zip.length; var pointer = g_memory.Alloc(dstLen); var stream = new AscCommon.FT_Stream2(pointer.data, dstLen);