Skip to content

Commit 68c80f2

Browse files
committed
gpfup-count-files-groups.js: Added snippet to count files in groups.
`gpfup-count-files-groups.js`: Added snippet to count files in groups. `gpfup-count-files-groups.js`: Added snippet to count files in groups.
1 parent a8200b0 commit 68c80f2

File tree

1 file changed

+30
-29
lines changed

1 file changed

+30
-29
lines changed

gp-file-upload-pro/gpfup-count-files-groups.js

Lines changed: 30 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,24 @@
44
*
55
* Instruction Video: https://www.loom.com/share/2328e327125844bebdcabf7c9baaabca
66
*/
7-
var formId = GFFORMID;
7+
const formId = GFFORMID;
88

99
// Map count field IDs to arrays of file upload field IDs
10-
var countMapping = {
10+
const countMapping = {
1111
5: [1, 3, 4], // Number Field ID 5 counts files from File Upload Field IDs 1, 3, 4
1212
10: [7, 8, 9] // Number Field ID 10 counts files from File Upload Field IDs 7, 8, 9
13-
// Add more mappings if needed
13+
// Add more mappings as needed: countFieldID: [uploadFieldID1, uploadFieldID2, ...]
1414
};
1515

1616
// Find all GPFUP keys for the form
1717
var gpfupInstances = Object.keys(window).filter(function (key) {
1818
return key.startsWith('GPFUP_' + formId + '_');
1919
});
2020

21-
if (!gpfupInstances.length) {
22-
return;
23-
}
24-
2521
// Build reverse lookup: uploadFieldID => associated countFieldIDs
26-
var uploadToCountMap = {};
27-
Object.entries(countMapping).forEach(function ([countFieldID, uploadFieldIDs]) {
28-
uploadFieldIDs.forEach(function (uploadFieldID) {
22+
const uploadToCountMap = {};
23+
Object.entries(countMapping).forEach(([countFieldID, uploadFieldIDs]) => {
24+
uploadFieldIDs.forEach((uploadFieldID) => {
2925
if (!uploadToCountMap[uploadFieldID]) {
3026
uploadToCountMap[uploadFieldID] = [];
3127
}
@@ -35,32 +31,37 @@ Object.entries(countMapping).forEach(function ([countFieldID, uploadFieldIDs]) {
3531

3632
// Function to update all relevant count fields
3733
function updateAllCountFields() {
38-
Object.entries(countMapping).forEach(function ([countFieldID, uploadFieldIDs]) {
39-
var total = uploadFieldIDs.reduce(function (sum, uploadFieldID) {
40-
var key = 'GPFUP_' + formId + '_' + uploadFieldID;
41-
var store = window[key] && window[key].$store;
34+
Object.entries(countMapping).forEach(([countFieldID, uploadFieldIDs]) => {
35+
const total = uploadFieldIDs.reduce((sum, uploadFieldID) => {
36+
const key = 'GPFUP_' + formId + '_' + uploadFieldID;
37+
const store = window[key]?.$store;
4238
return sum + (store ? (store.state.files.length || 0) : 0);
4339
}, 0);
4440

45-
var selector = '#input_' + formId + '_' + countFieldID;
46-
jQuery(selector).val(total).change();
41+
const selector = '#input_' + formId + '_' + countFieldID;
42+
const $field = jQuery(selector);
43+
if ($field.length) {
44+
$field.val(total).change();
45+
}
4746
});
4847
}
4948

50-
// Subscribe to relevant GPFUP fields
51-
gpfupInstances.forEach(function (key) {
52-
var parts = key.split('_');
53-
var fieldID = parseInt(parts[2]); // GPFUP_formId_fieldId
54-
var store = window[key].$store;
49+
if (gpfupInstances.length) {
50+
// Subscribe to relevant GPFUP fields
51+
gpfupInstances.forEach((key) => {
52+
const parts = key.split('_');
53+
const fieldID = parseInt(parts[2]); // GPFUP_formId_fieldId
54+
const store = window[key].$store;
5555

56-
if (uploadToCountMap[fieldID]) {
57-
store.subscribe(function (mutation, state) {
58-
if (mutation.type === 'SET_FILES') {
59-
updateAllCountFields();
60-
}
61-
});
62-
}
63-
});
56+
if (uploadToCountMap[fieldID]) {
57+
store.subscribe((mutation, state) => {
58+
if (mutation.type === 'SET_FILES') {
59+
updateAllCountFields();
60+
}
61+
});
62+
}
63+
});
64+
}
6465

6566
// Initial count on load
6667
updateAllCountFields();

0 commit comments

Comments
 (0)