Skip to content

Commit a8200b0

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

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
/**
2+
* Gravity Perks // File Upload Pro // Count Files in Groups
3+
* https://gravitywiz.com/documentation/gravity-forms-file-upload-pro/
4+
*
5+
* Instruction Video: https://www.loom.com/share/2328e327125844bebdcabf7c9baaabca
6+
*/
7+
var formId = GFFORMID;
8+
9+
// Map count field IDs to arrays of file upload field IDs
10+
var countMapping = {
11+
5: [1, 3, 4], // Number Field ID 5 counts files from File Upload Field IDs 1, 3, 4
12+
10: [7, 8, 9] // Number Field ID 10 counts files from File Upload Field IDs 7, 8, 9
13+
// Add more mappings if needed
14+
};
15+
16+
// Find all GPFUP keys for the form
17+
var gpfupInstances = Object.keys(window).filter(function (key) {
18+
return key.startsWith('GPFUP_' + formId + '_');
19+
});
20+
21+
if (!gpfupInstances.length) {
22+
return;
23+
}
24+
25+
// Build reverse lookup: uploadFieldID => associated countFieldIDs
26+
var uploadToCountMap = {};
27+
Object.entries(countMapping).forEach(function ([countFieldID, uploadFieldIDs]) {
28+
uploadFieldIDs.forEach(function (uploadFieldID) {
29+
if (!uploadToCountMap[uploadFieldID]) {
30+
uploadToCountMap[uploadFieldID] = [];
31+
}
32+
uploadToCountMap[uploadFieldID].push(parseInt(countFieldID));
33+
});
34+
});
35+
36+
// Function to update all relevant count fields
37+
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;
42+
return sum + (store ? (store.state.files.length || 0) : 0);
43+
}, 0);
44+
45+
var selector = '#input_' + formId + '_' + countFieldID;
46+
jQuery(selector).val(total).change();
47+
});
48+
}
49+
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;
55+
56+
if (uploadToCountMap[fieldID]) {
57+
store.subscribe(function (mutation, state) {
58+
if (mutation.type === 'SET_FILES') {
59+
updateAllCountFields();
60+
}
61+
});
62+
}
63+
});
64+
65+
// Initial count on load
66+
updateAllCountFields();

0 commit comments

Comments
 (0)