importPackage(Packages.de.elo.ix.client); //@include lib_Class.js //@include lib_moment.js //@include lib_sol.common.DateUtils.js //@include lib_sol.common.SordUtils.js //@include lib_sol.common.ix.FunctionBase.js var logger = sol.create("sol.Logger", { scope: "sol.common.ix.functions.IsoDate" }); /** * Writes the current date as ISO date into a index field. * * Formats: * * - Standard: 'yyyyMMddHHmmss' * - Without time: 'yyyyMMdd' * * # As workflow node * * `ObjId` is set based on the element that the workflow is attached to. * Following configuration should be applied to the comments field. * * { * "group": "COMPLETED_DATE", * "withoutTime": true * } * * # As IX function call * * In addition to the workflow node configuration the `objId` must be passed. * * sol.common.IxUtils.execute("RF_sol_function_ix_IsoDate", { * objId: "4711", * group: "COMPLETED_DATE", * withoutTime: true * }); * * @author PZ, ELO Digital Office GmbH * @version 1.0 * * @eloix * @requires moment * @requires sol.common.DateUtils * @requires sol.common.SordUtils * @requires sol.common.JsonUtils * @requires sol.common.WfUtils * @requires sol.common.ix.RfUtils * @requires sol.common.ix.FunctionBase */ sol.define("sol.common.ix.functions.IsoDate", { extend: "sol.common.ix.FunctionBase", requiredConfig: ["objId", "group"], /** * @cfg {String} objId (required) * Object ID */ /** * @cfg {String} group (required) * Group field to write the change to */ /** * @cfg {Boolean} [withoutTime=false] (optional) * If `true`, the time will be omitted from the ISO string */ withoutTime: false, /** * @cfg {Boolean} [adjustToConnectionTimeZone=false] * Adjust the date to the connection time zone */ adjustToConnectionTimeZone: false, initialize: function (config) { var me = this; me.$super("sol.common.ix.FunctionBase", "initialize", [config]); }, /** * Sets the ISO date. */ process: function () { var me = this, utcOffset, sord, dateField, isoString; sord = ixConnect.ix().checkoutSord(me.objId, SordC.mbAllIndex, LockC.NO); dateField = sol.common.SordUtils.getObjKey(sord, me.group); if (!dateField) { return; } if (me.adjustToConnectionTimeZone && me.timeZone) { utcOffset = sol.common.SordUtils.getTimeZoneOffset(me.timeZone); } isoString = sol.common.DateUtils.nowIso({ withoutTime: me.withoutTime, utcOffset: utcOffset }); dateField.data = [isoString]; ixConnect.ix().checkinSord(sord, SordC.mbAllIndex, LockC.NO); me.logger.info("Write current ISO date: objId=" + me.objId + ", objKey=" + me.group + ", adjustToConnectionTimeZone=" + me.adjustToConnectionTimeZone + ", conn.timeZone=" + me.timeZone + ", utcOffset=" + utcOffset + ", isoDate=" + isoString); } }); /** * @member sol.common.ix.functions.IsoDate * @static * @inheritdoc sol.common.ix.FunctionBase#onEnterNode */ function onEnterNode(clientInfo, userId, wFDiagram, nodeId) { logger.enter("onEnterNode_IsoDate", { flowId: wFDiagram.id, nodeId: nodeId }); var params = sol.common.WfUtils.parseAndCheckParams(wFDiagram, nodeId, "group"), module; params.objId = wFDiagram.objId; params.timeZone = clientInfo.timeZone; module = sol.create("sol.common.ix.functions.IsoDate", params); module.process(); logger.exit("onEnterNode_IsoDate"); } /** * @member sol.common.ix.functions.IsoDate * @static * @inheritdoc sol.common.ix.FunctionBase#onExitNode */ function onExitNode(clientInfo, userId, wFDiagram, nodeId) { logger.enter("onExitNode_IsoDate", { flowId: wFDiagram.id, nodeId: nodeId }); var params = sol.common.WfUtils.parseAndCheckParams(wFDiagram, nodeId, "group"), module; params.objId = wFDiagram.objId; params.timeZone = clientInfo.timeZone; module = sol.create("sol.common.ix.functions.IsoDate", params); module.process(); logger.exit("onExitNode_IsoDate"); } /** * @member sol.common.ix.functions.IsoDate * @method RF_sol_function_IsoDate * @static * @inheritdoc sol.common.ix.FunctionBase#RF_FunctionName */ function RF_sol_function_IsoDate(ec, args) { var params, module; logger.enter("RF_sol_function_IsoDate", args); params = sol.common.ix.RfUtils.parseAndCheckParams(ec, arguments.callee.name, args, "objId", "group"); params.timeZone = ec.ci.timeZone; module = sol.create("sol.common.ix.functions.IsoDate", params); module.process(); logger.exit("RF_sol_function_IsoDate"); }