diff --git a/src/webapp/src/App.vue b/src/webapp/src/App.vue
index d217c11..e91a678 100644
--- a/src/webapp/src/App.vue
+++ b/src/webapp/src/App.vue
@@ -35,6 +35,7 @@
--accent-color: #42b983;
--hover-color: rgb(83, 83, 83);
--accent-background-hover: #4380a8;
+ --overlay-color: rgba(104, 104, 104, 0.575);
--inactive-color: rgb(190, 190, 190);
--highlight-backdrop: rgb(85, 63, 207);
}
@@ -48,6 +49,7 @@
--accent-color: #42b983;
--hover-color: rgb(83, 83, 83);
--accent-background-hover: #4380a8;
+ --overlay-color: rgba(104, 104, 104, 0.575);
--inactive-color: rgb(190, 190, 190);
--highlight-backdrop: rgb(85, 63, 207);
}
diff --git a/src/webapp/src/components/noseatplan.vue b/src/webapp/src/components/noseatplan.vue
index 1fc271a..9f31621 100644
--- a/src/webapp/src/components/noseatplan.vue
+++ b/src/webapp/src/components/noseatplan.vue
@@ -10,7 +10,7 @@
@@ -48,7 +48,7 @@ export default {
},
data () {
return {
- tickets: {},
+ tickets: { 'ticket1': { 'name': 'Ticket 1', 'id': 'ticket1', 'category': 1 }, 'ticket2': { 'name': 'Ticket 2', 'id': 'ticket2', 'category': 2 } },
eventInfo: { 'name': 'TestEvent', 'location': 'TestLocation', 'date': 'TestDate', 'RoomName': 'TestRoom', 'currency': 'CHF', 'categories': { '1': { 'price': { '1':25, '2':35 }, 'bg': 'black', 'fg': 'white', 'name': 'Category 1' }, '2': { 'price': { '1':15, '2':20 }, 'bg': 'green', 'fg': 'white', 'name': 'Category 2' } }, 'ageGroups': { '1':{ 'id': 1, 'name':'Child', 'age':'0 - 15.99' }, '2':{ 'id': 2, 'name': 'Adult', 'age': null } }, 'ageGroupCount':2, 'stage': true },
selectedSeats: {},
pricingCurrentlySelected: {},
@@ -85,8 +85,15 @@ export default {
}, 500 );
}
- cart[ this.ticketID ?? 'default' ][ 'selectedSeats' ] = data;
- sessionStorage.setItem( 'cart', JSON.stringify( cart ) );
+
+ // check if no ticket selected and prevent writing if no ticket
+ // selected to not show too many events
+ let isEmpty = sessionStorage.getItem( 'selectedTicket' ) ? false : true;
+
+ if ( !isEmpty ) {
+ cart[ this.ticketID ?? 'default' ][ 'selectedSeats' ] = data;
+ sessionStorage.setItem( 'cart', JSON.stringify( cart ) );
+ }
this.selectedSeats = cart;
this.sumUp();
@@ -107,11 +114,18 @@ export default {
back[ 'total' ] = price;
back[ 'currency' ] = this.eventInfo.currency;
- sessionStorage.setItem( 'backend', JSON.stringify( back ) );
-
this.total = price;
-
- sessionStorage.setItem( 'cart', JSON.stringify( cart ) );
+
+
+ // check if no ticket selected and prevent writing if no ticket
+ // selected to not show too many events
+ let isEmpty = sessionStorage.getItem( 'selectedTicket' ) ? false : true;
+
+ if ( !isEmpty ) {
+ console.log( 'writing' );
+ sessionStorage.setItem( 'backend', JSON.stringify( back ) );
+ sessionStorage.setItem( 'cart', JSON.stringify( cart ) );
+ }
},
closePlaceNotAvailablePopup () {
$( '#placeNotAvailable' ).hide( 300 );
diff --git a/src/webapp/src/components/seatplan.vue b/src/webapp/src/components/seatplan.vue
index 29dbe96..124cd92 100644
--- a/src/webapp/src/components/seatplan.vue
+++ b/src/webapp/src/components/seatplan.vue
@@ -6,11 +6,11 @@
{{ eventInfo.location }}
Selected tickets
-
+
{{ event.name }}
- | {{ seating[ ticket[ 'row' ] ][ 'content' ][ ticket[ 'seat' ] ][ 'name' ] }} ({{ eventInfo[ 'ageGroups' ][ ticket[ 'categoryID' ] ][ 'name' ] }}) |
+ {{ ticket.name }} ({{ ticket.ageGroup }}) |
{{ eventInfo[ 'currency' ] }} {{ ticket[ 'price' ] }} |
@@ -85,7 +85,7 @@ export default {
data () {
return {
seating: { 'r1': { 'name': 'Row 1', 'id': 'r1', 'content':{ 'S1':{ 'name': 'Seat 1', 'id': 'S1', 'available': true, 'selected': false, 'category':'1' } } }, 'r2': { 'name': 'Row 2', 'id': 'r2', 'content':{ 'S1':{ 'name': 'S1', 'id': 'S1', 'available': true, 'selected': false, 'category':'2' } } } },
- eventInfo: { 'name': 'TestEvent', 'location': 'TestLocation', 'date': 'TestDate', 'RoomName': 'TestRoom', 'currency': 'CHF', 'categories': { '1': { 'price': { '1':25, '2':35 }, 'bg': 'black', 'fg': 'white', 'name': 'Category 1' }, '2': { 'price': { '1':15, '2':20 }, 'bg': 'green', 'fg': 'white', 'name': 'Category 2' } }, 'ageGroups': { '1':{ 'id': 1, 'name':'Child', 'age':'0 - 15.99' }, '2':{ 'id': 2, 'name': 'Adult', 'age': null } }, 'ageGroupCount':2, 'stage': true },
+ eventInfo: { 'name': 'TestEvent2', 'location': 'TestLocation2', 'date': 'TestDate2', 'RoomName': 'TestRoom2', 'currency': 'CHF', 'categories': { '1': { 'price': { '1':25, '2':35 }, 'bg': 'black', 'fg': 'white', 'name': 'Category 1' }, '2': { 'price': { '1':15, '2':20 }, 'bg': 'green', 'fg': 'white', 'name': 'Category 2' } }, 'ageGroups': { '1':{ 'id': 1, 'name':'Child', 'age':'0 - 15.99' }, '2':{ 'id': 2, 'name': 'Adult', 'age': null } }, 'ageGroupCount': 2, 'stage': true, 'maxTickets': 2 },
selectedSeats: {},
pricingCurrentlySelected: {},
total: 0,
@@ -96,12 +96,12 @@ export default {
/*
This function is called whenever the data on the webpage is to be reloaded
*/
-
+
// load data from cart and set up cart if not available
let cart = sessionStorage.getItem( 'cart' ) ? JSON.parse( sessionStorage.getItem( 'cart' ) ) : {};
cart[ this.ticketID ?? 'default' ] = cart[ this.ticketID ?? 'default' ] ? cart[ this.ticketID ?? 'default' ] : { 'name': this.eventInfo.name, 'date': this.eventInfo.date, 'location': this.eventInfo.location, 'currency': this.eventInfo.currency };
cart[ this.ticketID ?? 'default' ][ 'selectedSeats' ] = cart[ this.ticketID ?? 'default' ][ 'selectedSeats' ] ? cart[ this.ticketID ?? 'default' ][ 'selectedSeats' ] : {};
-
+
let data = cart[ this.ticketID ?? 'default' ][ 'selectedSeats' ] ? cart[ this.ticketID ?? 'default' ][ 'selectedSeats' ] : {};
let showError = false
@@ -113,7 +113,7 @@ export default {
delete data[ i ];
}
}
-
+
if ( showError ) {
setTimeout( function () {
$( '#placeNotAvailable' ).show( 200 );
@@ -121,33 +121,45 @@ export default {
}, 500 );
}
- cart[ this.ticketID ?? 'default' ][ 'selectedSeats' ] = data;
- sessionStorage.setItem( 'cart', JSON.stringify( cart ) );
-
+ // check if no ticket selected and prevent writing if no ticket
+ // selected to not show too many events
+ let isEmpty = sessionStorage.getItem( 'selectedTicket' ) ? false : true;
+
+ if ( !isEmpty ) {
+ cart[ this.ticketID ?? 'default' ][ 'selectedSeats' ] = data;
+ sessionStorage.setItem( 'cart', JSON.stringify( cart ) );
+ }
+
this.selectedSeats = cart;
this.sumUp();
},
sumUp () {
// This function calculates the total price of the tickets for this event.
let cart = sessionStorage.getItem( 'cart' ) ? JSON.parse( sessionStorage.getItem( 'cart' ) ) : {};
-
+
let price = 0;
for ( let i in cart ) {
for ( let entry in cart[ i ][ 'selectedSeats' ] ) {
price += parseInt( cart[ i ][ 'selectedSeats' ][ entry ][ 'price' ] );
}
}
-
+
let back = {};
back[ 'total' ] = price;
back[ 'currency' ] = this.eventInfo.currency;
- sessionStorage.setItem( 'backend', JSON.stringify( back ) );
-
this.total = price;
- sessionStorage.setItem( 'cart', JSON.stringify( cart ) );
+
+ // check if no ticket selected and prevent writing if no ticket
+ // selected to not show too many events
+ let isEmpty = sessionStorage.getItem( 'selectedTicket' ) ? false : true;
+
+ if ( !isEmpty ) {
+ sessionStorage.setItem( 'backend', JSON.stringify( back ) );
+ sessionStorage.setItem( 'cart', JSON.stringify( cart ) );
+ }
},
closePlaceNotAvailablePopup () {
$( '#placeNotAvailable' ).hide( 300 );
diff --git a/src/webapp/src/main.js b/src/webapp/src/main.js
index a00d261..b33d3a8 100644
--- a/src/webapp/src/main.js
+++ b/src/webapp/src/main.js
@@ -23,7 +23,7 @@ if ( prod ) {
} );
} );
} else {
- userStore.setUserAuth( true );
+ // userStore.setUserAuth( true );
app.use( router );
app.mount( '#app' );
}
diff --git a/src/webapp/src/router/index.js b/src/webapp/src/router/index.js
index 3f4d695..9a45eb7 100644
--- a/src/webapp/src/router/index.js
+++ b/src/webapp/src/router/index.js
@@ -22,6 +22,7 @@ const router = createRouter( {
router.afterEach( ( to, from ) => {
document.title = to.meta.title ? to.meta.title : 'myevent';
} );
+
let UserAccountPages = [ 'account' ];
let authRequired = false;
diff --git a/src/webapp/src/stores/backendStore.js b/src/webapp/src/stores/backendStore.js
index e3575c5..962cefb 100644
--- a/src/webapp/src/stores/backendStore.js
+++ b/src/webapp/src/stores/backendStore.js
@@ -1,9 +1,11 @@
import { defineStore } from "pinia";
export const useBackendStore = defineStore ( 'backend', {
- state: () => ( { 'visitedSetupPages': {} } ),
+ state: () => ( { 'visitedSetupPages': {}, 'guestPurchase': false, 'guestPurchaseAllowed': false } ),
getters: {
getVisitedSetupPages: ( state ) => state.visitedSetupPages,
+ getIsGuestPurchase: ( state ) => state.guestPurchase,
+ getIsGuestPurchaseAllowed: ( state ) => state.guestPurchaseAllowed,
},
actions: {
addVisitedSetupPages ( page, data ) {
diff --git a/src/webapp/src/views/LoginView.vue b/src/webapp/src/views/LoginView.vue
index 6509baf..e6eba1a 100644
--- a/src/webapp/src/views/LoginView.vue
+++ b/src/webapp/src/views/LoginView.vue
@@ -15,15 +15,23 @@