impaktapps-ui-builder 1.0.180 → 1.0.181-test
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/impaktapps-ui-builder.es.js +70 -4
- package/dist/impaktapps-ui-builder.es.js.map +1 -1
- package/dist/impaktapps-ui-builder.umd.js +6 -6
- package/dist/impaktapps-ui-builder.umd.js.map +1 -1
- package/dist/src/impaktapps-ui-builder/runtime/services/downloadFile.d.ts +1 -0
- package/dist/src/impaktapps-ui-builder/runtime/services/interface.d.ts +1 -0
- package/dist/src/impaktapps-ui-builder/runtime/services/service.d.ts +2 -0
- package/package.json +1 -1
- package/src/impaktapps-ui-builder/builder/elements/UiSchema/event/schema.ts +1 -0
- package/src/impaktapps-ui-builder/runtime/services/downloadFile.ts +80 -0
- package/src/impaktapps-ui-builder/runtime/services/events.ts +6 -3
- package/src/impaktapps-ui-builder/runtime/services/interface.ts +1 -0
- package/src/impaktapps-ui-builder/runtime/services/service.ts +5 -3
|
@@ -3,6 +3,7 @@ interface funcParamsProps {
|
|
|
3
3
|
store: any;
|
|
4
4
|
dynamicData: any;
|
|
5
5
|
service: any;
|
|
6
|
+
fetchservice: any;
|
|
6
7
|
userValue: any;
|
|
7
8
|
pageDataProvider: any;
|
|
8
9
|
functionsProvider?: Record<string, any>;
|
|
@@ -32,5 +33,6 @@ declare const _default: (funcParams: funcParamsProps) => {
|
|
|
32
33
|
callHandler: (eventType: string, functionParameters?: any) => void;
|
|
33
34
|
downloadFile: typeof downloadFile;
|
|
34
35
|
downloadFileFromUrl: (response: any, service: any) => void;
|
|
36
|
+
downloadFileStream: (params: any) => Promise<void>;
|
|
35
37
|
};
|
|
36
38
|
export default _default;
|
package/package.json
CHANGED
|
@@ -73,6 +73,7 @@ export const EventSchema = {
|
|
|
73
73
|
oneOf: [
|
|
74
74
|
{ title: "RankProvider", const: "RankProvider" },
|
|
75
75
|
{ title: "Download File", const: "downloadFile" },
|
|
76
|
+
{ title: "Download File Stream", const: "downloadFileStream" },
|
|
76
77
|
{ title: "downloadFileFromUrl", const: "downloadFileFromUrl" },
|
|
77
78
|
]
|
|
78
79
|
},
|
|
@@ -44,4 +44,84 @@ export const downloadFileFromUrl = (response: any, service) => {
|
|
|
44
44
|
link.parentNode.removeChild(link);
|
|
45
45
|
};
|
|
46
46
|
|
|
47
|
+
export const downloadFileStream = async (params: any) => {
|
|
48
|
+
try {
|
|
49
|
+
let response: Response;
|
|
47
50
|
|
|
51
|
+
if (params.method === "GET") {
|
|
52
|
+
response = await params.fetchservice.getStream(
|
|
53
|
+
params.url,
|
|
54
|
+
params.config
|
|
55
|
+
);
|
|
56
|
+
} else if (params.method === "POST") {
|
|
57
|
+
response = await params.fetchservice.postStream(
|
|
58
|
+
params.url,
|
|
59
|
+
params.body,
|
|
60
|
+
params.config
|
|
61
|
+
);
|
|
62
|
+
} else {
|
|
63
|
+
throw new Error(
|
|
64
|
+
`Unsupported HTTP method: ${params.method}. Only GET and POST are supported.`
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if (!response.ok) {
|
|
69
|
+
throw new Error("Download failed");
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Notify when download starts
|
|
73
|
+
params.store.setNotify({
|
|
74
|
+
SuccessMessage: "File Download Started Successfully",
|
|
75
|
+
Success: true,
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
const fileName =
|
|
79
|
+
response.headers.get("filename") || "downloaded_file";
|
|
80
|
+
|
|
81
|
+
const extension = fileName.includes(".")
|
|
82
|
+
? fileName.substring(fileName.lastIndexOf("."))
|
|
83
|
+
: "";
|
|
84
|
+
|
|
85
|
+
const reader = response.body!.getReader();
|
|
86
|
+
|
|
87
|
+
//@ts-ignore
|
|
88
|
+
const fileHandle = await window.showSaveFilePicker({
|
|
89
|
+
suggestedName: fileName,
|
|
90
|
+
types: extension
|
|
91
|
+
? [
|
|
92
|
+
{
|
|
93
|
+
description: "File",
|
|
94
|
+
accept: {
|
|
95
|
+
"application/octet-stream": [extension],
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
]
|
|
99
|
+
: undefined,
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
const writable = await fileHandle.createWritable();
|
|
103
|
+
|
|
104
|
+
while (true) {
|
|
105
|
+
const { done, value } = await reader.read();
|
|
106
|
+
|
|
107
|
+
if (done) break;
|
|
108
|
+
|
|
109
|
+
await writable.write(value);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
await writable.close();
|
|
113
|
+
|
|
114
|
+
// Notify when download completes
|
|
115
|
+
params.store.setNotify({
|
|
116
|
+
SuccessMessage: `File "${fileHandle.name}" downloaded successfully.`,
|
|
117
|
+
Success: true,
|
|
118
|
+
});
|
|
119
|
+
} catch (e) {
|
|
120
|
+
params.store.setNotify({
|
|
121
|
+
FailMessage: "File Download Failed",
|
|
122
|
+
Fail: true,
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
console.error(e);
|
|
126
|
+
}
|
|
127
|
+
};
|
|
@@ -126,10 +126,13 @@ function executeInBuiltFunctionHandler(params: handlersProps) {
|
|
|
126
126
|
let parameter = {};
|
|
127
127
|
if (params.config.funcParametersCode) {
|
|
128
128
|
const makeFunc = eval(params.config.funcParametersCode)
|
|
129
|
-
parameter = makeFunc(params.store, params.dynamicData, params.userValue, params.parentEventOutput, params.service);
|
|
130
|
-
params.serviceHolder[params.config.inBuiltFunctionType](
|
|
129
|
+
parameter = makeFunc(params.store, params.dynamicData, params.userValue, params.parentEventOutput, params.service, params.fetchservice);
|
|
130
|
+
params.serviceHolder[params.config.inBuiltFunctionType](
|
|
131
|
+
parameter,
|
|
132
|
+
params.service
|
|
133
|
+
);
|
|
131
134
|
} else {
|
|
132
|
-
params.serviceHolder[params.config.inBuiltFunctionType](params.store, params.dynamicData, params.userValue, params.parentEventOutput, params.service)
|
|
135
|
+
params.serviceHolder[params.config.inBuiltFunctionType](params.store, params.dynamicData, params.userValue, params.parentEventOutput, params.service, params.fetchservice)
|
|
133
136
|
}
|
|
134
137
|
}
|
|
135
138
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import _, { isEmpty } from "lodash";
|
|
2
|
-
import { downloadFileFromUrl, downloadFile } from "./downloadFile";
|
|
2
|
+
import { downloadFileFromUrl, downloadFile, downloadFileStream } from "./downloadFile";
|
|
3
3
|
import { executeEvents, executeRefreshHandler } from "./events";
|
|
4
4
|
import { handlersProps } from "./interface";
|
|
5
5
|
let compType: string;
|
|
@@ -17,6 +17,7 @@ interface funcParamsProps {
|
|
|
17
17
|
store: any,
|
|
18
18
|
dynamicData: any,
|
|
19
19
|
service: any,
|
|
20
|
+
fetchservice: any,
|
|
20
21
|
userValue: any,
|
|
21
22
|
pageDataProvider: any,
|
|
22
23
|
functionsProvider?: Record<string, any>,
|
|
@@ -65,8 +66,8 @@ export default (funcParams: funcParamsProps) => {
|
|
|
65
66
|
const formDataHolder = {};
|
|
66
67
|
let executeEventsParameters: handlersProps = {
|
|
67
68
|
config: {}, componentName: "",
|
|
68
|
-
store: funcParams.store, dynamicData: funcParams.dynamicData, userValue: funcParams.userValue, service: funcParams.service,
|
|
69
|
-
serviceHolder: { downloadFile, download: downloadFileFromUrl, ...funcParams.functionsProvider }, eventGroups,
|
|
69
|
+
store: funcParams.store, dynamicData: funcParams.dynamicData, userValue: funcParams.userValue, service: funcParams.service, fetchservice: funcParams.fetchservice,
|
|
70
|
+
serviceHolder: { downloadFile, download: downloadFileFromUrl, downloadFileStream, ...funcParams.functionsProvider }, eventGroups,
|
|
70
71
|
functionsProvider: funcParams.functionsProvider, formDataHolder
|
|
71
72
|
};
|
|
72
73
|
return {
|
|
@@ -313,6 +314,7 @@ export default (funcParams: funcParamsProps) => {
|
|
|
313
314
|
},
|
|
314
315
|
downloadFile: downloadFile,
|
|
315
316
|
downloadFileFromUrl: downloadFileFromUrl,
|
|
317
|
+
downloadFileStream: downloadFileStream,
|
|
316
318
|
...funcParams.functionsProvider
|
|
317
319
|
};
|
|
318
320
|
};
|