// import $, { Callbacks } from 'jquery'; var $ = require("jquery"); import 'jquery-ui'; import * as I from "./types"; import Utils from './utils'; import * as communication from "./communication"; // import { getEventInfo } from './xml'; // var parseString = require('xml2js').parseString; // import axios, { AxiosPromise, AxiosResponse, Method } from 'axios'; // import axios, { AxiosResponse } from 'axios'; // import * as xml from "./xml"; // import { parseStringPromise } from 'xml2js'; // const xml2js = require('xml2js'); // const util = require('util'); // var xml2jsParser = require('xml2js').parseString; const config: I.Config = { debug: true, branch: "staging", urlSeatmapStaging: "https://staging.tickets.zinomedia.de", urlSeatmapMaster: "https://tickets.zinomedia.de", cssSeatmapMaster: "https://tickets.zinomedia.de/dist/style.css", cssSeatmapStaging: "https://staging.tickets.zinomedia.de/dist/style.css", } let inputsWithValue: I.InputsWithValue; // const checkoutParams: string[] = [ // 'APPTE', 'age_consent_is_checked', 'agency', 'cancelAndRedirectTrxState', 'cogid', 'coids', 'discount=A=IE', 'discount=A=IV', 'discountdesc=A=IE', 'discountdesc=A=IV', 'discountfees=A=IE', 'discountfees=A=IV', 'discountprice=A=IE', 'discountprice=A=IV', 'dpa_selection', 'etpgcode', 'flashDetected', 'gid', 'hbx_discount_prices', 'hbx_discounts', 'hbx_offered_pg', 'hbx_perf_codes', 'hbx_perf_sub_codes', 'hbx_pids', 'hbx_requested_pg', 'hbx_selected_tixx', 'hbx_upsell_flag', 'request_type', 'invalid_seats', 'inventory_filtering_action', 'inventory_month', 'inventory_year', 'isCapEnabled', 'is_availability_switch_from_map', 'is_ticket_exchange_request', 'ism_map_current_state_json_data', 'jcarousel_auto_off_val', 'listing_type', 'mainEventPID', 'map_coupon_code', 'mlbamsp', 'oid', 'ooids', 'orderkey', 'orgid', 'p_orgid', 'package_pids', 'parent_offer_id', 'pay_pal_token', 'pid', 'prevtrxstate', 'recapToken', 'redeem_voucher_data_event_mapping', 'replay_request', 'request_action', 's_mem_tkt_ren_retrieval', 'schedule', 'secure_trxn_enabled', 'selected_seat_indexes', 'selected_upsell_option', 'supplierCode', 'supplier_code', 'target_name_value', 'target_prev_trxstate', 'target_trxstate', 'target_url', 'timeout_seconds', 'trxstate', 'upsell_selected', 'user_context', 'valid_coupon_code_message' // ]; // const checkoutParamSerialized = encodeURIComponent(JSON.stringify(checkoutParams)) window.addEventListener('load', function () { const content: string = new XMLSerializer().serializeToString(document); getInputs(content); console.log(inputsWithValue["trxstate"]); console.log(/posturl:"(.+?)"/.test(content)); // posturl absent if pvmapse === false if (inputsWithValue["trxstate"] !== "20" || /posturl:"(.+?)"/.test(content) === false) return; Utils.inject(config.cssSeatmapStaging, "css", "body"); communication.listenToMessages(messagesHandler); getAdditionalInputs(content); console.log(inputsWithValue); getImportantNote(); modifySeatmapButton(); createDialog(); jQuery("#getVenueXML").on("click", () => { // const message: I.Message = { // message: inputsWithValue, // from: "parent", // event: "sendInputsWithValue", // date: Date.now() // }; // communication.sendMessage(message, "iframeSeatmap") // communication.sendXML(inputsWithValue["posturl"], "iframeSeatmap", "getEventInfo", "child"); }); jQuery("#foobarParent").on("click", () => { communication.sendEventToChild("parent_init_venue"); }); }); function messagesHandler(e: any) { if (typeof (e.data) !== 'string') return; const data: I.Message = JSON.parse(e.data); console.log(`parent: received from ${data.from}`); console.log(data); switch (data.event) { case "child_init_needInputsWithValue": { const message: I.Message = { message: inputsWithValue, from: "parent", event: "parent_init_sendInputsWithValue", date: Date.now() }; communication.sendMessage(message, "iframeSeatmap") break; } case "child_init_needVenueXML": { communication.sendXML(inputsWithValue["posturl"], "iframeSeatmap", "parent_init_sendVenueXML", "parent"); break; } case "child_needSeatmapXML": { const seatmapUrl: string = generateSeatmapUrl(data.message); communication.sendXML(seatmapUrl, "iframeSeatmap", "parent_sendSeatmapXML", "parent"); break; } default: break; } } function generateSeatmapUrl(seatmapId : string): string { return `${inputsWithValue["posturlRawDecoded"]}&inclseatmap=Y&seatmap=${seatmapId}`; } function getVenueLocation(): string { let span: string[] = []; jQuery(".venue span").each(function () { span.push(jQuery(this).text()); }); return span.join(", "); } function getInputs(inContent: string): void { const parsedHTML: Node[] = $.parseHTML(inContent); let inputs: { [key: string]: string } = {}; $(parsedHTML).find('input').each(function (this: any) { const name: string = this.name; const value: string = this.value; if (value !== '') inputs[name] = value; }); inputsWithValue = { ...inputsWithValue, ...inputs }; } // todo: check with different venues function getImportantNote(): void { const importantNote: string | null = $(".important_note")[0].textContent; if (importantNote?.trim().length) { const importantNoteEncoded: string = encodeURIComponent(importantNote); inputsWithValue["importantNote"] = importantNote; inputsWithValue["importantNoteEncoded"] = importantNoteEncoded; } } function createDialog(): void { jQuery("#dialogSeatmap").append($("