@colijnit/sharedcomponents 1.0.29 → 1.0.31

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 (134) hide show
  1. package/README.md +24 -24
  2. package/bundles/colijnit-sharedcomponents.umd.js +789 -1887
  3. package/bundles/colijnit-sharedcomponents.umd.js.map +1 -1
  4. package/colijnit-sharedcomponents.d.ts +40 -29
  5. package/colijnit-sharedcomponents.metadata.json +1 -1
  6. package/esm2015/colijnit-sharedcomponents.js +41 -30
  7. package/esm2015/lib/components/date-planning/date-planning.component.js +6 -4
  8. package/esm2015/lib/components/docsign/component/signature/signature.component.js +3 -3
  9. package/esm2015/lib/components/docsign/component/signatures/signatures.component.js +7 -7
  10. package/esm2015/lib/components/docsign/docsign.component.js +5 -5
  11. package/esm2015/lib/components/layout-switcher/layout-switcher.component.js +3 -3
  12. package/esm2015/lib/components/send-method-dialog/components/layout-selection/layout-selection.component.js +57 -0
  13. package/esm2015/lib/components/send-method-dialog/components/layout-selection/layout-selection.module.js +19 -0
  14. package/esm2015/lib/components/send-method-dialog/components/printer-selection/printer-selection.component.js +76 -0
  15. package/esm2015/lib/components/send-method-dialog/components/printer-selection/printer-selection.module.js +21 -0
  16. package/esm2015/lib/components/send-method-dialog/components/send-method-email/send-method-email.component.js +59 -0
  17. package/esm2015/lib/components/send-method-dialog/components/send-method-email/send-method-email.module.js +23 -0
  18. package/esm2015/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.component.js +50 -0
  19. package/esm2015/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.module.js +26 -0
  20. package/esm2015/lib/components/send-method-dialog/model/email-address-viewmodel.js +7 -0
  21. package/esm2015/lib/components/send-method-dialog/send-method-dialog.component.js +162 -251
  22. package/esm2015/lib/components/send-method-dialog/send-method-dialog.module.js +12 -13
  23. package/esm2015/lib/components/send-method-dialog/service/send-method.service.js +59 -0
  24. package/esm2015/lib/components/stock/stock-information-grid/stock-information-grid.component.js +101 -27
  25. package/esm2015/lib/components/stock/stock-transfer/stock-change-amount.component.js +3 -1
  26. package/esm2015/lib/components/stock/stock-transfer/stock-transfer.component.js +4 -2
  27. package/esm2015/lib/components/stock/stock.component.js +8 -1
  28. package/esm2015/lib/enum/icon.enum.js +6 -1
  29. package/esm2015/lib/model/icon-svg.js +7 -2
  30. package/esm2015/lib/model/send-method.js +8 -0
  31. package/esm2015/lib/model/time-window.bo.js +4 -4
  32. package/esm2015/lib/service/icon-cache.service.js +1 -1
  33. package/esm2015/lib/service/shared-connector.service.js +91 -121
  34. package/esm2015/lib/service/shared.service.js +11 -1
  35. package/esm2015/lib/service/stock.service.js +19 -36
  36. package/fesm2015/colijnit-sharedcomponents.js +834 -1849
  37. package/fesm2015/colijnit-sharedcomponents.js.map +1 -1
  38. package/lib/components/circular-gauge/style/_layout.scss +0 -2
  39. package/lib/components/circular-gauge/style/_theme.scss +0 -2
  40. package/lib/components/circular-gauge/style/material.scss +1 -0
  41. package/lib/components/date-planning/date-planning.component.d.ts +3 -2
  42. package/lib/components/date-planning/style/_layout.scss +2 -4
  43. package/lib/components/date-planning/style/_theme.scss +2 -4
  44. package/lib/components/docsign/component/signature/style/_layout.scss +2 -4
  45. package/lib/components/docsign/component/signature/style/_theme.scss +2 -4
  46. package/lib/components/docsign/component/signature/style/material.scss +1 -3
  47. package/lib/components/docsign/component/signatures/style/_layout.scss +3 -5
  48. package/lib/components/docsign/component/signatures/style/_theme.scss +2 -4
  49. package/lib/components/docsign/component/signatures/style/material.scss +1 -2
  50. package/lib/components/docsign/style/_layout.scss +3 -5
  51. package/lib/components/docsign/style/_theme.scss +2 -4
  52. package/lib/components/docsign/style/material.scss +1 -0
  53. package/lib/components/layout-switcher/style/_layout.scss +2 -4
  54. package/lib/components/layout-switcher/style/_theme.scss +2 -4
  55. package/lib/components/layout-switcher/style/material.scss +1 -0
  56. package/lib/components/linear-gauge/style/_layout.scss +0 -2
  57. package/lib/components/linear-gauge/style/_theme.scss +0 -2
  58. package/lib/components/linear-gauge/style/material.scss +1 -0
  59. package/lib/components/send-method-dialog/components/layout-selection/layout-selection.component.d.ts +13 -0
  60. package/lib/components/send-method-dialog/components/layout-selection/layout-selection.module.d.ts +2 -0
  61. package/lib/components/send-method-dialog/components/layout-selection/style/_layout.scss +34 -0
  62. package/lib/components/send-method-dialog/components/layout-selection/style/_material-definition.scss +19 -0
  63. package/lib/components/send-method-dialog/components/layout-selection/style/_theme.scss +17 -0
  64. package/lib/components/send-method-dialog/components/layout-selection/style/material.scss +4 -0
  65. package/lib/components/send-method-dialog/components/printer-selection/printer-selection.component.d.ts +18 -0
  66. package/lib/components/send-method-dialog/components/printer-selection/printer-selection.module.d.ts +2 -0
  67. package/lib/components/send-method-dialog/components/printer-selection/style/_layout.scss +59 -0
  68. package/lib/components/send-method-dialog/components/printer-selection/style/_material-definition.scss +39 -0
  69. package/lib/components/send-method-dialog/components/printer-selection/style/_theme.scss +23 -0
  70. package/lib/components/send-method-dialog/components/printer-selection/style/material.scss +4 -0
  71. package/lib/components/send-method-dialog/components/send-method-email/send-method-email.component.d.ts +14 -0
  72. package/lib/components/send-method-dialog/components/send-method-email/send-method-email.module.d.ts +2 -0
  73. package/lib/components/send-method-dialog/components/send-method-email/style/_layout.scss +21 -0
  74. package/lib/components/send-method-dialog/components/send-method-email/style/_material-definition.scss +8 -0
  75. package/lib/components/send-method-dialog/components/send-method-email/style/_theme.scss +5 -0
  76. package/lib/components/send-method-dialog/components/send-method-email/style/material.scss +4 -0
  77. package/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.component.d.ts +10 -0
  78. package/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.module.d.ts +2 -0
  79. package/lib/components/send-method-dialog/components/send-method-printer/style/_layout.scss +17 -0
  80. package/lib/components/send-method-dialog/components/send-method-printer/style/_material-definition.scss +5 -0
  81. package/lib/components/send-method-dialog/components/send-method-printer/style/_theme.scss +5 -0
  82. package/lib/components/send-method-dialog/components/send-method-printer/style/material.scss +4 -0
  83. package/lib/components/send-method-dialog/model/email-address-viewmodel.d.ts +5 -0
  84. package/lib/components/send-method-dialog/send-method-dialog.component.d.ts +53 -61
  85. package/lib/components/send-method-dialog/service/send-method.service.d.ts +23 -0
  86. package/lib/components/send-method-dialog/style/_layout.scss +44 -184
  87. package/lib/components/send-method-dialog/style/_material-definition.scss +30 -1
  88. package/lib/components/send-method-dialog/style/_theme.scss +31 -5
  89. package/lib/components/send-method-dialog/style/material.scss +5 -0
  90. package/lib/components/statusbar/style/_layout.scss +0 -2
  91. package/lib/components/statusbar/style/_theme.scss +0 -2
  92. package/lib/components/statusbar/style/material.scss +1 -0
  93. package/lib/components/stock/stock-information-grid/stock-information-grid.component.d.ts +12 -1
  94. package/lib/components/stock/stock.component.d.ts +2 -0
  95. package/lib/components/stock/style/_layout.scss +0 -2
  96. package/lib/components/stock/style/_theme.scss +0 -3
  97. package/lib/components/stock/style/material.scss +1 -0
  98. package/lib/enum/icon.enum.d.ts +5 -0
  99. package/lib/model/send-method.d.ts +7 -0
  100. package/lib/model/time-window.bo.d.ts +1 -1
  101. package/lib/service/icon-cache.service.d.ts +1 -1
  102. package/lib/service/shared-connector.service.d.ts +21 -29
  103. package/lib/service/shared.service.d.ts +4 -0
  104. package/lib/service/stock.service.d.ts +1 -12
  105. package/lib/style/_variables.scss +5 -1
  106. package/package.json +6 -6
  107. package/esm2015/lib/components/send-method-dialog/enums/send-option.js +0 -8
  108. package/esm2015/lib/factory/business-object-factory.js +0 -120
  109. package/esm2015/lib/factory/decorators/boolean.decorator.js +0 -102
  110. package/esm2015/lib/factory/decorators/complex-array.decorator.js +0 -55
  111. package/esm2015/lib/factory/decorators/complex-field.decorator.js +0 -57
  112. package/esm2015/lib/factory/decorators/date-field.decorator.js +0 -36
  113. package/esm2015/lib/factory/decorators/string-number.decorator.js +0 -43
  114. package/esm2015/lib/model/business-object.js +0 -81
  115. package/esm2015/lib/utils/array-utils.js +0 -202
  116. package/esm2015/lib/utils/check-precision-and-scale-result.js +0 -2
  117. package/esm2015/lib/utils/check-within-stepped-bounds-result.js +0 -2
  118. package/esm2015/lib/utils/is-nill.function.js +0 -5
  119. package/esm2015/lib/utils/number-utils.js +0 -390
  120. package/esm2015/lib/utils/object-utils.js +0 -278
  121. package/lib/components/send-method-dialog/enums/send-option.d.ts +0 -6
  122. package/lib/factory/business-object-factory.d.ts +0 -23
  123. package/lib/factory/decorators/boolean.decorator.d.ts +0 -43
  124. package/lib/factory/decorators/complex-array.decorator.d.ts +0 -25
  125. package/lib/factory/decorators/complex-field.decorator.d.ts +0 -25
  126. package/lib/factory/decorators/date-field.decorator.d.ts +0 -17
  127. package/lib/factory/decorators/string-number.decorator.d.ts +0 -22
  128. package/lib/model/business-object.d.ts +0 -7
  129. package/lib/utils/array-utils.d.ts +0 -63
  130. package/lib/utils/check-precision-and-scale-result.d.ts +0 -4
  131. package/lib/utils/check-within-stepped-bounds-result.d.ts +0 -8
  132. package/lib/utils/is-nill.function.d.ts +0 -1
  133. package/lib/utils/number-utils.d.ts +0 -125
  134. package/lib/utils/object-utils.d.ts +0 -40
@@ -9,37 +9,31 @@ import { CommonModule, DatePipe } from '@angular/common';
9
9
  import SignaturePad from 'signature_pad';
10
10
  import { Articles } from '@colijnit/articleapi/build/articles';
11
11
  import { Sharedapi } from '@colijnit/sharedapi/build/sharedapi';
12
- import { Printer } from '@colijnit/sharedapi/build/model/report/printer.bo';
13
- import { notNill as notNill$1 } from '@colijnit/articleapi/build/utils/function/not-nill.function';
14
- import { ObjectUtils as ObjectUtils$1 } from '@colijnit/articleapi/build/utils/object-utils';
15
- import { GetYesNoDbBooleanValue } from '@colijnit/articleapi/build/enum/yes-no-db-type.enum';
16
- import { GetTrueFalseDbBooleanValue } from '@colijnit/articleapi/build/enum/true-false-db-type.enum';
17
- import { GetOneZeroDbBooleanValue } from '@colijnit/articleapi/build/enum/one-zero-bool-db-type.enum';
18
- import { GetLogicalBooleanValue } from '@colijnit/articleapi/build/enum/db-boolean-value-type.enum';
19
- import { DateUtils as DateUtils$1 } from '@colijnit/articleapi/build/utils/date-utils';
20
- import { NumberUtils as NumberUtils$1 } from '@colijnit/articleapi/build/utils/number-utils';
21
- import { MapPropertyDecorator } from '@colijnit/articleapi/build/factory/decorators/map-property.decorator';
22
- import { BooleanTextDecorator as BooleanTextDecorator$1 } from '@colijnit/articleapi/build/factory/decorators/boolean.decorator';
23
- import { JsonFieldFieldDecorator } from '@colijnit/articleapi/build/factory/decorators/json.decorator';
24
- import { ComplexArrayDecorator as ComplexArrayDecorator$1 } from '@colijnit/articleapi/build/factory/decorators/complex-array.decorator';
25
- import { PrintStockStickers } from '@colijnit/sharedapi/build/model/print-stock-stickers';
26
12
  import { ArticleStock } from '@colijnit/articleapi/build/model/article-stock.bo';
27
13
  import { StockHistoryBo } from '@colijnit/articleapi/build/model/stock-history.bo';
28
- import { StockStickersPrintLayouts } from '@colijnit/sharedapi/build/model/report/stock-stickers-print-layouts.bo';
29
14
  import { ArticleDetailsBo } from '@colijnit/articleapi/build/model/article-details.bo';
30
15
  import { StockStatus } from '@colijnit/articleapi/build/model/stock-status.bo';
31
16
  import { StockManagementWarehouses } from '@colijnit/articleapi/build/model/stock-management-warehouses.bo';
32
17
  import { StockLocation } from '@colijnit/articleapi/build/model/stock-location.bo';
33
18
  import { ArticleTransaction } from '@colijnit/articleapi/build/model/article-transaction.bo';
34
- import { BehaviorSubject } from 'rxjs';
35
- import { PrintPriceStickers } from '@colijnit/sharedapi/build/model/print-price-stickers.bo';
19
+ import { BehaviorSubject, Subject } from 'rxjs';
20
+ import { MainApi } from '@colijnit/mainapi';
21
+ import { Printer } from '@colijnit/mainapi/build/model/printer.bo';
22
+ import { BusinessObjectFactory } from '@colijnit/ioneconnector/build/factory/business-object-factory';
23
+ import { SendMethod as SendMethod$1 } from '@colijnit/mainapi/build/model/send-method.bo';
24
+ import { PrintStockStickers } from '@colijnit/sharedapi/build/model/print-stock-stickers';
36
25
  import { GetStockHistoryRequest } from '@colijnit/articleapi/build/model/get-stock-history-request';
37
26
  import { ArticleStock as ArticleStock$1 } from '@colijnit/articleapi/build/model/article-stock';
38
- import { CoDialogPromptModule, InputCheckboxModule, InputComboBoxModule, IconModule, InputNumberPickerModule, CoDialogWizardModule, ButtonModule, CoDialogModule, CoGridModule, InputRadioButtonModule, DropDownModule, SimpleGridModule, ImageModule, InputTextModule, InputTextareaModule, InputDatePickerModule } from '@colijnit/corecomponents_v12';
27
+ import { InputCheckboxModule, IconModule, CoDialogModule, ButtonModule, InputComboBoxModule, CoGridModule, InputRadioButtonModule, DropDownModule, SimpleGridModule, ImageModule, InputTextModule, InputNumberPickerModule, CoDialogWizardModule, InputTextareaModule, InputDatePickerModule } from '@colijnit/corecomponents_v12';
39
28
  import * as i1 from '@angular/platform-browser';
40
29
  import { DomSanitizer } from '@angular/platform-browser';
41
30
  import { ArticleStockManagement } from '@colijnit/articleapi/build/model/article-stock-management';
42
31
  import { ArticleTransaction as ArticleTransaction$1 } from '@colijnit/articleapi/build/model/article-transaction';
32
+ import { PrintPriceStickers } from '@colijnit/sharedapi/build/model/print-price-stickers.bo';
33
+ import { ReportingDocumentPrintBaseRequest } from '@colijnit/mainapi/build/model/reporting-document-print-base-request';
34
+ import { ReportingDocumentEmailBaseRequest } from '@colijnit/mainapi/build/model/reporting-document-email-base-request';
35
+ import { ReportingDocumentPdfBaseRequest } from '@colijnit/mainapi/build/model/reporting-document-pdf-base-request';
36
+ import { SendMethodType } from '@colijnit/mainapi/build/enum/send-method-type.enum';
43
37
  import { CircularGaugeModule } from '@syncfusion/ej2-angular-circulargauge';
44
38
  import * as moment from 'moment';
45
39
 
@@ -214,10 +208,10 @@ class DocsignComponent {
214
208
  }
