4
4
*
5
5
* Instruction Video: https://www.loom.com/share/2328e327125844bebdcabf7c9baaabca
6
6
*/
7
- var formId = GFFORMID ;
7
+ const formId = GFFORMID ;
8
8
9
9
// Map count field IDs to arrays of file upload field IDs
10
- var countMapping = {
10
+ const countMapping = {
11
11
5 : [ 1 , 3 , 4 ] , // Number Field ID 5 counts files from File Upload Field IDs 1, 3, 4
12
12
10 : [ 7 , 8 , 9 ] // Number Field ID 10 counts files from File Upload Field IDs 7, 8, 9
13
13
// Add more mappings if needed
@@ -19,9 +19,9 @@ var gpfupInstances = Object.keys(window).filter(function (key) {
19
19
} ) ;
20
20
21
21
// Build reverse lookup: uploadFieldID => associated countFieldIDs
22
- var uploadToCountMap = { } ;
23
- Object . entries ( countMapping ) . forEach ( function ( [ countFieldID , uploadFieldIDs ] ) {
24
- uploadFieldIDs . forEach ( function ( uploadFieldID ) {
22
+ const uploadToCountMap = { } ;
23
+ Object . entries ( countMapping ) . forEach ( ( [ countFieldID , uploadFieldIDs ] ) => {
24
+ uploadFieldIDs . forEach ( ( uploadFieldID ) => {
25
25
if ( ! uploadToCountMap [ uploadFieldID ] ) {
26
26
uploadToCountMap [ uploadFieldID ] = [ ] ;
27
27
}
@@ -31,27 +31,30 @@ Object.entries(countMapping).forEach(function ([countFieldID, uploadFieldIDs]) {
31
31
32
32
// Function to update all relevant count fields
33
33
function updateAllCountFields ( ) {
34
- Object . entries ( countMapping ) . forEach ( function ( [ countFieldID , uploadFieldIDs ] ) {
35
- var total = uploadFieldIDs . reduce ( function ( sum , uploadFieldID ) {
36
- var key = 'GPFUP_' + formId + '_' + uploadFieldID ;
37
- 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 ] && window [ key ] . $store ;
38
38
return sum + ( store ? ( store . state . files . length || 0 ) : 0 ) ;
39
39
} , 0 ) ;
40
40
41
- var selector = '#input_' + formId + '_' + countFieldID ;
42
- 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
+ }
43
46
} ) ;
44
47
}
45
48
46
49
if ( gpfupInstances . length ) {
47
50
// Subscribe to relevant GPFUP fields
48
- gpfupInstances . forEach ( function ( key ) {
49
- var parts = key . split ( '_' ) ;
50
- var fieldID = parseInt ( parts [ 2 ] ) ; // GPFUP_formId_fieldId
51
- var store = window [ key ] . $store ;
51
+ gpfupInstances . forEach ( ( key ) => {
52
+ const parts = key . split ( '_' ) ;
53
+ const fieldID = parseInt ( parts [ 2 ] ) ; // GPFUP_formId_fieldId
54
+ const store = window [ key ] . $store ;
52
55
53
56
if ( uploadToCountMap [ fieldID ] ) {
54
- store . subscribe ( function ( mutation , state ) {
57
+ store . subscribe ( ( mutation , state ) => {
55
58
if ( mutation . type === 'SET_FILES' ) {
56
59
updateAllCountFields ( ) ;
57
60
}
0 commit comments