@veloceapps/sdk 8.0.0-139 → 8.0.0-140

Sign up to get free protection for your applications and to get access to all the features.
@@ -5,7 +5,7 @@ import * as i1 from '@veloceapps/api';
5
5
  import { ApiModule } from '@veloceapps/api';
6
6
  import { BehaviorSubject, switchMap, map as map$1, tap as tap$1, noop, catchError, throwError, of, forkJoin, Subject, filter as filter$1, zip, combineLatest, shareReplay as shareReplay$1, finalize, takeUntil, take as take$1, distinctUntilChanged } from 'rxjs';
7
7
  import { map, filter, tap, switchMap as switchMap$1, skip, take, shareReplay, catchError as catchError$1, finalize as finalize$1, first } from 'rxjs/operators';
8
- import { merge, isEmpty, flatten, sortBy, map as map$2, omit, isEqual, cloneDeep, assign, uniqBy, transform, uniq } from 'lodash';
8
+ import { merge, isEmpty, flatten, entries, sortBy, map as map$2, omit, isEqual, cloneDeep, assign, uniqBy, transform, uniq } from 'lodash';
9
9
  import * as i6 from '@veloceapps/components';
10
10
  import { ToastType, ConfirmationComponent, ConfirmationDialogModule } from '@veloceapps/components';
11
11
  import { HttpErrorResponse } from '@angular/common/http';
@@ -340,27 +340,42 @@ const replaceLineItem = (lineItem, replaceTo, skipCardinalityCalculation = false
340
340
  lineItems: lineItem.lineItems.map(li => replaceLineItem(li, replaceTo, skipCardinalityCalculation)),
341
341
  };
342
342
  };
