@bygd/nc-report-ui 0.1.31 → 0.1.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/dist/default/cjs/index.cjs +1 -6450
- package/dist/default/esm/index.js +100 -39
- package/package.json +1 -1
- package/dist/app/esm/index.html +0 -21
- package/dist/app/esm/index.js +0 -93991
|
@@ -175,6 +175,9 @@ const Api = {
|
|
|
175
175
|
reportMetadata: data.reportMetadata || {},
|
|
176
176
|
dateRanges: data.dateRanges || []
|
|
177
177
|
};
|
|
178
|
+
console.log({
|
|
179
|
+
dashboardMeta: dashboardMetaCache[dashboardId]
|
|
180
|
+
});
|
|
178
181
|
return dashboardMetaCache[dashboardId];
|
|
179
182
|
},
|
|
180
183
|
getDashboard: async ({
|
|
@@ -757,7 +760,10 @@ function CheckboxMultiAutocomplete({
|
|
|
757
760
|
async function fetchItems(query, filter) {
|
|
758
761
|
if (!filter?.source) return [];
|
|
759
762
|
const data = await Api.runReport({
|
|
760
|
-
id: filter.source
|
|
763
|
+
id: filter.source,
|
|
764
|
+
query: {
|
|
765
|
+
parameters: query?.parameters || {}
|
|
766
|
+
}
|
|
761
767
|
});
|
|
762
768
|
return data.map(d => {
|
|
763
769
|
const m = {
|
|
@@ -772,13 +778,22 @@ const ChartFilterMultiSelect = ({
|
|
|
772
778
|
channel,
|
|
773
779
|
query
|
|
774
780
|
}) => {
|
|
781
|
+
const selectionsFromQuery = query?.filter?.and?.find(f => !!f[filter?.filter])?.[filter?.filter] || [];
|
|
775
782
|
const [items, setItems] = useState([]);
|
|
776
|
-
const [selected, setSelected] = useState(
|
|
783
|
+
const [selected, setSelected] = useState(selectionsFromQuery);
|
|
777
784
|
const [loading, setLoading] = useState(false);
|
|
778
785
|
const [inputQuery, setInputQuery] = useState("");
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
786
|
+
|
|
787
|
+
// useEffect(()=>{
|
|
788
|
+
// console.log({ChartFilterMultiSelect:{filter,query}})
|
|
789
|
+
// },[filter,query])
|
|
790
|
+
|
|
791
|
+
// useEffect(() => {
|
|
792
|
+
|
|
793
|
+
// setSelected(selectionsFromQuery);
|
|
794
|
+
|
|
795
|
+
// }, [query]);
|
|
796
|
+
|
|
782
797
|
useEffect(() => {
|
|
783
798
|
(async () => {
|
|
784
799
|
setLoading(true);
|
|
@@ -985,27 +1000,45 @@ var useChannel = channel => {
|
|
|
985
1000
|
return channelRef.current;
|
|
986
1001
|
};
|
|
987
1002
|
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
...filterRef.current,
|
|
993
|
-
...value
|
|
994
|
-
};
|
|
995
|
-
filterRef.current = merged;
|
|
996
|
-
for (var field in merged) {
|
|
997
|
-
if (field !== 'date_range' && !merged[field].length) delete merged[field];
|
|
998
|
-
}
|
|
999
|
-
channel?.emit('mergedFilterChanged', {
|
|
1000
|
-
value: merged
|
|
1001
|
-
});
|
|
1002
|
-
}, [channel]);
|
|
1003
|
+
// const store = {merged:{}}
|
|
1004
|
+
|
|
1005
|
+
function useMergedFilter(channel) {
|
|
1006
|
+
const mergedRef = React__default.useRef({});
|
|
1003
1007
|
React__default.useEffect(() => {
|
|
1004
|
-
channel
|
|
1008
|
+
if (!channel) return;
|
|
1009
|
+
const onFilterChanged = function (entity, value) {
|
|
1010
|
+
const merged = {
|
|
1011
|
+
// ...store.merged,
|
|
1012
|
+
...mergedRef.current,
|
|
1013
|
+
...value
|
|
1014
|
+
};
|
|
1015
|
+
|
|
1016
|
+
// store.merged = merged;
|
|
1017
|
+
mergedRef.current = merged;
|
|
1018
|
+
channel.emit("mergedFilterChanged", {
|
|
1019
|
+
value: merged
|
|
1020
|
+
});
|
|
1021
|
+
};
|
|
1022
|
+
channel.on("filterChanged", onFilterChanged);
|
|
1005
1023
|
return () => {
|
|
1006
|
-
channel
|
|
1024
|
+
channel.off("filterChanged", onFilterChanged);
|
|
1007
1025
|
};
|
|
1008
1026
|
}, [channel]);
|
|
1027
|
+
}
|
|
1028
|
+
|
|
1029
|
+
const ConfigContext = /*#__PURE__*/createContext(undefined);
|
|
1030
|
+
|
|
1031
|
+
/**
|
|
1032
|
+
* useConfig - Hook to access the config inside any child component.
|
|
1033
|
+
*
|
|
1034
|
+
* @returns {Object} The config object from config.json
|
|
1035
|
+
*
|
|
1036
|
+
* @example
|
|
1037
|
+
* const config = useConfig();
|
|
1038
|
+
* console.log(config.base_url);
|
|
1039
|
+
*/
|
|
1040
|
+
const useConfig = () => {
|
|
1041
|
+
return useContext(ConfigContext);
|
|
1009
1042
|
};
|
|
1010
1043
|
|
|
1011
1044
|
var Chart = ({
|
|
@@ -1029,6 +1062,18 @@ var Chart = ({
|
|
|
1029
1062
|
value: props?.filter
|
|
1030
1063
|
});
|
|
1031
1064
|
const [currentQuery, setCurrentQuery] = React__default.useState({});
|
|
1065
|
+
|
|
1066
|
+
// sample label
|
|
1067
|
+
// if(id!=='financing_applications') return null;
|
|
1068
|
+
// sample pie
|
|
1069
|
+
// if(id!=='overdue_order_ranges') return null;
|
|
1070
|
+
// sample table (invoiced_and_financed)
|
|
1071
|
+
//if(id!=='invoiced_and_financed') return null;
|
|
1072
|
+
// sample table (double filter test based on invoiced_and_financed)
|
|
1073
|
+
//if(id!=='double_filter_test') return null;
|
|
1074
|
+
|
|
1075
|
+
const config = useConfig();
|
|
1076
|
+
if (config && config.mode === 'chart' && config.chart && id !== config.chart) return null;
|
|
1032
1077
|
const {
|
|
1033
1078
|
ref,
|
|
1034
1079
|
inView,
|
|
@@ -1039,7 +1084,7 @@ var Chart = ({
|
|
|
1039
1084
|
delay: 1000
|
|
1040
1085
|
});
|
|
1041
1086
|
const channelUsed = useChannel(channel);
|
|
1042
|
-
|
|
1087
|
+
useMergedFilter(channelUsed);
|
|
1043
1088
|
|
|
1044
1089
|
// console.log(id, inView);
|
|
1045
1090
|
|
|
@@ -1113,18 +1158,31 @@ var Chart = ({
|
|
|
1113
1158
|
}, [chart, source, activeView, report, schema]);
|
|
1114
1159
|
const loadSource = userFilter => {
|
|
1115
1160
|
const queryFilter = report?.doc.query.filter || {};
|
|
1161
|
+
|
|
1162
|
+
// const finalFilter = {
|
|
1163
|
+
// ...queryFilter,
|
|
1164
|
+
// ...props?.filter,
|
|
1165
|
+
// ...userFilter?.value,
|
|
1166
|
+
// };
|
|
1167
|
+
|
|
1168
|
+
const uf_date_range = userFilter?.value?.date_range;
|
|
1169
|
+
const date_range = uf_date_range || report?.doc.query.date_range;
|
|
1116
1170
|
const finalFilter = {
|
|
1117
|
-
...queryFilter,
|
|
1118
|
-
|
|
1119
|
-
...userFilter?.value
|
|
1171
|
+
and: [...(queryFilter.and || []), ...Object.entries(props?.filter || {}).map(([key, value]) => ({
|
|
1172
|
+
[key]: value
|
|
1173
|
+
})), ...Object.entries(userFilter?.value || {}).map(([key, value]) => ({
|
|
1174
|
+
[key]: value
|
|
1175
|
+
})).filter(f => !f.date_range)]
|
|
1120
1176
|
};
|
|
1121
1177
|
|
|
1122
1178
|
// const finalFilter = {...props?.filter,...userFilter?.value };
|
|
1123
1179
|
|
|
1124
1180
|
// console.log({queryFilter,userFilter,propsFilter:props.filter,finalFilter});
|
|
1125
1181
|
|
|
1126
|
-
const date_range = finalFilter.date_range || report?.doc.query.date_range;
|
|
1127
|
-
|
|
1182
|
+
//const date_range = finalFilter.date_range || report?.doc.query.date_range;
|
|
1183
|
+
|
|
1184
|
+
//delete finalFilter.date_range;
|
|
1185
|
+
|
|
1128
1186
|
setDirty(false);
|
|
1129
1187
|
setFilter();
|
|
1130
1188
|
setLoading(true);
|
|
@@ -1144,6 +1202,9 @@ var Chart = ({
|
|
|
1144
1202
|
//console.log('loadSource',{reportId: report.id, query});
|
|
1145
1203
|
|
|
1146
1204
|
setCurrentQuery(query);
|
|
1205
|
+
|
|
1206
|
+
// console.log({queryRunning:query});
|
|
1207
|
+
|
|
1147
1208
|
Api.runReport({
|
|
1148
1209
|
id: report.id,
|
|
1149
1210
|
query
|
|
@@ -1170,6 +1231,11 @@ var Chart = ({
|
|
|
1170
1231
|
};
|
|
1171
1232
|
}, [channelUsed, report, chart, inView]);
|
|
1172
1233
|
React__default.useEffect(() => {
|
|
1234
|
+
console.log('loadSource, inView,dirty', {
|
|
1235
|
+
filter,
|
|
1236
|
+
inView,
|
|
1237
|
+
dirty
|
|
1238
|
+
});
|
|
1173
1239
|
if (inView && dirty) loadSource(filter);
|
|
1174
1240
|
}, [inView, dirty]);
|
|
1175
1241
|
React__default.useEffect(() => {
|
|
@@ -1344,17 +1410,12 @@ function Dashboard({
|
|
|
1344
1410
|
const [schema] = React__default.useState();
|
|
1345
1411
|
const [rows, setRows] = React__default.useState([]);
|
|
1346
1412
|
const cache = React__default.useRef({});
|
|
1347
|
-
const channel = useChannel();
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
}, {
|
|
1352
|
-
|
|
1353
|
-
}, {
|
|
1354
|
-
schema
|
|
1355
|
-
}, {
|
|
1356
|
-
params: finalParams
|
|
1357
|
-
});
|
|
1413
|
+
// const channel = useChannel();
|
|
1414
|
+
|
|
1415
|
+
// useFilterManager(channel);
|
|
1416
|
+
|
|
1417
|
+
// console.log({ rows }, { dashboard }, { schema }, { params: finalParams });
|
|
1418
|
+
|
|
1358
1419
|
useEffect(() => {
|
|
1359
1420
|
// console.log('token changed',finalApi);
|
|
1360
1421
|
|
package/package.json
CHANGED
package/dist/app/esm/index.html
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8" />
|
|
5
|
-
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
-
<title>@bygd/nc-report-ui</title>
|
|
8
|
-
</head>
|
|
9
|
-
<body style="height: 100vh; margin: 0; padding: 0; background-color: #eeeeee">
|
|
10
|
-
<div id="container" style="height: 100%"></div>
|
|
11
|
-
|
|
12
|
-
<script type="module">
|
|
13
|
-
import { createApp } from "./index.js";
|
|
14
|
-
const run = createApp({
|
|
15
|
-
container: document.getElementById("container"),
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
const dispose = run();
|
|
19
|
-
</script>
|
|
20
|
-
</body>
|
|
21
|
-
</html>
|