@ironcode/vas-lib 0.0.9 → 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/cjs/lib/entity/vas-control.model.d.ts +1 -1
  2. package/cjs/lib/entity/vas-control.model.js +1 -1
  3. package/cjs/lib/entity/vas-control.model.js.map +1 -1
  4. package/cjs/lib/entity/vas-form.dto.d.ts +3 -0
  5. package/cjs/lib/entity/vas-form.dto.d.ts.map +1 -1
  6. package/cjs/lib/entity/vas-form.dto.js.map +1 -1
  7. package/cjs/lib/entity/vas-form.model.d.ts +7 -1
  8. package/cjs/lib/entity/vas-form.model.d.ts.map +1 -1
  9. package/cjs/lib/entity/vas-form.model.js +11 -2
  10. package/cjs/lib/entity/vas-form.model.js.map +1 -1
  11. package/cjs/lib/entity/vas-job.model.d.ts +14 -27
  12. package/cjs/lib/entity/vas-job.model.d.ts.map +1 -1
  13. package/cjs/lib/entity/vas-job.model.js +74 -70
  14. package/cjs/lib/entity/vas-job.model.js.map +1 -1
  15. package/cjs/lib/entity/vas-job.model.spec-data.d.ts.map +1 -1
  16. package/cjs/lib/entity/vas-job.model.spec-data.js +3 -0
  17. package/cjs/lib/entity/vas-job.model.spec-data.js.map +1 -1
  18. package/cjs/lib/utils/get-value-by-path.d.ts +20 -0
  19. package/cjs/lib/utils/get-value-by-path.d.ts.map +1 -0
  20. package/cjs/lib/utils/get-value-by-path.js +68 -0
  21. package/cjs/lib/utils/get-value-by-path.js.map +1 -0
  22. package/esm2020/lib/entity/vas-control.model.mjs +2 -2
  23. package/esm2020/lib/entity/vas-form.dto.mjs +1 -1
  24. package/esm2020/lib/entity/vas-form.model.mjs +12 -3
  25. package/esm2020/lib/entity/vas-job.model.mjs +75 -71
  26. package/esm2020/lib/utils/get-value-by-path.mjs +64 -0
  27. package/fesm2015/ironcode-vas-lib.mjs +149 -73
  28. package/fesm2015/ironcode-vas-lib.mjs.map +1 -1
  29. package/fesm2020/ironcode-vas-lib.mjs +149 -73
  30. package/fesm2020/ironcode-vas-lib.mjs.map +1 -1
  31. package/lib/entity/vas-control.model.d.ts +1 -1
  32. package/lib/entity/vas-form.dto.d.ts +3 -0
  33. package/lib/entity/vas-form.model.d.ts +7 -1
  34. package/lib/entity/vas-job.model.d.ts +14 -27
  35. package/lib/utils/get-value-by-path.d.ts +19 -0
  36. package/package.json +1 -1
