From 72838e2592f159ab79c9f245ac28a4f9bd807e19 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Tue, 15 Dec 2020 12:16:37 +0100 Subject: [PATCH] feat(massinput): reduce size of ajax requests --- frontend/src/utils/mass-input/mass-input.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/frontend/src/utils/mass-input/mass-input.js b/frontend/src/utils/mass-input/mass-input.js index 9e6a19d01..6eac39000 100644 --- a/frontend/src/utils/mass-input/mass-input.js +++ b/frontend/src/utils/mass-input/mass-input.js @@ -226,8 +226,21 @@ export class MassInput { } _serializeForm(submitButton, enctype) { + const rawFormData = new FormData(this._massInputForm); + const extraneousKeys = new Set(); + for (const k of rawFormData.keys()) { + const n = k.replace(/\[\]$/, ''); + const inputElements = Array.from(this._massInputForm.querySelectorAll(`[name=${n}]`)); + const isBelowMassinput = inputElements.some((elem) => this._element.contains(elem)); + const isFile = inputElements.some((elem) => elem.type === 'file'); + + if (!isBelowMassinput && isFile) + extraneousKeys.add(k); + } + for (const k of extraneousKeys) + rawFormData.delete(k); // create new FormData and format any date values - const formData = Datepicker.unformatAll(this._massInputForm, new FormData(this._massInputForm)); + const formData = Datepicker.unformatAll(this._massInputForm, rawFormData); // manually add name and value of submit button to formData formData.append(submitButton.name, submitButton.value);