@configura/debug-react 1.6.1-alpha.5 → 1.6.2-alpha.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.
Files changed (53) hide show
  1. package/.postcssrc.json +8 -8
  2. package/LICENSE +201 -201
  3. package/dist/LogMessageView.d.ts +5 -5
  4. package/dist/LogMessageView.js +8 -8
  5. package/dist/LogMessagesView.d.ts +5 -5
  6. package/dist/LogMessagesView.js +10 -10
  7. package/dist/css/debug.css +1 -1
  8. package/dist/css/debug.css.map +1 -1
  9. package/dist/exerciser/Exerciser.d.ts +37 -37
  10. package/dist/exerciser/Exerciser.js +154 -154
  11. package/dist/exerciser/ExerciserReportFilterView.d.ts +9 -9
  12. package/dist/exerciser/ExerciserReportFilterView.js +205 -205
  13. package/dist/exerciser/ExerciserReportItem.d.ts +10 -10
  14. package/dist/exerciser/ExerciserReportItem.js +1 -1
  15. package/dist/exerciser/ExerciserReportItemView.d.ts +5 -5
  16. package/dist/exerciser/ExerciserReportItemView.js +53 -53
  17. package/dist/exerciser/ExerciserReportView.d.ts +7 -7
  18. package/dist/exerciser/ExerciserReportView.js +8 -8
  19. package/dist/exerciser/ExerciserRun.d.ts +19 -19
  20. package/dist/exerciser/ExerciserRun.js +144 -144
  21. package/dist/exerciser/ExerciserSetup.d.ts +14 -14
  22. package/dist/exerciser/ExerciserSetup.js +54 -54
  23. package/dist/exerciser/FilterSelect.d.ts +8 -8
  24. package/dist/exerciser/FilterSelect.js +40 -40
  25. package/dist/hooks.d.ts +2 -2
  26. package/dist/hooks.js +7 -7
  27. package/dist/index.d.ts +11 -10
  28. package/dist/index.js +11 -10
  29. package/dist/productConfiguration/DebugAdditionalProductView.d.ts +4 -0
  30. package/dist/productConfiguration/DebugAdditionalProductView.js +6 -0
  31. package/dist/productConfiguration/DebugFeatureCommon.d.ts +11 -0
  32. package/dist/productConfiguration/DebugFeatureCommon.js +34 -0
  33. package/dist/productConfiguration/DebugFeatureGroupView.d.ts +5 -0
  34. package/dist/productConfiguration/DebugFeatureGroupView.js +20 -0
  35. package/dist/productConfiguration/DebugFeatureView.d.ts +5 -0
  36. package/dist/productConfiguration/DebugFeatureView.js +8 -0
  37. package/dist/productConfiguration/DebugOptionCommon.d.ts +11 -0
  38. package/dist/productConfiguration/DebugOptionCommon.js +30 -0
  39. package/dist/productConfiguration/DebugOptionView.d.ts +5 -0
  40. package/dist/productConfiguration/DebugOptionView.js +8 -0
  41. package/dist/productConfiguration/DebugProductCommon.d.ts +10 -0
  42. package/dist/productConfiguration/DebugProductCommon.js +40 -0
  43. package/dist/productConfiguration/DebugProductConfigurationView.d.ts +17 -0
  44. package/dist/productConfiguration/DebugProductConfigurationView.js +26 -0
  45. package/dist/productConfiguration/DebugRowsFactory.d.ts +10 -0
  46. package/dist/productConfiguration/DebugRowsFactory.js +32 -0
  47. package/dist/productConfiguration/DebugTable.d.ts +9 -0
  48. package/dist/productConfiguration/DebugTable.js +8 -0
  49. package/dist/productConfiguration/debugComponentsHelper.d.ts +4 -0
  50. package/dist/productConfiguration/debugComponentsHelper.js +28 -0
  51. package/dist/productConfiguration/index.d.ts +7 -0
  52. package/dist/productConfiguration/index.js +6 -0
  53. package/package.json +6 -6
