@configura/web-api 1.6.0-alpha.0 → 1.6.0-iotest.0
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/dist/CfgProduct.d.ts +12 -31
- package/dist/CfgProduct.js +41 -130
- package/dist/index.d.ts +4 -2
- package/dist/index.js +4 -2
- package/dist/io/CfgHistoryManager.d.ts +30 -0
- package/dist/io/CfgHistoryManager.js +62 -0
- package/dist/io/CfgHistoryToProdConfConnector.d.ts +10 -0
- package/dist/io/CfgHistoryToProdConfConnector.js +18 -0
- package/dist/io/CfgIOManager.d.ts +29 -0
- package/dist/io/CfgIOManager.js +89 -0
- package/dist/io/CfgIOProdConfConnector.d.ts +31 -0
- package/dist/io/CfgIOProdConfConnector.js +100 -0
- package/dist/io/CfgWindowMessageManager.d.ts +13 -0
- package/dist/io/CfgWindowMessageManager.js +28 -0
- package/dist/io/CfgWindowMessageToProdConfConnector.d.ts +13 -0
- package/dist/io/CfgWindowMessageToProdConfConnector.js +17 -0
- package/dist/productConfiguration/CfgFeature.d.ts +2 -5
- package/dist/productConfiguration/CfgFeature.js +7 -44
- package/dist/productConfiguration/CfgOption.d.ts +1 -12
- package/dist/productConfiguration/CfgOption.js +3 -30
- package/dist/productConfiguration/CfgProductConfiguration.d.ts +4 -5
- package/dist/productConfiguration/CfgProductConfiguration.js +8 -26
- package/dist/tests/testData/testDataAdditionalProductInAdditionalProductInProductForTest.js +95 -24
- package/dist/tests/testData/testDataCachedGetProduct.js +19 -8
- package/dist/tests/testData/testDataProductAggregatedPrice.js +23 -12
- package/dist/tests/testData/testDataUpcharge.js +48 -16
- package/dist/utilitiesCatalogueData.js +4 -3
- package/package.json +3 -3
- package/dist/syncGroups/SyncGroupsApplier.d.ts +0 -20
- package/dist/syncGroups/SyncGroupsApplier.js +0 -518
- package/dist/syncGroups/SyncGroupsApplyMode.d.ts +0 -15
- package/dist/syncGroups/SyncGroupsApplyMode.js +0 -15
- package/dist/syncGroups/SyncGroupsHandler.d.ts +0 -30
- package/dist/syncGroups/SyncGroupsHandler.js +0 -71
- package/dist/syncGroups/SyncGroupsState.d.ts +0 -20
- package/dist/syncGroups/SyncGroupsState.js +0 -61
- package/dist/syncGroups/SyncGroupsTransaction.d.ts +0 -50
- package/dist/syncGroups/SyncGroupsTransaction.js +0 -106
- package/dist/tests/testData/testDataOptions.d.ts +0 -13
- package/dist/tests/testData/testDataOptions.js +0 -60
|
@@ -27,7 +27,7 @@ export class _CfgProductConfigurationInternal {
|
|
|
27
27
|
this._rootFeatureRefs = [];
|
|
28
28
|
this._features = [];
|
|
29
29
|
this.changeObservable = new Observable();
|
|
30
|
-
this._notifyAllOfChange = (bubbleMode) => __awaiter(this, void 0, void 0, function* () {
|
|
30
|
+
this._notifyAllOfChange = (bubbleMode, committed) => __awaiter(this, void 0, void 0, function* () {
|
|
31
31
|
if (bubbleMode === ProductConfigurationBubbleMode.Stop) {
|
|
32
32
|
return;
|
|
33
33
|
}
|
|
@@ -35,13 +35,14 @@ export class _CfgProductConfigurationInternal {
|
|
|
35
35
|
const parent = this.parentProduct;
|
|
36
36
|
this.changeObservable.notifyAll({
|
|
37
37
|
freshRef,
|
|
38
|
+
committed,
|
|
38
39
|
});
|
|
39
40
|
if (parent === undefined) {
|
|
40
41
|
return;
|
|
41
42
|
}
|
|
42
43
|
yield parent._configurationHasChanged(freshRef, bubbleMode === ProductConfigurationBubbleMode.OneLevel
|
|
43
44
|
? ProductConfigurationBubbleMode.Stop
|
|
44
|
-
: bubbleMode);
|
|
45
|
+
: bubbleMode, committed);
|
|
45
46
|
});
|
|
46
47
|
/** Called by child to tell its parent that it has changed. */
|
|
47
48
|
this._childHasChanged = (freshRef, bubbleMode) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -51,7 +52,7 @@ export class _CfgProductConfigurationInternal {
|
|
|
51
52
|
throw Error("Child feature not found");
|
|
52
53
|
}
|
|
53
54
|
features[i] = freshRef;
|
|
54
|
-
yield this._notifyAllOfChange(bubbleMode);
|
|
55
|
+
yield this._notifyAllOfChange(bubbleMode, true);
|
|
55
56
|
});
|
|
56
57
|
this.getApiSelection = () => this._features.map((f) => {
|
|
57
58
|
return { code: "!~!", next: f._internal.getApiSelection() };
|
|
@@ -70,7 +71,7 @@ export class _CfgProductConfigurationInternal {
|
|
|
70
71
|
if (change) {
|
|
71
72
|
yield this._notifyAllOfChange(bubbleToRoot
|
|
72
73
|
? ProductConfigurationBubbleMode.ToRoot
|
|
73
|
-
: ProductConfigurationBubbleMode.OneLevel);
|
|
74
|
+
: ProductConfigurationBubbleMode.OneLevel, true);
|
|
74
75
|
}
|
|
75
76
|
return change;
|
|
76
77
|
});
|
|
@@ -102,7 +103,7 @@ export class _CfgProductConfigurationInternal {
|
|
|
102
103
|
if (change) {
|
|
103
104
|
yield this._notifyAllOfChange(validate
|
|
104
105
|
? ProductConfigurationBubbleMode.Validate
|
|
105
|
-
: ProductConfigurationBubbleMode.OneLevel);
|
|
106
|
+
: ProductConfigurationBubbleMode.OneLevel, true);
|
|
106
107
|
}
|
|
107
108
|
return change;
|
|
108
109
|
});
|
|
@@ -115,7 +116,7 @@ export class _CfgProductConfigurationInternal {
|
|
|
115
116
|
this._rootFeatureRefs = rootFeatureRefs;
|
|
116
117
|
this._features = syncCfgFeatures(rootFeatureRefs, this._features, this.allRawFeatures, this, this, this.parentProduct, this.rootProduct);
|
|
117
118
|
};
|
|
118
|
-
this.setStretchReferenceLength = (measureParamCode, referenceLength, unit
|
|
119
|
+
this.setStretchReferenceLength = (measureParamCode, referenceLength, unit) => __awaiter(this, void 0, void 0, function* () {
|
|
119
120
|
if (measureParamCode === "") {
|
|
120
121
|
return false;
|
|
121
122
|
}
|
|
@@ -146,9 +147,7 @@ export class _CfgProductConfigurationInternal {
|
|
|
146
147
|
}
|
|
147
148
|
stretchReferenceLength.current = referenceLengthWithUnit;
|
|
148
149
|
}
|
|
149
|
-
|
|
150
|
-
yield this._notifyAllOfChange(ProductConfigurationBubbleMode.ToRoot);
|
|
151
|
-
}
|
|
150
|
+
yield this._notifyAllOfChange(ProductConfigurationBubbleMode.ToRoot, false);
|
|
152
151
|
return true;
|
|
153
152
|
});
|
|
154
153
|
// Useful debug tool:
|
|
@@ -215,23 +214,6 @@ export class _CfgProductConfigurationInternal {
|
|
|
215
214
|
features[i] = CfgFeature._makeNewRefFrom(featureInternal);
|
|
216
215
|
}
|
|
217
216
|
}
|
|
218
|
-
get path() {
|
|
219
|
-
return [...this.parentProduct.path, "c"];
|
|
220
|
-
}
|
|
221
|
-
getFromPath(path) {
|
|
222
|
-
path = path.slice();
|
|
223
|
-
const s = path.shift();
|
|
224
|
-
switch (s) {
|
|
225
|
-
case undefined:
|
|
226
|
-
return this;
|
|
227
|
-
default:
|
|
228
|
-
const feature = this.features.find((f) => f.code === s);
|
|
229
|
-
if (feature === undefined) {
|
|
230
|
-
throw new Error(`Feature not found ${s}, ${path.join(", ")}`);
|
|
231
|
-
}
|
|
232
|
-
return feature._internal.getFromPath(path);
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
217
|
}
|
|
236
218
|
export class CfgProductConfiguration {
|
|
237
219
|
/**
|
|
@@ -10,7 +10,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
import { CfgProduct } from "../../CfgProduct.js";
|
|
11
11
|
import { Collector } from "./collectorForTest.js";
|
|
12
12
|
import { dummyCatId } from "./dummyProductForTest.js";
|
|
13
|
-
import { letterOptionCodeA, letterOptionCodeB, letterOptionCodeC, letterOptions, } from "./testDataOptions.js";
|
|
14
13
|
const A = () => ({
|
|
15
14
|
uuid: "A",
|
|
16
15
|
unit: "m",
|
|
@@ -20,37 +19,96 @@ const A = () => ({
|
|
|
20
19
|
description: "",
|
|
21
20
|
numericOrder: false,
|
|
22
21
|
options: [
|
|
23
|
-
|
|
22
|
+
{
|
|
23
|
+
code: "optionA",
|
|
24
|
+
description: "",
|
|
25
|
+
additionalProductRefs: [
|
|
24
26
|
{ refKey: "C_0", catId: dummyCatId, partNumber: "C" },
|
|
25
27
|
{ refKey: "B_0", catId: dummyCatId, partNumber: "B" },
|
|
26
|
-
]
|
|
27
|
-
|
|
28
|
-
|
|
28
|
+
],
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
code: "optionB",
|
|
32
|
+
description: "",
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
code: "optionC",
|
|
36
|
+
description: "",
|
|
37
|
+
additionalProductRefs: [{ refKey: "D", catId: dummyCatId, partNumber: "D" }],
|
|
38
|
+
},
|
|
29
39
|
],
|
|
30
40
|
},
|
|
31
41
|
{
|
|
32
42
|
code: "featureX",
|
|
33
43
|
description: "",
|
|
34
44
|
numericOrder: false,
|
|
35
|
-
options: [
|
|
45
|
+
options: [
|
|
46
|
+
{
|
|
47
|
+
code: "optionA",
|
|
48
|
+
description: "",
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
code: "optionB",
|
|
52
|
+
description: "",
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
code: "optionC",
|
|
56
|
+
description: "",
|
|
57
|
+
},
|
|
58
|
+
],
|
|
36
59
|
},
|
|
37
60
|
{
|
|
38
61
|
code: "featureNotUsed",
|
|
39
62
|
description: "",
|
|
40
63
|
numericOrder: false,
|
|
41
|
-
options: [
|
|
64
|
+
options: [
|
|
65
|
+
{
|
|
66
|
+
code: "optionA",
|
|
67
|
+
description: "",
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
code: "optionB",
|
|
71
|
+
description: "",
|
|
72
|
+
},
|
|
73
|
+
],
|
|
42
74
|
},
|
|
43
75
|
{
|
|
44
76
|
code: "featureOptionCSelectedAtStart",
|
|
45
77
|
description: "",
|
|
46
78
|
numericOrder: false,
|
|
47
|
-
options: [
|
|
79
|
+
options: [
|
|
80
|
+
{
|
|
81
|
+
code: "optionA",
|
|
82
|
+
description: "",
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
code: "optionB",
|
|
86
|
+
description: "",
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
code: "optionC",
|
|
90
|
+
description: "",
|
|
91
|
+
},
|
|
92
|
+
],
|
|
48
93
|
},
|
|
49
94
|
{
|
|
50
95
|
code: "featureSelectMany",
|
|
51
96
|
description: "",
|
|
52
97
|
numericOrder: false,
|
|
53
|
-
options: [
|
|
98
|
+
options: [
|
|
99
|
+
{
|
|
100
|
+
code: "optionA",
|
|
101
|
+
description: "",
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
code: "optionB",
|
|
105
|
+
description: "",
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
code: "optionC",
|
|
109
|
+
description: "",
|
|
110
|
+
},
|
|
111
|
+
],
|
|
54
112
|
},
|
|
55
113
|
],
|
|
56
114
|
productData: {
|
|
@@ -65,24 +123,24 @@ const A = () => ({
|
|
|
65
123
|
{
|
|
66
124
|
code: "!~!",
|
|
67
125
|
next: {
|
|
68
|
-
|
|
69
|
-
code:
|
|
126
|
+
optionA: {
|
|
127
|
+
code: "optionA",
|
|
70
128
|
},
|
|
71
129
|
},
|
|
72
130
|
},
|
|
73
131
|
{
|
|
74
132
|
code: "!~!",
|
|
75
133
|
next: {
|
|
76
|
-
|
|
77
|
-
code:
|
|
134
|
+
optionB: {
|
|
135
|
+
code: "optionB",
|
|
78
136
|
},
|
|
79
137
|
},
|
|
80
138
|
},
|
|
81
139
|
{
|
|
82
140
|
code: "!~!",
|
|
83
141
|
next: {
|
|
84
|
-
|
|
85
|
-
code:
|
|
142
|
+
optionC: {
|
|
143
|
+
code: "optionC",
|
|
86
144
|
},
|
|
87
145
|
},
|
|
88
146
|
},
|
|
@@ -161,7 +219,20 @@ const C = () => ({
|
|
|
161
219
|
code: "featureC",
|
|
162
220
|
description: "",
|
|
163
221
|
numericOrder: false,
|
|
164
|
-
options: [
|
|
222
|
+
options: [
|
|
223
|
+
{
|
|
224
|
+
code: "optionA",
|
|
225
|
+
description: "",
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
code: "optionB",
|
|
229
|
+
description: "",
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
code: "optionC",
|
|
233
|
+
description: "",
|
|
234
|
+
},
|
|
235
|
+
],
|
|
165
236
|
},
|
|
166
237
|
],
|
|
167
238
|
productData: {
|
|
@@ -175,8 +246,8 @@ const C = () => ({
|
|
|
175
246
|
{
|
|
176
247
|
code: "!~!",
|
|
177
248
|
next: {
|
|
178
|
-
|
|
179
|
-
code:
|
|
249
|
+
optionA: {
|
|
250
|
+
code: "optionA",
|
|
180
251
|
},
|
|
181
252
|
},
|
|
182
253
|
},
|
|
@@ -226,8 +297,8 @@ export const cfgProductTest = (testFunc, prepFunc) => __awaiter(void 0, void 0,
|
|
|
226
297
|
{
|
|
227
298
|
code: "!~!",
|
|
228
299
|
next: {
|
|
229
|
-
|
|
230
|
-
code:
|
|
300
|
+
optionC: {
|
|
301
|
+
code: "optionC",
|
|
231
302
|
},
|
|
232
303
|
},
|
|
233
304
|
},
|
|
@@ -236,16 +307,16 @@ export const cfgProductTest = (testFunc, prepFunc) => __awaiter(void 0, void 0,
|
|
|
236
307
|
productData.partsData.selOptions.push({
|
|
237
308
|
code: "!~!",
|
|
238
309
|
next: {
|
|
239
|
-
|
|
240
|
-
code:
|
|
310
|
+
optionC: {
|
|
311
|
+
code: "optionC",
|
|
241
312
|
},
|
|
242
313
|
},
|
|
243
314
|
});
|
|
244
315
|
productData.partsData.selOptions.push({
|
|
245
316
|
code: "!~!",
|
|
246
317
|
next: {
|
|
247
|
-
|
|
248
|
-
code:
|
|
318
|
+
optionC: {
|
|
319
|
+
code: "optionC",
|
|
249
320
|
},
|
|
250
321
|
},
|
|
251
322
|
});
|
|
@@ -10,7 +10,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
import { CfgProduct } from "../../CfgProduct.js";
|
|
11
11
|
import { wrapWithGetProductCache } from "../../productLoader.js";
|
|
12
12
|
import { dummyCatId } from "./dummyProductForTest.js";
|
|
13
|
-
import { letterOptionCodeA, letterOptions } from "./testDataOptions.js";
|
|
14
13
|
let prodKeyArray = [];
|
|
15
14
|
const A = () => ({
|
|
16
15
|
uuid: "A",
|
|
@@ -21,12 +20,24 @@ const A = () => ({
|
|
|
21
20
|
description: "",
|
|
22
21
|
numericOrder: false,
|
|
23
22
|
options: [
|
|
24
|
-
|
|
23
|
+
{
|
|
24
|
+
code: "optionA",
|
|
25
|
+
description: "",
|
|
26
|
+
additionalProductRefs: [
|
|
25
27
|
{ refKey: "C_0", catId: dummyCatId, partNumber: "C" },
|
|
26
28
|
{ refKey: "B_0", catId: dummyCatId, partNumber: "B" },
|
|
27
|
-
]
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
],
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
code: "optionB",
|
|
33
|
+
description: "",
|
|
34
|
+
additionalProductRefs: [{ refKey: "E", catId: dummyCatId, partNumber: "E" }],
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
code: "optionC",
|
|
38
|
+
description: "",
|
|
39
|
+
additionalProductRefs: [{ refKey: "D", catId: dummyCatId, partNumber: "D" }],
|
|
40
|
+
},
|
|
30
41
|
],
|
|
31
42
|
},
|
|
32
43
|
],
|
|
@@ -42,8 +53,8 @@ const A = () => ({
|
|
|
42
53
|
{
|
|
43
54
|
code: "!~!",
|
|
44
55
|
next: {
|
|
45
|
-
|
|
46
|
-
code:
|
|
56
|
+
optionA: {
|
|
57
|
+
code: "optionA",
|
|
47
58
|
},
|
|
48
59
|
},
|
|
49
60
|
},
|
|
@@ -154,7 +165,7 @@ export const cachedProductLoaderTest = () => __awaiter(void 0, void 0, void 0, f
|
|
|
154
165
|
getProduct: getTestProduct,
|
|
155
166
|
postValidate: (params, _body) => __awaiter(void 0, void 0, void 0, function* () {
|
|
156
167
|
const productData = (yield getTestProduct(params, true)).productData;
|
|
157
|
-
let code =
|
|
168
|
+
let code = "optionA";
|
|
158
169
|
for (let test in _body.selOptions[0].next) {
|
|
159
170
|
code = test;
|
|
160
171
|
break;
|
|
@@ -9,7 +9,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
};
|
|
10
10
|
import { CfgProduct } from "../../CfgProduct.js";
|
|
11
11
|
import { dummyCatId } from "./dummyProductForTest.js";
|
|
12
|
-
import { letterOptionCodeA, letterOptionCodeB, letterOptionCodeC, letterOptions, } from "./testDataOptions.js";
|
|
13
12
|
const A = () => ({
|
|
14
13
|
uuid: "A",
|
|
15
14
|
unit: "m",
|
|
@@ -19,12 +18,24 @@ const A = () => ({
|
|
|
19
18
|
description: "",
|
|
20
19
|
numericOrder: false,
|
|
21
20
|
options: [
|
|
22
|
-
|
|
21
|
+
{
|
|
22
|
+
code: "optionA",
|
|
23
|
+
description: "",
|
|
24
|
+
additionalProductRefs: [
|
|
23
25
|
{ refKey: "C_0", catId: dummyCatId, partNumber: "C" },
|
|
24
26
|
{ refKey: "B_0", catId: dummyCatId, partNumber: "B" },
|
|
25
|
-
]
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
],
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
code: "optionB",
|
|
31
|
+
description: "",
|
|
32
|
+
additionalProductRefs: [{ refKey: "E", catId: dummyCatId, partNumber: "E" }],
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
code: "optionC",
|
|
36
|
+
description: "",
|
|
37
|
+
additionalProductRefs: [{ refKey: "D", catId: dummyCatId, partNumber: "D" }],
|
|
38
|
+
},
|
|
28
39
|
],
|
|
29
40
|
},
|
|
30
41
|
],
|
|
@@ -40,8 +51,8 @@ const A = () => ({
|
|
|
40
51
|
{
|
|
41
52
|
code: "!~!",
|
|
42
53
|
next: {
|
|
43
|
-
|
|
44
|
-
code:
|
|
54
|
+
optionA: {
|
|
55
|
+
code: "optionA",
|
|
45
56
|
},
|
|
46
57
|
},
|
|
47
58
|
},
|
|
@@ -139,13 +150,13 @@ export const getTestProduct = (params) => __awaiter(void 0, void 0, void 0, func
|
|
|
139
150
|
throw new Error("No such part");
|
|
140
151
|
});
|
|
141
152
|
export function getSelOptions(option) {
|
|
142
|
-
if (option ===
|
|
153
|
+
if (option === "optionB") {
|
|
143
154
|
return [
|
|
144
155
|
{
|
|
145
156
|
code: "!~!",
|
|
146
157
|
next: {
|
|
147
|
-
|
|
148
|
-
code:
|
|
158
|
+
optionB: {
|
|
159
|
+
code: "optionB",
|
|
149
160
|
},
|
|
150
161
|
},
|
|
151
162
|
},
|
|
@@ -156,8 +167,8 @@ export function getSelOptions(option) {
|
|
|
156
167
|
{
|
|
157
168
|
code: "!~!",
|
|
158
169
|
next: {
|
|
159
|
-
|
|
160
|
-
code:
|
|
170
|
+
optionC: {
|
|
171
|
+
code: "optionC",
|
|
161
172
|
},
|
|
162
173
|
},
|
|
163
174
|
},
|
|
@@ -10,7 +10,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
import { CfgProduct } from "../../CfgProduct.js";
|
|
11
11
|
import { Collector } from "./collectorForTest.js";
|
|
12
12
|
import { dummyCatId } from "./dummyProductForTest.js";
|
|
13
|
-
import { letterOptionCodeA, letterOptions } from "./testDataOptions.js";
|
|
14
13
|
const Prd = () => ({
|
|
15
14
|
uuid: "Prd",
|
|
16
15
|
unit: "m",
|
|
@@ -20,9 +19,20 @@ const Prd = () => ({
|
|
|
20
19
|
description: "",
|
|
21
20
|
numericOrder: false,
|
|
22
21
|
options: [
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
{
|
|
23
|
+
code: "A",
|
|
24
|
+
description: "",
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
code: "B",
|
|
28
|
+
description: "",
|
|
29
|
+
upcharge: undefined,
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
code: "C",
|
|
33
|
+
description: "",
|
|
34
|
+
upcharge: 0,
|
|
35
|
+
},
|
|
26
36
|
],
|
|
27
37
|
},
|
|
28
38
|
{
|
|
@@ -30,9 +40,20 @@ const Prd = () => ({
|
|
|
30
40
|
description: "",
|
|
31
41
|
numericOrder: false,
|
|
32
42
|
options: [
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
43
|
+
{
|
|
44
|
+
code: "A",
|
|
45
|
+
description: "",
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
code: "B",
|
|
49
|
+
description: "",
|
|
50
|
+
upcharge: undefined,
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
code: "C",
|
|
54
|
+
description: "",
|
|
55
|
+
upcharge: 10,
|
|
56
|
+
},
|
|
36
57
|
],
|
|
37
58
|
},
|
|
38
59
|
{
|
|
@@ -41,9 +62,20 @@ const Prd = () => ({
|
|
|
41
62
|
numericOrder: false,
|
|
42
63
|
optional: true,
|
|
43
64
|
options: [
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
65
|
+
{
|
|
66
|
+
code: "A",
|
|
67
|
+
description: "",
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
code: "B",
|
|
71
|
+
description: "",
|
|
72
|
+
upcharge: undefined,
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
code: "C",
|
|
76
|
+
description: "",
|
|
77
|
+
upcharge: 10,
|
|
78
|
+
},
|
|
47
79
|
],
|
|
48
80
|
},
|
|
49
81
|
],
|
|
@@ -59,24 +91,24 @@ const Prd = () => ({
|
|
|
59
91
|
{
|
|
60
92
|
code: "!~!",
|
|
61
93
|
next: {
|
|
62
|
-
|
|
63
|
-
code:
|
|
94
|
+
A: {
|
|
95
|
+
code: "A",
|
|
64
96
|
},
|
|
65
97
|
},
|
|
66
98
|
},
|
|
67
99
|
{
|
|
68
100
|
code: "!~!",
|
|
69
101
|
next: {
|
|
70
|
-
|
|
71
|
-
code:
|
|
102
|
+
A: {
|
|
103
|
+
code: "A",
|
|
72
104
|
},
|
|
73
105
|
},
|
|
74
106
|
},
|
|
75
107
|
{
|
|
76
108
|
code: "!~!",
|
|
77
109
|
next: {
|
|
78
|
-
|
|
79
|
-
code:
|
|
110
|
+
A: {
|
|
111
|
+
code: "A",
|
|
80
112
|
},
|
|
81
113
|
},
|
|
82
114
|
},
|
|
@@ -2,14 +2,15 @@ import { shallowCompareDictionaries } from "@configura/web-utilities";
|
|
|
2
2
|
export const makeCatalogueKey = (cat) => `${cat.enterprise}-${cat.prdCat}-${cat.prdCatVersion}-${cat.priceList}-${cat.vendor}`;
|
|
3
3
|
export const makeProductKey = (cat, pKey) => `${makeCatalogueKey(cat)}-${pKey}`;
|
|
4
4
|
export const makeSelOptionsKey = (options) => options.reduce((p, option) => {
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
var _a;
|
|
6
|
+
const { code, numericValue, next } = option;
|
|
7
|
+
p += `_{${code}${numericValue === undefined ? "" : `_${numericValue.value}${(_a = numericValue.unit) !== null && _a !== void 0 ? _a : ""}`}`;
|
|
7
8
|
if (next === undefined) {
|
|
8
9
|
return p;
|
|
9
10
|
}
|
|
10
11
|
for (const key of Object.keys(next)) {
|
|
11
12
|
const innerOption = next[key];
|
|
12
|
-
p +=
|
|
13
|
+
p += `_{${key}_${makeSelOptionsKey([innerOption])}_}`;
|
|
13
14
|
}
|
|
14
15
|
p += "_}";
|
|
15
16
|
return p;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@configura/web-api",
|
|
3
|
-
"version": "1.6.0-
|
|
3
|
+
"version": "1.6.0-iotest.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"access": "public"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@configura/web-utilities": "
|
|
26
|
+
"@configura/web-utilities": "1.6.0-iotest.0"
|
|
27
27
|
},
|
|
28
|
-
"gitHead": "
|
|
28
|
+
"gitHead": "afcb290fa6c4a3f87ab1b4ac781bd704acaa0ad9"
|
|
29
29
|
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { SyncGroup } from "../CatalogueAPI.js";
|
|
2
|
-
import { _CfgOptionInternal } from "../productConfiguration/CfgOption.js";
|
|
3
|
-
import { SyncCode } from "./SyncGroupsHandler.js";
|
|
4
|
-
import { SyncGroupsTransaction } from "./SyncGroupsTransaction.js";
|
|
5
|
-
export declare class SyncGroupsApplier {
|
|
6
|
-
/**
|
|
7
|
-
* At load of a new product this is used to move it into a synced state
|
|
8
|
-
*/
|
|
9
|
-
static init(transaction: SyncGroupsTransaction): Promise<boolean>;
|
|
10
|
-
/**
|
|
11
|
-
* At an active select of an option this is the entry point
|
|
12
|
-
*/
|
|
13
|
-
static selectOption(transaction: SyncGroupsTransaction, option: _CfgOptionInternal, on: boolean): Promise<boolean>;
|
|
14
|
-
/**
|
|
15
|
-
* @returns undefined if the @syncGroup is undefined, false if
|
|
16
|
-
* the @mustSupport is not fulfilled or the syncCode if all is ok
|
|
17
|
-
*/
|
|
18
|
-
static getSyncCode(syncGroup: SyncGroup | undefined, mustSupport: "push" | "pull"): SyncCode | undefined | false;
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=SyncGroupsApplier.d.ts.map
|