@ironcode/vas-lib 3.0.0-alpha.9 → 3.0.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.
- package/cjs/lib/entity/vas-form.model.js +1 -1
- package/cjs/lib/entity/vas-form.model.js.map +1 -1
- package/cjs/lib/entity/vas-job.model.d.ts +3 -1
- package/cjs/lib/entity/vas-job.model.d.ts.map +1 -1
- package/cjs/lib/entity/vas-job.model.js +53 -9
- package/cjs/lib/entity/vas-job.model.js.map +1 -1
- package/cjs/lib/model/estimate-control/estimate-item.dto.d.ts +1 -0
- package/cjs/lib/model/estimate-control/estimate-item.dto.d.ts.map +1 -1
- package/cjs/lib/model/estimate-control/estimate-item.dto.js.map +1 -1
- package/cjs/lib/model/estimate-control/estimate-item.model.d.ts +3 -2
- package/cjs/lib/model/estimate-control/estimate-item.model.d.ts.map +1 -1
- package/cjs/lib/model/estimate-control/estimate-item.model.js +13 -6
- package/cjs/lib/model/estimate-control/estimate-item.model.js.map +1 -1
- package/cjs/lib/model/estimate-control/estimate-source.d.ts +2 -0
- package/cjs/lib/model/estimate-control/estimate-source.d.ts.map +1 -0
- package/cjs/lib/model/estimate-control/estimate-source.js +3 -0
- package/cjs/lib/model/estimate-control/estimate-source.js.map +1 -0
- package/cjs/lib/model/estimate-control/estimate.dto.d.ts +2 -1
- package/cjs/lib/model/estimate-control/estimate.dto.d.ts.map +1 -1
- package/cjs/lib/model/estimate-control/estimate.dto.js.map +1 -1
- package/cjs/lib/model/estimate-control/estimate.model.d.ts +2 -3
- package/cjs/lib/model/estimate-control/estimate.model.d.ts.map +1 -1
- package/cjs/lib/model/estimate-control/estimate.model.js +31 -18
- package/cjs/lib/model/estimate-control/estimate.model.js.map +1 -1
- package/cjs/lib/model/estimate-control/index.d.ts +1 -0
- package/cjs/lib/model/estimate-control/index.d.ts.map +1 -1
- package/cjs/lib/model/estimate-control/index.js.map +1 -1
- package/fesm2022/ironcode-vas-lib.mjs +99 -34
- package/fesm2022/ironcode-vas-lib.mjs.map +1 -1
- package/lib/entity/vas-job.model.d.ts +3 -1
- package/lib/model/estimate-control/estimate-item.dto.d.ts +1 -0
- package/lib/model/estimate-control/estimate-item.model.d.ts +3 -2
- package/lib/model/estimate-control/estimate-source.d.ts +1 -0
- package/lib/model/estimate-control/estimate.dto.d.ts +2 -1
- package/lib/model/estimate-control/estimate.model.d.ts +2 -3
- package/lib/model/estimate-control/index.d.ts +1 -0
- package/package.json +1 -1
|
@@ -135,7 +135,7 @@ class VasFormModel extends vas_restricted_account_object_model_1.VasRestrictedAc
|
|
|
135
135
|
if (control.controlTypeName !== 'camera') {
|
|
136
136
|
return;
|
|
137
137
|
}
|
|
138
|
-
paths.push(
|
|
138
|
+
paths.push(control.name.split('.'));
|
|
139
139
|
});
|
|
140
140
|
});
|
|
141
141
|
return paths;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vas-form.model.js","sourceRoot":"","sources":["../../../../../projects/vas-lib/src/lib/entity/vas-form.model.ts"],"names":[],"mappings":"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","sourcesContent":["import { VasRestrictedAccountObjectModel } from './vas-restricted-account-object.model';\nimport { VasControlTypeDto } from './vas-control-type.dto';\nimport { VasControlModel } from './vas-control.model';\nimport { FieldValueType } from './vas-field.dto';\nimport { VasFormDto } from './vas-form.dto';\nimport { VasGroupModel } from './vas-group.model';\nimport { VasControlTypeModel } from './vas-control-type.model';\nimport { VasFormConfigModel } from './vas-form-config.model';\nimport { only } from '../utils/only';\nimport { VasJobModel } from './vas-job.model';\n\n/**\n * VasFormModel\n */\nexport class VasFormModel extends VasRestrictedAccountObjectModel {\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 createdByName: string,\n public override modifiedByName: string,\n public override account: string,\n public override accessGroup: string,\n public jobType: string,\n public title: string,\n public description: string,\n public groups: VasGroupModel[],\n public dynamicDescriptor: string,\n public indexName: string,\n public pipelineName: string,\n public config: VasFormConfigModel,\n public geoLocationEnabled: boolean,\n public filesEnabled: boolean\n ) {\n super(\n id,\n created,\n serverCreated,\n createdBy,\n modified,\n serverModified,\n modifiedBy,\n createdByName,\n modifiedByName,\n account,\n accessGroup\n );\n }\n\n /**\n * Returns the name of this form in a \"safe\" way, i.e. no spaces, special\n * characters\n * @return {string}\n */\n get safeTitle(): string {\n return this.title\n .replace(/[^a-z0-9]/gi, '-')\n .replace(/-+/g, '-')\n .toLowerCase();\n }\n\n\n /**\n * The VAS API response for Form will inline Group and Control but not\n * ControlType. This method is a help which will allows us to construct an\n * instance of VasFormModel with the ControlType model set appropriately into\n * each VasControlModel\n * @param {VasFormDto} formDto\n * @param {Array<VasControlTypeDto>} controlTypeDtos\n * @return {VasFormModel}\n * @deprecated vas-rest has been updated to inline control types into the\n * control so this method is no longer required. use VasFormModel.fromDto()\n */\n public static fromApiResponse(\n formDto: VasFormDto,\n controlTypeDtos: Array<VasControlTypeDto>\n ): VasFormModel {\n const controlTypeModels = controlTypeDtos\n .map(ctDto => VasControlTypeModel.fromDto(ctDto));\n const formModel = VasFormModel.fromDto(formDto);\n formModel.groups\n .forEach(group => {\n group.controls\n .forEach(control => {\n // Note that we are forcing types here. This is because we have\n // updated the typings for ControlModel and ControlDto to reflect\n // the fact that VASREST is updating the response from certain\n // controllers to inline ControlType into the Control. Consumers of\n // the library will know what version of the API they are consuming\n // so can decide when to migrate away from fromApiResponse, and can\n // use fromDto instead\n (control.controlType as any) = controlTypeModels\n .find(ct => ct.id === ((control as any).controlTypeId));\n });\n });\n return formModel;\n }\n\n static empty(): VasFormModel {\n return VasFormModel.fromDto({});\n }\n\n /**\n * @param {VasFormDto} dto\n * @return {VasFormModel}\n */\n static override fromDto(dto: Partial<VasFormDto>): VasFormModel {\n return new VasFormModel(\n dto.id || '',\n dto.created || '',\n dto.serverCreated || '',\n dto.createdBy || '',\n dto.modified || '',\n dto.serverModified || '',\n dto.modifiedBy || '',\n dto.createdByName || '',\n dto.modifiedByName || '',\n dto.account || '',\n dto.accessGroup || '',\n dto.jobType || '',\n dto.title || '',\n dto.description || '',\n (dto.groups || [])\n .sort((a, b) => a.sequence - b.sequence)\n .map(g => VasGroupModel.fromDto(g)),\n dto.dynamicDescriptor || '',\n dto.indexName || '',\n dto.pipelineName || '',\n VasFormConfigModel.fromJsonString(dto.config),\n dto.geoLocationEnabled || false,\n dto.filesEnabled || false\n );\n }\n\n /**\n * @param {string} id\n * @return {VasControlModel | undefined}\n */\n findControlModelById(id: string): VasControlModel | undefined {\n let result;\n this.groups\n .find(group => group.controls\n .find(control => {\n if (control.id !== id) {\n return;\n }\n result = control;\n return true;\n }));\n return result;\n }\n\n /**\n *\n * @param {string} name\n * @return {VasControlModel | undefined}\n */\n findControlModelByName(name: string): VasControlModel | undefined {\n let result;\n this.groups\n .find(group => group.controls\n .find(control => {\n if (control.name !== name) {\n return;\n }\n result = control;\n return true;\n }));\n return result;\n }\n\n /**\n *\n * @return {Array<Array<string>>}\n */\n getCameraControlPaths(): Array<Array<string>> {\n const paths: string[][] = [];\n this.groups.forEach(group => {\n group.controls.forEach(control => {\n if (control.controlTypeName !== 'camera') {\n return;\n }\n paths.push([group.name, control.safeName]);\n });\n });\n return paths;\n }\n\n /**\n * Return all Controls in the Form\n */\n getControls(): Array<VasControlModel> {\n return this.groups\n .reduce((acc, g) => {\n return acc.concat(g.controls)\n }, [] as Array<VasControlModel>);\n }\n\n /**\n * @param {VasJobModel} jobModel\n * @return {Array<{id: string, value: FieldValueType}>}\n */\n getValuesByControlId(\n jobModel: VasJobModel\n ): Array<{ id: string, value: FieldValueType | undefined }> {\n const items: Array<{ id: string, value: FieldValueType | undefined }> = [];\n this.groups\n .forEach(group => {\n group.controls\n .forEach(control => {\n items.push({\n id: control.id,\n value: jobModel.getValueByPath([group.name, control.safeName])\n });\n });\n });\n return items;\n }\n\n /**\n * @return {VasFormDto}\n */\n toDto(): VasFormDto {\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 createdByName: this.createdByName,\n modifiedByName: this.modifiedByName,\n account: this.account,\n accessGroup: this.accessGroup,\n jobType: this.jobType,\n title: this.title,\n description: this.description,\n groups: this.groups.map(group => group.toDto()),\n dynamicDescriptor: this.dynamicDescriptor,\n indexName: this.indexName,\n pipelineName: this.pipelineName,\n config: this.config.toJsonString(),\n geoLocationEnabled: this.geoLocationEnabled,\n filesEnabled: this.filesEnabled\n };\n }\n\n override toApiDto(options?: any): Record<string, any> {\n return {\n ...super.toApiDto(options),\n title: this.title || '~',\n description: this.description || '~',\n jobType: this.jobType,\n config: this.config.toJsonString()\n };\n }\n\n public static toApiPatchDto(\n item: Partial<VasFormDto>\n ): Partial<VasFormDto> {\n return only(\n item,\n [\n 'created',\n 'modified',\n 'title',\n 'description',\n 'jobType',\n 'config'\n ]\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"vas-form.model.js","sourceRoot":"","sources":["../../../../../projects/vas-lib/src/lib/entity/vas-form.model.ts"],"names":[],"mappings":"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","sourcesContent":["import { VasRestrictedAccountObjectModel } from './vas-restricted-account-object.model';\nimport { VasControlTypeDto } from './vas-control-type.dto';\nimport { VasControlModel } from './vas-control.model';\nimport { FieldValueType } from './vas-field.dto';\nimport { VasFormDto } from './vas-form.dto';\nimport { VasGroupModel } from './vas-group.model';\nimport { VasControlTypeModel } from './vas-control-type.model';\nimport { VasFormConfigModel } from './vas-form-config.model';\nimport { only } from '../utils/only';\nimport { VasJobModel } from './vas-job.model';\n\n/**\n * VasFormModel\n */\nexport class VasFormModel extends VasRestrictedAccountObjectModel {\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 createdByName: string,\n public override modifiedByName: string,\n public override account: string,\n public override accessGroup: string,\n public jobType: string,\n public title: string,\n public description: string,\n public groups: VasGroupModel[],\n public dynamicDescriptor: string,\n public indexName: string,\n public pipelineName: string,\n public config: VasFormConfigModel,\n public geoLocationEnabled: boolean,\n public filesEnabled: boolean\n ) {\n super(\n id,\n created,\n serverCreated,\n createdBy,\n modified,\n serverModified,\n modifiedBy,\n createdByName,\n modifiedByName,\n account,\n accessGroup\n );\n }\n\n /**\n * Returns the name of this form in a \"safe\" way, i.e. no spaces, special\n * characters\n * @return {string}\n */\n get safeTitle(): string {\n return this.title\n .replace(/[^a-z0-9]/gi, '-')\n .replace(/-+/g, '-')\n .toLowerCase();\n }\n\n\n /**\n * The VAS API response for Form will inline Group and Control but not\n * ControlType. This method is a help which will allows us to construct an\n * instance of VasFormModel with the ControlType model set appropriately into\n * each VasControlModel\n * @param {VasFormDto} formDto\n * @param {Array<VasControlTypeDto>} controlTypeDtos\n * @return {VasFormModel}\n * @deprecated vas-rest has been updated to inline control types into the\n * control so this method is no longer required. use VasFormModel.fromDto()\n */\n public static fromApiResponse(\n formDto: VasFormDto,\n controlTypeDtos: Array<VasControlTypeDto>\n ): VasFormModel {\n const controlTypeModels = controlTypeDtos\n .map(ctDto => VasControlTypeModel.fromDto(ctDto));\n const formModel = VasFormModel.fromDto(formDto);\n formModel.groups\n .forEach(group => {\n group.controls\n .forEach(control => {\n // Note that we are forcing types here. This is because we have\n // updated the typings for ControlModel and ControlDto to reflect\n // the fact that VASREST is updating the response from certain\n // controllers to inline ControlType into the Control. Consumers of\n // the library will know what version of the API they are consuming\n // so can decide when to migrate away from fromApiResponse, and can\n // use fromDto instead\n (control.controlType as any) = controlTypeModels\n .find(ct => ct.id === ((control as any).controlTypeId));\n });\n });\n return formModel;\n }\n\n static empty(): VasFormModel {\n return VasFormModel.fromDto({});\n }\n\n /**\n * @param {VasFormDto} dto\n * @return {VasFormModel}\n */\n static override fromDto(dto: Partial<VasFormDto>): VasFormModel {\n return new VasFormModel(\n dto.id || '',\n dto.created || '',\n dto.serverCreated || '',\n dto.createdBy || '',\n dto.modified || '',\n dto.serverModified || '',\n dto.modifiedBy || '',\n dto.createdByName || '',\n dto.modifiedByName || '',\n dto.account || '',\n dto.accessGroup || '',\n dto.jobType || '',\n dto.title || '',\n dto.description || '',\n (dto.groups || [])\n .sort((a, b) => a.sequence - b.sequence)\n .map(g => VasGroupModel.fromDto(g)),\n dto.dynamicDescriptor || '',\n dto.indexName || '',\n dto.pipelineName || '',\n VasFormConfigModel.fromJsonString(dto.config),\n dto.geoLocationEnabled || false,\n dto.filesEnabled || false\n );\n }\n\n /**\n * @param {string} id\n * @return {VasControlModel | undefined}\n */\n findControlModelById(id: string): VasControlModel | undefined {\n let result;\n this.groups\n .find(group => group.controls\n .find(control => {\n if (control.id !== id) {\n return;\n }\n result = control;\n return true;\n }));\n return result;\n }\n\n /**\n *\n * @param {string} name\n * @return {VasControlModel | undefined}\n */\n findControlModelByName(name: string): VasControlModel | undefined {\n let result;\n this.groups\n .find(group => group.controls\n .find(control => {\n if (control.name !== name) {\n return;\n }\n result = control;\n return true;\n }));\n return result;\n }\n\n /**\n *\n * @return {Array<Array<string>>}\n */\n getCameraControlPaths(): Array<Array<string>> {\n const paths: string[][] = [];\n this.groups.forEach(group => {\n group.controls.forEach(control => {\n if (control.controlTypeName !== 'camera') {\n return;\n }\n paths.push(control.name.split('.'));\n });\n });\n return paths;\n }\n\n /**\n * Return all Controls in the Form\n */\n getControls(): Array<VasControlModel> {\n return this.groups\n .reduce((acc, g) => {\n return acc.concat(g.controls)\n }, [] as Array<VasControlModel>);\n }\n\n /**\n * @param {VasJobModel} jobModel\n * @return {Array<{id: string, value: FieldValueType}>}\n */\n getValuesByControlId(\n jobModel: VasJobModel\n ): Array<{ id: string, value: FieldValueType | undefined }> {\n const items: Array<{ id: string, value: FieldValueType | undefined }> = [];\n this.groups\n .forEach(group => {\n group.controls\n .forEach(control => {\n items.push({\n id: control.id,\n value: jobModel.getValueByPath([group.name, control.safeName])\n });\n });\n });\n return items;\n }\n\n /**\n * @return {VasFormDto}\n */\n toDto(): VasFormDto {\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 createdByName: this.createdByName,\n modifiedByName: this.modifiedByName,\n account: this.account,\n accessGroup: this.accessGroup,\n jobType: this.jobType,\n title: this.title,\n description: this.description,\n groups: this.groups.map(group => group.toDto()),\n dynamicDescriptor: this.dynamicDescriptor,\n indexName: this.indexName,\n pipelineName: this.pipelineName,\n config: this.config.toJsonString(),\n geoLocationEnabled: this.geoLocationEnabled,\n filesEnabled: this.filesEnabled\n };\n }\n\n override toApiDto(options?: any): Record<string, any> {\n return {\n ...super.toApiDto(options),\n title: this.title || '~',\n description: this.description || '~',\n jobType: this.jobType,\n config: this.config.toJsonString()\n };\n }\n\n public static toApiPatchDto(\n item: Partial<VasFormDto>\n ): Partial<VasFormDto> {\n return only(\n item,\n [\n 'created',\n 'modified',\n 'title',\n 'description',\n 'jobType',\n 'config'\n ]\n );\n }\n}\n"]}
|
|
@@ -117,7 +117,9 @@ export declare class VasJobRelationalModel extends VasJobBaseModel<Array<VasFiel
|
|
|
117
117
|
}
|
|
118
118
|
export declare class VasJobDocumentModel extends VasJobBaseModel<Record<string, FieldValueType>> {
|
|
119
119
|
static fromRelationalDto(dto: Partial<VasJobRelationalDto>): VasJobDocumentModel;
|
|
120
|
-
static fromDto(dto: Partial<VasJobDocumentDto
|
|
120
|
+
static fromDto(dto: Partial<VasJobDocumentDto>, options?: {
|
|
121
|
+
disableMigrateCheck: boolean;
|
|
122
|
+
}): VasJobDocumentModel;
|
|
121
123
|
static empty(): VasJobDocumentModel;
|
|
122
124
|
toDto(): VasJobDocumentDto;
|
|
123
125
|
}
|
|
@@ -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":"AAAA,OAAO,EAAa,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGvD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,cAAc,
|
|
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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"}
|
|
@@ -20,6 +20,21 @@ const nullables = new Set([
|
|
|
20
20
|
'followUpNote',
|
|
21
21
|
]);
|
|
22
22
|
let jobStaticProps;
|
|
23
|
+
function getStaticProps() {
|
|
24
|
+
if (jobStaticProps) {
|
|
25
|
+
return jobStaticProps;
|
|
26
|
+
}
|
|
27
|
+
return jobStaticProps = new Set([
|
|
28
|
+
...Object.getOwnPropertyNames(VasJobDocumentModel.empty()),
|
|
29
|
+
'assignee'
|
|
30
|
+
]);
|
|
31
|
+
}
|
|
32
|
+
function isArrayOfFields(value) {
|
|
33
|
+
return !!value && Array.isArray(value);
|
|
34
|
+
}
|
|
35
|
+
function isDictionaryOfFields(value) {
|
|
36
|
+
return !!value && (0, utils_1.isPlainObject)(value);
|
|
37
|
+
}
|
|
23
38
|
/**
|
|
24
39
|
* VasJobBaseModel
|
|
25
40
|
*/
|
|
@@ -70,11 +85,7 @@ class VasJobBaseModel extends vas_restricted_account_object_model_1.VasRestricte
|
|
|
70
85
|
* Return the list of Job properties
|
|
71
86
|
*/
|
|
72
87
|
get staticProperties() {
|
|
73
|
-
|
|
74
|
-
return jobStaticProps;
|
|
75
|
-
}
|
|
76
|
-
return jobStaticProps =
|
|
77
|
-
new Set(Object.getOwnPropertyNames(VasJobDocumentModel.empty()));
|
|
88
|
+
return getStaticProps();
|
|
78
89
|
}
|
|
79
90
|
/**
|
|
80
91
|
* Returns an object describing how many attachments were added to this job
|
|
@@ -347,11 +358,44 @@ class VasJobDocumentModel extends VasJobBaseModel {
|
|
|
347
358
|
return p;
|
|
348
359
|
}, {}), dto.jobEmails || [], dto.notes || [], dto.reports || [], dto.tasks || [], dto.instruction || null);
|
|
349
360
|
}
|
|
350
|
-
static fromDto(dto) {
|
|
351
|
-
|
|
352
|
-
|
|
361
|
+
static fromDto(dto, options = { disableMigrateCheck: false }) {
|
|
362
|
+
let fields = {};
|
|
363
|
+
if (dto.fields !== undefined) {
|
|
364
|
+
if (isArrayOfFields(dto.fields)) {
|
|
365
|
+
for (const field of dto.fields) {
|
|
366
|
+
fields[field.controlName.replace('fields.', '')] =
|
|
367
|
+
(0, utils_1.tryJson)(field.value);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
else if (isDictionaryOfFields(dto.fields)) {
|
|
371
|
+
fields = dto.fields;
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
// this code is checking if a have a document in the old dynamic job style,
|
|
375
|
+
// i.e. where there are keys in the job object that come from the form-group
|
|
376
|
+
// names. I did consider comparing the number of keys in the dto vs the
|
|
377
|
+
// number of expected keys, but this will fail if we try to read old objects
|
|
378
|
+
// that don't have new properties added. So we always check by default. We
|
|
379
|
+
// can skip this check by setting disableMigrateCheck in the options.
|
|
380
|
+
if (!options || !options.disableMigrateCheck) {
|
|
381
|
+
const ddto = dto;
|
|
382
|
+
const actualKeys = Object.keys(ddto);
|
|
383
|
+
actualKeys.reduce((f, groupName) => {
|
|
384
|
+
if (getStaticProps().has(groupName)) {
|
|
385
|
+
return f;
|
|
386
|
+
}
|
|
387
|
+
Object
|
|
388
|
+
.keys(ddto[groupName])
|
|
389
|
+
.forEach(controlName => {
|
|
390
|
+
if (!controlName.startsWith('fields.')) {
|
|
391
|
+
return;
|
|
392
|
+
}
|
|
393
|
+
f[controlName.slice(7)] = ddto[groupName][controlName];
|
|
394
|
+
});
|
|
395
|
+
return f;
|
|
396
|
+
}, fields);
|
|
353
397
|
}
|
|
354
|
-
return new VasJobDocumentModel(dto.id || '', dto.created || '', dto.serverCreated || '', dto.createdBy || '', dto.modified || '', dto.serverModified || '', dto.modifiedBy || '', dto.createdByName || '', dto.modifiedByName || '', dto.account || '', dto.accessGroup || '', dto.reference || '', dto.jobDate || '', dto.jobStatus || '', dto.jobStatusLastUpdate || '', dto.jobType || '', dto.assigneeId || '', dto.formId || dto.lastForm || '', dto.timeZoneOffset || (0, moment_1.default)().utcOffset(), dto.pendingFields || 0, dto.childModified || '', dto.version || 0, dto.followUpDate || '', dto.followUpStatus || '', dto.followUpNote || '', dto.geoLocation || (0, model_1.getEmptyGeoLocation)(), dto.files || [],
|
|
398
|
+
return new VasJobDocumentModel(dto.id || '', dto.created || '', dto.serverCreated || '', dto.createdBy || '', dto.modified || '', dto.serverModified || '', dto.modifiedBy || '', dto.createdByName || '', dto.modifiedByName || '', dto.account || '', dto.accessGroup || '', dto.reference || '', dto.jobDate || '', dto.jobStatus || '', dto.jobStatusLastUpdate || '', dto.jobType || '', dto.assigneeId || '', dto.formId || dto.lastForm || '', dto.timeZoneOffset || (0, moment_1.default)().utcOffset(), dto.pendingFields || 0, dto.childModified || '', dto.version || 0, dto.followUpDate || '', dto.followUpStatus || '', dto.followUpNote || '', dto.geoLocation || (0, model_1.getEmptyGeoLocation)(), dto.files || [], fields, dto.jobEmails || [], dto.notes || [], dto.reports || [], dto.tasks || [], dto.instruction || null);
|
|
355
399
|
}
|
|
356
400
|
static empty() {
|
|
357
401
|
return new VasJobDocumentModel('', // id
|
|
@@ -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 { isFileDto, VasFileDto } from './vas-file.dto';\nimport moment from 'moment';\nimport { getValueByPath } from '../utils/get-value-by-path';\nimport { VasBaseDto } from './vas-base.dto';\nimport { FieldValueType } from './vas-field.dto';\nimport { VasFormModel } from './vas-form.model';\nimport { VasJobBaseDto, VasJobDocumentDto, VasJobRelationalDto } from './vas-job.dto';\nimport { VasRestrictedAccountObjectModel } from './vas-restricted-account-object.model';\nimport { GeoLocation, getEmptyGeoLocation } from '../model';\nimport { isCameraControlValueV1, isCameraControlValueV2, VasCameraControlValueModel } from '../control-value';\nimport { isPlainObject, only } from '../utils';\nimport { VasReportDto } from './vas-report.dto';\nimport { VasTaskDto } from './vas-task.dto';\nimport { VasNoteDto } from './vas-note.dto';\nimport { VasJobEmailDto } from './vas-job-email.dto';\nimport { VasInstructionDto } from './vas-instruction.dto';\nimport { VasFieldModel } from './vas-field.model';\n\nconst nullables = new Set([\n 'created',\n 'modified',\n 'reference',\n 'jobDate',\n 'followUpDate',\n 'followUpStatus',\n 'followUpNote',\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, FieldValueType>>;\n}\n\nlet jobStaticProps: Set<string> | undefined;\n\n\n/**\n * VasJobBaseModel\n */\nexport abstract class VasJobBaseModel<FType extends Record<string, FieldValueType> | Array<VasFieldModel>> extends VasRestrictedAccountObjectModel {\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 createdByName: string,\n public override modifiedByName: 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 jobStatusLastUpdate: 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 followUpDate: string,\n public followUpStatus: string,\n public followUpNote: string,\n public geoLocation: GeoLocation,\n public files: Array<VasFileDto>,\n public fields: FType,\n public jobEmails: Array<VasJobEmailDto>,\n public notes: Array<VasNoteDto>,\n public reports: Array<VasReportDto>,\n public tasks: Array<VasTaskDto>,\n public instruction: VasInstructionDto | null\n ) {\n super(\n id,\n created,\n serverCreated,\n createdBy,\n modified,\n serverModified,\n modifiedBy,\n createdByName,\n modifiedByName,\n account,\n accessGroup\n );\n }\n\n get createdByDisplayName(): string {\n return this.createdByName;\n }\n\n get modifiedByDisplayName(): string {\n return this.modifiedByName;\n }\n\n /**\n * Return the list of Job properties\n */\n get staticProperties(): Set<string> {\n if (jobStaticProps) {\n return jobStaticProps;\n }\n return jobStaticProps =\n new Set(Object.getOwnPropertyNames(VasJobDocumentModel.empty()));\n }\n\n /**\n * Returns an object describing how many attachments were added to this job\n * (camera controls and files), and how many have not been uploaded yet.\n *\n * @param formModel instance of {@link VasFormModel} that was used when the\n * job was created\n */\n getFilesUploadStatus(\n formModel: VasFormModel\n ): { pending: number; total: number } {\n\n const cameraFieldValues = Object\n .values(this.fields)\n .filter(value => isCameraControlValueV2(value) || isCameraControlValueV1(value));\n\n\n let total = cameraFieldValues.length + this.files.length;\n\n // calculate the number of camera images still to upload\n let pending = cameraFieldValues\n .map((value: VasFileDto | VasCameraControlValueModel) => {\n if (isFileDto(value)) {\n return value.id && value.status !== 'COMPLETE';\n } else if (isCameraControlValueV1(value)) {\n // if url is not set, it hasn't been uploaded\n return value.id && !value.url;\n }\n return false;\n })\n .filter(hasUploaded => hasUploaded)\n .length;\n\n // add count of job.files that are complete\n pending += this.files.filter(value => value.status !== 'COMPLETE').length;\n\n return {\n pending,\n total\n };\n }\n\n /**\n * @param path path segments\n */\n getValueByPath<T>(\n path: string | string[] = []\n ): T | null | undefined {\n return getValueByPath<T>(\n Array.isArray(path) ? path : path.split('.'),\n this\n );\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 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 = (this.getValueByPath(['fields', ...path]) || '').toString();\n } else if (objectKey.length && options.objects && options.objects[objectKey] !== undefined) {\n result = (getValueByPath(path, options.objects[objectKey]) || '').toString();\n } else {\n return '';\n }\n\n if (filterName && result) {\n switch (filterName) {\n case 'date': {\n if (!options.timeZoneOffset) {\n return moment(result).format(filterArg || '');\n } else {\n return moment(result)\n .utcOffset(options.timeZoneOffset)\n .format(filterArg || '');\n }\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 lastForm: this.formId || '~'\n };\n }\n\n public static toApiPatchDto(\n item: Partial<VasJobBaseDto>\n ): Partial<VasJobBaseDto> {\n return only(\n item,\n [\n 'created',\n 'modified',\n 'reference',\n 'jobDate',\n 'jobType',\n 'accessGroup',\n 'jobStatus',\n 'assigneeId',\n 'timeZoneOffset',\n 'pendingFields',\n 'formId',\n 'followUpDate',\n 'followUpStatus',\n 'followUpNote',\n ],\n (value: any, key: keyof VasJobRelationalDto) =>\n value[key] === null && nullables.has(key) ? '~' : value[key]\n );\n }\n}\n\nexport class VasJobRelationalModel extends VasJobBaseModel<Array<VasFieldModel>> {\n\n override getValueByPath<T>(\n path: string | string[] = []\n ): T | null | undefined {\n const parts = Array.isArray(path) ? path : path.split('.');\n if (parts[0] === 'fields') {\n return this.getFieldValueByPath(parts[1], parts.slice(2)) as T;\n }\n return getValueByPath<T>(parts, this);\n }\n\n getFieldsMap(): Record<string, FieldValueType> {\n return this.fields.reduce((p, c) => {\n p[c.controlName] = c.value;\n return p;\n }, {} as Record<string, FieldValueType>);\n }\n\n getFieldValueByPath<T extends FieldValueType>(\n controlName: string,\n path: string[]\n ): T | null | undefined {\n for (const field of this.fields) {\n if (field.controlName === controlName) {\n if (path.length === 0) {\n return field.value as T;\n }\n if (field.value === null) {\n return path.length >= 1 ? undefined : null;\n }\n if (isPlainObject<object>(field.value)) {\n return getValueByPath(path, field.value);\n }\n return undefined;\n }\n }\n return undefined;\n }\n\n static override fromDto(dto: Partial<VasJobRelationalDto>): VasJobRelationalModel {\n\n if (dto.fields !== undefined && !Array.isArray(dto.fields)) {\n throw Error('fields must be an array');\n }\n\n return new VasJobRelationalModel(\n dto.id || '',\n dto.created || '',\n dto.serverCreated || '',\n dto.createdBy || '',\n dto.modified || '',\n dto.serverModified || '',\n dto.modifiedBy || '',\n dto.createdByName || '',\n dto.modifiedByName || '',\n dto.account || '',\n dto.accessGroup || '',\n dto.reference || '',\n dto.jobDate || '',\n dto.jobStatus || '',\n dto.jobStatusLastUpdate || '',\n dto.jobType || '',\n dto.assigneeId || '',\n dto.formId || (dto as any).lastForm || '',\n dto.timeZoneOffset || moment().utcOffset(),\n dto.pendingFields || 0,\n dto.childModified || '',\n dto.version || 0,\n dto.followUpDate || '',\n dto.followUpStatus || '',\n dto.followUpNote || '',\n dto.geoLocation || getEmptyGeoLocation(),\n dto.files || [],\n (dto.fields || []).map(f => VasFieldModel.fromDto(f)),\n dto.jobEmails || [],\n dto.notes || [],\n dto.reports || [],\n dto.tasks || [],\n dto.instruction || null\n );\n }\n\n static empty(): VasJobRelationalModel {\n return new VasJobRelationalModel(\n '', // id\n '', // created\n '', // serverCreated\n '', // createdBy\n '', // modified\n '', // serverModified\n '', // modifiedBy\n '', // createdByName\n '', // modifiedByName\n '', // account\n '', // accessGroup\n '', // reference\n '', // jobDate\n '', // jobStatus\n '', // jobStatusLastUpdate\n '', // jobType\n '', // assigneeId\n '', // formId\n moment().utcOffset(), // timeZoneOffset\n 0, // pendingFields: number,\n '', // childModified: string,\n 0, // version: number,\n '', // followUpDate: string,\n '', // followUpStatus: string,\n '', // followUpNote: string,\n getEmptyGeoLocation(), // geoLocation: GeoLocation,\n [], // files: Array<VasFileDto>,\n [], // fields: FType,\n [], // jobEmails: Array<VasJobEmailDto>,\n [], // notes: Array<VasNoteDto>,\n [], // reports: Array<VasReportDto>,\n [], // tasks: Array<VasTaskDto>,\n null // instruction: VasInstructionDto | null\n );\n }\n\n public toDto(): VasJobRelationalDto {\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 createdByName: this.createdByName,\n modifiedByName: this.modifiedByName,\n account: this.account,\n accessGroup: this.accessGroup,\n reference: this.reference,\n jobDate: this.jobDate,\n jobStatus: this.jobStatus,\n jobStatusLastUpdate: this.jobStatusLastUpdate,\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 followUpDate: this.followUpDate,\n followUpStatus: this.followUpStatus,\n followUpNote: this.followUpNote,\n geoLocation: this.geoLocation,\n files: this.files,\n fields: this.fields.map(f => f.toDto()),\n jobEmails: this.jobEmails,\n notes: this.notes,\n reports: this.reports,\n tasks: this.tasks,\n instruction: this.instruction\n };\n }\n}\n\nexport class VasJobDocumentModel extends VasJobBaseModel<Record<string, FieldValueType>> {\n\n static fromRelationalDto(dto: Partial<VasJobRelationalDto>): VasJobDocumentModel {\n return new VasJobDocumentModel(\n dto.id || '',\n dto.created || '',\n dto.serverCreated || '',\n dto.createdBy || '',\n dto.modified || '',\n dto.serverModified || '',\n dto.modifiedBy || '',\n dto.createdByName || '',\n dto.modifiedByName || '',\n dto.account || '',\n dto.accessGroup || '',\n dto.reference || '',\n dto.jobDate || '',\n dto.jobStatus || '',\n dto.jobStatusLastUpdate || '',\n dto.jobType || '',\n dto.assigneeId || '',\n dto.formId || (dto as any).lastForm || '',\n dto.timeZoneOffset || moment().utcOffset(),\n dto.pendingFields || 0,\n dto.childModified || '',\n dto.version || 0,\n dto.followUpDate || '',\n dto.followUpStatus || '',\n dto.followUpNote || '',\n dto.geoLocation || getEmptyGeoLocation(),\n dto.files || [],\n (dto.fields || []).reduce((p, c) => {\n p[c.controlName.replace('fields.', '')] = c.value;\n return p;\n }, {} as Record<string, FieldValueType>),\n dto.jobEmails || [],\n dto.notes || [],\n dto.reports || [],\n dto.tasks || [],\n dto.instruction || null\n );\n }\n\n static override fromDto(dto: Partial<VasJobDocumentDto>): VasJobDocumentModel {\n\n if (dto.fields !== undefined && !isPlainObject(dto.fields)) {\n throw Error('fields must be an object');\n }\n\n return new VasJobDocumentModel(\n dto.id || '',\n dto.created || '',\n dto.serverCreated || '',\n dto.createdBy || '',\n dto.modified || '',\n dto.serverModified || '',\n dto.modifiedBy || '',\n dto.createdByName || '',\n dto.modifiedByName || '',\n dto.account || '',\n dto.accessGroup || '',\n dto.reference || '',\n dto.jobDate || '',\n dto.jobStatus || '',\n dto.jobStatusLastUpdate || '',\n dto.jobType || '',\n dto.assigneeId || '',\n dto.formId || (dto as any).lastForm || '',\n dto.timeZoneOffset || moment().utcOffset(),\n dto.pendingFields || 0,\n dto.childModified || '',\n dto.version || 0,\n dto.followUpDate || '',\n dto.followUpStatus || '',\n dto.followUpNote || '',\n dto.geoLocation || getEmptyGeoLocation(),\n dto.files || [],\n dto.fields || {},\n dto.jobEmails || [],\n dto.notes || [],\n dto.reports || [],\n dto.tasks || [],\n dto.instruction || null\n );\n }\n\n static empty(): VasJobDocumentModel {\n return new VasJobDocumentModel(\n '', // id\n '', // created\n '', // serverCreated\n '', // createdBy\n '', // modified\n '', // serverModified\n '', // modifiedBy\n '', // createdByName\n '', // modifiedByName\n '', // account\n '', // accessGroup\n '', // reference\n '', // jobDate\n '', // jobStatus\n '', // jobStatusLastUpdate\n '', // jobType\n '', // assigneeId\n '', // formId\n moment().utcOffset(), // timeZoneOffset\n 0, // pendingFields: number,\n '', // childModified: string,\n 0, // version: number,\n '', // followUpDate: string,\n '', // followUpStatus: string,\n '', // followUpNote: string,\n getEmptyGeoLocation(), // geoLocation: GeoLocation,\n [], // files: Array<VasFileDto>,\n {}, // fields: FType,\n [], // jobEmails: Array<VasJobEmailDto>,\n [], // notes: Array<VasNoteDto>,\n [], // reports: Array<VasReportDto>,\n [], // tasks: Array<VasTaskDto>,\n null // instruction: VasInstructionDto | null\n );\n }\n\n public toDto(): VasJobDocumentDto {\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 createdByName: this.createdByName,\n modifiedByName: this.modifiedByName,\n account: this.account,\n accessGroup: this.accessGroup,\n reference: this.reference,\n jobDate: this.jobDate,\n jobStatus: this.jobStatus,\n jobStatusLastUpdate: this.jobStatusLastUpdate,\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 followUpDate: this.followUpDate,\n followUpStatus: this.followUpStatus,\n followUpNote: this.followUpNote,\n geoLocation: this.geoLocation,\n files: this.files,\n fields: this.fields,\n jobEmails: this.jobEmails,\n notes: this.notes,\n reports: this.reports,\n tasks: this.tasks,\n instruction: this.instruction\n };\n }\n}\n\n/** @deprecated use either VasJobDocumentModel or VasJobRelationalModel **/\nexport type VasJobModel = VasJobDocumentModel | VasJobRelationalModel;\n"]}
|
|
1
|
+
{"version":3,"file":"vas-job.model.js","sourceRoot":"","sources":["../../../../../projects/vas-lib/src/lib/entity/vas-job.model.ts"],"names":[],"mappings":";;;;AAAA,iDAAuD;AACvD,4DAA4B;AAC5B,kEAA4D;AAK5D,+FAAwF;AACxF,oCAA4D;AAC5D,oDAA8G;AAC9G,oCAAwD;AAMxD,uDAAkD;AAElD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;IACxB,SAAS;IACT,UAAU;IACV,WAAW;IACX,SAAS;IACT,cAAc;IACd,gBAAgB;IAChB,cAAc;CACf,CAAC,CAAC;AAkBH,IAAI,cAAuC,CAAC;AAE5C,SAAS,cAAc;IACrB,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,OAAO,cAAc,GAAG,IAAI,GAAG,CAAC;QAC9B,GAAG,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;QAC1D,UAAU;KACX,CAAC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CACtB,KAAc;IAEd,OAAO,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAc;IAEd,OAAO,CAAC,CAAC,KAAK,IAAI,IAAA,qBAAa,EAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAsB,eAAqF,SAAQ,qEAA+B;IAEhJ,YACkB,EAAU,EACV,OAAe,EACf,aAAqB,EACrB,SAAiB,EACjB,QAAgB,EAChB,cAAsB,EACtB,UAAkB,EAClB,aAAqB,EACrB,cAAsB,EACtB,OAAe,EACf,WAAmB,EAC5B,SAAiB,EACjB,OAAe,EACf,SAAiB,EACjB,mBAA2B,EAC3B,OAAe,EACf,UAAkB,EAClB,MAAc,EACd,cAAsB,EACtB,aAAqB,EACrB,aAAqB,EACrB,OAAe,EACf,YAAoB,EACpB,cAAsB,EACtB,YAAoB,EACpB,WAAwB,EACxB,KAAwB,EACxB,MAAa,EACb,SAAgC,EAChC,KAAwB,EACxB,OAA4B,EAC5B,KAAwB,EACxB,WAAqC;QAE5C,KAAK,CACH,EAAE,EACF,OAAO,EACP,aAAa,EACb,SAAS,EACT,QAAQ,EACR,cAAc,EACd,UAAU,EACV,aAAa,EACb,cAAc,EACd,OAAO,EACP,WAAW,CACZ,CAAC;QA9Cc,OAAE,GAAF,EAAE,CAAQ;QACV,YAAO,GAAP,OAAO,CAAQ;QACf,kBAAa,GAAb,aAAa,CAAQ;QACrB,cAAS,GAAT,SAAS,CAAQ;QACjB,aAAQ,GAAR,QAAQ,CAAQ;QAChB,mBAAc,GAAd,cAAc,CAAQ;QACtB,eAAU,GAAV,UAAU,CAAQ;QAClB,kBAAa,GAAb,aAAa,CAAQ;QACrB,mBAAc,GAAd,cAAc,CAAQ;QACtB,YAAO,GAAP,OAAO,CAAQ;QACf,gBAAW,GAAX,WAAW,CAAQ;QAC5B,cAAS,GAAT,SAAS,CAAQ;QACjB,YAAO,GAAP,OAAO,CAAQ;QACf,cAAS,GAAT,SAAS,CAAQ;QACjB,wBAAmB,GAAnB,mBAAmB,CAAQ;QAC3B,YAAO,GAAP,OAAO,CAAQ;QACf,eAAU,GAAV,UAAU,CAAQ;QAClB,WAAM,GAAN,MAAM,CAAQ;QACd,mBAAc,GAAd,cAAc,CAAQ;QACtB,kBAAa,GAAb,aAAa,CAAQ;QACrB,kBAAa,GAAb,aAAa,CAAQ;QACrB,YAAO,GAAP,OAAO,CAAQ;QACf,iBAAY,GAAZ,YAAY,CAAQ;QACpB,mBAAc,GAAd,cAAc,CAAQ;QACtB,iBAAY,GAAZ,YAAY,CAAQ;QACpB,gBAAW,GAAX,WAAW,CAAa;QACxB,UAAK,GAAL,KAAK,CAAmB;QACxB,WAAM,GAAN,MAAM,CAAO;QACb,cAAS,GAAT,SAAS,CAAuB;QAChC,UAAK,GAAL,KAAK,CAAmB;QACxB,YAAO,GAAP,OAAO,CAAqB;QAC5B,UAAK,GAAL,KAAK,CAAmB;QACxB,gBAAW,GAAX,WAAW,CAA0B;IAe9C,CAAC;IAED,IAAI,oBAAoB;QACtB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,IAAI,qBAAqB;QACvB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,IAAI,gBAAgB;QAElB,OAAO,cAAc,EAAE,CAAC;IAC1B,CAAC;IAED;;;;;;OAMG;IACH,oBAAoB,CAClB,SAAuB;QAGvB,MAAM,iBAAiB,GAAG,MAAM;aAC7B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;aACnB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAA,sCAAsB,EAAC,KAAK,CAAC,IAAI,IAAA,sCAAsB,EAAC,KAAK,CAAC,CAAC,CAAC;QAGnF,IAAI,KAAK,GAAG,iBAAiB,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAEzD,wDAAwD;QACxD,IAAI,OAAO,GAAG,iBAAiB;aAC5B,GAAG,CAAC,CAAC,KAA8C,EAAE,EAAE;YACtD,IAAI,IAAA,wBAAS,EAAC,KAAK,CAAC,EAAE,CAAC;gBACrB,OAAO,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC;YACjD,CAAC;iBAAM,IAAI,IAAA,sCAAsB,EAAC,KAAK,CAAC,EAAE,CAAC;gBACzC,6CAA6C;gBAC7C,OAAO,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;YAChC,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;aACD,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC;aAClC,MAAM,CAAC;QAEV,2CAA2C;QAC3C,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,MAAM,CAAC;QAE1E,OAAO;YACL,OAAO;YACP,KAAK;SACN,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,cAAc,CACZ,OAA0B,EAAE;QAE5B,OAAO,IAAA,kCAAc,EACnB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAC5C,IAAI,CACL,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,WAAW,CACT,KAAa,EACb,UAA8B;QAC5B,cAAc,EAAE,CAAC;KAClB;QAGD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACxC,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE;YAClE,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAEpD,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtC,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACzB,MAAM,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAE/B,IAAI,UAAU,EAAE,SAAS,GAAW,EAAE,CAAC;YACvC,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACvC,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;oBACtB,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;oBAC7C,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;gBAC/C,CAAC;qBAAM,CAAC;oBACN,UAAU,GAAG,MAAM,CAAC;oBACpB,SAAS,GAAG,EAAE,CAAC;gBACjB,CAAC;gBACD,UAAU,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBACvC,SAAS,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACvC,CAAC;YACD,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;YACrC,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;gBACxB,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;YACxD,CAAC;iBAAM,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAClC,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;YACvE,CAAC;iBAAM,IAAI,SAAS,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC3F,MAAM,GAAG,CAAC,IAAA,kCAAc,EAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC/E,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;gBACzB,QAAQ,UAAU,EAAE,CAAC;oBACnB,KAAK,MAAM,CAAC,CAAC,CAAC;wBACZ,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;4BAC5B,OAAO,IAAA,gBAAM,EAAC,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;wBAChD,CAAC;6BAAM,CAAC;4BACN,OAAO,IAAA,gBAAM,EAAC,MAAM,CAAC;iCAClB,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC;iCACjC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;wBAC7B,CAAC;oBACH,CAAC;oBACD,OAAO,CAAC,CAAC,CAAC;wBACR,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;oBAChD,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACZ,CAAC;IAAA,CAAC;IAEF;;OAEG;IACM,QAAQ;QACf,uCACK,KAAK,CAAC,QAAQ,EAAE,KACnB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,GAAG,EAChC,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,GAAG,EAC5B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,GAAG,EAC5B,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,GAAG,EACpC,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,GAAG,EAChC,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,GAAG,EAClC,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,CAAC,EACxC,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,CAAC,EACtC,QAAQ,EAAE,IAAI,CAAC,MAAM,IAAI,GAAG,IAC5B;IACJ,CAAC;IAEM,MAAM,CAAC,aAAa,CACzB,IAA4B;QAE5B,OAAO,IAAA,YAAI,EACT,IAAI,EACJ;YACE,SAAS;YACT,UAAU;YACV,WAAW;YACX,SAAS;YACT,SAAS;YACT,aAAa;YACb,WAAW;YACX,YAAY;YACZ,gBAAgB;YAChB,eAAe;YACf,QAAQ;YACR,cAAc;YACd,gBAAgB;YAChB,cAAc;SACf,EACD,CAAC,KAAU,EAAE,GAA8B,EAAE,EAAE,CAC7C,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAC/D,CAAC;IACJ,CAAC;CACF;AA9PD,0CA8PC;AAED,MAAa,qBAAsB,SAAQ,eAAqC;IAErE,cAAc,CACrB,OAA0B,EAAE;QAE5B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3D,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAM,CAAC;QACjE,CAAC;QACD,OAAO,IAAA,kCAAc,EAAI,KAAK,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACjC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YAC3B,OAAO,CAAC,CAAC;QACX,CAAC,EAAE,EAAoC,CAAC,CAAC;IAC3C,CAAC;IAED,mBAAmB,CACjB,WAAmB,EACnB,IAAc;QAEd,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,KAAK,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;gBACtC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtB,OAAO,KAAK,CAAC,KAAU,CAAC;gBAC1B,CAAC;gBACD,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;oBACzB,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC7C,CAAC;gBACD,IAAI,IAAA,qBAAa,EAAS,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;oBACvC,OAAO,IAAA,kCAAc,EAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC3C,CAAC;gBACD,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,CAAU,OAAO,CAAC,GAAiC;QAEvD,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3D,MAAM,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,IAAI,qBAAqB,CAC9B,GAAG,CAAC,EAAE,IAAI,EAAE,EACZ,GAAG,CAAC,OAAO,IAAI,EAAE,EACjB,GAAG,CAAC,aAAa,IAAI,EAAE,EACvB,GAAG,CAAC,SAAS,IAAI,EAAE,EACnB,GAAG,CAAC,QAAQ,IAAI,EAAE,EAClB,GAAG,CAAC,cAAc,IAAI,EAAE,EACxB,GAAG,CAAC,UAAU,IAAI,EAAE,EACpB,GAAG,CAAC,aAAa,IAAI,EAAE,EACvB,GAAG,CAAC,cAAc,IAAI,EAAE,EACxB,GAAG,CAAC,OAAO,IAAI,EAAE,EACjB,GAAG,CAAC,WAAW,IAAI,EAAE,EACrB,GAAG,CAAC,SAAS,IAAI,EAAE,EACnB,GAAG,CAAC,OAAO,IAAI,EAAE,EACjB,GAAG,CAAC,SAAS,IAAI,EAAE,EACnB,GAAG,CAAC,mBAAmB,IAAI,EAAE,EAC7B,GAAG,CAAC,OAAO,IAAI,EAAE,EACjB,GAAG,CAAC,UAAU,IAAI,EAAE,EACpB,GAAG,CAAC,MAAM,IAAK,GAAW,CAAC,QAAQ,IAAI,EAAE,EACzC,GAAG,CAAC,cAAc,IAAI,IAAA,gBAAM,GAAE,CAAC,SAAS,EAAE,EAC1C,GAAG,CAAC,aAAa,IAAI,CAAC,EACtB,GAAG,CAAC,aAAa,IAAI,EAAE,EACvB,GAAG,CAAC,OAAO,IAAI,CAAC,EAChB,GAAG,CAAC,YAAY,IAAI,EAAE,EACtB,GAAG,CAAC,cAAc,IAAI,EAAE,EACxB,GAAG,CAAC,YAAY,IAAI,EAAE,EACtB,GAAG,CAAC,WAAW,IAAI,IAAA,2BAAmB,GAAE,EACxC,GAAG,CAAC,KAAK,IAAI,EAAE,EACf,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,+BAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EACrD,GAAG,CAAC,SAAS,IAAI,EAAE,EACnB,GAAG,CAAC,KAAK,IAAI,EAAE,EACf,GAAG,CAAC,OAAO,IAAI,EAAE,EACjB,GAAG,CAAC,KAAK,IAAI,EAAE,EACf,GAAG,CAAC,WAAW,IAAI,IAAI,CACxB,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAK;QACV,OAAO,IAAI,qBAAqB,CAC9B,EAAE,EAAyB,KAAK;QAChC,EAAE,EAAyB,UAAU;QACrC,EAAE,EAAyB,gBAAgB;QAC3C,EAAE,EAAyB,YAAY;QACvC,EAAE,EAAyB,WAAW;QACtC,EAAE,EAAyB,iBAAiB;QAC5C,EAAE,EAAyB,aAAa;QACxC,EAAE,EAAyB,gBAAgB;QAC3C,EAAE,EAAyB,iBAAiB;QAC5C,EAAE,EAAyB,UAAU;QACrC,EAAE,EAAyB,cAAc;QACzC,EAAE,EAAyB,YAAY;QACvC,EAAE,EAAyB,UAAU;QACrC,EAAE,EAAyB,YAAY;QACvC,EAAE,EAAyB,sBAAsB;QACjD,EAAE,EAAyB,UAAU;QACrC,EAAE,EAAyB,aAAa;QACxC,EAAE,EAAyB,SAAS;QACpC,IAAA,gBAAM,GAAE,CAAC,SAAS,EAAE,EAAO,iBAAiB;QAC5C,CAAC,EAA0B,yBAAyB;QACpD,EAAE,EAAyB,yBAAyB;QACpD,CAAC,EAA0B,mBAAmB;QAC9C,EAAE,EAAyB,wBAAwB;QACnD,EAAE,EAAyB,0BAA0B;QACrD,EAAE,EAAyB,wBAAwB;QACnD,IAAA,2BAAmB,GAAE,EAAM,4BAA4B;QACvD,EAAE,EAAyB,4BAA4B;QACvD,EAAE,EAAyB,iBAAiB;QAC5C,EAAE,EAAyB,oCAAoC;QAC/D,EAAE,EAAyB,4BAA4B;QACvD,EAAE,EAAyB,gCAAgC;QAC3D,EAAE,EAAyB,4BAA4B;QACvD,IAAI,CAAuB,wCAAwC;SACpE,CAAC;IACJ,CAAC;IAEM,KAAK;QACV,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YACvC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC;IACJ,CAAC;CACF;AA9JD,sDA8JC;AAED,MAAa,mBAAoB,SAAQ,eAA+C;IAEtF,MAAM,CAAC,iBAAiB,CAAC,GAAiC;QACxD,OAAO,IAAI,mBAAmB,CAC5B,GAAG,CAAC,EAAE,IAAI,EAAE,EACZ,GAAG,CAAC,OAAO,IAAI,EAAE,EACjB,GAAG,CAAC,aAAa,IAAI,EAAE,EACvB,GAAG,CAAC,SAAS,IAAI,EAAE,EACnB,GAAG,CAAC,QAAQ,IAAI,EAAE,EAClB,GAAG,CAAC,cAAc,IAAI,EAAE,EACxB,GAAG,CAAC,UAAU,IAAI,EAAE,EACpB,GAAG,CAAC,aAAa,IAAI,EAAE,EACvB,GAAG,CAAC,cAAc,IAAI,EAAE,EACxB,GAAG,CAAC,OAAO,IAAI,EAAE,EACjB,GAAG,CAAC,WAAW,IAAI,EAAE,EACrB,GAAG,CAAC,SAAS,IAAI,EAAE,EACnB,GAAG,CAAC,OAAO,IAAI,EAAE,EACjB,GAAG,CAAC,SAAS,IAAI,EAAE,EACnB,GAAG,CAAC,mBAAmB,IAAI,EAAE,EAC7B,GAAG,CAAC,OAAO,IAAI,EAAE,EACjB,GAAG,CAAC,UAAU,IAAI,EAAE,EACpB,GAAG,CAAC,MAAM,IAAK,GAAW,CAAC,QAAQ,IAAI,EAAE,EACzC,GAAG,CAAC,cAAc,IAAI,IAAA,gBAAM,GAAE,CAAC,SAAS,EAAE,EAC1C,GAAG,CAAC,aAAa,IAAI,CAAC,EACtB,GAAG,CAAC,aAAa,IAAI,EAAE,EACvB,GAAG,CAAC,OAAO,IAAI,CAAC,EAChB,GAAG,CAAC,YAAY,IAAI,EAAE,EACtB,GAAG,CAAC,cAAc,IAAI,EAAE,EACxB,GAAG,CAAC,YAAY,IAAI,EAAE,EACtB,GAAG,CAAC,WAAW,IAAI,IAAA,2BAAmB,GAAE,EACxC,GAAG,CAAC,KAAK,IAAI,EAAE,EACf,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACjC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YAClD,OAAO,CAAC,CAAC;QACX,CAAC,EAAE,EAAoC,CAAC,EACxC,GAAG,CAAC,SAAS,IAAI,EAAE,EACnB,GAAG,CAAC,KAAK,IAAI,EAAE,EACf,GAAG,CAAC,OAAO,IAAI,EAAE,EACjB,GAAG,CAAC,KAAK,IAAI,EAAE,EACf,GAAG,CAAC,WAAW,IAAI,IAAI,CACxB,CAAC;IACJ,CAAC;IAED,MAAM,CAAU,OAAO,CACrB,GAA+B,EAC/B,OAAO,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE;QAGxC,IAAI,MAAM,GAAmC,EAAE,CAAC;QAEhD,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;oBAC/B,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;wBAC9C,IAAA,eAAO,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;iBAAM,IAAI,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5C,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YACtB,CAAC;QACH,CAAC;QAED,2EAA2E;QAC3E,4EAA4E;QAC5E,uEAAuE;QACvE,4EAA4E;QAC5E,0EAA0E;QAC1E,qEAAqE;QACrE,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAmD,GAAU,CAAC;YACxE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE;gBACjC,IAAI,cAAc,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBACpC,OAAO,CAAC,CAAC;gBACX,CAAC;gBACD,MAAM;qBACH,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;qBACrB,OAAO,CAAC,WAAW,CAAC,EAAE;oBACrB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;wBACvC,OAAO;oBACT,CAAC;oBACD,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC;gBACzD,CAAC,CAAC,CAAC;gBACL,OAAO,CAAC,CAAC;YACX,CAAC,EAAE,MAAM,CAAC,CAAC;QACb,CAAC;QACD,OAAO,IAAI,mBAAmB,CAC5B,GAAG,CAAC,EAAE,IAAI,EAAE,EACZ,GAAG,CAAC,OAAO,IAAI,EAAE,EACjB,GAAG,CAAC,aAAa,IAAI,EAAE,EACvB,GAAG,CAAC,SAAS,IAAI,EAAE,EACnB,GAAG,CAAC,QAAQ,IAAI,EAAE,EAClB,GAAG,CAAC,cAAc,IAAI,EAAE,EACxB,GAAG,CAAC,UAAU,IAAI,EAAE,EACpB,GAAG,CAAC,aAAa,IAAI,EAAE,EACvB,GAAG,CAAC,cAAc,IAAI,EAAE,EACxB,GAAG,CAAC,OAAO,IAAI,EAAE,EACjB,GAAG,CAAC,WAAW,IAAI,EAAE,EACrB,GAAG,CAAC,SAAS,IAAI,EAAE,EACnB,GAAG,CAAC,OAAO,IAAI,EAAE,EACjB,GAAG,CAAC,SAAS,IAAI,EAAE,EACnB,GAAG,CAAC,mBAAmB,IAAI,EAAE,EAC7B,GAAG,CAAC,OAAO,IAAI,EAAE,EACjB,GAAG,CAAC,UAAU,IAAI,EAAE,EACpB,GAAG,CAAC,MAAM,IAAK,GAAW,CAAC,QAAQ,IAAI,EAAE,EACzC,GAAG,CAAC,cAAc,IAAI,IAAA,gBAAM,GAAE,CAAC,SAAS,EAAE,EAC1C,GAAG,CAAC,aAAa,IAAI,CAAC,EACtB,GAAG,CAAC,aAAa,IAAI,EAAE,EACvB,GAAG,CAAC,OAAO,IAAI,CAAC,EAChB,GAAG,CAAC,YAAY,IAAI,EAAE,EACtB,GAAG,CAAC,cAAc,IAAI,EAAE,EACxB,GAAG,CAAC,YAAY,IAAI,EAAE,EACtB,GAAG,CAAC,WAAW,IAAI,IAAA,2BAAmB,GAAE,EACxC,GAAG,CAAC,KAAK,IAAI,EAAE,EACf,MAAM,EACN,GAAG,CAAC,SAAS,IAAI,EAAE,EACnB,GAAG,CAAC,KAAK,IAAI,EAAE,EACf,GAAG,CAAC,OAAO,IAAI,EAAE,EACjB,GAAG,CAAC,KAAK,IAAI,EAAE,EACf,GAAG,CAAC,WAAW,IAAI,IAAI,CACxB,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAK;QACV,OAAO,IAAI,mBAAmB,CAC5B,EAAE,EAAyB,KAAK;QAChC,EAAE,EAAyB,UAAU;QACrC,EAAE,EAAyB,gBAAgB;QAC3C,EAAE,EAAyB,YAAY;QACvC,EAAE,EAAyB,WAAW;QACtC,EAAE,EAAyB,iBAAiB;QAC5C,EAAE,EAAyB,aAAa;QACxC,EAAE,EAAyB,gBAAgB;QAC3C,EAAE,EAAyB,iBAAiB;QAC5C,EAAE,EAAyB,UAAU;QACrC,EAAE,EAAyB,cAAc;QACzC,EAAE,EAAyB,YAAY;QACvC,EAAE,EAAyB,UAAU;QACrC,EAAE,EAAyB,YAAY;QACvC,EAAE,EAAyB,sBAAsB;QACjD,EAAE,EAAyB,UAAU;QACrC,EAAE,EAAyB,aAAa;QACxC,EAAE,EAAyB,SAAS;QACpC,IAAA,gBAAM,GAAE,CAAC,SAAS,EAAE,EAAO,iBAAiB;QAC5C,CAAC,EAA0B,yBAAyB;QACpD,EAAE,EAAyB,yBAAyB;QACpD,CAAC,EAA0B,mBAAmB;QAC9C,EAAE,EAAyB,wBAAwB;QACnD,EAAE,EAAyB,0BAA0B;QACrD,EAAE,EAAyB,wBAAwB;QACnD,IAAA,2BAAmB,GAAE,EAAM,4BAA4B;QACvD,EAAE,EAAyB,4BAA4B;QACvD,EAAE,EAAyB,iBAAiB;QAC5C,EAAE,EAAyB,oCAAoC;QAC/D,EAAE,EAAyB,4BAA4B;QACvD,EAAE,EAAyB,gCAAgC;QAC3D,EAAE,EAAyB,4BAA4B;QACvD,IAAI,CAAuB,wCAAwC;SACpE,CAAC;IACJ,CAAC;IAEM,KAAK;QACV,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC;IACJ,CAAC;CACF;AArMD,kDAqMC","sourcesContent":["import { isFileDto, VasFileDto } from './vas-file.dto';\nimport moment from 'moment';\nimport { getValueByPath } from '../utils/get-value-by-path';\nimport { VasBaseDto } from './vas-base.dto';\nimport { FieldValueType, VasFieldDto } from './vas-field.dto';\nimport { VasFormModel } from './vas-form.model';\nimport { VasJobBaseDto, VasJobDocumentDto, VasJobRelationalDto } from './vas-job.dto';\nimport { VasRestrictedAccountObjectModel } from './vas-restricted-account-object.model';\nimport { GeoLocation, getEmptyGeoLocation } from '../model';\nimport { isCameraControlValueV1, isCameraControlValueV2, VasCameraControlValueModel } from '../control-value';\nimport { isPlainObject, only, tryJson } from '../utils';\nimport { VasReportDto } from './vas-report.dto';\nimport { VasTaskDto } from './vas-task.dto';\nimport { VasNoteDto } from './vas-note.dto';\nimport { VasJobEmailDto } from './vas-job-email.dto';\nimport { VasInstructionDto } from './vas-instruction.dto';\nimport { VasFieldModel } from './vas-field.model';\n\nconst nullables = new Set([\n 'created',\n 'modified',\n 'reference',\n 'jobDate',\n 'followUpDate',\n 'followUpStatus',\n 'followUpNote',\n]);\n\ntype VasJobDynamicDto = Partial<VasJobDocumentDto> & Record<string, any>;\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, FieldValueType>>;\n}\n\nlet jobStaticProps: Set<string> | undefined;\n\nfunction getStaticProps(): Set<string> {\n if (jobStaticProps) {\n return jobStaticProps;\n }\n return jobStaticProps = new Set([\n ...Object.getOwnPropertyNames(VasJobDocumentModel.empty()),\n 'assignee'\n ]);\n}\n\nfunction isArrayOfFields(\n value: unknown\n): value is Array<VasFieldDto> {\n return !!value && Array.isArray(value);\n}\n\nfunction isDictionaryOfFields(\n value: unknown\n): value is Record<string, FieldValueType> {\n return !!value && isPlainObject(value);\n}\n\n/**\n * VasJobBaseModel\n */\nexport abstract class VasJobBaseModel<FType extends Record<string, FieldValueType> | Array<VasFieldModel>> extends VasRestrictedAccountObjectModel {\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 createdByName: string,\n public override modifiedByName: 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 jobStatusLastUpdate: 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 followUpDate: string,\n public followUpStatus: string,\n public followUpNote: string,\n public geoLocation: GeoLocation,\n public files: Array<VasFileDto>,\n public fields: FType,\n public jobEmails: Array<VasJobEmailDto>,\n public notes: Array<VasNoteDto>,\n public reports: Array<VasReportDto>,\n public tasks: Array<VasTaskDto>,\n public instruction: VasInstructionDto | null\n ) {\n super(\n id,\n created,\n serverCreated,\n createdBy,\n modified,\n serverModified,\n modifiedBy,\n createdByName,\n modifiedByName,\n account,\n accessGroup\n );\n }\n\n get createdByDisplayName(): string {\n return this.createdByName;\n }\n\n get modifiedByDisplayName(): string {\n return this.modifiedByName;\n }\n\n /**\n * Return the list of Job properties\n */\n get staticProperties(): Set<string> {\n\n return getStaticProps();\n }\n\n /**\n * Returns an object describing how many attachments were added to this job\n * (camera controls and files), and how many have not been uploaded yet.\n *\n * @param formModel instance of {@link VasFormModel} that was used when the\n * job was created\n */\n getFilesUploadStatus(\n formModel: VasFormModel\n ): { pending: number; total: number } {\n\n const cameraFieldValues = Object\n .values(this.fields)\n .filter(value => isCameraControlValueV2(value) || isCameraControlValueV1(value));\n\n\n let total = cameraFieldValues.length + this.files.length;\n\n // calculate the number of camera images still to upload\n let pending = cameraFieldValues\n .map((value: VasFileDto | VasCameraControlValueModel) => {\n if (isFileDto(value)) {\n return value.id && value.status !== 'COMPLETE';\n } else if (isCameraControlValueV1(value)) {\n // if url is not set, it hasn't been uploaded\n return value.id && !value.url;\n }\n return false;\n })\n .filter(hasUploaded => hasUploaded)\n .length;\n\n // add count of job.files that are complete\n pending += this.files.filter(value => value.status !== 'COMPLETE').length;\n\n return {\n pending,\n total\n };\n }\n\n /**\n * @param path path segments\n */\n getValueByPath<T>(\n path: string | string[] = []\n ): T | null | undefined {\n return getValueByPath<T>(\n Array.isArray(path) ? path : path.split('.'),\n this\n );\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 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 = (this.getValueByPath(['fields', ...path]) || '').toString();\n } else if (objectKey.length && options.objects && options.objects[objectKey] !== undefined) {\n result = (getValueByPath(path, options.objects[objectKey]) || '').toString();\n } else {\n return '';\n }\n\n if (filterName && result) {\n switch (filterName) {\n case 'date': {\n if (!options.timeZoneOffset) {\n return moment(result).format(filterArg || '');\n } else {\n return moment(result)\n .utcOffset(options.timeZoneOffset)\n .format(filterArg || '');\n }\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 lastForm: this.formId || '~'\n };\n }\n\n public static toApiPatchDto(\n item: Partial<VasJobBaseDto>\n ): Partial<VasJobBaseDto> {\n return only(\n item,\n [\n 'created',\n 'modified',\n 'reference',\n 'jobDate',\n 'jobType',\n 'accessGroup',\n 'jobStatus',\n 'assigneeId',\n 'timeZoneOffset',\n 'pendingFields',\n 'formId',\n 'followUpDate',\n 'followUpStatus',\n 'followUpNote',\n ],\n (value: any, key: keyof VasJobRelationalDto) =>\n value[key] === null && nullables.has(key) ? '~' : value[key]\n );\n }\n}\n\nexport class VasJobRelationalModel extends VasJobBaseModel<Array<VasFieldModel>> {\n\n override getValueByPath<T>(\n path: string | string[] = []\n ): T | null | undefined {\n const parts = Array.isArray(path) ? path : path.split('.');\n if (parts[0] === 'fields') {\n return this.getFieldValueByPath(parts[1], parts.slice(2)) as T;\n }\n return getValueByPath<T>(parts, this);\n }\n\n getFieldsMap(): Record<string, FieldValueType> {\n return this.fields.reduce((p, c) => {\n p[c.controlName] = c.value;\n return p;\n }, {} as Record<string, FieldValueType>);\n }\n\n getFieldValueByPath<T extends FieldValueType>(\n controlName: string,\n path: string[]\n ): T | null | undefined {\n for (const field of this.fields) {\n if (field.controlName === controlName) {\n if (path.length === 0) {\n return field.value as T;\n }\n if (field.value === null) {\n return path.length >= 1 ? undefined : null;\n }\n if (isPlainObject<object>(field.value)) {\n return getValueByPath(path, field.value);\n }\n return undefined;\n }\n }\n return undefined;\n }\n\n static override fromDto(dto: Partial<VasJobRelationalDto>): VasJobRelationalModel {\n\n if (dto.fields !== undefined && !Array.isArray(dto.fields)) {\n throw Error('fields must be an array');\n }\n\n return new VasJobRelationalModel(\n dto.id || '',\n dto.created || '',\n dto.serverCreated || '',\n dto.createdBy || '',\n dto.modified || '',\n dto.serverModified || '',\n dto.modifiedBy || '',\n dto.createdByName || '',\n dto.modifiedByName || '',\n dto.account || '',\n dto.accessGroup || '',\n dto.reference || '',\n dto.jobDate || '',\n dto.jobStatus || '',\n dto.jobStatusLastUpdate || '',\n dto.jobType || '',\n dto.assigneeId || '',\n dto.formId || (dto as any).lastForm || '',\n dto.timeZoneOffset || moment().utcOffset(),\n dto.pendingFields || 0,\n dto.childModified || '',\n dto.version || 0,\n dto.followUpDate || '',\n dto.followUpStatus || '',\n dto.followUpNote || '',\n dto.geoLocation || getEmptyGeoLocation(),\n dto.files || [],\n (dto.fields || []).map(f => VasFieldModel.fromDto(f)),\n dto.jobEmails || [],\n dto.notes || [],\n dto.reports || [],\n dto.tasks || [],\n dto.instruction || null\n );\n }\n\n static empty(): VasJobRelationalModel {\n return new VasJobRelationalModel(\n '', // id\n '', // created\n '', // serverCreated\n '', // createdBy\n '', // modified\n '', // serverModified\n '', // modifiedBy\n '', // createdByName\n '', // modifiedByName\n '', // account\n '', // accessGroup\n '', // reference\n '', // jobDate\n '', // jobStatus\n '', // jobStatusLastUpdate\n '', // jobType\n '', // assigneeId\n '', // formId\n moment().utcOffset(), // timeZoneOffset\n 0, // pendingFields: number,\n '', // childModified: string,\n 0, // version: number,\n '', // followUpDate: string,\n '', // followUpStatus: string,\n '', // followUpNote: string,\n getEmptyGeoLocation(), // geoLocation: GeoLocation,\n [], // files: Array<VasFileDto>,\n [], // fields: FType,\n [], // jobEmails: Array<VasJobEmailDto>,\n [], // notes: Array<VasNoteDto>,\n [], // reports: Array<VasReportDto>,\n [], // tasks: Array<VasTaskDto>,\n null // instruction: VasInstructionDto | null\n );\n }\n\n public toDto(): VasJobRelationalDto {\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 createdByName: this.createdByName,\n modifiedByName: this.modifiedByName,\n account: this.account,\n accessGroup: this.accessGroup,\n reference: this.reference,\n jobDate: this.jobDate,\n jobStatus: this.jobStatus,\n jobStatusLastUpdate: this.jobStatusLastUpdate,\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 followUpDate: this.followUpDate,\n followUpStatus: this.followUpStatus,\n followUpNote: this.followUpNote,\n geoLocation: this.geoLocation,\n files: this.files,\n fields: this.fields.map(f => f.toDto()),\n jobEmails: this.jobEmails,\n notes: this.notes,\n reports: this.reports,\n tasks: this.tasks,\n instruction: this.instruction\n };\n }\n}\n\nexport class VasJobDocumentModel extends VasJobBaseModel<Record<string, FieldValueType>> {\n\n static fromRelationalDto(dto: Partial<VasJobRelationalDto>): VasJobDocumentModel {\n return new VasJobDocumentModel(\n dto.id || '',\n dto.created || '',\n dto.serverCreated || '',\n dto.createdBy || '',\n dto.modified || '',\n dto.serverModified || '',\n dto.modifiedBy || '',\n dto.createdByName || '',\n dto.modifiedByName || '',\n dto.account || '',\n dto.accessGroup || '',\n dto.reference || '',\n dto.jobDate || '',\n dto.jobStatus || '',\n dto.jobStatusLastUpdate || '',\n dto.jobType || '',\n dto.assigneeId || '',\n dto.formId || (dto as any).lastForm || '',\n dto.timeZoneOffset || moment().utcOffset(),\n dto.pendingFields || 0,\n dto.childModified || '',\n dto.version || 0,\n dto.followUpDate || '',\n dto.followUpStatus || '',\n dto.followUpNote || '',\n dto.geoLocation || getEmptyGeoLocation(),\n dto.files || [],\n (dto.fields || []).reduce((p, c) => {\n p[c.controlName.replace('fields.', '')] = c.value;\n return p;\n }, {} as Record<string, FieldValueType>),\n dto.jobEmails || [],\n dto.notes || [],\n dto.reports || [],\n dto.tasks || [],\n dto.instruction || null\n );\n }\n\n static override fromDto(\n dto: Partial<VasJobDocumentDto>,\n options = { disableMigrateCheck: false }\n ): VasJobDocumentModel {\n\n let fields: Record<string, FieldValueType> = {};\n\n if (dto.fields !== undefined) {\n if (isArrayOfFields(dto.fields)) {\n for (const field of dto.fields) {\n fields[field.controlName.replace('fields.', '')] =\n tryJson(field.value);\n }\n } else if (isDictionaryOfFields(dto.fields)) {\n fields = dto.fields;\n }\n }\n\n // this code is checking if a have a document in the old dynamic job style,\n // i.e. where there are keys in the job object that come from the form-group\n // names. I did consider comparing the number of keys in the dto vs the\n // number of expected keys, but this will fail if we try to read old objects\n // that don't have new properties added. So we always check by default. We\n // can skip this check by setting disableMigrateCheck in the options.\n if (!options || !options.disableMigrateCheck) {\n const ddto: Record<string, Record<string, FieldValueType>> = dto as any;\n const actualKeys = Object.keys(ddto);\n actualKeys.reduce((f, groupName) => {\n if (getStaticProps().has(groupName)) {\n return f;\n }\n Object\n .keys(ddto[groupName])\n .forEach(controlName => {\n if (!controlName.startsWith('fields.')) {\n return;\n }\n f[controlName.slice(7)] = ddto[groupName][controlName];\n });\n return f;\n }, fields);\n }\n return new VasJobDocumentModel(\n dto.id || '',\n dto.created || '',\n dto.serverCreated || '',\n dto.createdBy || '',\n dto.modified || '',\n dto.serverModified || '',\n dto.modifiedBy || '',\n dto.createdByName || '',\n dto.modifiedByName || '',\n dto.account || '',\n dto.accessGroup || '',\n dto.reference || '',\n dto.jobDate || '',\n dto.jobStatus || '',\n dto.jobStatusLastUpdate || '',\n dto.jobType || '',\n dto.assigneeId || '',\n dto.formId || (dto as any).lastForm || '',\n dto.timeZoneOffset || moment().utcOffset(),\n dto.pendingFields || 0,\n dto.childModified || '',\n dto.version || 0,\n dto.followUpDate || '',\n dto.followUpStatus || '',\n dto.followUpNote || '',\n dto.geoLocation || getEmptyGeoLocation(),\n dto.files || [],\n fields,\n dto.jobEmails || [],\n dto.notes || [],\n dto.reports || [],\n dto.tasks || [],\n dto.instruction || null\n );\n }\n\n static empty(): VasJobDocumentModel {\n return new VasJobDocumentModel(\n '', // id\n '', // created\n '', // serverCreated\n '', // createdBy\n '', // modified\n '', // serverModified\n '', // modifiedBy\n '', // createdByName\n '', // modifiedByName\n '', // account\n '', // accessGroup\n '', // reference\n '', // jobDate\n '', // jobStatus\n '', // jobStatusLastUpdate\n '', // jobType\n '', // assigneeId\n '', // formId\n moment().utcOffset(), // timeZoneOffset\n 0, // pendingFields: number,\n '', // childModified: string,\n 0, // version: number,\n '', // followUpDate: string,\n '', // followUpStatus: string,\n '', // followUpNote: string,\n getEmptyGeoLocation(), // geoLocation: GeoLocation,\n [], // files: Array<VasFileDto>,\n {}, // fields: FType,\n [], // jobEmails: Array<VasJobEmailDto>,\n [], // notes: Array<VasNoteDto>,\n [], // reports: Array<VasReportDto>,\n [], // tasks: Array<VasTaskDto>,\n null // instruction: VasInstructionDto | null\n );\n }\n\n public toDto(): VasJobDocumentDto {\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 createdByName: this.createdByName,\n modifiedByName: this.modifiedByName,\n account: this.account,\n accessGroup: this.accessGroup,\n reference: this.reference,\n jobDate: this.jobDate,\n jobStatus: this.jobStatus,\n jobStatusLastUpdate: this.jobStatusLastUpdate,\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 followUpDate: this.followUpDate,\n followUpStatus: this.followUpStatus,\n followUpNote: this.followUpNote,\n geoLocation: this.geoLocation,\n files: this.files,\n fields: this.fields,\n jobEmails: this.jobEmails,\n notes: this.notes,\n reports: this.reports,\n tasks: this.tasks,\n instruction: this.instruction\n };\n }\n}\n\n/** @deprecated use either VasJobDocumentModel or VasJobRelationalModel **/\nexport type VasJobModel = VasJobDocumentModel | VasJobRelationalModel;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"estimate-item.dto.d.ts","sourceRoot":"","sources":["../../../../../../projects/vas-lib/src/lib/model/estimate-control/estimate-item.dto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE9E,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,oBAAoB,CAAC;IACnC,YAAY,EAAE,oBAAoB,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB"}
|
|
1
|
+
{"version":3,"file":"estimate-item.dto.d.ts","sourceRoot":"","sources":["../../../../../../projects/vas-lib/src/lib/model/estimate-control/estimate-item.dto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE9E,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,oBAAoB,CAAC;IACnC,YAAY,EAAE,oBAAoB,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"estimate-item.dto.js","sourceRoot":"","sources":["../../../../../../projects/vas-lib/src/lib/model/estimate-control/estimate-item.dto.ts"],"names":[],"mappings":"","sourcesContent":["import { EstimateCostCategory, EstimateWorkCategory } from './estimate.types';\n\nexport interface EstimateItemDto {\n id: string;\n description: string;\n type: string;\n quantity: number;\n units: number;\n price: string;\n workCategory: EstimateWorkCategory;\n costCategory: EstimateCostCategory;\n comment: string;\n quantityAdjusted: number;\n unitsAdjusted: number;\n priceAdjusted: string;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"estimate-item.dto.js","sourceRoot":"","sources":["../../../../../../projects/vas-lib/src/lib/model/estimate-control/estimate-item.dto.ts"],"names":[],"mappings":"","sourcesContent":["import { EstimateCostCategory, EstimateWorkCategory } from './estimate.types';\n\nexport interface EstimateItemDto {\n id: string;\n description: string;\n type: string;\n quantity: number;\n units: number;\n price: string;\n workCategory: EstimateWorkCategory;\n costCategory: EstimateCostCategory;\n comment: string;\n vatExcluded: boolean;\n quantityAdjusted: number;\n unitsAdjusted: number;\n priceAdjusted: string;\n}\n"]}
|
|
@@ -13,9 +13,10 @@ export declare class EstimateItemModel {
|
|
|
13
13
|
workCategory: EstimateWorkCategory;
|
|
14
14
|
costCategory: EstimateCostCategory;
|
|
15
15
|
comment: string;
|
|
16
|
-
|
|
16
|
+
vatExcluded: boolean;
|
|
17
|
+
constructor(id: string, description: string, type: string, quantity: number, quantityAdjusted: number, units: number, unitsAdjusted: number, price: string, priceAdjusted: string, workCategory: EstimateWorkCategory, costCategory: EstimateCostCategory, comment: string, vatExcluded: boolean);
|
|
17
18
|
getTotalUnits(adjusted?: boolean): string;
|
|
18
|
-
getLineValue(labourRate?: string, timeBasis?: string, adjusted?: boolean): string;
|
|
19
|
+
getLineValue(labourRate?: string, timeBasis?: string, adjusted?: boolean, vatExcluded?: boolean): string;
|
|
19
20
|
toDto(): EstimateItemDto;
|
|
20
21
|
static create(): EstimateItemModel;
|
|
21
22
|
static fromDto(dto: Partial<EstimateItemDto>): EstimateItemModel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"estimate-item.model.d.ts","sourceRoot":"","sources":["../../../../../../projects/vas-lib/src/lib/model/estimate-control/estimate-item.model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"estimate-item.model.d.ts","sourceRoot":"","sources":["../../../../../../projects/vas-lib/src/lib/model/estimate-control/estimate-item.model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAgB9E,qBAAa,iBAAiB;IAGnB,EAAE,EAAE,MAAM;IACV,WAAW,EAAE,MAAM;IACnB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,MAAM;IAChB,gBAAgB,EAAE,MAAM;IACxB,KAAK,EAAE,MAAM;IACb,aAAa,EAAE,MAAM;IACrB,KAAK,EAAE,MAAM;IACb,aAAa,EAAE,MAAM;IACrB,YAAY,EAAE,oBAAoB;IAClC,YAAY,EAAE,oBAAoB;IAClC,OAAO,EAAE,MAAM;IACf,WAAW,EAAE,OAAO;gBAZpB,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,EACxB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,oBAAoB,EAClC,YAAY,EAAE,oBAAoB,EAClC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO;IAI7B,aAAa,CAAC,QAAQ,UAAQ,GAAG,MAAM;IAMvC,YAAY,CACV,UAAU,SAAM,EAChB,SAAS,SAAM,EACf,QAAQ,UAAQ,EAChB,WAAW,CAAC,EAAE,OAAO,GACpB,MAAM;IAqDT,KAAK,IAAI,eAAe;IAkBxB,MAAM,CAAC,MAAM,IAAI,iBAAiB;IAkBlC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,iBAAiB;IAkBhE,MAAM,CAAC,KAAK,CACV,CAAC,EAAE,eAAe,GAAG,SAAS,EAC9B,CAAC,EAAE,eAAe,GAAG,SAAS,GAC7B,OAAO;CAgBX"}
|
|
@@ -17,7 +17,7 @@ const b = (value = '0') => {
|
|
|
17
17
|
}
|
|
18
18
|
};
|
|
19
19
|
class EstimateItemModel {
|
|
20
|
-
constructor(id, description, type, quantity, quantityAdjusted, units, unitsAdjusted, price, priceAdjusted, workCategory, costCategory, comment) {
|
|
20
|
+
constructor(id, description, type, quantity, quantityAdjusted, units, unitsAdjusted, price, priceAdjusted, workCategory, costCategory, comment, vatExcluded) {
|
|
21
21
|
this.id = id;
|
|
22
22
|
this.description = description;
|
|
23
23
|
this.type = type;
|
|
@@ -30,17 +30,21 @@ class EstimateItemModel {
|
|
|
30
30
|
this.workCategory = workCategory;
|
|
31
31
|
this.costCategory = costCategory;
|
|
32
32
|
this.comment = comment;
|
|
33
|
+
this.vatExcluded = vatExcluded;
|
|
33
34
|
}
|
|
34
35
|
getTotalUnits(adjusted = false) {
|
|
35
36
|
return adjusted ?
|
|
36
37
|
b(this.quantityAdjusted || '0').mul(this.unitsAdjusted || '0').toFixed(2) :
|
|
37
38
|
b(this.quantity || '0').mul(this.units || '0').toFixed(2);
|
|
38
39
|
}
|
|
39
|
-
getLineValue(labourRate = '1', timeBasis = '1', adjusted = false) {
|
|
40
|
+
getLineValue(labourRate = '1', timeBasis = '1', adjusted = false, vatExcluded) {
|
|
40
41
|
const cat = this.costCategory || 'none';
|
|
41
42
|
if (this.workCategory === 'removed') {
|
|
42
43
|
return '0';
|
|
43
44
|
}
|
|
45
|
+
if (vatExcluded !== undefined && this.vatExcluded !== vatExcluded) {
|
|
46
|
+
return '0';
|
|
47
|
+
}
|
|
44
48
|
const units = (adjusted ? this.unitsAdjusted : this.units) || 0;
|
|
45
49
|
const quantity = (adjusted ? this.quantityAdjusted : this.quantity) || 0;
|
|
46
50
|
const price = (adjusted ? this.priceAdjusted : this.price) || '';
|
|
@@ -65,7 +69,9 @@ class EstimateItemModel {
|
|
|
65
69
|
.mul(quantity || '0')
|
|
66
70
|
.toFixed(2);
|
|
67
71
|
}
|
|
68
|
-
case 'specialist':
|
|
72
|
+
case 'specialist':
|
|
73
|
+
case 'pl':
|
|
74
|
+
case 'other': {
|
|
69
75
|
return b(price || '0')
|
|
70
76
|
.mul(quantity || '0')
|
|
71
77
|
.toFixed(2);
|
|
@@ -93,14 +99,15 @@ class EstimateItemModel {
|
|
|
93
99
|
priceAdjusted: this.priceAdjusted,
|
|
94
100
|
workCategory: this.workCategory,
|
|
95
101
|
costCategory: this.costCategory,
|
|
96
|
-
comment: this.comment
|
|
102
|
+
comment: this.comment,
|
|
103
|
+
vatExcluded: this.vatExcluded
|
|
97
104
|
};
|
|
98
105
|
}
|
|
99
106
|
static create() {
|
|
100
|
-
return new EstimateItemModel((0, uuid_1.v4)(), '', '', 1, 1, 0, 0, '', '', 'none', 'none', '');
|
|
107
|
+
return new EstimateItemModel((0, uuid_1.v4)(), '', '', 1, 1, 0, 0, '', '', 'none', 'none', '', false);
|
|
101
108
|
}
|
|
102
109
|
static fromDto(dto) {
|
|
103
|
-
return new EstimateItemModel(dto.id || (0, uuid_1.v4)(), dto.description || '', dto.type || '', dto.quantity || 0, dto.quantityAdjusted || 0, dto.units || 0, dto.unitsAdjusted || 0, dto.price || '', dto.priceAdjusted || '', dto.workCategory || 'none', dto.costCategory || 'none', dto.comment || '');
|
|
110
|
+
return new EstimateItemModel(dto.id || (0, uuid_1.v4)(), dto.description || '', dto.type || '', dto.quantity || 0, dto.quantityAdjusted || 0, dto.units || 0, dto.unitsAdjusted || 0, dto.price || '', dto.priceAdjusted || '', dto.workCategory || 'none', dto.costCategory || 'none', dto.comment || '', dto.vatExcluded || false);
|
|
104
111
|
}
|
|
105
112
|
static equal(a, b) {
|
|
106
113
|
return ((a === null || a === void 0 ? void 0 : a.id) === (b === null || b === void 0 ? void 0 : b.id) &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"estimate-item.model.js","sourceRoot":"","sources":["../../../../../../projects/vas-lib/src/lib/model/estimate-control/estimate-item.model.ts"],"names":[],"mappings":"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","sourcesContent":["import { Big } from 'big.js';\nimport { EstimateItemDto } from './estimate-item.dto';\nimport { v4 as uuid } from 'uuid';\nimport { EstimateCostCategory, EstimateWorkCategory } from './estimate.types';\n\nconst b = (value: string | number | Big = '0') => {\n try {\n if (typeof value === 'string') {\n return new Big(value.replace(/[^\\d^.]/g, ''));\n }\n return new Big(value);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n console.error(`failed to construct Big from value '${value}'`);\n return new Big('0');\n }\n};\n\nexport class EstimateItemModel {\n\n constructor(\n public id: string,\n public description: string,\n public type: string,\n public quantity: number,\n public quantityAdjusted: number,\n public units: number,\n public unitsAdjusted: number,\n public price: string,\n public priceAdjusted: string,\n public workCategory: EstimateWorkCategory,\n public costCategory: EstimateCostCategory,\n public comment: string\n ) {\n }\n\n getTotalUnits(adjusted = false): string {\n return adjusted ?\n b(this.quantityAdjusted || '0').mul(this.unitsAdjusted || '0').toFixed(2) :\n b(this.quantity || '0').mul(this.units || '0').toFixed(2);\n }\n\n getLineValue(\n labourRate = '1',\n timeBasis = '1',\n adjusted = false\n ): string {\n const cat: EstimateCostCategory = this.costCategory || 'none';\n\n if (this.workCategory === 'removed') {\n return '0';\n }\n\n const units = (adjusted ? this.unitsAdjusted : this.units) || 0;\n const quantity = (adjusted ? this.quantityAdjusted : this.quantity) || 0;\n const price = (adjusted ? this.priceAdjusted : this.price) || '';\n\n try {\n switch (cat) {\n case 'labour': {\n return price != '' ?\n price :\n b(quantity || '0')\n .mul(units || '0')\n .mul(labourRate || '0')\n .div(timeBasis)\n .toFixed(2);\n }\n case 'pm': {\n return b(price || '0')\n .mul(quantity || '0')\n .toFixed(2);\n }\n case 'parts': {\n return b(price || '0')\n .mul(quantity || '0')\n .toFixed(2);\n }\n case 'specialist': {\n return b(price || '0')\n .mul(quantity || '0')\n .toFixed(2);\n }\n default: {\n return '0';\n }\n }\n } catch (e) {\n console.warn(e);\n }\n return '0';\n }\n\n toDto(): EstimateItemDto {\n return {\n id: this.id,\n description: this.description,\n type: this.type,\n quantity: this.quantity,\n quantityAdjusted: this.quantityAdjusted,\n units: this.units,\n unitsAdjusted: this.unitsAdjusted,\n price: this.price,\n priceAdjusted: this.priceAdjusted,\n workCategory: this.workCategory,\n costCategory: this.costCategory,\n comment: this.comment\n };\n }\n\n static create(): EstimateItemModel {\n return new EstimateItemModel(\n uuid(),\n '',\n '',\n 1,\n 1,\n 0,\n 0,\n '',\n '',\n 'none',\n 'none',\n ''\n );\n }\n\n static fromDto(dto: Partial<EstimateItemDto>): EstimateItemModel {\n return new EstimateItemModel(\n dto.id || uuid(),\n dto.description || '',\n dto.type || '',\n dto.quantity || 0,\n dto.quantityAdjusted || 0,\n dto.units || 0,\n dto.unitsAdjusted || 0,\n dto.price || '',\n dto.priceAdjusted || '',\n dto.workCategory || 'none',\n dto.costCategory || 'none',\n dto.comment || ''\n );\n }\n\n static equal(\n a: EstimateItemDto | undefined,\n b: EstimateItemDto | undefined\n ): boolean {\n return (\n a?.id === b?.id &&\n a?.description === b?.description &&\n a?.type === b?.type &&\n a?.quantity === b?.quantity &&\n a?.quantityAdjusted === b?.quantityAdjusted &&\n a?.units === b?.units &&\n a?.unitsAdjusted === b?.unitsAdjusted &&\n a?.price === b?.price &&\n a?.priceAdjusted === b?.priceAdjusted &&\n a?.workCategory === b?.workCategory &&\n a?.costCategory === b?.costCategory &&\n a?.comment === b?.comment\n );\n }\n\n}\n"]}
|
|
1
|
+
{"version":3,"file":"estimate-item.model.js","sourceRoot":"","sources":["../../../../../../projects/vas-lib/src/lib/model/estimate-control/estimate-item.model.ts"],"names":[],"mappings":"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","sourcesContent":["import { Big } from 'big.js';\nimport { EstimateItemDto } from './estimate-item.dto';\nimport { v4 as uuid } from 'uuid';\nimport { EstimateCostCategory, EstimateWorkCategory } from './estimate.types';\nimport { EstimateSource } from './estimate-source';\n\nconst b = (value: string | number | Big = '0') => {\n try {\n if (typeof value === 'string') {\n return new Big(value.replace(/[^\\d^.]/g, ''));\n }\n return new Big(value);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n console.error(`failed to construct Big from value '${value}'`);\n return new Big('0');\n }\n};\n\nexport class EstimateItemModel {\n\n constructor(\n public id: string,\n public description: string,\n public type: string,\n public quantity: number,\n public quantityAdjusted: number,\n public units: number,\n public unitsAdjusted: number,\n public price: string,\n public priceAdjusted: string,\n public workCategory: EstimateWorkCategory,\n public costCategory: EstimateCostCategory,\n public comment: string,\n public vatExcluded: boolean\n ) {\n }\n\n getTotalUnits(adjusted = false): string {\n return adjusted ?\n b(this.quantityAdjusted || '0').mul(this.unitsAdjusted || '0').toFixed(2) :\n b(this.quantity || '0').mul(this.units || '0').toFixed(2);\n }\n\n getLineValue(\n labourRate = '1',\n timeBasis = '1',\n adjusted = false,\n vatExcluded?: boolean\n ): string {\n const cat: EstimateCostCategory = this.costCategory || 'none';\n\n if (this.workCategory === 'removed') {\n return '0';\n }\n\n if (vatExcluded !== undefined && this.vatExcluded !== vatExcluded) {\n return '0'\n }\n\n const units = (adjusted ? this.unitsAdjusted : this.units) || 0;\n const quantity = (adjusted ? this.quantityAdjusted : this.quantity) || 0;\n const price = (adjusted ? this.priceAdjusted : this.price) || '';\n\n try {\n switch (cat) {\n case 'labour': {\n return price != '' ?\n price :\n b(quantity || '0')\n .mul(units || '0')\n .mul(labourRate || '0')\n .div(timeBasis)\n .toFixed(2);\n }\n case 'pm': {\n return b(price || '0')\n .mul(quantity || '0')\n .toFixed(2);\n }\n case 'parts': {\n return b(price || '0')\n .mul(quantity || '0')\n .toFixed(2);\n }\n case 'specialist':\n case 'pl':\n case 'other': {\n return b(price || '0')\n .mul(quantity || '0')\n .toFixed(2);\n }\n default: {\n return '0';\n }\n }\n } catch (e) {\n console.warn(e);\n }\n return '0';\n }\n\n toDto(): EstimateItemDto {\n return {\n id: this.id,\n description: this.description,\n type: this.type,\n quantity: this.quantity,\n quantityAdjusted: this.quantityAdjusted,\n units: this.units,\n unitsAdjusted: this.unitsAdjusted,\n price: this.price,\n priceAdjusted: this.priceAdjusted,\n workCategory: this.workCategory,\n costCategory: this.costCategory,\n comment: this.comment,\n vatExcluded: this.vatExcluded\n };\n }\n\n static create(): EstimateItemModel {\n return new EstimateItemModel(\n uuid(),\n '',\n '',\n 1,\n 1,\n 0,\n 0,\n '',\n '',\n 'none',\n 'none',\n '',\n false\n );\n }\n\n static fromDto(dto: Partial<EstimateItemDto>): EstimateItemModel {\n return new EstimateItemModel(\n dto.id || uuid(),\n dto.description || '',\n dto.type || '',\n dto.quantity || 0,\n dto.quantityAdjusted || 0,\n dto.units || 0,\n dto.unitsAdjusted || 0,\n dto.price || '',\n dto.priceAdjusted || '',\n dto.workCategory || 'none',\n dto.costCategory || 'none',\n dto.comment || '',\n dto.vatExcluded || false\n );\n }\n\n static equal(\n a: EstimateItemDto | undefined,\n b: EstimateItemDto | undefined\n ): boolean {\n return (\n a?.id === b?.id &&\n a?.description === b?.description &&\n a?.type === b?.type &&\n a?.quantity === b?.quantity &&\n a?.quantityAdjusted === b?.quantityAdjusted &&\n a?.units === b?.units &&\n a?.unitsAdjusted === b?.unitsAdjusted &&\n a?.price === b?.price &&\n a?.priceAdjusted === b?.priceAdjusted &&\n a?.workCategory === b?.workCategory &&\n a?.costCategory === b?.costCategory &&\n a?.comment === b?.comment\n );\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"estimate-source.d.ts","sourceRoot":"","sources":["../../../../../../projects/vas-lib/src/lib/model/estimate-control/estimate-source.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,MAAM,cAAc,GAChC,SAAS,GACT,YAAY,GACZ,UAAU,GACV,OAAO,GACP,QAAQ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"estimate-source.js","sourceRoot":"","sources":["../../../../../../projects/vas-lib/src/lib/model/estimate-control/estimate-source.ts"],"names":[],"mappings":"","sourcesContent":["export declare type EstimateSource =\n 'audatex' |\n 'glassmatix' |\n 'gtmotive' |\n 'ibody' |\n 'manual';\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { EstimateItemDto } from './estimate-item.dto';
|
|
2
|
-
import {
|
|
2
|
+
import { EstimateSundryMethod } from './estimate.model';
|
|
3
3
|
import { EstimateCostCategory } from './estimate.types';
|
|
4
|
+
import { EstimateSource } from './estimate-source';
|
|
4
5
|
export type CostCategorySummary = Record<EstimateCostCategory, string>;
|
|
5
6
|
export interface CostCategorySummaryTotals {
|
|
6
7
|
net: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"estimate.dto.d.ts","sourceRoot":"","sources":["../../../../../../projects/vas-lib/src/lib/model/estimate-control/estimate.dto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"estimate.dto.d.ts","sourceRoot":"","sources":["../../../../../../projects/vas-lib/src/lib/model/estimate-control/estimate.dto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;AAEvE,MAAM,WAAW,yBAAyB;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,GAAG,yBAAyB,CAAC;AAEjF,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,oBAAoB,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IAC9B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,eAAe,EAAE,kBAAkB,GAAG,IAAI,CAAC;CAC5C"}
|