@colijnit/sharedcomponents 1.0.30 → 1.0.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/colijnit-sharedcomponents.umd.js +766 -1882
- package/bundles/colijnit-sharedcomponents.umd.js.map +1 -1
- package/colijnit-sharedcomponents.d.ts +40 -29
- package/colijnit-sharedcomponents.metadata.json +1 -1
- package/esm2015/colijnit-sharedcomponents.js +41 -30
- package/esm2015/lib/components/circular-gauge/co-circular-gauge.component.js +18 -15
- package/esm2015/lib/components/date-planning/date-planning.component.js +6 -4
- package/esm2015/lib/components/docsign/component/signature/signature.component.js +3 -3
- package/esm2015/lib/components/docsign/component/signatures/signatures.component.js +7 -7
- package/esm2015/lib/components/docsign/docsign.component.js +5 -5
- package/esm2015/lib/components/layout-switcher/layout-switcher.component.js +3 -3
- package/esm2015/lib/components/linear-gauge/co-linear-gauge.component.js +14 -10
- package/esm2015/lib/components/send-method-dialog/components/layout-selection/layout-selection.component.js +57 -0
- package/esm2015/lib/components/send-method-dialog/components/layout-selection/layout-selection.module.js +19 -0
- package/esm2015/lib/components/send-method-dialog/components/printer-selection/printer-selection.component.js +76 -0
- package/esm2015/lib/components/send-method-dialog/components/printer-selection/printer-selection.module.js +21 -0
- package/esm2015/lib/components/send-method-dialog/components/send-method-email/send-method-email.component.js +59 -0
- package/esm2015/lib/components/send-method-dialog/components/send-method-email/send-method-email.module.js +23 -0
- package/esm2015/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.component.js +50 -0
- package/esm2015/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.module.js +26 -0
- package/esm2015/lib/components/send-method-dialog/model/email-address-viewmodel.js +7 -0
- package/esm2015/lib/components/send-method-dialog/send-method-dialog.component.js +162 -251
- package/esm2015/lib/components/send-method-dialog/send-method-dialog.module.js +12 -13
- package/esm2015/lib/components/send-method-dialog/service/send-method.service.js +59 -0
- package/esm2015/lib/components/statusbar/statusbar.component.js +14 -16
- package/esm2015/lib/components/statusbar/statusbar.module.js +4 -2
- package/esm2015/lib/components/stock/stock-information-grid/stock-information-grid.component.js +7 -8
- package/esm2015/lib/enum/gauge-color.enum.js +10 -0
- package/esm2015/lib/enum/icon.enum.js +6 -1
- package/esm2015/lib/model/icon-svg.js +7 -2
- package/esm2015/lib/model/send-method.js +8 -0
- package/esm2015/lib/model/time-window.bo.js +4 -4
- package/esm2015/lib/pipe/array-number.pipe.js +1 -1
- package/esm2015/lib/service/icon-cache.service.js +1 -1
- package/esm2015/lib/service/shared-connector.service.js +91 -121
- package/esm2015/lib/service/shared.service.js +11 -1
- package/esm2015/lib/service/stock.service.js +19 -36
- package/fesm2015/colijnit-sharedcomponents.js +802 -1888
- package/fesm2015/colijnit-sharedcomponents.js.map +1 -1
- package/lib/components/circular-gauge/style/_layout.scss +6 -5
- package/lib/components/circular-gauge/style/_theme.scss +0 -2
- package/lib/components/circular-gauge/style/material.scss +1 -0
- package/lib/components/date-planning/date-planning.component.d.ts +3 -2
- package/lib/components/date-planning/style/_layout.scss +2 -4
- package/lib/components/date-planning/style/_theme.scss +2 -4
- package/lib/components/docsign/component/signature/style/_layout.scss +2 -4
- package/lib/components/docsign/component/signature/style/_theme.scss +2 -4
- package/lib/components/docsign/component/signature/style/material.scss +1 -3
- package/lib/components/docsign/component/signatures/style/_layout.scss +3 -5
- package/lib/components/docsign/component/signatures/style/_theme.scss +2 -4
- package/lib/components/docsign/component/signatures/style/material.scss +1 -2
- package/lib/components/docsign/style/_layout.scss +3 -5
- package/lib/components/docsign/style/_theme.scss +2 -4
- package/lib/components/docsign/style/material.scss +1 -0
- package/lib/components/layout-switcher/style/_layout.scss +2 -4
- package/lib/components/layout-switcher/style/_theme.scss +2 -4
- package/lib/components/layout-switcher/style/material.scss +1 -0
- package/lib/components/linear-gauge/co-linear-gauge.component.d.ts +1 -6
- package/lib/components/linear-gauge/style/_layout.scss +0 -2
- package/lib/components/linear-gauge/style/_theme.scss +0 -2
- package/lib/components/linear-gauge/style/material.scss +1 -0
- package/lib/components/send-method-dialog/components/layout-selection/layout-selection.component.d.ts +13 -0
- package/lib/components/send-method-dialog/components/layout-selection/layout-selection.module.d.ts +2 -0
- package/lib/components/send-method-dialog/components/layout-selection/style/_layout.scss +34 -0
- package/lib/components/send-method-dialog/components/layout-selection/style/_material-definition.scss +19 -0
- package/lib/components/send-method-dialog/components/layout-selection/style/_theme.scss +17 -0
- package/lib/components/send-method-dialog/components/layout-selection/style/material.scss +4 -0
- package/lib/components/send-method-dialog/components/printer-selection/printer-selection.component.d.ts +18 -0
- package/lib/components/send-method-dialog/components/printer-selection/printer-selection.module.d.ts +2 -0
- package/lib/components/send-method-dialog/components/printer-selection/style/_layout.scss +59 -0
- package/lib/components/send-method-dialog/components/printer-selection/style/_material-definition.scss +39 -0
- package/lib/components/send-method-dialog/components/printer-selection/style/_theme.scss +23 -0
- package/lib/components/send-method-dialog/components/printer-selection/style/material.scss +4 -0
- package/lib/components/send-method-dialog/components/send-method-email/send-method-email.component.d.ts +14 -0
- package/lib/components/send-method-dialog/components/send-method-email/send-method-email.module.d.ts +2 -0
- package/lib/components/send-method-dialog/components/send-method-email/style/_layout.scss +21 -0
- package/lib/components/send-method-dialog/components/send-method-email/style/_material-definition.scss +8 -0
- package/lib/components/send-method-dialog/components/send-method-email/style/_theme.scss +5 -0
- package/lib/components/send-method-dialog/components/send-method-email/style/material.scss +4 -0
- package/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.component.d.ts +10 -0
- package/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.module.d.ts +2 -0
- package/lib/components/send-method-dialog/components/send-method-printer/style/_layout.scss +17 -0
- package/lib/components/send-method-dialog/components/send-method-printer/style/_material-definition.scss +5 -0
- package/lib/components/send-method-dialog/components/send-method-printer/style/_theme.scss +5 -0
- package/lib/components/send-method-dialog/components/send-method-printer/style/material.scss +4 -0
- package/lib/components/send-method-dialog/model/email-address-viewmodel.d.ts +5 -0
- package/lib/components/send-method-dialog/send-method-dialog.component.d.ts +53 -61
- package/lib/components/send-method-dialog/service/send-method.service.d.ts +23 -0
- package/lib/components/send-method-dialog/style/_layout.scss +44 -184
- package/lib/components/send-method-dialog/style/_material-definition.scss +30 -1
- package/lib/components/send-method-dialog/style/_theme.scss +31 -5
- package/lib/components/send-method-dialog/style/material.scss +5 -0
- package/lib/components/statusbar/statusbar.component.d.ts +2 -3
- package/lib/components/statusbar/style/_layout.scss +0 -2
- package/lib/components/statusbar/style/_theme.scss +0 -2
- package/lib/components/statusbar/style/material.scss +1 -0
- package/lib/components/stock/style/_layout.scss +0 -2
- package/lib/components/stock/style/_theme.scss +0 -3
- package/lib/components/stock/style/material.scss +1 -0
- package/lib/enum/gauge-color.enum.d.ts +8 -0
- package/lib/enum/icon.enum.d.ts +5 -0
- package/lib/model/send-method.d.ts +7 -0
- package/lib/model/time-window.bo.d.ts +1 -1
- package/lib/service/icon-cache.service.d.ts +1 -1
- package/lib/service/shared-connector.service.d.ts +21 -29
- package/lib/service/shared.service.d.ts +4 -0
- package/lib/service/stock.service.d.ts +1 -12
- package/lib/style/_variables.scss +5 -1
- package/package.json +6 -6
- package/esm2015/lib/components/send-method-dialog/enums/send-option.js +0 -8
- package/esm2015/lib/factory/business-object-factory.js +0 -120
- package/esm2015/lib/factory/decorators/boolean.decorator.js +0 -102
- package/esm2015/lib/factory/decorators/complex-array.decorator.js +0 -55
- package/esm2015/lib/factory/decorators/complex-field.decorator.js +0 -57
- package/esm2015/lib/factory/decorators/date-field.decorator.js +0 -36
- package/esm2015/lib/factory/decorators/string-number.decorator.js +0 -43
- package/esm2015/lib/model/business-object.js +0 -81
- package/esm2015/lib/utils/array-utils.js +0 -202
- package/esm2015/lib/utils/check-precision-and-scale-result.js +0 -2
- package/esm2015/lib/utils/check-within-stepped-bounds-result.js +0 -2
- package/esm2015/lib/utils/is-nill.function.js +0 -5
- package/esm2015/lib/utils/number-utils.js +0 -390
- package/esm2015/lib/utils/object-utils.js +0 -278
- package/lib/components/send-method-dialog/enums/send-option.d.ts +0 -6
- package/lib/factory/business-object-factory.d.ts +0 -23
- package/lib/factory/decorators/boolean.decorator.d.ts +0 -43
- package/lib/factory/decorators/complex-array.decorator.d.ts +0 -25
- package/lib/factory/decorators/complex-field.decorator.d.ts +0 -25
- package/lib/factory/decorators/date-field.decorator.d.ts +0 -17
- package/lib/factory/decorators/string-number.decorator.d.ts +0 -22
- package/lib/model/business-object.d.ts +0 -7
- package/lib/utils/array-utils.d.ts +0 -63
- package/lib/utils/check-precision-and-scale-result.d.ts +0 -4
- package/lib/utils/check-within-stepped-bounds-result.d.ts +0 -8
- package/lib/utils/is-nill.function.d.ts +0 -1
- package/lib/utils/number-utils.d.ts +0 -125
- 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 {
|
|
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 {
|
|
27
|
+
import { InputCheckboxModule, IconModule, CoDialogModule, ButtonModule, InputComboBoxModule, CoGridModule, InputRadioButtonModule, DropDownModule, SimpleGridModule, ImageModule, InputTextModule, InputNumberPickerModule, CoDialogWizardModule, InputTextareaModule, ClickoutsideModule, 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: "
|
|
211
|
+
selector: "co-docsign",
|
|
218
212
|
template: `
|
|
219
213
|
<iframe #iframe></iframe>
|
|
220
|
-
<
|
|
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
|
-
></
|
|
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.
|
|
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: "
|
|
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.
|
|
329
|
+
showClass: [{ type: HostBinding, args: ["class.co-signature",] }]
|
|
336
330
|
};
|
|
337
331
|
|
|
338
332
|
class SignaturesComponent {
|
|
@@ -345,1398 +339,56 @@ class SignaturesComponent {
|
|
|
345
339
|
this.saveSecondSignature = new EventEmitter();
|
|
346
340
|
}
|
|
347
341
|
showClass() {
|
|
348
|
-
return true;
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
SignaturesComponent.decorators = [
|
|
352
|
-
{ type: Component, args: [{
|
|
353
|
-
selector: "ione-signatures",
|
|
354
|
-
template: `
|
|
355
|
-
<ione-signature *ngIf="showFirstSignature"
|
|
356
|
-
[title]="firstSignatureTitle"
|
|
357
|
-
[saveButtonLabel]="saveButtonLabel"
|
|
358
|
-
[clearButtonLabel]="clearButtonLabel"
|
|
359
|
-
(save)="saveFirstSignature.emit($event)"></ione-signature>
|
|
360
|
-
<ione-signature *ngIf="showSecondSignature"
|
|
361
|
-
[title]="secondSignatureTitle"
|
|
362
|
-
[saveButtonLabel]="saveButtonLabel"
|
|
363
|
-
[clearButtonLabel]="clearButtonLabel"
|
|
364
|
-
(save)="saveSecondSignature.emit($event)"></ione-signature>
|
|
365
|
-
`,
|
|
366
|
-
encapsulation: ViewEncapsulation.None
|
|
367
|
-
},] }
|
|
368
|
-
];
|
|
369
|
-
SignaturesComponent.propDecorators = {
|
|
370
|
-
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
|
-
}
|
|
342
|
+
return true;
|
|
1738
343
|
}
|
|
1739
|
-
}
|
|
344
|
+
}
|
|
345
|
+
SignaturesComponent.decorators = [
|
|
346
|
+
{ type: Component, args: [{
|
|
347
|
+
selector: "co-signatures",
|
|
348
|
+
template: `
|
|
349
|
+
<co-signature *ngIf="showFirstSignature"
|
|
350
|
+
[title]="firstSignatureTitle"
|
|
351
|
+
[saveButtonLabel]="saveButtonLabel"
|
|
352
|
+
[clearButtonLabel]="clearButtonLabel"
|
|
353
|
+
(save)="saveFirstSignature.emit($event)"></co-signature>
|
|
354
|
+
<co-signature *ngIf="showSecondSignature"
|
|
355
|
+
[title]="secondSignatureTitle"
|
|
356
|
+
[saveButtonLabel]="saveButtonLabel"
|
|
357
|
+
[clearButtonLabel]="clearButtonLabel"
|
|
358
|
+
(save)="saveSecondSignature.emit($event)"></co-signature>
|
|
359
|
+
`,
|
|
360
|
+
encapsulation: ViewEncapsulation.None
|
|
361
|
+
},] }
|
|
362
|
+
];
|
|
363
|
+
SignaturesComponent.propDecorators = {
|
|
364
|
+
showFirstSignature: [{ type: Input }],
|
|
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(
|
|
623
|
+
getAllPrinters() {
|
|
1971
624
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1972
625
|
return new Promise((resolve, reject) => {
|
|
1973
|
-
return this.
|
|
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
|
-
|
|
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.
|
|
642
|
+
return this.mainConnector.getSendMethods().then((result) => {
|
|
2006
643
|
if (result.validationResult && result.validationResult.success) {
|
|
2007
|
-
if (result.resultObject) {
|
|
2008
|
-
resolve(this._boFactory.
|
|
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
|
|
655
|
+
// public async getPrintStockStickers(request: PrintStockStickers): Promise<PrintStockStickers> {
|
|
2019
656
|
// return new Promise((resolve: Function, reject: Function) => {
|
|
2020
|
-
// return this.sharedConnector.
|
|
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(
|
|
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
|
-
|
|
2112
|
-
|
|
2113
|
-
|
|
2114
|
-
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
|
|
2131
|
-
|
|
2132
|
-
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
|
|
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
|
-
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
|
|
2227
|
-
|
|
2228
|
-
|
|
2229
|
-
|
|
2230
|
-
|
|
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
|
-
|
|
2272
|
-
|
|
2273
|
-
|
|
2274
|
-
|
|
2275
|
-
|
|
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
|
-
|
|
2315
|
-
|
|
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
|
-
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
|
|
2333
|
-
|
|
2334
|
-
|
|
2335
|
-
|
|
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);
|
|
@@ -2563,20 +1169,25 @@ const IconSvg = {
|
|
|
2563
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>",
|
|
2564
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>",
|
|
2565
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>",
|
|
2566
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>",
|
|
2567
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>",
|
|
2568
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>",
|
|
2569
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>",
|
|
2570
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>",
|
|
2571
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>",
|
|
2572
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>",
|
|
2573
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>",
|
|
2574
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>",
|
|
2575
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>",
|
|
2576
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>",
|
|
2577
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>",
|
|
2578
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>",
|
|
2579
|
-
"xml": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0
|
|
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>"
|
|
2580
1191
|
};
|
|
2581
1192
|
|
|
2582
1193
|
class IconCacheService {
|
|
@@ -2633,14 +1244,19 @@ var Icon;
|
|
|
2633
1244
|
Icon["ArrowFatRight"] = "arrow_fat_right";
|
|
2634
1245
|
Icon["ArrowPointLeft"] = "arrow_point_left";
|
|
2635
1246
|
Icon["ArrowPointRight"] = "arrow_point_right";
|
|
1247
|
+
Icon["AtSolid"] = "at_solid";
|
|
2636
1248
|
Icon["BringForwardRegular"] = "bring_forward_regular";
|
|
2637
1249
|
Icon["CheckRound"] = "check_round";
|
|
2638
1250
|
Icon["DeleteLeftRegular"] = "delete_left_regular";
|
|
2639
1251
|
Icon["DeliveryTruck"] = "delivery_truck";
|
|
2640
1252
|
Icon["Email"] = "email";
|
|
2641
1253
|
Icon["EnvelopeRegular"] = "envelope_regular";
|
|
1254
|
+
Icon["FileExportRegular"] = "file_export_regular";
|
|
1255
|
+
Icon["FileExportSolid"] = "file_export_solid";
|
|
2642
1256
|
Icon["FilePdfRegular"] = "file_pdf_regular";
|
|
2643
1257
|
Icon["FilePdfSolid"] = "file_pdf_solid";
|
|
1258
|
+
Icon["MessageSmsRegular"] = "message_sms_regular";
|
|
1259
|
+
Icon["MessageSmsSolid"] = "message_sms_solid";
|
|
2644
1260
|
Icon["Pdf"] = "pdf";
|
|
2645
1261
|
Icon["Print"] = "print";
|
|
2646
1262
|
Icon["PrintRegular"] = "print_regular";
|
|
@@ -2737,10 +1353,10 @@ class StockInformationGridComponent {
|
|
|
2737
1353
|
this._stockService.printLayoutParams.goodId = data.goodId;
|
|
2738
1354
|
this._stockService.printLayoutParams.warehouse = data.warehouseNo;
|
|
2739
1355
|
}
|
|
2740
|
-
this.showSendMethodDialog =
|
|
1356
|
+
this.showSendMethodDialog = true;
|
|
2741
1357
|
}
|
|
2742
1358
|
printStockStickers() {
|
|
2743
|
-
this._stockService.getPrintStockStickers(this._stockService.printLayoutParams);
|
|
1359
|
+
// this._stockService.getPrintStockStickers(this._stockService.printLayoutParams);
|
|
2744
1360
|
}
|
|
2745
1361
|
onOkClick() {
|
|
2746
1362
|
this.okButtonClicked.emit();
|
|
@@ -3042,11 +1658,10 @@ StockInformationGridComponent.decorators = [
|
|
|
3042
1658
|
</div>
|
|
3043
1659
|
</div>
|
|
3044
1660
|
</div>
|
|
3045
|
-
<
|
|
3046
|
-
|
|
3047
|
-
|
|
3048
|
-
|
|
3049
|
-
></ione-send-method-dialog>
|
|
1661
|
+
<co-send-method-dialog *ngIf="showSendMethodDialog"
|
|
1662
|
+
(closeClick)="showSendMethodDialog = false"
|
|
1663
|
+
(printButtonClicked)="printStockStickers()"
|
|
1664
|
+
></co-send-method-dialog>
|
|
3050
1665
|
`,
|
|
3051
1666
|
encapsulation: ViewEncapsulation.None
|
|
3052
1667
|
},] }
|
|
@@ -3256,135 +1871,216 @@ StockTransferComponent.propDecorators = {
|
|
|
3256
1871
|
handleStickerClicked: [{ type: Output }]
|
|
3257
1872
|
};
|
|
3258
1873
|
|
|
3259
|
-
|
|
3260
|
-
(
|
|
3261
|
-
|
|
3262
|
-
|
|
3263
|
-
|
|
3264
|
-
|
|
3265
|
-
|
|
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
|
+
}
|
|
3266
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
|
+
];
|
|
3267
1978
|
class SendMethodDialogComponent {
|
|
3268
|
-
constructor(iconCacheService,
|
|
1979
|
+
constructor(iconCacheService, _optionsService, _dictionary, _changeDetector, _sharedService, _sendMethodService) {
|
|
3269
1980
|
this.iconCacheService = iconCacheService;
|
|
3270
|
-
this.stockService = stockService;
|
|
3271
1981
|
this._optionsService = _optionsService;
|
|
3272
1982
|
this._dictionary = _dictionary;
|
|
3273
1983
|
this._changeDetector = _changeDetector;
|
|
1984
|
+
this._sharedService = _sharedService;
|
|
1985
|
+
this._sendMethodService = _sendMethodService;
|
|
3274
1986
|
this.icons = Icon;
|
|
3275
|
-
this.
|
|
3276
|
-
this.showEmailOption = true;
|
|
3277
|
-
this.showPrintOption = true;
|
|
3278
|
-
this.showPdfOption = true;
|
|
3279
|
-
this.showXmlOption = true;
|
|
3280
|
-
this.showPrintPriceStickers = true;
|
|
3281
|
-
this.sendOptions = [
|
|
3282
|
-
{ option: SendOption.Email,
|
|
3283
|
-
iconName: this.icons.EnvelopeRegular,
|
|
3284
|
-
},
|
|
3285
|
-
{ option: SendOption.Print,
|
|
3286
|
-
iconName: this.icons.PrintRegular,
|
|
3287
|
-
},
|
|
3288
|
-
{ option: SendOption.Pdf,
|
|
3289
|
-
iconName: this.icons.FilePdfRegular,
|
|
3290
|
-
},
|
|
3291
|
-
{ option: SendOption.Xml,
|
|
3292
|
-
iconName: this.icons.FilePdfRegular,
|
|
3293
|
-
}
|
|
3294
|
-
];
|
|
3295
|
-
this.activeSendOption = SendOption.Email;
|
|
3296
|
-
this.showStandardPrinterOptions = false;
|
|
3297
|
-
this.showPrinterSelections = false;
|
|
3298
|
-
this.showExitButton = true;
|
|
3299
|
-
this.printTemplates = [];
|
|
3300
|
-
this.printTemplatesField = { text: "name", value: "reportId" };
|
|
3301
|
-
this.emailLayoutField = { text: "name", value: "reportId" };
|
|
3302
|
-
this.priceListDataField = { text: "name", value: "priceListCode" };
|
|
3303
|
-
this.upAndLoaded = false;
|
|
3304
|
-
this.models = [false, false, true];
|
|
3305
|
-
this.showDialog = false;
|
|
3306
|
-
this.emailAdresses = [];
|
|
1987
|
+
this.emailLayouts = [];
|
|
3307
1988
|
this.printLayouts = [];
|
|
1989
|
+
this.emailAddresses = [];
|
|
1990
|
+
this.visibleMethods = [];
|
|
3308
1991
|
this.isDocSignEnabled = false;
|
|
3309
1992
|
this.docSign = false;
|
|
1993
|
+
this.reportingDocumentPrintRequestChange = new EventEmitter();
|
|
1994
|
+
this.reportingDocumentEmailRequestChange = new EventEmitter();
|
|
1995
|
+
this.reportingDocumentPdfRequestChange = new EventEmitter();
|
|
3310
1996
|
this.startSignatureClicked = new EventEmitter();
|
|
3311
|
-
this.
|
|
3312
|
-
this.
|
|
3313
|
-
this.
|
|
3314
|
-
this.
|
|
3315
|
-
this.
|
|
3316
|
-
this.
|
|
3317
|
-
this.
|
|
3318
|
-
|
|
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;
|
|
3319
2009
|
this._subscriptions = [];
|
|
3320
|
-
this._subscriptions.push(this._optionsService.optionsLoaded.subscribe(loaded => this._handleSettingsLoaded(loaded)));
|
|
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)));
|
|
3321
2011
|
}
|
|
3322
|
-
set articleData(data) {
|
|
3323
|
-
if (!(this.printLayoutParams instanceof PrintPriceStickers)) {
|
|
3324
|
-
this.sendMethodParams.goodId = data.goodId;
|
|
3325
|
-
this.sendMethodParams.warehouse = data.warehouseNo;
|
|
3326
|
-
}
|
|
3327
|
-
}
|
|
3328
|
-
;
|
|
3329
2012
|
showClass() {
|
|
3330
2013
|
return true;
|
|
3331
2014
|
}
|
|
3332
2015
|
ngOnInit() {
|
|
3333
|
-
this.
|
|
3334
|
-
|
|
3335
|
-
|
|
3336
|
-
|
|
3337
|
-
|
|
3338
|
-
|
|
3339
|
-
|
|
3340
|
-
|
|
3341
|
-
|
|
3342
|
-
|
|
3343
|
-
|
|
3344
|
-
});
|
|
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();
|
|
3345
2027
|
}
|
|
3346
|
-
|
|
3347
|
-
this.
|
|
2028
|
+
ngOnDestroy() {
|
|
2029
|
+
this._subscriptions.forEach(subscription => subscription.unsubscribe());
|
|
3348
2030
|
}
|
|
3349
2031
|
handleSignatureStart() {
|
|
3350
2032
|
this.docSign = !this.docSign;
|
|
3351
2033
|
this.startSignatureClicked.emit();
|
|
3352
2034
|
}
|
|
3353
|
-
|
|
3354
|
-
this.
|
|
3355
|
-
|
|
3356
|
-
|
|
3357
|
-
|
|
3358
|
-
if (this.
|
|
3359
|
-
this.
|
|
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;
|
|
3360
2057
|
}
|
|
3361
2058
|
}
|
|
3362
|
-
|
|
3363
|
-
this.
|
|
3364
|
-
|
|
3365
|
-
|
|
3366
|
-
|
|
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
|
+
}
|
|
3367
2068
|
}
|
|
3368
2069
|
else {
|
|
3369
|
-
this.
|
|
3370
|
-
this.headerTitle = 'Verzendopties';
|
|
2070
|
+
this.startUp = false;
|
|
3371
2071
|
}
|
|
3372
2072
|
}
|
|
3373
|
-
|
|
3374
|
-
this.
|
|
3375
|
-
|
|
3376
|
-
|
|
3377
|
-
|
|
3378
|
-
|
|
3379
|
-
this.
|
|
3380
|
-
|
|
3381
|
-
|
|
3382
|
-
this.
|
|
3383
|
-
|
|
3384
|
-
getDefaultEmailLayouts() {
|
|
3385
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
3386
|
-
this.emailLayoutClicked.emit();
|
|
3387
|
-
});
|
|
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;
|
|
3388
2084
|
}
|
|
3389
2085
|
_handleSettingsLoaded(loaded) {
|
|
3390
2086
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -3398,7 +2094,7 @@ class SendMethodDialogComponent {
|
|
|
3398
2094
|
return __awaiter(this, void 0, void 0, function* () {
|
|
3399
2095
|
// await this._connector.connect(this._optionsService.options);
|
|
3400
2096
|
if (this._optionsService.options.url) {
|
|
3401
|
-
this._dictionary.rootUrl = this._optionsService.options.url.replace(
|
|
2097
|
+
this._dictionary.rootUrl = this._optionsService.options.url.replace('/ajaxservice', '');
|
|
3402
2098
|
}
|
|
3403
2099
|
yield this._dictionary.setDictionary(this._optionsService.options.languageCode);
|
|
3404
2100
|
setTimeout(() => {
|
|
@@ -3409,141 +2105,57 @@ class SendMethodDialogComponent {
|
|
|
3409
2105
|
}
|
|
3410
2106
|
SendMethodDialogComponent.decorators = [
|
|
3411
2107
|
{ type: Component, args: [{
|
|
3412
|
-
selector:
|
|
2108
|
+
selector: 'co-send-method-dialog',
|
|
3413
2109
|
template: `
|
|
3414
|
-
<
|
|
3415
|
-
|
|
3416
|
-
|
|
3417
|
-
|
|
3418
|
-
|
|
3419
|
-
|
|
3420
|
-
|
|
3421
|
-
|
|
3422
|
-
|
|
3423
|
-
|
|
3424
|
-
|
|
3425
|
-
|
|
3426
|
-
|
|
3427
|
-
|
|
3428
|
-
|
|
3429
|
-
|
|
3430
|
-
<div class="email-option-content" *ngIf="activeSendOption === sendOption.Email || activeSendOption === sendOption.Pdf">
|
|
3431
|
-
<div class="emails-container" *ngIf="activeSendOption === sendOption.Email">
|
|
3432
|
-
<co-input-checkbox
|
|
3433
|
-
*ngFor="let email of emailAdresses"
|
|
3434
|
-
[(model)]="email.name"
|
|
3435
|
-
[label]="email"
|
|
3436
|
-
[cssClass]="'input-checkbox-wrapper'"
|
|
3437
|
-
></co-input-checkbox>
|
|
3438
|
-
</div>
|
|
3439
|
-
|
|
3440
|
-
<div class="lov-wrapper" (click)="getDefaultEmailLayouts()">
|
|
3441
|
-
<co-input-combo-box
|
|
3442
|
-
[(model)]="sendMethodParams.reportId"
|
|
3443
|
-
[collection]="emailLayouts"
|
|
3444
|
-
[fields]="emailLayoutField"
|
|
3445
|
-
placeholder="Layout"
|
|
3446
|
-
></co-input-combo-box>
|
|
3447
|
-
</div>
|
|
3448
|
-
|
|
3449
|
-
<div *ngIf="isDocSignEnabled" class="signature-button-wrapper">
|
|
3450
|
-
<div class="custom-button-wrapper signature-button" (click)="handleSignatureStart()">
|
|
3451
|
-
<co-icon [iconData]="iconCacheService.getIcon(icons.SignatureField)"></co-icon>
|
|
3452
|
-
</div>
|
|
3453
|
-
<div class="custom-button-wrapper send-button" (click)="sendEmail()">
|
|
3454
|
-
<co-icon [iconData]="iconCacheService.getIcon(icons.Email)"></co-icon>
|
|
3455
|
-
</div>
|
|
3456
|
-
</div>
|
|
3457
|
-
|
|
3458
|
-
<ione-docsign *ngIf="docSign"></ione-docsign>
|
|
3459
|
-
</div>
|
|
3460
|
-
|
|
3461
|
-
<div class="email-option-content" *ngIf="activeSendOption === sendOption.Print" (click)="getPrintTemplates()">
|
|
3462
|
-
<div *ngIf="showPrintPriceStickers">
|
|
3463
|
-
<div class="lov-wrapper">
|
|
3464
|
-
<co-input-combo-box
|
|
3465
|
-
[(model)]="sendMethodParams.reportId"
|
|
3466
|
-
[collection]="printLayouts"
|
|
3467
|
-
[fields]="printTemplatesField"
|
|
3468
|
-
placeholder="Layout"
|
|
3469
|
-
></co-input-combo-box>
|
|
3470
|
-
</div>
|
|
3471
|
-
<div class="lov-wrapper" *ngIf="priceListCodeData">
|
|
3472
|
-
<co-input-combo-box
|
|
3473
|
-
[(model)]="sendMethodParams.priceListCode"
|
|
3474
|
-
[collection]="priceListCodeData"
|
|
3475
|
-
[fields]="priceListDataField"
|
|
3476
|
-
placeholder="Layout"
|
|
3477
|
-
></co-input-combo-box>
|
|
3478
|
-
</div>
|
|
3479
|
-
</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">
|
|
3480
2126
|
|
|
3481
|
-
|
|
3482
|
-
|
|
3483
|
-
|
|
3484
|
-
|
|
3485
|
-
|
|
3486
|
-
|
|
3487
|
-
|
|
3488
|
-
|
|
3489
|
-
|
|
3490
|
-
|
|
3491
|
-
|
|
3492
|
-
|
|
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">
|
|
3493
2140
|
|
|
3494
|
-
|
|
3495
|
-
|
|
3496
|
-
<co-icon class="arrow-icon" [iconData]="iconCacheService.getIcon(icons.ArrowFatRight)"></co-icon>
|
|
3497
|
-
<span class="standard-printer-message" [textContent]="'Standaard printer voor lay-out instellen'"></span>
|
|
3498
|
-
</div>
|
|
2141
|
+
</div>
|
|
2142
|
+
<div #emailTemplateItems class="send-method-navigation-content co-small-scrollbar" *ngIf="showEmailTemplate">
|
|
3499
2143
|
|
|
3500
|
-
|
|
3501
|
-
|
|
3502
|
-
[(model)]="models[0]"
|
|
3503
|
-
[label]="'Per gebruiker instellen'"
|
|
3504
|
-
[cssClass]="'input-checkbox-wrapper'"
|
|
3505
|
-
></co-input-checkbox>
|
|
3506
|
-
<co-input-checkbox
|
|
3507
|
-
[(model)]="models[1]"
|
|
3508
|
-
[label]="'Voor alle gebruikers instellen'"
|
|
3509
|
-
[cssClass]="'input-checkbox-wrapper'"
|
|
3510
|
-
></co-input-checkbox>
|
|
3511
|
-
</div>
|
|
3512
|
-
</div>
|
|
2144
|
+
</div>
|
|
2145
|
+
<div #smsItems class="send-method-navigation-content co-small-scrollbar" *ngIf="showSms">
|
|
3513
2146
|
|
|
3514
|
-
<div class="print-footer-wrapper">
|
|
3515
|
-
<div class="input-number-wrapper">
|
|
3516
|
-
<co-input-number-picker class="number-picker"
|
|
3517
|
-
[step]="1" [(model)]="sendMethodParams.amount" [min]="1"
|
|
3518
|
-
[ngModelOptions]="{debounce: 1}">
|
|
3519
|
-
</co-input-number-picker>
|
|
3520
|
-
</div>
|
|
3521
|
-
<div class="custom-button-wrapper print-button" (click)="handlePrintClicked()">
|
|
3522
|
-
<span [textContent]="'Print'"></span>
|
|
3523
|
-
</div>
|
|
3524
|
-
<div class="custom-button-wrapper signature-button" (click)="handleSignatureStart()">
|
|
3525
|
-
<co-icon [iconData]="iconCacheService.getIcon(icons.SignatureField)"></co-icon>
|
|
3526
|
-
</div>
|
|
3527
|
-
</div>
|
|
3528
|
-
</div>
|
|
3529
2147
|
</div>
|
|
2148
|
+
<div #webServiceItems class="send-method-navigation-content co-small-scrollbar" *ngIf="showWebservice">
|
|
3530
2149
|
|
|
3531
|
-
<div class="printer-content-container" @slideInOut *ngIf="showPrinterSelections">
|
|
3532
|
-
<div class="selected-printer-wrapper selection clickable" *ngFor="let printers of printerList" (click)="onPrinterClicked(printers)">
|
|
3533
|
-
<div class="printer-option-list-item">
|
|
3534
|
-
<co-icon class="printer-icon" [iconData]="iconCacheService.getIcon(icons.PrintRegular)"></co-icon>
|
|
3535
|
-
<div class="printer-details">
|
|
3536
|
-
<span class="printer-name" [textContent]="printers.name"></span>
|
|
3537
|
-
<span class="printer-status" [textContent]="printers.acceptingJobs"></span>
|
|
3538
|
-
</div>
|
|
3539
|
-
</div>
|
|
3540
|
-
<co-icon class="select-printer-arrow" *ngIf="!showPrinterSelections"
|
|
3541
|
-
[iconData]="iconCacheService.getIcon(icons.ArrowPointRight)"></co-icon>
|
|
3542
|
-
</div>
|
|
3543
2150
|
</div>
|
|
3544
2151
|
</div>
|
|
3545
|
-
</
|
|
3546
|
-
|
|
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>
|
|
3547
2159
|
`,
|
|
3548
2160
|
encapsulation: ViewEncapsulation.None,
|
|
3549
2161
|
animations: [
|
|
@@ -3557,41 +2169,348 @@ SendMethodDialogComponent.decorators = [
|
|
|
3557
2169
|
];
|
|
3558
2170
|
SendMethodDialogComponent.ctorParameters = () => [
|
|
3559
2171
|
{ type: IconCacheService },
|
|
3560
|
-
{ type: StockService },
|
|
3561
2172
|
{ type: OptionsService },
|
|
3562
2173
|
{ type: DictionaryService },
|
|
3563
|
-
{ type: ChangeDetectorRef }
|
|
2174
|
+
{ type: ChangeDetectorRef },
|
|
2175
|
+
{ type: SharedService },
|
|
2176
|
+
{ type: SendMethodService }
|
|
3564
2177
|
];
|
|
3565
2178
|
SendMethodDialogComponent.propDecorators = {
|
|
3566
|
-
|
|
3567
|
-
|
|
3568
|
-
|
|
3569
|
-
|
|
3570
|
-
|
|
3571
|
-
|
|
3572
|
-
|
|
3573
|
-
|
|
3574
|
-
|
|
3575
|
-
|
|
3576
|
-
|
|
3577
|
-
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 }],
|
|
3578
2190
|
emailLayouts: [{ type: Input }],
|
|
3579
2191
|
printLayouts: [{ type: Input }],
|
|
2192
|
+
headerTitle: [{ type: Input }],
|
|
2193
|
+
emailAddresses: [{ type: Input }],
|
|
3580
2194
|
defaultSendMethod: [{ type: Input }],
|
|
3581
|
-
|
|
2195
|
+
visibleMethods: [{ type: Input }],
|
|
3582
2196
|
isDocSignEnabled: [{ type: Input }],
|
|
3583
2197
|
docSign: [{ type: Input }],
|
|
3584
|
-
|
|
2198
|
+
reportingDocumentPrintRequestChange: [{ type: Output }],
|
|
2199
|
+
reportingDocumentEmailRequestChange: [{ type: Output }],
|
|
2200
|
+
reportingDocumentPdfRequestChange: [{ type: Output }],
|
|
3585
2201
|
startSignatureClicked: [{ type: Output }],
|
|
3586
|
-
|
|
3587
|
-
|
|
3588
|
-
|
|
3589
|
-
|
|
3590
|
-
|
|
3591
|
-
|
|
3592
|
-
|
|
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',] }]
|
|
3593
2475
|
};
|
|
3594
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
|
+
|
|
3595
2514
|
class SendMethodDialogModule {
|
|
3596
2515
|
}
|
|
3597
2516
|
SendMethodDialogModule.decorators = [
|
|
@@ -3601,20 +2520,17 @@ SendMethodDialogModule.decorators = [
|
|
|
3601
2520
|
],
|
|
3602
2521
|
imports: [
|
|
3603
2522
|
CommonModule,
|
|
3604
|
-
|
|
3605
|
-
InputCheckboxModule,
|
|
3606
|
-
InputComboBoxModule,
|
|
2523
|
+
CoDialogModule,
|
|
3607
2524
|
IconModule,
|
|
3608
|
-
|
|
3609
|
-
|
|
3610
|
-
ButtonModule
|
|
3611
|
-
DocsignModule,
|
|
3612
|
-
CoDialogModule
|
|
2525
|
+
SendMethodEmailModule,
|
|
2526
|
+
SendMethodPrinterModule,
|
|
2527
|
+
ButtonModule
|
|
3613
2528
|
],
|
|
3614
2529
|
exports: [
|
|
3615
2530
|
SendMethodDialogComponent
|
|
3616
2531
|
],
|
|
3617
2532
|
providers: [
|
|
2533
|
+
SendMethodService,
|
|
3618
2534
|
StockService
|
|
3619
2535
|
]
|
|
3620
2536
|
},] }
|
|
@@ -3986,7 +2902,7 @@ class LayoutSwitcherComponent {
|
|
|
3986
2902
|
}
|
|
3987
2903
|
LayoutSwitcherComponent.decorators = [
|
|
3988
2904
|
{ type: Component, args: [{
|
|
3989
|
-
selector: "layout-switcher",
|
|
2905
|
+
selector: "co-layout-switcher",
|
|
3990
2906
|
template: `
|
|
3991
2907
|
<div class="mask-wrapper" [class.mask-wrapper-active]='showMaskSidebar' @showHideSidebar>
|
|
3992
2908
|
<div class="icon-wrapper" (click)="toggleMaskSidebar()">
|
|
@@ -4025,7 +2941,7 @@ LayoutSwitcherComponent.ctorParameters = () => [
|
|
|
4025
2941
|
{ type: IconCacheService }
|
|
4026
2942
|
];
|
|
4027
2943
|
LayoutSwitcherComponent.propDecorators = {
|
|
4028
|
-
showClass: [{ type: HostBinding, args: ['class.layout-switcher',] }],
|
|
2944
|
+
showClass: [{ type: HostBinding, args: ['class.co-layout-switcher',] }],
|
|
4029
2945
|
layoutItems: [{ type: Input }],
|
|
4030
2946
|
layoutSwitchEmit: [{ type: Output }]
|
|
4031
2947
|
};
|
|
@@ -4047,15 +2963,19 @@ LayoutSwitcherModule.decorators = [
|
|
|
4047
2963
|
},] }
|
|
4048
2964
|
];
|
|
4049
2965
|
|
|
4050
|
-
var GaugeColor
|
|
2966
|
+
var GaugeColor;
|
|
4051
2967
|
(function (GaugeColor) {
|
|
4052
|
-
GaugeColor["
|
|
4053
|
-
GaugeColor["
|
|
4054
|
-
GaugeColor["
|
|
4055
|
-
|
|
2968
|
+
GaugeColor["Lowest"] = "#E0E0E0";
|
|
2969
|
+
GaugeColor["Low"] = "#fff7b8";
|
|
2970
|
+
GaugeColor["MediumLow"] = "#ffe367";
|
|
2971
|
+
GaugeColor["MediumHigh"] = "#ffc15b";
|
|
2972
|
+
GaugeColor["High"] = "#F88952";
|
|
2973
|
+
GaugeColor["Highest"] = "#5FDCB3";
|
|
2974
|
+
})(GaugeColor || (GaugeColor = {}));
|
|
2975
|
+
|
|
4056
2976
|
class CoCircularGaugeComponent {
|
|
4057
2977
|
constructor() {
|
|
4058
|
-
this._color = GaugeColor
|
|
2978
|
+
this._color = GaugeColor.Low;
|
|
4059
2979
|
this.majorTicks = {
|
|
4060
2980
|
height: 0,
|
|
4061
2981
|
};
|
|
@@ -4128,25 +3048,33 @@ class CoCircularGaugeComponent {
|
|
|
4128
3048
|
}
|
|
4129
3049
|
;
|
|
4130
3050
|
getAnnotations() {
|
|
4131
|
-
if (this.value) {
|
|
3051
|
+
if (this.value !== undefined) {
|
|
3052
|
+
const label = this.value ? this.value + "%" : "0%";
|
|
4132
3053
|
return [{
|
|
4133
|
-
content: '<div class="annotation">' +
|
|
4134
|
-
|
|
4135
|
-
angle: 90,
|
|
4136
|
-
radius: '50%',
|
|
3054
|
+
content: '<div class="annotation" style="width:20px;height:20px;">' +
|
|
3055
|
+
'<div class="annotation-label">' + label + '</div></div>',
|
|
4137
3056
|
zIndex: '10',
|
|
4138
3057
|
}];
|
|
4139
3058
|
}
|
|
4140
3059
|
}
|
|
4141
3060
|
_setColor() {
|
|
4142
3061
|
if (this.value == 0) {
|
|
4143
|
-
this._color = GaugeColor
|
|
3062
|
+
this._color = GaugeColor.Lowest;
|
|
3063
|
+
}
|
|
3064
|
+
else if (this.value >= 1 && this.value < 25) {
|
|
3065
|
+
this._color = GaugeColor.Low;
|
|
3066
|
+
}
|
|
3067
|
+
else if (this.value >= 25 && this.value < 50) {
|
|
3068
|
+
this._color = GaugeColor.MediumLow;
|
|
3069
|
+
}
|
|
3070
|
+
else if (this.value >= 50 && this.value < 75) {
|
|
3071
|
+
this._color = GaugeColor.MediumHigh;
|
|
4144
3072
|
}
|
|
4145
|
-
else if (this.value >=
|
|
4146
|
-
this._color = GaugeColor
|
|
3073
|
+
else if (this.value >= 75 && this.value < 100) {
|
|
3074
|
+
this._color = GaugeColor.High;
|
|
4147
3075
|
}
|
|
4148
3076
|
else if (this.value == 100) {
|
|
4149
|
-
this._color = GaugeColor
|
|
3077
|
+
this._color = GaugeColor.Highest;
|
|
4150
3078
|
}
|
|
4151
3079
|
}
|
|
4152
3080
|
}
|
|
@@ -4188,12 +3116,6 @@ CoCircularGaugeModule.decorators = [
|
|
|
4188
3116
|
},] }
|
|
4189
3117
|
];
|
|
4190
3118
|
|
|
4191
|
-
var GaugeColor;
|
|
4192
|
-
(function (GaugeColor) {
|
|
4193
|
-
GaugeColor["Low"] = "#E0E0E0";
|
|
4194
|
-
GaugeColor["Medium"] = "#F88952";
|
|
4195
|
-
GaugeColor["High"] = "#5FDCB3";
|
|
4196
|
-
})(GaugeColor || (GaugeColor = {}));
|
|
4197
3119
|
class CoLinearGaugeComponent {
|
|
4198
3120
|
constructor() {
|
|
4199
3121
|
this.color = GaugeColor.Low;
|
|
@@ -4213,14 +3135,23 @@ class CoLinearGaugeComponent {
|
|
|
4213
3135
|
}
|
|
4214
3136
|
_setColor() {
|
|
4215
3137
|
if (this.value == 0) {
|
|
3138
|
+
this.color = GaugeColor.Lowest;
|
|
3139
|
+
}
|
|
3140
|
+
else if (this.value >= 1 && this.value < 25) {
|
|
4216
3141
|
this.color = GaugeColor.Low;
|
|
4217
3142
|
}
|
|
4218
|
-
else if (this.value >=
|
|
4219
|
-
this.color = GaugeColor.
|
|
3143
|
+
else if (this.value >= 25 && this.value < 50) {
|
|
3144
|
+
this.color = GaugeColor.MediumLow;
|
|
4220
3145
|
}
|
|
4221
|
-
else if (this.value
|
|
3146
|
+
else if (this.value >= 50 && this.value < 75) {
|
|
3147
|
+
this.color = GaugeColor.MediumHigh;
|
|
3148
|
+
}
|
|
3149
|
+
else if (this.value >= 75 && this.value < 100) {
|
|
4222
3150
|
this.color = GaugeColor.High;
|
|
4223
3151
|
}
|
|
3152
|
+
else if (this.value == 100) {
|
|
3153
|
+
this.color = GaugeColor.Highest;
|
|
3154
|
+
}
|
|
4224
3155
|
}
|
|
4225
3156
|
}
|
|
4226
3157
|
CoLinearGaugeComponent.decorators = [
|
|
@@ -4266,6 +3197,7 @@ class StatusbarComponent {
|
|
|
4266
3197
|
}
|
|
4267
3198
|
set statusbarData(value) {
|
|
4268
3199
|
this._statusbarData = value;
|
|
3200
|
+
this.adjustTooHighPercentages();
|
|
4269
3201
|
}
|
|
4270
3202
|
get statusbarData() {
|
|
4271
3203
|
return this._statusbarData;
|
|
@@ -4273,17 +3205,13 @@ class StatusbarComponent {
|
|
|
4273
3205
|
showClass() {
|
|
4274
3206
|
return true;
|
|
4275
3207
|
}
|
|
4276
|
-
|
|
4277
|
-
this.showPopup =
|
|
4278
|
-
this.
|
|
4279
|
-
|
|
4280
|
-
|
|
4281
|
-
|
|
4282
|
-
|
|
4283
|
-
this.showPopup = false;
|
|
4284
|
-
}
|
|
4285
|
-
onStatusbarClick() {
|
|
4286
|
-
this.statusbarClick.emit();
|
|
3208
|
+
onStatusbarClick(event) {
|
|
3209
|
+
this.showPopup = !this.showPopup;
|
|
3210
|
+
if (this.showPopup) {
|
|
3211
|
+
this._mouseY = event.screenY;
|
|
3212
|
+
this._windowHeight = window.innerHeight;
|
|
3213
|
+
this.setPopupClass();
|
|
3214
|
+
}
|
|
4287
3215
|
}
|
|
4288
3216
|
setPopupClass() {
|
|
4289
3217
|
const popupHeight = this.statusbarData.length * 30;
|
|
@@ -4295,6 +3223,9 @@ class StatusbarComponent {
|
|
|
4295
3223
|
this.popupClass = 'dropup';
|
|
4296
3224
|
}
|
|
4297
3225
|
}
|
|
3226
|
+
adjustTooHighPercentages() {
|
|
3227
|
+
this._statusbarData.forEach(data => data.percentage > 100 ? data.percentage = 100 : false);
|
|
3228
|
+
}
|
|
4298
3229
|
}
|
|
4299
3230
|
StatusbarComponent.decorators = [
|
|
4300
3231
|
{ type: Component, args: [{
|
|
@@ -4302,16 +3233,14 @@ StatusbarComponent.decorators = [
|
|
|
4302
3233
|
template: `
|
|
4303
3234
|
<div class="co-statusbar-wrapper"
|
|
4304
3235
|
*ngIf="statusbarData"
|
|
4305
|
-
(
|
|
4306
|
-
(mouseleave)="onLeave()"
|
|
4307
|
-
(click)="onStatusbarClick()">
|
|
3236
|
+
(click)="onStatusbarClick($event)">
|
|
4308
3237
|
<div class="statuses">
|
|
4309
3238
|
<div *ngFor="let data of statusbarData; let index = index" class="status">
|
|
4310
3239
|
<co-linear-gauge [class.focused-status]="focusedStatusIndex !== undefined && focusedStatusIndex === index"
|
|
4311
3240
|
[value]="data.percentage" [count]="data.count ? data.count : undefined"></co-linear-gauge>
|
|
4312
3241
|
</div>
|
|
4313
3242
|
</div>
|
|
4314
|
-
<div class=status-description-popup *ngIf="showPopup" @showHidePopup [ngClass]="popupClass">
|
|
3243
|
+
<div class=status-description-popup *ngIf="showPopup" @showHidePopup [ngClass]="popupClass" clickOutside (clickOutside)="showPopup=false">
|
|
4315
3244
|
<div class="status-descriptions">
|
|
4316
3245
|
<div *ngFor="let data of statusbarData; let index = index" class="status-description">
|
|
4317
3246
|
<co-circular-gauge [value]="data.percentage"></co-circular-gauge>
|
|
@@ -4346,7 +3275,8 @@ StatusbarModule.decorators = [
|
|
|
4346
3275
|
imports: [
|
|
4347
3276
|
CommonModule,
|
|
4348
3277
|
CoCircularGaugeModule,
|
|
4349
|
-
CoLinearGaugeModule
|
|
3278
|
+
CoLinearGaugeModule,
|
|
3279
|
+
ClickoutsideModule
|
|
4350
3280
|
],
|
|
4351
3281
|
declarations: [
|
|
4352
3282
|
StatusbarComponent
|
|
@@ -4370,6 +3300,7 @@ class DatePlanningComponent {
|
|
|
4370
3300
|
this.rangeChange = new EventEmitter();
|
|
4371
3301
|
this.viewChange = new EventEmitter();
|
|
4372
3302
|
this.buttonClick = new EventEmitter();
|
|
3303
|
+
this.showClass = true;
|
|
4373
3304
|
this.days = [];
|
|
4374
3305
|
this._selectedDate = new Date();
|
|
4375
3306
|
}
|
|
@@ -4400,7 +3331,7 @@ class DatePlanningComponent {
|
|
|
4400
3331
|
}
|
|
4401
3332
|
DatePlanningComponent.decorators = [
|
|
4402
3333
|
{ type: Component, args: [{
|
|
4403
|
-
selector: "
|
|
3334
|
+
selector: "co-date-planning",
|
|
4404
3335
|
template: `
|
|
4405
3336
|
<div class="sc-agenda">
|
|
4406
3337
|
<div class="content-wrapper">
|
|
@@ -4446,6 +3377,7 @@ DatePlanningComponent.ctorParameters = () => [
|
|
|
4446
3377
|
{ type: Renderer2 }
|
|
4447
3378
|
];
|
|
4448
3379
|
DatePlanningComponent.propDecorators = {
|
|
3380
|
+
dayStart: [{ type: ViewChild, args: ["dayStart", { static: true },] }],
|
|
4449
3381
|
calendarNavigation: [{ type: Input }],
|
|
4450
3382
|
showButton: [{ type: Input }],
|
|
4451
3383
|
selectedDate: [{ type: Input }],
|
|
@@ -4458,7 +3390,7 @@ DatePlanningComponent.propDecorators = {
|
|
|
4458
3390
|
rangeChange: [{ type: Output }],
|
|
4459
3391
|
viewChange: [{ type: Output }],
|
|
4460
3392
|
buttonClick: [{ type: Output }],
|
|
4461
|
-
|
|
3393
|
+
showClass: [{ type: HostBinding, args: ["class.co-date-planning",] }]
|
|
4462
3394
|
};
|
|
4463
3395
|
|
|
4464
3396
|
class CalendarAllYearsComponent {
|
|
@@ -4729,6 +3661,11 @@ ArrayNumberPipe.decorators = [
|
|
|
4729
3661
|
},] }
|
|
4730
3662
|
];
|
|
4731
3663
|
|
|
3664
|
+
// @returns true iff given value does not equals null and does not equal undefined
|
|
3665
|
+
function notNill(value) {
|
|
3666
|
+
return value !== null && value !== undefined;
|
|
3667
|
+
}
|
|
3668
|
+
|
|
4732
3669
|
class DateRange {
|
|
4733
3670
|
constructor() {
|
|
4734
3671
|
}
|
|
@@ -6259,29 +5196,6 @@ DatePlanningModule.decorators = [
|
|
|
6259
5196
|
},] }
|
|
6260
5197
|
];
|
|
6261
5198
|
|
|
6262
|
-
class SharedService {
|
|
6263
|
-
constructor(options, connector) {
|
|
6264
|
-
this.options = options;
|
|
6265
|
-
this.connector = connector;
|
|
6266
|
-
}
|
|
6267
|
-
init(options) {
|
|
6268
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
6269
|
-
yield this.options.initialize(options);
|
|
6270
|
-
this.connector.connect();
|
|
6271
|
-
});
|
|
6272
|
-
}
|
|
6273
|
-
}
|
|
6274
|
-
SharedService.ɵprov = i0.ɵɵdefineInjectable({ factory: function SharedService_Factory() { return new SharedService(i0.ɵɵinject(OptionsService), i0.ɵɵinject(SharedConnectorService)); }, token: SharedService, providedIn: "root" });
|
|
6275
|
-
SharedService.decorators = [
|
|
6276
|
-
{ type: Injectable, args: [{
|
|
6277
|
-
providedIn: "root"
|
|
6278
|
-
},] }
|
|
6279
|
-
];
|
|
6280
|
-
SharedService.ctorParameters = () => [
|
|
6281
|
-
{ type: OptionsService },
|
|
6282
|
-
{ type: SharedConnectorService }
|
|
6283
|
-
];
|
|
6284
|
-
|
|
6285
5199
|
/*
|
|
6286
5200
|
* Public API Surface of sharedcomponents
|
|
6287
5201
|
*/
|
|
@@ -6290,5 +5204,5 @@ SharedService.ctorParameters = () => [
|
|
|
6290
5204
|
* Generated bundle index. Do not edit.
|
|
6291
5205
|
*/
|
|
6292
5206
|
|
|
6293
|
-
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,
|
|
5207
|
+
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 };
|
|
6294
5208
|
//# sourceMappingURL=colijnit-sharedcomponents.js.map
|