Skip to content

Commit f640ad1

Browse files
committed
fix: display message fix
+ Button showed when addedFile + InfoLoading is shown when file is processing AND api is processing + Enhanced api error with lines
1 parent 0bd40de commit f640ad1

File tree

1 file changed

+25
-9
lines changed

1 file changed

+25
-9
lines changed

src/components/DropZone.tsx

+25-9
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ export const DropZone = React.forwardRef<HTMLFormElement, DropZoneProps>(
100100
// State of dropzone object
101101
const [dropZone, setDropZone] = useState<Dropzone | null>(null);
102102
const [isDisabled, setIsDisabled] = useState(true);
103+
const [isHidden, setIsHidden] = useState(true);
104+
const [isInfoHidden, setIsInfoHidden] = useState(true);
103105

104106
const dropzoneIndex = dropzone_index;
105107
const acceptedExtensions = accepted_extensions;
@@ -112,11 +114,17 @@ export const DropZone = React.forwardRef<HTMLFormElement, DropZoneProps>(
112114
(dropZone as Dropzone).on("addedfiles", () => {
113115
if (!autoProcessQueue) {
114116
setIsDisabled(false);
117+
// Clear error list
118+
$('#dropzone-error-list').empty();
115119
// Hide custom progress bar when add files
116120
$("#upload_form-" + dropzoneIndex + " .custom-dz-upload").hide();
117121
}
122+
123+
setIsHidden(false);
118124
}) &&
119125
(dropZone as Dropzone).on("processing", (file) => {
126+
setIsHidden(true);
127+
setIsInfoHidden(false);
120128
// Hide default progress bar when processing
121129
$(file.previewElement).find(".dz-upload").hide();
122130
// Show custom progress bar when processing
@@ -137,11 +145,17 @@ export const DropZone = React.forwardRef<HTMLFormElement, DropZoneProps>(
137145
dropZone.processQueue();
138146
} else {
139147
setIsDisabled(true);
148+
setIsInfoHidden(true);
140149
}
141150
} else {
142151
// AutoProcess context : Refresh button available
143152
setIsDisabled(false);
153+
setIsHidden(false);
154+
setIsInfoHidden(true);
144155
}
156+
}) &&
157+
(dropZone as Dropzone).on("error", () => {
158+
setIsInfoHidden(true);
145159
});
146160

147161
// Initialization of DropZone
@@ -160,23 +174,25 @@ export const DropZone = React.forwardRef<HTMLFormElement, DropZoneProps>(
160174
// Code from github "npm dropzone"
161175
if (file.upload && file.upload.uuid && file.previewElement) {
162176
file.previewElement.classList.add("dz-error");
163-
if (typeof message !== "string" && message.error) {
164-
message = message.error;
177+
if (typeof message !== "string" && (message.error || message.file)) {
178+
message = message.error || message.file;
165179
} else if (typeof message !== "string") {
166180
// Custom error sent by api
167-
var finalMessage = "";
181+
var finalMessage: string[] = [];
168182

169183
// CUSTOM : Iterate on each message
170184
if (message.message.length > 0) {
171185
message.message.forEach((currentMessage: any) => {
172-
var errorList = "";
186+
var errorList: string[] = [];
173187
// Iterate on each errors
174-
currentMessage.errors.forEach((errorMessage: string) => { errorList = errorList + errorMessage + " \n " })
188+
currentMessage.errors.forEach((errorMessage: string) => {
189+
errorList.push((currentMessage.row ? "Ligne " + currentMessage.row + " : " : "") + errorMessage + " \n ");
190+
})
175191
// Return result message
176-
finalMessage = finalMessage + errorList;
192+
finalMessage = finalMessage.concat(errorList);
177193
});
178194

179-
message = finalMessage;
195+
message = "<p>" + finalMessage.sort().join("</p><p>") + "</p>";
180196

181197
} else {
182198
message = "Une erreur est surevenue, veuillez vérifier le fichier importé.";
@@ -196,7 +212,7 @@ export const DropZone = React.forwardRef<HTMLFormElement, DropZoneProps>(
196212

197213
return (
198214
<div id="dropzone-container">
199-
<div id="dropzone-info" className="alert alert-info" role="alert">
215+
<div id="dropzone-info" className="alert alert-info" role="alert" hidden={isInfoHidden}>
200216
Si vous fermez la fenêtre pendant l'importation, vous n'aurez pas de retour d'erreur ou de confirmation de bon déroulement de ce dernier. Merci de patienter.
201217
</div>
202218
<div id="dropzone">
@@ -211,7 +227,7 @@ export const DropZone = React.forwardRef<HTMLFormElement, DropZoneProps>(
211227

212228
<div className="row text-center">
213229
<div className="col">
214-
<button className="btn btn-primary" onClick={processQueue} disabled={isDisabled}>{label}</button>
230+
<button className="btn btn-primary" onClick={processQueue} disabled={isDisabled} hidden={isHidden}>{label}</button>
215231
</div>
216232
</div>
217233

0 commit comments

Comments
 (0)