Files
seatmapv2/client/src/seatmap.ts

85 lines
2.6 KiB
TypeScript

import jQuery = require("jquery");
import * as Communication from "./modules/communication";
import * as I from "./types/types";
import { config } from "./modules/config";
import Utils from "./modules/utils";
import * as Events from "./modules/events";
require("jbox/dist/jBox.all.css");
import * as Cart from "./modules/cart";
import * as BookingBtn from "./modules/bookingButton";
import * as Child from './modules/child';
import * as UI from "./modules/ui";
window.addEventListener('load', () => {
// Inject JSC (jQuery Seat Charts)
// Inject CSS for JSC, child and jQuery dialog
Child.injectResources();
// Start message handler to be able to receive messages from parent
Communication.listenToMessages(messageHandler);
// Div with ID "containerSeatmap" is not yet ready, wait for it, then display seatmap button on trxstate 20
Utils.waitForSeatmap(BookingBtn.showSeatmapBtnParent);
// Modal overlay for cart is not yet ready, wait for it, then initialize
Utils.waitForElement("#modalCart-overlay", Cart.initModalCart);
// Add event listeners
Events.addCloseModal();
Events.addModalCart();
Events.addDropdownSeatmap();
// Change version configured in config
UI.appendVersion();
});
// Hide header when height of window is smaller than ...
// Note: Cannot determine width of inner iframe, therefore need to use window.innerHeight
window.onresize = function () {
const panzoom = config.state.panzoom;
const innerHeight = window.innerHeight;
if (innerHeight < 576) {
jQuery("#containerEventInfoRow").hide();
panzoom?.reset();
}
else if (innerHeight >= 576) {
jQuery("#containerEventInfoRow").show();
panzoom?.reset();
}
}
function messageHandler(inE: any) {
if (typeof (inE.data) !== 'string')
return;
const data: I.Message = JSON.parse(inE.data);
Utils.consoleLog(`child: received from ${data.from}`);
Utils.consoleLog(data);
switch (data.event) {
case "parent_init_venue": {
Child.initVenue();
break;
}
case "parent_init_sendVenueXML": {
Child.initSendVenueXML(inE);
break;
}
case "parent_init_sendInputsWithValue": {
Child.initSendInputsWithValue(inE);
break;
}
case "parent_sendSeatmapXML": {
Child.sendSeatmapXML(inE);
break;
}
case "parent_sendCheckoutResponse": {
Child.sendCheckoutResponse(inE);
break;
}
default:
break;
}
}