tuain-form-manager 1.2.4 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/lib/form-manager.js +36 -47
  2. package/package.json +1 -1
@@ -8,9 +8,10 @@ const { customizeFormDefinition } = require('./form-utils');
8
8
  const START_OPERATION = 'startOperation';
9
9
 
10
10
  class FormManager {
11
- constructor(rootPath, formsDefinitions, cacheManager, appLogger, errMgr) {
12
- this.rootPath = rootPath;
11
+ constructor(rootPath, formsDefinitions, cacheManager, appLogger, errMgr, formClasses = null) {
12
+ this.rootPath = rootPath ?? '';
13
13
  this.formsDefinitions = formsDefinitions;
14
+ this.formClasses = formClasses;
14
15
  this._formsSignature = null;
15
16
  this.logger = appLogger;
16
17
  this.errMgr = errMgr;
@@ -112,65 +113,53 @@ class FormManager {
112
113
  async executeFormAction(requestContext, formCode, requestData) {
113
114
  let resultForm = null;
114
115
  let errorObj = null;
116
+ let message;
115
117
  const { actionCode } = requestData;
116
118
  const formDefinition = this.getFormFlatDefinition(formCode);
117
119
  if (!formDefinition) {
118
- const errorDetail = `Definición de formulario ${formCode} no encontrada`;
119
- this.logger.log({
120
- level: 'error',
121
- label: 'FormManager',
122
- action: 'executeFormAction',
123
- message: errorDetail,
124
- });
125
- errorObj = this.errMgr.get(modErrs.formActionExec.formNotFound, errorDetail);
126
- return [errorObj, null];
127
- }
128
- const { formMapping, formClassDirectory } = this.formsDefinitions;
129
- const classFileName = formMapping?.[formCode]?.class ?? this.formsDefinitions?.[formCode]?.classFile;
130
- const moduleName = (classFileName) ? path.resolve(this.rootPath, formClassDirectory ?? '', classFileName) : '';
131
- if (!moduleName) {
132
- const errorDetail = `No existe nombre de archivo para el componente de gestión formulario ${formCode}`;
133
- this.logger.log({
134
- level: 'error',
135
- label: 'FormManager',
136
- action: 'executeFormAction',
137
- message: errorDetail,
138
- });
139
- errorObj = this.errMgr.get(modErrs.formActionExec.formNotFound, errorDetail);
120
+ message = `Definición de formulario ${formCode} no encontrada`;
121
+ this.logger.log({ level: 'error', label: 'FormManager', action: 'executeFormAction', message });
122
+ errorObj = this.errMgr.get(modErrs.formActionExec.formNotFound, message);
140
123
  return [errorObj, null];
141
124
  }
142
125
  try {
143
- const FormClass = require(moduleName);
126
+ let FormClass;
127
+ if (this.formClasses) {
128
+ FormClass = this.formClasses[formCode];
129
+ } else {
130
+ const { formMapping, formClassDirectory } = this.formsDefinitions;
131
+ const classFileName = formMapping?.[formCode]?.class ?? this.formsDefinitions?.[formCode]?.classFile;
132
+ const moduleName = (classFileName) ? path.resolve(this.rootPath, formClassDirectory ?? '', classFileName) : '';
133
+ if (!moduleName) {
134
+ message = `No existe nombre de archivo para el componente de gestión formulario ${formCode}`;
135
+ this.logger.log({ level: 'error', label: 'FormManager', action: 'executeFormAction', message });
136
+ errorObj = this.errMgr.get(modErrs.formActionExec.formNotFound, message);
137
+ return [errorObj, null];
138
+ }
139
+ FormClass = require(moduleName);
140
+ }
141
+ if (!FormClass) {
142
+ message = `No se encontró componente para la atenciónn del formulario ${formCode}`;
143
+ this.logger.log({ level: 'error', label: 'FormManager', action: 'executeFormAction', message });
144
+ errorObj = this.errMgr.get(modErrs.formActionExec.formNotFound, message);
145
+ return [errorObj, null];
146
+ }
144
147
  const formCustomObject = new FormClass(this.logger, this.errMgr, requestContext, formDefinition, requestData);
145
148
  if (!formCustomObject) {
146
- const errorDetail = `No fue posible instanciar la clase de gestión del formulario ${formCode}`;
147
- this.logger.log({
148
- level: 'error',
149
- label: 'FormManager',
150
- action: 'executeFormAction',
151
- message: errorDetail,
152
- });
153
- errorObj = this.errMgr.get(modErrs.formActionExec.formNotFound, errorDetail);
149
+ message = `No fue posible instanciar la clase de gestión del formulario ${formCode}`;
150
+ this.logger.log({ level: 'error', label: 'FormManager', action: 'executeFormAction', message });
151
+ errorObj = this.errMgr.get(modErrs.formActionExec.formNotFound, message);
154
152
  return [errorObj, null];
155
153
  }
156
154
  [errorObj, resultForm] = await formCustomObject.executeFormAction(actionCode);
157
- this.logger.log({
158
- level: 'info',
159
- label: 'FormManager',
160
- action: 'executeFormAction',
161
- message: `END FORM ACTION ${formCode} / ${actionCode} / ${errorObj?.errorCode ?? ''}`,
162
- });
155
+ message = `END FORM ACTION ${formCode} / ${actionCode} / ${errorObj?.errorCode ?? ''}`;
156
+ this.logger.log({ level: 'info', label: 'FormManager', action: 'executeFormAction', message });
163
157
  return [errorObj, resultForm];
164
158
  } catch (err) {
165
- const errorDetail = `Excepción no controlada: ${err.message}\n${err.stack}`
159
+ message = `Excepción no controlada: ${err.message}\n${err.stack}`
166
160
  + `------ END BY EXCEPTION FORM ACTION ${formCode} / ${actionCode} ------`;
167
- this.logger.log({
168
- level: 'error',
169
- label: 'FormManager',
170
- action: 'executeFormAction',
171
- message: errorDetail,
172
- });
173
- errorObj = this.errMgr.get(modErrs.formActionExec.formNotFound, errorDetail);
161
+ this.logger.log({ level: 'error', label: 'FormManager', action: 'executeFormAction', message });
162
+ errorObj = this.errMgr.get(modErrs.formActionExec.formNotFound, message);
174
163
  return [errorObj, null];
175
164
  }
176
165
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tuain-form-manager",
3
- "version": "1.2.4",
3
+ "version": "1.3.0",
4
4
  "description": "Component library to perform operations on Tuain Development Framework forms to interchange information on web or mobile applications based on the data interchange of abstract forms making trnasformation on the data upon actions required on both sides (front and back)",
5
5
  "main": "index.js",
6
6
  "scripts": {