//@include lib_Class.js /** * Rendering Word file from a Word template. * * This can either be used for creating a new Document in the archive (`objId` specified) or can create a new version on an existing object (`parentId`). * * @author PZ, ELO Digital Office GmbH * @version 1.0 * * @eloas * @requires sol.common.RepoUtils * @requires sol.common.Template */ sol.define("sol.common.as.renderer.Word", { requiredConfig: ["templateId"], /** * @cfg {String} templateId (reqiured) * The template which should be rendered */ /** * @cfg {String} targetId (optional) * The target folder to store the rendered document */ /** * @cfg {String} objId (optional) * The rendered document will be saved as a version of this object * Either `targetId` or `objId` has to be defined. */ /** * @cfg {Boolean} copyMetaData (optional) * If `true`, the mask and the metadata of the template will be copied to the new document */ initialize: function (config) { var me = this; me.$super("sol.Base", "initialize", [config]); if (!me.objId && !me.targetId) { throw "IllegalArgumentException: either 'targetId' or 'objId' has to defined"; } }, render: function (name, data) { var me = this, config = {}, templateSord; if (me.objId) { config.objId = me.objId; } else { config.name = name; config.parentId = me.targetId; } config.format = "docx"; if (me.copyMetaData === true) { templateSord = ixConnect.ix().checkoutSord(me.templateId, SordC.mbAllIndex, LockC.NO); config.maskId = templateSord.mask; config.objKeysObj = sol.common.SordUtils.getTemplateSord(templateSord).sord.objKeys; } return me.renderWord(data, config); }, /** * @private * @param {Object} data * @param {Object} config * @return {Object} */ renderWord: function (data, config) { var me = this, result = {}, wordDocument; try { wordDocument = sol.create("sol.common.as.WordDocument", {}); wordDocument.openFromRepo({ objId: me.templateId }); wordDocument.fillContentControls(data); result.objId = wordDocument.saveToRepo(config); } catch (ex) { me.logger.error(["error rendering report '{0}' (templateId='{1}')", config.name, me.templateId], ex); } return result; } });