@@ -1,154 +1,154 @@
1
- import { generateProductConfigurations, } from "@configura/web-api";
2
- import { Loading, useObservableState } from "@configura/web-ui";
3
- import { AggregatedLoadingObservable, encodeURIComponents, LogLevel, LogMessage, } from "@configura/web-utilities";
4
- import React, { useCallback, useEffect, useMemo, useState } from "react";
5
- import { ExerciserReportFilterView } from "./ExerciserReportFilterView.js";
6
- import { ExerciserReportView } from "./ExerciserReportView.js";
7
- import { ExerciserRunner } from "./ExerciserRun.js";
8
- import { ExerciserSetup } from "./ExerciserSetup.js";
9
- export function validateAction(action) {
10
- switch (action) {
11
- case "run":
12
- case "setup":
13
- return action;
14
- }
15
- return "setup";
16
- }
17
- export function flattenCataloguePermissions(permissions) {
18
- let params = [];
19
- for (const p of permissions) {
20
- const { enterprise, prdCat, prdCatVersion } = p;
21
- const vendors = p.vendors || ["-"];
22
- for (const vendor of vendors) {
23
- const priceLists = p.priceLists || ["-"];
24
- for (const priceList of priceLists) {
25
- params.push({
26
- enterprise,
27
- prdCat,
28
- prdCatVersion,
29
- priceList,
30
- vendor,
31
- });
32
- }
33
- }
34
- }
35
- return params;
36
- }
37
- export function filtersKey(...filters) {
38
- return filters.map((c) => encodeURIComponents(c.mode, c.value)).join("/");
39
- }
40
- export function catalogueFiltersKey(filters) {
41
- return filtersKey(filters.enterprise, filters.prdCat, filters.prdCatVersion, filters.priceList, filters.vendor);
42
- }
43
- export function useCatalogueFilters(props) {
44
- const key = catalogueFiltersKey(props);
45
- return useMemo(() => ({
46
- enterprise: props.enterprise,
47
- prdCat: props.prdCat,
48
- prdCatVersion: props.prdCatVersion,
49
- priceList: props.priceList,
50
- vendor: props.vendor,
51
- }),
52
- // eslint-disable-next-line react-hooks/exhaustive-deps
53
- [key]);
54
- }
55
- export function productFiltersKey(filters) {
56
- return filtersKey(filters.partNr);
57
- }
58
- export function useProductFilters(props) {
59
- const key = productFiltersKey(props);
60
- // eslint-disable-next-line react-hooks/exhaustive-deps
61
- return useMemo(() => ({ partNr: props.partNr }), [key]);
62
- }
63
- export function useProductConfigurationIterator(api, lang, result, productConditions) {
64
- return useMemo(() => generateProductConfigurations(api, lang, result, productConditions, {
65
- strictSelectOneSelectionCount: true,
66
- }), [api, lang, result, productConditions]);
67
- }
68
- export function useToc(api, params, lang, setError, loadingObservable) {
69
- let [response, setResponse] = useState();
70
- useEffect(() => {
71
- if (!params) {
72
- setResponse(undefined);
73
- return;
74
- }
75
- let canceled = false;
76
- let token = loadingObservable.startChildLoading();
77
- api.getTocFlat(Object.assign(Object.assign({}, params), { lang }))
78
- .then((res) => !canceled && setResponse(res))
79
- .catch((err) => !canceled && setError(err))
80
- .then(() => loadingObservable.stopChildLoading(token));
81
- return () => {
82
- canceled = true;
83
- loadingObservable.stopChildLoading(token);
84
- };
85
- }, [api, lang, loadingObservable, params, setError]);
86
- return response;
87
- }
88
- export const Exerciser = (props) => {
89
- const { action } = props.exerciserState;
90
- const loadingObservable = useMemo(() => new AggregatedLoadingObservable(), []);
91
- const [loading] = useObservableState(loadingObservable, false);
92
- const [productIterator, setProductIterator] = useState();
93
- const [logMessageCount, setLogMessageCount] = useState(() => new Map());
94
- const [reportItems, setReportItems] = useState([]);
95
- const [filteredReportItems, setFilteredReportItems] = useState([]);
96
- useEffect(() => {
97
- setLogMessageCount(new Map());
98
- setReportItems([]);
99
- setFilteredReportItems([]);
100
- // eslint-disable-next-line react-hooks/exhaustive-deps
101
- }, [productIterator]);
102
- const addLogMessages = useCallback((logMessages) => {
103
- setLogMessageCount((p) => {
104
- const n = new Map(p.entries());
105
- for (const logMessage of logMessages) {
106
- const hash = logMessage.levelMessageHash;
107
- let item = n.get(hash);
108
- if (item === undefined) {
109
- item = {
110
- level: logMessage.level,
111
- message: `${logMessage.message}`,
112
- count: 0,
113
- };
114
- n.set(hash, item);
115
- }
116
- item.count++;
117
- }
118
- return n;
119
- });
120
- }, []);
121
- const addErrorReportItem = useCallback((e) => {
122
- setReportItems((p) => {
123
- const message = {
124
- productUrl: "",
125
- logMessages: [new LogMessage(LogLevel.Error, `${e}`, [])],
126
- randId: Math.random(),
127
- duration: 0,
128
- };
129
- addLogMessages(message.logMessages);
130
- return p.concat(message);
131
- });
132
- }, [addLogMessages]);
133
- const addReportItem = useCallback((item) => {
134
- addLogMessages(item.logMessages);
135
- setReportItems((p) => {
136
- return p.concat(item);
137
- });
138
- }, [addLogMessages]);
139
- return (React.createElement("div", { className: "cfgExerciser cfgExerciserColumn" },
140
- React.createElement("div", { className: "cfgExerciserView" },
141
- React.createElement("h1", null,
142
- "Exerciser ",
143
- loading && React.createElement(Loading, { className: "cfgFontSize10", small: true }))),
144
- React.createElement("div", { className: "cfgExerciserRow" },
145
- React.createElement("div", { className: "cfgExerciserColumn" },
146
- React.createElement(ExerciserSetup, Object.assign({}, props, { loadingObservable: loadingObservable, setProductIterator: setProductIterator }))),
147
- action === "run" && productIterator && (React.createElement("div", { className: "cfgExerciserColumn" },
148
- React.createElement(ExerciserRunner, { generateExerciserUrl: props.generateExerciserUrl, addErrorReportItem: addErrorReportItem, addReportItem: addReportItem, loadingObservable: loadingObservable, productIterator: productIterator })))),
149
- action === "run" && (React.createElement(React.Fragment, null,
150
- React.createElement("div", { className: "cfgExerciserView cfgExerciserRow" },
151
- React.createElement(ExerciserReportFilterView, { allReportItems: reportItems, logMessageMap: logMessageCount, setFilteredReportItems: setFilteredReportItems })),
152
- React.createElement("div", { className: "cfgExerciserView cfgExerciserRow" },
153
- React.createElement(ExerciserReportView, { items: filteredReportItems }))))));
154
- };
1
+ import { generateProductConfigurations, } from "@configura/web-api";
2
+ import { Loading, useObservableState } from "@configura/web-ui";
3
+ import { AggregatedLoadingObservable, encodeURIComponents, LogLevel, LogMessage, } from "@configura/web-utilities";
4
+ import React, { useCallback, useEffect, useMemo, useState } from "react";
5
+ import { ExerciserReportFilterView } from "./ExerciserReportFilterView.js";
6
+ import { ExerciserReportView } from "./ExerciserReportView.js";
7
+ import { ExerciserRunner } from "./ExerciserRun.js";
8
+ import { ExerciserSetup } from "./ExerciserSetup.js";
9
+ export function validateAction(action) {
10
+ switch (action) {
11
+ case "run":
12
+ case "setup":
13
+ return action;
14
+ }
15
+ return "setup";
16
+ }
17
+ export function flattenCataloguePermissions(permissions) {
18
+ let params = [];
19
+ for (const p of permissions) {
20
+ const { enterprise, prdCat, prdCatVersion } = p;
21
+ const vendors = p.vendors || ["-"];
22
+ for (const vendor of vendors) {
23
+ const priceLists = p.priceLists || ["-"];
24
+ for (const priceList of priceLists) {
25
+ params.push({
26
+ enterprise,
27
+ prdCat,
28
+ prdCatVersion,
29
+ priceList,
30
+ vendor,
31
+ });
32
+ }
33
+ }
34
+ }
35
+ return params;
36
+ }
37
+ export function filtersKey(...filters) {
38
+ return filters.map((c) => encodeURIComponents(c.mode, c.value)).join("/");
39
+ }
40
+ export function catalogueFiltersKey(filters) {
41
+ return filtersKey(filters.enterprise, filters.prdCat, filters.prdCatVersion, filters.priceList, filters.vendor);
42
+ }
43
+ export function useCatalogueFilters(props) {
44
+ const key = catalogueFiltersKey(props);
45
+ return useMemo(() => ({
46
+ enterprise: props.enterprise,
47
+ prdCat: props.prdCat,
48
+ prdCatVersion: props.prdCatVersion,
49
+ priceList: props.priceList,
50
+ vendor: props.vendor,
51
+ }),
52
+ // eslint-disable-next-line react-hooks/exhaustive-deps
53
+ [key]);
54
+ }
55
+ export function productFiltersKey(filters) {
56
+ return filtersKey(filters.partNr);
57
+ }
58
+ export function useProductFilters(props) {
59
+ const key = productFiltersKey(props);
60
+ // eslint-disable-next-line react-hooks/exhaustive-deps
61
+ return useMemo(() => ({ partNr: props.partNr }), [key]);
62
+ }
63
+ export function useProductConfigurationIterator(api, lang, result, productConditions) {
64
+ return useMemo(() => generateProductConfigurations(api, lang, result, productConditions, {
65
+ strictSelectOneSelectionCount: true,
66
+ }), [api, lang, result, productConditions]);
67
+ }
68
+ export function useToc(api, params, lang, setError, loadingObservable) {
69
+ let [response, setResponse] = useState();
70
+ useEffect(() => {
71
+ if (!params) {
72
+ setResponse(undefined);
73
+ return;
74
+ }
75
+ let canceled = false;
76
+ let token = loadingObservable.startChildLoading();
77
+ api.getTocFlat(Object.assign(Object.assign({}, params), { lang }))
78
+ .then((res) => !canceled && setResponse(res))
79
+ .catch((err) => !canceled && setError(err))
80
+ .then(() => loadingObservable.stopChildLoading(token));
81
+ return () => {
82
+ canceled = true;
83
+ loadingObservable.stopChildLoading(token);
84
+ };
85
+ }, [api, lang, loadingObservable, params, setError]);
86
+ return response;
87
+ }
88
+ export const Exerciser = (props) => {
89
+ const { action } = props.exerciserState;
90
+ const loadingObservable = useMemo(() => new AggregatedLoadingObservable(), []);
91
+ const [loading] = useObservableState(loadingObservable, false);
92
+ const [productIterator, setProductIterator] = useState();
93
+ const [logMessageCount, setLogMessageCount] = useState(() => new Map());
94
+ const [reportItems, setReportItems] = useState([]);
95
+ const [filteredReportItems, setFilteredReportItems] = useState([]);
96
+ useEffect(() => {
97
+ setLogMessageCount(new Map());
98
+ setReportItems([]);
99
+ setFilteredReportItems([]);
100
+ // eslint-disable-next-line react-hooks/exhaustive-deps
101
+ }, [productIterator]);
102
+ const addLogMessages = useCallback((logMessages) => {
103
+ setLogMessageCount((p) => {
104
+ const n = new Map(p.entries());
105
+ for (const logMessage of logMessages) {
106
+ const hash = logMessage.levelMessageHash;
107
+ let item = n.get(hash);
108
+ if (item === undefined) {
109
+ item = {
110
+ level: logMessage.level,
111
+ message: `${logMessage.message}`,
112
+ count: 0,
113
+ };
114
+ n.set(hash, item);
115
+ }
116
+ item.count++;
117
+ }
118
+ return n;
119
+ });
120
+ }, []);
121
+ const addErrorReportItem = useCallback((e) => {
122
+ setReportItems((p) => {
123
+ const message = {
124
+ productUrl: "",
125
+ logMessages: [new LogMessage(LogLevel.Error, `${e}`, [])],
126
+ randId: Math.random(),
127
+ duration: 0,
128
+ };
129
+ addLogMessages(message.logMessages);
130
+ return p.concat(message);
131
+ });
132
+ }, [addLogMessages]);
133
+ const addReportItem = useCallback((item) => {
134
+ addLogMessages(item.logMessages);
135
+ setReportItems((p) => {
136
+ return p.concat(item);
137
+ });
138
+ }, [addLogMessages]);
139
+ return (React.createElement("div", { className: "cfgExerciser cfgExerciserColumn" },
140
+ React.createElement("div", { className: "cfgExerciserView" },
141
+ React.createElement("h1", null,
142
+ "Exerciser ",
143
+ loading && React.createElement(Loading, { className: "cfgFontSize10", small: true }))),
144
+ React.createElement("div", { className: "cfgExerciserRow" },
145
+ React.createElement("div", { className: "cfgExerciserColumn" },
146
+ React.createElement(ExerciserSetup, Object.assign({}, props, { loadingObservable: loadingObservable, setProductIterator: setProductIterator }))),
147
+ action === "run" && productIterator && (React.createElement("div", { className: "cfgExerciserColumn" },
148
+ React.createElement(ExerciserRunner, { generateExerciserUrl: props.generateExerciserUrl, addErrorReportItem: addErrorReportItem, addReportItem: addReportItem, loadingObservable: loadingObservable, productIterator: productIterator })))),
149
+ action === "run" && (React.createElement(React.Fragment, null,
150
+ React.createElement("div", { className: "cfgExerciserView cfgExerciserRow" },
151
+ React.createElement(ExerciserReportFilterView, { allReportItems: reportItems, logMessageMap: logMessageCount, setFilteredReportItems: setFilteredReportItems })),
152
+ React.createElement("div", { className: "cfgExerciserView cfgExerciserRow" },
153
+ React.createElement(ExerciserReportView, { items: filteredReportItems }))))));
154
+ };
@@ -1,10 +1,10 @@
1
- import React from "react";
2
- import { ExerciserReportItem } from "./ExerciserReportItem.js";
3
- import { ExerciserLogMessagesMap } from "./ExerciserRun.js";
4
- export declare const ExerciserReportFilterView: React.FC<{
5
- className?: string;
6
- allReportItems: ExerciserReportItem[];
7
- logMessageMap: ExerciserLogMessagesMap;
8
- setFilteredReportItems: React.Dispatch<React.SetStateAction<ExerciserReportItem[]>>;
9
- }>;
1
+ import React from "react";
2
+ import { ExerciserReportItem } from "./ExerciserReportItem.js";
3
+ import { ExerciserLogMessagesMap } from "./ExerciserRun.js";
4
+ export declare const ExerciserReportFilterView: React.FC<{
5
+ className?: string;
6
+ allReportItems: ExerciserReportItem[];
7
+ logMessageMap: ExerciserLogMessagesMap;
8
+ setFilteredReportItems: React.Dispatch<React.SetStateAction<ExerciserReportItem[]>>;
9
+ }>;
10
10
  //# sourceMappingURL=ExerciserReportFilterView.d.ts.map