343
- const calculateCardinalityVariables = (lineItems) => {
343
+ const collectCardinalityComputations = (portDomains) => {
344
+ const cardinalityComputations = new Map();
345
+ entries(portDomains).forEach(([key, portDomain]) => {
346
+ cardinalityComputations.set(key, portDomain.properties['cardinalityComputation'] === 'true');
347
+ });
348
+ return cardinalityComputations;
349
+ };
350
+ const calculateCardinalityVariables = (lineItems, cardinalityComputations) => {
344
351
  const cardVars = new Map();
345
352
  lineItems
346
353
  .filter(({ port, type }) => !!port && !!type)
347
354
  .forEach(li => {
348
- const cardinalityVariableName = `#CV-${li.type}@${li.port}`;
349
- cardVars.set(cardinalityVariableName, (cardVars.get(cardinalityVariableName) ?? 0) + li.qty);
355
+ if (cardinalityComputations.get(`${li.port}`)) {
356
+ const cardinalityVariableName = `#CV-${li.type}@${li.port}`;
357
+ cardVars.set(cardinalityVariableName, (cardVars.get(cardinalityVariableName) ?? 0) + li.qty);
358
+ }
350
359
  });
351
360
  return cardVars;
352
361
  };
362
+ const cardinalityRegexp = new RegExp('#CV-[a-zA-Z0-9_]+@(?<portName>[a-zA-Z0-9_]+)');
353
363
  const recalculateCardinalityVariables = (original, updated) => {
354
- const cardinalityVariables = calculateCardinalityVariables(updated.lineItems);
355
- const originalCardinalityVariables = calculateCardinalityVariables(original.lineItems);
364
+ const cardinalityComputations = collectCardinalityComputations(updated.portDomains ?? original.portDomains ?? {});
365
+ const cardinalityVariables = calculateCardinalityVariables(updated.lineItems, cardinalityComputations);
366
+ const originalCardinalityVariables = calculateCardinalityVariables(original.lineItems, cardinalityComputations);
356
367
  originalCardinalityVariables.forEach((value, key) => {
357
- if (cardinalityVariables.get(key) === value) {
358
- // no need to update cardinality if no changes
359
- cardinalityVariables.delete(key);
360
- }
361
- else if (!cardinalityVariables.has(key)) {
362
- // remove last item from port
363
- cardinalityVariables.set(key, 0);
368
+ const execArray = cardinalityRegexp.exec(key);
369
+ const portName = execArray?.groups?.['portName'];
370
+ if (!portName || cardinalityComputations.get(portName)) {
371
+ if (cardinalityVariables.get(key) === value) {
372
+ // no need to update cardinality if no changes
373
+ cardinalityVariables.delete(key);
374
+ }
375
+ else if (!cardinalityVariables.has(key)) {
376
+ // remove last item from port
377
+ cardinalityVariables.set(key, 0);
378
+ }
364
379
  }
365
380
  });
366
381
  return {
@@ -470,7 +485,6 @@ const filterOutTechnicalAttributes = (attributes) => {
470
485
 
471
486
  var lineItem_utils = /*#__PURE__*/Object.freeze({
472
487
  __proto__: null,
473
- calculateCardinalityVariables: calculateCardinalityVariables,
474
488
  filterOutTechnicalAttributes: filterOutTechnicalAttributes,
475
489
  findLineItem: findLineItem,
476
490
  findLineItemWithComparator: findLineItemWithComparator,
@@ -2669,5 +2683,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
2669
2683
  * Generated bundle index. Do not edit.
2670
2684
  */
2671
2685
 
2672
- export { ActionCodePipe, CalendarDirective, ConfigurationRuntimeService, ConfigurationService, ConfigurationStateService, ContextService, DEFAULT_FORMATTING_SETTINGS, DatePipe, FLOW_CUSTOMIZATION, FORMATTING_SETTINGS_TOKEN, FlowConfigurationModule, FlowConfigurationService, FlowInfoService, FlowStateConfigurationService, FlowStateService, FlowUpdateService, IntegrationState, LineItemWorker, MetricsCalculationService, NumberPipe, PricePipe, ProductImagesService, QuoteDraftService, RuntimeMode, RuntimeOperation, RuntimeSettingsService, RuntimeStep, SdkCoreModule, SdkDirectivesModule, SdkPipesModule, UI_DEFINITION_VERSION, calculateCardinalityVariables, extractMetadata, filterOutTechnicalAttributes, findLineItem, findLineItemWithComparator, generateConfigurationLineItem, generateLineItem, generateModifiedAssetsMap, getAttributeValue, getAttributes, getDefaultLineItem, getGuidedSellingConfigurationRequest, getOriginParent, getRecommendedPrices, insertLineItem, isLineItemModified, isTechnicalAttribute, lineItem_utils as lineItemUtils, mapAttributes, multiplyLineItems, patchAttributes, recalculateCardinalityVariables, removeLineItem, replaceLineItem, upsertAttributes };
2686
+ export { ActionCodePipe, CalendarDirective, ConfigurationRuntimeService, ConfigurationService, ConfigurationStateService, ContextService, DEFAULT_FORMATTING_SETTINGS, DatePipe, FLOW_CUSTOMIZATION, FORMATTING_SETTINGS_TOKEN, FlowConfigurationModule, FlowConfigurationService, FlowInfoService, FlowStateConfigurationService, FlowStateService, FlowUpdateService, IntegrationState, LineItemWorker, MetricsCalculationService, NumberPipe, PricePipe, ProductImagesService, QuoteDraftService, RuntimeMode, RuntimeOperation, RuntimeSettingsService, RuntimeStep, SdkCoreModule, SdkDirectivesModule, SdkPipesModule, UI_DEFINITION_VERSION, extractMetadata, filterOutTechnicalAttributes, findLineItem, findLineItemWithComparator, generateConfigurationLineItem, generateLineItem, generateModifiedAssetsMap, getAttributeValue, getAttributes, getDefaultLineItem, getGuidedSellingConfigurationRequest, getOriginParent, getRecommendedPrices, insertLineItem, isLineItemModified, isTechnicalAttribute, lineItem_utils as lineItemUtils, mapAttributes, multiplyLineItems, patchAttributes, recalculateCardinalityVariables, removeLineItem, replaceLineItem, upsertAttributes };
2673
2687
  //# sourceMappingURL=veloceapps-sdk-core.mjs.map