revised trims
This commit is contained in:
@@ -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 }
|
||||
}
|
||||
@@ -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([
|
||||
["Ž", "Ä"],
|
||||
["™", "Ö"],
|
||||
["š", "Ü"],
|
||||
@@ -28,28 +26,35 @@ function decodeAddTrims(textArr: string[], x: number, y: number) {
|
||||
["á", "ß"]
|
||||
]);
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
7
client/src/types/types.d.ts
vendored
7
client/src/types/types.d.ts
vendored
@@ -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)[];
|
||||
Reference in New Issue
Block a user