1/** 2 * Does not use webpack because of needless dependancy support causing it not to load. 3 * Also every modern browser supports ES6 classes. 4 */ 5class BoomTownGA4 { 6 /** Debug Mode **/ 7 _debug = false; 8 9 /** 10 * Class Constructor 11 * @param {bool} debug 12 */ 13 constructor(debug) { 14 this._debug = debug; 15 } 16 17 /** 18 * Send Event 19 * @param {string} name Event Name 20 * @param {object} params Event Optional Params 21 * @return {void} 22 */ 23 _sendEvent(name, params = {}) { 24 params = {...window.btGlobalAnalyticsParams, ...params}; 25 26 if (this._debug) { 27 console.log('BTGA4 Debug', name, params); 28 } 29 30 try { 31 gtag('event', name, params); 32 } catch (e) { 33 console.error('BTGA4 Exception', e); 34 } 35 } 36 37 /** 38 * Legacy Form Events 39 * @param {string} type Form Type 40 * @param {bool} registered User Has Registered 41 * @return {void} 42 */ 43 eventFormSubmitLegacy(type, registered) { 44 if (type === undefined) { 45 return; 46 } 47 48 type = type.toLowerCase(); 49 50 switch (type) { 51 case 'buy': 52 this.eventFormBuy(registered); 53 break; 54 case 'finance': 55 this.eventFormFinance(registered); 56 break; 57 case 'sell': 58 this.eventFormSell(registered); 59 break; 60 case 'office': 61 this.eventFormContact(registered); 62 break; 63 case 'agent': 64 this.eventFormAgent(registered); 65 break; 66 default: 67 if (this._debug) { 68 console.warn('BTGA4 Warning: Invalid Legacy Form Type', type); 69 } 70 } 71 } 72 73 ////////////////////////////// 74 // Home Valuation Page 75 ////////////////////////////// 76 77 /** 78 * Event: Home Valuation Search 79 * @param {bool} found Valid property or unique property? 80 * @return {void} 81 */ 82 eventFormHomeValuationSearch(found = false) { 83 this._sendEvent('bt_form_homeval_search'); 84 if (found) { 85 this._sendEvent('bt_form_homeval_search_valid'); 86 } else { 87 this._sendEvent('bt_form_homeval_search_invalid'); 88 } 89 } 90 91 /** 92 * Event: Home Valuation 93 * @param {bool} registered User Has Registered 94 * @return {void} 95 */ 96 eventFormHomeValuation(registered = false) { 97 this._sendEvent('bt_form_homeval'); 98 99 if (registered) { 100 this.eventFormHomeValuationReg(); 101 } 102 } 103 104 /** 105 * Event: Home Valuation Registration 106 * @return {void} 107 */ 108 eventFormHomeValuationReg() { 109 this._sendEvent('bt_form_homeval_registration'); 110 this._sendEventAdWords(); 111 } 112 113 ////////////////////////////// 114 // Seller Form 115 ////////////////////////////// 116 117 /** 118 * Event: Sell Form 119 * @param {bool} registered User Has Registered 120 * @return {void} 121 */ 122 eventFormSell(registered = false) { 123 this._sendEvent('bt_form_sell'); 124 125 if (registered) { 126 this.eventFormSellReg(); 127 } 128 } 129 130 /** 131 * Event: Sell Form Registration 132 * @return {void} 133 */ 134 eventFormSellReg() { 135 this._sendEvent('bt_form_sell_registration'); 136 this._sendEventAdWords(); 137 } 138 139 ////////////////////////////// 140 // Buyer Page 141 ////////////////////////////// 142 143 /** 144 * Event: Buy Form 145 * @param {bool} registered User Has Registered 146 * @return {void} 147 */ 148 eventFormBuy(registered = false) { 149 this._sendEvent('bt_form_buy'); 150 151 if (registered) { 152 this.eventFormBuyReg(); 153 } 154 } 155 156 /** 157 * Event: Buy Form Registration 158 * @return {void} 159 */ 160 eventFormBuyReg() { 161 this._sendEvent('bt_form_buy_registration'); 162 this._sendEventAdWords(); 163 } 164 165 ////////////////////////////// 166 // Login Modal 167 ////////////////////////////// 168 169 /** 170 * Event: Login Modal 171 * @param {bool} registered User Has Registered 172 * @return {void} 173 */ 174 eventFormLogin(registered = false) { 175 this._sendEvent('bt_form_login'); 176 177 if (registered) { 178 this.eventFormLoginRegistration(); 179 } 180 } 181 182 /** 183 * Event: Login Modal Registration 184 * @return {void} 185 */ 186 eventFormLoginRegistration() { 187 this._sendEvent('bt_form_login_registration'); 188 this._sendEventAdWords(); 189 } 190 191 ////////////////////////////// 192 // Contact Us Page 193 ////////////////////////////// 194 195 /** 196 * Event: Contact Form 197 * @param {bool} registered User Has Registered 198 * @return {void} 199 */ 200 eventFormContact(registered = false) { 201 this._sendEvent('bt_form_contact'); 202 203 if (registered) { 204 this.eventFormContactReg(); 205 } 206 } 207 208 /** 209 * Event: Contact Form Registration 210 * @return {void} 211 */ 212 eventFormContactReg() { 213 this._sendEvent('bt_form_contact_registration'); 214 this._sendEventAdWords(); 215 } 216 217 ////////////////////////////// 218 // Finance Page 219 ////////////////////////////// 220 221 /** 222 * Event: Finance Form 223 * @param {bool} registered User Has Registered 224 * @return {void} 225 */ 226 eventFormFinance(registered = false) { 227 this._sendEvent('bt_form_finance'); 228 229 if (registered) { 230 this.eventFormFinanceReg(); 231 } 232 } 233 234 /** 235 * Event: Finance Form Registration 236 * @return {void} 237 */ 238 eventFormFinanceReg() { 239 this._sendEvent('bt_form_finance_registration'); 240 this._sendEventAdWords(); 241 } 242 243 ////////////////////////////// 244 // Contact Agent Page 245 ////////////////////////////// 246 247 /** 248 * Event: Agent Form 249 * @param {bool} registered User Has Registered 250 * @return {void} 251 */ 252 eventFormAgent(registered = false) { 253 this._sendEvent('bt_form_agent'); 254 255 if (registered) { 256 this.eventFormAgentReg(); 257 } 258 } 259 260 /** 261 * Event: Agent Form Registration 262 * @return {void} 263 */ 264 eventFormAgentReg() { 265 this._sendEvent('bt_form_agent_registration'); 266 this._sendEventAdWords(); 267 } 268 269 /** 270 * Event: Adwords Conversion 271 * @return {void} 272 */ 273 _sendEventAdWords() { 274 this._sendEvent('conversion', {'send_to': 'AW-1050553015/KTDZCN3y3gcQt9X49AM'}); 275 } 276}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.