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
1313 // Add more mappings if needed
@@ -19,9 +19,9 @@ var gpfupInstances = Object.keys(window).filter(function (key) {
1919} ) ;
2020
2121// 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 ) => {
2525 if ( ! uploadToCountMap [ uploadFieldID ] ) {
2626 uploadToCountMap [ uploadFieldID ] = [ ] ;
2727 }
@@ -31,27 +31,30 @@ Object.entries(countMapping).forEach(function ([countFieldID, uploadFieldIDs]) {
3131
3232// Function to update all relevant count fields
3333function 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 ;
3838 return sum + ( store ? ( store . state . files . length || 0 ) : 0 ) ;
3939 } , 0 ) ;
4040
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+ }
4346 } ) ;
4447}
4548
4649if ( gpfupInstances . length ) {
4750 // 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 ;
5255
5356 if ( uploadToCountMap [ fieldID ] ) {
54- store . subscribe ( function ( mutation , state ) {
57+ store . subscribe ( ( mutation , state ) => {
5558 if ( mutation . type === 'SET_FILES' ) {
5659 updateAllCountFields ( ) ;
5760 }
0 commit comments