@@ -0,0 +1,64 @@
1
+ /**
2
+ * A non sophisticated way to get values from the job via paths. For example:
3
+ *
4
+ * getValueByPath(
5
+ * ['foo', 'bar'],
6
+ * {
7
+ * foo: {
8
+ * bar: 'value'
9
+ * }
10
+ * }
11
+ * );
12
+ *
13
+ * will return "value"
14
+ * @param {string[]} path
15
+ * @param {Record<string, VasFieldDtoValue>} object
16
+ * @return {T | undefined}
17
+ */
18
+ export const getValueByPath = (path, object) => {
19
+ switch (path.length) {
20
+ case 0: {
21
+ return;
22
+ }
23
+ case 1: {
24
+ return (object)[path[0]];
25
+ }
26
+ case 2: {
27
+ const val0 = object[path[0]];
28
+ if (!val0) {
29
+ return undefined;
30
+ }
31
+ return val0[path[1]];
32
+ }
33
+ case 3: {
34
+ const val0 = object[path[0]];
35
+ if (!val0) {
36
+ return undefined;
37
+ }
38
+ const val1 = val0[path[1]];
39
+ if (!val1) {
40
+ return undefined;
41
+ }
42
+ return val1[path[2]];
43
+ }
44
+ case 4: {
45
+ const val0 = object[path[0]];
46
+ if (!val0) {
47
+ return undefined;
48
+ }
49
+ const val1 = val0[path[1]];
50
+ if (!val1) {
51
+ return undefined;
52
+ }
53
+ const val2 = val1[path[2]];
54
+ if (!val2) {
55
+ return undefined;
56
+ }
57
+ return val2[path[3]];
58
+ }
59
+ default: {
60
+ throw Error('path has too many segments');
61
+ }
62
+ }
63
+ };
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXZhbHVlLWJ5LXBhdGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YXMtbGliL3NyYy9saWIvdXRpbHMvZ2V0LXZhbHVlLWJ5LXBhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FDNUIsSUFBYyxFQUNkLE1BQTJFLEVBQzVELEVBQUU7SUFDakIsUUFBUSxJQUFJLENBQUMsTUFBTSxFQUFFO1FBQ25CLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDTixPQUFPO1NBQ1I7UUFDRCxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ04sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBTSxDQUFDO1NBQy9CO1FBQ0QsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNOLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQTJCLENBQUM7WUFDdkQsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDVCxPQUFPLFNBQVMsQ0FBQzthQUNsQjtZQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBTSxDQUFDO1NBQzNCO1FBQ0QsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNOLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQTJCLENBQUM7WUFDdkQsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDVCxPQUFPLFNBQVMsQ0FBQzthQUNsQjtZQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQTJCLENBQUM7WUFDckQsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDVCxPQUFPLFNBQVMsQ0FBQzthQUNsQjtZQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBTSxDQUFDO1NBQzNCO1FBQ0QsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNOLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQTJCLENBQUM7WUFDdkQsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDVCxPQUFPLFNBQVMsQ0FBQzthQUNsQjtZQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQTJCLENBQUM7WUFDckQsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDVCxPQUFPLFNBQVMsQ0FBQzthQUNsQjtZQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQTJCLENBQUM7WUFDckQsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDVCxPQUFPLFNBQVMsQ0FBQzthQUNsQjtZQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBTSxDQUFDO1NBQzNCO1FBQ0QsT0FBTyxDQUFDLENBQUM7WUFDUCxNQUFNLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1NBQzNDO0tBQ0Y7QUFDSCxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWYXNGaWVsZER0b1ZhbHVlIH0gZnJvbSAnLi4vZW50aXR5L3Zhcy1maWVsZC5kdG8nO1xuXG4vKipcbiAqIEEgbm9uIHNvcGhpc3RpY2F0ZWQgd2F5IHRvIGdldCB2YWx1ZXMgZnJvbSB0aGUgam9iIHZpYSBwYXRocy4gRm9yIGV4YW1wbGU6XG4gKlxuICogZ2V0VmFsdWVCeVBhdGgoXG4gKiAgWydmb28nLCAnYmFyJ10sXG4gKiAge1xuICogICBmb286IHtcbiAqICAgICBiYXI6ICd2YWx1ZSdcbiAqICAgfVxuICogIH1cbiAqICk7XG4gKlxuICogd2lsbCByZXR1cm4gXCJ2YWx1ZVwiXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRoXG4gKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIFZhc0ZpZWxkRHRvVmFsdWU+fSBvYmplY3RcbiAqIEByZXR1cm4ge1QgfCB1bmRlZmluZWR9XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRWYWx1ZUJ5UGF0aCA9IDxUIGV4dGVuZHMgVmFzRmllbGREdG9WYWx1ZT4oXG4gIHBhdGg6IHN0cmluZ1tdLFxuICBvYmplY3Q6IFJlY29yZDxzdHJpbmcsIFZhc0ZpZWxkRHRvVmFsdWUgfCBSZWNvcmQ8c3RyaW5nLCBWYXNGaWVsZER0b1ZhbHVlPj5cbik6IFQgfCB1bmRlZmluZWQgPT4ge1xuICBzd2l0Y2ggKHBhdGgubGVuZ3RoKSB7XG4gICAgY2FzZSAwOiB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNhc2UgMToge1xuICAgICAgcmV0dXJuIChvYmplY3QpW3BhdGhbMF1dIGFzIFQ7XG4gICAgfVxuICAgIGNhc2UgMjoge1xuICAgICAgY29uc3QgdmFsMCA9IG9iamVjdFtwYXRoWzBdXSBhcyBSZWNvcmQ8c3RyaW5nLCBvYmplY3Q+O1xuICAgICAgaWYgKCF2YWwwKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsMFtwYXRoWzFdXSBhcyBUO1xuICAgIH1cbiAgICBjYXNlIDM6IHtcbiAgICAgIGNvbnN0IHZhbDAgPSBvYmplY3RbcGF0aFswXV0gYXMgUmVjb3JkPHN0cmluZywgb2JqZWN0PjtcbiAgICAgIGlmICghdmFsMCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgY29uc3QgdmFsMSA9IHZhbDBbcGF0aFsxXV0gYXMgUmVjb3JkPHN0cmluZywgb2JqZWN0PjtcbiAgICAgIGlmICghdmFsMSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbDFbcGF0aFsyXV0gYXMgVDtcbiAgICB9XG4gICAgY2FzZSA0OiB7XG4gICAgICBjb25zdCB2YWwwID0gb2JqZWN0W3BhdGhbMF1dIGFzIFJlY29yZDxzdHJpbmcsIG9iamVjdD47XG4gICAgICBpZiAoIXZhbDApIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHZhbDEgPSB2YWwwW3BhdGhbMV1dIGFzIFJlY29yZDxzdHJpbmcsIG9iamVjdD47XG4gICAgICBpZiAoIXZhbDEpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHZhbDIgPSB2YWwxW3BhdGhbMl1dIGFzIFJlY29yZDxzdHJpbmcsIG9iamVjdD47XG4gICAgICBpZiAoIXZhbDIpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWwyW3BhdGhbM11dIGFzIFQ7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHRocm93IEVycm9yKCdwYXRoIGhhcyB0b28gbWFueSBzZWdtZW50cycpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -243,7 +243,7 @@ class VasControlModel extends VasBaseModel {
243
243
  }
