revised trims

This commit is contained in:
zino
2021-05-17 16:17:27 +02:00
parent 96dd6dcfc0
commit 6786d5f8f6
3 changed files with 58 additions and 46 deletions

View File

@@ -18,22 +18,6 @@ export function addSeatToState(inSelectedSeat: I.JSCSelectedSeat): void {
console.warn(`Cannot find corresponding venueXML pricescaleObj for pricescale with ID ${pricescaleID}`);
}
function addSeatsItemToState(inItem: (string | undefined)[]): void {
if (inItem.every(v => v !== ("" || undefined || null))) {
config.state.selectedSeatsArr.push(<string[]>inItem);
config.state.cartChanged = true;
}
}
function addSeatObjToState(inSelectedSeat: I.JSCSelectedSeat): void {
const seatID: string = inSelectedSeat.id;
const seatObj: I.StateJSCSelectedSeats = {
[seatID]: inSelectedSeat
}
config.state.selectedSeatsObj = { ...config.state.selectedSeatsObj, ...seatObj }
}
export function removeSeatFromState(inSelectedSeat: I.JSCSelectedSeat): void {
delete config.state.selectedSeatsObj[inSelectedSeat.id];
@@ -48,7 +32,7 @@ export function removeSeatFromState(inSelectedSeat: I.JSCSelectedSeat): void {
export function maximumSelectedSeatsReached(inSeatObj: I.JSCSelectedSeat): boolean {
const seatmap: any = config.state.seatmap;
if (config.state.selectedSeatsArr.length >= config.maxSelectedSeats) {
UI.showJBoxNotice(`Sie können maximal ${config.maxSelectedSeats} Plätze auswählen.`);
seatmap.status(inSeatObj.id, "available");
@@ -56,4 +40,20 @@ export function maximumSelectedSeatsReached(inSeatObj: I.JSCSelectedSeat): boole
}
return false;
}
function addSeatsItemToState(inItem: (string | undefined)[]): void {
if (inItem.every(v => v !== ("" || undefined || null))) {
config.state.selectedSeatsArr.push(<string[]>inItem);
config.state.cartChanged = true;
}
}
function addSeatObjToState(inSelectedSeat: I.JSCSelectedSeat): void {
const seatID: string = inSelectedSeat.id;
const seatObj: I.StateJSCSelectedSeats = {
[seatID]: inSelectedSeat
}
config.state.selectedSeatsObj = { ...config.state.selectedSeatsObj, ...seatObj }
}

View File

@@ -1,24 +1,22 @@
import { config } from "./config";
import * as I from "../types/types";
export function addTrims() {
const seatmapXML = config.state.seatmapXML;
export function addTrims(): void {
const seatmapXML: any = config.state.seatmapXML;
const trimArr: I.Trim[] = seatmapXML.seatmap[0].trims[0].trim;
trimArr.forEach(arr => {
const [xTrim, yTrim] = arr.coord[0].split(",").map(Number);
const textArr: string[] = arr.text[0].split(";").filter(Boolean);
const x = xTrim / 20;
const y = Math.round(yTrim / 21.25);
const x: number = xTrim / 20;
const y: number = Math.round(yTrim / 21.25);
console.log(`xTrim: ${xTrim} yTrim: ${yTrim} -> x: ${x} y: ${y}`);
decodeAddTrims(textArr, x, y);
decodeTrim(textArr, x, y);
});
}
function decodeAddTrims(textArr: string[], x: number, y: number) {
let i = 0;
const specialChar = new Map([
function decodeTrim(textArr: string[], x: number, y: number): void {
const specialChar: Map<string, string> = new Map([
["&#x8e", "Ä"],
["&#x99", "Ö"],
["&#x9a", "Ü"],
@@ -28,28 +26,35 @@ function decodeAddTrims(textArr: string[], x: number, y: number) {
["&#xe1", "ß"]
]);
textArr.forEach(element => {
let character;
textArr.map((element, index) => {
const character: string | undefined = specialChar.has(element) ? specialChar.get(element) : decodeNormalTrim(element);
if (specialChar.has(element))
character = specialChar.get(element);
else {
const charCode = element.replace(/^\&\#/, "0");
character = String.fromCharCode(parseInt(charCode, 16));
}
if (character)
applyTrim(x, y, i, character);
i++;
if (character) {
const trimPos: I.TrimPos = getJSCTrimPos(x, y, index);
applyTrim(character, trimPos);
}
});
}
function applyTrim(x: number, y: number, i: number, character: string) {
if (!/[^a-zA-Z0-9äöüÄÖÜß$]/.test(character)) {
const _x = (x - 1) + i;
const _y = y - 1;
console.log(`${character} -> ${_x} ${_y}`);
jQuery(".seatCharts-row")[_y].children[_x].innerHTML = `<span class="trimChar">${character}</span>`
function decodeNormalTrim(element: string): string {
const charCode: string = element.replace(/^\&\#/, "0");
return String.fromCharCode(parseInt(charCode, 16));
}
function applyTrim(inCharacter: string, inTrimPos: I.TrimPos): void {
const regex: RegExp = /[^a-zA-Z0-9äöüÄÖÜß$]/;
if (!regex.test(inCharacter)) {
console.log(`${inCharacter} -> ${inTrimPos.xJSC} ${inTrimPos.yJSC}`);
jQuery(".seatCharts-row")[inTrimPos.yJSC].children[inTrimPos.xJSC].innerHTML = `<span class="trimChar">${inCharacter}</span>`
}
}
function getJSCTrimPos(inX: number, inY: number, index: number): I.TrimPos {
return <I.TrimPos> {
x: inX,
y: inY,
xJSC: (inX - 1) + index,
yJSC: inY - 1
}
}

View File

@@ -417,5 +417,12 @@ export interface ImportantNote {
importantNoteEncoded: string;
}
export interface TrimPos {
x: number;
y: number;
xJSC: number;
yJSC: number;
}
export type TypeBuyerType = (string | undefined)[][] | undefined;
export type TypeBuyerTypeArr = (string | undefined)[];