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
1717var 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
3733function 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
6667updateAllCountFields ( ) ;
0 commit comments