244
244
  /**
245
245
  * Returns the name of this control to be used in the report templates
246
- * i.e. field.foo -> foo
246
+ * i.e. fields.foo -> foo
247
247
  * @return {string}
248
248
  */
249
249
  get reportTemplateName() {
@@ -487,8 +487,11 @@ class VasFormModel extends VasBaseModel {
487
487
  * @param {string} title
488
488
  * @param {string} description
489
489
  * @param {VasGroupModel[]} groups
490
+ * @param {string} dynamicDescriptor
491
+ * @param {string} indexName
492
+ * @param {string} pipelineName
490
493
  */
491
- constructor(id, created, serverCreated, createdBy, modified, serverModified, modifiedBy, account, accessGroup, jobType, title, description, groups) {
494
+ constructor(id, created, serverCreated, createdBy, modified, serverModified, modifiedBy, account, accessGroup, jobType, title, description, groups, dynamicDescriptor, indexName, pipelineName) {
492
495
  super(id, created, serverCreated, createdBy, modified, serverModified, modifiedBy);
493
496
  this.id = id;
494
497
  this.created = created;
@@ -503,6 +506,9 @@ class VasFormModel extends VasBaseModel {
503
506
  this.title = title;
504
507
  this.description = description;
505
508
  this.groups = groups;
509
+ this.dynamicDescriptor = dynamicDescriptor;
510
+ this.indexName = indexName;
511
+ this.pipelineName = pipelineName;
506
512
  }
507
513
  /**
508
514
  * Returns the name of this form in a "safe" way, i.e. no spaces, special
@@ -545,7 +551,7 @@ class VasFormModel extends VasBaseModel {
545
551
  static fromDto(dto) {
546
552
  return new VasFormModel(dto.id || '', dto.created || '', dto.serverCreated || '', dto.createdBy || '', dto.modified || '', dto.serverModified || '', dto.modifiedBy || '', dto.account || '', dto.accessGroup || '', dto.jobType || '', dto.title || '', dto.description || '', (dto.groups || [])
547
553
  .sort((a, b) => a.sequence - b.sequence)
548
- .map(g => VasGroupModel.fromDto(g)));
554
+ .map(g => VasGroupModel.fromDto(g)), dto.dynamicDescriptor || '', dto.indexName || '', dto.pipelineName || '');
549
555
  }
550
556
  addControlTypesToControl(controlTypes) {
551
557
  const controlTypeModels = controlTypes
@@ -647,10 +653,77 @@ class VasFormModel extends VasBaseModel {
647
653
  title: this.title,
648
654
  description: this.description,
649
655
  groups: this.groups.map(group => group.toDto()),
656
+ dynamicDescriptor: this.dynamicDescriptor,
657
+ indexName: this.indexName,
658
+ pipelineName: this.pipelineName
650
659
  };
651
660
  }
652
661
  }
653
662
 
663
+ /**
664
+ * A non sophisticated way to get values from the job via paths. For example:
665
+ *
666
+ * getValueByPath(
667
+ * ['foo', 'bar'],
668
+ * {
669
+ * foo: {
670
+ * bar: 'value'
671
+ * }
672
+ * }
673
+ * );
674
+ *
675
+ * will return "value"
676
+ * @param {string[]} path
677
+ * @param {Record<string, VasFieldDtoValue>} object
678
+ * @return {T | undefined}
679
+ */
680
+ const getValueByPath = (path, object) => {
681
+ switch (path.length) {
682
+ case 0: {
683
+ return;
684
+ }
685
+ case 1: {
686
+ return (object)[path[0]];
687
+ }
688
+ case 2: {
689
+ const val0 = object[path[0]];
690
+ if (!val0) {
691
+ return undefined;
692
+ }
693
+ return val0[path[1]];
694
+ }
695
+ case 3: {
696
+ const val0 = object[path[0]];
697
+ if (!val0) {
698
+ return undefined;
699
+ }
700
+ const val1 = val0[path[1]];
701
+ if (!val1) {
702
+ return undefined;
703
+ }
704
+ return val1[path[2]];
705
+ }
706
+ case 4: {
707
+ const val0 = object[path[0]];
708
+ if (!val0) {
709
+ return undefined;
710
+ }
711
+ const val1 = val0[path[1]];
712
+ if (!val1) {
713
+ return undefined;
714
+ }
715
+ const val2 = val1[path[2]];
716
+ if (!val2) {
717
+ return undefined;
718
+ }
719
+ return val2[path[3]];
720
+ }
721
+ default: {
722
+ throw Error('path has too many segments');
723
+ }
724
+ }
725
+ };
726
+
654
727
  /**
655
728
  * JobModel
656
729
  */
@@ -697,8 +770,6 @@ class VasJobModel extends VasBaseModel {
697
770
  * @return {VasJobModelDynamicInterface}
698
771
  */
699
772
  get $this() {
700
- // eslint-disable-next-line @typescript-eslint/no-this-alias
701
- const $this = this;
702
773
  return this;
703
774
  }
704
775
  /**
@@ -757,69 +828,33 @@ class VasJobModel extends VasBaseModel {
757
828
  return fields;
758
829
  }
759
830
  /**
760
- * A very non sophisticated way to get values from the job via paths
761
- *
762
- * For example:
763
- *
764
- * getValueByPath(['foo', 'bar']);
765
- *
766
- * if job is
767
- * {
768
- * foo: {
769
- * bar: 'value'
770
- * }
771
- * }
772
- *
773
- * will return "value"
774
- *
831
+ * Will return an object whose keys are the names of all fields in the job but
832
+ * with the "fields." part removed. This method is similar to `getFields`
833
+ * except that this method will only return values that are set whereas
834
+ * `getFields` will return a property regardless (because it uses the form to
835
+ * drive the logic)
836
+ * @return {Record<string, VasFieldDtoValue>}
837
+ */
838
+ getFields2() {
839
+ let fields = {};
840
+ this.dynamicProperties
841
+ .forEach((groupName) => {
842
+ Object
843
+ .keys(this.$this[groupName])
844
+ .forEach(controlName => {
845
+ const controlNameShort = controlName.replace(/fields\./, '');
846
+ fields[controlNameShort] = this.getValueByPath([groupName, controlName]);
847
+ });
848
+ }, {});
849
+ return fields;
850
+ }
851
+ /**
852
+
775
853
  * @param {string[]} path path segments
776
854
  * @return {void}
777
855
  */
778
856
  getValueByPath(path = []) {
779
- switch (path.length) {
780
- case 0: {
781
- return;
782
- }
783
- case 1: {
784
- return (this.$this)[path[0]];
785
- }
786
- case 2: {
787
- const val0 = this.$this[path[0]];
788
- if (!val0) {
789
- return undefined;
790
- }
791
- return val0[path[1]];
792
- }
793
- case 3: {
794
- const val0 = this.$this[path[0]];
795
- if (!val0) {
796
- return undefined;
797
- }
798
- const val1 = val0[path[1]];
799
- if (!val1) {
800
- return undefined;
801
- }
802
- return val1[path[2]];
803
- }
804
- case 4: {
805
- const val0 = this.$this[path[0]];
806
- if (!val0) {
807
- return undefined;
808
- }
809
- const val1 = val0[path[1]];
810
- if (!val1) {
811
- return undefined;
812
- }
813
- const val2 = val1[path[2]];
814
- if (!val2) {
815
- return undefined;
816
- }
817
- return val2[path[3]];
818
- }
819
- default: {
820
- throw Error('path has too many segments');
821
- }
822
- }
857
+ return getValueByPath(path, this.$this);
823
858
  }
824
859
  /**
825
860
  * A very non sophisticated way to set values in the job via paths
@@ -844,7 +879,7 @@ class VasJobModel extends VasBaseModel {
844
879
  return;
845
880
  }
846
881
  case 1: {
847
- (this.$this)[path[0]] = value;
882
+ this[path[0]] = value;
848
883
  return;
849
884
  }
850
885
  case 2: {
@@ -868,14 +903,29 @@ class VasJobModel extends VasBaseModel {
868
903
  * @return {VasJobDto}
869
904
  */
870
905
  toDto(staticOnly = false) {
871
- const dto = {};
872
- this.staticProperties
873
- .forEach(prop => (dto)[prop] = this.$this[prop]);
874
906
  if (staticOnly) {
875
- return dto;
907
+ return {
908
+ id: this.id,
909
+ created: this.created,
910
+ createdBy: this.createdBy,
911
+ modified: this.modified,
912
+ modifiedBy: this.modifiedBy,
913
+ serverCreated: this.serverCreated,
914
+ serverModified: this.serverModified,
915
+ account: this.account,
916
+ accessGroup: this.accessGroup,
917
+ reference: this.reference,
918
+ jobDate: this.jobDate,
919
+ jobStatus: this.jobStatus,
920
+ jobType: this.jobType,
921
+ assignee: this.assignee,
922
+ formId: this.formId,
923
+ timeZoneOffset: this.timeZoneOffset,
924
+ };
876
925
  }
877
- this.dynamicProperties
878
- .forEach(prop => dto[prop] = this.$this[prop]);
926
+ const dto = {};
927
+ [...this.staticProperties, ...this.dynamicProperties]
928
+ .forEach(prop => (dto)[prop] = this.$this[prop]);
879
929
  return dto;
880
930
  }
881
931
  /**
@@ -930,7 +980,33 @@ class VasJobModel extends VasBaseModel {
930
980
  filterArg = (filterArg || '').trim();
931
981
  }
932
982
  const path = key.split('.');
933
- let result = (this.getValueByPath(path) || '').toString();
983
+ const objectKey = path.shift() || '';
984
+ let result = '';
985
+ if (objectKey === 'job') {
986
+ result = (this.getValueByPath(path) || '').toString();
987
+ }
988
+ else if (objectKey === 'fields') {
989
+ result = (getValueByPath(path, this.getFields2()) || '').toString();
990
+ }
991
+ else if (objectKey.length) {
992
+ if (options.objects) {
993
+ if (options.objects[objectKey] === undefined) {
994
+ console.debug(`objectKey ${objectKey} is not present in options.object`);
995
+ result = '';
996
+ }
997
+ else {
998
+ result = (getValueByPath(path, options.objects[objectKey]) || '')
999
+ .toString();
1000
+ }
1001
+ }
1002
+ else {
1003
+ console.debug(`objectKey ${objectKey} was used but options.object is not set`);
1004
+ return '';
1005
+ }
1006
+ }
1007
+ else {
1008
+ return '';
1009
+ }
934
1010
  if (filterName && result) {
935
1011
  switch (filterName) {
936
1012
  case 'date': {
@@ -944,7 +1020,7 @@ class VasJobModel extends VasBaseModel {
944
1020
  }
945
1021
  }
946
1022
  return result;
947
- });
1023
+ }).trim();
948
1024
  }
949
1025
  ;
950
1026
  }