@veloceapps/sdk 5.0.13-0 → 5.0.13-10
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/veloceapps-sdk-core.umd.js +193 -38
- package/bundles/veloceapps-sdk-core.umd.js.map +1 -1
- package/bundles/veloceapps-sdk-runtime.umd.js +3 -3
- package/bundles/veloceapps-sdk-runtime.umd.js.map +1 -1
- package/bundles/veloceapps-sdk.umd.js +23 -19
- package/bundles/veloceapps-sdk.umd.js.map +1 -1
- package/cms/vendor-map.d.ts +1 -0
- package/core/services/index.d.ts +1 -0
- package/core/services/metric-calculation/metric-calculation.service.d.ts +21 -0
- package/core/services/metric-calculation/metric-calculation.types.d.ts +1 -0
- package/core/services/metric-calculation/metric-calculation.utils.d.ts +5 -0
- package/core/services/quote-draft.service.d.ts +3 -1
- package/core/utils/line-item.utils.d.ts +1 -0
- package/esm2015/core/core.module.js +4 -4
- package/esm2015/core/modules/flow-configuration/services/flow-configuration.service.js +9 -2
- package/esm2015/core/services/index.js +2 -1
- package/esm2015/core/services/metric-calculation/metric-calculation.service.js +74 -0
- package/esm2015/core/services/metric-calculation/metric-calculation.types.js +2 -0
- package/esm2015/core/services/metric-calculation/metric-calculation.utils.js +42 -0
- package/esm2015/core/services/quote-draft.service.js +15 -5
- package/esm2015/core/utils/line-item.utils.js +13 -2
- package/esm2015/runtime/execution/components/context-provider/context-provider.component.js +1 -1
- package/esm2015/runtime/execution/runtime-execution.module.js +2 -2
- package/esm2015/runtime/runtime.module.js +2 -2
- package/esm2015/runtime/services/section.service.js +2 -2
- package/esm2015/src/components/header/metrics/metrics.component.js +12 -8
- package/esm2015/src/components/header/metrics/metrics.definitions.js +6 -6
- package/esm2015/src/resolvers/quote.resolver.js +9 -9
- package/fesm2015/veloceapps-sdk-core.js +169 -33
- package/fesm2015/veloceapps-sdk-core.js.map +1 -1
- package/fesm2015/veloceapps-sdk-runtime.js +1 -1
- package/fesm2015/veloceapps-sdk-runtime.js.map +1 -1
- package/fesm2015/veloceapps-sdk.js +22 -18
- package/fesm2015/veloceapps-sdk.js.map +1 -1
- package/package.json +2 -2
- package/runtime/execution/components/context-provider/context-provider.component.d.ts +2 -2
- package/runtime/execution/runtime-execution.module.d.ts +1 -1
- package/runtime/runtime.module.d.ts +1 -1
- package/src/components/header/metrics/metrics.component.d.ts +3 -2
@@ -33,16 +33,16 @@ export class QuoteResolver {
|
|
33
33
|
}
|
34
34
|
const { queryParams } = route;
|
35
35
|
return this.quoteDraftService.init(headerId, queryParams).pipe(switchMap(() => this.calculate$()), tap(() => {
|
36
|
-
if (this.quoteDraftService.isStandalone) {
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
this.
|
41
|
-
|
42
|
-
|
43
|
-
this.changeNavigation('/cart', route);
|
36
|
+
if (!this.quoteDraftService.isStandalone) {
|
37
|
+
if (this.accountHasNotAssets()) {
|
38
|
+
this.changeNavigation('/empty', route);
|
39
|
+
}
|
40
|
+
else if (!this.quoteDraftService.isInitialized && this.quoteDraftService.hasAssets) {
|
41
|
+
this.changeNavigation('/cart', route);
|
42
|
+
}
|
44
43
|
}
|
45
44
|
this.quoteDraftService.isInitialized = true;
|
45
|
+
this.quoteDraftService.hasUnsavedChanges = false;
|
46
46
|
}), catchError(e => {
|
47
47
|
const message = e instanceof HttpErrorResponse ? e.error.message : e;
|
48
48
|
return this.handleError(route, message);
|
@@ -71,4 +71,4 @@ QuoteResolver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", versio
|
|
71
71
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: QuoteResolver, decorators: [{
|
72
72
|
type: Injectable
|
73
73
|
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.QuoteDraftService }, { type: i3.FlowRouterService }, { type: i2.ContextService }, { type: i2.FlowConfigurationService }]; } });
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVvdGUucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9zcmMvcmVzb2x2ZXJzL3F1b3RlLnJlc29sdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBSXhFLE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFlBQ1UsTUFBYyxFQUNkLGlCQUFvQyxFQUNwQyxhQUFnQyxFQUNoQyxjQUE4QixFQUM5QixpQkFBMkM7UUFKM0MsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsa0JBQWEsR0FBYixhQUFhLENBQW1CO1FBQ2hDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQTBCO0lBQ2xELENBQUM7SUFFSSxXQUFXLENBQUMsS0FBNkIsRUFBRSxPQUFlO1FBQ2hFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVPLFVBQVU7UUFDaEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFD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QVUsQ0FBQyxJQUFJLE1BQUssd0JBQXdCLENBQUMsT0FBTztZQUMvRixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQ2xDLENBQUM7SUFDSixDQUFDOzsyR0ExRVUsYUFBYTsrR0FBYixhQUFhOzRGQUFiLGFBQWE7a0JBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJlc29sdmUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUgfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IENvbnRleHRTZXJ2aWNlLCBGbG93Q29uZmlndXJhdGlvblNlcnZpY2UsIFF1b3RlRHJhZnRTZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZWFwcHMvc2RrL2NvcmUnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZnJvbSwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGbG93Um91dGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Zsb3ctcm91dGVyLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUXVvdGVSZXNvbHZlciBpbXBsZW1lbnRzIFJlc29sdmU8dm9pZCB8IGJvb2xlYW4+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHF1b3RlRHJhZnRTZXJ2aWNlOiBRdW90ZURyYWZ0U2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlclNlcnZpY2U6IEZsb3dSb3V0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd0NvbmZpZ3VyYXRpb246IEZsb3dDb25maWd1cmF0aW9uU2VydmljZSxcbiAgKSB7fVxuXG4gIHByaXZhdGUgaGFuZGxlRXJyb3Iocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIG1lc3NhZ2U6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHBhcmVudFVybCA9IHRoaXMucm91dGVyU2VydmljZS5nZXRGbG93Um9vdFBhdGgocm91dGUpO1xuICAgIHJldHVybiBmcm9tKHRoaXMucm91dGVyLm5hdmlnYXRlKFtwYXJlbnRVcmwsICc0MDQnXSwgeyBzdGF0ZTogeyBtZXNzYWdlIH0gfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGUkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IHF1b3RlRHJhZnQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQ7XG5cbiAgICBpZiAoIXRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaXNTdGFuZGFsb25lICYmIHF1b3RlRHJhZnQgJiYgIXRoaXMuYWNjb3VudEhhc05vdEFzc2V0cygpKSB7XG4gICAgICByZXR1cm4gdGhpcy5mbG93Q29uZmlndXJhdGlvbi5jYWxjdWxhdGUkKHF1b3RlRHJhZnQpO1xuICAgIH1cblxuICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPHZvaWQgfCBib29sZWFuPiB7XG4gICAgY29uc3QgeyBoZWFkZXJJZCB9ID0gdGhpcy5jb250ZXh0U2VydmljZS5yZXNvbHZlKCk7XG4gICAgY29uc3QgcXVvdGUgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQ7XG5cbiAgICBpZiAocXVvdGUgJiYgcXVvdGUucXVvdGVJZCA9PT0gaGVhZGVySWQpIHtcbiAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IHF1ZXJ5UGFyYW1zIH0gPSByb3V0ZTtcblxuICAgIHJldHVybiB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmluaXQoaGVhZGVySWQsIHF1ZXJ5UGFyYW1zKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuY2FsY3VsYXRlJCgpKSxcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5xdW90ZURyYWZ0U2VydmljZS5pc1N0YW5kYWxvbmUpIHtcbiAgICAgICAgICBpZiAodGhpcy5hY2NvdW50SGFzTm90QXNzZXRzKCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlTmF2aWdhdGlvbignL2VtcHR5Jywgcm91dGUpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaXNJbml0aWFsaXplZCAmJiB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmhhc0Fzc2V0cykge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VOYXZpZ2F0aW9uKCcvY2FydCcsIHJvdXRlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gZmFsc2U7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoZSA9PiB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UgPyBlLmVycm9yLm1lc3NhZ2UgOiBlO1xuICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVFcnJvcihyb3V0ZSwgbWVzc2FnZSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFuZ2VOYXZpZ2F0aW9uKHBhdGg6IHN0cmluZywgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiB2b2lkIHtcbiAgICBjb25zdCBwYXJlbnRVcmwgPSB0aGlzLnJvdXRlclNlcnZpY2UuZ2V0Rmxvd1Jvb3RQYXRoKHJvdXRlKTtcblxuICAgIHRoaXMucm91dGVyXG4gICAgICAubmF2aWdhdGUoW3BhcmVudFVybCArIHBhdGhdLCB7XG4gICAgICAgIHF1ZXJ5UGFyYW1zOiByb3V0ZS5xdWVyeVBhcmFtcyxcbiAgICAgICAgcmVwbGFjZVVybDogdHJ1ZSxcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UgPyBlLmVycm9yLm1lc3NhZ2UgOiBlO1xuICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVFcnJvcihyb3V0ZSwgbWVzc2FnZSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWNjb3VudEhhc05vdEFzc2V0cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0Py5jb250ZXh0LnByb3BlcnRpZXMubW9kZSA9PT0gQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLkFDQ09VTlQgJiZcbiAgICAgICF0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmhhc0Fzc2V0c1xuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
@@ -1,11 +1,11 @@
|
|
1
1
|
import * as i0 from '@angular/core';
|
2
2
|
import { Injectable, NgModule } from '@angular/core';
|
3
3
|
import { UUID, ConfigurationContext, ConfigurationContextMode, RuntimeModel, SalesforceIdUtils, ConfigurationMode, ChargeGroupUtils } from '@veloceapps/core';
|
4
|
-
import { BehaviorSubject, map as map$1, distinctUntilChanged, catchError, of, tap as tap$1,
|
4
|
+
import { BehaviorSubject, zip, noop, combineLatest, Subject, take as take$1, map as map$1, distinctUntilChanged, catchError, of, tap as tap$1, throwError, shareReplay as shareReplay$1, switchMap as switchMap$1 } from 'rxjs';
|
5
5
|
import { filter, tap, map, switchMap, skip, take, shareReplay, first, catchError as catchError$1, finalize } from 'rxjs/operators';
|
6
6
|
import * as i1 from '@veloceapps/api';
|
7
7
|
import { PriceApiService, ContextApiService, ProductModelApiService, ConfigurationApiService } from '@veloceapps/api';
|
8
|
-
import { merge, flatten, sortBy, cloneDeep } from 'lodash';
|
8
|
+
import { merge, isEqual, uniq, flatten, sortBy, map as map$2, cloneDeep } from 'lodash';
|
9
9
|
import { ToastType, ConfirmationComponent, ConfirmationDialogModule } from '@veloceapps/components';
|
10
10
|
import * as i4 from 'primeng/api';
|
11
11
|
import * as i5 from 'primeng/dynamicdialog';
|
@@ -79,31 +79,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
|
|
79
79
|
args: [{ providedIn: 'root' }]
|
80
80
|
}], ctorParameters: function () { return [{ type: i1.ContextApiService }]; } });
|
81
81
|
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
82
|
+
function calculateMetricByMethod(lineItems, metric, method) {
|
83
|
+
const items = getLineItemsByMethod(lineItems, method);
|
84
|
+
return items.reduce((acc, li) => {
|
85
|
+
let value = li.reduce((accProduct, item) => accProduct + ((item.totalMetrics && item.totalMetrics[metric]) || 0), 0);
|
86
|
+
if (method === 'avg' && li.length > 0) {
|
87
|
+
value /= li.length;
|
88
|
+
}
|
89
|
+
return acc + value;
|
90
|
+
}, 0);
|
91
|
+
}
|
92
|
+
function getLineItemsByMethod(lineItems, method) {
|
93
|
+
switch (method) {
|
94
|
+
case 'first': {
|
95
|
+
return lineItems.filter(li => !li.rampInstanceId).map(item => [item]);
|
96
|
+
}
|
97
|
+
case 'last': {
|
98
|
+
const rootTermItems = lineItems.filter(li => !li.rampInstanceId);
|
99
|
+
const products = rootTermItems.map(lineItem => [
|
100
|
+
lineItem,
|
101
|
+
...lineItems.filter(li => li.rampInstanceId === lineItem.id),
|
102
|
+
]);
|
103
|
+
return products
|
104
|
+
.map(items => [...items].sort((a, b) => getDateValue(a.endDate || '') - getDateValue(b.endDate || '')).pop())
|
105
|
+
.filter((li) => Boolean(li))
|
106
|
+
.map(item => [item]);
|
107
|
+
}
|
108
|
+
case 'avg': {
|
109
|
+
const rootTermItems = lineItems.filter(li => !li.rampInstanceId);
|
110
|
+
return rootTermItems.map(lineItem => [lineItem, ...lineItems.filter(li => li.rampInstanceId === lineItem.id)]);
|
111
|
+
}
|
112
|
+
case 'sum': {
|
113
|
+
return lineItems.map(item => [item]);
|
114
|
+
}
|
115
|
+
default: {
|
116
|
+
return lineItems.map(item => [item]);
|
91
117
|
}
|
92
|
-
return this.imagesMap$.pipe(map$1(imagesMap => imagesMap[productId]), distinctUntilChanged());
|
93
|
-
}
|
94
|
-
fetchProductImage(productId) {
|
95
|
-
this.productApiService
|
96
|
-
.fetchImage$(productId)
|
97
|
-
.pipe(map$1(file => URL.createObjectURL(file)), catchError(() => of('')), tap$1(url => this.imagesMap$.next(Object.assign(Object.assign({}, this.imagesMap$.value), { [productId]: url }))))
|
98
|
-
.subscribe();
|
99
118
|
}
|
100
119
|
}
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
type: Injectable,
|
105
|
-
args: [{ providedIn: 'root' }]
|
106
|
-
}], ctorParameters: function () { return [{ type: i1.ProductApiService }]; } });
|
120
|
+
function getDateValue(date) {
|
121
|
+
return date ? new Date(date).getTime() : 0;
|
122
|
+
}
|
107
123
|
|
108
124
|
class QuoteDraftService {
|
109
125
|
constructor(context, quoteApiService, priceApiService) {
|
@@ -114,9 +130,9 @@ class QuoteDraftService {
|
|
114
130
|
this.resetSubj$ = new BehaviorSubject(true);
|
115
131
|
this.isInitializedSubj$ = new BehaviorSubject(false);
|
116
132
|
this.initialCurrentState = [];
|
133
|
+
this._hasUnsavedChanges = false;
|
117
134
|
this.allPriceLists = [];
|
118
135
|
this.assetPriceLists = [];
|
119
|
-
this.hasUnsavedChanges = false;
|
120
136
|
this.reset$ = this.resetSubj$.asObservable();
|
121
137
|
this.activePriceList$ = this.context.resolve$().pipe(map(ctx => this.allPriceLists.find(priceList => priceList.id === ctx.properties.PriceListId)), map(priceList => priceList !== null && priceList !== void 0 ? priceList : null));
|
122
138
|
this.isInitializedSubj$
|
@@ -131,6 +147,16 @@ class QuoteDraftService {
|
|
131
147
|
this.isInitializedSubj$.next(value);
|
132
148
|
}
|
133
149
|
}
|
150
|
+
get hasUnsavedChanges() {
|
151
|
+
return this._hasUnsavedChanges;
|
152
|
+
}
|
153
|
+
set hasUnsavedChanges(value) {
|
154
|
+
var _a, _b;
|
155
|
+
this._hasUnsavedChanges = value;
|
156
|
+
if (!this._hasUnsavedChanges) {
|
157
|
+
this.initialCurrentState = (_b = (_a = this.quoteDraft) === null || _a === void 0 ? void 0 : _a.currentState) !== null && _b !== void 0 ? _b : [];
|
158
|
+
}
|
159
|
+
}
|
134
160
|
get hasAssets$() {
|
135
161
|
return this.quoteSubj$.pipe(map(() => this.hasAssets));
|
136
162
|
}
|
@@ -141,13 +167,12 @@ class QuoteDraftService {
|
|
141
167
|
reset() {
|
142
168
|
this.resetSubj$.next(true);
|
143
169
|
this.quoteSubj$.next(null);
|
144
|
-
this.
|
170
|
+
this.hasUnsavedChanges = false;
|
145
171
|
}
|
146
172
|
init(quoteId, params) {
|
147
173
|
return zip(this.quoteApiService.getQuoteDraft(quoteId, params), this.priceApiService.getPriceLists()).pipe(tap(([quote, allPriceLists]) => {
|
148
174
|
this.allPriceLists = allPriceLists;
|
149
175
|
this.quoteSubj$.next(quote);
|
150
|
-
this.initialCurrentState = quote.currentState;
|
151
176
|
this.context.update(quote.context);
|
152
177
|
this.populateActivePriceLists$();
|
153
178
|
}), map(() => noop()), take(1));
|
@@ -294,7 +319,7 @@ class QuoteDraftService {
|
|
294
319
|
this.hasUnsavedChanges = !!quote && !quote.currentState.every(li => li.actionCode === 'EXIST');
|
295
320
|
}
|
296
321
|
else {
|
297
|
-
this.hasUnsavedChanges =
|
322
|
+
this.hasUnsavedChanges = !isEqual(this.initialCurrentState, quote === null || quote === void 0 ? void 0 : quote.currentState);
|
298
323
|
}
|
299
324
|
}
|
300
325
|
}
|
@@ -305,6 +330,99 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
|
|
305
330
|
args: [{ providedIn: 'root' }]
|
306
331
|
}], ctorParameters: function () { return [{ type: ContextService }, { type: i1.QuoteApiService }, { type: i1.PriceApiService }]; } });
|
307
332
|
|
333
|
+
class MetricsCalculationService {
|
334
|
+
constructor(quoteDraftService, settingsService) {
|
335
|
+
this.quoteDraftService = quoteDraftService;
|
336
|
+
this.settingsService = settingsService;
|
337
|
+
this.metricsUpdated$ = new Subject();
|
338
|
+
this.quoteMetricsSettings = {};
|
339
|
+
this.metricsCalculationMethodMap = {};
|
340
|
+
this.metricsData = {};
|
341
|
+
combineLatest([
|
342
|
+
this.quoteDraftService.currentState$,
|
343
|
+
this.settingsService.fetchSetting('QUOTE_LEVEL_METRIC_CALCULATION_METHOD').pipe(take$1(1)),
|
344
|
+
]).subscribe(([lineItems, setting]) => {
|
345
|
+
let settingsData = {};
|
346
|
+
try {
|
347
|
+
settingsData = JSON.parse((setting === null || setting === void 0 ? void 0 : setting.value) || '{}');
|
348
|
+
}
|
349
|
+
catch (error) {
|
350
|
+
settingsData = {};
|
351
|
+
}
|
352
|
+
this.quoteMetricsSettings = settingsData;
|
353
|
+
this.updateMetrics(lineItems);
|
354
|
+
});
|
355
|
+
}
|
356
|
+
get onMetricsUpdate$() {
|
357
|
+
return this.metricsUpdated$.asObservable();
|
358
|
+
}
|
359
|
+
getMetricValue(metric) {
|
360
|
+
return this.metricsData[metric] || 0;
|
361
|
+
}
|
362
|
+
updateMetrics(lineItems) {
|
363
|
+
const metricKeys = this.collectMetricKeys(lineItems).filter(key => !key.includes('Effective_'));
|
364
|
+
this.metricsCalculationMethodMap = this.buildMetricsCalculationMethods(metricKeys, this.metricsCalculationMethodMap);
|
365
|
+
this.metricsData = metricKeys.reduce((acc, key) => (Object.assign(Object.assign({}, acc), { [key]: this.calculateMetric(lineItems, key) })), {});
|
366
|
+
this.metricsUpdated$.next();
|
367
|
+
}
|
368
|
+
calculateMetric(lineItems, metric) {
|
369
|
+
return calculateMetricByMethod(lineItems, metric, this.metricsCalculationMethodMap[metric] || 'sum');
|
370
|
+
}
|
371
|
+
buildMetricsCalculationMethods(metricKeys, initial) {
|
372
|
+
return metricKeys.reduce((acc, name) => {
|
373
|
+
if (acc[name]) {
|
374
|
+
return acc;
|
375
|
+
}
|
376
|
+
acc = Object.assign(Object.assign({}, acc), { [name]: 'sum' });
|
377
|
+
const settingKey = name.replace(/VDM_|Total_/g, '');
|
378
|
+
if (this.quoteMetricsSettings[settingKey]) {
|
379
|
+
acc = Object.assign(Object.assign({}, acc), { [name]: this.quoteMetricsSettings[settingKey] });
|
380
|
+
}
|
381
|
+
return acc;
|
382
|
+
}, initial);
|
383
|
+
}
|
384
|
+
collectMetricKeys(lineItems) {
|
385
|
+
const keys = [];
|
386
|
+
lineItems.forEach(lineItem => {
|
387
|
+
keys.push(...Object.keys(lineItem.totalMetrics || {}));
|
388
|
+
keys.push(...this.collectMetricKeys(lineItem.lineItems));
|
389
|
+
});
|
390
|
+
return uniq(keys);
|
391
|
+
}
|
392
|
+
}
|
393
|
+
MetricsCalculationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: MetricsCalculationService, deps: [{ token: QuoteDraftService }, { token: i1.ConfigurationSettingsApiService }], target: i0.ɵɵFactoryTarget.Injectable });
|
394
|
+
MetricsCalculationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: MetricsCalculationService, providedIn: 'root' });
|
395
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: MetricsCalculationService, decorators: [{
|
396
|
+
type: Injectable,
|
397
|
+
args: [{ providedIn: 'root' }]
|
398
|
+
}], ctorParameters: function () { return [{ type: QuoteDraftService }, { type: i1.ConfigurationSettingsApiService }]; } });
|
399
|
+
|
400
|
+
class ProductImagesService {
|
401
|
+
constructor(productApiService) {
|
402
|
+
this.productApiService = productApiService;
|
403
|
+
this.imagesMap$ = new BehaviorSubject({});
|
404
|
+
}
|
405
|
+
getImageUrl$(productId) {
|
406
|
+
if (this.imagesMap$.value[productId] == null) {
|
407
|
+
this.imagesMap$.next(Object.assign(Object.assign({}, this.imagesMap$.value), { [productId]: '' }));
|
408
|
+
this.fetchProductImage(productId);
|
409
|
+
}
|
410
|
+
return this.imagesMap$.pipe(map$1(imagesMap => imagesMap[productId]), distinctUntilChanged());
|
411
|
+
}
|
412
|
+
fetchProductImage(productId) {
|
413
|
+
this.productApiService
|
414
|
+
.fetchImage$(productId)
|
415
|
+
.pipe(map$1(file => URL.createObjectURL(file)), catchError(() => of('')), tap$1(url => this.imagesMap$.next(Object.assign(Object.assign({}, this.imagesMap$.value), { [productId]: url }))))
|
416
|
+
.subscribe();
|
417
|
+
}
|
418
|
+
}
|
419
|
+
ProductImagesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ProductImagesService, deps: [{ token: i1.ProductApiService }], target: i0.ɵɵFactoryTarget.Injectable });
|
420
|
+
ProductImagesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ProductImagesService, providedIn: 'root' });
|
421
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ProductImagesService, decorators: [{
|
422
|
+
type: Injectable,
|
423
|
+
args: [{ providedIn: 'root' }]
|
424
|
+
}], ctorParameters: function () { return [{ type: i1.ProductApiService }]; } });
|
425
|
+
|
308
426
|
class RuntimeContextService {
|
309
427
|
constructor(configurationApiService) {
|
310
428
|
this.configurationApiService = configurationApiService;
|
@@ -530,6 +648,17 @@ const getRecommendedPrices = (portDomain, type) => {
|
|
530
648
|
}, [0, 0])) !== null && _b !== void 0 ? _b : [0, 0];
|
531
649
|
return { net, list };
|
532
650
|
};
|
651
|
+
const multiplyLineItems = (lineItem, qty, split) => {
|
652
|
+
if (split) {
|
653
|
+
const unifyIds = (lineItem) => (Object.assign(Object.assign({}, lineItem), { id: UUID.UUID(), lineItems: lineItem.lineItems.map(unifyIds) }));
|
654
|
+
return map$2(new Array(qty), () => unifyIds(lineItem));
|
655
|
+
}
|
656
|
+
else {
|
657
|
+
return [
|
658
|
+
Object.assign(Object.assign({}, lineItem), { qty: qty }),
|
659
|
+
];
|
660
|
+
}
|
661
|
+
};
|
533
662
|
|
534
663
|
var lineItem_utils = /*#__PURE__*/Object.freeze({
|
535
664
|
__proto__: null,
|
@@ -544,7 +673,8 @@ var lineItem_utils = /*#__PURE__*/Object.freeze({
|
|
544
673
|
patchAttributes: patchAttributes,
|
545
674
|
getAttributeValue: getAttributeValue,
|
546
675
|
generateLineItem: generateLineItem,
|
547
|
-
getRecommendedPrices: getRecommendedPrices
|
676
|
+
getRecommendedPrices: getRecommendedPrices,
|
677
|
+
multiplyLineItems: multiplyLineItems
|
548
678
|
});
|
549
679
|
|
550
680
|
class LineItemWorker {
|
@@ -925,7 +1055,13 @@ class FlowConfigurationService {
|
|
925
1055
|
if (!quoteDraft) {
|
926
1056
|
return of(null);
|
927
1057
|
}
|
928
|
-
return this.configurationService.configureExternal$(productId, qty).pipe(map$1(lineItem =>
|
1058
|
+
return this.configurationService.configureExternal$(productId, qty).pipe(map$1(lineItem => {
|
1059
|
+
var _a, _b;
|
1060
|
+
const model = this.configurationService.getRuntimeModel();
|
1061
|
+
const split = (_b = (_a = model === null || model === void 0 ? void 0 : model.types.find(type => type.name === lineItem.type)) === null || _a === void 0 ? void 0 : _a.split) !== null && _b !== void 0 ? _b : false;
|
1062
|
+
const lineItems = multiplyLineItems(lineItem, qty !== null && qty !== void 0 ? qty : 1, split);
|
1063
|
+
return [...quoteDraft.currentState, ...lineItems];
|
1064
|
+
}), switchMap$1(updatedState => this.calculate$(Object.assign(Object.assign({}, quoteDraft), { currentState: updatedState }))), map$1(() => this.quoteDraftService.quoteDraft), this.handleErrorAndBounceBack());
|
929
1065
|
}
|
930
1066
|
get() {
|
931
1067
|
return this.quoteDraftService.quoteDraft$.pipe(map$1(() => this.quoteDraftService.activeCurrentState), shareReplay$1());
|
@@ -1018,12 +1154,12 @@ class SdkCoreModule {
|
|
1018
1154
|
}
|
1019
1155
|
SdkCoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SdkCoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
1020
1156
|
SdkCoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SdkCoreModule, imports: [ConfigurationModule, FlowConfigurationModule] });
|
1021
|
-
SdkCoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SdkCoreModule, providers: [ContextService, QuoteDraftService, ProductImagesService], imports: [[ConfigurationModule, FlowConfigurationModule]] });
|
1157
|
+
SdkCoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SdkCoreModule, providers: [ContextService, QuoteDraftService, ProductImagesService, MetricsCalculationService], imports: [[ConfigurationModule, FlowConfigurationModule]] });
|
1022
1158
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SdkCoreModule, decorators: [{
|
1023
1159
|
type: NgModule,
|
1024
1160
|
args: [{
|
1025
1161
|
imports: [ConfigurationModule, FlowConfigurationModule],
|
1026
|
-
providers: [ContextService, QuoteDraftService, ProductImagesService],
|
1162
|
+
providers: [ContextService, QuoteDraftService, ProductImagesService, MetricsCalculationService],
|
1027
1163
|
}]
|
1028
1164
|
}] });
|
1029
1165
|
|
@@ -1031,5 +1167,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
|
|
1031
1167
|
* Generated bundle index. Do not edit.
|
1032
1168
|
*/
|
1033
1169
|
|
1034
|
-
export { ConfigurationRuntimeService, ConfigurationService, ContextService, FlowConfigurationModule, FlowConfigurationService, FlowUpdateService, LineItemWorker, ProductImagesService, QuoteDraftService, RuntimeMode, RuntimeOperation, RuntimeStep, SdkCoreModule, findLineItem, findLineItemWithComparator, generateLineItem, getAttributeValue, getAttributes, getDefaultLineItem, getRecommendedPrices, insertLineItem, lineItem_utils as lineItemUtils, mapAttributes, patchAttributes, removeLineItem, replaceLineItem, upsertAttributes };
|
1170
|
+
export { ConfigurationRuntimeService, ConfigurationService, ContextService, FlowConfigurationModule, FlowConfigurationService, FlowUpdateService, LineItemWorker, MetricsCalculationService, ProductImagesService, QuoteDraftService, RuntimeMode, RuntimeOperation, RuntimeStep, SdkCoreModule, findLineItem, findLineItemWithComparator, generateLineItem, getAttributeValue, getAttributes, getDefaultLineItem, getRecommendedPrices, insertLineItem, lineItem_utils as lineItemUtils, mapAttributes, multiplyLineItems, patchAttributes, removeLineItem, replaceLineItem, upsertAttributes };
|
1035
1171
|
//# sourceMappingURL=veloceapps-sdk-core.js.map
|