@ironcode/vas-lib 0.0.18 → 0.0.19

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.
@@ -1 +1 @@
1
- {"version":3,"file":"vas-control.model.d.ts","sourceRoot":"","sources":["../../../../../projects/vas-lib/src/lib/entity/vas-control.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,MAAM,CAAC,OAAO,MAAM,+BAA+B,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAE/E;;GAEG;AACH,qBAAa,eAAgB,SAAQ,YAAa,YAAW,aAAa;IA0BtD,EAAE,EAAE,MAAM;IACV,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,MAAM;IACrB,SAAS,EAAE,MAAM;IACjB,QAAQ,EAAE,MAAM;IAChB,cAAc,EAAE,MAAM;IACtB,UAAU,EAAE,MAAM;IAC3B,OAAO,EAAE,MAAM;IACf,WAAW,EAAE,MAAM;IACnB,WAAW,EAAE,MAAM;IACnB,KAAK,EAAE,MAAM;IACb,UAAU,EAAE,MAAM,EAAE;IACpB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,OAAO;IACjB,QAAQ,EAAE,MAAM;IAChB,WAAW,EAAE,MAAM;IACnB,YAAY,EAAE,MAAM;IACpB,OAAO,EAAE,MAAM;IA3CjB,gBAAgB,EAAE,mBAAmB,GAAG,SAAS,CAAa;IACrE,SAAS,CAAC,WAAW,EAAE,GAAG,CAAa;IAEvC;;;;;;;;;;;;;;;;;;;;OAoBG;gBAEe,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAC3B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAAE,EACpB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,OAAO,EACjB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM;IAaxB;;;;OAIG;IACH,cAAc,CAAC,CAAC,KAAK,CAAC;IAOtB,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAGxB;IAED;;;;OAIG;IACH,IAAI,mBAAmB,IAAI,+BAA+B,CAazD;IAED;;;;OAIG;IACH,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED;;OAEG;WACW,KAAK,IAAI,eAAe;IAOtC;;;OAGG;WACW,OAAO,CACnB,GAAG,EAAE,OAAO,CAAC,aAAa,CAAC,GAC1B,eAAe;IAyBlB;;;OAGG;IACH,SAAS,CAAC,cAAc,CACtB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAC9B,+BAA+B;IAYlC;;OAEG;IACH,KAAK,IAAI,aAAa;CAuBvB"}
1
+ {"version":3,"file":"vas-control.model.d.ts","sourceRoot":"","sources":["../../../../../projects/vas-lib/src/lib/entity/vas-control.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,MAAM,CAAC,OAAO,MAAM,+BAA+B,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAE/E;;GAEG;AACH,qBAAa,eAAgB,SAAQ,YAAa,YAAW,aAAa;IA0BtD,EAAE,EAAE,MAAM;IACV,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,MAAM;IACrB,SAAS,EAAE,MAAM;IACjB,QAAQ,EAAE,MAAM;IAChB,cAAc,EAAE,MAAM;IACtB,UAAU,EAAE,MAAM;IAC3B,OAAO,EAAE,MAAM;IACf,WAAW,EAAE,MAAM;IACnB,WAAW,EAAE,MAAM;IACnB,KAAK,EAAE,MAAM;IACb,UAAU,EAAE,MAAM,EAAE;IACpB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,OAAO;IACjB,QAAQ,EAAE,MAAM;IAChB,WAAW,EAAE,MAAM;IACnB,YAAY,EAAE,MAAM;IACpB,OAAO,EAAE,MAAM;IA3CjB,gBAAgB,EAAE,mBAAmB,GAAG,SAAS,CAAa;IACrE,SAAS,CAAC,WAAW,EAAE,GAAG,CAAa;IAEvC;;;;;;;;;;;;;;;;;;;;OAoBG;gBAEe,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAC3B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAAE,EACpB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,OAAO,EACjB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM;IAaxB;;;;OAIG;IACH,cAAc,CAAC,CAAC,KAAK,CAAC;IAOtB,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAGxB;IAED;;;;OAIG;IACH,IAAI,mBAAmB,IAAI,+BAA+B,CAkBzD;IAED;;;;OAIG;IACH,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED;;OAEG;WACW,KAAK,IAAI,eAAe;IAOtC;;;OAGG;WACW,OAAO,CACnB,GAAG,EAAE,OAAO,CAAC,aAAa,CAAC,GAC1B,eAAe;IAyBlB;;;OAGG;IACH,SAAS,CAAC,cAAc,CACtB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAC9B,+BAA+B;IAYlC;;OAEG;IACH,KAAK,IAAI,aAAa;CAuBvB"}
@@ -83,6 +83,11 @@ class VasControlModel extends vas_base_model_1.VasBaseModel {
83
83
  case 'contact': {
84
84
  return {};
85
85
  }
86
+ case 'toggle': {
87
+ return {
88
+ checked: false, comment: ''
89
+ };
90
+ }
86
91
  }
87
92
  }
88
93
  return this.parseMaybeJson(this.defaultValue);
@@ -1 +1 @@
1
- {"version":3,"file":"vas-control.model.js","sourceRoot":"","sources":["../../../../../projects/vas-lib/src/lib/entity/vas-control.model.ts"],"names":[],"mappings":"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","sourcesContent":["import { VasBaseModel } from './vas-base.model';\nimport { VasControlTypeModel } from './vas-control-type.model';\nimport { VasControlDto } from './vas-control.dto';\nimport { UUID } from 'angular2-uuid';\n\nexport declare type VasControlModelDefaultValueType = string | number | object;\n\n/**\n * ControlModel\n */\nexport class VasControlModel extends VasBaseModel implements VasControlDto {\n public controlTypeModel: VasControlTypeModel | undefined = undefined;\n protected configCache: any = undefined;\n\n /**\n * @param {string} id\n * @param {string} created\n * @param {string} serverCreated\n * @param {string} createdBy\n * @param {string} modified\n * @param {string} serverModified\n * @param {string} modifiedBy\n * @param {string} account\n * @param {string} accessGroup\n * @param {string} controlType\n * @param {string} group\n * @param {string[]} validators\n * @param {string} name\n * @param {string} title\n * @param {boolean} linkable\n * @param {number} sequence\n * @param {string} description\n * @param {string} defaultValue\n * @param {object} config\n */\n constructor(\n public override id: string,\n public override created: string,\n public override serverCreated: string,\n public override createdBy: string,\n public override modified: string,\n public override serverModified: string,\n public override modifiedBy: string,\n public account: string,\n public accessGroup: string,\n public controlType: string,\n public group: string,\n public validators: string[],\n public name: string,\n public title: string,\n public linkable: boolean,\n public sequence: number,\n public description: string,\n public defaultValue: string,\n public _config: string\n ) {\n super(\n id,\n created,\n serverCreated,\n createdBy,\n modified,\n serverModified,\n modifiedBy\n );\n }\n\n /**\n * The config property is returned from the api as a json string, this getter\n * will deserialize it\n * @return {T}\n */\n getConfigModel<T>(): T {\n if (this.configCache !== undefined) {\n return this.configCache;\n }\n return this.configCache = JSON.parse(this._config) as T;\n }\n\n get config(): string {\n return this._config;\n }\n\n set config(config: string) {\n this._config = config;\n this.configCache = undefined;\n }\n\n /**\n * The defaultValue property is returned from the api as a string or number,\n * in the case of string, it maybe a json. This getter will return an\n * object if the value is a json string\n */\n get defaultValueDecoded(): VasControlModelDefaultValueType {\n\n if (this.defaultValue === '' && this.controlTypeModel) {\n switch (this.controlTypeModel.name) {\n case 'branch':\n case 'camera':\n case 'contact': {\n return {};\n }\n }\n }\n\n return this.parseMaybeJson(this.defaultValue);\n }\n\n /**\n * Returns the name of this control to be used in the report templates\n * i.e. fields.foo -> foo\n * @return {string}\n */\n get reportTemplateName(): string {\n return this.name.replace(/^fields\\./, '');\n }\n\n /**\n * @return {string}\n */\n get safeName(): string {\n return this.name;\n }\n\n /**\n * @return {VasControlModel}\n */\n public static empty(): VasControlModel {\n return VasControlModel.fromDto({\n // eslint-disable-next-line new-cap\n id: UUID.UUID()\n });\n }\n\n /**\n * @param {VasControlDto} dto\n * @return {VasControlModel}\n */\n public static fromDto(\n dto: Partial<VasControlDto>\n ): VasControlModel {\n return new VasControlModel(\n // eslint-disable-next-line new-cap\n dto.id || UUID.UUID(),\n dto.created || '',\n dto.serverCreated || '',\n dto.createdBy || '',\n dto.modified || '',\n dto.serverModified || '',\n dto.modifiedBy || '',\n dto.account || '',\n dto.accessGroup || '',\n dto.controlType || '',\n dto.group || '',\n dto.validators || [],\n dto.name || '',\n dto.title || '',\n dto.linkable || false,\n dto.sequence || 0,\n dto.description || '',\n dto.defaultValue || '',\n dto.config || '{}',\n );\n }\n\n /**\n * @param {string} value\n * @return {VasControlModelDefaultValueType}\n */\n protected parseMaybeJson(\n value: string | number | object\n ): VasControlModelDefaultValueType {\n if (typeof value !== 'string') {\n return value;\n }\n\n try {\n return JSON.parse(value);\n } catch (e) {\n return value;\n }\n }\n\n /**\n * @return {VasControlDto}\n */\n toDto(): VasControlDto {\n return {\n id: this.id,\n created: this.created,\n serverCreated: this.serverCreated,\n createdBy: this.createdBy,\n modified: this.modified,\n serverModified: this.serverModified,\n modifiedBy: this.modifiedBy,\n account: this.account,\n accessGroup: this.accessGroup,\n controlType: this.controlType,\n group: this.group,\n validators: this.validators,\n name: this.name,\n title: this.title,\n linkable: this.linkable,\n sequence: this.sequence,\n description: this.description,\n defaultValue: this.defaultValue,\n config: this.config\n };\n }\n}\n\n"]}
1
+ {"version":3,"file":"vas-control.model.js","sourceRoot":"","sources":["../../../../../projects/vas-lib/src/lib/entity/vas-control.model.ts"],"names":[],"mappings":"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","sourcesContent":["import { VasBaseModel } from './vas-base.model';\nimport { VasControlTypeModel } from './vas-control-type.model';\nimport { VasControlDto } from './vas-control.dto';\nimport { UUID } from 'angular2-uuid';\n\nexport declare type VasControlModelDefaultValueType = string | number | object;\n\n/**\n * ControlModel\n */\nexport class VasControlModel extends VasBaseModel implements VasControlDto {\n public controlTypeModel: VasControlTypeModel | undefined = undefined;\n protected configCache: any = undefined;\n\n /**\n * @param {string} id\n * @param {string} created\n * @param {string} serverCreated\n * @param {string} createdBy\n * @param {string} modified\n * @param {string} serverModified\n * @param {string} modifiedBy\n * @param {string} account\n * @param {string} accessGroup\n * @param {string} controlType\n * @param {string} group\n * @param {string[]} validators\n * @param {string} name\n * @param {string} title\n * @param {boolean} linkable\n * @param {number} sequence\n * @param {string} description\n * @param {string} defaultValue\n * @param {object} config\n */\n constructor(\n public override id: string,\n public override created: string,\n public override serverCreated: string,\n public override createdBy: string,\n public override modified: string,\n public override serverModified: string,\n public override modifiedBy: string,\n public account: string,\n public accessGroup: string,\n public controlType: string,\n public group: string,\n public validators: string[],\n public name: string,\n public title: string,\n public linkable: boolean,\n public sequence: number,\n public description: string,\n public defaultValue: string,\n public _config: string\n ) {\n super(\n id,\n created,\n serverCreated,\n createdBy,\n modified,\n serverModified,\n modifiedBy\n );\n }\n\n /**\n * The config property is returned from the api as a json string, this getter\n * will deserialize it\n * @return {T}\n */\n getConfigModel<T>(): T {\n if (this.configCache !== undefined) {\n return this.configCache;\n }\n return this.configCache = JSON.parse(this._config) as T;\n }\n\n get config(): string {\n return this._config;\n }\n\n set config(config: string) {\n this._config = config;\n this.configCache = undefined;\n }\n\n /**\n * The defaultValue property is returned from the api as a string or number,\n * in the case of string, it maybe a json. This getter will return an\n * object if the value is a json string\n */\n get defaultValueDecoded(): VasControlModelDefaultValueType {\n\n if (this.defaultValue === '' && this.controlTypeModel) {\n switch (this.controlTypeModel.name) {\n case 'branch':\n case 'camera':\n case 'contact': {\n return {};\n }\n case 'toggle': {\n return {\n checked: false, comment: ''\n }\n }\n }\n }\n\n return this.parseMaybeJson(this.defaultValue);\n }\n\n /**\n * Returns the name of this control to be used in the report templates\n * i.e. fields.foo -> foo\n * @return {string}\n */\n get reportTemplateName(): string {\n return this.name.replace(/^fields\\./, '');\n }\n\n /**\n * @return {string}\n */\n get safeName(): string {\n return this.name;\n }\n\n /**\n * @return {VasControlModel}\n */\n public static empty(): VasControlModel {\n return VasControlModel.fromDto({\n // eslint-disable-next-line new-cap\n id: UUID.UUID()\n });\n }\n\n /**\n * @param {VasControlDto} dto\n * @return {VasControlModel}\n */\n public static fromDto(\n dto: Partial<VasControlDto>\n ): VasControlModel {\n return new VasControlModel(\n // eslint-disable-next-line new-cap\n dto.id || UUID.UUID(),\n dto.created || '',\n dto.serverCreated || '',\n dto.createdBy || '',\n dto.modified || '',\n dto.serverModified || '',\n dto.modifiedBy || '',\n dto.account || '',\n dto.accessGroup || '',\n dto.controlType || '',\n dto.group || '',\n dto.validators || [],\n dto.name || '',\n dto.title || '',\n dto.linkable || false,\n dto.sequence || 0,\n dto.description || '',\n dto.defaultValue || '',\n dto.config || '{}',\n );\n }\n\n /**\n * @param {string} value\n * @return {VasControlModelDefaultValueType}\n */\n protected parseMaybeJson(\n value: string | number | object\n ): VasControlModelDefaultValueType {\n if (typeof value !== 'string') {\n return value;\n }\n\n try {\n return JSON.parse(value);\n } catch (e) {\n return value;\n }\n }\n\n /**\n * @return {VasControlDto}\n */\n toDto(): VasControlDto {\n return {\n id: this.id,\n created: this.created,\n serverCreated: this.serverCreated,\n createdBy: this.createdBy,\n modified: this.modified,\n serverModified: this.serverModified,\n modifiedBy: this.modifiedBy,\n account: this.account,\n accessGroup: this.accessGroup,\n controlType: this.controlType,\n group: this.group,\n validators: this.validators,\n name: this.name,\n title: this.title,\n linkable: this.linkable,\n sequence: this.sequence,\n description: this.description,\n defaultValue: this.defaultValue,\n config: this.config\n };\n }\n}\n\n"]}
@@ -39,7 +39,6 @@ export declare class VasFieldModel extends VasJobDataModel {
39
39
  * @return {string | number | boolean}
40
40
  * @protected
41
41
  */
42
- protected toApiValue(value: VasFieldDtoValue): string | number | boolean;
43
- protected static fromApiValue(value: VasFieldDtoValue): VasFieldDtoValue;
42
+ protected prepareApiValue(value: VasFieldDtoValue): string | number | boolean;
44
43
  }
45
44
  //# sourceMappingURL=vas-field.model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vas-field.model.d.ts","sourceRoot":"","sources":["../../../../../projects/vas-lib/src/lib/entity/vas-field.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;GAEG;AACH,qBAAa,aAAc,SAAQ,eAAe;IAG9B,EAAE,EAAE,MAAM;IACV,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,MAAM;IACrB,SAAS,EAAE,MAAM;IACjB,QAAQ,EAAE,MAAM;IAChB,cAAc,EAAE,MAAM;IACtB,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,MAAM;IACf,GAAG,EAAE,MAAM;IACpB,OAAO,EAAE,MAAM;IACf,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC;IAC/B,KAAK,EAAE,gBAAgB;IACvB,OAAO,EAAE,MAAM;gBAZN,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,EAC/B,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,MAAM;IAexB;;;OAGG;WACW,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,aAAa;IAkBpE;;OAEG;IACH,KAAK,IAAI,WAAW;IAkBpB;;OAEG;IACM,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAS9D;;;;;;;OAOG;IACH,SAAS,CAAC,UAAU,CAClB,KAAK,EAAE,gBAAgB,GACtB,MAAM,GAAG,MAAM,GAAG,OAAO;IAoB5B,SAAS,CAAC,MAAM,CAAC,YAAY,CAC3B,KAAK,EAAE,gBAAgB,GACtB,gBAAgB;CAOpB"}
1
+ {"version":3,"file":"vas-field.model.d.ts","sourceRoot":"","sources":["../../../../../projects/vas-lib/src/lib/entity/vas-field.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;GAEG;AACH,qBAAa,aAAc,SAAQ,eAAe;IAG9B,EAAE,EAAE,MAAM;IACV,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,MAAM;IACrB,SAAS,EAAE,MAAM;IACjB,QAAQ,EAAE,MAAM;IAChB,cAAc,EAAE,MAAM;IACtB,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,MAAM;IACf,GAAG,EAAE,MAAM;IACpB,OAAO,EAAE,MAAM;IACf,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC;IAC/B,KAAK,EAAE,gBAAgB;IACvB,OAAO,EAAE,MAAM;gBAZN,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,EAC/B,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,MAAM;IAexB;;;OAGG;WACW,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,aAAa;IAkBpE;;OAEG;IACH,KAAK,IAAI,WAAW;IAkBpB;;OAEG;IACM,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAS9D;;;;;;;OAOG;IACH,SAAS,CAAC,eAAe,CACvB,KAAK,EAAE,gBAAgB,GACtB,MAAM,GAAG,MAAM,GAAG,OAAO;CAmB7B"}
@@ -28,7 +28,7 @@ class VasFieldModel extends vas_job_data_model_1.VasJobDataModel {
28
28
  * @return {VasFieldModel}
29
29
  */
30
30
  static fromDto(fieldDto) {
31
- return new VasFieldModel(fieldDto.id || angular2_uuid_1.UUID.UUID(), fieldDto.created || '', fieldDto.serverCreated || '', fieldDto.createdBy || '', fieldDto.modified || '', fieldDto.serverModified || '', fieldDto.modifiedBy || '', fieldDto.account || '', fieldDto.job || '', fieldDto.control || '', fieldDto.fieldJobPointers || [], this.fromApiValue(fieldDto.value) || '', fieldDto.version || 0);
31
+ return new VasFieldModel(fieldDto.id || angular2_uuid_1.UUID.UUID(), fieldDto.created || '', fieldDto.serverCreated || '', fieldDto.createdBy || '', fieldDto.modified || '', fieldDto.serverModified || '', fieldDto.modifiedBy || '', fieldDto.account || '', fieldDto.job || '', fieldDto.control || '', fieldDto.fieldJobPointers || [], fieldDto.value || '', fieldDto.version || 0);
32
32
  }
33
33
  /**
34
34
  * @return {VasFieldDto}
@@ -54,7 +54,7 @@ class VasFieldModel extends vas_job_data_model_1.VasJobDataModel {
54
54
  * @return {object}
55
55
  */
56
56
  toApiDto() {
57
- return Object.assign(Object.assign({}, super.toApiDto()), { control: this.control, value: this.toApiValue(this.value) });
57
+ return Object.assign(Object.assign({}, super.toApiDto()), { control: this.control, value: this.prepareApiValue(this.value) });
58
58
  }
59
59
  /**
60
60
  * Prepares the value to be sent to the API. The api will only accept strings,
@@ -64,7 +64,7 @@ class VasFieldModel extends vas_job_data_model_1.VasJobDataModel {
64
64
  * @return {string | number | boolean}
65
65
  * @protected
66
66
  */
67
- toApiValue(value) {
67
+ prepareApiValue(value) {
68
68
  switch (typeof value) {
69
69
  case 'object': {
70
70
  return JSON.stringify(value);
@@ -83,14 +83,6 @@ class VasFieldModel extends vas_job_data_model_1.VasJobDataModel {
83
83
  }
84
84
  }
85
85
  }
86
- static fromApiValue(value) {
87
- try {
88
- return JSON.parse(value);
89
- }
90
- catch (e) {
91
- return value;
92
- }
93
- }
94
86
  }
95
87
  exports.VasFieldModel = VasFieldModel;
96
88
  //# sourceMappingURL=vas-field.model.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vas-field.model.js","sourceRoot":"","sources":["../../../../../projects/vas-lib/src/lib/entity/vas-field.model.ts"],"names":[],"mappings":"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","sourcesContent":["import { VasFieldDto, VasFieldDtoValue } from './vas-field.dto';\nimport { UUID } from 'angular2-uuid';\nimport { VasJobDataModel } from './vas-job-data.model';\n\n/**\n * VasFieldModel\n */\nexport class VasFieldModel extends VasJobDataModel {\n\n constructor(\n public override id: string,\n public override created: string,\n public override serverCreated: string,\n public override createdBy: string,\n public override modified: string,\n public override serverModified: string,\n public override modifiedBy: string,\n public override account: string,\n public override job: string,\n public control: string,\n public fieldJobPointers: Array<string>,\n public value: VasFieldDtoValue,\n public version: number\n ) {\n super(\n id,\n created,\n serverCreated,\n createdBy,\n modified,\n serverModified,\n modifiedBy,\n account,\n job\n );\n }\n\n /**\n * @param {VasFieldDto} fieldDto\n * @return {VasFieldModel}\n */\n public static fromDto(fieldDto: Partial<VasFieldDto>): VasFieldModel {\n return new VasFieldModel(\n fieldDto.id || UUID.UUID(),\n fieldDto.created || '',\n fieldDto.serverCreated || '',\n fieldDto.createdBy || '',\n fieldDto.modified || '',\n fieldDto.serverModified || '',\n fieldDto.modifiedBy || '',\n fieldDto.account || '',\n fieldDto.job || '',\n fieldDto.control || '',\n fieldDto.fieldJobPointers || [],\n this.fromApiValue(fieldDto.value) || '',\n fieldDto.version || 0,\n )\n }\n\n /**\n * @return {VasFieldDto}\n */\n toDto(): VasFieldDto {\n return {\n id: this.id,\n created: this.created,\n serverCreated: this.serverCreated,\n createdBy: this.createdBy,\n modified: this.modified,\n serverModified: this.serverModified,\n modifiedBy: this.modifiedBy,\n account: this.account,\n job: this.job,\n control: this.control,\n fieldJobPointers: this.fieldJobPointers,\n value: this.value,\n version: this.version,\n }\n }\n\n /**\n * @return {object}\n */\n override toApiDto(): Record<string, string | number | boolean> {\n return {\n ...super.toApiDto(),\n control: this.control,\n value: this.toApiValue(this.value)\n };\n }\n\n\n /**\n * Prepares the value to be sent to the API. The api will only accept strings,\n * numbers and booleans, thus if we have an array or object, we need to JSON\n * encode it\n * @param {VasFieldDto} value\n * @return {string | number | boolean}\n * @protected\n */\n protected toApiValue(\n value: VasFieldDtoValue\n ): string | number | boolean {\n switch (typeof value) {\n case 'object': {\n return JSON.stringify(value);\n }\n case 'boolean': {\n return value as boolean;\n }\n case 'string': {\n return value as string;\n }\n case 'number': {\n return value as number;\n }\n default: {\n return '';\n }\n }\n }\n\n protected static fromApiValue(\n value: VasFieldDtoValue\n ): VasFieldDtoValue {\n try {\n return JSON.parse(value as any);\n } catch (e) {\n return value;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"vas-field.model.js","sourceRoot":"","sources":["../../../../../projects/vas-lib/src/lib/entity/vas-field.model.ts"],"names":[],"mappings":"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","sourcesContent":["import { VasFieldDto, VasFieldDtoValue } from './vas-field.dto';\nimport { UUID } from 'angular2-uuid';\nimport { VasJobDataModel } from './vas-job-data.model';\n\n/**\n * VasFieldModel\n */\nexport class VasFieldModel extends VasJobDataModel {\n\n constructor(\n public override id: string,\n public override created: string,\n public override serverCreated: string,\n public override createdBy: string,\n public override modified: string,\n public override serverModified: string,\n public override modifiedBy: string,\n public override account: string,\n public override job: string,\n public control: string,\n public fieldJobPointers: Array<string>,\n public value: VasFieldDtoValue,\n public version: number\n ) {\n super(\n id,\n created,\n serverCreated,\n createdBy,\n modified,\n serverModified,\n modifiedBy,\n account,\n job\n );\n }\n\n /**\n * @param {VasFieldDto} fieldDto\n * @return {VasFieldModel}\n */\n public static fromDto(fieldDto: Partial<VasFieldDto>): VasFieldModel {\n return new VasFieldModel(\n fieldDto.id || UUID.UUID(),\n fieldDto.created || '',\n fieldDto.serverCreated || '',\n fieldDto.createdBy || '',\n fieldDto.modified || '',\n fieldDto.serverModified || '',\n fieldDto.modifiedBy || '',\n fieldDto.account || '',\n fieldDto.job || '',\n fieldDto.control || '',\n fieldDto.fieldJobPointers || [],\n fieldDto.value || '',\n fieldDto.version || 0,\n )\n }\n\n /**\n * @return {VasFieldDto}\n */\n toDto(): VasFieldDto {\n return {\n id: this.id,\n created: this.created,\n serverCreated: this.serverCreated,\n createdBy: this.createdBy,\n modified: this.modified,\n serverModified: this.serverModified,\n modifiedBy: this.modifiedBy,\n account: this.account,\n job: this.job,\n control: this.control,\n fieldJobPointers: this.fieldJobPointers,\n value: this.value,\n version: this.version,\n }\n }\n\n /**\n * @return {object}\n */\n override toApiDto(): Record<string, string | number | boolean> {\n return {\n ...super.toApiDto(),\n control: this.control,\n value: this.prepareApiValue(this.value)\n };\n }\n\n\n /**\n * Prepares the value to be sent to the API. The api will only accept strings,\n * numbers and booleans, thus if we have an array or object, we need to JSON\n * encode it\n * @param {VasFieldDto} value\n * @return {string | number | boolean}\n * @protected\n */\n protected prepareApiValue(\n value: VasFieldDtoValue\n ): string | number | boolean {\n switch (typeof value) {\n case 'object': {\n return JSON.stringify(value);\n }\n case 'boolean': {\n return value as boolean;\n }\n case 'string': {\n return value as string;\n }\n case 'number': {\n return value as number;\n }\n default: {\n return '';\n }\n }\n }\n}\n"]}
@@ -101,53 +101,15 @@ export declare class VasJobModel extends VasRestrictedAccountObjectModel {
101
101
  /**
102
102
  * This method will hydrate the `fields` property of the model. The reason for
103
103
  * this is that we have different ways to store the field data. One way, is
104
- * we store them as dynamic properties of the job e.g. job.foo.bar, the other
105
- * is in an array of Field. The former is nice to work with in clients,
106
- * whereas the latter more suited to relational database.
107
- *
108
- * A) job with dynamic properties, e.g.
109
- * {
110
- * id: <guid>,
111
- * reference: "something"
112
- * <other static job properties>...
113
- * foo: {
114
- * bar: "value"
115
- * }
116
- * }
117
- *
118
- * B) job with array of Field
119
- * {
120
- * id: <guid>,
121
- * reference: "something"
122
- * <other static job properties>...
123
- * <will not have dynamic properties>...
124
- * fields: [
125
- * {
126
- * id: <guid>,
127
- * <other field properties>,
128
- * value: "value"
129
- * }
130
- * ]
131
- * }
132
- *
133
- * What this method does is given a VasJobModel that has been populated with
134
- * a VasJobDto in form B (i.e. `.fields` are populated - usually from a VASAPI
135
- * response), hydrate the dynamic properties of the model. NOTE: knowledge of
136
- * the Form that was used to crate the Job is required because it will contain
137
- * the Groups, which names are used in the hydrating
138
- *
139
- * @param {VasFormModel} formModel the VasFormModel that was used to create
140
- * the job
141
- * @return {void}
142
- */
143
- hydrateDynamicProps(formModel: VasFormModel): void;
144
- /**
145
- * This method will hydrate the `fields` property of the model. The reason for
146
- * this is that we have different ways to store the field data. One way, is
147
- * we store them as dynamic properties of the job e.g. job.foo.bar, the other
148
- * is in an array of Field. The former is nice to work with in clients,
149
- * whereas the latter more suited to relational database.
150
- *
104
+ * we store them as dynamic properties of the job. For example job.foo.bar,
105
+ * where `foo` is the name of a Group, and `bar` is the name of a control.
106
+ * Thus, when we create a job using a form in the client, the job object will
107
+ * have its static properties (id, account, reference etc), and also a number
108
+ * of dynamic properties determined by the Groups and Controls. This kind of
109
+ * object is nice to work with in certain circumstances. However, the api
110
+ * works differently. In the API a Job is a record, and references a number of
111
+ * Field records. Each Field stores the value. Comparing these two models we
112
+ * have:
151
113
  * A) job with dynamic properties, e.g.
152
114
  * {
153
115
  * id: <guid>,
@@ -214,7 +176,7 @@ export declare class VasJobModel extends VasRestrictedAccountObjectModel {
214
176
  * be generated, or to reuse an existing one from the map.
215
177
  * @param {Array<string>} controlNames if a value is provided, it will be used
216
178
  * to filter the fields that are returned.
217
- * @return {void}
179
+ * @return {Array<VasFieldDto>}
218
180
  */
219
181
  hydrateFields(formModel: VasFormModel, controlFieldIdMap?: Map<string, string>, controlNames?: Array<string>): void;
220
182
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"vas-job.model.d.ts","sourceRoot":"","sources":["../../../../../projects/vas-lib/src/lib/entity/vas-job.model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vas-job.model.d.ts","sourceRoot":"","sources":["../../../../../projects/vas-lib/src/lib/entity/vas-job.model.ts"],"names":[],"mappings":"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"}
@@ -144,67 +144,15 @@ class VasJobModel extends vas_restricted_account_object_model_1.VasRestrictedAcc
144
144
  /**
145
145
  * This method will hydrate the `fields` property of the model. The reason for
146
146
  * this is that we have different ways to store the field data. One way, is
147
- * we store them as dynamic properties of the job e.g. job.foo.bar, the other
148
- * is in an array of Field. The former is nice to work with in clients,
149
- * whereas the latter more suited to relational database.
150
- *
151
- * A) job with dynamic properties, e.g.
152
- * {
153
- * id: <guid>,
154
- * reference: "something"
155
- * <other static job properties>...
156
- * foo: {
157
- * bar: "value"
158
- * }
159
- * }
160
- *
161
- * B) job with array of Field
162
- * {
163
- * id: <guid>,
164
- * reference: "something"
165
- * <other static job properties>...
166
- * <will not have dynamic properties>...
167
- * fields: [
168
- * {
169
- * id: <guid>,
170
- * <other field properties>,
171
- * value: "value"
172
- * }
173
- * ]
174
- * }
175
- *
176
- * What this method does is given a VasJobModel that has been populated with
177
- * a VasJobDto in form B (i.e. `.fields` are populated - usually from a VASAPI
178
- * response), hydrate the dynamic properties of the model. NOTE: knowledge of
179
- * the Form that was used to crate the Job is required because it will contain
180
- * the Groups, which names are used in the hydrating
181
- *
182
- * @param {VasFormModel} formModel the VasFormModel that was used to create
183
- * the job
184
- * @return {void}
185
- */
186
- hydrateDynamicProps(formModel) {
187
- formModel.groups
188
- .forEach(group => {
189
- const p0 = group.name;
190
- group.controls
191
- .forEach(control => {
192
- const p1 = control.name;
193
- const f = this.fields.find(field => field.control === control.id);
194
- if (!f) {
195
- return;
196
- }
197
- this.setValueByPath(f.value, [p0, p1]);
198
- });
199
- });
200
- }
201
- /**
202
- * This method will hydrate the `fields` property of the model. The reason for
203
- * this is that we have different ways to store the field data. One way, is
204
- * we store them as dynamic properties of the job e.g. job.foo.bar, the other
205
- * is in an array of Field. The former is nice to work with in clients,
206
- * whereas the latter more suited to relational database.
207
- *
147
+ * we store them as dynamic properties of the job. For example job.foo.bar,
148
+ * where `foo` is the name of a Group, and `bar` is the name of a control.
149
+ * Thus, when we create a job using a form in the client, the job object will
150
+ * have its static properties (id, account, reference etc), and also a number
151
+ * of dynamic properties determined by the Groups and Controls. This kind of
152
+ * object is nice to work with in certain circumstances. However, the api
153
+ * works differently. In the API a Job is a record, and references a number of
154
+ * Field records. Each Field stores the value. Comparing these two models we
155
+ * have:
208
156
  * A) job with dynamic properties, e.g.
209
157
  * {
210
158
  * id: <guid>,
@@ -271,7 +219,7 @@ class VasJobModel extends vas_restricted_account_object_model_1.VasRestrictedAcc
271
219
  * be generated, or to reuse an existing one from the map.
272
220
  * @param {Array<string>} controlNames if a value is provided, it will be used
273
221
  * to filter the fields that are returned.
274
- * @return {void}
222
+ * @return {Array<VasFieldDto>}
275
223
  */
276
224
  hydrateFields(formModel, controlFieldIdMap = new Map(), controlNames) {
277
225
  const fields = [];
@@ -336,20 +284,11 @@ class VasJobModel extends vas_restricted_account_object_model_1.VasRestrictedAcc
336
284
  return;
337
285
  }
338
286
  case 2: {
339
- if (!this.$this[path[0]]) {
340
- this.$this[path[0]] = {};
341
- }
342
287
  // eslint-disable-next-line max-len
343
288
  this.$this[path[0]][path[1]] = value;
344
289
  return;
345
290
  }
346
291
  case 3: {
347
- if (!this.$this[path[0]]) {
348
- this.$this[path[0]] = {};
349
- }
350
- if (!this.$this[path[0]][path[1]]) {
351
- this.$this[path[0]][path[1]] = {};
352
- }
353
292
  // eslint-disable-next-line max-len
354
293
  this.$this[path[0]][path[1]][path[2]] = value;
355
294
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"vas-job.model.js","sourceRoot":"","sources":["../../../../../projects/vas-lib/src/lib/entity/vas-job.model.ts"],"names":[],"mappings":"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","sourcesContent":["import { VasFileDto } from './vas-file.dto';\nimport { UUID } from 'angular2-uuid';\nimport moment from 'moment';\nimport { getValueByPath } from '../utils/get-value-by-path';\nimport { VasBaseDto } from './vas-base.dto';\nimport { VasFieldDto, VasFieldDtoValue } from './vas-field.dto';\nimport { VasFieldModel } from './vas-field.model';\nimport { VasFormModel } from './vas-form.model';\nimport { VasJobDto } from './vas-job.dto';\nimport { VasRestrictedAccountObjectModel } from './vas-restricted-account-object.model';\n\nexport declare interface VasJobModelDynamicInterface {\n [s: string]: string | number | Record<string, VasFieldDtoValue>;\n}\n\nexport interface ParseSyntaxOptions {\n // This value will be used to adjust any datetime values that are referenced\n // in the syntax string. See\n // https://momentjscom.readthedocs.io/en/latest/moment/03-manipulating/09-utc-offset/\n // for more information about how `moment` will handle the value.\n timeZoneOffset: number,\n // this dictionary can be passed in to contain other objects to be referenced\n // in the syntax. For example if we have {job.foo} this will reference the\n // job's `foo` property, however if we have \"reportLayout.title\" this will\n // expect to find a property of `objects` called `reportLayout` which will\n // have a property called `title`\n objects?: Record<string, Partial<VasBaseDto> | Record<string, VasFieldDtoValue>>;\n}\n\n/**\n * JobModel\n */\nexport class VasJobModel extends VasRestrictedAccountObjectModel {\n /**\n * @param {string} id\n * @param {string} created\n * @param {string} serverCreated\n * @param {string} createdBy\n * @param {string} modified\n * @param {string} serverModified\n * @param {string} modifiedBy\n * @param {string} account\n * @param {string} accessGroup\n * @param {string} reference\n * @param {string} jobDate\n * @param {string} jobStatus\n * @param {string} jobType\n * @param {string} assigneeId\n * @param {string} formId\n * @param {number} timeZoneOffset\n * @param {number} pendingFields\n * @param {string} childModified\n * @param {number} version\n * @param {Array<VasFieldDto>} fields\n * @param {Array<VasFileDto>} files\n */\n constructor(\n public override id: string,\n public override created: string,\n public override serverCreated: string,\n public override createdBy: string,\n public override modified: string,\n public override serverModified: string,\n public override modifiedBy: string,\n public override account: string,\n public override accessGroup: string,\n public reference: string,\n public jobDate: string,\n public jobStatus: string,\n public jobType: string,\n public assigneeId: string,\n public formId: string,\n public timeZoneOffset: number,\n public pendingFields: number,\n public childModified: string,\n public version: number,\n public fields: Array<VasFieldDto>,\n public files: Array<VasFileDto>\n ) {\n super(\n id,\n created,\n serverCreated,\n createdBy,\n modified,\n serverModified,\n modifiedBy,\n account,\n accessGroup\n );\n }\n\n /**\n * Returns this with the dynamic interface\n * @return {VasJobModelDynamicInterface}\n */\n get $this(): VasJobModelDynamicInterface {\n return this as any;\n }\n\n /**\n * Returns a list of Job dynamic properties i.e. those that are added by the\n * dynamic forms\n */\n get dynamicProperties(): Array<string> {\n const nativeProps = this.staticProperties;\n return Object\n .getOwnPropertyNames(this)\n .filter(prop => !nativeProps.includes(prop));\n }\n\n /**\n * Returns a list of Job static properties i.e. those that are declared by\n * the type\n */\n get staticProperties(): Array<string> {\n return Object.getOwnPropertyNames(VasJobModel.empty());\n }\n\n /**\n * @return {VasJobModel}\n */\n public static empty(): VasJobModel {\n return new VasJobModel(\n // eslint-disable-next-line new-cap\n UUID.UUID(),\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n moment().utcOffset(),\n 0,\n '',\n 0,\n [],\n []\n );\n }\n\n /**\n * @param {VasJobDto} jobDto\n * @return {VasJobModel}\n */\n public static fromDto(jobDto: Partial<VasJobDto>): VasJobModel {\n const model = new VasJobModel(\n // eslint-disable-next-line new-cap\n jobDto.id || UUID.UUID(),\n jobDto.created || '',\n jobDto.serverCreated || '',\n jobDto.createdBy || '',\n jobDto.modified || '',\n jobDto.serverModified || '',\n jobDto.modifiedBy || '',\n jobDto.account || '',\n jobDto.accessGroup || '',\n jobDto.reference || '',\n jobDto.jobDate || '',\n jobDto.jobStatus || '',\n jobDto.jobType || '',\n jobDto.assigneeId || '',\n jobDto.formId || '',\n jobDto.timeZoneOffset || moment().utcOffset(),\n jobDto.pendingFields || 0,\n jobDto.childModified || '',\n jobDto.version || 0,\n jobDto.fields || [],\n jobDto.files || []\n );\n const emptyKeys = model.staticProperties;\n Object\n .keys(jobDto)\n .filter(key => emptyKeys.indexOf(key) === -1)\n .forEach((key: string) =>\n model.$this[key] = (jobDto as VasJobModelDynamicInterface)[key]\n );\n return model;\n }\n\n /**\n * @param {VasFormModel} formModel\n * @return {Record<string, VasFieldDtoValue>}\n */\n getFields(formModel: VasFormModel): Record<string, VasFieldDtoValue> {\n const fields: {[key: string]: VasFieldDtoValue} = {};\n formModel.groups\n .forEach(group => {\n group.controls.forEach(control => {\n (fields)[control.reportTemplateName] =\n this.getValueByPath([group.name, control.name]);\n });\n });\n return fields;\n }\n\n /**\n * Will return an object whose keys are the names of all fields in the job but\n * with the \"fields.\" part removed. This method is similar to `getFields`\n * except that this method will only return values that are set whereas\n * `getFields` will return a property regardless (because it uses the form to\n * drive the logic)\n * @return {Record<string, VasFieldDtoValue>}\n */\n getFields2(): Record<string, VasFieldDtoValue> {\n let fields: {[key: string]: VasFieldDtoValue} = {};\n this.dynamicProperties\n .forEach((groupName) => {\n Object\n .keys(this.$this[groupName])\n .forEach(controlName => {\n const controlNameShort = controlName.replace(/fields\\./, '');\n fields[controlNameShort] = this.getValueByPath(\n [groupName, controlName]\n )\n })\n }, {})\n return fields;\n }\n\n /**\n * This method will hydrate the `fields` property of the model. The reason for\n * this is that we have different ways to store the field data. One way, is\n * we store them as dynamic properties of the job e.g. job.foo.bar, the other\n * is in an array of Field. The former is nice to work with in clients,\n * whereas the latter more suited to relational database.\n *\n * A) job with dynamic properties, e.g.\n * {\n * id: <guid>,\n * reference: \"something\"\n * <other static job properties>...\n * foo: {\n * bar: \"value\"\n * }\n * }\n *\n * B) job with array of Field\n * {\n * id: <guid>,\n * reference: \"something\"\n * <other static job properties>...\n * <will not have dynamic properties>...\n * fields: [\n * {\n * id: <guid>,\n * <other field properties>,\n * value: \"value\"\n * }\n * ]\n * }\n *\n * What this method does is given a VasJobModel that has been populated with\n * a VasJobDto in form B (i.e. `.fields` are populated - usually from a VASAPI\n * response), hydrate the dynamic properties of the model. NOTE: knowledge of\n * the Form that was used to crate the Job is required because it will contain\n * the Groups, which names are used in the hydrating\n *\n * @param {VasFormModel} formModel the VasFormModel that was used to create\n * the job\n * @return {void}\n */\n hydrateDynamicProps(\n formModel: VasFormModel\n ): void {\n formModel.groups\n .forEach(group => {\n const p0 = group.name;\n group.controls\n .forEach(control => {\n const p1 = control.name;\n const f = this.fields.find(field => field.control === control.id);\n if (!f) {\n return;\n }\n this.setValueByPath(f.value, [p0, p1]);\n })\n })\n }\n\n /**\n * This method will hydrate the `fields` property of the model. The reason for\n * this is that we have different ways to store the field data. One way, is\n * we store them as dynamic properties of the job e.g. job.foo.bar, the other\n * is in an array of Field. The former is nice to work with in clients,\n * whereas the latter more suited to relational database.\n *\n * A) job with dynamic properties, e.g.\n * {\n * id: <guid>,\n * reference: \"something\"\n * <other static job properties>...\n * foo: {\n * bar: \"value\"\n * }\n * }\n *\n * B) job with fields\n * {\n * id: <guid>,\n * reference: \"something\"\n * <other static job properties>...\n * <will not have dynamic properties>...\n * fields: [\n * {\n * id: <guid>,\n * <other field properties>,\n * value: \"value\"\n * }\n * ]\n * }\n *\n * So, what this method does is given a JobModel in the form of A, read all\n * of those dynamic properties and set them into `fields`. Doing this requires\n * knowledge of the Form that was used to create the job. Moreover, since the\n * dynamic properties do not contain the ids of the fields, we also allow to\n * pass in a `controlFieldIdMap`. This map stores the mapping between Control\n * and the Field that was created in the Job to store the value for that\n * Control. This is useful, if for example you want to compare a Job in form A\n * with a Job in form B, for example if you want to update the Job on the API\n * with a Job that was saved by a client in form A.\n *\n * E.g.\n * Client -> API: client requests form\n * User -> Client: user fills in the form and submits\n * Client -> Firestore: client saves the Job in form A i.e. dynamic props\n * Firestore -> Function: A function is triggered to sync the job to the API\n * Function -> API: Function checks if job already exists, it receives 404\n * Function -> Function: The function calls `hydrateFields(...)`\n * Function -> API: The function POST the Job to /jobs\n * Function -> API: The function POST each field to /fields\n *\n * Similarly, if the user updates the job\n * Client -> API: client requests form\n * User -> Client: user fills in the form and submits an update\n * Client -> Firestore: client saves the Job in form A i.e. dynamic props\n * Firestore -> Function: A function is triggered to sync the job to the API\n * Function -> API: Function checks if job already exists, it receives 200\n * Function -> Function: The function calls `hydrateFields(...)` passing in\n * the map is made by iterating over the fields it\n * received from the API and storing the mappings\n * between controlId and fieldId for each field\n * Function -> API: The function PATCH the Job to /jobs\n * Function -> API: The function POST/PATCH each field to /fields\n * treated as new\n *\n * @param {VasFormModel} formModel the VasFormModel that was used to create\n * the job\n * @param {Map<string, string>} controlFieldIdMap a mapping of control to\n * field ids. This is used to determine whether a new id for the field should\n * be generated, or to reuse an existing one from the map.\n * @param {Array<string>} controlNames if a value is provided, it will be used\n * to filter the fields that are returned.\n * @return {void}\n */\n hydrateFields(\n formModel: VasFormModel,\n controlFieldIdMap: Map<string, string> = new Map<string, string>(),\n controlNames?: Array<string>\n ): void {\n const fields: Array<VasFieldDto> = [];\n formModel.groups\n .forEach(group => {\n group.controls.forEach(control => {\n\n if (!control.name.startsWith('fields.')) {\n return;\n }\n\n if (controlNames && !controlNames.includes(control.name)) {\n return;\n }\n\n fields.push(VasFieldModel.fromDto({\n // if the controlId exists in the map, use the associated fieldId,\n // otherwise generate a new id for the field.\n id: controlFieldIdMap.get(control.id) || UUID.UUID(),\n account: this.account,\n job: this.id,\n createdBy: this.createdBy,\n created: this.created,\n modifiedBy: this.modifiedBy,\n modified: this.modified,\n control: control.id,\n value: this.getValueByPath(\n [group.name, control.name]\n )\n }));\n });\n });\n this.fields = fields;\n }\n\n /**\n\n * @param {string[]} path path segments\n * @return {void}\n */\n getValueByPath<T extends VasFieldDtoValue>(\n path: string[] = []\n ): T | undefined {\n return getValueByPath(path, this.$this);\n }\n\n /**\n * A very non sophisticated way to set values in the job via paths\n *\n * For example:\n *\n * setValueByPath('value', ['foo', 'bar']);\n *\n * will make results in job\n * {\n * foo: {\n * bar: 'value'\n * }\n * }\n *\n * @param {any} value the value to set\n * @param {string[]} path path segments\n */\n setValueByPath(value: VasFieldDtoValue, path: string[] = []): void {\n switch (path.length) {\n case 0: {\n return;\n }\n case 1: {\n (this as any)[path[0]] = value;\n return;\n }\n case 2: {\n if (!this.$this[path[0]]) {\n this.$this[path[0]] = {};\n }\n // eslint-disable-next-line max-len\n (this.$this[path[0]] as Record<string, VasFieldDtoValue>)[path[1]] = value;\n return;\n }\n case 3: {\n if (!this.$this[path[0]]) {\n this.$this[path[0]] = {};\n }\n if (!(this.$this[path[0]] as Record<string, any>)[path[1]]) {\n (this.$this[path[0]] as Record<string, any>)[path[1]] = {};\n }\n // eslint-disable-next-line max-len\n ((this.$this[path[0]] as Record<string, VasFieldDtoValue>)[path[1]] as Record<string, VasFieldDtoValue>)[path[2]] = value;\n return;\n }\n default: {\n throw Error('path has too many segments');\n }\n }\n }\n\n /**\n * @param {boolean} staticOnly if true, will only output values for the static\n * properties in the dto\n * @return {VasJobDto}\n */\n public toDto(staticOnly = false): VasJobDto {\n\n if (staticOnly) {\n return {\n id: this.id,\n created: this.created,\n createdBy: this.createdBy,\n modified: this.modified,\n modifiedBy: this.modifiedBy,\n serverCreated: this.serverCreated,\n serverModified: this.serverModified,\n account: this.account,\n accessGroup: this.accessGroup,\n reference: this.reference,\n jobDate: this.jobDate,\n jobStatus: this.jobStatus,\n jobType: this.jobType,\n assigneeId: this.assigneeId,\n formId: this.formId,\n timeZoneOffset: this.timeZoneOffset,\n pendingFields: this.pendingFields,\n childModified: this.childModified,\n version: this.version,\n fields: this.fields,\n files: this.files\n };\n }\n\n const dto = {} as VasJobModelDynamicInterface;\n [...this.staticProperties, ...this.dynamicProperties]\n .forEach(prop =>\n (dto)[prop] = this.$this[prop]);\n\n return dto as any;\n }\n\n /**\n * This method will parse a syntax that allows us to build strings from the\n * values of from the job model. For example if the job model was:\n *\n * {\n * foo: 'bar'\n * }\n *\n * and we pass \"i am foo {foo}\", the result would be:\n *\n * \"i am foo bar\"\n *\n * we can also use moment to parse dates, for example if the job model was:\n *\n * {\n * created: \"2022-01-01T00:00:00+0000\"\n * }\n *\n * and we pass \"{created|date:YY-MM-DD}\", the result would be:\n *\n * \"2022-01-01\"\n *\n * @param {string} value a string with the syntax\n * @param {ParseSyntaxOptions} options\n * @return {string} the results of parsing the syntax on this job\n */\n parseSyntax(\n value: string,\n options: ParseSyntaxOptions = {\n timeZoneOffset: 0\n }\n ): string {\n\n if (!value || typeof value !== 'string') {\n return '';\n }\n return value.replace(/({[^}]*})/g, (match: string, token: string) => {\n const syntax = token.substring(1, token.length - 1);\n\n let [key, filter] = syntax.split('|');\n key = (key || '').trim();\n filter = (filter || '').trim()\n\n let filterName, filterArg: string = '';\n if (filter) {\n const splitIndex = filter.indexOf(':');\n if (splitIndex !== -1) {\n filterName = filter.substring(0, splitIndex);\n filterArg = filter.substring(splitIndex + 1);\n } else {\n filterName = filter;\n filterArg = '';\n }\n filterName = (filterName || '').trim();\n filterArg = (filterArg || '').trim();\n }\n const path = key.split('.');\n const objectKey = path.shift() || '';\n let result = '';\n if (objectKey === 'job') {\n result = (this.getValueByPath(path) || '').toString();\n } else if (objectKey === 'fields') {\n result = (getValueByPath(path, this.getFields2()) || '').toString();\n } else if (objectKey.length) {\n if (options.objects) {\n if (options.objects[objectKey] === undefined) {\n console.debug(\n `objectKey ${objectKey} is not present in options.object`\n );\n result = '';\n } else {\n result = (getValueByPath(path, options.objects[objectKey]) || '')\n .toString();\n }\n } else {\n console.debug(\n `objectKey ${objectKey} was used but options.object is not set`\n );\n return '';\n }\n } else {\n return '';\n }\n\n\n if (filterName && result) {\n switch (filterName) {\n case 'date': {\n return moment(result)\n .utcOffset(options.timeZoneOffset)\n .format(filterArg || '');\n }\n default: {\n console.warn('unknown filter %s', filterName);\n }\n }\n }\n\n return result;\n }).trim();\n };\n\n /**\n * @return {object}\n */\n override toApiDto(): Record<string, string | number | boolean> {\n return {\n ...super.toApiDto(),\n reference: this.reference || '~',\n jobDate: this.jobDate || '~',\n jobType: this.jobType || '~',\n accessGroup: this.accessGroup || '~',\n jobStatus: this.jobStatus || '~',\n assigneeId: this.assigneeId || '~',\n timeZoneOffset: this.timeZoneOffset || 0,\n pendingFields: this.pendingFields || 0,\n };\n }\n}\n"]}
1
+ {"version":3,"file":"vas-job.model.js","sourceRoot":"","sources":["../../../../../projects/vas-lib/src/lib/entity/vas-job.model.ts"],"names":[],"mappings":"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","sourcesContent":["import { VasFileDto } from './vas-file.dto';\nimport { UUID } from 'angular2-uuid';\nimport moment from 'moment';\nimport { getValueByPath } from '../utils/get-value-by-path';\nimport { VasBaseDto } from './vas-base.dto';\nimport { VasFieldDto, VasFieldDtoValue } from './vas-field.dto';\nimport { VasFieldModel } from './vas-field.model';\nimport { VasFormModel } from './vas-form.model';\nimport { VasJobDto } from './vas-job.dto';\nimport { VasRestrictedAccountObjectModel } from './vas-restricted-account-object.model';\n\nexport declare interface VasJobModelDynamicInterface {\n [s: string]: string | number | Record<string, VasFieldDtoValue>;\n}\n\nexport interface ParseSyntaxOptions {\n // This value will be used to adjust any datetime values that are referenced\n // in the syntax string. See\n // https://momentjscom.readthedocs.io/en/latest/moment/03-manipulating/09-utc-offset/\n // for more information about how `moment` will handle the value.\n timeZoneOffset: number,\n // this dictionary can be passed in to contain other objects to be referenced\n // in the syntax. For example if we have {job.foo} this will reference the\n // job's `foo` property, however if we have \"reportLayout.title\" this will\n // expect to find a property of `objects` called `reportLayout` which will\n // have a property called `title`\n objects?: Record<string, Partial<VasBaseDto> | Record<string, VasFieldDtoValue>>;\n}\n\n/**\n * JobModel\n */\nexport class VasJobModel extends VasRestrictedAccountObjectModel {\n /**\n * @param {string} id\n * @param {string} created\n * @param {string} serverCreated\n * @param {string} createdBy\n * @param {string} modified\n * @param {string} serverModified\n * @param {string} modifiedBy\n * @param {string} account\n * @param {string} accessGroup\n * @param {string} reference\n * @param {string} jobDate\n * @param {string} jobStatus\n * @param {string} jobType\n * @param {string} assigneeId\n * @param {string} formId\n * @param {number} timeZoneOffset\n * @param {number} pendingFields\n * @param {string} childModified\n * @param {number} version\n * @param {Array<VasFieldDto>} fields\n * @param {Array<VasFileDto>} files\n */\n constructor(\n public override id: string,\n public override created: string,\n public override serverCreated: string,\n public override createdBy: string,\n public override modified: string,\n public override serverModified: string,\n public override modifiedBy: string,\n public override account: string,\n public override accessGroup: string,\n public reference: string,\n public jobDate: string,\n public jobStatus: string,\n public jobType: string,\n public assigneeId: string,\n public formId: string,\n public timeZoneOffset: number,\n public pendingFields: number,\n public childModified: string,\n public version: number,\n public fields: Array<VasFieldDto>,\n public files: Array<VasFileDto>\n ) {\n super(\n id,\n created,\n serverCreated,\n createdBy,\n modified,\n serverModified,\n modifiedBy,\n account,\n accessGroup\n );\n }\n\n /**\n * Returns this with the dynamic interface\n * @return {VasJobModelDynamicInterface}\n */\n get $this(): VasJobModelDynamicInterface {\n return this as any;\n }\n\n /**\n * Returns a list of Job dynamic properties i.e. those that are added by the\n * dynamic forms\n */\n get dynamicProperties(): Array<string> {\n const nativeProps = this.staticProperties;\n return Object\n .getOwnPropertyNames(this)\n .filter(prop => !nativeProps.includes(prop));\n }\n\n /**\n * Returns a list of Job static properties i.e. those that are declared by\n * the type\n */\n get staticProperties(): Array<string> {\n return Object.getOwnPropertyNames(VasJobModel.empty());\n }\n\n /**\n * @return {VasJobModel}\n */\n public static empty(): VasJobModel {\n return new VasJobModel(\n // eslint-disable-next-line new-cap\n UUID.UUID(),\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n moment().utcOffset(),\n 0,\n '',\n 0,\n [],\n []\n );\n }\n\n /**\n * @param {VasJobDto} jobDto\n * @return {VasJobModel}\n */\n public static fromDto(jobDto: Partial<VasJobDto>): VasJobModel {\n const model = new VasJobModel(\n // eslint-disable-next-line new-cap\n jobDto.id || UUID.UUID(),\n jobDto.created || '',\n jobDto.serverCreated || '',\n jobDto.createdBy || '',\n jobDto.modified || '',\n jobDto.serverModified || '',\n jobDto.modifiedBy || '',\n jobDto.account || '',\n jobDto.accessGroup || '',\n jobDto.reference || '',\n jobDto.jobDate || '',\n jobDto.jobStatus || '',\n jobDto.jobType || '',\n jobDto.assigneeId || '',\n jobDto.formId || '',\n jobDto.timeZoneOffset || moment().utcOffset(),\n jobDto.pendingFields || 0,\n jobDto.childModified || '',\n jobDto.version || 0,\n jobDto.fields || [],\n jobDto.files || []\n );\n const emptyKeys = model.staticProperties;\n Object\n .keys(jobDto)\n .filter(key => emptyKeys.indexOf(key) === -1)\n .forEach((key: string) =>\n model.$this[key] = (jobDto as VasJobModelDynamicInterface)[key]\n );\n return model;\n }\n\n /**\n * @param {VasFormModel} formModel\n * @return {Record<string, VasFieldDtoValue>}\n */\n getFields(formModel: VasFormModel): Record<string, VasFieldDtoValue> {\n const fields: {[key: string]: VasFieldDtoValue} = {};\n formModel.groups\n .forEach(group => {\n group.controls.forEach(control => {\n (fields)[control.reportTemplateName] =\n this.getValueByPath([group.name, control.name]);\n });\n });\n return fields;\n }\n\n /**\n * Will return an object whose keys are the names of all fields in the job but\n * with the \"fields.\" part removed. This method is similar to `getFields`\n * except that this method will only return values that are set whereas\n * `getFields` will return a property regardless (because it uses the form to\n * drive the logic)\n * @return {Record<string, VasFieldDtoValue>}\n */\n getFields2(): Record<string, VasFieldDtoValue> {\n let fields: {[key: string]: VasFieldDtoValue} = {};\n this.dynamicProperties\n .forEach((groupName) => {\n Object\n .keys(this.$this[groupName])\n .forEach(controlName => {\n const controlNameShort = controlName.replace(/fields\\./, '');\n fields[controlNameShort] = this.getValueByPath(\n [groupName, controlName]\n )\n })\n }, {})\n return fields;\n }\n\n /**\n * This method will hydrate the `fields` property of the model. The reason for\n * this is that we have different ways to store the field data. One way, is\n * we store them as dynamic properties of the job. For example job.foo.bar,\n * where `foo` is the name of a Group, and `bar` is the name of a control.\n * Thus, when we create a job using a form in the client, the job object will\n * have its static properties (id, account, reference etc), and also a number\n * of dynamic properties determined by the Groups and Controls. This kind of\n * object is nice to work with in certain circumstances. However, the api\n * works differently. In the API a Job is a record, and references a number of\n * Field records. Each Field stores the value. Comparing these two models we\n * have:\n * A) job with dynamic properties, e.g.\n * {\n * id: <guid>,\n * reference: \"something\"\n * <other static job properties>...\n * foo: {\n * bar: \"value\"\n * }\n * }\n *\n * B) job with fields\n * {\n * id: <guid>,\n * reference: \"something\"\n * <other static job properties>...\n * <will not have dynamic properties>...\n * fields: [\n * {\n * id: <guid>,\n * <other field properties>,\n * value: \"value\"\n * }\n * ]\n * }\n *\n * So, what this method does is given a JobModel in the form of A, read all\n * of those dynamic properties and set them into `fields`. Doing this requires\n * knowledge of the Form that was used to create the job. Moreover, since the\n * dynamic properties do not contain the ids of the fields, we also allow to\n * pass in a `controlFieldIdMap`. This map stores the mapping between Control\n * and the Field that was created in the Job to store the value for that\n * Control. This is useful, if for example you want to compare a Job in form A\n * with a Job in form B, for example if you want to update the Job on the API\n * with a Job that was saved by a client in form A.\n *\n * E.g.\n * Client -> API: client requests form\n * User -> Client: user fills in the form and submits\n * Client -> Firestore: client saves the Job in form A i.e. dynamic props\n * Firestore -> Function: A function is triggered to sync the job to the API\n * Function -> API: Function checks if job already exists, it receives 404\n * Function -> Function: The function calls `hydrateFields(...)`\n * Function -> API: The function POST the Job to /jobs\n * Function -> API: The function POST each field to /fields\n *\n * Similarly, if the user updates the job\n * Client -> API: client requests form\n * User -> Client: user fills in the form and submits an update\n * Client -> Firestore: client saves the Job in form A i.e. dynamic props\n * Firestore -> Function: A function is triggered to sync the job to the API\n * Function -> API: Function checks if job already exists, it receives 200\n * Function -> Function: The function calls `hydrateFields(...)` passing in\n * the map is made by iterating over the fields it\n * received from the API and storing the mappings\n * between controlId and fieldId for each field\n * Function -> API: The function PATCH the Job to /jobs\n * Function -> API: The function POST/PATCH each field to /fields\n * treated as new\n *\n * @param {VasFormModel} formModel the VasFormModel that was used to create\n * the job\n * @param {Map<string, string>} controlFieldIdMap a mapping of control to\n * field ids. This is used to determine whether a new id for the field should\n * be generated, or to reuse an existing one from the map.\n * @param {Array<string>} controlNames if a value is provided, it will be used\n * to filter the fields that are returned.\n * @return {Array<VasFieldDto>}\n */\n hydrateFields(\n formModel: VasFormModel,\n controlFieldIdMap: Map<string, string> = new Map<string, string>(),\n controlNames?: Array<string>\n ): void {\n const fields: Array<VasFieldDto> = [];\n formModel.groups\n .forEach(group => {\n group.controls.forEach(control => {\n\n if (!control.name.startsWith('fields.')) {\n return;\n }\n\n if (controlNames && !controlNames.includes(control.name)) {\n return;\n }\n\n fields.push(VasFieldModel.fromDto({\n // if the controlId exists in the map, use the associated fieldId,\n // otherwise generate a new id for the field.\n id: controlFieldIdMap.get(control.id) || UUID.UUID(),\n account: this.account,\n job: this.id,\n createdBy: this.createdBy,\n created: this.created,\n modifiedBy: this.modifiedBy,\n modified: this.modified,\n control: control.id,\n value: this.getValueByPath(\n [group.name, control.name]\n )\n }));\n });\n });\n this.fields = fields;\n }\n\n /**\n\n * @param {string[]} path path segments\n * @return {void}\n */\n getValueByPath<T extends VasFieldDtoValue>(\n path: string[] = []\n ): T | undefined {\n return getValueByPath(path, this.$this);\n }\n\n /**\n * A very non sophisticated way to set values in the job via paths\n *\n * For example:\n *\n * setValueByPath('value', ['foo', 'bar']);\n *\n * will make results in job\n * {\n * foo: {\n * bar: 'value'\n * }\n * }\n *\n * @param {any} value the value to set\n * @param {string[]} path path segments\n */\n setValueByPath(value: VasFieldDtoValue, path: string[] = []): void {\n switch (path.length) {\n case 0: {\n return;\n }\n case 1: {\n (this as any)[path[0]] = value;\n return;\n }\n case 2: {\n // eslint-disable-next-line max-len\n (this.$this[path[0]] as Record<string, VasFieldDtoValue>)[path[1]] = value;\n return;\n }\n case 3: {\n // eslint-disable-next-line max-len\n ((this.$this[path[0]] as Record<string, VasFieldDtoValue>)[path[1]] as Record<string, VasFieldDtoValue>)[path[2]] = value;\n return;\n }\n default: {\n throw Error('path has too many segments');\n }\n }\n }\n\n /**\n * @param {boolean} staticOnly if true, will only output values for the static\n * properties in the dto\n * @return {VasJobDto}\n */\n public toDto(staticOnly = false): VasJobDto {\n\n if (staticOnly) {\n return {\n id: this.id,\n created: this.created,\n createdBy: this.createdBy,\n modified: this.modified,\n modifiedBy: this.modifiedBy,\n serverCreated: this.serverCreated,\n serverModified: this.serverModified,\n account: this.account,\n accessGroup: this.accessGroup,\n reference: this.reference,\n jobDate: this.jobDate,\n jobStatus: this.jobStatus,\n jobType: this.jobType,\n assigneeId: this.assigneeId,\n formId: this.formId,\n timeZoneOffset: this.timeZoneOffset,\n pendingFields: this.pendingFields,\n childModified: this.childModified,\n version: this.version,\n fields: this.fields,\n files: this.files\n };\n }\n\n const dto = {} as VasJobModelDynamicInterface;\n [...this.staticProperties, ...this.dynamicProperties]\n .forEach(prop =>\n (dto)[prop] = this.$this[prop]);\n\n return dto as any;\n }\n\n /**\n * This method will parse a syntax that allows us to build strings from the\n * values of from the job model. For example if the job model was:\n *\n * {\n * foo: 'bar'\n * }\n *\n * and we pass \"i am foo {foo}\", the result would be:\n *\n * \"i am foo bar\"\n *\n * we can also use moment to parse dates, for example if the job model was:\n *\n * {\n * created: \"2022-01-01T00:00:00+0000\"\n * }\n *\n * and we pass \"{created|date:YY-MM-DD}\", the result would be:\n *\n * \"2022-01-01\"\n *\n * @param {string} value a string with the syntax\n * @param {ParseSyntaxOptions} options\n * @return {string} the results of parsing the syntax on this job\n */\n parseSyntax(\n value: string,\n options: ParseSyntaxOptions = {\n timeZoneOffset: 0\n }\n ): string {\n\n if (!value || typeof value !== 'string') {\n return '';\n }\n return value.replace(/({[^}]*})/g, (match: string, token: string) => {\n const syntax = token.substring(1, token.length - 1);\n\n let [key, filter] = syntax.split('|');\n key = (key || '').trim();\n filter = (filter || '').trim()\n\n let filterName, filterArg: string = '';\n if (filter) {\n const splitIndex = filter.indexOf(':');\n if (splitIndex !== -1) {\n filterName = filter.substring(0, splitIndex);\n filterArg = filter.substring(splitIndex + 1);\n } else {\n filterName = filter;\n filterArg = '';\n }\n filterName = (filterName || '').trim();\n filterArg = (filterArg || '').trim();\n }\n const path = key.split('.');\n const objectKey = path.shift() || '';\n let result = '';\n if (objectKey === 'job') {\n result = (this.getValueByPath(path) || '').toString();\n } else if (objectKey === 'fields') {\n result = (getValueByPath(path, this.getFields2()) || '').toString();\n } else if (objectKey.length) {\n if (options.objects) {\n if (options.objects[objectKey] === undefined) {\n console.debug(\n `objectKey ${objectKey} is not present in options.object`\n );\n result = '';\n } else {\n result = (getValueByPath(path, options.objects[objectKey]) || '')\n .toString();\n }\n } else {\n console.debug(\n `objectKey ${objectKey} was used but options.object is not set`\n );\n return '';\n }\n } else {\n return '';\n }\n\n\n if (filterName && result) {\n switch (filterName) {\n case 'date': {\n return moment(result)\n .utcOffset(options.timeZoneOffset)\n .format(filterArg || '');\n }\n default: {\n console.warn('unknown filter %s', filterName);\n }\n }\n }\n\n return result;\n }).trim();\n };\n\n /**\n * @return {object}\n */\n override toApiDto(): Record<string, string | number | boolean> {\n return {\n ...super.toApiDto(),\n reference: this.reference || '~',\n jobDate: this.jobDate || '~',\n jobType: this.jobType || '~',\n accessGroup: this.accessGroup || '~',\n jobStatus: this.jobStatus || '~',\n assigneeId: this.assigneeId || '~',\n timeZoneOffset: this.timeZoneOffset || 0,\n pendingFields: this.pendingFields || 0,\n };\n }\n}\n"]}
@@ -80,6 +80,11 @@ export class VasControlModel extends VasBaseModel {
80
80
  case 'contact': {
81
81
  return {};
82
82
  }
83
+ case 'toggle': {
84
+ return {
85
+ checked: false, comment: ''
86
+ };
87
+ }
83
88
  }
84
89
  }
85
90
  return this.parseMaybeJson(this.defaultValue);
@@ -158,4 +163,4 @@ export class VasControlModel extends VasBaseModel {
158
163
  };
159
164
  }
160
165
  }
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFzLWNvbnRyb2wubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YXMtbGliL3NyYy9saWIvZW50aXR5L3Zhcy1jb250cm9sLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUdoRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSXJDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGVBQWdCLFNBQVEsWUFBWTtJQUkvQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FvQkc7SUFDSCxZQUNrQixFQUFVLEVBQ1YsT0FBZSxFQUNmLGFBQXFCLEVBQ3JCLFNBQWlCLEVBQ2pCLFFBQWdCLEVBQ2hCLGNBQXNCLEVBQ3RCLFVBQWtCLEVBQzNCLE9BQWUsRUFDZixXQUFtQixFQUNuQixXQUFtQixFQUNuQixLQUFhLEVBQ2IsVUFBb0IsRUFDcEIsSUFBWSxFQUNaLEtBQWEsRUFDYixRQUFpQixFQUNqQixRQUFnQixFQUNoQixXQUFtQixFQUNuQixZQUFvQixFQUNwQixPQUFlO1FBRXRCLEtBQUssQ0FDSCxFQUFFLEVBQ0YsT0FBTyxFQUNQLGFBQWEsRUFDYixTQUFTLEVBQ1QsUUFBUSxFQUNSLGNBQWMsRUFDZCxVQUFVLENBQ1gsQ0FBQztRQTVCYyxPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQ1YsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBQ3JCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixtQkFBYyxHQUFkLGNBQWMsQ0FBUTtRQUN0QixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQzNCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUNuQixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUNuQixV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WUFDdkIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07U0FDcEIsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhc0Jhc2VNb2RlbCB9IGZyb20gJy4vdmFzLWJhc2UubW9kZWwnO1xuaW1wb3J0IHsgVmFzQ29udHJvbFR5cGVNb2RlbCB9IGZyb20gJy4vdmFzLWNvbnRyb2wtdHlwZS5tb2RlbCc7XG5pbXBvcnQgeyBWYXNDb250cm9sRHRvIH0gZnJvbSAnLi92YXMtY29udHJvbC5kdG8nO1xuaW1wb3J0IHsgVVVJRCB9IGZyb20gJ2FuZ3VsYXIyLXV1aWQnO1xuXG5leHBvcnQgZGVjbGFyZSB0eXBlIFZhc0NvbnRyb2xNb2RlbERlZmF1bHRWYWx1ZVR5cGUgPSBzdHJpbmcgfCBudW1iZXIgfCBvYmplY3Q7XG5cbi8qKlxuICogQ29udHJvbE1vZGVsXG4gKi9cbmV4cG9ydCBjbGFzcyBWYXNDb250cm9sTW9kZWwgZXh0ZW5kcyBWYXNCYXNlTW9kZWwgaW1wbGVtZW50cyBWYXNDb250cm9sRHRvIHtcbiAgcHVibGljIGNvbnRyb2xUeXBlTW9kZWw6IFZhc0NvbnRyb2xUeXBlTW9kZWwgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBjb25maWdDYWNoZTogYW55ID0gdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNyZWF0ZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlcnZlckNyZWF0ZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNyZWF0ZWRCeVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kaWZpZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlcnZlck1vZGlmaWVkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtb2RpZmllZEJ5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhY2NvdW50XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhY2Nlc3NHcm91cFxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29udHJvbFR5cGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGdyb3VwXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IHZhbGlkYXRvcnNcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gbGlua2FibGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IHNlcXVlbmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGVmYXVsdFZhbHVlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb25maWdcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBvdmVycmlkZSBpZDogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBjcmVhdGVkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIHNlcnZlckNyZWF0ZWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgY3JlYXRlZEJ5OiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIG1vZGlmaWVkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIHNlcnZlck1vZGlmaWVkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIG1vZGlmaWVkQnk6IHN0cmluZyxcbiAgICBwdWJsaWMgYWNjb3VudDogc3RyaW5nLFxuICAgIHB1YmxpYyBhY2Nlc3NHcm91cDogc3RyaW5nLFxuICAgIHB1YmxpYyBjb250cm9sVHlwZTogc3RyaW5nLFxuICAgIHB1YmxpYyBncm91cDogc3RyaW5nLFxuICAgIHB1YmxpYyB2YWxpZGF0b3JzOiBzdHJpbmdbXSxcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nLFxuICAgIHB1YmxpYyB0aXRsZTogc3RyaW5nLFxuICAgIHB1YmxpYyBsaW5rYWJsZTogYm9vbGVhbixcbiAgICBwdWJsaWMgc2VxdWVuY2U6IG51bWJlcixcbiAgICBwdWJsaWMgZGVzY3JpcHRpb246IHN0cmluZyxcbiAgICBwdWJsaWMgZGVmYXVsdFZhbHVlOiBzdHJpbmcsXG4gICAgcHVibGljIF9jb25maWc6IHN0cmluZ1xuICApIHtcbiAgICBzdXBlcihcbiAgICAgIGlkLFxuICAgICAgY3JlYXRlZCxcbiAgICAgIHNlcnZlckNyZWF0ZWQsXG4gICAgICBjcmVhdGVkQnksXG4gICAgICBtb2RpZmllZCxcbiAgICAgIHNlcnZlck1vZGlmaWVkLFxuICAgICAgbW9kaWZpZWRCeVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGNvbmZpZyBwcm9wZXJ0eSBpcyByZXR1cm5lZCBmcm9tIHRoZSBhcGkgYXMgYSBqc29uIHN0cmluZywgdGhpcyBnZXR0ZXJcbiAgICogd2lsbCBkZXNlcmlhbGl6ZSBpdFxuICAgKiBAcmV0dXJuIHtUfVxuICAgKi9cbiAgZ2V0Q29uZmlnTW9kZWw8VD4oKTogVCB7XG4gICAgaWYgKHRoaXMuY29uZmlnQ2FjaGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29uZmlnQ2FjaGU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbmZpZ0NhY2hlID0gSlNPTi5wYXJzZSh0aGlzLl9jb25maWcpIGFzIFQ7XG4gIH1cblxuICBnZXQgY29uZmlnKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZztcbiAgfVxuXG4gIHNldCBjb25maWcoY29uZmlnOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5jb25maWdDYWNoZSA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdFZhbHVlIHByb3BlcnR5IGlzIHJldHVybmVkIGZyb20gdGhlIGFwaSBhcyBhIHN0cmluZyBvciBudW1iZXIsXG4gICAqIGluIHRoZSBjYXNlIG9mIHN0cmluZywgaXQgbWF5YmUgYSBqc29uLiBUaGlzIGdldHRlciB3aWxsIHJldHVybiBhblxuICAgKiBvYmplY3QgaWYgdGhlIHZhbHVlIGlzIGEganNvbiBzdHJpbmdcbiAgICovXG4gIGdldCBkZWZhdWx0VmFsdWVEZWNvZGVkKCk6IFZhc0NvbnRyb2xNb2RlbERlZmF1bHRWYWx1ZVR5cGUge1xuXG4gICAgaWYgKHRoaXMuZGVmYXVsdFZhbHVlID09PSAnJyAmJiB0aGlzLmNvbnRyb2xUeXBlTW9kZWwpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5jb250cm9sVHlwZU1vZGVsLm5hbWUpIHtcbiAgICAgICAgY2FzZSAnYnJhbmNoJzpcbiAgICAgICAgY2FzZSAnY2FtZXJhJzpcbiAgICAgICAgY2FzZSAnY29udGFjdCc6IHtcbiAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wYXJzZU1heWJlSnNvbih0aGlzLmRlZmF1bHRWYWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbmFtZSBvZiB0aGlzIGNvbnRyb2wgdG8gYmUgdXNlZCBpbiB0aGUgcmVwb3J0IHRlbXBsYXRlc1xuICAgKiBpLmUuIGZpZWxkcy5mb28gLT4gZm9vXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIGdldCByZXBvcnRUZW1wbGF0ZU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lLnJlcGxhY2UoL15maWVsZHNcXC4vLCAnJyk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IHNhZmVOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtWYXNDb250cm9sTW9kZWx9XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGVtcHR5KCk6IFZhc0NvbnRyb2xNb2RlbCB7XG4gICAgcmV0dXJuIFZhc0NvbnRyb2xNb2RlbC5mcm9tRHRvKHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuZXctY2FwXG4gICAgICBpZDogVVVJRC5VVUlEKClcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1Zhc0NvbnRyb2xEdG99IGR0b1xuICAgKiBAcmV0dXJuIHtWYXNDb250cm9sTW9kZWx9XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21EdG8oXG4gICAgZHRvOiBQYXJ0aWFsPFZhc0NvbnRyb2xEdG8+XG4gICk6IFZhc0NvbnRyb2xNb2RlbCB7XG4gICAgcmV0dXJuIG5ldyBWYXNDb250cm9sTW9kZWwoXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbmV3LWNhcFxuICAgICAgZHRvLmlkIHx8IFVVSUQuVVVJRCgpLFxuICAgICAgZHRvLmNyZWF0ZWQgfHwgJycsXG4gICAgICBkdG8uc2VydmVyQ3JlYXRlZCB8fCAnJyxcbiAgICAgIGR0by5jcmVhdGVkQnkgfHwgJycsXG4gICAgICBkdG8ubW9kaWZpZWQgfHwgJycsXG4gICAgICBkdG8uc2VydmVyTW9kaWZpZWQgfHwgJycsXG4gICAgICBkdG8ubW9kaWZpZWRCeSB8fCAnJyxcbiAgICAgIGR0by5hY2NvdW50IHx8ICcnLFxuICAgICAgZHRvLmFjY2Vzc0dyb3VwIHx8ICcnLFxuICAgICAgZHRvLmNvbnRyb2xUeXBlIHx8ICcnLFxuICAgICAgZHRvLmdyb3VwIHx8ICcnLFxuICAgICAgZHRvLnZhbGlkYXRvcnMgfHwgW10sXG4gICAgICBkdG8ubmFtZSB8fCAnJyxcbiAgICAgIGR0by50aXRsZSB8fCAnJyxcbiAgICAgIGR0by5saW5rYWJsZSB8fCBmYWxzZSxcbiAgICAgIGR0by5zZXF1ZW5jZSB8fCAwLFxuICAgICAgZHRvLmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgZHRvLmRlZmF1bHRWYWx1ZSB8fCAnJyxcbiAgICAgIGR0by5jb25maWcgfHwgJ3t9JyxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICAgKiBAcmV0dXJuIHtWYXNDb250cm9sTW9kZWxEZWZhdWx0VmFsdWVUeXBlfVxuICAgKi9cbiAgcHJvdGVjdGVkIHBhcnNlTWF5YmVKc29uKFxuICAgIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBvYmplY3RcbiAgKTogVmFzQ29udHJvbE1vZGVsRGVmYXVsdFZhbHVlVHlwZSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UodmFsdWUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7VmFzQ29udHJvbER0b31cbiAgICovXG4gIHRvRHRvKCk6IFZhc0NvbnRyb2xEdG8ge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIGNyZWF0ZWQ6IHRoaXMuY3JlYXRlZCxcbiAgICAgIHNlcnZlckNyZWF0ZWQ6IHRoaXMuc2VydmVyQ3JlYXRlZCxcbiAgICAgIGNyZWF0ZWRCeTogdGhpcy5jcmVhdGVkQnksXG4gICAgICBtb2RpZmllZDogdGhpcy5tb2RpZmllZCxcbiAgICAgIHNlcnZlck1vZGlmaWVkOiB0aGlzLnNlcnZlck1vZGlmaWVkLFxuICAgICAgbW9kaWZpZWRCeTogdGhpcy5tb2RpZmllZEJ5LFxuICAgICAgYWNjb3VudDogdGhpcy5hY2NvdW50LFxuICAgICAgYWNjZXNzR3JvdXA6IHRoaXMuYWNjZXNzR3JvdXAsXG4gICAgICBjb250cm9sVHlwZTogdGhpcy5jb250cm9sVHlwZSxcbiAgICAgIGdyb3VwOiB0aGlzLmdyb3VwLFxuICAgICAgdmFsaWRhdG9yczogdGhpcy52YWxpZGF0b3JzLFxuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgdGl0bGU6IHRoaXMudGl0bGUsXG4gICAgICBsaW5rYWJsZTogdGhpcy5saW5rYWJsZSxcbiAgICAgIHNlcXVlbmNlOiB0aGlzLnNlcXVlbmNlLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICBkZWZhdWx0VmFsdWU6IHRoaXMuZGVmYXVsdFZhbHVlLFxuICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZ1xuICAgIH07XG4gIH1cbn1cblxuIl19
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFzLWNvbnRyb2wubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YXMtbGliL3NyYy9saWIvZW50aXR5L3Zhcy1jb250cm9sLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUdoRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSXJDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGVBQWdCLFNBQVEsWUFBWTtJQUkvQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FvQkc7SUFDSCxZQUNrQixFQUFVLEVBQ1YsT0FBZSxFQUNmLGFBQXFCLEVBQ3JCLFNBQWlCLEVBQ2pCLFFBQWdCLEVBQ2hCLGNBQXNCLEVBQ3RCLFVBQWtCLEVBQzNCLE9BQWUsRUFDZixXQUFtQixFQUNuQixXQUFtQixFQUNuQixLQUFhLEVBQ2IsVUFBb0IsRUFDcEIsSUFBWSxFQUNaLEtBQWEsRUFDYixRQUFpQixFQUNqQixRQUFnQixFQUNoQixXQUFtQixFQUNuQixZQUFvQixFQUNwQixPQUFlO1FBRXRCLEtBQUssQ0FDSCxFQUFFLEVBQ0YsT0FBTyxFQUNQLGFBQWEsRUFDYixTQUFTLEVBQ1QsUUFBUSxFQUNSLGNBQWMsRUFDZCxVQUFVLENBQ1gsQ0FBQztRQTVCYyxPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQ1YsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBQ3JCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixtQkFBYyxHQUFkLGNBQWMsQ0FBUTtRQUN0QixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQzNCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUNuQixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUNuQixV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QUFJO1lBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07U0FDcEIsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhc0Jhc2VNb2RlbCB9IGZyb20gJy4vdmFzLWJhc2UubW9kZWwnO1xuaW1wb3J0IHsgVmFzQ29udHJvbFR5cGVNb2RlbCB9IGZyb20gJy4vdmFzLWNvbnRyb2wtdHlwZS5tb2RlbCc7XG5pbXBvcnQgeyBWYXNDb250cm9sRHRvIH0gZnJvbSAnLi92YXMtY29udHJvbC5kdG8nO1xuaW1wb3J0IHsgVVVJRCB9IGZyb20gJ2FuZ3VsYXIyLXV1aWQnO1xuXG5leHBvcnQgZGVjbGFyZSB0eXBlIFZhc0NvbnRyb2xNb2RlbERlZmF1bHRWYWx1ZVR5cGUgPSBzdHJpbmcgfCBudW1iZXIgfCBvYmplY3Q7XG5cbi8qKlxuICogQ29udHJvbE1vZGVsXG4gKi9cbmV4cG9ydCBjbGFzcyBWYXNDb250cm9sTW9kZWwgZXh0ZW5kcyBWYXNCYXNlTW9kZWwgaW1wbGVtZW50cyBWYXNDb250cm9sRHRvIHtcbiAgcHVibGljIGNvbnRyb2xUeXBlTW9kZWw6IFZhc0NvbnRyb2xUeXBlTW9kZWwgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBjb25maWdDYWNoZTogYW55ID0gdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNyZWF0ZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlcnZlckNyZWF0ZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNyZWF0ZWRCeVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kaWZpZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlcnZlck1vZGlmaWVkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtb2RpZmllZEJ5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhY2NvdW50XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhY2Nlc3NHcm91cFxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29udHJvbFR5cGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGdyb3VwXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IHZhbGlkYXRvcnNcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gbGlua2FibGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IHNlcXVlbmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGVmYXVsdFZhbHVlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb25maWdcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBvdmVycmlkZSBpZDogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBjcmVhdGVkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIHNlcnZlckNyZWF0ZWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgY3JlYXRlZEJ5OiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIG1vZGlmaWVkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIHNlcnZlck1vZGlmaWVkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIG1vZGlmaWVkQnk6IHN0cmluZyxcbiAgICBwdWJsaWMgYWNjb3VudDogc3RyaW5nLFxuICAgIHB1YmxpYyBhY2Nlc3NHcm91cDogc3RyaW5nLFxuICAgIHB1YmxpYyBjb250cm9sVHlwZTogc3RyaW5nLFxuICAgIHB1YmxpYyBncm91cDogc3RyaW5nLFxuICAgIHB1YmxpYyB2YWxpZGF0b3JzOiBzdHJpbmdbXSxcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nLFxuICAgIHB1YmxpYyB0aXRsZTogc3RyaW5nLFxuICAgIHB1YmxpYyBsaW5rYWJsZTogYm9vbGVhbixcbiAgICBwdWJsaWMgc2VxdWVuY2U6IG51bWJlcixcbiAgICBwdWJsaWMgZGVzY3JpcHRpb246IHN0cmluZyxcbiAgICBwdWJsaWMgZGVmYXVsdFZhbHVlOiBzdHJpbmcsXG4gICAgcHVibGljIF9jb25maWc6IHN0cmluZ1xuICApIHtcbiAgICBzdXBlcihcbiAgICAgIGlkLFxuICAgICAgY3JlYXRlZCxcbiAgICAgIHNlcnZlckNyZWF0ZWQsXG4gICAgICBjcmVhdGVkQnksXG4gICAgICBtb2RpZmllZCxcbiAgICAgIHNlcnZlck1vZGlmaWVkLFxuICAgICAgbW9kaWZpZWRCeVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGNvbmZpZyBwcm9wZXJ0eSBpcyByZXR1cm5lZCBmcm9tIHRoZSBhcGkgYXMgYSBqc29uIHN0cmluZywgdGhpcyBnZXR0ZXJcbiAgICogd2lsbCBkZXNlcmlhbGl6ZSBpdFxuICAgKiBAcmV0dXJuIHtUfVxuICAgKi9cbiAgZ2V0Q29uZmlnTW9kZWw8VD4oKTogVCB7XG4gICAgaWYgKHRoaXMuY29uZmlnQ2FjaGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29uZmlnQ2FjaGU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbmZpZ0NhY2hlID0gSlNPTi5wYXJzZSh0aGlzLl9jb25maWcpIGFzIFQ7XG4gIH1cblxuICBnZXQgY29uZmlnKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZztcbiAgfVxuXG4gIHNldCBjb25maWcoY29uZmlnOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5jb25maWdDYWNoZSA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdFZhbHVlIHByb3BlcnR5IGlzIHJldHVybmVkIGZyb20gdGhlIGFwaSBhcyBhIHN0cmluZyBvciBudW1iZXIsXG4gICAqIGluIHRoZSBjYXNlIG9mIHN0cmluZywgaXQgbWF5YmUgYSBqc29uLiBUaGlzIGdldHRlciB3aWxsIHJldHVybiBhblxuICAgKiBvYmplY3QgaWYgdGhlIHZhbHVlIGlzIGEganNvbiBzdHJpbmdcbiAgICovXG4gIGdldCBkZWZhdWx0VmFsdWVEZWNvZGVkKCk6IFZhc0NvbnRyb2xNb2RlbERlZmF1bHRWYWx1ZVR5cGUge1xuXG4gICAgaWYgKHRoaXMuZGVmYXVsdFZhbHVlID09PSAnJyAmJiB0aGlzLmNvbnRyb2xUeXBlTW9kZWwpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5jb250cm9sVHlwZU1vZGVsLm5hbWUpIHtcbiAgICAgICAgY2FzZSAnYnJhbmNoJzpcbiAgICAgICAgY2FzZSAnY2FtZXJhJzpcbiAgICAgICAgY2FzZSAnY29udGFjdCc6IHtcbiAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAndG9nZ2xlJzoge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjaGVja2VkOiBmYWxzZSwgY29tbWVudDogJydcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wYXJzZU1heWJlSnNvbih0aGlzLmRlZmF1bHRWYWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbmFtZSBvZiB0aGlzIGNvbnRyb2wgdG8gYmUgdXNlZCBpbiB0aGUgcmVwb3J0IHRlbXBsYXRlc1xuICAgKiBpLmUuIGZpZWxkcy5mb28gLT4gZm9vXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIGdldCByZXBvcnRUZW1wbGF0ZU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lLnJlcGxhY2UoL15maWVsZHNcXC4vLCAnJyk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IHNhZmVOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtWYXNDb250cm9sTW9kZWx9XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGVtcHR5KCk6IFZhc0NvbnRyb2xNb2RlbCB7XG4gICAgcmV0dXJuIFZhc0NvbnRyb2xNb2RlbC5mcm9tRHRvKHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuZXctY2FwXG4gICAgICBpZDogVVVJRC5VVUlEKClcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1Zhc0NvbnRyb2xEdG99IGR0b1xuICAgKiBAcmV0dXJuIHtWYXNDb250cm9sTW9kZWx9XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21EdG8oXG4gICAgZHRvOiBQYXJ0aWFsPFZhc0NvbnRyb2xEdG8+XG4gICk6IFZhc0NvbnRyb2xNb2RlbCB7XG4gICAgcmV0dXJuIG5ldyBWYXNDb250cm9sTW9kZWwoXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbmV3LWNhcFxuICAgICAgZHRvLmlkIHx8IFVVSUQuVVVJRCgpLFxuICAgICAgZHRvLmNyZWF0ZWQgfHwgJycsXG4gICAgICBkdG8uc2VydmVyQ3JlYXRlZCB8fCAnJyxcbiAgICAgIGR0by5jcmVhdGVkQnkgfHwgJycsXG4gICAgICBkdG8ubW9kaWZpZWQgfHwgJycsXG4gICAgICBkdG8uc2VydmVyTW9kaWZpZWQgfHwgJycsXG4gICAgICBkdG8ubW9kaWZpZWRCeSB8fCAnJyxcbiAgICAgIGR0by5hY2NvdW50IHx8ICcnLFxuICAgICAgZHRvLmFjY2Vzc0dyb3VwIHx8ICcnLFxuICAgICAgZHRvLmNvbnRyb2xUeXBlIHx8ICcnLFxuICAgICAgZHRvLmdyb3VwIHx8ICcnLFxuICAgICAgZHRvLnZhbGlkYXRvcnMgfHwgW10sXG4gICAgICBkdG8ubmFtZSB8fCAnJyxcbiAgICAgIGR0by50aXRsZSB8fCAnJyxcbiAgICAgIGR0by5saW5rYWJsZSB8fCBmYWxzZSxcbiAgICAgIGR0by5zZXF1ZW5jZSB8fCAwLFxuICAgICAgZHRvLmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgZHRvLmRlZmF1bHRWYWx1ZSB8fCAnJyxcbiAgICAgIGR0by5jb25maWcgfHwgJ3t9JyxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICAgKiBAcmV0dXJuIHtWYXNDb250cm9sTW9kZWxEZWZhdWx0VmFsdWVUeXBlfVxuICAgKi9cbiAgcHJvdGVjdGVkIHBhcnNlTWF5YmVKc29uKFxuICAgIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBvYmplY3RcbiAgKTogVmFzQ29udHJvbE1vZGVsRGVmYXVsdFZhbHVlVHlwZSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UodmFsdWUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7VmFzQ29udHJvbER0b31cbiAgICovXG4gIHRvRHRvKCk6IFZhc0NvbnRyb2xEdG8ge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIGNyZWF0ZWQ6IHRoaXMuY3JlYXRlZCxcbiAgICAgIHNlcnZlckNyZWF0ZWQ6IHRoaXMuc2VydmVyQ3JlYXRlZCxcbiAgICAgIGNyZWF0ZWRCeTogdGhpcy5jcmVhdGVkQnksXG4gICAgICBtb2RpZmllZDogdGhpcy5tb2RpZmllZCxcbiAgICAgIHNlcnZlck1vZGlmaWVkOiB0aGlzLnNlcnZlck1vZGlmaWVkLFxuICAgICAgbW9kaWZpZWRCeTogdGhpcy5tb2RpZmllZEJ5LFxuICAgICAgYWNjb3VudDogdGhpcy5hY2NvdW50LFxuICAgICAgYWNjZXNzR3JvdXA6IHRoaXMuYWNjZXNzR3JvdXAsXG4gICAgICBjb250cm9sVHlwZTogdGhpcy5jb250cm9sVHlwZSxcbiAgICAgIGdyb3VwOiB0aGlzLmdyb3VwLFxuICAgICAgdmFsaWRhdG9yczogdGhpcy52YWxpZGF0b3JzLFxuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgdGl0bGU6IHRoaXMudGl0bGUsXG4gICAgICBsaW5rYWJsZTogdGhpcy5saW5rYWJsZSxcbiAgICAgIHNlcXVlbmNlOiB0aGlzLnNlcXVlbmNlLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICBkZWZhdWx0VmFsdWU6IHRoaXMuZGVmYXVsdFZhbHVlLFxuICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZ1xuICAgIH07XG4gIH1cbn1cblxuIl19