215
209
  DocsignComponent.decorators = [
216
210
  { type: Component, args: [{
217
- selector: "ione-docsign",
211
+ selector: "co-docsign",
218
212
  template: `
219
213
  <iframe #iframe></iframe>
220
- <ione-signatures *ngIf="showSignatures" @showHideSignature
214
+ <co-signatures *ngIf="showSignatures" @showHideSignature
221
215
  [showFirstSignature]="showSigBuyer"
222
216
  [firstSignatureTitle]="firstSignatureLabel"
223
217
  [showSecondSignature]="showSigSeller"
@@ -226,7 +220,7 @@ DocsignComponent.decorators = [
226
220
  [clearButtonLabel]="clearButtonLabel"
227
221
  (saveFirstSignature)="saveFirstSignature($event)"
228
222
  (saveSecondSignature)="saveSecondSignature($event)"
229
- ></ione-signatures>
223
+ ></co-signatures>
230
224
  <input type="button" *ngIf="(showSigBuyer || showSigSeller) && !showSignatures" class="button button-sign-document"
231
225
  [value]="signDocumentButtonLabel"
232
226
  (click)="showSignatures = true"
@@ -259,7 +253,7 @@ DocsignComponent.propDecorators = {
259
253
  cancelButtonLabel: [{ type: Input }],
260
254
  pdfSaved: [{ type: Output }],
261
255
  cancelClick: [{ type: Output }],
262
- showClass: [{ type: HostBinding, args: ['class.ione-docsign',] }]
256
+ showClass: [{ type: HostBinding, args: ['class.co-docsign',] }]
263
257
  };
264
258
 
265
259
  class SignatureComponent {
@@ -308,7 +302,7 @@ class SignatureComponent {
308
302
  }
309
303
  SignatureComponent.decorators = [
310
304
  { type: Component, args: [{
311
- selector: "ione-signature",
305
+ selector: "co-signature",
312
306
  template: `
313
307
  <div class="signature-wrapper">
314
308
  <div class="signature-header">
@@ -332,7 +326,7 @@ SignatureComponent.propDecorators = {
332
326
  saveButtonLabel: [{ type: Input }],
333
327
  clearButtonLabel: [{ type: Input }],
334
328
  save: [{ type: Output }],
335
- showClass: [{ type: HostBinding, args: ["class.ione-signature",] }]
329
+ showClass: [{ type: HostBinding, args: ["class.co-signature",] }]
336
330
  };
337
331
 
338
332
  class SignaturesComponent {
@@ -350,1393 +344,51 @@ class SignaturesComponent {
350
344
  }
351
345
  SignaturesComponent.decorators = [
352
346
  { type: Component, args: [{
353
- selector: "ione-signatures",
347
+ selector: "co-signatures",
354
348
  template: `
355
- <ione-signature *ngIf="showFirstSignature"
349
+ <co-signature *ngIf="showFirstSignature"
356
350
  [title]="firstSignatureTitle"
357
351
  [saveButtonLabel]="saveButtonLabel"
358
352
  [clearButtonLabel]="clearButtonLabel"
359
- (save)="saveFirstSignature.emit($event)"></ione-signature>
360
- <ione-signature *ngIf="showSecondSignature"
353
+ (save)="saveFirstSignature.emit($event)"></co-signature>
354
+ <co-signature *ngIf="showSecondSignature"
361
355
  [title]="secondSignatureTitle"
362
356
  [saveButtonLabel]="saveButtonLabel"
363
357
  [clearButtonLabel]="clearButtonLabel"
364
- (save)="saveSecondSignature.emit($event)"></ione-signature>
358
+ (save)="saveSecondSignature.emit($event)"></co-signature>
365
359
  `,
366
360
  encapsulation: ViewEncapsulation.None
367
361
  },] }
368
362
  ];
369
363
  SignaturesComponent.propDecorators = {
370
364
  showFirstSignature: [{ type: Input }],
371
- firstSignatureTitle: [{ type: Input }],
372
- showSecondSignature: [{ type: Input }],
373
- secondSignatureTitle: [{ type: Input }],
374
- saveButtonLabel: [{ type: Input }],
375
- clearButtonLabel: [{ type: Input }],
376
- saveFirstSignature: [{ type: Output }],
377
- saveSecondSignature: [{ type: Output }],
378
- showClass: [{ type: HostBinding, args: ["class.ione-signatures",] }]
379
- };
380
-
381
- class DocsignModule {
382
- }
383
- DocsignModule.decorators = [
384
- { type: NgModule, args: [{
385
- imports: [
386
- CommonModule
387
- ],
388
- declarations: [
389
- DocsignComponent,
390
- SignatureComponent,
391
- SignaturesComponent
392
- ],
393
- exports: [
394
- DocsignComponent
395
- ]
396
- },] }
397
- ];
398
-
399
- const PROP_META_KEY$3 = "complexField";
400
- /**
401
- * !! just a TAG DECORATOR for now, there is no code that uses this meta data within the ione connector lib itself.
402
- */
403
- /**
404
- * Property decorator for properties of businessobject classes that are other strongly typed businessobjects.
405
- * Ensures that the BusinessObjectFactoryService makes properly typed objects from incoming raw persistence data. Otherwise we couldn't add methods
406
- * to our own businessobjects and use them, since all fields would be flat data without methods after BusinessObjectFactoryService creation.
407
- *
408
- * Usage:
409
- *
410
- * @ComplexField(Transaction)
411
- * public transaction: Transaction
412
- *
413
- * Also keeps track of a "complexFieldProps" metadata on the class-level, as a reflect-metadata workaround to be able to
414
- * retrieve all properties that have the @ComplexField(..) decorator (impossible with current Reflect API).
415
- */
416
- function ComplexField(type) {
417
- return function (target, propertyKey) {
418
- if (!target || !propertyKey) {
419
- return;
420
- }
421
- // warn the programmer if given type was undefined; it's probably an import order glitch that caused this, because decorators seem
422
- // to be immediately processed when a class is first imported
423
- if (!type) {
424
- // eslint-disable-next-line no-console
425
- console.warn(`@ComplexField(type): type was UNDEFINED. Called on prop (${ObjectUtils$1.GetClassName(target)}, ${propertyKey}). ` +
426
- `Class will not properly serialize and deserialize now. We've always been able to fix this by CHANGING IMPORT ORDERS ` +
427
- `where both classes and their dependencies are used, e.g. factory, repository or models..`);
428
- return;
429
- }
430
- Reflect.defineMetadata(PROP_META_KEY$3, type, target, propertyKey);
431
- };
432
- }
433
- // Utility function holder of the ComplexFieldDecorator decorator.
434
- class ComplexFieldDecorator {
435
- /**
436
- * Returns whether given property (as a string) on given object is a complex field. A complex field is a field that is decorated
437
- * with the @ComplexField decorator.
438
- */
439
- static IsComplexField(target, propertyKey) {
440
- if (!target || !propertyKey || typeof target !== "object") {
441
- return false;
442
- }
443
- return (notNill$1(Reflect.getMetadata(PROP_META_KEY$3, target, propertyKey)));
444
- }
445
- // Returns the VALUE of the @ComplexField(VALUE) property decorator on the given propertyKey on the given modelObject.
446
- static GetComplexFieldType(target, propertyKey) {
447
- if (!target || !propertyKey || typeof target !== "object") {
448
- return undefined;
449
- }
450
- return Reflect.getMetadata(PROP_META_KEY$3, target, propertyKey);
451
- }
452
- }
453
-
454
- const PROP_META_KEY$2 = "complexArray";
455
- /**
456
- * !! just a TAG DECORATOR for now, there is no code that uses this meta data within the ione connector lib itself.
457
- */
458
- /**
459
- * Property decorator for properties of businessobject classes that are an array of other strongly typed businessobjects.
460
- * Ensures that the BusinessObjectFactoryService makes properly typed objects from incoming raw persistence data. Otherwise we couldn't add methods
461
- * to our own businessobjects and use them, since all fields would be flat data without methods after BusinessObjectFactoryService creation.
462
- *
463
- * Usage:
464
- *
465
- * @ComplexArray(TransactionLine)
466
- * public transactionLines: TransactionLine[]
467
- */
468
- function ComplexArray(type) {
469
- return function (target, propertyKey) {
470
- if (!target || !propertyKey || typeof target !== "object") {
471
- return;
472
- }
473
- // warn the programmer if given type was undefined; it's probably an import order glitch that caused this, because decorators seem
474
- // to be immediately processed when a class is first imported
475
- if (!type) {
476
- console.warn(`@ComplexArray(type): type was UNDEFINED. Called on prop (${ObjectUtils$1.GetClassName(target)}, ${propertyKey}). ` +
477
- `Class will not properly serialize and deserialize now. We've always been able to fix this by CHANGING IMPORT ORDERS ` +
478
- `where both classes and their dependencies are used, e.g. factory, repository or models..`);
479
- return;
480
- }
481
- Reflect.defineMetadata(PROP_META_KEY$2, type, target, propertyKey);
482
- };
483
- }
484
- // Utility function holder of the ComplexArrayDecorator decorator.
485
- class ComplexArrayDecorator {
486
- /**
487
- * Returns whether given property (as a string) on given object is a complex array. A complex array is an array field that is decorated
488
- * with the @ComplexArray decorator.
489
- */
490
- static IsComplexArray(target, propertyKey) {
491
- if (!target || !propertyKey || typeof target !== "object") {
492
- return false;
493
- }
494
- return (notNill$1(Reflect.getMetadata(PROP_META_KEY$2, target, propertyKey)));
495
- }
496
- /**
497
- * Returns the VALUE of the @ComplexArray(VALUE) property decorator on the given propertyKey on the given modelobject.
498
- */
499
- static GetComplexArrayType(target, propertyKey) {
500
- if (!target || !propertyKey || typeof target !== "object") {
501
- return undefined;
502
- }
503
- return Reflect.getMetadata(PROP_META_KEY$2, target, propertyKey);
504
- }
505
- }
506
-
507
- const PROP_META_KEY_JN = "booleanTextJN";
508
- const PROP_META_KEY_TF = "booleanTextTF";
509
- const PROP_META_KEY_10 = "booleanText10";
510
- /**
511
- * There are 'J', 'T', 'N', 'F', 0 and 1 'boolean values' in the database. These should be translated to true and false boolean values in
512
- * our client application.
513
- *
514
- * The values 'J' and 'N' seem to be most commonly used. This is the default setting when using this decorator.
515
- * You can pass 'T' or 1 for the other variants as follows:
516
- *
517
- * Usage:
518
- *
519
- * @BooleanText() or @BooleanText("J") (the default, uses YesNoDbType char values)
520
- * public foo: boolean // 'J' and 'N' become true and false after BusinessObjectFactoryService and -SerializerService processing
521
- *
522
- * @BooleanText('T') (uses TrueFalseDbType char values)
523
- * public bar: boolean // 'T' and 'F' become true and false after BusinessObjectFactoryService and -SerializerService processing
524
- *
525
- * @BooleanText(1)
526
- * public baz: boolean // 1 and 0 become true and false after BusinessObjectFactoryService and -SerializerService processing
527
- */
528
- function BooleanText(type) {
529
- return function (target, propertyKey) {
530
- if (!target || !propertyKey) {
531
- return;
532
- }
533
- // by default, it's a J N boolean text
534
- if (!type || type === "J") {
535
- Reflect.defineMetadata(PROP_META_KEY_JN, true, target, propertyKey);
536
- }
537
- else if (type === "T") {
538
- Reflect.defineMetadata(PROP_META_KEY_TF, true, target, propertyKey);
539
- }
540
- else if (type === 1) {
541
- Reflect.defineMetadata(PROP_META_KEY_10, true, target, propertyKey);
542
- }
543
- };
544
- }
545
- // Utility function holder of the BooleanTextDecorator decorator.
546
- class BooleanTextDecorator {
547
- /**
548
- * Returns whether given property (as a string) on given object is a boolean text field. That is, it's a field that is decorated
549
- * with the @BooleanText decorator.
550
- */
551
- static IsBooleanTextField(target, propertyKey) {
552
- if (!target || !propertyKey || typeof target !== "object") {
553
- return false;
554
- }
555
- return (Reflect.getMetadata(PROP_META_KEY_JN, target, propertyKey) === true
556
- ||
557
- Reflect.getMetadata(PROP_META_KEY_TF, target, propertyKey) === true
558
- ||
559
- Reflect.getMetadata(PROP_META_KEY_10, target, propertyKey) === true);
560
- }
561
- /**
562
- * Returns the logical true or false value of given character ('J', 'N', 'T' or 'F') or number (0 or 1).
563
- * Returns UNDEFINED if given boolChar was not recognised as a boolean text.
564
- */
565
- static GetLogicalBooleanValue(dbBoolChar) {
566
- return GetLogicalBooleanValue(dbBoolChar);
567
- }
568
- /**
569
- * Returns the boolean character / number of given logical bool property on target object. Uses its @BooleanText() annotation to decide
570
- * what character / number to return.
571
- * Used in BusinessObjectSerializerServiceService to convert logical bools to their original boolean character.
572
- * @returns {string|number} The original, reverse-engineered boolean character (or number) of given object property, or undefined.
573
- */
574
- static GetDbBooleanValue(target, propertyKey) {
575
- if (!target || !propertyKey || typeof target !== "object") {
576
- return undefined;
577
- }
578
- let dbBoolVal = undefined;
579
- const curBoolVal = target[propertyKey];
580
- if (BooleanTextDecorator._IsJaNeeProp(target, propertyKey)) {
581
- dbBoolVal = GetYesNoDbBooleanValue(curBoolVal);
582
- }
583
- else if (BooleanTextDecorator._IsTrueFalseProp(target, propertyKey)) {
584
- dbBoolVal = GetTrueFalseDbBooleanValue(curBoolVal);
585
- }
586
- else if (BooleanTextDecorator._IsZeroOneProp(target, propertyKey)) {
587
- dbBoolVal = GetOneZeroDbBooleanValue(curBoolVal);
588
- }
589
- return dbBoolVal;
590
- }
591
- static _IsJaNeeProp(target, propertyKey) {
592
- return BooleanTextDecorator._IsProp(PROP_META_KEY_JN, target, propertyKey);
593
- }
594
- static _IsTrueFalseProp(target, propertyKey) {
595
- return BooleanTextDecorator._IsProp(PROP_META_KEY_TF, target, propertyKey);
596
- }
597
- static _IsZeroOneProp(target, propertyKey) {
598
- return BooleanTextDecorator._IsProp(PROP_META_KEY_10, target, propertyKey);
599
- }
600
- static _IsProp(prop, target, propertyKey) {
601
- return !!target && !!propertyKey && typeof target === "object" && Reflect.hasMetadata(prop, target, propertyKey);
602
- }
603
- }
604
-
605
- const PROP_META_KEY$1 = "dateField";
606
- /**
607
- * !! just a TAG DECORATOR for now, there is no code that uses this meta data within the ione connector lib itself.
608
- */
609
- /**
610
- * Property decorator for properties of businessobject classes that are of type Date, but are sent to us as strings.
611
- * Ensures that the BusinessObjectFactory makes proper JavaScript Date objects from incoming strings for @DateField() decorated properties.
612
- *
613
- * Usage:
614
- *
615
- * @DateField()
616
- * public expectedDeliveryDate: Date
617
- */
618
- function DateField() {
619
- return function (target, propertyKey) {
620
- if (!target || !propertyKey) {
621
- return;
622
- }
623
- Reflect.defineMetadata(PROP_META_KEY$1, undefined, target, propertyKey);
624
- };
625
- }
626
- // Utility function holder of the @DateField() decorator.
627
- class DateFieldFieldDecorator {
628
- // Returns whether given property (as a string) on given object is decorated with @DateField().
629
- static IsDateField(target, propertyKey) {
630
- if (!target || !propertyKey || typeof target !== "object") {
631
- return false;
632
- }
633
- return Reflect.hasMetadata(PROP_META_KEY$1, target, propertyKey);
634
- }
635
- static StringAsDate(str) {
636
- return DateUtils$1.StringAsDate(str);
637
- }
638
- }
639
-
640
- const PROP_META_KEY = "stringNumber";
641
- /**
642
- * !! just a TAG DECORATOR for now, there is no code that uses this meta data within the ione connector lib itself.
643
- */
644
- /**
645
- * Decorator for properties of businessobjects that are sent to us as strings from the database, but which we want to use as a number in the client.
646
- *
647
- * Can be handy for incongruent backend api cases, where id data types are communicated wrongly via strings instead of numbers
648
- * (e.g. on EmployeeFullObject.district, points to a District which has a number id, but in employee it's a string representation of that number...)
649
- *
650
- * Used by business object factory and -serializer.
651
- *
652
- * Usage:
653
- *
654
- * @StringNumber()
655
- * public rights: UserRightType
656
- */
657
- function StringNumber() {
658
- return function (target, propertyKey) {
659
- if (!target || !propertyKey) {
660
- return;
661
- }
662
- Reflect.defineMetadata(PROP_META_KEY, undefined, target, propertyKey);
663
- };
664
- }
665
- // Utility function holder of the @StringNumber() decorator.
666
- class StringNumberDecorator {
667
- // Returns whether given property (as a string) on given object is decorated with @StringNumber().
668
- static IsStringNumber(target, propertyKey) {
669
- if (!target || !propertyKey || typeof target !== "object") {
670
- return false;
671
- }
672
- return Reflect.hasMetadata(PROP_META_KEY, target, propertyKey);
673
- }
674
- static StringAsNumber(str) {
675
- return NumberUtils$1.ParseFloatKeepPrecision(str);
676
- }
677
- static NumberAsString(nr) {
678
- return "" + nr;
679
- }
680
- }
681
-
682
- // @returns true iff given value equals null or equals undefined
683
- function isNill(value) {
684
- return value === null || value === undefined;
685
- }
686
-
687
- // @returns true iff given value does not equals null and does not equal undefined
688
- function notNill(value) {
689
- return value !== null && value !== undefined;
690
- }
691
-
692
- // Static utility function holder related to objects.
693
- class ObjectUtils {
694
- /**
695
- * Returns whether all given values exist: for all values it holds that they are not null nor undefined. Short-circuit check.
696
- * @param {any} values Rest parameters with all objects to check existence for.
697
- * @returns {boolean} True if ALL given values are not null nor undefined, otherwise false (if at least one value was null or undefined)
698
- */
699
- static AllExist(...values) {
700
- let allExist = true;
701
- for (let i = 0, len = values.length; i < len; i++) {
702
- if (isNill(values[i])) {
703
- allExist = false;
704
- break;
705
- }
706
- }
707
- return allExist;
708
- }
709
- /**
710
- * Copies all properties from object 'from' to object 'to'. Overwrites properties on object 'to' if property already exists.
711
- * Does not copy functions, only properties.
712
- * @param {Object} from The source object from which to copy all properties of to the 'to' object.
713
- * @param {Object} to The object to which the properties of the 'from' object will be copied.
714
- * @param {boolean} [allowUndefined = true] wether the 'to' object may be assigned null or undefined values to any of its properties.
715
- */
716
- static CopyPropertiesFrom(from, to, allowUndefined = true) {
717
- if (!to) {
718
- to = {};
719
- }
720
- if (!from) {
721
- return to;
722
- }
723
- ObjectUtils.ForOwnProperty(from, (value, key) => {
724
- if (allowUndefined || notNill(value)) {
725
- to[key] = value;
726
- }
727
- });
728
- return to;
729
- }
730
- static DeepEquals(actual, expected) {
731
- if (actual === expected) {
732
- return true;
733
- }
734
- else if (actual instanceof Date && expected instanceof Date) {
735
- return actual.getTime() === expected.getTime();
736
- }
737
- else if (!actual || !expected || typeof actual !== "object" && typeof expected !== "object") {
738
- return actual === expected;
739
- }
740
- else {
741
- return this._objEquiv(actual, expected);
742
- }
743
- }
744
- // Performs given callback function for each own property of given plain object. Also works on string enums.
745
- static ForOwnProperty(plainObject, callback) {
746
- if (ObjectUtils.IsPlainObject(plainObject)) {
747
- for (const key in plainObject) {
748
- if (plainObject.hasOwnProperty(key) && typeof plainObject[key] !== "function") {
749
- const response = callback(plainObject[key], key);
750
- if (response === false) {
751
- break;
752
- }
753
- }
754
- }
755
- }
756
- }
757
- // Returns the class name of given argument. The argument can be an object or a class.
758
- static GetClassName(objectOrClass) {
759
- if (!objectOrClass) {
760
- return undefined;
761
- // arg was a class (or a function..)
762
- }
763
- else if (objectOrClass.constructor === Function) {
764
- return objectOrClass.name; // .. which has its readable name stores like this
765
- // else arg was an object
766
- }
767
- else {
768
- const constructorString = objectOrClass.constructor.toString();
769
- return constructorString.match(/\w+/g)[1];
770
- }
771
- }
772
- // Returns a shallow clone of the given original object. The clone is a SIMPLE OBJECT with the same properties as the original.
773
- static GetShallowClone(originalObject, objectClass) {
774
- let clonedObject = undefined;
775
- if (objectClass) {
776
- clonedObject = new objectClass();
777
- }
778
- else {
779
- clonedObject = {};
780
- }
781
- ObjectUtils.ForOwnProperty(originalObject, (value, key) => {
782
- clonedObject[key] = value;
783
- });
784
- return clonedObject;
785
- }
786
- static GetDeepClone(originalObject, circular = true) {
787
- // First create an empty object with
788
- // same prototype of our original source
789
- let propertyIndex;
790
- let descriptor;
791
- let keys;
792
- let current;
793
- let nextSource;
794
- let indexOf;
795
- const copies = [{
796
- source: originalObject,
797
- target: Object.create(Object.getPrototypeOf(originalObject))
798
- }];
799
- const cloneObject = copies[0].target;
800
- const sourceReferences = [originalObject];
801
- const targetReferences = [cloneObject];
802
- // First in, first out
803
- while (current = copies.shift()) { //NOSONAR
804
- keys = Object.getOwnPropertyNames(current.source);
805
- for (propertyIndex = 0; propertyIndex < keys.length; propertyIndex++) {
806
- // Save the source's descriptor
807
- descriptor = Object.getOwnPropertyDescriptor(current.source, keys[propertyIndex]);
808
- if (!descriptor.value || typeof descriptor.value !== "object") {
809
- Object.defineProperty(current.target, keys[propertyIndex], descriptor);
810
- continue;
811
- }
812
- nextSource = descriptor.value;
813
- descriptor.value = Array.isArray(nextSource) ?
814
- [] :
815
- Object.create(Object.getPrototypeOf(nextSource));
816
- if (circular) {
817
- indexOf = sourceReferences.indexOf(nextSource);
818
- if (indexOf !== -1) {
819
- // The source is already referenced, just assign reference
820
- descriptor.value = targetReferences[indexOf];
821
- Object.defineProperty(current.target, keys[propertyIndex], descriptor);
822
- continue;
823
- }
824
- sourceReferences.push(nextSource);
825
- targetReferences.push(descriptor.value);
826
- }
827
- Object.defineProperty(current.target, keys[propertyIndex], descriptor);
828
- copies.push({ source: nextSource, target: descriptor.value });
829
- }
830
- }
831
- return cloneObject;
832
- }
833
- static IsEmpty(obj) {
834
- return isNill(obj) || Object.getOwnPropertyNames(obj).length === 0;
835
- }
836
- // Returns whether given object is an existing, plain object. That is, it defined, its type if 'object' and it is NOT an array or func.
837
- static IsPlainObject(object) {
838
- return object !== null && !Array.isArray(object) && typeof object !== "function" && typeof object === "object";
839
- }
840
- /**
841
- * Returns an instance of given class with data of given dataObject. Only works if that class has a default constructor without args.
842
- * Does not actually create a new object if it alread is an instance of that class.
843
- * @param {any} clazz A class that has a default constructor
844
- * @param {any} [dataObject] The object with data to copy to the new instance of the class
845
- * @returns {any} An object that is an instance of given class, with given data applied to it.
846
- */
847
- static MakeInstanceOf(clazz, dataObject) {
848
- // dont make a clone if given dataObject already instance of clazz
849
- if (dataObject instanceof clazz) {
850
- return dataObject;
851
- }
852
- else {
853
- const asClazz = new clazz();
854
- ObjectUtils.CopyPropertiesFrom(dataObject, asClazz);
855
- return asClazz;
856
- }
857
- }
858
- // Returns the value of a random own property of given object.
859
- static PickRandomPropertyValue(object) {
860
- if (!object) {
861
- return;
862
- }
863
- let result;
864
- let count = 0;
865
- for (const prop in object) {
866
- if (object.hasOwnProperty(prop)) {
867
- count++;
868
- if (Math.random() < 1 / count) {
869
- result = object[prop];
870
- }
871
- }
872
- }
873
- return result;
874
- }
875
- // Returns a default if given value doesn't exist, otherwise just value.
876
- static ValueOrDefault(value, defaultReturnVal = "") {
877
- return notNill(value) ? value : defaultReturnVal;
878
- }
879
- static _isArguments(x) {
880
- const supportsArgsClass = this._supportsArgumentsClass();
881
- return supportsArgsClass ? this._isArgumentsWhenArgsClassSupported(x) : this._isArgumentsWhenArgsClassNotSupported(x);
882
- }
883
- static _isArgumentsWhenArgsClassNotSupported(object) {
884
- return object &&
885
- typeof object === "object" &&
886
- typeof object.length === "number" &&
887
- Object.prototype.hasOwnProperty.call(object, "callee") &&
888
- !Object.prototype.propertyIsEnumerable.call(object, "callee") ||
889
- false;
890
- }
891
- static _isArgumentsWhenArgsClassSupported(object) {
892
- return Object.prototype.toString.call(object) === "[object Arguments]";
893
- }
894
- static _isBuffer(x) {
895
- if (!x || typeof x !== "object" || typeof x.length !== "number") {
896
- return false;
897
- }
898
- if (typeof x.copy !== "function" || typeof x.slice !== "function") {
899
- return false;
900
- }
901
- return !(x.length > 0 && typeof x[0] !== "number");
902
- }
903
- static _isUndefinedOrNull(value) {
904
- return value === null || value === undefined;
905
- }
906
- static _objEquiv(a, b) {
907
- let i, key;
908
- if (this._isUndefinedOrNull(a) || this._isUndefinedOrNull(b)) {
909
- return false;
910
- }
911
- if (a.prototype !== b.prototype) {
912
- return false;
913
- }
914
- if (this._isArguments(a)) {
915
- if (!this._isArguments(b)) {
916
- return false;
917
- }
918
- a = Array.prototype.slice.call(a);
919
- b = Array.prototype.slice.call(b);
920
- return this.DeepEquals(a, b);
921
- }
922
- if (this._isBuffer(a)) {
923
- if (!this._isBuffer(b)) {
924
- return false;
925
- }
926
- if (a.length !== b.length) {
927
- return false;
928
- }
929
- for (i = 0; i < a.length; i++) {
930
- if (a[i] !== b[i]) {
931
- return false;
932
- }
933
- }
934
- return true;
935
- }
936
- let ka;
937
- let kb;
938
- try {
939
- ka = Object.keys(a);
940
- kb = Object.keys(b);
941
- }
942
- catch (e) {
943
- return false;
944
- }
945
- if (ka.length !== kb.length) {
946
- return false;
947
- }
948
- ka.sort();
949
- kb.sort();
950
- for (i = ka.length - 1; i >= 0; i--) {
951
- if (ka[i] !== kb[i]) {
952
- return false;
953
- }
954
- }
955
- for (i = ka.length - 1; i >= 0; i--) {
956
- key = ka[i];
957
- if (!this.DeepEquals(a[key], b[key])) {
958
- return false;
959
- }
960
- }
961
- return typeof a === typeof b;
962
- }
963
- static _supportsArgumentsClass() {
964
- return Object.prototype.toString.call(arguments) === "[object Arguments]";
965
- }
966
- }
967
-
968
- // Static utility function holder related to numeric variable evaluations and operations.
969
- class NumberUtils {
970
- // For user-typed number input; supports comma's as decimal delimiter.
971
- static ParseIntNumberInput(arg) {
972
- return NumberUtils.ParseInt(NumberUtils._NumberInputToNumberStr(arg));
973
- }
974
- // Parses given argument to an integer, using a native parseInt() function with a radix of 10. Returns NaN if parsing was not possible.
975
- static ParseInt(arg) {
976
- if (isNill(arg) || Array.isArray(arg)) {
977
- return undefined;
978
- }
979
- return parseInt(arg, 10);
980
- }
981
- // For user-typed number input; supports comma's as decimal delimiter.
982
- static ParseFloatNumberInput(arg, decimalPrecision = 2) {
983
- return NumberUtils.ParseFloat(NumberUtils._NumberInputToNumberStr(arg), decimalPrecision);
984
- }
985
- static ParseFloatNumberInputKeepPrecision(arg) {
986
- const correctedInputStr = NumberUtils._NumberInputToNumberStr(arg);
987
- const decimalPrecision = this.GetDecimalPlaces(correctedInputStr);
988
- return NumberUtils.ParseFloat(correctedInputStr, decimalPrecision);
989
- }
990
- /**
991
- * Returns given arg as a float number with given decimal precision, if possible. Returns NaN if parse conversion failed.
992
- *
993
- * @param {any} arg The argument to parse to a float
994
- * @param {number} decimalPrecision The number of decimals, or the precision, the parsed return float should have
995
- * @returns {number} NaN if not possible, else the parsed float value
996
- */
997
- static ParseFloat(arg, decimalPrecision = 2) {
998
- if (!ObjectUtils.AllExist(arg, decimalPrecision) || Array.isArray(arg)) {
999
- return NaN;
1000
- }
1001
- if (!NumberUtils.IsInteger(decimalPrecision) || decimalPrecision < 0) {
1002
- decimalPrecision = 2;
1003
- // toFixed() can only handle up until 20
1004
- }
1005
- else if (decimalPrecision > 20) {
1006
- decimalPrecision = 20;
1007
- }
1008
- return parseFloat(parseFloat(arg).toFixed(decimalPrecision));
1009
- }
1010
- /**
1011
- * Returns given arg as a float number with given decimal precision, if possible. Returns NaN if parse conversion failed.
1012
- *
1013
- * @param arg The argument to parse to a float
1014
- * @returns {number} The argument as a float with its original decimal precision intact
1015
- */
1016
- static ParseFloatKeepPrecision(arg) {
1017
- const decimalPrecision = this.GetDecimalPlaces(arg);
1018
- return this.ParseFloat(arg, decimalPrecision);
1019
- }
1020
- /**
1021
- * Returns the given argument as a number. Returns given defaultValue if conversion of argument was impossible.
1022
- * @param arg
1023
- * @param {number} [defaultValue = 0]
1024
- * @returns {number}
1025
- */
1026
- static ParseNumberOrDefault(arg, defaultValue = 0) {
1027
- if (Array.isArray(arg)) {
1028
- return defaultValue;
1029
- }
1030
- if (!NumberUtils.IsNumber(arg)) {
1031
- arg = parseFloat(arg);
1032
- arg = isNaN(arg) ? defaultValue : arg;
1033
- }
1034
- return arg;
1035
- }
1036
- // Returns true iff given argument is an integer number. Returns false on non-numbers or numbers with significant decimals.
1037
- static IsInteger(arg) {
1038
- if (isNaN(arg) || Array.isArray(arg)) {
1039
- return false;
1040
- }
1041
- const argAsFloat = parseFloat(arg);
1042
- return ((argAsFloat | 0) === argAsFloat); // returns whether 'arg converted to an integer equals arg'
1043
- }
1044
- // Returns the number of decimal places of the given number. Returns 0 if no decimals whatsoever could be found on given arg.
1045
- static GetDecimalPlaces(arg, maxAnswer = 1000) {
1046
- const match = ("" + arg).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);
1047
- if (!match) {
1048
- return 0;
1049
- }
1050
- let answer = Math.max(0,
1051
- // number of digits right of decimal point.
1052
- (match[1] ? match[1].length : 0)
1053
- // adjust for scientific notation
1054
- - (match[2] ? +match[2] : 0));
1055
- if (answer > maxAnswer) {
1056
- answer = maxAnswer;
1057
- }
1058
- return answer;
1059
- }
1060
- // Parses given numberInput to a number, or returns given defaultValue if parse not possible. Allows ',' char as decimal delimiter.
1061
- static ParseNumberInputOrDefault(numberInput, defaultValue = 0) {
1062
- return NumberUtils.ParseNumberOrDefault(NumberUtils._NumberInputToNumberStr(numberInput), defaultValue);
1063
- }
1064
- // Returns whether the type of given argument is 'number'.
1065
- static IsNumber(arg) {
1066
- return typeof arg === "number" && !isNaN(arg);
1067
- }
1068
- /**
1069
- * Returns whether given arg is indeed not a number (it's NaN or it has another type than 'number')
1070
- * Our exact copy of AS Flex'es isNaN(arg) function. Always use this method for copying Flex isNaN(..) occurences into TypeScript.
1071
- * @param arg
1072
- * @returns {boolean}
1073
- * @constructor
1074
- */
1075
- static IsNaN(arg) {
1076
- return isNaN(arg) || !NumberUtils.IsNumber(arg);
1077
- }
1078
- // Our copy of CoMath.NaN. Returns number, or substitute if NumberUtils.IsNaN(number) holds true.
1079
- static NaN(number, substitute = 0) {
1080
- return NumberUtils.IsNaN(number) ? substitute : number;
1081
- }
1082
- // Returns whether the value is parasable as a number.
1083
- static IsParsableNumber(arg) {
1084
- if (Array.isArray(arg)) {
1085
- return false;
1086
- }
1087
- return !isNaN(parseFloat(arg));
1088
- }
1089
- static IsParsableNumberInput(numberInput) {
1090
- return NumberUtils.IsParsableNumber(NumberUtils._NumberInputToNumberStr(numberInput));
1091
- }
1092
- /**
1093
- * Returns whether given arg is parseable as a number, and whether the lengts of its number parse result is equal to its original length.
1094
- * I.e. this function returns FALSE with given number-parsable strings, but that have non-numeric appendices, eg '2233ff'. That arg
1095
- * IS number-parseable, but not a strict 'string number', the latter being what this method actually checks for.
1096
- */
1097
- static IsStringNumber(arg) {
1098
- if (!NumberUtils.IsParsableNumber(arg)) {
1099
- return false;
1100
- }
1101
- else {
1102
- return arg.toString().length === parseFloat(arg).toString().length;
1103
- }
1104
- }
1105
- static IsListOfNumbers(arg, separator = ",") {
1106
- const nrs = arg.split(separator);
1107
- if (nrs.length === 0) {
1108
- return false;
1109
- }
1110
- return nrs.filter(s => NumberUtils.IsStringNumber(s)).length === nrs.length;
1111
- }
1112
- // Returns given argument as a string representation of a number parse, e.g. "1" for a number parse result of arg to 1.
1113
- static ParseStringNumber(arg) {
1114
- if (!this.IsStringNumber(arg)) {
1115
- return NaN;
1116
- }
1117
- return NumberUtils.ParseFloatKeepPrecision(arg);
1118
- }
1119
- static ParseStringNumberDefault(arg, defaultValue = 0) {
1120
- return NumberUtils.NaN(NumberUtils.ParseStringNumber(arg), defaultValue);
1121
- }
1122
- /**
1123
- * Returns a random integer in range [lowerBound .. upperBound], an inclusive range. Returns NaN if not possible.
1124
- * Given bounds are truncated first, before serving as the true lower- and upper bounds for the random int.
1125
- */
1126
- static RandomInt(lowerBoundInt, upperBoundInt) {
1127
- if (!NumberUtils.IsNumber(lowerBoundInt) || !NumberUtils.IsNumber(upperBoundInt) || lowerBoundInt > upperBoundInt) {
1128
- return NaN;
1129
- }
1130
- lowerBoundInt = Math.trunc(lowerBoundInt);
1131
- upperBoundInt = Math.trunc(upperBoundInt);
1132
- if (lowerBoundInt === upperBoundInt) {
1133
- return lowerBoundInt;
1134
- }
1135
- const delta = upperBoundInt - lowerBoundInt;
1136
- return (Math.round(Math.random() * delta) + lowerBoundInt);
1137
- }
1138
- // Adds thousands comma's to given value, E.g. '1000' to '1,000'. Returns empty string if value was undefined.
1139
- static AddThousandsCommasTo(value) {
1140
- if (isNill(value)) {
1141
- return "";
1142
- }
1143
- return value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
1144
- }
1145
- /**
1146
- * Function used to check wether a given number is composed of another number, power-of-two wise.
1147
- * Example usage: NumberUtils.NumIsComposedOf(articleListObject.publication, ArticlePublication.Selector).
1148
- * This would return whether or not that articleListObject was publicated for selector or not, where articleListObject.publication
1149
- * was possibly a 'COMPOSITE that was made out of (including)' ArticlePublication.Selector.
1150
- */
1151
- static NumIsComposedOfOtherPowTwoNum(bigNrToCheck, powTwoNumItShouldBeComposedOf) {
1152
- if (!bigNrToCheck) {
1153
- return false;
1154
- }
1155
- else if (!powTwoNumItShouldBeComposedOf) {
1156
- return true;
1157
- }
1158
- else {
1159
- return ((bigNrToCheck & powTwoNumItShouldBeComposedOf) === powTwoNumItShouldBeComposedOf);
1160
- }
1161
- }
1162
- /**
1163
- * Returns given nr, or the given default number (default 0) if the nr number was undefined or otherwise not a number.
1164
- * Same as CoMath.NaN from AS code (used as its substitute in transaction logic)
1165
- * @param nr
1166
- * @param defaultNr
1167
- * @returns {number}
1168
- */
1169
- static NrOrDefault(nr, defaultNr = 0) {
1170
- if (notNill(nr) && NumberUtils.IsNumber(nr)) {
1171
- return nr;
1172
- }
1173
- else {
1174
- return defaultNr;
1175
- }
1176
- }
1177
- /**
1178
- * Returns whether given nrToCheck is within the given precision and scale limits. Precision and scale, here, are Oracle DB terms.
1179
- * This function can thus be used to check whether the given number is safe to send to the 'database' beforehand, if we know the
1180
- * precision and scale of the number in the db declaration.
1181
- *
1182
- * I.e. A number declared in the Oracle DB as number(5, 2) has a precision of 5 and a scale of 2.
1183
- *
1184
- * @param {number} nrToCheck
1185
- * @param {number} precision The number of significant digits, including possibly negative scale. E.g. 3 in '123' and 5 in '51.123'
1186
- * @param {number} [scale = 0] The number of significant digits AFTER the decimal point. E.g. 1 in 5432.1 and 3 in 54000.003
1187
- * @returns {CheckPrecisionAndScaleResult} Whether given nrToCheck is ok for given precision and scale, and if not, the
1188
- * nearest number that IS ok for those constraints.
1189
- */
1190
- static CheckPrecisionAndScale(nrToCheck, precision, scale = 0) {
1191
- // let's say any undefined number is checked OK, and all numbers are checked OK for an undefined precision
1192
- if (!ObjectUtils.AllExist(nrToCheck, precision, scale)) {
1193
- return { isOk: true, nearestOkNr: NaN };
1194
- }
1195
- // no number can have 0 or less than 0 significant digits, in our universe
1196
- if (precision < 1 || precision - scale < 1) {
1197
- return { isOk: false, nearestOkNr: NaN };
1198
- }
1199
- // begin check
1200
- const isNegative = (nrToCheck < 0);
1201
- const nrParts = nrToCheck.toString().split(".");
1202
- // remove minus sign if negative
1203
- if (isNegative) {
1204
- nrParts[0] = nrParts[0].slice(1);
1205
- }
1206
- const numCountBeforeDot = nrParts[0].length;
1207
- const allowedNumCountBeforeDot = precision - scale;
1208
- if (numCountBeforeDot <= allowedNumCountBeforeDot) {
1209
- return { isOk: true, nearestOkNr: nrToCheck };
1210
- }
1211
- else {
1212
- // cut a part from the "before decimal number" so that the number is not too big anymore
1213
- const numCountToRemove = numCountBeforeDot - allowedNumCountBeforeDot;
1214
- // remove the right-most numbers before the decimal dot
1215
- nrParts[0] = nrParts[0].slice(0, -1 * numCountToRemove);
1216
- // add minus sign again if it was negative
1217
- if (isNegative) {
1218
- nrParts[0] = "-" + nrParts[0];
1219
- }
1220
- // build and return composite number again
1221
- let nearestOkNr;
1222
- if (nrParts[1]) {
1223
- nearestOkNr = Number(nrParts[0] + "." + nrParts[1]);
1224
- }
1225
- else {
1226
- nearestOkNr = Number(nrParts[0]);
1227
- }
1228
- return { isOk: false, nearestOkNr: nearestOkNr };
1229
- }
1230
- }
1231
- /**
1232
- * Returns whether given x is OK within the given min, max and step boundaries, where it should hold that nrToCheck = min + N * step,
1233
- * with N integer or 0.
1234
- * @param {number} nrToCheck Number to check whether it's within the given bounds
1235
- * @param min Inclusive
1236
- * @param max Inclusive
1237
- * @param stepSize
1238
- * @returns {CheckWithinSteppedBounds} Returns remainder of undefined when nrToCheck was OUTSIDE [min, max], else full result object.
1239
- */
1240
- static CheckWithinSteppedBounds(nrToCheck, min, max, stepSize = 1) {
1241
- if (nrToCheck < min || nrToCheck > max) {
1242
- return { isOk: false, remainder: undefined };
1243
- }
1244
- // we're in [min, max], but still check if nrToCheck = min + N * step holds (for N integer or 0)
1245
- let remainder = (nrToCheck - min) % stepSize;
1246
- // correct float for largest precision amongst input numbers
1247
- remainder = NumberUtils.ParseFloat(remainder, NumberUtils._GetLargestDecimalPrecisionOf(nrToCheck, min, stepSize));
1248
- return { isOk: (remainder === 0), remainder: remainder };
1249
- }
1250
- /**
1251
- * Finds the number closest to the originalNumber, that adheres to the given bounds. That is, for which it holds that
1252
- * nr = min + N * step with N integer or 0.
1253
- * @param {number} originalNr Find closest answer to this number
1254
- * @param min Inclusive
1255
- * @param max Inclusive
1256
- * @param stepSize
1257
- * @returns {boolean} The closest OK number for bounds.
1258
- */
1259
- static GetNearestNumberWithinSteppedBounds(originalNr, min, max, stepSize = 1) {
1260
- if (originalNr < min) {
1261
- return min;
1262
- }
1263
- else if (originalNr > max) {
1264
- return NumberUtils.GetTrueSteppedBoundsMax(min, max, stepSize);
1265
- }
1266
- const boundsCheck = NumberUtils.CheckWithinSteppedBounds(originalNr, min, max, stepSize);
1267
- if (boundsCheck.isOk) {
1268
- return originalNr;
1269
- }
1270
- let answer;
1271
- const remainder = boundsCheck.remainder;
1272
- if (remainder) {
1273
- // round up or down?
1274
- if ((remainder / stepSize) < 0.5) {
1275
- // round down, but not below min
1276
- answer = (originalNr - remainder >= min ? originalNr - remainder : min);
1277
- }
1278
- else {
1279
- // round up, but not above max
1280
- answer = (originalNr + stepSize - remainder <= max ? originalNr + stepSize - remainder :
1281
- NumberUtils.GetTrueSteppedBoundsMax(min, max, stepSize));
1282
- }
1283
- }
1284
- else {
1285
- // is this real life, why wasn't our stepped bounds check OK?
1286
- answer = originalNr;
1287
- }
1288
- // 'correct' float errors
1289
- answer = NumberUtils.ParseFloat(answer, NumberUtils._GetLargestDecimalPrecisionOf(originalNr, min, max, stepSize));
1290
- return answer;
1291
- }
1292
- /**
1293
- * Returns the true maximum allowed value for the given "stepped bounds": min, stepSize and max, for which it holds that each allowed
1294
- * value Y = min + stepSize * N, for any INTEGER or 0 N where it also holds, of course, that Y <= max.
1295
- * @param min
1296
- * @param max
1297
- * @param stepSize
1298
- */
1299
- static GetTrueSteppedBoundsMax(min, max, stepSize = 1) {
1300
- // solve max integer X in formula min + X * step <= max, and return min + X * stepSize for that X
1301
- const maxSteps = Math.floor((max - min) / stepSize);
1302
- // 'correct' float errors
1303
- return NumberUtils.ParseFloat(min + maxSteps * stepSize, NumberUtils._GetLargestDecimalPrecisionOf(min, min, max));
1304
- }
1305
- // Returns the nearest number, relative to the given originalNr, that is within the given [min, max] inclusive bounds.
1306
- static GetNearestNumberWithinBounds(originalNr, min, max) {
1307
- let answer = originalNr;
1308
- if (originalNr < min) {
1309
- answer = min;
1310
- }
1311
- else if (originalNr > max) {
1312
- answer = max;
1313
- }
1314
- return answer;
1315
- }
1316
- // Returns the string representation of given number. If it's not a number, returns the empty string.
1317
- static ToString(nr) {
1318
- if (!NumberUtils.IsNaN(nr)) {
1319
- return "" + nr;
1320
- }
1321
- else {
1322
- return "";
1323
- }
1324
- }
1325
- static DecimalsToStepIncrement(numberOfDecimals) {
1326
- return Math.pow(10, -1 * numberOfDecimals);
1327
- }
1328
- static Round(value, decimals) {
1329
- const factor = Math.pow(10, decimals);
1330
- return Math.round(value * factor) / factor;
1331
- }
1332
- // @returns The inclusive max value
1333
- static PrecisionScaleToMaxValue(precision, scale) {
1334
- const oneStep = this.DecimalsToStepIncrement(scale);
1335
- const maxExclusive = Math.pow(10, precision - scale);
1336
- return maxExclusive - oneStep;
1337
- }
1338
- // @returns the difference between given 2 numbers
1339
- static DifferenceBetweenNumbers(numberA, numberB) {
1340
- return Math.abs(numberA - numberB);
1341
- }
1342
- static _GetLargestDecimalPrecisionOf(...args) {
1343
- const result = ArrayUtils.GetMaxCalculatedValue(args, (arg) => {
1344
- return NumberUtils.GetDecimalPlaces(arg);
1345
- });
1346
- return result;
1347
- }
1348
- // Returns given number input as a number that's useable by Javascript. Allows for incoming ',' decimal delimiter.
1349
- static _NumberInputToNumberStr(numberInput) {
1350
- return (numberInput + "").replace(",", ".");
1351
- }
1352
- }
1353
-
1354
- class ArrayUtils {
1355
- /**
1356
- * Returns whether at least one element in given array could be found by given finder function.
1357
- *
1358
- * @param {T[]} array
1359
- * @param {(element: T) => boolean} finder A finder function that takes an element of the array and returns a boolean that represents
1360
- * the 'found status' for that element; whether it should have been found or not.
1361
- */
1362
- static ContainsAnElementFoundBy(array, finder) {
1363
- if (!array || !finder) {
1364
- return false;
1365
- }
1366
- return notNill(this.Find(array, finder));
1367
- }
1368
- /**
1369
- * Cross-browser Array.find() function. Returns the first item in given array for which the foundBy function returns true. Returns
1370
- * undefined when none was found.
1371
- *
1372
- * Example usage:
1373
- * const foundItem: BusinessObject = ArrayUtils.Find<BusinessObject>(modelArray, (modelItem: BusinessObject) => <br>
1374
- * (return modelItem.getId() === '1')
1375
- * * });
1376
- *
1377
- * @param array The array with items to search in.
1378
- * @param foundBy The finder function applied on each items of the array, when that returns true, the item is considered found.
1379
- */
1380
- static Find(array, foundBy) {
1381
- if (!array || !foundBy) {
1382
- return undefined;
1383
- }
1384
- for (let i = 0, len = array.length; i < len; i++) {
1385
- const itemCur = array[i];
1386
- if (foundBy(itemCur)) {
1387
- return itemCur;
1388
- }
1389
- }
1390
- return undefined;
1391
- }
1392
- // @returns empty array when nothing found, otherwise array with found items
1393
- static FindAll(array, foundBy) {
1394
- const answer = [];
1395
- if (!array || !foundBy) {
1396
- return answer;
1397
- }
1398
- for (let i = 0, len = array.length; i < len; i++) {
1399
- const itemCur = array[i];
1400
- if (foundBy(itemCur)) {
1401
- answer.push(itemCur);
1402
- }
1403
- }
1404
- return answer;
1405
- }
1406
- // returns a simple clone of given array, using array.slice(0)
1407
- static CloneArray(array) {
1408
- let answer = [];
1409
- if (array) {
1410
- answer = array.slice(0);
1411
- }
1412
- return answer;
1413
- }
1414
- /**
1415
- * Returns a 'semi deep clone' of given array. Its first-level members are object-shallow-cloned (optionally with a strongly typed constructor),
1416
- * or just as plain object (see param arrayItemsClass).
1417
- * @param array
1418
- * @param arrayItemsClass If provided, the cloned array's first-level items will be strongly typed to / constructed as this class. Otherwise
1419
- * it'll be a plain object.
1420
- * @param deepClone Set to true if array items contain FUNCTIONS that need to be cloned..
1421
- * @returns {Array} semi-deep clone of given array
1422
- */
1423
- static CloneArrayAndItsItems(array, arrayItemsClass, deepClone = false) {
1424
- const cloneArray = [];
1425
- if (array) {
1426
- for (let i = 0, len = array.length; i < len; i++) {
1427
- if (deepClone) {
1428
- cloneArray.push(ObjectUtils.GetDeepClone(array[i]));
1429
- }
1430
- else {
1431
- cloneArray.push(ObjectUtils.GetShallowClone(array[i], arrayItemsClass));
1432
- }
1433
- }
1434
- }
1435
- else {
1436
- return [];
1437
- }
1438
- return cloneArray;
1439
- }
1440
- /**
1441
- * Removes element at given index from given array. Doesn't just set it to null like JavaScripts standard 'delete' does, but really
1442
- * removes the element using splice().
1443
- *
1444
- * @param {number} index
1445
- * @param {any[]} array in-out
1446
- * @returns {boolean} True if and only if the element on given index is succesfully removed from given array.
1447
- */
1448
- static RemoveElementAtIndex(index, array) {
1449
- if (NumberUtils.IsNaN(index) || index < 0 || !Array.isArray(array) || array.length === 0) {
1450
- return false;
1451
- }
1452
- if (index in array) {
1453
- array.splice(index, 1);
1454
- return true;
1455
- }
1456
- else {
1457
- return false;
1458
- }
1459
- }
1460
- /**
1461
- * Removes given element from given array. Doesn't just set it to null like JavaScripts standard 'delete' does, but really removes the
1462
- * element using splice(). Also works on associative arrays.
1463
- *
1464
- * @param {T} element The element to remove.
1465
- * @param {T[]} array The array to remove the element from.
1466
- * @returns {boolean} True iff given element was truly successfully removed from given array.
1467
- */
1468
- static RemoveElement(element, array) {
1469
- if (!Array.isArray(array)) {
1470
- return false;
1471
- }
1472
- const index = array.indexOf(element);
1473
- return ArrayUtils.RemoveElementAtIndex(index, array);
1474
- }
1475
- // Checks if given array is defined, and is an array, and has length > 0, and, optionally checks that the first element is of type given clazz.
1476
- static IsArrayWithElements(arrayToCheck, classItemsMustBeInstanceOf) {
1477
- if (isNill(arrayToCheck)) {
1478
- return false;
1479
- }
1480
- if (Array.isArray(arrayToCheck) && arrayToCheck.length > 0) {
1481
- if (classItemsMustBeInstanceOf) {
1482
- return arrayToCheck[0] instanceof classItemsMustBeInstanceOf;
1483
- }
1484
- else {
1485
- return true;
1486
- }
1487
- }
1488
- else {
1489
- return false;
1490
- }
1491
- }
1492
- // Removes all elements from given array for which given filter function holds true. Returns true if at least one removed, else false.
1493
- static RemoveElementsByFilter(array, filterFunction) {
1494
- if (!ArrayUtils.IsArrayWithElements(array) || !filterFunction) {
1495
- return false;
1496
- }
1497
- let atLeastOneRemoved = false;
1498
- const len = array.length;
1499
- for (let i = len - 1; i >= 0; i--) {
1500
- const item = array[i];
1501
- if (filterFunction.call(this, item) === true) {
1502
- array.splice(i, 1);
1503
- atLeastOneRemoved = true;
1504
- }
1505
- }
1506
- return atLeastOneRemoved;
1507
- }
1508
- static MoveElement(element, toIndex, array) {
1509
- if (!Array.isArray(array) || isNill(toIndex)) {
1510
- return false;
1511
- }
1512
- const fromIndex = array.indexOf(element);
1513
- const toIndexCorrected = NumberUtils.GetNearestNumberWithinBounds(toIndex, 0, array.length - 1);
1514
- if (fromIndex === -1 || array[toIndexCorrected] === element) {
1515
- // element did not exist in given array, or already existed on given toIndex
1516
- return false;
1517
- }
1518
- array.splice(toIndexCorrected, 0, array.splice(fromIndex, 1)[0]);
1519
- return true;
1520
- }
1521
- // PRE: elements exists in given array. POST: given elementToPlace has a lower index than given afterThisElement. Array is in-out manipulated.
1522
- static PlaceElementAfterOther(array, elementToPlace, afterThisElement) {
1523
- if (array) {
1524
- const afterThisElIdx = array.indexOf(afterThisElement);
1525
- const elToPlaceIdx = array.indexOf(elementToPlace);
1526
- if (afterThisElIdx >= elToPlaceIdx) {
1527
- ArrayUtils.MoveElement(elementToPlace, afterThisElIdx + 1, array);
1528
- }
1529
- }
1530
- }
1531
- /**
1532
- * Returns max value from all resulting values from applying given itemValueFunction to all items of given array.
1533
- * @param array
1534
- * @param itemValueFunction The function applied to each array item that gives it a numerical value. The max num val found is returned.
1535
- */
1536
- static GetMaxCalculatedValue(array, itemValueFunction) {
1537
- if (!array || !itemValueFunction) {
1538
- return NaN;
1539
- }
1540
- let max = undefined;
1541
- const len = array.length;
1542
- for (let i = 0; i < len; i++) {
1543
- const valueCur = itemValueFunction.call(this);
1544
- if (valueCur > max) {
1545
- max = valueCur;
1546
- }
1547
- }
1548
- return max;
1549
- }
1550
- }
1551
-
1552
- /**
1553
- * This type represents the concept of a business object ID type. ID's of business objects can be a primary number, a simple string or a
1554
- * object for a composite key.
1555
- *
1556
- * Simply to prevent type declarations of 'number | string | Object' for BO ID data all over the application.
1557
- */
1558
- class BusinessObject {
1559
- constructor() {
1560
- }
1561
- // Overridable. Returns the ID of the model. Concrete model classes often override this method to provide their specific ID getter.
1562
- getId() {
1563
- return this.id;
1564
- }
1565
- setOwnMappedPropsFromRawData(rawData = {}) {
1566
- if (!rawData) {
1567
- return;
1568
- }
1569
- Object.keys(this).forEach((key) => {
1570
- // check if property needs to be mapped
1571
- if (MapPropertyDecorator.IsMapProperty(this, key)) {
1572
- const mapKeys = MapPropertyDecorator.GetMapProperty(this, key).split(",");
1573
- const len = mapKeys.length;
1574
- for (let i = 0; i < len; i++) {
1575
- // eslint-disable-next-line
1576
- const mapKey = mapKeys[i].trim();
1577
- const objProp = rawData[mapKey];
1578
- let decorated = false;
1579
- if (rawData.hasOwnProperty(mapKey)) {
1580
- if (BooleanTextDecorator$1.IsBooleanTextField(this, key)) {
1581
- this[key] = BooleanTextDecorator$1.GetLogicalBooleanValue(objProp);
1582
- decorated = true;
1583
- }
1584
- if (JsonFieldFieldDecorator.IsJsonField(this, key)) {
1585
- this[key] = JsonFieldFieldDecorator.StringAsJson(objProp);
1586
- decorated = true;
1587
- }
1588
- if (ComplexArrayDecorator$1.IsComplexArray(this, key)) {
1589
- const arrayClass = ComplexArrayDecorator$1.GetComplexArrayType(this, key);
1590
- // eslint-disable-next-line
1591
- const origArray = this[key];
1592
- // eslint-disable-next-line
1593
- const newArray = [];
1594
- // eslint-disable-next-line @typescript-eslint/prefer-for-of
1595
- for (let j = 0; j < origArray.length; j++) {
1596
- // eslint-disable-next-line
1597
- const item = new arrayClass(origArray[j]);
1598
- newArray.push(item);
1599
- }
1600
- this[key] = newArray;
1601
- }
1602
- else {
1603
- if (!decorated) {
1604
- this[key] = objProp;
1605
- }
1606
- }
1607
- break;
1608
- }
1609
- }
1610
- }
1611
- else {
1612
- if (rawData.hasOwnProperty(key)) {
1613
- const objProp = rawData[key];
1614
- if (BooleanTextDecorator$1.IsBooleanTextField(this, key)) {
1615
- this[key] = BooleanTextDecorator$1.GetLogicalBooleanValue(objProp);
1616
- }
1617
- else if (JsonFieldFieldDecorator.IsJsonField(this, key)) {
1618
- this[key] = JsonFieldFieldDecorator.StringAsJson(objProp);
1619
- }
1620
- else {
1621
- this[key] = objProp;
1622
- }
1623
- }
1624
- }
1625
- });
1626
- }
1627
- }
1628
-
1629
- // Factory service creates businessobjects, using their decorators in the process.
1630
- class BusinessObjectFactory {
1631
- constructor() {
1632
- }
1633
- /**
1634
- * Creates and returns a new business data object instance of given class, with all given data properties applied to it in a
1635
- * complex-aware style. That is, all properties on given class that are decorated with @ComplexField(..) or @ComplexArray(..) decorators
1636
- * become strongly typed business objects, with methods that are usable and such.
1637
- *
1638
- * @param modelClass
1639
- * @param {Object} rawData The object with all (possibly raw/flat/not alive) data to be applied to the created model object
1640
- */
1641
- makeWithRawBackendData(modelClass, rawData) {
1642
- if (!modelClass) {
1643
- return undefined;
1644
- }
1645
- if (typeof modelClass !== typeof BusinessObject) {
1646
- return undefined;
1647
- }
1648
- const model = new modelClass();
1649
- this._copyAllPropertiesDecoratorProcessedFrom(rawData, model);
1650
- return model;
1651
- }
1652
- // see makeWithRawBackendData, this is a loop-wrapper around that method
1653
- makeBOArrayFromRawBackendDataArray(modelClass, arrayOfRawDatas) {
1654
- if (!modelClass) {
1655
- return undefined;
1656
- }
1657
- const trueClientBos = [];
1658
- if (arrayOfRawDatas) {
1659
- for (let i = 0, len = arrayOfRawDatas.length; i < len; i++) {
1660
- trueClientBos.push(this.makeWithRawBackendData(modelClass, arrayOfRawDatas[i]));
1661
- }
1662
- }
1663
- return trueClientBos;
1664
- }
1665
- instantiateNewBo(modelClass) {
1666
- return this.makeWithRawBackendData(modelClass, {});
1667
- }
1668
- /**
1669
- * Applies all properties of given 'source' object to the given 'destination' businessobject, if destination has that property.
1670
- * Works with the @ComplexField(), @ComplexArray, @BooleanText, @CoInject and @DateField annotations of given destination model.
1671
- *
1672
- * @param sourceData Raw data to copy to destination model
1673
- * @param {BusinessObject} destinationModel InOut: The annotated businessobject to apply source properties to
1674
- */
1675
- _copyAllPropertiesDecoratorProcessedFrom(sourceData, destinationModel) {
1676
- if (!sourceData || !destinationModel) {
1677
- return;
1678
- }
1679
- // process all source data into destinationModel
1680
- for (const srcPropKey in sourceData) {
1681
- if (!sourceData.hasOwnProperty(srcPropKey)) {
1682
- continue;
1683
- }
1684
- const srcPropVal = sourceData[srcPropKey];
1685
- if (ComplexFieldDecorator.IsComplexField(destinationModel, srcPropKey)) {
1686
- const classOfField = ComplexFieldDecorator.GetComplexFieldType(destinationModel, srcPropKey);
1687
- destinationModel[srcPropKey] = this.makeWithRawBackendData(classOfField, srcPropVal);
1688
- }
1689
- else if (ComplexArrayDecorator.IsComplexArray(destinationModel, srcPropKey)) {
1690
- const sourceArray = srcPropVal;
1691
- if (!sourceArray) {
1692
- continue;
1693
- }
1694
- const classOfArrayItems = ComplexArrayDecorator.GetComplexArrayType(destinationModel, srcPropKey);
1695
- const tempArray = [];
1696
- for (let i = 0, len = sourceArray.length; i < len; i++) {
1697
- tempArray.push(this.makeWithRawBackendData(classOfArrayItems, sourceArray[i]));
1698
- }
1699
- destinationModel[srcPropKey] = tempArray;
1700
- }
1701
- else if (BooleanTextDecorator.IsBooleanTextField(destinationModel, srcPropKey)) {
1702
- // logical 'true' and 'false' also allowed as incoming values for @BooleanText() properties: then just copy their value
1703
- if (typeof srcPropVal === "boolean") {
1704
- destinationModel[srcPropKey] = srcPropVal;
1705
- // here, it should be a 'J' or 'N' (or 'T' or 'F'): assign the associated boolean value
1706
- }
1707
- else {
1708
- destinationModel[srcPropKey] = BooleanTextDecorator.GetLogicalBooleanValue(srcPropVal);
1709
- }
1710
- }
1711
- else if (DateFieldFieldDecorator.IsDateField(destinationModel, srcPropKey)) {
1712
- destinationModel[srcPropKey] = DateFieldFieldDecorator.StringAsDate(srcPropVal);
1713
- }
1714
- else if (StringNumberDecorator.IsStringNumber(destinationModel, srcPropKey)) {
1715
- destinationModel[srcPropKey] = StringNumberDecorator.StringAsNumber(srcPropVal);
1716
- }
1717
- // non-decorated prop
1718
- else {
1719
- if (isNill(srcPropVal)) {
1720
- destinationModel[srcPropKey] = undefined;
1721
- }
1722
- else if (Array.isArray(srcPropVal)) {
1723
- destinationModel[srcPropKey] = ArrayUtils.CloneArray(srcPropVal);
1724
- }
1725
- else if (typeof srcPropVal === "object") {
1726
- if (srcPropVal instanceof Map) { //just copy the value in case of maps
1727
- destinationModel[srcPropKey] = srcPropVal;
1728
- }
1729
- else {
1730
- destinationModel[srcPropKey] = Object.assign({}, srcPropVal);
1731
- }
1732
- }
1733
- else {
1734
- destinationModel[srcPropKey] = srcPropVal;
1735
- }
1736
- }
1737
- }
1738
- }
1739
- }
365
+ firstSignatureTitle: [{ type: Input }],
366
+ showSecondSignature: [{ type: Input }],
367
+ secondSignatureTitle: [{ type: Input }],
368
+ saveButtonLabel: [{ type: Input }],
369
+ clearButtonLabel: [{ type: Input }],
370
+ saveFirstSignature: [{ type: Output }],
371
+ saveSecondSignature: [{ type: Output }],
372
+ showClass: [{ type: HostBinding, args: ["class.co-signatures",] }]
373
+ };
374
+
375
+ class DocsignModule {
376
+ }
377
+ DocsignModule.decorators = [
378
+ { type: NgModule, args: [{
379
+ imports: [
380
+ CommonModule
381
+ ],
382
+ declarations: [
383
+ DocsignComponent,
384
+ SignatureComponent,
385
+ SignaturesComponent
386
+ ],
387
+ exports: [
388
+ DocsignComponent
389
+ ]
390
+ },] }
391
+ ];
1740
392
 
1741
393
  var LanguageCode;
1742
394
  (function (LanguageCode) {
@@ -1965,12 +617,13 @@ class SharedConnectorService {
1965
617
  return __awaiter(this, void 0, void 0, function* () {
1966
618
  this.articleConnector = new Articles(this._optionsService.options);
1967
619
  this.sharedConnector = new Sharedapi(this._optionsService.options);
620
+ this.mainConnector = new MainApi(this._optionsService.options);
1968
621
  });
1969
622
  }
1970
- getAllPrinters(showAll = true) {
623
+ getAllPrinters() {
1971
624
  return __awaiter(this, void 0, void 0, function* () {
1972
625
  return new Promise((resolve, reject) => {
1973
- return this.sharedConnector.listAllPrinters(showAll).then((result) => {
626
+ return this.mainConnector.listAllPrinters().then((result) => {
1974
627
  if (result.validationResult && result.validationResult.success) {
1975
628
  if (result.resultObject) {
1976
629
  resolve(this._boFactory.makeBOArrayFromRawBackendDataArray(Printer, result.resultObject));
@@ -1983,29 +636,13 @@ class SharedConnectorService {
1983
636
  });
1984
637
  });
1985
638
  }
1986
- getPrintStockStickers(request) {
1987
- return __awaiter(this, void 0, void 0, function* () {
1988
- return new Promise((resolve, reject) => {
1989
- return this.sharedConnector.getPrintStockStickers(request).then((result) => {
1990
- if (result.validationResult && result.validationResult.success) {
1991
- if (result.resultObject) {
1992
- resolve(this._boFactory.makeWithRawBackendData(PrintStockStickers, result.resultObject));
1993
- }
1994
- }
1995
- else {
1996
- reject(result.validationMessagesAsString);
1997
- }
1998
- });
1999
- });
2000
- });
2001
- }
2002
- getPrintPriceStickers(request) {
639
+ getSendMethods() {
2003
640
  return __awaiter(this, void 0, void 0, function* () {
2004
641
  return new Promise((resolve, reject) => {
2005
- return this.sharedConnector.printPriceStickers(request).then((result) => {
642
+ return this.mainConnector.getSendMethods().then((result) => {
2006
643
  if (result.validationResult && result.validationResult.success) {
2007
- if (result.resultObject) {
2008
- resolve(this._boFactory.makeWithRawBackendData(PrintPriceStickers, result.resultObject));
644
+ if (result.resultObject && result.resultObject.result) {
645
+ resolve(this._boFactory.makeBOArrayFromRawBackendDataArray(SendMethod$1, result.resultObject.result));
2009
646
  }
2010
647
  }
2011
648
  else {
@@ -2015,12 +652,25 @@ class SharedConnectorService {
2015
652
  });
2016
653
  });
2017
654
  }
2018
- // public async getStockStickerPrintLayouts(stockStickersPrintLayouts: StockStickersPrintLayouts): Promise<StockStickersPrintLayouts[]> {
655
+ // public async getPrintStockStickers(request: PrintStockStickers): Promise<PrintStockStickers> {
2019
656
  // return new Promise((resolve: Function, reject: Function) => {
2020
- // return this.sharedConnector.getStockStickerPrintLayouts(stockStickersPrintLayouts).then((result: DataServiceResponse) => {
657
+ // return this.sharedConnector.getPrintStockStickers(request).then((result: DataServiceResponseData) => {
2021
658
  // if (result.validationResult && result.validationResult.success) {
2022
659
  // if (result.resultObject) {
2023
- // resolve(this._boFactory.makeWithRawBackendData(stockStickersPrintLayouts, result.resultObject));
660
+ // resolve(this._boFactory.makeWithRawBackendData(PrintStockStickers, result.resultObject));
661
+ // }
662
+ // } else {
663
+ // reject(result.validationMessagesAsString);
664
+ // }
665
+ // })
666
+ // })
667
+ // }
668
+ // public async getPrintPriceStickers(request: PrintPriceStickers): Promise<PrintPriceStickers> {
669
+ // return new Promise((resolve: Function, reject: Function) => {
670
+ // return this.sharedConnector.printPriceStickers(request).then((result: DataServiceResponseData) => {
671
+ // if (result.validationResult && result.validationResult.success) {
672
+ // if (result.resultObject) {
673
+ // resolve(this._boFactory.makeWithRawBackendData(PrintPriceStickers, result.resultObject));
2024
674
  // }
2025
675
  // } else {
2026
676
  // reject(result.validationMessagesAsString);
@@ -2028,21 +678,6 @@ class SharedConnectorService {
2028
678
  // })
2029
679
  // })
2030
680
  // }
2031
- getArticleFullObject(goodId) {
2032
- return __awaiter(this, void 0, void 0, function* () {
2033
- return new Promise((resolve, reject) => {
2034
- return this.articleConnector.getArticleFullObject(goodId).then((result) => {
2035
- // if (result.validationResult && result.validationResult.success) {
2036
- // if (result.resultObject) {
2037
- // resolve(this._boFactory.makeWithRawBackendData(ArticleExtended, result.resultObject));
2038
- // }
2039
- // } else {
2040
- // reject(result.validationMessagesAsString);
2041
- // }
2042
- });
2043
- });
2044
- });
2045
- }
2046
681
  getStockHistory(request) {
2047
682
  return __awaiter(this, void 0, void 0, function* () {
2048
683
  return new Promise((resolve, reject) => {
@@ -2107,54 +742,45 @@ class SharedConnectorService {
2107
742
  });
2108
743
  });
2109
744
  }
2110
- getOrderConfirmationDefaultSendMethod(relationId) {
2111
- return __awaiter(this, void 0, void 0, function* () {
2112
- return new Promise((resolve, reject) => {
2113
- return this.sharedConnector.getOrderConfirmationDefaultSendMethod(relationId).then((result) => {
2114
- if (result.validationResult && result.validationResult.success) {
2115
- if (result.resultObject) {
2116
- resolve(result.resultObject);
2117
- }
2118
- }
2119
- else {
2120
- reject(result.validationMessagesAsString);
2121
- }
2122
- });
2123
- });
2124
- });
2125
- }
2126
- getDefaultEmailAddressListForOrderConfirmation(transactionUUID) {
2127
- return __awaiter(this, void 0, void 0, function* () {
2128
- return new Promise((resolve, reject) => {
2129
- return this.sharedConnector.getDefaultEmailAddressListForOrderConfirmation(transactionUUID).then((result) => {
2130
- if (result.validationResult && result.validationResult.success) {
2131
- if (result.resultObject) {
2132
- resolve(result.resultObject);
2133
- }
2134
- }
2135
- else {
2136
- reject(result.validationMessagesAsString);
2137
- }
2138
- });
2139
- });
2140
- });
2141
- }
2142
- getPurchaseOrderEmailLayouts(transactionUUID) {
2143
- return __awaiter(this, void 0, void 0, function* () {
2144
- return new Promise((resolve, reject) => {
2145
- return this.sharedConnector.getPurchaseOrderEmailLayouts(transactionUUID).then((result) => {
2146
- if (result.validationResult && result.validationResult.success) {
2147
- if (result.resultObject) {
2148
- resolve(result.resultObject);
2149
- }
2150
- }
2151
- else {
2152
- reject(result.validationMessagesAsString);
2153
- }
2154
- });
2155
- });
2156
- });
2157
- }
745
+ // public async getOrderConfirmationDefaultSendMethod(relationId: number): Promise<number> {
746
+ // return new Promise((resolve: Function, reject: Function) => {
747
+ // return this.sharedConnector.getOrderConfirmationDefaultSendMethod(relationId).then((result: DataServiceResponseData) => {
748
+ // if (result.validationResult && result.validationResult.success) {
749
+ // if (result.resultObject) {
750
+ // resolve (result.resultObject);
751
+ // }
752
+ // } else {
753
+ // reject(result.validationMessagesAsString);
754
+ // }
755
+ // });
756
+ // });
757
+ // }
758
+ // public async getDefaultEmailAddressListForOrderConfirmation(transactionUUID: string): Promise<string[]> {
759
+ // return new Promise((resolve: Function, reject: Function) => {
760
+ // return this.sharedConnector.getDefaultEmailAddressListForOrderConfirmation(transactionUUID).then((result: DataServiceResponseData) => {
761
+ // if (result.validationResult && result.validationResult.success) {
762
+ // if (result.resultObject) {
763
+ // resolve (result.resultObject);
764
+ // }
765
+ // } else {
766
+ // reject(result.validationMessagesAsString);
767
+ // }
768
+ // });
769
+ // });
770
+ // }
771
+ // public async getPurchaseOrderEmailLayouts(transactionUUID: string): Promise<StockStickersEmailLayouts[]> {
772
+ // return new Promise((resolve: Function, reject: Function) => {
773
+ // return this.sharedConnector.getPurchaseOrderEmailLayouts(transactionUUID).then((result: DataServiceResponseData) => {
774
+ // if (result.validationResult && result.validationResult.success) {
775
+ // if (result.resultObject) {
776
+ // resolve (result.resultObject);
777
+ // }
778
+ // } else {
779
+ // reject(result.validationMessagesAsString);
780
+ // }
781
+ // });
782
+ // });
783
+ // }
2158
784
  getArticleDetails(data) {
2159
785
  return __awaiter(this, void 0, void 0, function* () {
2160
786
  return new Promise((resolve, reject) => {
@@ -2217,22 +843,19 @@ class SharedConnectorService {
2217
843
  });
2218
844
  });
2219
845
  }
2220
- getStockStickerTemplates(data) {
2221
- return __awaiter(this, void 0, void 0, function* () {
2222
- return new Promise((resolve, reject) => {
2223
- return this.sharedConnector.getStockStickerPrintLayouts(data).then((result) => {
2224
- if (result.validationResult && result.validationResult.success) {
2225
- if (result.resultObject) {
2226
- resolve(this._boFactory.makeBOArrayFromRawBackendDataArray(StockStickersPrintLayouts, result.resultObject));
2227
- }
2228
- }
2229
- else {
2230
- reject(result.validationMessagesAsString);
2231
- }
2232
- });
2233
- });
2234
- });
2235
- }
846
+ // public async getStockStickerTemplates(data: StockStickersPrintLayouts): Promise<StockStickersPrintLayouts[]> {
847
+ // return new Promise((resolve: Function, reject: Function) => {
848
+ // return this.mainConnector.getStockStickerPrintLayouts(data).then((result: DataServiceResponseData) => {
849
+ // if (result.validationResult && result.validationResult.success) {
850
+ // if (result.resultObject) {
851
+ // resolve(this._boFactory.makeBOArrayFromRawBackendDataArray(StockStickersPrintLayouts, result.resultObject));
852
+ // }
853
+ // } else {
854
+ // reject(result.validationMessagesAsString);
855
+ // }
856
+ // });
857
+ // });
858
+ // }
2236
859
  getArticleTransaction(data) {
2237
860
  return __awaiter(this, void 0, void 0, function* () {
2238
861
  return new Promise((resolve, reject) => {
@@ -2267,21 +890,12 @@ class StockService {
2267
890
  constructor(_sharedService) {
2268
891
  this._sharedService = _sharedService;
2269
892
  }
2270
- getPrintStockStickers(data) {
2271
- return __awaiter(this, void 0, void 0, function* () {
2272
- yield this._sharedService.getPrintStockStickers(data);
2273
- });
2274
- }
2275
- getPrintPriceStickers(data) {
2276
- return __awaiter(this, void 0, void 0, function* () {
2277
- yield this._sharedService.getPrintPriceStickers(data);
2278
- });
2279
- }
2280
- getAllPrinters(showAll = true) {
2281
- return __awaiter(this, void 0, void 0, function* () {
2282
- return yield this._sharedService.getAllPrinters(showAll);
2283
- });
2284
- }
893
+ // public async getPrintStockStickers(data: PrintStockStickers): Promise<void> {
894
+ // await this._sharedService.getPrintStockStickers(data);
895
+ // }
896
+ // public async getPrintPriceStickers(data: PrintPriceStickers): Promise<void> {
897
+ // await this._sharedService.getPrintPriceStickers(data);
898
+ // }
2285
899
  getStockHistory(data) {
2286
900
  return __awaiter(this, void 0, void 0, function* () {
2287
901
  return yield this._sharedService.getStockHistory(data);
@@ -2310,11 +924,9 @@ class StockService {
2310
924
  return yield this._sharedService.getStockStatus();
2311
925
  });
2312
926
  }
2313
- getStockStickerTemplates(data) {
2314
- return __awaiter(this, void 0, void 0, function* () {
2315
- return yield this._sharedService.getStockStickerTemplates(data);
2316
- });
2317
- }
927
+ // public async getStockStickerTemplates(data: StockStickersPrintLayouts): Promise<StockStickersPrintLayouts[]> {
928
+ // return await this._sharedService.getStockStickerTemplates(data);
929
+ // }
2318
930
  getStockManagementWarehouses() {
2319
931
  return __awaiter(this, void 0, void 0, function* () {
2320
932
  return yield this._sharedService.getStockManagementWarehouses();
@@ -2325,21 +937,15 @@ class StockService {
2325
937
  return yield this._sharedService.getStockManagementLocations(warehouseNo);
2326
938
  });
2327
939
  }
2328
- getOrderConfirmationDefaultSendMethod(relationId) {
2329
- return __awaiter(this, void 0, void 0, function* () {
2330
- return yield this._sharedService.getOrderConfirmationDefaultSendMethod(relationId);
2331
- });
2332
- }
2333
- getDefaultEmailAddressListForOrderConfirmation(transactionUUID) {
2334
- return __awaiter(this, void 0, void 0, function* () {
2335
- return yield this._sharedService.getDefaultEmailAddressListForOrderConfirmation(transactionUUID);
2336
- });
2337
- }
2338
- getPurchaseOrderEmailLayouts(transactionUUID) {
2339
- return __awaiter(this, void 0, void 0, function* () {
2340
- return yield this._sharedService.getPurchaseOrderEmailLayouts(transactionUUID);
2341
- });
2342
- }
940
+ // public async getOrderConfirmationDefaultSendMethod(relationId: number): Promise<number> {
941
+ // return await this._sharedService.getOrderConfirmationDefaultSendMethod(relationId);
942
+ // }
943
+ // public async getDefaultEmailAddressListForOrderConfirmation(transactionUUID: string): Promise<string[]> {
944
+ // return await this._sharedService.getDefaultEmailAddressListForOrderConfirmation(transactionUUID);
945
+ // }
946
+ // public async getPurchaseOrderEmailLayouts(transactionUUID: string): Promise<StockStickersEmailLayouts[]> {
947
+ // return await this._sharedService.getPurchaseOrderEmailLayouts(transactionUUID);
948
+ // }
2343
949
  getArticleTransaction(data) {
2344
950
  return __awaiter(this, void 0, void 0, function* () {
2345
951
  return yield this._sharedService.getArticleTransaction(data);
@@ -2371,6 +977,8 @@ class StockComponent {
2371
977
  this._dictionary = _dictionary;
2372
978
  this._changeDetector = _changeDetector;
2373
979
  this.handleStickerClicked = new EventEmitter();
980
+ this.okButtonClicked = new EventEmitter();
981
+ this.cancelButtonClicked = new EventEmitter();
2374
982
  this.showStockInformationGrid = true;
2375
983
  this.showStockLocation = false;
2376
984
  this.showStockTransfer = false;
@@ -2455,11 +1063,14 @@ StockComponent.decorators = [
2455
1063
  </co-stock-information>
2456
1064
  <hr>
2457
1065
  <co-stock-information-grid *ngIf="showStockInformationGrid"
1066
+ [article]="articleExtended"
2458
1067
  [stockLocationData]="stockLocationInformation"
2459
1068
  [articleStockInformation]="stockInformation"
2460
1069
  (transferIconClicked)="handleStockTransferClick($event)"
2461
1070
  (historyClicked)="getStockHistory()"
2462
1071
  [stockHistoryInformation]="stockHistory"
1072
+ (okButtonClicked)="okButtonClicked.emit()"
1073
+ (cancelButtonClicked)="cancelButtonClicked.emit()"
2463
1074
  >
2464
1075
  </co-stock-information-grid>
2465
1076
  <co-stock-location *ngIf="showStockLocation"
@@ -2493,6 +1104,8 @@ StockComponent.propDecorators = {
2493
1104
  article: [{ type: Input }],
2494
1105
  articleWarehouse: [{ type: Input }],
2495
1106
  allWarehouses: [{ type: Input }],
1107
+ okButtonClicked: [{ type: Output }],
1108
+ cancelButtonClicked: [{ type: Output }],
2496
1109
  showClass: [{ type: HostBinding, args: ["class.co-stock",] }]
2497
1110
  };
2498
1111
 
@@ -2556,20 +1169,25 @@ const IconSvg = {
2556
1169
  "arrow_fat_right": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><polygon points=\"37.5 25 25.2 12.7 25.2 20.35 12.5 20.35 12.5 29.66 25.2 29.66 25.2 37.3 37.5 25\" fill=\"#484f60\"/></svg>",
2557
1170
  "arrow_point_left": "<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\" viewBox=\"0 0 51 51\" enable-background=\"new 0 0 51 51\" ><path fill=\"#484F5F\" d=\"M31.9,36.7l-14.7-9.6C17.1,27,17,26.9,17,26.7v-2.4c0-0.2,0.1-0.3,0.2-0.4l14.7-9.6c0.2-0.2,0.5-0.1,0.7,0.1l1.4,2.1c0.2,0.2,0.1,0.5-0.1,0.7l-12,7.8c-0.3,0.2-0.3,0.6,0,0.8l12,7.8c0.2,0.2,0.3,0.5,0.1,0.7l-1.4,2.1C32.4,36.8,32.1,36.8,31.9,36.7z\"/></svg>",
2558
1171
  "arrow_point_right": "<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\" viewBox=\"0 0 51 51\" enable-background=\"new 0 0 51 51\"><path fill=\"#484F5F\" d=\"M19.1,14.3l14.7,9.6c0.1,0.1,0.2,0.2,0.2,0.4v2.4c0,0.2-0.1,0.3-0.2,0.4l-14.7,9.6c-0.2,0.2-0.5,0.1-0.7-0.1l-1.4-2.1c-0.2-0.2-0.1-0.5,0.1-0.7l12-7.8c0.3-0.2,0.3-0.6,0-0.8l-12-7.8c-0.2-0.2-0.3-0.5-0.1-0.7l1.4-2.1C18.6,14.2,18.9,14.2,19.1,14.3z\"/></svg>",
1172
+ "at_solid": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path d=\"M207.8 20.73c-93.45 18.32-168.7 93.66-187 187.1c-27.64 140.9 68.65 266.2 199.1 285.1c19.01 2.888 36.17-12.26 36.17-31.49l.0001-.6631c0-15.74-11.44-28.88-26.84-31.24c-84.35-12.98-149.2-86.13-149.2-174.2c0-102.9 88.61-185.5 193.4-175.4c91.54 8.869 158.6 91.25 158.6 183.2l0 16.16c0 22.09-17.94 40.05-40 40.05s-40.01-17.96-40.01-40.05v-120.1c0-8.847-7.161-16.02-16.01-16.02l-31.98 .0036c-7.299 0-13.2 4.992-15.12 11.68c-24.85-12.15-54.24-16.38-86.06-5.106c-38.75 13.73-68.12 48.91-73.72 89.64c-9.483 69.01 43.81 128 110.9 128c26.44 0 50.43-9.544 69.59-24.88c24 31.3 65.23 48.69 109.4 37.49C465.2 369.3 496 324.1 495.1 277.2V256.3C495.1 107.1 361.2-9.332 207.8 20.73zM239.1 304.3c-26.47 0-48-21.56-48-48.05s21.53-48.05 48-48.05s48 21.56 48 48.05S266.5 304.3 239.1 304.3z\"/></svg>",
2559
1173
  "bring_forward_regular": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"#183153\" d=\"M224 464H448C456.8 464 464 456.8 464 448V224C464 215.2 456.8 208 448 208H384V160H448C483.3 160 512 188.7 512 224V448C512 483.3 483.3 512 448 512H224C188.7 512 160 483.3 160 448V384H208V448C208 456.8 215.2 464 224 464zM64 352C28.65 352 0 323.3 0 288V64C0 28.65 28.65 0 64 0H288C323.3 0 352 28.65 352 64V288C352 323.3 323.3 352 288 352H64z\"/></svg>",
2560
1174
  "check_round": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M25,10A15,15,0,1,0,40,25,15,15,0,0,0,25,10ZM23,34l-6.24-9.09,2.81-3.59L23,26.45,27.66,16h5.58Z\" fill=\"#484f60\"/></svg>",
2561
1175
  "delete_left_regular": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 576 512\"><path d=\"M432.1 208.1L385.9 256L432.1 303C442.3 312.4 442.3 327.6 432.1 336.1C423.6 346.3 408.4 346.3 399 336.1L352 289.9L304.1 336.1C295.6 346.3 280.4 346.3 271 336.1C261.7 327.6 261.7 312.4 271 303L318.1 256L271 208.1C261.7 199.6 261.7 184.4 271 175C280.4 165.7 295.6 165.7 304.1 175L352 222.1L399 175C408.4 165.7 423.6 165.7 432.1 175C442.3 184.4 442.3 199.6 432.1 208.1V208.1zM512 64C547.3 64 576 92.65 576 128V384C576 419.3 547.3 448 512 448H205.3C188.3 448 172 441.3 160 429.3L9.372 278.6C3.371 272.6 0 264.5 0 256C0 247.5 3.372 239.4 9.372 233.4L160 82.75C172 70.74 188.3 64 205.3 64L512 64zM528 128C528 119.2 520.8 112 512 112H205.3C201 112 196.9 113.7 193.9 116.7L54.63 256L193.9 395.3C196.9 398.3 201 400 205.3 400H512C520.8 400 528 392.8 528 384V128z\"/></svg>",
2562
1176
  "delivery_truck": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><rect x=\"15.35\" y=\"16.56\" width=\"15.14\" height=\"10.94\" transform=\"translate(-1.83 2.08) rotate(-5)\" fill=\"#484f60\"/><path d=\"M38.5,18.1l-6.9.61L32.41,28l-7.63.67a3.76,3.76,0,0,1,1.43,2.25l7.25-.63A3.83,3.83,0,0,1,41,29.6l1-.1-.52-6Zm.29,5.84-3.91.34a.51.51,0,0,1-.55-.46L34,20.1a.49.49,0,0,1,.45-.54l2.27-.2a.5.5,0,0,1,.48.25l2,3.59A.5.5,0,0,1,38.79,23.94Z\" fill=\"#484f60\"/><path d=\"M19.66,29.09a3.8,3.8,0,0,0-1,2.46l-.74.07-1.82-.94L16,29.41Z\" fill=\"#484f60\"/><path d=\"M34.56,30.62a2.74,2.74,0,1,0,2.49-3A2.73,2.73,0,0,0,34.56,30.62Z\" fill=\"#484f60\"/><path d=\"M19.74,31.91a2.74,2.74,0,1,0,2.49-3A2.74,2.74,0,0,0,19.74,31.91Z\" fill=\"#484f60\"/><rect x=\"7.96\" y=\"17.63\" width=\"5\" height=\"1\" transform=\"translate(-1.54 0.98) rotate(-5)\" fill=\"#484f60\"/><rect x=\"11.02\" y=\"29.71\" width=\"3\" height=\"1\" transform=\"translate(-2.59 1.21) rotate(-5)\" fill=\"#484f60\"/><rect x=\"9.48\" y=\"23.53\" width=\"4\" height=\"1\" transform=\"matrix(1, -0.09, 0.09, 1, -2.05, 1.09)\" fill=\"#484f60\"/></svg>",
2563
1177
  "email": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M31.79,38.45A17.82,17.82,0,0,1,23.86,40,13.09,13.09,0,0,1,10.41,26.42C10.41,17.63,16.83,10,26.53,10c7.63,0,13.06,5.21,13.06,12.46,0,6.33-3.53,10.3-8.19,10.3a3.42,3.42,0,0,1-3.71-3.32h-.08A6.5,6.5,0,0,1,22,32.76c-2.75,0-4.82-2.11-4.82-5.65a9.85,9.85,0,0,1,10.13-10,12.89,12.89,0,0,1,5.13,1l-1.3,8c-.43,2.54-.13,3.71,1.08,3.75,1.85.09,4.18-2.28,4.18-7.28,0-5.65-3.62-10-10.3-10S13.73,17.76,13.73,26c0,7.25,4.57,11.3,11,11.3A14.81,14.81,0,0,0,31,36ZM28,20.65a5.34,5.34,0,0,0-1.33-.18c-2.85,0-5.09,2.81-5.09,6.12,0,1.64.73,2.68,2.16,2.68,1.59,0,3.27-2,3.66-4.53Z\" fill=\"#484f60\"/></svg>",
2564
1178
  "envelope_regular": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path d=\"M64 112c-8.8 0-16 7.2-16 16v22.1L220.5 291.7c20.7 17 50.4 17 71.1 0L464 150.1V128c0-8.8-7.2-16-16-16H64zM48 212.2V384c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V212.2L322 328.8c-38.4 31.5-93.7 31.5-132 0L48 212.2zM0 128C0 92.7 28.7 64 64 64H448c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z\"/></svg>",
1179
+ "file_export_regular": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 576 512\"><path d=\"M568.1 303l-80-80c-9.375-9.375-24.56-9.375-33.94 0s-9.375 24.56 0 33.94L494.1 296H216C202.8 296 192 306.8 192 320s10.75 24 24 24h278.1l-39.03 39.03C450.3 387.7 448 393.8 448 400s2.344 12.28 7.031 16.97c9.375 9.375 24.56 9.375 33.94 0l80-80C578.3 327.6 578.3 312.4 568.1 303zM360 384c-13.25 0-24 10.74-24 24V448c0 8.836-7.164 16-16 16H64.02c-8.836 0-16-7.164-16-16L48 64.13c0-8.836 7.164-16 16-16h160L224 128c0 17.67 14.33 32 32 32h79.1v72c0 13.25 10.74 24 23.1 24S384 245.3 384 232V138.6c0-16.98-6.742-33.26-18.75-45.26l-74.63-74.64C278.6 6.742 262.3 0 245.4 0H63.1C28.65 0-.002 28.66 0 64l.0065 384c.002 35.34 28.65 64 64 64H320c35.2 0 64-28.8 64-64v-40C384 394.7 373.3 384 360 384z\"/></svg>",
1180
+ "file_export_solid": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 512\"><path d=\"M32 64C32 28.7 60.7 0 96 0H256V128c0 17.7 14.3 32 32 32H416V288H248c-13.3 0-24 10.7-24 24s10.7 24 24 24H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V64zM416 336V288H526.1l-39-39c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l39-39H416zm0-208H288V0L416 128z\"/></svg>",
2565
1181
  "file_pdf_regular": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 384 512\"><path d=\"M320 464C328.8 464 336 456.8 336 448V416H384V448C384 483.3 355.3 512 320 512H64C28.65 512 0 483.3 0 448V416H48V448C48 456.8 55.16 464 64 464H320zM256 160C238.3 160 224 145.7 224 128V48H64C55.16 48 48 55.16 48 64V192H0V64C0 28.65 28.65 0 64 0H229.5C246.5 0 262.7 6.743 274.7 18.75L365.3 109.3C377.3 121.3 384 137.5 384 154.5V192H336V160H256zM88 224C118.9 224 144 249.1 144 280C144 310.9 118.9 336 88 336H80V368C80 376.8 72.84 384 64 384C55.16 384 48 376.8 48 368V240C48 231.2 55.16 224 64 224H88zM112 280C112 266.7 101.3 256 88 256H80V304H88C101.3 304 112 293.3 112 280zM160 240C160 231.2 167.2 224 176 224H200C226.5 224 248 245.5 248 272V336C248 362.5 226.5 384 200 384H176C167.2 384 160 376.8 160 368V240zM192 352H200C208.8 352 216 344.8 216 336V272C216 263.2 208.8 256 200 256H192V352zM336 224C344.8 224 352 231.2 352 240C352 248.8 344.8 256 336 256H304V288H336C344.8 288 352 295.2 352 304C352 312.8 344.8 320 336 320H304V368C304 376.8 296.8 384 288 384C279.2 384 272 376.8 272 368V240C272 231.2 279.2 224 288 224H336z\"/></svg>",
2566
1182
  "file_pdf_solid": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 384 512\"><path d=\"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 224H88c30.9 0 56 25.1 56 56s-25.1 56-56 56H80v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V320 240c0-8.8 7.2-16 16-16zm24 80c13.3 0 24-10.7 24-24s-10.7-24-24-24H80v48h8zm72-64c0-8.8 7.2-16 16-16h24c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H176c-8.8 0-16-7.2-16-16V240zm32 112h8c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16h-8v96zm96-128h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H304v32h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H304v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V304 240c0-8.8 7.2-16 16-16z\"/></svg>",
1183
+ "message_sms_regular": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path d=\"M448-.0004H64c-35.25 0-64 28.75-64 63.1v287.1c0 35.25 28.75 63.1 64 63.1h96v83.98c0 9.836 11.02 15.55 19.12 9.7L304 415.1H448c35.25 0 64-28.75 64-63.1V63.1C512 28.75 483.3-.0004 448-.0004zM464 352c0 8.75-7.25 16-16 16h-160l-80 60v-60H64c-8.75 0-16-7.25-16-16V64c0-8.75 7.25-16 16-16h384c8.75 0 16 7.25 16 16V352zM124.4 192.6C113.6 189.5 103.2 187.2 104.2 181.5c.7813-4.5 10.28-6.562 21.5-4.906c4.156 .6562 8.75 2.094 13.09 3.594c8.375 2.906 17.47-1.562 20.34-9.906c2.875-8.344-1.562-17.47-9.906-20.34C143.1 147.8 136.5 145.9 130.6 145c-30.69-4.812-53.94 7.719-58 31.09c-5.656 33.03 26.5 42.47 38.63 46c13.72 3.947 25.62 6.432 24.56 12.34C135 239 125.7 241.1 114.3 239.4C107.9 238.4 100.4 235.4 93.38 232.9c-8.375-2.969-16 1.875-18.97 10.19S77.19 261.1 85.5 264.1C92.81 266.8 101.1 269.8 109.4 271C113.7 271.7 117.9 272 121.1 272c24.28 0 41.94-12.03 45.38-32.13C173.1 206.5 141.4 197.5 124.4 192.6zM396.4 192.6C385.6 189.5 375.2 187.2 376.2 181.5c.7813-4.5 10.31-6.562 21.5-4.906c4.156 .6562 8.75 2.094 13.09 3.594c8.406 2.906 17.47-1.562 20.34-9.906c2.875-8.344-1.562-17.47-9.906-20.34c-6.156-2.125-12.69-4.062-18.59-4.969c-30.75-4.812-53.97 7.719-58 31.09c-5.656 33.03 26.5 42.47 38.63 46c13.72 3.947 25.62 6.432 24.56 12.34c-.7813 4.562-10.12 6.656-21.56 4.938c-6.342-.9883-13.9-3.939-20.88-6.438c-8.375-2.969-16 1.875-18.97 10.19s2.781 17.97 11.09 20.97c7.312 2.656 15.62 5.656 23.88 6.906C385.7 271.7 389.9 272 393.1 272c24.28 0 41.94-12.03 45.38-32.13C445.1 206.5 413.4 197.5 396.4 192.6zM309.1 144.8c-6.469-2.062-13.72 .0625-17.88 5.594L256 197.3L220.8 150.4C216.7 144.9 209.4 142.7 202.9 144.8C196.4 147 192 153.1 192 160v96c0 8.844 7.156 16 16 16S224 264.8 224 256V208l19.19 25.59c6.062 8.062 19.56 8.062 25.62 0L288 208V256c0 8.844 7.156 16 16 16S320 264.8 320 256V160C320 153.1 315.6 147 309.1 144.8z\"/></svg>",
1184
+ "message_sms_solid": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path d=\"M0 64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L185.6 508.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V416H64c-35.3 0-64-28.7-64-64V64zm202.9 80.8C196.4 147 192 153.1 192 160v96c0 8.8 7.2 16 16 16s16-7.2 16-16V208l19.2 25.6c3 4 7.8 6.4 12.8 6.4s9.8-2.4 12.8-6.4L288 208v48c0 8.8 7.2 16 16 16s16-7.2 16-16V160c0-6.9-4.4-13-10.9-15.2s-13.7 .1-17.9 5.6L256 197.3l-35.2-46.9c-4.1-5.5-11.3-7.8-17.9-5.6zm173.1 38c0-1.1 .2-1.6 .4-1.9c.3-.4 .9-1.2 2.4-2c3.1-1.8 8-3 12.9-2.9c6.1 .1 12.9 1.4 20.1 3.4c8.5 2.3 17.3-2.8 19.6-11.3s-2.8-17.3-11.3-19.6c-8.2-2.2-17.9-4.3-27.9-4.4c-9.3-.1-20.4 1.9-29.7 7.4c-9.9 5.9-18.6 16.4-18.5 31.6c.1 14.7 8.8 24 17.7 29.4c7.6 4.6 17.1 7.4 24.3 9.6l1.2 .4c8.5 2.6 14.2 4.5 18 6.9c2.7 1.7 2.7 2.4 2.7 3.1l0 .2c0 1.6-.3 2.3-.6 2.7c-.3 .5-.9 1.2-2.1 2c-2.8 1.7-7.5 2.9-12.8 2.8c-7-.2-13.5-2.4-22.6-5.5l0 0 0 0c-1.5-.5-3.2-1.1-4.9-1.6c-8.4-2.8-17.4 1.7-20.2 10.1s1.7 17.4 10.1 20.2c1.2 .4 2.6 .9 4 1.4l0 0 0 0c8.8 3 20.4 7 32.6 7.4c9.8 .3 21.2-1.6 30.7-7.6c10.2-6.4 18-17.3 17.8-32.3c-.2-14.7-8.5-24.2-17.6-29.9c-8-5-17.9-8-25.2-10.2l-.6-.2c-8.6-2.6-14.4-4.4-18.2-6.8c-1.6-1-2.1-1.6-2.2-1.7c0-.1 0-.2 0-.4zm-272 0c0-1.1 .2-1.6 .4-1.9c.3-.4 .9-1.2 2.4-2c3.1-1.8 8-3 12.9-2.9c6.6 .1 16.7 1.6 23.3 3.4c8.5 2.3 17.3-2.8 19.6-11.3s-2.8-17.3-11.3-19.6c-8.8-2.4-21.6-4.3-31.1-4.4c-9.3-.1-20.4 1.9-29.7 7.4C80.6 157.3 72 167.8 72 183c.1 14.7 8.8 24 17.7 29.4c7.6 4.6 17.1 7.4 24.3 9.6l0 0 1.2 .4c8.5 2.6 14.2 4.5 18 6.9c2.7 1.7 2.7 2.4 2.7 3.1l0 .2c0 1.6-.3 2.3-.6 2.7c-.3 .5-.9 1.2-2.1 2c-2.8 1.7-7.5 2.9-12.8 2.8c-7.2-.2-14.2-2.6-23.7-5.8l0 0 0 0c-1.3-.4-2.7-.9-4.1-1.4c-8.4-2.8-17.4 1.7-20.2 10.1s1.7 17.4 10.1 20.2c1.1 .4 2.4 .8 3.6 1.2l0 0 0 0c9 3.1 20.9 7.2 33.2 7.6c9.8 .3 21.2-1.6 30.7-7.6c10.2-6.4 18-17.3 17.8-32.3c-.2-14.7-8.5-24.2-17.6-29.9c-8-5-17.9-8-25.2-10.2l-.6-.2c-8.6-2.6-14.4-4.4-18.3-6.8c-1.6-1-2.1-1.6-2.2-1.7c0-.1 0-.2 0-.4z\"/></svg>",
2567
1185
  "pdf": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M31.42,40.17H13.88c-2.16,0-2.72-.56-2.72-2.72V12.88c0-2.15.56-2.71,2.72-2.71h11.6l8.66,8.88v3.43H32.8V19.6l-7.88-8.09h-11c-1.38,0-1.38,0-1.38,1.37V37.45c0,1.37,0,1.37,1.38,1.37H31.42c1.38,0,1.38,0,1.38-1.37V35h1.34v2.43C34.14,39.61,33.58,40.17,31.42,40.17Z\" fill=\"#484f60\"/><path d=\"M27.83,26.63v4.24h1a3.57,3.57,0,0,0,.78-.06,1.22,1.22,0,0,0,.52-.26,1.44,1.44,0,0,0,.34-.62,4.13,4.13,0,0,0,.13-1.18,3.79,3.79,0,0,0-.13-1.14,1.51,1.51,0,0,0-.37-.62,1.14,1.14,0,0,0-.6-.3,5.93,5.93,0,0,0-1.06-.06Z\" fill=\"#484f60\"/><path d=\"M21.86,26.63v1.82h.71a3.57,3.57,0,0,0,1-.1A.88.88,0,0,0,24,28a.84.84,0,0,0,.14-.5.8.8,0,0,0-.2-.57.88.88,0,0,0-.52-.29,6.36,6.36,0,0,0-.93,0Z\" fill=\"#484f60\"/><path d=\"M19.14,24.27v9h19.7v-9Zm6.12,4.24a1.68,1.68,0,0,1-.54.63,1.9,1.9,0,0,1-.67.3,6.57,6.57,0,0,1-1.34.1h-.85V32H20.57V25.54h2.07a7.75,7.75,0,0,1,1.54.1,1.73,1.73,0,0,1,.93.63,2,2,0,0,1,.37,1.25A2,2,0,0,1,25.26,28.51Zm6.45,1.66A2.91,2.91,0,0,1,31,31.31a2.28,2.28,0,0,1-.91.51A4,4,0,0,1,29,32H26.54V25.54H28.9a4.21,4.21,0,0,1,1.22.13,2.08,2.08,0,0,1,1,.59,2.79,2.79,0,0,1,.61,1,4.76,4.76,0,0,1,.21,1.52A4.19,4.19,0,0,1,31.71,30.17Zm5.7-3.54h-3.1v1.52H37v1.08H34.31V32H33V25.54h4.39Z\" fill=\"#484f60\"/><path d=\"M25.2,10.84v6.44c0,1.78.27,2,2,2h6.23Z\" fill=\"#484f60\"/></svg>",
2568
1186
  "print": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M38,16.5H12a2,2,0,0,0-2,2v9a2,2,0,0,0,2,2h2v-5H36v5h2a2,2,0,0,0,2-2v-9A2,2,0,0,0,38,16.5ZM37,21a1.5,1.5,0,1,1,1.5-1.5A1.5,1.5,0,0,1,37,21Z\" fill=\"#484f60\"/><path d=\"M35,11.5v5H15v-5H35m1-1H14v7H36v-7Z\" fill=\"#484f60\"/><path d=\"M35,25.5v13H15v-13H35m1-1H14v15H36v-15Z\" fill=\"#484f60\"/><rect x=\"17\" y=\"28.3\" width=\"16\" height=\"0.8\" fill=\"#484f60\"/><rect x=\"17\" y=\"31.5\" width=\"16\" height=\"0.8\" fill=\"#484f60\"/><rect x=\"17\" y=\"34.7\" width=\"16\" height=\"0.8\" fill=\"#484f60\"/></svg>",
2569
1187
  "print_regular": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path d=\"M111.1 48h254.1L400 81.94V160H448V81.94c0-12.73-5.057-24.94-14.06-33.94l-33.94-33.94C391 5.057 378.8 0 366.1 0H111.1C85.49 0 64.01 21.48 64 47.98l.002 82.28c-.002 0 .002 0 0 0L64 160h48.01L111.1 48zM440 192H72C32.3 192 0 224.3 0 264v112c0 13.25 10.75 24 24 24H80V480c0 17.67 14.33 32 32 32h288c17.67 0 32-14.33 32-32v-80h56c13.25 0 24-10.75 24-24v-112C512 224.3 479.7 192 440 192zM384 464H128v-96h256V464zM464 352h-32c0-17.67-14.33-32-32-32h-288c-17.67 0-32 14.33-32 32h-32V264c0-13.23 10.77-24 24-24h368c13.23 0 24 10.77 24 24V352z\"/></svg>",
2570
1188
  "print_solid": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path d=\"M448 192H64C28.65 192 0 220.7 0 256v96c0 17.67 14.33 32 32 32h32v96c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-96h32c17.67 0 32-14.33 32-32V256C512 220.7 483.3 192 448 192zM384 448H128v-96h256V448zM432 296c-13.25 0-24-10.75-24-24c0-13.27 10.75-24 24-24s24 10.73 24 24C456 285.3 445.3 296 432 296zM128 64h229.5L384 90.51V160h64V77.25c0-8.484-3.375-16.62-9.375-22.62l-45.25-45.25C387.4 3.375 379.2 0 370.8 0H96C78.34 0 64 14.33 64 32v128h64V64z\"/></svg>",
2571
1189
  "signature_field": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M20.1,25.42a1.1,1.1,0,1,1,1.27,1.45l-3.3,9.07A63.13,63.13,0,0,1,28,28.3l1.26-12-8.26-3-6.77,10A62.4,62.4,0,0,1,17,35.54l3.3-9.07A1.12,1.12,0,0,1,20.1,25.42Z\" fill=\"#484f60\"/><rect x=\"21.62\" y=\"11.43\" width=\"8.79\" height=\"2.34\" transform=\"translate(5.88 -8.14) rotate(20)\" fill=\"#484f60\"/><path d=\"M18.11,37.48c1.44,2.65,4.58,2.94,7.23,2.1,1.41-.44,2.2-1.49,3.44-2.06,2.42-1.1,3.13,1.2,5.36,1.37.42,0,2-.65,1.54-.68-2.55-.19-2.93-3.13-5.51-2.65a4.9,4.9,0,0,0-1.64.71c-.77.49-1.31,1.62-2.07,2l-4.61.56A3.38,3.38,0,0,1,20,37c-.22-.41-2,.28-1.85.5Z\" fill=\"#484f60\"/></svg>",
2572
- "xml": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M31.42,40.17H13.87c-2.15,0-2.71-.56-2.71-2.72V12.88c0-2.15.56-2.71,2.71-2.71H25.48l8.66,8.88v3.43H32.8V19.6l-7.88-8.09H13.87c-1.37,0-1.37,0-1.37,1.37V37.45c0,1.37,0,1.37,1.37,1.37H31.42c1.38,0,1.38,0,1.38-1.37V35h1.34v2.43C34.14,39.61,33.58,40.17,31.42,40.17Z\" fill=\"#484f60\"/><path d=\"M25.2,10.84v6.44c0,1.78.27,2,2,2h6.23Z\" fill=\"#484f60\"/><path d=\"M19.14,24.27v9h19.7v-9Zm5.36,7.41-1.3-2-1.3,2H20.48l2-3.06-1.81-2.8h1.38l1.18,1.88,1.15-1.88h1.37l-1.83,2.85,2,3Zm7.67,0h-1.1V27.07l-1.16,4.61H28.77l-1.16-4.61v4.61H26.52V25.82h1.76l1.07,4,1-4h1.77Zm5.33,0H33.38V25.87h1.18v4.82H37.5Z\" fill=\"#484f60\"/></svg>"
1190
+ "xml": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 30 30\"><g ><g><path d=\"M21.42,30.17H3.87c-2.16,0-2.72-.56-2.72-2.72V2.88C1.16,.73,1.72,.17,3.87,.17H15.48l8.66,8.88v3.43h-1.34v-2.88L14.92,1.51H3.87q-1.37,0-1.37,1.37V27.45q0,1.37,1.37,1.37H21.42q1.37,0,1.37-1.37v-2.43h1.34v2.43c0,2.16-.56,2.72-2.72,2.72Z\" fill=\"#484f60\"/><path d=\"M15.2,.84V7.28c0,1.78,.27,2.05,2.04,2.05h6.22L15.2,.84Z\" fill=\"#484f60\"/><path d=\"M9.14,14.27v8.96H28.84V14.27H9.14Zm5.36,7.4l-1.3-2.02-1.3,2.02h-1.42l2-3.05-1.81-2.8h1.38l1.17,1.88,1.15-1.88h1.37l-1.82,2.84,2,3.01h-1.43Zm7.67,0h-1.1v-4.61l-1.16,4.61h-1.14l-1.16-4.61v4.61h-1.1v-5.85h1.77l1.06,3.99,1.05-3.99h1.77v5.85Zm5.33,0h-4.12v-5.81h1.18v4.82h2.94v.99Z\" fill=\"#484f60\"/></g></g></svg>"
2573
1191
  };
2574
1192
 
2575
1193
  class IconCacheService {
@@ -2626,14 +1244,19 @@ var Icon;
2626
1244
  Icon["ArrowFatRight"] = "arrow_fat_right";
2627
1245
  Icon["ArrowPointLeft"] = "arrow_point_left";
2628
1246
  Icon["ArrowPointRight"] = "arrow_point_right";
1247
+ Icon["AtSolid"] = "at_solid";
2629
1248
  Icon["BringForwardRegular"] = "bring_forward_regular";
2630
1249
  Icon["CheckRound"] = "check_round";
2631
1250
  Icon["DeleteLeftRegular"] = "delete_left_regular";
2632
1251
  Icon["DeliveryTruck"] = "delivery_truck";
2633
1252
  Icon["Email"] = "email";
2634
1253
  Icon["EnvelopeRegular"] = "envelope_regular";
1254
+ Icon["FileExportRegular"] = "file_export_regular";
1255
+ Icon["FileExportSolid"] = "file_export_solid";
2635
1256
  Icon["FilePdfRegular"] = "file_pdf_regular";
2636
1257
  Icon["FilePdfSolid"] = "file_pdf_solid";
1258
+ Icon["MessageSmsRegular"] = "message_sms_regular";
1259
+ Icon["MessageSmsSolid"] = "message_sms_solid";
2637
1260
  Icon["Pdf"] = "pdf";
2638
1261
  Icon["Print"] = "print";
2639
1262
  Icon["PrintRegular"] = "print_regular";
@@ -2649,13 +1272,17 @@ class StockInformationGridComponent {
2649
1272
  this.icons = Icon;
2650
1273
  this.transferIconClicked = new EventEmitter();
2651
1274
  this.historyClicked = new EventEmitter();
1275
+ this.cancelButtonClicked = new EventEmitter();
1276
+ this.okButtonClicked = new EventEmitter();
2652
1277
  this.show = false;
2653
1278
  this.hideOrShowLocationTab = false;
2654
1279
  this.showStockHistory = false;
2655
1280
  this.showSendMethodDialog = false;
2656
1281
  this.hideOrShowTabs = true;
2657
1282
  this.dataWareHouseFields = { text: "warehouseDescription", value: "warehouseNo" };
1283
+ this.dataLocationFields = { text: "locationNo", value: "locationNo" };
2658
1284
  this.articleStockSearchInfo = new ArticleStock$1();
1285
+ this.selectedArticleDetailsData = new ArticleDetailsBo();
2659
1286
  this.showChangeStockDetails = false;
2660
1287
  this.articleDetailsInformation = new ArticleStockManagement();
2661
1288
  this.tabs = [
@@ -2726,14 +1353,16 @@ class StockInformationGridComponent {
2726
1353
  this._stockService.printLayoutParams.goodId = data.goodId;
2727
1354
  this._stockService.printLayoutParams.warehouse = data.warehouseNo;
2728
1355
  }
2729
- this.showSendMethodDialog = !this.showSendMethodDialog;
1356
+ this.showSendMethodDialog = true;
2730
1357
  }
2731
1358
  printStockStickers() {
2732
- this._stockService.getPrintStockStickers(this._stockService.printLayoutParams);
1359
+ // this._stockService.getPrintStockStickers(this._stockService.printLayoutParams);
2733
1360
  }
2734
1361
  onOkClick() {
1362
+ this.okButtonClicked.emit();
2735
1363
  }
2736
1364
  onCancelClick() {
1365
+ this.cancelButtonClicked.emit();
2737
1366
  }
2738
1367
  openDialogClick(data) {
2739
1368
  this.selectedArticleDetailsData = data;
@@ -2778,7 +1407,24 @@ class StockInformationGridComponent {
2778
1407
  this.orderInformation = yield this._stockService.getArticleTransaction(orderData);
2779
1408
  });
2780
1409
  }
2781
- addNewRow() {
1410
+ onSelectLocation() {
1411
+ this._stockService.getStockManagementLocations(this.selectedWarehouse).then((locations) => {
1412
+ this.stockLocations = locations;
1413
+ });
1414
+ }
1415
+ onOkClickSendLocations() {
1416
+ console.log(this.article);
1417
+ this.selectedArticleDetailsData.selected = true;
1418
+ this.selectedArticleDetailsData.goodId = this.article.goodId;
1419
+ this.selectedArticleDetailsData.entryDate = new Date();
1420
+ this.selectedArticleDetailsData.warehouseNo = this.selectedWarehouse;
1421
+ this._stockService.updateArticleDetails(this.selectedArticleDetailsData);
1422
+ }
1423
+ onCancelClickSendLocations() {
1424
+ }
1425
+ amountInStockChanged(data, row) {
1426
+ console.log(data);
1427
+ console.log(row);
2782
1428
  }
2783
1429
  }
2784
1430
  StockInformationGridComponent.decorators = [
@@ -2803,10 +1449,6 @@ StockInformationGridComponent.decorators = [
2803
1449
  <co-simple-grid *ngIf="activeTab === tabs[0] && hideOrShowTabs"
2804
1450
  [data]="articleStockInformation"
2805
1451
  class="simple-grid"
2806
- [showAdd]="true"
2807
- [showToolbar]="true"
2808
- (addRow)="addNewRow()"
2809
- [inlineEdit]="true"
2810
1452
  [rowsPerPage]="20"
2811
1453
  >
2812
1454
  <co-simple-grid-column [headerText]="'WAREHOUSE'" [field]="'warehouseNo'" [order]="10"></co-simple-grid-column>
@@ -2828,7 +1470,11 @@ StockInformationGridComponent.decorators = [
2828
1470
  >
2829
1471
  <co-simple-grid-column [headerText]="'IN_ORDER2'" [field]="'transactionNr'"></co-simple-grid-column>
2830
1472
  <co-simple-grid-column [headerText]="'CUSTOMER'" [field]="'user'"></co-simple-grid-column>
2831
- <co-simple-grid-column [headerText]="'DATE'" [field]="'transactionDate'"></co-simple-grid-column>
1473
+ <co-simple-grid-column [headerText]="'DATE'">
1474
+ <ng-template #template let-row="row">
1475
+ <span [textContent]="row.transactionDate | date:'dd-MM-yyyy'"></span>
1476
+ </ng-template>
1477
+ </co-simple-grid-column>
2832
1478
  <co-simple-grid-column [headerText]="'AMOUNT'" [field]="'amountInOrder'"></co-simple-grid-column>
2833
1479
  <co-simple-grid-column [headerText]="'WAREHOUSE'" [field]="'wareHouseNr'"></co-simple-grid-column>
2834
1480
  <co-simple-grid-column [headerText]="'DESCRIPTION'" [field]="'locationNr'"></co-simple-grid-column>
@@ -2851,11 +1497,19 @@ StockInformationGridComponent.decorators = [
2851
1497
  [rowsPerPage]="20"
2852
1498
  >
2853
1499
  <co-simple-grid-column [headerText]="'PURCHASE_ORDER_NR'" [field]="'transactionNr'"></co-simple-grid-column>
2854
- <co-simple-grid-column [headerText]="'DATE'" [field]="'transactionDate'"></co-simple-grid-column>
1500
+ <co-simple-grid-column [headerText]="'DATE'">
1501
+ <ng-template #template let-row="row">
1502
+ <span [textContent]="row.transactionDate | date:'dd-MM-yyyy'"></span>
1503
+ </ng-template>
1504
+ </co-simple-grid-column>
2855
1505
  <co-simple-grid-column [headerText]="'AMOUNT'" [field]="'amountInOrder'"></co-simple-grid-column>
2856
1506
  <co-simple-grid-column [headerText]="'RESERVED'" [field]="'reserved'"></co-simple-grid-column>
2857
1507
  <co-simple-grid-column [headerText]="'FREE_STOCK'" [field]="'freeStock'"></co-simple-grid-column>
2858
- <co-simple-grid-column [headerText]="'DELIVERY_DATE1'" [field]="'deliveryDate'"></co-simple-grid-column>
1508
+ <co-simple-grid-column [headerText]="'DELIVERY_DATE1'">
1509
+ <ng-template #template let-row="row">
1510
+ <span [textContent]="row.deliveryDate | date:'dd-MM-yyyy'"></span>
1511
+ </ng-template>
1512
+ </co-simple-grid-column>
2859
1513
  <co-simple-grid-column [headerText]="'RESERVE'" [field]="'reservation'"></co-simple-grid-column>
2860
1514
  </co-simple-grid>
2861
1515
  </div>
@@ -2880,23 +1534,50 @@ StockInformationGridComponent.decorators = [
2880
1534
  <co-simple-grid [data]="articleDetails"
2881
1535
  class="simple-grid"
2882
1536
  [rowsPerPage]="20"
1537
+ [showAdd]="true"
1538
+ [showToolbar]="true"
1539
+ [showDelete]="true"
1540
+ [inlineEdit]="true"
2883
1541
  >
2884
1542
  <div class="stock-location-group">
2885
1543
  <div class="stock-location-left-group">
2886
1544
  <co-button class="stock-lines-button" [textContent]="'BACK_TO_STOCK_LINES'" (click)="handleBackToStockClick()"></co-button>
2887
1545
  </div>
2888
1546
  </div>
2889
- <co-simple-grid-column [headerText]="'WAREHOUSE'" [field]="'warehouseDescription'"></co-simple-grid-column>
2890
- <co-simple-grid-column [headerText]="'BATCH'" [field]="'batchNo'"></co-simple-grid-column>
2891
- <co-simple-grid-column [headerText]="'SERIAL_NO'" [field]="'serialNo'"></co-simple-grid-column>
1547
+ <co-simple-grid-column [headerText]="'LOCATION'" [field]="'locationNo'">
1548
+ <ng-template #editTemplate let-row="row">
1549
+ <co-drop-down-list [(model)]="row.locationNo"
1550
+ [collection]="stockLocations"
1551
+ [fields]="dataLocationFields"
1552
+ [placeholder]="'LOCATION'"
1553
+ (click)="onSelectLocation()"
1554
+ [required]="true"
1555
+ ></co-drop-down-list>
1556
+ </ng-template>
1557
+ </co-simple-grid-column>
1558
+ <co-simple-grid-column [headerText]="'BATCH'" [field]="'batchNo'">
1559
+ <ng-template #editTemplate let-row="row">
1560
+ <co-input-text [(model)]="row.batchNo"
1561
+ [placeholder]="'BATCH'"
1562
+ ></co-input-text>
1563
+ </ng-template>
1564
+ </co-simple-grid-column>
1565
+ <co-simple-grid-column [headerText]="'SERIAL_NO'" [field]="'serialNo'">
1566
+ <ng-template #editTemplate let-row="row">
1567
+ <co-input-text [(model)]="row.serialNo"
1568
+ [placeholder]="'SERIAL_NO'"
1569
+ ></co-input-text>
1570
+ </ng-template>
1571
+ </co-simple-grid-column>
2892
1572
  <co-simple-grid-column [headerText]="'STOCK'" [field]="'amountInStock'">
2893
- <ng-template #template let-row="row">
2894
- <co-input-number-picker (keyup.enter)="openDialogClick(row)" [(model)]="row['amountInStock']">
2895
-
2896
- </co-input-number-picker>
1573
+ <ng-template #editTemplate let-row="row">
1574
+ <co-input-text [(model)]="row.amountInStock"
1575
+ [label]="'STOCK'"
1576
+ (modelChange)="amountInStockChanged($event, row)"
1577
+ ></co-input-text>
2897
1578
  </ng-template>
2898
1579
  </co-simple-grid-column>
2899
- <co-simple-grid-column [headerText]="'ALLOCATED'" [field]="'amountInStockFree'"></co-simple-grid-column>
1580
+ <co-simple-grid-column [headerText]="'ALLOCATED'" [field]="'stockAssigned'" ></co-simple-grid-column>
2900
1581
  <co-simple-grid-column [headerText]="'AVAILABLE_STOCK'" [field]="'perceptibleStorage'"></co-simple-grid-column>
2901
1582
  <co-simple-grid-column [headerText]="'PHYSICAL_STOCK'" [field]="'amountInStockOriginal'"></co-simple-grid-column>
2902
1583
  <co-simple-grid-column [headerText]="'VALUTA'" [field]="'currency'"></co-simple-grid-column>
@@ -2929,7 +1610,11 @@ StockInformationGridComponent.decorators = [
2929
1610
  class="simple-grid"
2930
1611
  [rowsPerPage]="20"
2931
1612
  >
2932
- <co-simple-grid-column [headerText]="'MUTATION_DATE'" [field]="'mutationDate'"></co-simple-grid-column>
1613
+ <co-simple-grid-column [headerText]="'MUTATION_DATE'">
1614
+ <ng-template #template let-row="row">
1615
+ <span [textContent]="row.mutationDate | date:'dd-MM-yyyy'"></span>
1616
+ </ng-template>
1617
+ </co-simple-grid-column>
2933
1618
  <co-simple-grid-column [headerText]="'MUTATION_TIME'" [field]="'mutationTime'"></co-simple-grid-column>
2934
1619
  <co-simple-grid-column [headerText]="'AMOUNT'" [field]="'amount'"></co-simple-grid-column>
2935
1620
  <co-simple-grid-column [headerText]="'WAREHOUSE'" [field]="'wareHouseNr'"></co-simple-grid-column>
@@ -2955,7 +1640,7 @@ StockInformationGridComponent.decorators = [
2955
1640
  <div class="stock-button-left-group">
2956
1641
  <co-button *ngIf="activeTab === tabs[0]" [label]="'HISTORY'" (click)="handleHistoryClick()"></co-button>
2957
1642
  </div>
2958
- <div class="stock-button-middle-group">
1643
+ <div class="stock-button-middle-group" *ngIf="activeTab !== tabs[0]">
2959
1644
  <div class="button-left">
2960
1645
  <co-button [textContent]="'Ok'" (click)="onOkClick()"></co-button>
2961
1646
  </div>
@@ -2963,12 +1648,20 @@ StockInformationGridComponent.decorators = [
2963
1648
  <co-button [textContent]="'Annuleren'" (click)="onCancelClick()"></co-button>
2964
1649
  </div>
2965
1650
  </div>
1651
+
1652
+ <div class="stock-button-middle-group" *ngIf="hideOrShowLocationTab">
1653
+ <div class="button-left">
1654
+ <co-button [textContent]="'Ok'" (click)="onOkClickSendLocations()"></co-button>
1655
+ </div>
1656
+ <div class="button-right">
1657
+ <co-button [textContent]="'Annuleren'" (click)="onCancelClickSendLocations()"></co-button>
1658
+ </div>
1659
+ </div>
2966
1660
  </div>
2967
- <ione-send-method-dialog
2968
- *ngIf="showSendMethodDialog"
2969
- [showDialog]="showSendMethodDialog"
2970
- (printButtonClicked)="printStockStickers()"
2971
- ></ione-send-method-dialog>
1661
+ <co-send-method-dialog *ngIf="showSendMethodDialog"
1662
+ (closeClick)="showSendMethodDialog = false"
1663
+ (printButtonClicked)="printStockStickers()"
1664
+ ></co-send-method-dialog>
2972
1665
  `,
2973
1666
  encapsulation: ViewEncapsulation.None
2974
1667
  },] }
@@ -2982,8 +1675,11 @@ StockInformationGridComponent.propDecorators = {
2982
1675
  articleStockInformation: [{ type: Input }],
2983
1676
  stockLocationData: [{ type: Input }],
2984
1677
  stockHistoryInformation: [{ type: Input }],
1678
+ article: [{ type: Input }],
2985
1679
  transferIconClicked: [{ type: Output }],
2986
- historyClicked: [{ type: Output }]
1680
+ historyClicked: [{ type: Output }],
1681
+ cancelButtonClicked: [{ type: Output }],
1682
+ okButtonClicked: [{ type: Output }]
2987
1683
  };
2988
1684
 
2989
1685
  class StockLocationComponent {
@@ -3105,9 +1801,11 @@ StockTransferComponent.decorators = [
3105
1801
  <div class="stock-transfer-columns">
3106
1802
  <div *ngIf="articleToTransfer" class="stock-transfer-left-column">
3107
1803
  <co-input-text disabled
1804
+ [label]="'Standaard magazijn'"
3108
1805
  [(model)]="articleToTransfer.warehouseDescription"
3109
1806
  [textContent]="articleToTransfer.warehouseDescription"
3110
- [placeholder]="'Standaard magazijn'">
1807
+ [placeholder]="'Standaard magazijn'"
1808
+ >
3111
1809
  </co-input-text>
3112
1810
  <co-input-text disabled
3113
1811
  [(model)]="articleToTransfer.locationNo"
@@ -3173,135 +1871,216 @@ StockTransferComponent.propDecorators = {
3173
1871
  handleStickerClicked: [{ type: Output }]
3174
1872
  };
3175
1873
 
3176
- var SendOption;
3177
- (function (SendOption) {
3178
- SendOption[SendOption["Email"] = 0] = "Email";
3179
- SendOption[SendOption["Print"] = 1] = "Print";
3180
- SendOption[SendOption["Pdf"] = 2] = "Pdf";
3181
- SendOption[SendOption["Xml"] = 3] = "Xml";
3182
- })(SendOption || (SendOption = {}));
1874
+ class SharedService {
1875
+ constructor(options, connector) {
1876
+ this.options = options;
1877
+ this.connector = connector;
1878
+ }
1879
+ init(options) {
1880
+ return __awaiter(this, void 0, void 0, function* () {
1881
+ yield this.options.initialize(options);
1882
+ this.connector.connect();
1883
+ });
1884
+ }
1885
+ getAllPrinters() {
1886
+ return __awaiter(this, void 0, void 0, function* () {
1887
+ return yield this.connector.getAllPrinters();
1888
+ });
1889
+ }
1890
+ getSendMethods() {
1891
+ return __awaiter(this, void 0, void 0, function* () {
1892
+ return yield this.connector.getSendMethods();
1893
+ });
1894
+ }
1895
+ }
1896
+ SharedService.ɵprov = i0.ɵɵdefineInjectable({ factory: function SharedService_Factory() { return new SharedService(i0.ɵɵinject(OptionsService), i0.ɵɵinject(SharedConnectorService)); }, token: SharedService, providedIn: "root" });
1897
+ SharedService.decorators = [
1898
+ { type: Injectable, args: [{
1899
+ providedIn: "root"
1900
+ },] }
1901
+ ];
1902
+ SharedService.ctorParameters = () => [
1903
+ { type: OptionsService },
1904
+ { type: SharedConnectorService }
1905
+ ];
1906
+
1907
+ class SendMethodService {
1908
+ constructor() {
1909
+ this.reportingDocumentPrintBaseRequestChanged = new Subject();
1910
+ this.reportingDocumentEmailBaseRequestChanged = new Subject();
1911
+ this.reportingDocumentPdfBaseRequestChanged = new Subject();
1912
+ this.selectedEmailAddresses = [];
1913
+ this._reportingDocumentPrintBaseRequest = new ReportingDocumentPrintBaseRequest();
1914
+ this._reportingDocumentEmailBaseRequest = new ReportingDocumentEmailBaseRequest();
1915
+ this._reportingDocumentPdfBaseRequest = new ReportingDocumentPdfBaseRequest();
1916
+ }
1917
+ set reportingDocumentPrintBaseRequest(value) {
1918
+ this._reportingDocumentPrintBaseRequest = value;
1919
+ this.activePrinter = this._reportingDocumentPrintBaseRequest.printerName;
1920
+ this.reportingDocumentPrintBaseRequestChanged.next(this._reportingDocumentPrintBaseRequest);
1921
+ }
1922
+ get reportingDocumentPrintBaseRequest() {
1923
+ return this._reportingDocumentPrintBaseRequest;
1924
+ }
1925
+ set reportingDocumentEmailBaseRequest(value) {
1926
+ this._reportingDocumentEmailBaseRequest = value;
1927
+ this.selectedEmailAddresses = this._reportingDocumentEmailBaseRequest.toAddresses.split(';');
1928
+ this.reportingDocumentEmailBaseRequestChanged.next(this._reportingDocumentEmailBaseRequest);
1929
+ }
1930
+ get reportingDocumentEmailBaseRequest() {
1931
+ return this._reportingDocumentEmailBaseRequest;
1932
+ }
1933
+ set reportingDocumentPdfBaseRequest(value) {
1934
+ this._reportingDocumentPdfBaseRequest = value;
1935
+ this.reportingDocumentPdfBaseRequestChanged.next(this._reportingDocumentPdfBaseRequest);
1936
+ }
1937
+ get reportingDocumentPdfBaseRequest() {
1938
+ return this._reportingDocumentPdfBaseRequest;
1939
+ }
1940
+ removeEmailAddress(address) {
1941
+ if (this.selectedEmailAddresses.indexOf(address) > -1) {
1942
+ this.selectedEmailAddresses.splice(this.selectedEmailAddresses.indexOf(address), 1);
1943
+ this._updateEmailAddresses();
1944
+ }
1945
+ }
1946
+ addEmailAddress(address) {
1947
+ if (this.selectedEmailAddresses.indexOf(address) < 0) {
1948
+ this.selectedEmailAddresses.push(address);
1949
+ this._updateEmailAddresses();
1950
+ }
1951
+ }
1952
+ _updateEmailAddresses() {
1953
+ this._reportingDocumentEmailBaseRequest.toAddresses = this.selectedEmailAddresses.join(';');
1954
+ this.reportingDocumentEmailBaseRequestChanged.next(this._reportingDocumentEmailBaseRequest);
1955
+ }
1956
+ }
1957
+ SendMethodService.decorators = [
1958
+ { type: Injectable }
1959
+ ];
1960
+
1961
+ class SendMethod {
1962
+ constructor(code, description, icon) {
1963
+ this.code = code;
1964
+ this.description = description;
1965
+ this.icon = icon;
1966
+ }
1967
+ }
3183
1968
 
1969
+ const sendMethodsWithIcon = [
1970
+ new SendMethod(SendMethodType.Fax, "Fax", Icon.PrintRegular),
1971
+ new SendMethod(SendMethodType.Print, "Print", Icon.PrintSolid),
1972
+ new SendMethod(SendMethodType.Email, "Email", Icon.AtSolid),
1973
+ new SendMethod(SendMethodType.Edi, "Edi", Icon.FileExportSolid),
1974
+ new SendMethod(SendMethodType.EmailTemplate, "Email template", Icon.EnvelopeRegular),
1975
+ new SendMethod(SendMethodType.Sms, "Sms", Icon.MessageSmsSolid),
1976
+ new SendMethod(SendMethodType.WebService, "Webservice", Icon.PrintRegular)
1977
+ ];
3184
1978
  class SendMethodDialogComponent {
3185
- constructor(iconCacheService, stockService, _optionsService, _dictionary, _changeDetector) {
1979
+ constructor(iconCacheService, _optionsService, _dictionary, _changeDetector, _sharedService, _sendMethodService) {
3186
1980
  this.iconCacheService = iconCacheService;
3187
- this.stockService = stockService;
3188
1981
  this._optionsService = _optionsService;
3189
1982
  this._dictionary = _dictionary;
3190
1983
  this._changeDetector = _changeDetector;
1984
+ this._sharedService = _sharedService;
1985
+ this._sendMethodService = _sendMethodService;
3191
1986
  this.icons = Icon;
3192
- this.sendOption = SendOption;
3193
- this.showEmailOption = true;
3194
- this.showPrintOption = true;
3195
- this.showPdfOption = true;
3196
- this.showXmlOption = true;
3197
- this.showPrintPriceStickers = true;
3198
- this.sendOptions = [
3199
- { option: SendOption.Email,
3200
- iconName: this.icons.EnvelopeRegular,
3201
- },
3202
- { option: SendOption.Print,
3203
- iconName: this.icons.PrintRegular,
3204
- },
3205
- { option: SendOption.Pdf,
3206
- iconName: this.icons.FilePdfRegular,
3207
- },
3208
- { option: SendOption.Xml,
3209
- iconName: this.icons.FilePdfRegular,
3210
- }
3211
- ];
3212
- this.activeSendOption = SendOption.Email;
3213
- this.showStandardPrinterOptions = false;
3214
- this.showPrinterSelections = false;
3215
- this.showExitButton = true;
3216
- this.printTemplates = [];
3217
- this.printTemplatesField = { text: "name", value: "reportId" };
3218
- this.emailLayoutField = { text: "name", value: "reportId" };
3219
- this.priceListDataField = { text: "name", value: "priceListCode" };
3220
- this.upAndLoaded = false;
3221
- this.models = [false, false, true];
3222
- this.showDialog = false;
3223
- this.emailAdresses = [];
1987
+ this.emailLayouts = [];
3224
1988
  this.printLayouts = [];
1989
+ this.emailAddresses = [];
1990
+ this.visibleMethods = [];
3225
1991
  this.isDocSignEnabled = false;
3226
1992
  this.docSign = false;
1993
+ this.reportingDocumentPrintRequestChange = new EventEmitter();
1994
+ this.reportingDocumentEmailRequestChange = new EventEmitter();
1995
+ this.reportingDocumentPdfRequestChange = new EventEmitter();
3227
1996
  this.startSignatureClicked = new EventEmitter();
3228
- this.sendEmailClicked = new EventEmitter();
3229
- this.printButtonClicked = new EventEmitter();
3230
- this.emailLayoutClicked = new EventEmitter();
3231
- this.printTemplatesClicked = new EventEmitter();
3232
- this.defaultSendMethodClicked = new EventEmitter();
3233
- this.printLayoutParams = new EventEmitter();
3234
- this.sendMethodParams = new class {
3235
- };
1997
+ this.closeClick = new EventEmitter();
1998
+ this.okClick = new EventEmitter();
1999
+ this.sendMethods = sendMethodsWithIcon;
2000
+ this.upAndLoaded = false;
2001
+ this.startUp = true;
2002
+ this.showFax = true;
2003
+ this.showPrint = true;
2004
+ this.showEmail = true;
2005
+ this.showEdi = true;
2006
+ this.showSms = true;
2007
+ this.showEmailTemplate = true;
2008
+ this.showWebservice = true;
3236
2009
  this._subscriptions = [];
3237
- this._subscriptions.push(this._optionsService.optionsLoaded.subscribe(loaded => this._handleSettingsLoaded(loaded)));
3238
- }
3239
- set articleData(data) {
3240
- if (!(this.printLayoutParams instanceof PrintPriceStickers)) {
3241
- this.sendMethodParams.goodId = data.goodId;
3242
- this.sendMethodParams.warehouse = data.warehouseNo;
3243
- }
2010
+ this._subscriptions.push(this._optionsService.optionsLoaded.subscribe(loaded => this._handleSettingsLoaded(loaded)), this._sendMethodService.reportingDocumentPrintBaseRequestChanged.subscribe((value) => this.reportingDocumentPrintRequestChange.next(value)), this._sendMethodService.reportingDocumentEmailBaseRequestChanged.subscribe((value) => this.reportingDocumentEmailRequestChange.next(value)), this._sendMethodService.reportingDocumentPdfBaseRequestChanged.subscribe((value) => this.reportingDocumentPdfRequestChange.next(value)));
3244
2011
  }
3245
- ;
3246
2012
  showClass() {
3247
2013
  return true;
3248
2014
  }
3249
2015
  ngOnInit() {
3250
- this.getDefaultSendMethod();
3251
- this.getDefaultEmailLayouts();
2016
+ if (this.reportingDocumentEmailRequest) {
2017
+ this._sendMethodService.reportingDocumentEmailBaseRequest = this.reportingDocumentEmailRequest;
2018
+ }
2019
+ if (this.reportingDocumentPrintRequest) {
2020
+ this._sendMethodService.reportingDocumentPrintBaseRequest = this.reportingDocumentPrintRequest;
2021
+ }
2022
+ if (this.reportingDocumentPdfRequest) {
2023
+ this._sendMethodService.reportingDocumentPdfBaseRequest = this.reportingDocumentPdfRequest;
2024
+ }
2025
+ this._selectDefaultSendMethod();
2026
+ this._prepareVisibleMethods();
3252
2027
  }
3253
2028
  ngOnDestroy() {
3254
2029
  this._subscriptions.forEach(subscription => subscription.unsubscribe());
3255
2030
  }
3256
- getPrinters() {
3257
- return __awaiter(this, void 0, void 0, function* () {
3258
- return this.stockService.getAllPrinters(true).then((list) => {
3259
- this.printerList = list;
3260
- });
3261
- });
3262
- }
3263
- closeDialogClick() {
3264
- this.showDialog = false;
3265
- }
3266
2031
  handleSignatureStart() {
3267
2032
  this.docSign = !this.docSign;
3268
2033
  this.startSignatureClicked.emit();
3269
2034
  }
3270
- sendEmail() {
3271
- this.sendEmailClicked.emit();
3272
- this.printLayoutParams.emit(this.sendMethodParams);
3273
- }
3274
- handlePrintClicked() {
3275
- if (this.sendMethodParams.printerName) {
3276
- this.printButtonClicked.emit();
2035
+ handleSendMethodClick(sendMethod) {
2036
+ this.activeSendMethod = sendMethod;
2037
+ if (sendMethod.code === SendMethodType.Fax && this.showFax) {
2038
+ this.navigationItems.nativeElement.scrollLeft = this.faxItems.nativeElement.offsetLeft - this.navigationItems.nativeElement.offsetLeft;
2039
+ }
2040
+ else if (sendMethod.code === SendMethodType.Print && this.showPrint) {
2041
+ this.navigationItems.nativeElement.scrollLeft = this.printItems.nativeElement.offsetLeft - this.navigationItems.nativeElement.offsetLeft;
2042
+ }
2043
+ else if (sendMethod.code === SendMethodType.Email && this.showEmail) {
2044
+ this.navigationItems.nativeElement.scrollLeft = this.emailItems.nativeElement.offsetLeft - this.navigationItems.nativeElement.offsetLeft;
2045
+ }
2046
+ else if (sendMethod.code === SendMethodType.Edi && this.showEdi) {
2047
+ this.navigationItems.nativeElement.scrollLeft = this.ediItems.nativeElement.offsetLeft - this.navigationItems.nativeElement.offsetLeft;
2048
+ }
2049
+ else if (sendMethod.code === SendMethodType.EmailTemplate && this.showEmailTemplate) {
2050
+ this.navigationItems.nativeElement.scrollLeft = this.emailTemplateItems.nativeElement.offsetLeft - this.navigationItems.nativeElement.offsetLeft;
2051
+ }
2052
+ else if (sendMethod.code === SendMethodType.Sms && this.showSms) {
2053
+ this.navigationItems.nativeElement.scrollLeft = this.smsItems.nativeElement.offsetLeft - this.navigationItems.nativeElement.offsetLeft;
2054
+ }
2055
+ else if (sendMethod.code === SendMethodType.WebService && this.showWebservice) {
2056
+ this.navigationItems.nativeElement.scrollLeft = this.webServiceItems.nativeElement.offsetLeft - this.navigationItems.nativeElement.offsetLeft;
3277
2057
  }
3278
2058
  }
3279
- togglePrinterSelection() {
3280
- this.getPrinters();
3281
- if (!this.showPrinterSelections) {
3282
- this.showPrinterSelections = true;
3283
- this.headerTitle = 'Printer selectie';
2059
+ _selectDefaultSendMethod() {
2060
+ if (this.defaultSendMethod) {
2061
+ const sendMethod = this.sendMethods.find(sm => sm.code === this.defaultSendMethod);
2062
+ if (sendMethod) {
2063
+ setTimeout(() => {
2064
+ this.handleSendMethodClick(sendMethod);
2065
+ this.startUp = false;
2066
+ });
2067
+ }
3284
2068
  }
3285
2069
  else {
3286
- this.showPrinterSelections = false;
3287
- this.headerTitle = 'Verzendopties';
2070
+ this.startUp = false;
3288
2071
  }
3289
2072
  }
3290
- onPrinterClicked(printer) {
3291
- this.defaultPrinter = printer.name;
3292
- this.sendMethodParams.printerName = printer.name;
3293
- this.showPrinterSelections = !this.showPrinterSelections;
3294
- }
3295
- getPrintTemplates() {
3296
- this.printTemplatesClicked.emit();
3297
- }
3298
- getDefaultSendMethod() {
3299
- this.defaultSendMethodClicked.emit();
3300
- }
3301
- getDefaultEmailLayouts() {
3302
- return __awaiter(this, void 0, void 0, function* () {
3303
- this.emailLayoutClicked.emit();
3304
- });
2073
+ _prepareVisibleMethods() {
2074
+ if (this.visibleMethods && this.visibleMethods.length > 0) {
2075
+ this.sendMethods = this.sendMethods.filter(sm => this.visibleMethods.find(vm => vm === sm.code));
2076
+ }
2077
+ this.showFax = this.sendMethods.find(sm => sm.code === SendMethodType.Fax) !== undefined;
2078
+ this.showPrint = this.sendMethods.find(sm => sm.code === SendMethodType.Print) !== undefined;
2079
+ this.showEmail = this.sendMethods.find(sm => sm.code === SendMethodType.Email) !== undefined;
2080
+ this.showEdi = this.sendMethods.find(sm => sm.code === SendMethodType.Edi) !== undefined;
2081
+ this.showEmailTemplate = this.sendMethods.find(sm => sm.code === SendMethodType.EmailTemplate) !== undefined;
2082
+ this.showSms = this.sendMethods.find(sm => sm.code === SendMethodType.Sms) !== undefined;
2083
+ this.showWebservice = this.sendMethods.find(sm => sm.code === SendMethodType.WebService) !== undefined;
3305
2084
  }
3306
2085
  _handleSettingsLoaded(loaded) {
3307
2086
  return __awaiter(this, void 0, void 0, function* () {
@@ -3315,7 +2094,7 @@ class SendMethodDialogComponent {
3315
2094
  return __awaiter(this, void 0, void 0, function* () {
3316
2095
  // await this._connector.connect(this._optionsService.options);
3317
2096
  if (this._optionsService.options.url) {
3318
- this._dictionary.rootUrl = this._optionsService.options.url.replace("/ajaxservice", "");
2097
+ this._dictionary.rootUrl = this._optionsService.options.url.replace('/ajaxservice', '');
3319
2098
  }
3320
2099
  yield this._dictionary.setDictionary(this._optionsService.options.languageCode);
3321
2100
  setTimeout(() => {
@@ -3326,141 +2105,57 @@ class SendMethodDialogComponent {
3326
2105
  }
3327
2106
  SendMethodDialogComponent.decorators = [
3328
2107
  { type: Component, args: [{
3329
- selector: "ione-send-method-dialog",
2108
+ selector: 'co-send-method-dialog',
3330
2109
  template: `
3331
- <div class="send-method-dialog-wrapper">
3332
- <co-dialog id="sendOptionsDialog" [headerTemplate]="headerTemplate" *ngIf="showDialog" [showCloseIcon]="showExitButton" (closeClick)="closeDialogClick()">
3333
- <ng-template #headerTemplate>
3334
- <h2 [textContent]="headerTitle"></h2>
3335
- </ng-template>
3336
- <div class="dialog-content-wrapper">
3337
- <div class="main-content-container" *ngIf="!showPrinterSelections">
3338
- <div class="send-options-wrapper">
3339
- <div class="custom-button-wrapper"
3340
- *ngFor="let sendOption of sendOptions"
3341
- [class.selected-option]="sendOption.option === activeSendOption"
3342
- (click)="activeSendOption = sendOption.option">
3343
- <co-icon [iconData]="iconCacheService.getIcon(sendOption.iconName)"></co-icon>
3344
- </div>
3345
- </div>
3346
-
3347
- <div class="email-option-content" *ngIf="activeSendOption === sendOption.Email || activeSendOption === sendOption.Pdf">
3348
- <div class="emails-container" *ngIf="activeSendOption === sendOption.Email">
3349
- <co-input-checkbox
3350
- *ngFor="let email of emailAdresses"
3351
- [(model)]="email.name"
3352
- [label]="email"
3353
- [cssClass]="'input-checkbox-wrapper'"
3354
- ></co-input-checkbox>
3355
- </div>
3356
-
3357
- <div class="lov-wrapper" (click)="getDefaultEmailLayouts()">
3358
- <co-input-combo-box
3359
- [(model)]="sendMethodParams.reportId"
3360
- [collection]="emailLayouts"
3361
- [fields]="emailLayoutField"
3362
- placeholder="Layout"
3363
- ></co-input-combo-box>
3364
- </div>
3365
-
3366
- <div *ngIf="isDocSignEnabled" class="signature-button-wrapper">
3367
- <div class="custom-button-wrapper signature-button" (click)="handleSignatureStart()">
3368
- <co-icon [iconData]="iconCacheService.getIcon(icons.SignatureField)"></co-icon>
3369
- </div>
3370
- <div class="custom-button-wrapper send-button" (click)="sendEmail()">
3371
- <co-icon [iconData]="iconCacheService.getIcon(icons.Email)"></co-icon>
3372
- </div>
3373
- </div>
3374
-
3375
- <ione-docsign *ngIf="docSign"></ione-docsign>
3376
- </div>
3377
-
3378
- <div class="email-option-content" *ngIf="activeSendOption === sendOption.Print" (click)="getPrintTemplates()">
3379
- <div *ngIf="showPrintPriceStickers">
3380
- <div class="lov-wrapper">
3381
- <co-input-combo-box
3382
- [(model)]="sendMethodParams.reportId"
3383
- [collection]="printLayouts"
3384
- [fields]="printTemplatesField"
3385
- placeholder="Layout"
3386
- ></co-input-combo-box>
3387
- </div>
3388
- <div class="lov-wrapper" *ngIf="priceListCodeData">
3389
- <co-input-combo-box
3390
- [(model)]="sendMethodParams.priceListCode"
3391
- [collection]="priceListCodeData"
3392
- [fields]="priceListDataField"
3393
- placeholder="Layout"
3394
- ></co-input-combo-box>
3395
- </div>
3396
- </div>
2110
+ <co-dialog id="sendOptionsDialog" [headerTemplate]="headerTemplate" [footerTemplate]="footerTemplate"
2111
+ (closeClick)="closeClick.emit($event)">
2112
+ <ng-template #headerTemplate>
2113
+ <div class="co-dialog-header-title" [textContent]="headerTitle"></div>
2114
+ </ng-template>
2115
+ <div class="dialog-content-wrapper">
2116
+ <div class="send-methods-wrapper">
2117
+ <div class="send-button-wrapper" *ngFor="let sendMethod of sendMethods; let index = index"
2118
+ [class.selected]="activeSendMethod ? sendMethod.code === activeSendMethod.code : index === 0"
2119
+ (click)="handleSendMethodClick(sendMethod)">
2120
+ <co-icon class="custom-button-icon" [iconData]="iconCacheService.getIcon(sendMethod.icon)"></co-icon>
2121
+ <div class="custom-button-title" [textContent]="sendMethod.description"></div>
2122
+ </div>
2123
+ </div>
2124
+ <div #navigationItems class="send-method-navigation-wrapper" [class.smooth-scrolling]="!startUp">
2125
+ <div #faxItems class="send-method-navigation-content co-small-scrollbar">
3397
2126
 
3398
- <div class="lov-wrapper clickable" (click)="togglePrinterSelection()">
3399
- <div class="selected-printer-wrapper">
3400
- <div class="printer-option-list-item">
3401
- <co-icon class="printer-icon" [iconData]="iconCacheService.getIcon(icons.PrintRegular)"></co-icon>
3402
- <div class="printer-details" *ngIf="printerList">
3403
- <span class="printer-name" [textContent]="defaultPrinter"></span>
3404
- <span class="printer-status" [textContent]="defaultPrinter.acceptingJobs"></span>
3405
- </div>
3406
- </div>
3407
- <co-icon class="select-printer-arrow" [iconData]="iconCacheService.getIcon(icons.ArrowPointRight)"></co-icon>
3408
- </div>
3409
- </div>
2127
+ </div>
2128
+ <div #printItems class="send-method-navigation-content co-small-scrollbar" *ngIf="showPrint">
2129
+ <co-send-method-printer
2130
+ [layouts]="printLayouts"
2131
+ ></co-send-method-printer>
2132
+ </div>
2133
+ <div #emailItems class="send-method-navigation-content co-small-scrollbar" *ngIf="showEmail">
2134
+ <co-send-method-email
2135
+ [emailAddresses]="emailAddresses"
2136
+ [layouts]="emailLayouts"
2137
+ ></co-send-method-email>
2138
+ </div>
2139
+ <div #ediItems class="send-method-navigation-content co-small-scrollbar" *ngIf="showEdi">
3410
2140
 
3411
- <div class="standard-printer-wrapper">
3412
- <div class="standard-printer-link" (click)="showStandardPrinterOptions = !showStandardPrinterOptions">
3413
- <co-icon class="arrow-icon" [iconData]="iconCacheService.getIcon(icons.ArrowFatRight)"></co-icon>
3414
- <span class="standard-printer-message" [textContent]="'Standaard printer voor lay-out instellen'"></span>
3415
- </div>
2141
+ </div>
2142
+ <div #emailTemplateItems class="send-method-navigation-content co-small-scrollbar" *ngIf="showEmailTemplate">
3416
2143
 
3417
- <div class="standard-printer-selections" *ngIf="showStandardPrinterOptions">
3418
- <co-input-checkbox
3419
- [(model)]="models[0]"
3420
- [label]="'Per gebruiker instellen'"
3421
- [cssClass]="'input-checkbox-wrapper'"
3422
- ></co-input-checkbox>
3423
- <co-input-checkbox
3424
- [(model)]="models[1]"
3425
- [label]="'Voor alle gebruikers instellen'"
3426
- [cssClass]="'input-checkbox-wrapper'"
3427
- ></co-input-checkbox>
3428
- </div>
3429
- </div>
2144
+ </div>
2145
+ <div #smsItems class="send-method-navigation-content co-small-scrollbar" *ngIf="showSms">
3430
2146
 
3431
- <div class="print-footer-wrapper">
3432
- <div class="input-number-wrapper">
3433
- <co-input-number-picker class="number-picker"
3434
- [step]="1" [(model)]="sendMethodParams.amount" [min]="1"
3435
- [ngModelOptions]="{debounce: 1}">
3436
- </co-input-number-picker>
3437
- </div>
3438
- <div class="custom-button-wrapper print-button" (click)="handlePrintClicked()">
3439
- <span [textContent]="'Print'"></span>
3440
- </div>
3441
- <div class="custom-button-wrapper signature-button" (click)="handleSignatureStart()">
3442
- <co-icon [iconData]="iconCacheService.getIcon(icons.SignatureField)"></co-icon>
3443
- </div>
3444
- </div>
3445
- </div>
3446
2147
  </div>
2148
+ <div #webServiceItems class="send-method-navigation-content co-small-scrollbar" *ngIf="showWebservice">
3447
2149
 
3448
- <div class="printer-content-container" @slideInOut *ngIf="showPrinterSelections">
3449
- <div class="selected-printer-wrapper selection clickable" *ngFor="let printers of printerList" (click)="onPrinterClicked(printers)">
3450
- <div class="printer-option-list-item">
3451
- <co-icon class="printer-icon" [iconData]="iconCacheService.getIcon(icons.PrintRegular)"></co-icon>
3452
- <div class="printer-details">
3453
- <span class="printer-name" [textContent]="printers.name"></span>
3454
- <span class="printer-status" [textContent]="printers.acceptingJobs"></span>
3455
- </div>
3456
- </div>
3457
- <co-icon class="select-printer-arrow" *ngIf="!showPrinterSelections"
3458
- [iconData]="iconCacheService.getIcon(icons.ArrowPointRight)"></co-icon>
3459
- </div>
3460
2150
  </div>
3461
2151
  </div>
3462
- </co-dialog>
3463
- </div>
2152
+ </div>
2153
+ <ng-template #footerTemplate>
2154
+ <div class="co-dialog-footer-button-wrapper">
2155
+ <co-button [label]="'Ok'" (click)="okClick.emit(activeSendMethod ? activeSendMethod.code : '0')"></co-button>
2156
+ </div>
2157
+ </ng-template>
2158
+ </co-dialog>
3464
2159
  `,
3465
2160
  encapsulation: ViewEncapsulation.None,
3466
2161
  animations: [
@@ -3474,41 +2169,348 @@ SendMethodDialogComponent.decorators = [
3474
2169
  ];
3475
2170
  SendMethodDialogComponent.ctorParameters = () => [
3476
2171
  { type: IconCacheService },
3477
- { type: StockService },
3478
2172
  { type: OptionsService },
3479
2173
  { type: DictionaryService },
3480
- { type: ChangeDetectorRef }
2174
+ { type: ChangeDetectorRef },
2175
+ { type: SharedService },
2176
+ { type: SendMethodService }
3481
2177
  ];
3482
2178
  SendMethodDialogComponent.propDecorators = {
3483
- showEmailOption: [{ type: Input }],
3484
- showPrintOption: [{ type: Input }],
3485
- showPdfOption: [{ type: Input }],
3486
- showXmlOption: [{ type: Input }],
3487
- showPrintPriceStickers: [{ type: Input }],
3488
- priceListCodeData: [{ type: Input }],
3489
- transactionUUID: [{ type: Input }],
3490
- showDialog: [{ type: Input }],
3491
- headerTitle: [{ type: Input }],
3492
- printerList: [{ type: Input }],
3493
- relationId: [{ type: Input }],
3494
- emailAdresses: [{ type: Input }],
2179
+ navigationItems: [{ type: ViewChild, args: ['navigationItems', { read: ElementRef },] }],
2180
+ faxItems: [{ type: ViewChild, args: ['faxItems', { read: ElementRef },] }],
2181
+ printItems: [{ type: ViewChild, args: ['printItems', { read: ElementRef },] }],
2182
+ emailItems: [{ type: ViewChild, args: ['emailItems', { read: ElementRef },] }],
2183
+ ediItems: [{ type: ViewChild, args: ['ediItems', { read: ElementRef },] }],
2184
+ emailTemplateItems: [{ type: ViewChild, args: ['emailTemplateItems', { read: ElementRef },] }],
2185
+ smsItems: [{ type: ViewChild, args: ['smsItems', { read: ElementRef },] }],
2186
+ webServiceItems: [{ type: ViewChild, args: ['webServiceItems', { read: ElementRef },] }],
2187
+ reportingDocumentPrintRequest: [{ type: Input }],
2188
+ reportingDocumentEmailRequest: [{ type: Input }],
2189
+ reportingDocumentPdfRequest: [{ type: Input }],
3495
2190
  emailLayouts: [{ type: Input }],
3496
2191
  printLayouts: [{ type: Input }],
2192
+ headerTitle: [{ type: Input }],
2193
+ emailAddresses: [{ type: Input }],
3497
2194
  defaultSendMethod: [{ type: Input }],
3498
- defaultEmailAdresses: [{ type: Input }],
2195
+ visibleMethods: [{ type: Input }],
3499
2196
  isDocSignEnabled: [{ type: Input }],
3500
2197
  docSign: [{ type: Input }],
3501
- articleData: [{ type: Input }],
2198
+ reportingDocumentPrintRequestChange: [{ type: Output }],
2199
+ reportingDocumentEmailRequestChange: [{ type: Output }],
2200
+ reportingDocumentPdfRequestChange: [{ type: Output }],
3502
2201
  startSignatureClicked: [{ type: Output }],
3503
- sendEmailClicked: [{ type: Output }],
3504
- printButtonClicked: [{ type: Output }],
3505
- emailLayoutClicked: [{ type: Output }],
3506
- showClass: [{ type: HostBinding, args: ["class.ione-send-method-dialog",] }],
3507
- printTemplatesClicked: [{ type: Output }],
3508
- defaultSendMethodClicked: [{ type: Output }],
3509
- printLayoutParams: [{ type: Output }]
2202
+ closeClick: [{ type: Output }],
2203
+ okClick: [{ type: Output }],
2204
+ showClass: [{ type: HostBinding, args: ['class.co-send-method-dialog',] }]
2205
+ };
2206
+
2207
+ class EmailAddressViewmodel {
2208
+ constructor(checked, emailAddress) {
2209
+ this.checked = checked;
2210
+ this.emailAddress = emailAddress;
2211
+ }
2212
+ }
2213
+
2214
+ class SendMethodEmailComponent {
2215
+ constructor(sendMethodService) {
2216
+ this.sendMethodService = sendMethodService;
2217
+ this.emailAddresses = [];
2218
+ this.layouts = [];
2219
+ this.emailAddressViewmodels = [];
2220
+ }
2221
+ showClass() {
2222
+ return true;
2223
+ }
2224
+ ngOnInit() {
2225
+ if (this.emailAddresses) {
2226
+ this.emailAddresses.forEach((ea) => {
2227
+ const emailAddressViewmodel = new EmailAddressViewmodel(this.sendMethodService.selectedEmailAddresses.indexOf(ea) > -1, ea);
2228
+ this.emailAddressViewmodels.push(emailAddressViewmodel);
2229
+ });
2230
+ }
2231
+ }
2232
+ handleCheckedEmail(emailAddressViewmodel) {
2233
+ const wantedValue = !emailAddressViewmodel.checked;
2234
+ if (!wantedValue) {
2235
+ this.sendMethodService.removeEmailAddress(emailAddressViewmodel.emailAddress);
2236
+ }
2237
+ else {
2238
+ this.sendMethodService.addEmailAddress(emailAddressViewmodel.emailAddress);
2239
+ }
2240
+ emailAddressViewmodel.checked = wantedValue;
2241
+ }
2242
+ }
2243
+ SendMethodEmailComponent.decorators = [
2244
+ { type: Component, args: [{
2245
+ selector: 'co-send-method-email',
2246
+ template: `
2247
+ <div class="email-addresses-wrapper co-small-scrollbar">
2248
+ <div class="email-address-wrapper" *ngFor="let emailAddressViewmodel of emailAddressViewmodels" (click)="handleCheckedEmail(emailAddressViewmodel)">
2249
+ <co-input-checkbox [model]="emailAddressViewmodel.checked" (modelChange)="handleCheckedEmail(emailAddressViewmodel)"></co-input-checkbox>
2250
+ <div class="email-address" [textContent]="emailAddressViewmodel.emailAddress"></div>
2251
+ </div>
2252
+ </div>
2253
+ <co-layout-selection
2254
+ [(request)]="sendMethodService.reportingDocumentEmailBaseRequest"
2255
+ [layouts]="layouts"
2256
+ ></co-layout-selection>
2257
+ `,
2258
+ encapsulation: ViewEncapsulation.None
2259
+ },] }
2260
+ ];
2261
+ SendMethodEmailComponent.ctorParameters = () => [
2262
+ { type: SendMethodService }
2263
+ ];
2264
+ SendMethodEmailComponent.propDecorators = {
2265
+ emailAddresses: [{ type: Input }],
2266
+ layouts: [{ type: Input }],
2267
+ showClass: [{ type: HostBinding, args: ['class.co-send-method-email',] }]
2268
+ };
2269
+
2270
+ class LayoutSelectionComponent {
2271
+ constructor() {
2272
+ this.layouts = [];
2273
+ this.requestChange = new EventEmitter();
2274
+ this.showLayoutList = false;
2275
+ }
2276
+ showClass() {
2277
+ return true;
2278
+ }
2279
+ ngOnInit() {
2280
+ if (this.layouts && this.layouts.length > 0) {
2281
+ this.currentLayout = this.layouts.find(l => l.reportId === this.request.reportId);
2282
+ }
2283
+ }
2284
+ handleSelectLayout(reportLayout) {
2285
+ this.currentLayout = reportLayout;
2286
+ this.request.reportId = this.currentLayout.reportId;
2287
+ this.requestChange.emit(this.request);
2288
+ this.showLayoutList = false;
2289
+ }
2290
+ }
2291
+ LayoutSelectionComponent.decorators = [
2292
+ { type: Component, args: [{
2293
+ selector: 'co-layout-selection',
2294
+ template: `
2295
+ <div class="layout-selection-wrapper" (click)="showLayoutList = !showLayoutList">
2296
+ <div class="title" [textContent]="'Lay-out'"></div>
2297
+ <div class="layout-description" [textContent]="currentLayout?.description || 'Layout kiezen'"></div>
2298
+ </div>
2299
+ <div class="layouts-wrapper co-small-scrollbar" *ngIf="showLayoutList" @showHideLayouts>
2300
+ <div class="layout-selection-wrapper" *ngFor="let reportLayout of layouts"
2301
+ [class.selected]="reportLayout.reportId === currentLayout?.reportId"
2302
+ (click)="handleSelectLayout(reportLayout)">
2303
+ <div class="layout-description" [textContent]="reportLayout.description"></div>
2304
+ </div>
2305
+ </div>
2306
+ `,
2307
+ animations: [
2308
+ trigger("showHideLayouts", [
2309
+ state("void", style({ height: 0 })),
2310
+ state("*", style({ height: "50%" })),
2311
+ transition("void => *", animate("200ms ease-in-out")),
2312
+ transition("* => void", animate("200ms ease-out"))
2313
+ ])
2314
+ ],
2315
+ encapsulation: ViewEncapsulation.None
2316
+ },] }
2317
+ ];
2318
+ LayoutSelectionComponent.propDecorators = {
2319
+ request: [{ type: Input }],
2320
+ layouts: [{ type: Input }],
2321
+ requestChange: [{ type: Output }],
2322
+ showClass: [{ type: HostBinding, args: ['class.co-layout-selection',] }]
2323
+ };
2324
+
2325
+ class LayoutSelectionModule {
2326
+ }
2327
+ LayoutSelectionModule.decorators = [
2328
+ { type: NgModule, args: [{
2329
+ imports: [
2330
+ CommonModule
2331
+ ],
2332
+ declarations: [
2333
+ LayoutSelectionComponent
2334
+ ],
2335
+ exports: [
2336
+ LayoutSelectionComponent
2337
+ ]
2338
+ },] }
2339
+ ];
2340
+
2341
+ class SendMethodEmailModule {
2342
+ }
2343
+ SendMethodEmailModule.decorators = [
2344
+ { type: NgModule, args: [{
2345
+ imports: [
2346
+ CommonModule,
2347
+ InputCheckboxModule,
2348
+ LayoutSelectionModule
2349
+ ],
2350
+ declarations: [
2351
+ SendMethodEmailComponent
2352
+ ],
2353
+ exports: [
2354
+ SendMethodEmailComponent
2355
+ ]
2356
+ },] }
2357
+ ];
2358
+
2359
+ class SendMethodPrinterComponent {
2360
+ constructor(sendMethodService) {
2361
+ this.sendMethodService = sendMethodService;
2362
+ this.layouts = [];
2363
+ }
2364
+ showClass() {
2365
+ return true;
2366
+ }
2367
+ handleDefaultPrinterUserChange(checked) {
2368
+ this.sendMethodService.reportingDocumentPrintBaseRequest.saveDefaultPrinterForUser = checked;
2369
+ this.sendMethodService.reportingDocumentPrintBaseRequestChanged.next(this.sendMethodService.reportingDocumentPrintBaseRequest);
2370
+ }
2371
+ handleDefaultPrinterAllUsersChange(checked) {
2372
+ this.sendMethodService.reportingDocumentPrintBaseRequest.saveDefaultPrinterForAllUsers = checked;
2373
+ this.sendMethodService.reportingDocumentPrintBaseRequestChanged.next(this.sendMethodService.reportingDocumentPrintBaseRequest);
2374
+ }
2375
+ }
2376
+ SendMethodPrinterComponent.decorators = [
2377
+ { type: Component, args: [{
2378
+ selector: 'co-send-method-printer',
2379
+ template: `
2380
+ <co-printer-selection></co-printer-selection>
2381
+ <co-layout-selection
2382
+ [(request)]="sendMethodService.reportingDocumentPrintBaseRequest"
2383
+ [layouts]="layouts"
2384
+ ></co-layout-selection>
2385
+ <co-input-checkbox
2386
+ [model]="sendMethodService.reportingDocumentPrintBaseRequest.saveDefaultPrinterForUser"
2387
+ [label]="'Koppeling onthouden'"
2388
+ (modelChange)="handleDefaultPrinterUserChange($event)"
2389
+ ></co-input-checkbox>
2390
+ <co-input-checkbox
2391
+ [model]="sendMethodService.reportingDocumentPrintBaseRequest.saveDefaultPrinterForAllUsers"
2392
+ [label]="'Alle gebruikers'"
2393
+ (modelChange)="handleDefaultPrinterAllUsersChange($event)"
2394
+ ></co-input-checkbox>
2395
+ `,
2396
+ encapsulation: ViewEncapsulation.None
2397
+ },] }
2398
+ ];
2399
+ SendMethodPrinterComponent.ctorParameters = () => [
2400
+ { type: SendMethodService }
2401
+ ];
2402
+ SendMethodPrinterComponent.propDecorators = {
2403
+ layouts: [{ type: Input }],
2404
+ showClass: [{ type: HostBinding, args: ['class.co-send-method-printer',] }]
2405
+ };
2406
+
2407
+ class PrinterSelectionComponent {
2408
+ constructor(sendMethodService, iconService, _service) {
2409
+ this.sendMethodService = sendMethodService;
2410
+ this.iconService = iconService;
2411
+ this._service = _service;
2412
+ this.icons = Icon;
2413
+ this.printers = [];
2414
+ this.showPrinterList = false;
2415
+ }
2416
+ showClass() {
2417
+ return true;
2418
+ }
2419
+ ngOnInit() {
2420
+ this._service.getAllPrinters().then((printers) => {
2421
+ this.printers = printers;
2422
+ if (!this.sendMethodService.reportingDocumentPrintBaseRequest.printerName) {
2423
+ const defaultPrinter = this.printers.find(p => p.isDefault);
2424
+ if (defaultPrinter) {
2425
+ this.sendMethodService.reportingDocumentPrintBaseRequest.printerName = defaultPrinter.name;
2426
+ this.sendMethodService.reportingDocumentPrintBaseRequestChanged.next(this.sendMethodService.reportingDocumentPrintBaseRequest);
2427
+ }
2428
+ }
2429
+ });
2430
+ }
2431
+ handlePrinterClicked(printer) {
2432
+ this.sendMethodService.reportingDocumentPrintBaseRequest.printerName = printer.name;
2433
+ this.sendMethodService.reportingDocumentPrintBaseRequestChanged.next(this.sendMethodService.reportingDocumentPrintBaseRequest);
2434
+ this.showPrinterList = false;
2435
+ }
2436
+ }
2437
+ PrinterSelectionComponent.decorators = [
2438
+ { type: Component, args: [{
2439
+ selector: 'co-printer-selection',
2440
+ template: `
2441
+ <div class="printer-selection-wrapper" (click)="showPrinterList = !showPrinterList">
2442
+ <div class="title" [textContent]="'Printer'"></div>
2443
+ <div class="printer-name" [textContent]="sendMethodService.reportingDocumentPrintBaseRequest.printerName || 'Printer kiezen'"></div>
2444
+ </div>
2445
+ <div class="layouts-wrapper co-small-scrollbar" *ngIf="showPrinterList" @showHideLayouts>
2446
+ <div class="printer-list-item" *ngFor="let printer of printers"
2447
+ [class.selected]="sendMethodService.reportingDocumentPrintBaseRequest.printerName === printer.name"
2448
+ (click)="handlePrinterClicked(printer)">
2449
+ <co-icon class="printer-icon" [iconData]="iconService.getIcon(icons.PrintRegular)"></co-icon>
2450
+ <div class="printer-details">
2451
+ <span class="printer-name" [textContent]="printer.name"></span>
2452
+ <span class="printer-status" [textContent]="printer.acceptingJobs"></span>
2453
+ </div>
2454
+ </div>
2455
+ </div>
2456
+ `,
2457
+ animations: [
2458
+ trigger('showHideLayouts', [
2459
+ state('void', style({ height: 0 })),
2460
+ state('*', style({ height: '50%' })),
2461
+ transition('void => *', animate('200ms ease-in-out')),
2462
+ transition('* => void', animate('200ms ease-out'))
2463
+ ])
2464
+ ],
2465
+ encapsulation: ViewEncapsulation.None
2466
+ },] }
2467
+ ];
2468
+ PrinterSelectionComponent.ctorParameters = () => [
2469
+ { type: SendMethodService },
2470
+ { type: IconCacheService },
2471
+ { type: SharedService }
2472
+ ];
2473
+ PrinterSelectionComponent.propDecorators = {
2474
+ showClass: [{ type: HostBinding, args: ['class.co-printer-selection',] }]
3510
2475
  };
3511
2476
 
2477
+ class PrinterSelectionModule {
2478
+ }
2479
+ PrinterSelectionModule.decorators = [
2480
+ { type: NgModule, args: [{
2481
+ imports: [
2482
+ CommonModule,
2483
+ IconModule
2484
+ ],
2485
+ declarations: [
2486
+ PrinterSelectionComponent
2487
+ ],
2488
+ exports: [
2489
+ PrinterSelectionComponent
2490
+ ]
2491
+ },] }
2492
+ ];
2493
+
2494
+ class SendMethodPrinterModule {
2495
+ }
2496
+ SendMethodPrinterModule.decorators = [
2497
+ { type: NgModule, args: [{
2498
+ imports: [
2499
+ CommonModule,
2500
+ IconModule,
2501
+ LayoutSelectionModule,
2502
+ PrinterSelectionModule,
2503
+ InputCheckboxModule
2504
+ ],
2505
+ declarations: [
2506
+ SendMethodPrinterComponent
2507
+ ],
2508
+ exports: [
2509
+ SendMethodPrinterComponent
2510
+ ]
2511
+ },] }
2512
+ ];
2513
+
3512
2514
  class SendMethodDialogModule {
3513
2515
  }
3514
2516
  SendMethodDialogModule.decorators = [
@@ -3518,20 +2520,17 @@ SendMethodDialogModule.decorators = [
3518
2520
  ],
3519
2521
  imports: [
3520
2522
  CommonModule,
3521
- CoDialogPromptModule,
3522
- InputCheckboxModule,
3523
- InputComboBoxModule,
2523
+ CoDialogModule,
3524
2524
  IconModule,
3525
- InputNumberPickerModule,
3526
- CoDialogWizardModule,
3527
- ButtonModule,
3528
- DocsignModule,
3529
- CoDialogModule
2525
+ SendMethodEmailModule,
2526
+ SendMethodPrinterModule,
2527
+ ButtonModule
3530
2528
  ],
3531
2529
  exports: [
3532
2530
  SendMethodDialogComponent
3533
2531
  ],
3534
2532
  providers: [
2533
+ SendMethodService,
3535
2534
  StockService
3536
2535
  ]
3537
2536
  },] }
@@ -3552,6 +2551,8 @@ class StockChangeAmountComponent {
3552
2551
  }
3553
2552
  handleOkClick(data) {
3554
2553
  return __awaiter(this, void 0, void 0, function* () {
2554
+ data.selected = true;
2555
+ data.entryDate = new Date();
3555
2556
  yield this._stockService.updateArticleDetails(data);
3556
2557
  });
3557
2558
  }
@@ -3901,7 +2902,7 @@ class LayoutSwitcherComponent {
3901
2902
  }
3902
2903
  LayoutSwitcherComponent.decorators = [
3903
2904
  { type: Component, args: [{
3904
- selector: "layout-switcher",
2905
+ selector: "co-layout-switcher",
3905
2906
  template: `
3906
2907
  <div class="mask-wrapper" [class.mask-wrapper-active]='showMaskSidebar' @showHideSidebar>
3907
2908
  <div class="icon-wrapper" (click)="toggleMaskSidebar()">
@@ -3940,7 +2941,7 @@ LayoutSwitcherComponent.ctorParameters = () => [
3940
2941
  { type: IconCacheService }
3941
2942
  ];
3942
2943
  LayoutSwitcherComponent.propDecorators = {
3943
- showClass: [{ type: HostBinding, args: ['class.layout-switcher',] }],
2944
+ showClass: [{ type: HostBinding, args: ['class.co-layout-switcher',] }],
3944
2945
  layoutItems: [{ type: Input }],
3945
2946
  layoutSwitchEmit: [{ type: Output }]
3946
2947
  };
@@ -4285,6 +3286,7 @@ class DatePlanningComponent {
4285
3286
  this.rangeChange = new EventEmitter();
4286
3287
  this.viewChange = new EventEmitter();
4287
3288
  this.buttonClick = new EventEmitter();
3289
+ this.showClass = true;
4288
3290
  this.days = [];
4289
3291
  this._selectedDate = new Date();
4290
3292
  }
@@ -4315,7 +3317,7 @@ class DatePlanningComponent {
4315
3317
  }
4316
3318
  DatePlanningComponent.decorators = [
4317
3319
  { type: Component, args: [{
4318
- selector: "sc-date-planning",
3320
+ selector: "co-date-planning",
4319
3321
  template: `
4320
3322
  <div class="sc-agenda">
4321
3323
  <div class="content-wrapper">
@@ -4361,6 +3363,7 @@ DatePlanningComponent.ctorParameters = () => [
4361
3363
  { type: Renderer2 }
4362
3364
  ];
4363
3365
  DatePlanningComponent.propDecorators = {
3366
+ dayStart: [{ type: ViewChild, args: ["dayStart", { static: true },] }],
4364
3367
  calendarNavigation: [{ type: Input }],
4365
3368
  showButton: [{ type: Input }],
4366
3369
  selectedDate: [{ type: Input }],
@@ -4373,7 +3376,7 @@ DatePlanningComponent.propDecorators = {
4373
3376
  rangeChange: [{ type: Output }],
4374
3377
  viewChange: [{ type: Output }],
4375
3378
  buttonClick: [{ type: Output }],
4376
- dayStart: [{ type: ViewChild, args: ["dayStart", { static: true },] }]
3379
+ showClass: [{ type: HostBinding, args: ["class.co-date-planning",] }]
4377
3380
  };
4378
3381
 
4379
3382
  class CalendarAllYearsComponent {
@@ -4644,6 +3647,11 @@ ArrayNumberPipe.decorators = [
4644
3647
  },] }
4645
3648
  ];
4646
3649
 
3650
+ // @returns true iff given value does not equals null and does not equal undefined
3651
+ function notNill(value) {
3652
+ return value !== null && value !== undefined;
3653
+ }
3654
+
4647
3655
  class DateRange {
4648
3656
  constructor() {
4649
3657
  }
@@ -6174,29 +5182,6 @@ DatePlanningModule.decorators = [
6174
5182
  },] }
6175
5183
  ];
6176
5184
 
6177
- class SharedService {
6178
- constructor(options, connector) {
6179
- this.options = options;
6180
- this.connector = connector;
6181
- }
6182
- init(options) {
6183
- return __awaiter(this, void 0, void 0, function* () {
6184
- yield this.options.initialize(options);
6185
- this.connector.connect();
6186
- });
6187
- }
6188
- }
6189
- SharedService.ɵprov = i0.ɵɵdefineInjectable({ factory: function SharedService_Factory() { return new SharedService(i0.ɵɵinject(OptionsService), i0.ɵɵinject(SharedConnectorService)); }, token: SharedService, providedIn: "root" });
6190
- SharedService.decorators = [
6191
- { type: Injectable, args: [{
6192
- providedIn: "root"
6193
- },] }
6194
- ];
6195
- SharedService.ctorParameters = () => [
6196
- { type: OptionsService },
6197
- { type: SharedConnectorService }
6198
- ];
6199
-
6200
5185
  /*
6201
5186
  * Public API Surface of sharedcomponents
6202
5187
  */
@@ -6205,5 +5190,5 @@ SharedService.ctorParameters = () => [
6205
5190
  * Generated bundle index. Do not edit.
6206
5191
  */
6207
5192
 
6208
- export { CoCircularGaugeComponent, CoCircularGaugeModule, CoLinearGaugeComponent, CoLinearGaugeModule, DatePlanningComponent, DatePlanningModule, DocsignComponent, DocsignModule, KeyPadComponent, KeyPadModule, LayoutSwitcherComponent, LayoutSwitcherModule, SendMethodDialogComponent, SendMethodDialogModule, SharedService, StatusbarComponent, StatusbarModule, StockComponent, StockModule, SignatureComponent as ɵa, SignaturesComponent as ɵb, AgendaHourCellComponent as ɵba, AgendaHourViewLabelsComponent as ɵbb, AgendaHalfHourCellComponent as ɵbc, AgendaEventsComponent as ɵbd, AgendaEventComponent as ɵbe, ViewSelectComponent as ɵbf, AgendaSelectEventComponent as ɵbg, MASTER_PIPES as ɵbh, ArrayNumberPipe as ɵbi, UCfirstPipe as ɵbj, StockService as ɵc, SharedConnectorService as ɵd, OptionsService as ɵe, DictionaryService as ɵf, IconCacheService as ɵg, StockInformationComponent as ɵh, StockInformationGridComponent as ɵi, StockLocationComponent as ɵj, StockTransferComponent as ɵk, StockChangeAmountComponent as ɵl, CalendarAllYearsComponent as ɵm, CalendarAllMonthsComponent as ɵn, CalendarHeaderComponent as ɵo, CalendarComponent as ɵp, CalendarViewComponent as ɵq, LanguageCode as ɵr, AgendaHeaderComponent as ɵs, AgendaViewComponent as ɵt, AgendaMonthViewComponent as ɵu, AgendaBaseViewComponent as ɵv, AgendaDayViewComponent as ɵw, AgendaWeekViewComponent as ɵx, AgendaWeekSelectViewComponent as ɵy, AgendaHourViewComponent as ɵz };
5193
+ export { CoCircularGaugeComponent, CoCircularGaugeModule, CoLinearGaugeComponent, CoLinearGaugeModule, DatePlanningComponent, DatePlanningModule, DocsignComponent, DocsignModule, KeyPadComponent, KeyPadModule, LayoutSwitcherComponent, LayoutSwitcherModule, SendMethodDialogComponent, SendMethodDialogModule, SharedService, StatusbarComponent, StatusbarModule, StockComponent, StockModule, sendMethodsWithIcon, SignatureComponent as ɵa, SignaturesComponent as ɵb, CalendarComponent as ɵba, CalendarViewComponent as ɵbb, LanguageCode as ɵbc, AgendaHeaderComponent as ɵbd, AgendaViewComponent as ɵbe, AgendaMonthViewComponent as ɵbf, AgendaBaseViewComponent as ɵbg, AgendaDayViewComponent as ɵbh, AgendaWeekViewComponent as ɵbi, AgendaWeekSelectViewComponent as ɵbj, AgendaHourViewComponent as ɵbk, AgendaHourCellComponent as ɵbl, AgendaHourViewLabelsComponent as ɵbm, AgendaHalfHourCellComponent as ɵbn, AgendaEventsComponent as ɵbo, AgendaEventComponent as ɵbp, ViewSelectComponent as ɵbq, AgendaSelectEventComponent as ɵbr, MASTER_PIPES as ɵbs, ArrayNumberPipe as ɵbt, UCfirstPipe as ɵbu, StockService as ɵc, SharedConnectorService as ɵd, OptionsService as ɵe, DictionaryService as ɵf, IconCacheService as ɵg, SendMethodService as ɵh, SendMethodEmailModule as ɵi, LayoutSelectionModule as ɵj, LayoutSelectionComponent as ɵk, SendMethodEmailComponent as ɵl, SendMethodPrinterModule as ɵm, PrinterSelectionModule as ɵn, PrinterSelectionComponent as ɵo, SendMethodPrinterComponent as ɵp, StockInformationComponent as ɵq, StockInformationGridComponent as ɵr, StockLocationComponent as ɵs, StockTransferComponent as ɵt, StockChangeAmountComponent as ɵu, SendMethod as ɵv, Icon as ɵw, CalendarAllYearsComponent as ɵx, CalendarAllMonthsComponent as ɵy, CalendarHeaderComponent as ɵz };
6209
5194
  //# sourceMappingURL=colijnit-sharedcomponents.js.map