@ironcode/vas-lib 3.0.0-alpha.6 → 3.0.0-alpha.9

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.
@@ -19,6 +19,9 @@ export interface VasJobBaseDto extends VasRestrictedAccountObjectDto {
19
19
  pendingFields: number;
20
20
  childModified: string;
21
21
  version: number;
22
+ followUpDate: string;
23
+ followUpStatus: string;
24
+ followUpNote: string;
22
25
  geoLocation: GeoLocation;
23
26
  files: Array<VasFileDto>;
24
27
  jobEmails: Array<VasJobEmailDto>;
@@ -1 +1 @@
1
- {"version":3,"file":"vas-job.dto.d.ts","sourceRoot":"","sources":["../../../../../projects/vas-lib/src/lib/entity/vas-job.dto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,WAAW,aAAc,SAAQ,6BAA6B;IAClE,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACzB,SAAS,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IACjC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACzB,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC7B,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACzB,WAAW,EAAE,IAAI,GAAG,iBAAiB,CAAC;CACvC;AAED,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACxD,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACxC"}
1
+ {"version":3,"file":"vas-job.dto.d.ts","sourceRoot":"","sources":["../../../../../projects/vas-lib/src/lib/entity/vas-job.dto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,WAAW,aAAc,SAAQ,6BAA6B;IAClE,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACzB,SAAS,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IACjC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACzB,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC7B,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACzB,WAAW,EAAE,IAAI,GAAG,iBAAiB,CAAC;CACvC;AAED,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACxD,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACxC"}
@@ -1 +1 @@
1
- {"version":3,"file":"vas-job.dto.js","sourceRoot":"","sources":["../../../../../projects/vas-lib/src/lib/entity/vas-job.dto.ts"],"names":[],"mappings":"","sourcesContent":["import { VasFileDto } from './vas-file.dto';\nimport { VasRestrictedAccountObjectDto } from './vas-restricted-account-object.dto';\nimport { FieldValueType, VasFieldDto } from './vas-field.dto';\nimport { GeoLocation } from '../model';\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';\n\nexport interface VasJobBaseDto extends VasRestrictedAccountObjectDto {\n reference: string;\n jobDate: string;\n jobStatus: string;\n jobStatusLastUpdate: string;\n jobType: string;\n assigneeId: string;\n formId: string;\n timeZoneOffset: number;\n pendingFields: number;\n childModified: string;\n version: number;\n geoLocation: GeoLocation;\n files: Array<VasFileDto>;\n jobEmails: Array<VasJobEmailDto>;\n notes: Array<VasNoteDto>;\n reports: Array<VasReportDto>;\n tasks: Array<VasTaskDto>;\n instruction: null | VasInstructionDto;\n}\n\nexport interface VasJobRelationalDto extends VasJobBaseDto {\n fields: Array<VasFieldDto>;\n}\n\nexport interface VasJobDocumentDto extends VasJobBaseDto {\n fields: Record<string, FieldValueType>;\n}\n"]}
1
+ {"version":3,"file":"vas-job.dto.js","sourceRoot":"","sources":["../../../../../projects/vas-lib/src/lib/entity/vas-job.dto.ts"],"names":[],"mappings":"","sourcesContent":["import { VasFileDto } from './vas-file.dto';\nimport { VasRestrictedAccountObjectDto } from './vas-restricted-account-object.dto';\nimport { FieldValueType, VasFieldDto } from './vas-field.dto';\nimport { GeoLocation } from '../model';\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';\n\nexport interface VasJobBaseDto extends VasRestrictedAccountObjectDto {\n reference: string;\n jobDate: string;\n jobStatus: string;\n jobStatusLastUpdate: string;\n jobType: string;\n assigneeId: string;\n formId: string;\n timeZoneOffset: number;\n pendingFields: number;\n childModified: string;\n version: number;\n followUpDate: string;\n followUpStatus: string;\n followUpNote: string;\n geoLocation: GeoLocation;\n files: Array<VasFileDto>;\n jobEmails: Array<VasJobEmailDto>;\n notes: Array<VasNoteDto>;\n reports: Array<VasReportDto>;\n tasks: Array<VasTaskDto>;\n instruction: null | VasInstructionDto;\n}\n\nexport interface VasJobRelationalDto extends VasJobBaseDto {\n fields: Array<VasFieldDto>;\n}\n\nexport interface VasJobDocumentDto extends VasJobBaseDto {\n fields: Record<string, FieldValueType>;\n}\n"]}
@@ -41,6 +41,9 @@ export declare abstract class VasJobBaseModel<FType extends Record<string, Field
41
41
  pendingFields: number;
42
42
  childModified: string;
43
43
  version: number;
44
+ followUpDate: string;
45
+ followUpStatus: string;
46
+ followUpNote: string;
44
47
  geoLocation: GeoLocation;
45
48
  files: Array<VasFileDto>;
46
49
  fields: FType;
@@ -49,7 +52,7 @@ export declare abstract class VasJobBaseModel<FType extends Record<string, Field
49
52
  reports: Array<VasReportDto>;
50
53
  tasks: Array<VasTaskDto>;
51
54
  instruction: VasInstructionDto | null;
52
- constructor(id: string, created: string, serverCreated: string, createdBy: string, modified: string, serverModified: string, modifiedBy: string, createdByName: string, modifiedByName: string, account: string, accessGroup: string, reference: string, jobDate: string, jobStatus: string, jobStatusLastUpdate: string, jobType: string, assigneeId: string, formId: string, timeZoneOffset: number, pendingFields: number, childModified: string, version: number, geoLocation: GeoLocation, files: Array<VasFileDto>, fields: FType, jobEmails: Array<VasJobEmailDto>, notes: Array<VasNoteDto>, reports: Array<VasReportDto>, tasks: Array<VasTaskDto>, instruction: VasInstructionDto | null);
55
+ constructor(id: string, created: string, serverCreated: string, createdBy: string, modified: string, serverModified: string, modifiedBy: string, createdByName: string, modifiedByName: string, account: string, accessGroup: string, reference: string, jobDate: string, jobStatus: string, jobStatusLastUpdate: string, jobType: string, assigneeId: string, formId: string, timeZoneOffset: number, pendingFields: number, childModified: string, version: number, followUpDate: string, followUpStatus: string, followUpNote: string, geoLocation: GeoLocation, files: Array<VasFileDto>, fields: FType, jobEmails: Array<VasJobEmailDto>, notes: Array<VasNoteDto>, reports: Array<VasReportDto>, tasks: Array<VasTaskDto>, instruction: VasInstructionDto | null);
53
56
  get createdByDisplayName(): string;
54
57
  get modifiedByDisplayName(): string;
55
58
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"vas-job.model.d.ts","sourceRoot":"","sources":["../../../../../projects/vas-lib/src/lib/entity/vas-job.model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vas-job.model.d.ts","sourceRoot":"","sources":["../../../../../projects/vas-lib/src/lib/entity/vas-job.model.ts"],"names":[],"mappings":"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"}
@@ -8,15 +8,23 @@ const get_value_by_path_1 = require("../utils/get-value-by-path");
8
8
  const vas_restricted_account_object_model_1 = require("./vas-restricted-account-object.model");
9
9
  const model_1 = require("../model");
10
10
  const control_value_1 = require("../control-value");
11
- const only_1 = require("../utils/only");
12
- const is_plain_object_1 = require("../utils/is-plain-object");
11
+ const utils_1 = require("../utils");
13
12
  const vas_field_model_1 = require("./vas-field.model");
13
+ const nullables = new Set([
14
+ 'created',
15
+ 'modified',
16
+ 'reference',
17
+ 'jobDate',
18
+ 'followUpDate',
19
+ 'followUpStatus',
20
+ 'followUpNote',
21
+ ]);
14
22
  let jobStaticProps;
15
23
  /**
16
24
  * VasJobBaseModel
17
25
  */
18
26
  class VasJobBaseModel extends vas_restricted_account_object_model_1.VasRestrictedAccountObjectModel {
19
- constructor(id, created, serverCreated, createdBy, modified, serverModified, modifiedBy, createdByName, modifiedByName, account, accessGroup, reference, jobDate, jobStatus, jobStatusLastUpdate, jobType, assigneeId, formId, timeZoneOffset, pendingFields, childModified, version, geoLocation, files, fields, jobEmails, notes, reports, tasks, instruction) {
27
+ constructor(id, created, serverCreated, createdBy, modified, serverModified, modifiedBy, createdByName, modifiedByName, account, accessGroup, reference, jobDate, jobStatus, jobStatusLastUpdate, jobType, assigneeId, formId, timeZoneOffset, pendingFields, childModified, version, followUpDate, followUpStatus, followUpNote, geoLocation, files, fields, jobEmails, notes, reports, tasks, instruction) {
20
28
  super(id, created, serverCreated, createdBy, modified, serverModified, modifiedBy, createdByName, modifiedByName, account, accessGroup);
21
29
  this.id = id;
22
30
  this.created = created;
@@ -40,6 +48,9 @@ class VasJobBaseModel extends vas_restricted_account_object_model_1.VasRestricte
40
48
  this.pendingFields = pendingFields;
41
49
  this.childModified = childModified;
42
50
  this.version = version;
51
+ this.followUpDate = followUpDate;
52
+ this.followUpStatus = followUpStatus;
53
+ this.followUpNote = followUpNote;
43
54
  this.geoLocation = geoLocation;
44
55
  this.files = files;
45
56
  this.fields = fields;
@@ -136,7 +147,6 @@ class VasJobBaseModel extends vas_restricted_account_object_model_1.VasRestricte
136
147
  if (!value || typeof value !== 'string') {
137
148
  return '';
138
149
  }
139
- const fields = this.fields;
140
150
  return value.replace(/({[^}]*})/g, (match, token) => {
141
151
  const syntax = token.substring(1, token.length - 1);
142
152
  let [key, filter] = syntax.split('|');
@@ -199,7 +209,7 @@ class VasJobBaseModel extends vas_restricted_account_object_model_1.VasRestricte
199
209
  return Object.assign(Object.assign({}, super.toApiDto()), { reference: this.reference || '~', jobDate: this.jobDate || '~', jobType: this.jobType || '~', accessGroup: this.accessGroup || '~', jobStatus: this.jobStatus || '~', assigneeId: this.assigneeId || '~', timeZoneOffset: this.timeZoneOffset || 0, pendingFields: this.pendingFields || 0, lastForm: this.formId || '~' });
200
210
  }
201
211
  static toApiPatchDto(item) {
202
- return (0, only_1.only)(item, [
212
+ return (0, utils_1.only)(item, [
203
213
  'created',
204
214
  'modified',
205
215
  'reference',
@@ -210,8 +220,11 @@ class VasJobBaseModel extends vas_restricted_account_object_model_1.VasRestricte
210
220
  'assigneeId',
211
221
  'timeZoneOffset',
212
222
  'pendingFields',
213
- 'formId'
214
- ]);
223
+ 'formId',
224
+ 'followUpDate',
225
+ 'followUpStatus',
226
+ 'followUpNote',
227
+ ], (value, key) => value[key] === null && nullables.has(key) ? '~' : value[key]);
215
228
  }
216
229
  }
217
230
  exports.VasJobBaseModel = VasJobBaseModel;
@@ -238,7 +251,7 @@ class VasJobRelationalModel extends VasJobBaseModel {
238
251
  if (field.value === null) {
239
252
  return path.length >= 1 ? undefined : null;
240
253
  }
241
- if ((0, is_plain_object_1.isPlainObject)(field.value)) {
254
+ if ((0, utils_1.isPlainObject)(field.value)) {
242
255
  return (0, get_value_by_path_1.getValueByPath)(path, field.value);
243
256
  }
244
257
  return undefined;
@@ -250,10 +263,43 @@ class VasJobRelationalModel extends VasJobBaseModel {
250
263
  if (dto.fields !== undefined && !Array.isArray(dto.fields)) {
251
264
  throw Error('fields must be an array');
252
265
  }
253
- return new VasJobRelationalModel(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.geoLocation || (0, model_1.getEmptyGeoLocation)(), dto.files || [], (dto.fields || []).map(f => vas_field_model_1.VasFieldModel.fromDto(f)), dto.jobEmails || [], dto.notes || [], dto.reports || [], dto.tasks || [], dto.instruction || null);
266
+ return new VasJobRelationalModel(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 || [], (dto.fields || []).map(f => vas_field_model_1.VasFieldModel.fromDto(f)), dto.jobEmails || [], dto.notes || [], dto.reports || [], dto.tasks || [], dto.instruction || null);
254
267
  }
255
268
  static empty() {
256
- return new VasJobRelationalModel('', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', (0, moment_1.default)().utcOffset(), 0, '', 0, (0, model_1.getEmptyGeoLocation)(), [], [], [], [], [], [], null);
269
+ return new VasJobRelationalModel('', // id
270
+ '', // created
271
+ '', // serverCreated
272
+ '', // createdBy
273
+ '', // modified
274
+ '', // serverModified
275
+ '', // modifiedBy
276
+ '', // createdByName
277
+ '', // modifiedByName
278
+ '', // account
279
+ '', // accessGroup
280
+ '', // reference
281
+ '', // jobDate
282
+ '', // jobStatus
283
+ '', // jobStatusLastUpdate
284
+ '', // jobType
285
+ '', // assigneeId
286
+ '', // formId
287
+ (0, moment_1.default)().utcOffset(), // timeZoneOffset
288
+ 0, // pendingFields: number,
289
+ '', // childModified: string,
290
+ 0, // version: number,
291
+ '', // followUpDate: string,
292
+ '', // followUpStatus: string,
293
+ '', // followUpNote: string,
294
+ (0, model_1.getEmptyGeoLocation)(), // geoLocation: GeoLocation,
295
+ [], // files: Array<VasFileDto>,
296
+ [], // fields: FType,
297
+ [], // jobEmails: Array<VasJobEmailDto>,
298
+ [], // notes: Array<VasNoteDto>,
299
+ [], // reports: Array<VasReportDto>,
300
+ [], // tasks: Array<VasTaskDto>,
301
+ null // instruction: VasInstructionDto | null
302
+ );
257
303
  }
258
304
  toDto() {
259
305
  return {
@@ -279,6 +325,9 @@ class VasJobRelationalModel extends VasJobBaseModel {
279
325
  pendingFields: this.pendingFields,
280
326
  childModified: this.childModified,
281
327
  version: this.version,
328
+ followUpDate: this.followUpDate,
329
+ followUpStatus: this.followUpStatus,
330
+ followUpNote: this.followUpNote,
282
331
  geoLocation: this.geoLocation,
283
332
  files: this.files,
284
333
  fields: this.fields.map(f => f.toDto()),
@@ -293,19 +342,52 @@ class VasJobRelationalModel extends VasJobBaseModel {
293
342
  exports.VasJobRelationalModel = VasJobRelationalModel;
294
343
  class VasJobDocumentModel extends VasJobBaseModel {
295
344
  static fromRelationalDto(dto) {
296
- 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.geoLocation || (0, model_1.getEmptyGeoLocation)(), dto.files || [], (dto.fields || []).reduce((p, c) => {
345
+ 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 || [], (dto.fields || []).reduce((p, c) => {
297
346
  p[c.controlName.replace('fields.', '')] = c.value;
298
347
  return p;
299
348
  }, {}), dto.jobEmails || [], dto.notes || [], dto.reports || [], dto.tasks || [], dto.instruction || null);
300
349
  }
301
350
  static fromDto(dto) {
302
- if (dto.fields !== undefined && !(0, is_plain_object_1.isPlainObject)(dto.fields)) {
351
+ if (dto.fields !== undefined && !(0, utils_1.isPlainObject)(dto.fields)) {
303
352
  throw Error('fields must be an object');
304
353
  }
305
- 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.geoLocation || (0, model_1.getEmptyGeoLocation)(), dto.files || [], dto.fields || {}, dto.jobEmails || [], dto.notes || [], dto.reports || [], dto.tasks || [], dto.instruction || null);
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 || [], dto.fields || {}, dto.jobEmails || [], dto.notes || [], dto.reports || [], dto.tasks || [], dto.instruction || null);
306
355
  }
307
356
  static empty() {
308
- return new VasJobDocumentModel('', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', (0, moment_1.default)().utcOffset(), 0, '', 0, (0, model_1.getEmptyGeoLocation)(), [], {}, [], [], [], [], null);
357
+ return new VasJobDocumentModel('', // id
358
+ '', // created
359
+ '', // serverCreated
360
+ '', // createdBy
361
+ '', // modified
362
+ '', // serverModified
363
+ '', // modifiedBy
364
+ '', // createdByName
365
+ '', // modifiedByName
366
+ '', // account
367
+ '', // accessGroup
368
+ '', // reference
369
+ '', // jobDate
370
+ '', // jobStatus
371
+ '', // jobStatusLastUpdate
372
+ '', // jobType
373
+ '', // assigneeId
374
+ '', // formId
375
+ (0, moment_1.default)().utcOffset(), // timeZoneOffset
376
+ 0, // pendingFields: number,
377
+ '', // childModified: string,
378
+ 0, // version: number,
379
+ '', // followUpDate: string,
380
+ '', // followUpStatus: string,
381
+ '', // followUpNote: string,
382
+ (0, model_1.getEmptyGeoLocation)(), // geoLocation: GeoLocation,
383
+ [], // files: Array<VasFileDto>,
384
+ {}, // fields: FType,
385
+ [], // jobEmails: Array<VasJobEmailDto>,
386
+ [], // notes: Array<VasNoteDto>,
387
+ [], // reports: Array<VasReportDto>,
388
+ [], // tasks: Array<VasTaskDto>,
389
+ null // instruction: VasInstructionDto | null
390
+ );
309
391
  }
310
392
  toDto() {
311
393
  return {
@@ -331,6 +413,9 @@ class VasJobDocumentModel extends VasJobBaseModel {
331
413
  pendingFields: this.pendingFields,
332
414
  childModified: this.childModified,
333
415
  version: this.version,
416
+ followUpDate: this.followUpDate,
417
+ followUpStatus: this.followUpStatus,
418
+ followUpNote: this.followUpNote,
334
419
  geoLocation: this.geoLocation,
335
420
  files: this.files,
336
421
  fields: this.fields,
@@ -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, 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 { only } from '../utils/only';\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 { isPlainObject } from \"../utils/is-plain-object\";\nimport { VasFieldModel } from './vas-field.model';\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 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 const fields = this.fields;\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 ]\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.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 '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n moment().utcOffset(),\n 0,\n '',\n 0,\n getEmptyGeoLocation(),\n [],\n [],\n [],\n [],\n [],\n [],\n 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 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.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.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 '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n moment().utcOffset(),\n 0,\n '',\n 0,\n getEmptyGeoLocation(),\n [],\n {},\n [],\n [],\n [],\n [],\n 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 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":"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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"]}
@@ -52,7 +52,7 @@ class EstimateItemModel {
52
52
  b(quantity || '0')
53
53
  .mul(units || '0')
54
54
  .mul(labourRate || '0')
55
- .div(timeBasis || '1')
55
+ .div(timeBasis)
56
56
  .toFixed(2);
57
57
  }
58
58
  case 'pm': {
@@ -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 || '1')\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';\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"]}
@@ -27,8 +27,9 @@ export declare class EstimateModel {
27
27
  summaryNet: EstimateSummaryDto;
28
28
  summary: EstimateSummaryDto;
29
29
  summaryAdjusted: EstimateSummaryDto;
30
+ get timeBasisSafe(): string;
30
31
  static create(source?: EstimateSource): EstimateModel;
31
- static fromDto(dto: Partial<EstimateDto>): EstimateModel;
32
+ static fromDto<T extends EstimateModel>(this: new () => T, dto: Partial<EstimateDto>): T;
32
33
  addItem(modelOrDto: EstimateItemModel | Partial<EstimateItemDto>, opts?: {
33
34
  calculate?: boolean;
34
35
  }): void;
@@ -1 +1 @@
1
- {"version":3,"file":"estimate.model.d.ts","sourceRoot":"","sources":["../../../../../../projects/vas-lib/src/lib/model/estimate-control/estimate.model.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAuB,WAAW,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,CAAC,OAAO,MAAM,oBAAoB,GAAG,YAAY,GAAG,qBAAqB,GAAG,OAAO,CAAC;AAE1F,MAAM,CAAC,OAAO,MAAM,cAAc,GAAG,SAAS,GAAG,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AAehG,qBAAa,aAAa;IAEjB,EAAE,EAAE,MAAM,CAAU;IACpB,MAAM,EAAE,cAAc,CAAY;IAClC,KAAK,EAAE,MAAM,CAAM;IACnB,OAAO,EAAE,MAAM,CAAM;IACrB,SAAS,EAAE,MAAM,CAA0B;IAC3C,OAAO,EAAE,MAAM,CAAK;IACpB,GAAG,EAAE,MAAM,CAAU;IACrB,GAAG,EAAE,MAAM,CAAU;IACrB,KAAK,EAAE,MAAM,CAAU;IACvB,UAAU,EAAE,MAAM,CAAO;IACzB,OAAO,EAAE,MAAM,CAAU;IACzB,UAAU,EAAE,MAAM,CAAU;IAC5B,SAAS,EAAE,MAAM,CAAU;IAC3B,WAAW,EAAE,MAAM,CAAU;IAC7B,YAAY,EAAE,oBAAoB,CAAW;IAC7C,aAAa,EAAE,MAAM,CAAU;IAC/B,aAAa,EAAE,MAAM,CAAU;IAC/B,SAAS,EAAE,MAAM,CAAO;IACxB,QAAQ,UAAS;IACjB,KAAK,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAM;IACrC,UAAU,EAAE,kBAAkB,CAanC;IACK,OAAO,EAAE,kBAAkB,CAahC;IACK,eAAe,EAAE,kBAAkB,CAaxC;IAEF,MAAM,CAAC,MAAM,CAAC,MAAM,GAAE,cAAyB,GAAG,aAAa;IAM/D,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,aAAa;IAUxD,OAAO,CACL,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,eAAe,CAAC,EACxD,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE;IAWhC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE;IAOxE,SAAS,IAAI,IAAI;IA0CjB;;;;;;OAMG;IACH,aAAa,CAAC,QAAQ,UAAQ,GAAG,kBAAkB;IAwCnD;;;OAGG;IACH,UAAU,CACR,UAAU,EAAE,WAAW,CAAC,SAAS,CAAC,EAClC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,oBAAoB,EAClC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,OAAO,GAChB,WAAW,CAAC,SAAS,CAAC;IAgDzB,KAAK,IAAI,WAAW;IA2BpB,aAAa,CAAC,QAAQ,UAAQ,GAAG,MAAM;CAoBxC"}
1
+ {"version":3,"file":"estimate.model.d.ts","sourceRoot":"","sources":["../../../../../../projects/vas-lib/src/lib/model/estimate-control/estimate.model.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAuB,WAAW,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,CAAC,OAAO,MAAM,oBAAoB,GAAG,YAAY,GAAG,qBAAqB,GAAG,OAAO,CAAC;AAE1F,MAAM,CAAC,OAAO,MAAM,cAAc,GAAG,SAAS,GAAG,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AAehG,qBAAa,aAAa;IAEjB,EAAE,EAAE,MAAM,CAAU;IACpB,MAAM,EAAE,cAAc,CAAY;IAClC,KAAK,EAAE,MAAM,CAAM;IACnB,OAAO,EAAE,MAAM,CAAM;IACrB,SAAS,EAAE,MAAM,CAA0B;IAC3C,OAAO,EAAE,MAAM,CAAK;IACpB,GAAG,EAAE,MAAM,CAAU;IACrB,GAAG,EAAE,MAAM,CAAU;IACrB,KAAK,EAAE,MAAM,CAAU;IACvB,UAAU,EAAE,MAAM,CAAO;IACzB,OAAO,EAAE,MAAM,CAAU;IACzB,UAAU,EAAE,MAAM,CAAU;IAC5B,SAAS,EAAE,MAAM,CAAU;IAC3B,WAAW,EAAE,MAAM,CAAU;IAC7B,YAAY,EAAE,oBAAoB,CAAW;IAC7C,aAAa,EAAE,MAAM,CAAU;IAC/B,aAAa,EAAE,MAAM,CAAU;IAC/B,SAAS,EAAE,MAAM,CAAO;IACxB,QAAQ,UAAS;IACjB,KAAK,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAM;IACrC,UAAU,EAAE,kBAAkB,CAanC;IACK,OAAO,EAAE,kBAAkB,CAahC;IACK,eAAe,EAAE,kBAAkB,CAaxC;IAEF,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,MAAM,CAAC,MAAM,CAAC,MAAM,GAAE,cAAyB,GAAG,aAAa;IAM/D,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,aAAa,EACpC,IAAI,EAAE,UAAU,CAAC,EACjB,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,GACxB,CAAC;IAUJ,OAAO,CACL,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,eAAe,CAAC,EACxD,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE;IAWhC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE;IAOxE,SAAS,IAAI,IAAI;IAsCjB;;;;;;OAMG;IACH,aAAa,CAAC,QAAQ,UAAQ,GAAG,kBAAkB;IAwCnD;;;OAGG;IACH,UAAU,CACR,UAAU,EAAE,WAAW,CAAC,SAAS,CAAC,EAClC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,oBAAoB,EAClC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,OAAO,GAChB,WAAW,CAAC,SAAS,CAAC;IAgDzB,KAAK,IAAI,WAAW;IA2BpB,aAAa,CAAC,QAAQ,UAAQ,GAAG,MAAM;CAoBxC"}