1document.body.addEventListener(`ecommerce-tracking`, (event) => { 2 if (event && event.detail) { 3 switch (event.detail.type) { 4 case "PROVIDER": 5 switch (event.detail.action) { 6 case "VIEW": 7 Provider.view(event.detail); 8 break; 9 case "REQUEST": 10 Provider.request(event.detail); 11 break; 12 case "EMAIL": 13 Provider.email(event.detail); 14 if (window.dataLayer) { 15 dataLayer.push({ 16 'event' : 'GAEvent', 17 'eventCategory' : 'Mailto', 18 'eventAction' : event?.detail?.data, 19 'eventLabel' : window.location.href, 20 }); 21 } 22 break; 23 case "PHONE": 24 Provider.phone(event.detail); 25 if (window.dataLayer) { 26 dataLayer.push({ 27 'event' : 'GAEvent', 28 'eventCategory' : 'Tel', 29 'eventAction' : event?.detail?.data, 30 'eventLabel' : window.location.href, 31 }); 32 } 33 break; 34 case "URL": 35 Provider.url(event.detail); 36 if (window.dataLayer) { 37 dataLayer.push({ 38 'event' : 'GAEvent', 39 'eventCategory' : 'Outbound', 40 'eventAction' : event?.detail?.data, 41 'eventLabel' : window.location.href, 42 }); 43 } 44 break; 45 case "EXTERNALURL": 46 Provider.externalURL(event.detail); 47 if (window.dataLayer) { 48 dataLayer.push({ 49 'event' : 'GAEvent', 50 'eventCategory' : 'Outbound', 51 'eventAction' : event?.detail?.data, 52 'eventLabel' : window.location.href, 53 }); 54 } 55 break; 56 } 57 58 break; 59 60 case "EVENT": 61 switch (event.detail.action) { 62 case "VIEW": 63 Event.view(event.detail); 64 break; 65 case "REQUEST": 66 Event.request(event.detail); 67 break; 68 case "EMAIL": 69 Event.email(event.detail); 70 if (window.dataLayer) { 71 dataLayer.push({ 72 'event' : 'GAEvent', 73 'eventCategory' : 'Mailto', 74 'eventAction' : event?.detail?.data, 75 'eventLabel' : window.location.href, 76 }); 77 } 78 break; 79 case "PHONE": 80 Event.phone(event.detail); 81 if (window.dataLayer) { 82 dataLayer.push({ 83 'event' : 'GAEvent', 84 'eventCategory' : 'Tel', 85 'eventAction' : event?.detail?.data, 86 'eventLabel' : window.location.href, 87 }); 88 } 89 break; 90 case "URL": 91 Event.url(event.detail); 92 if (window.dataLayer) { 93 dataLayer.push({ 94 'event' : 'GAEvent', 95 'eventCategory' : 'Outbound', 96 'eventAction' : event?.detail?.data, 97 'eventLabel' : window.location.href, 98 }); 99 } 100 break; 101 case "EXTERNALURL": 102 Event.externalURL(event.detail); 103 if (window.dataLayer) { 104 dataLayer.push({ 105 'event' : 'GAEvent', 106 'eventCategory' : 'Outbound', 107 'eventAction' : event?.detail?.data, 108 'eventLabel' : window.location.href, 109 }); 110 } 111 break; 112 } 113 114 break; 115 116 case "TOUR": 117 switch (event.detail.action) { 118 case "VIEW": 119 Tour.view(event.detail); 120 break; 121 case "REQUEST": 122 Tour.request(event.detail); 123 break; 124 case "EMAIL": 125 Tour.email(event.detail); 126 if (window.dataLayer) { 127 dataLayer.push({ 128 'event' : 'GAEvent', 129 'eventCategory' : 'Mailto', 130 'eventAction' : event?.detail?.data, 131 'eventLabel' : window.location.href, 132 }); 133 } 134 break; 135 case "PHONE": 136 Tour.phone(event.detail); 137 if (window.dataLayer) { 138 dataLayer.push({ 139 'event' : 'GAEvent', 140 'eventCategory' : 'Tel', 141 'eventAction' : event?.detail?.data, 142 'eventLabel' : window.location.href, 143 }); 144 } 145 break; 146 case "URL": 147 Tour.url(event.detail); 148 if (window.dataLayer) { 149 dataLayer.push({ 150 'event' : 'GAEvent', 151 'eventCategory' : 'Outbound', 152 'eventAction' : event?.detail?.data, 153 'eventLabel' : window.location.href, 154 }); 155 } 156 break; 157 case "EXTERNALURL": 158 Tour.externalURL(event.detail); 159 if (window.dataLayer) { 160 dataLayer.push({ 161 'event' : 'GAEvent', 162 'eventCategory' : 'Outbound', 163 'eventAction' : event?.detail?.data, 164 'eventLabel' : window.location.href, 165 }); 166 } 167 break; 168 } 169 170 break; 171 172 case "INFRASTRUCTURE": 173 switch (event.detail.action) { 174 case "VIEW":
175 Infrastructure.view(event.detail); 176 break; 177 case "REQUEST": 178 Infrastructure.request(event.detail); 179 break; 180 case "EMAIL": 181 Infrastructure.email(event.detail); 182 if (window.dataLayer) { 183 dataLayer.push({ 184 'event' : 'GAEvent', 185 'eventCategory' : 'Mailto', 186 'eventAction' : event?.detail?.data, 187 'eventLabel' : window.location.href, 188 }); 189 } 190 break; 191 case "PHONE": 192 Infrastructure.phone(event.detail); 193 if (window.dataLayer) { 194 dataLayer.push({ 195 'event' : 'GAEvent', 196 'eventCategory' : 'Tel', 197 'eventAction' : event?.detail?.data, 198 'eventLabel' : window.location.href, 199 }); 200 } 201 break; 202 case "URL": 203 Infrastructure.url(event.detail); 204 if (window.dataLayer) { 205 dataLayer.push({ 206 'event' : 'GAEvent', 207 'eventCategory' : 'Outbound', 208 'eventAction' : event?.detail?.data, 209 'eventLabel' : window.location.href, 210 }); 211 } 212 break; 213 case "EXTERNALURL": 214 Infrastructure.externalURL(event.detail); 215 if (window.dataLayer) { 216 dataLayer.push({ 217 'event' : 'GAEvent', 218 'eventCategory' : 'Outbound', 219 'eventAction' : event?.detail?.data, 220 'eventLabel' : window.location.href, 221 }); 222 } 223 break; 224 } 225 226 break; 227 228 case "PACKAGE": 229 switch (event.detail.action) { 230 case "VIEW": 231 Package.view(event.detail); 232 break; 233 case "REQUEST": 234 Package.request(event.detail); 235 break; 236 case "EMAIL": 237 Package.email(event.detail); 238 if (window.dataLayer) { 239 dataLayer.push({ 240 'event' : 'GAEvent', 241 'eventCategory' : 'Mailto', 242 'eventAction' : event?.detail?.data, 243 'eventLabel' : window.location.href, 244 }); 245 } 246 break; 247 case "PHONE": 248 Package.phone(event.detail); 249 if (window.dataLayer) { 250 dataLayer.push({ 251 'event' : 'GAEvent', 252 'eventCategory' : 'Tel', 253 'eventAction' : event?.detail?.data, 254 'eventLabel' : window.location.href, 255 }); 256 } 257 break; 258 case "URL": 259 Package.url(event.detail); 260 if (window.dataLayer) { 261 dataLayer.push({ 262 'event' : 'GAEvent', 263 'eventCategory' : 'Outbound', 264 'eventAction' : event?.detail?.data, 265 'eventLabel' : window.location.href, 266 }); 267 } 268 break; 269 case "EXTERNALURL": 270 Package.externalURL(event.detail); 271 if (window.dataLayer) { 272 dataLayer.push({ 273 'event' : 'GAEvent', 274 'eventCategory' : 'Outbound', 275 'eventAction' : event?.detail?.data, 276 'eventLabel' : window.location.href, 277 }); 278 } 279 break; 280 } 281 282 break; 283 case "BOOKING": 284 switch (event.detail.action) { 285 case "BOOKINGSUCCESS": 286 const products = [] 287 const productsGA4 = [] 288 289 event.detail.data?.items?.map((item) => { 290 products?.push({ 291 'sku': item?.id, 292 'name': item?.title, 293 'category': item?.type, 294 'price': item?.price, 295 'quantity': item?.units}) 296 }) 297 298 event.detail.data?.items?.map((item) => { 299 productsGA4?.push({ 300 'item_id': item?.id, 301 'item_name': item?.title, 302 'item_category': item?.type, 303 'price': item?.price, 304 'quantity': item?.units}) 305 }) 306 307 window.dataLayer = window.dataLayer || []; 308 309 dataLayer.push({ 310 'event': 'purchase', 311 'ecommerce': { 312 'transaction_id': event?.detail?.data?.bookingNumber, 313 'affiliation': 'www.wagrain-kleinarl.at', 314 'value': event?.detail?.data?.price, 315 'tax': 0, 316 'shipping': 0, 317 'items': productsGA4 318 }, 319 'user_data': { 320 'email_address': event?.detail?.data?.email 321 } 322 }); 323 324 dataLayer.push({ 325 'transactionId': event?.detail?.data?.bookingNumber, 326 'transactionAffiliation': 'www.wagrain-kleinarl.at', 327 'transactionTotal': event?.detail?.data?.price, 328 'transactionTax': 0, 329 'transactionShipping': 0, 330 'transactionProducts': products 331 }); 332 333 334 break; 335 } 336 337 break; 338
339 case "BROCHURE": 340 switch (event.detail.action) { 341 case "ORDER": 342 343 if(window.dataLayer) { 344 dataLayer.push({ 345 'event' : 'GAEvent', 346 'eventCategory' : 'Prospektbestellung', 347 'eventAction' : event?.detail?.data, 348 'eventLabel' : window.location.href, 349 }); 350 } 351 352 break; 353 } 354 355 break; 356 } 357 } 358}); 359 360/** 361 * Provider 362 * View, Request, Email, Phone, Url (Website), ExternalUrl (external links e.g. Facebook, Instagram) 363 */ 364 365class Provider { 366 static view(data) { 367 // call micado tourism tracking 368 369 Tourism.provider(data); 370 } 371 372 static request(data) { 373 // call micado tourism tracking 374 375 Tourism.provider(data); 376 } 377 378 static email(data) { 379 // call micado tourism tracking 380 381 Tourism.provider(data); 382 } 383 384 static phone(data) { 385 // call micado tourism tracking 386 387 Tourism.provider(data); 388 } 389 390 static url(data) { 391 // call micado tourism tracking 392 393 Tourism.provider(data); 394 } 395 396 static externalURL(data) { 397 // call micado tourism tracking 398 399 Tourism.provider(data); 400 } 401} 402 403/** 404 * Event 405 * View, Request, Email, Phone, Url (Website), ExternalUrl (external links e.g. Facebook, Instagram) 406 */ 407 408class Event { 409 static view(data) { 410 // call micado tourism tracking 411 412 Tourism.event(data); 413 } 414 415 static request(data) { 416 // call micado tourism tracking 417 418 Tourism.event(data); 419 } 420 421 static email(data) { 422 // call micado tourism tracking 423 424 Tourism.event(data); 425 } 426 427 static phone(data) { 428 // call micado tourism tracking 429 430 Tourism.event(data); 431 } 432 433 static url(data) { 434 // call micado tourism tracking 435 436 Tourism.event(data); 437 } 438 439 static externalURL(data) { 440 // call micado tourism tracking 441 442 Tourism.event(data); 443 } 444} 445 446/** 447 * Infrastructure 448 * View, Request, Email, Phone, Url (Website), ExternalUrl (external links e.g. Facebook, Instagram) 449 */ 450 451class Infrastructure { 452 static view(data) { 453 // call micado tourism tracking 454 455 Tourism.Infrastructure(data); 456 } 457 458 static request(data) { 459 // call micado tourism tracking 460 461 Tourism.Infrastructure(data); 462 } 463 464 static email(data) { 465 // call micado tourism tracking 466 467 Tourism.Infrastructure(data); 468 } 469 470 static phone(data) { 471 // call micado tourism tracking 472 473 Tourism.Infrastructure(data); 474 } 475 476 static url(data) { 477 // call micado tourism tracking 478 479 Tourism.Infrastructure(data); 480 } 481 482 static externalURL(data) { 483 // call micado tourism tracking 484 485 Tourism.Infrastructure(data); 486 } 487} 488 489/** 490 * Package 491 * 492 */ 493 494class Package { 495 static view(data) { 496 // call micado tourism tracking 497 498 Tourism.Package(data); 499 } 500 501 static request(data) { 502 // call micado tourism tracking 503 504 Tourism.Package(data); 505 } 506 507 static email(data) { 508 // call micado tourism tracking 509 510 Tourism.Package(data); 511 } 512 513 static phone(data) { 514 // call micado tourism tracking 515 516 Tourism.Package(data); 517 } 518 519 static url(data) { 520 // call micado tourism tracking 521 522 Tourism.Package(data); 523 } 524 525 static externalURL(data) { 526 // call micado tourism tracking 527 528 Tourism.Package(data); 529 } 530} 531 532/** 533 * Tour 534 * 535 */ 536 537class Tour { 538 static view(data) { 539 // call micado tourism tracking 540 541 Tourism.tour(data); 542 } 543 544 static request(data) { 545 // call micado tourism tracking 546 547 Tourism.tour(data); 548 } 549 550 static email(data) { 551 // call micado tourism tracking 552 553 Tourism.tour(data); 554 } 555 556 static phone(data) { 557 // call micado tourism tracking 558 559 Tourism.tour(data); 560 } 561 562 static url(data) { 563 // call micado tourism tracking 564 565 Tourism.tour(data); 566 } 567 568 static externalURL(data) { 569 // call micado tourism tracking 570 571 Tourism.tour(data); 572 } 573} 574 575/** 576 * Tracking Provider Tourism 577 */ 578 579class Tourism { 580 static provider(data) { 581 if (data.action) { 582 fetch( 583 `/Micado.Tourism.Web/Micado.Tourism.Web.IO.Api.ProviderApi/TrackAction.api?providerid=${data.id}&action=${data.action}` 584 ); 585 } 586 } 587 static event(data) { 588 if (data.action) { 589 fetch( 590 `/Micado.Tourism.Web/Micado.Tourism.Web.IO.Api.EventApi/TrackAction.api?eventid=${data.id}&action=${data.action}` 591 ); 592 } 593 } 594 static tour(data) { 595 if (data.action) { 596 fetch( 597 `/Micado.Tourism.Web/Micado.Tourism.Web.IO.Api.TourApi/TrackAction.api?tourid=${data.id}&action=${data.action}` 598 ); 599 } 600 }
601 static Infrastructure(data) { 602 if (data.action) { 603 fetch( 604 `/Micado.Tourism.Web/Micado.Tourism.Web.IO.Api.InfrastructureApi/TrackAction.api?infrastructureid=${data.id}&action=${data.action}` 605 ); 606 } 607 } 608 static Package(data) { 609 if (data.action) { 610 fetch( 611 `/Micado.Tourism.Web/Micado.Tourism.Web.IO.Api.PackageApi/TrackAction.api?packageid=${data.id}&action=${data.action}` 612 ); 613 } 614 } 615}
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.