function gtm4wp_make_sure_is_float( probably_float ) { let will_be_float = probably_float; if ( typeof will_be_float == "string" ) { will_be_float = parseFloat( will_be_float ); if ( isNaN( will_be_float ) ) { will_be_float = 0; } } else if ( typeof will_be_float != "number" ) { will_be_float = 0; } will_be_float = will_be_float.toFixed(2) return will_be_float; } function gtm4wp_push_ecommerce( event_name, items, extra_params, event_callback=false, event_timeout=2000 ) { const ecom_obj = extra_params || {}; ecom_obj.items = items; if ( gtm4wp_clear_ecommerce ) { window[ gtm4wp_datalayer_name ].push({ ecommerce: null }); } const dl_obj = { 'event': event_name, 'ecommerce': ecom_obj }; if (event_callback) { dl_obj.eventCallback = event_callback; dl_obj.eventTimeout = event_timeout; } window[ gtm4wp_datalayer_name ].push(dl_obj); } function gtm4wp_read_from_json( json_data, exclude_keys=['productlink', 'internal_id'] ) { try { const parsed_json = JSON.parse( json_data ); if ( parsed_json ) { if ( parsed_json.price ) { parsed_json.price = gtm4wp_make_sure_is_float( parsed_json.price ); } if ( exclude_keys && exclude_keys.length > 0 ) { for ( let i = 0; i < exclude_keys.length; i++ ) { delete parsed_json[ exclude_keys[i] ]; } } return parsed_json; } } catch(e) { console && console.error && console.error( e.message ); } return false; } function gtm4wp_read_json_from_node( el, dataset_item_id, exclude_keys=['productlink', 'internal_id'] ) { if ( el && el.dataset && el.dataset[ dataset_item_id ] ) { return gtm4wp_read_from_json( el.dataset[ dataset_item_id ], exclude_keys ); } return false; } function gtm4wp_update_json_in_node( el, dataset_item_id, new_key, new_value ) { if ( el && el.dataset && el.dataset[ dataset_item_id ] ) { try { const parsed_json = JSON.parse( el.dataset[ dataset_item_id ] ); if ( parsed_json ) { if ( parsed_json.price ) { parsed_json.price = gtm4wp_make_sure_is_float( parsed_json.price ); } parsed_json[ new_key ] = new_value; el.dataset[ dataset_item_id ] = JSON.stringify( parsed_json ); return true; } } catch(e) { console && console.error && console.error( e.message ); } } return false; }