mirror of
https://github.com/janishutz/libreevent.git
synced 2025-11-25 13:24:24 +00:00
ticket gen working + various changes
This commit is contained in:
@@ -3,11 +3,13 @@
|
||||
|
||||
- make pricing groups changeable in UI (event categories)
|
||||
|
||||
- create function that parses DB every 15 minutes and clears out junk
|
||||
- create function that parses DB every 15 minutes and clears out junk --> Also update data in db when user goes to purchase to prevent clearing during purchase
|
||||
|
||||
- Require user to confirm email before purchasing
|
||||
|
||||
- Guest purchase in the future (remove from matura shit)
|
||||
|
||||
|
||||
- Guest purchase in the future (maybe remove from matura)
|
||||
|
||||
- Create password changing endpoint (to reset forgotten pwd)
|
||||
- Add Admin profile (page to change account settings per person like changing pwd)
|
||||
@@ -19,7 +21,9 @@
|
||||
|
||||
- Implement Permission system
|
||||
|
||||
- Seat numbering
|
||||
- Seat numbering!!
|
||||
|
||||
- Add localization for date
|
||||
|
||||
|
||||
- add webpack (or any other minifying tool) to project website to decrease file size (OPTIONAL)
|
||||
@@ -169,7 +169,7 @@
|
||||
} );
|
||||
|
||||
if ( !sessionStorage.getItem( 'seatplan-history' ) ) {
|
||||
sessionStorage.setItem( 'seatplaTODO:n-history', JSON.stringify( { '1': this.scaleDown( this.draggables ) } ) );
|
||||
sessionStorage.setItem( 'seatplan-history', JSON.stringify( { '1': this.scaleDown( this.draggables ) } ) );
|
||||
}
|
||||
|
||||
let history = sessionStorage.getItem( 'seatplan-history' ) ? JSON.parse( sessionStorage.getItem( 'seatplan-history' ) ) : {};
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
|
||||
<template>
|
||||
<div id="window">
|
||||
<h2>Seat plan: {{ event.name }}</h2>
|
||||
<div class="parent" id="parent" @wheel="( e ) => { handleScroll( e ); }" @mousemove="( e ) => { handleDrag( e ); }" @mousedown="( e ) => { setOffset( e ); }">
|
||||
<div class="content-parent">
|
||||
<Vue3DraggableResizable v-for="draggable in draggables" :initW="draggable.w" :initH="draggable.h" :x="draggable.x" :y="draggable.y" :w="draggable.w" :h="draggable.h"
|
||||
@@ -42,7 +41,7 @@
|
||||
<button title="Reset zoom [=]" @click="zoom( 1 );"><span class="material-symbols-outlined">center_focus_strong</span></button>
|
||||
<button title="Zoom out [-]" @click="zoom( -0.2 )"><span class="material-symbols-outlined">zoom_out</span></button>
|
||||
</div>
|
||||
<sideCartView :cart="cart" ref="cart"></sideCartView>
|
||||
<sideCartView :cart="cart" :name="event.name" ref="cart"></sideCartView>
|
||||
<notifications ref="notification" location="topright"></notifications>
|
||||
<popups ref="popups" size="normal" @data="data => { reserveTicket( data ) }"
|
||||
@ticket="data => { standingTicketHandling( data ) }"></popups>
|
||||
@@ -156,7 +155,6 @@
|
||||
}
|
||||
|
||||
this.seatChecks();
|
||||
// TODO: Optimise for odd screen sizes and aspect ratios and fucking webkit
|
||||
// TODO: Trim scroll box to about 200px more than seatplan size
|
||||
sessionStorage.setItem( 'seatplan', JSON.stringify( this.scaleDown( this.draggables ) ) );
|
||||
window.addEventListener( 'visibilitychange', ( e ) => {
|
||||
@@ -171,15 +169,6 @@
|
||||
if ( res.status === 200 ) {
|
||||
let unavailableSeats = {};
|
||||
res.json().then( data => {
|
||||
for ( let seat in data.booked ) {
|
||||
if ( data.booked[ seat ] ) {
|
||||
if ( !unavailableSeats[ data.booked[ seat ].component ] ) {
|
||||
unavailableSeats[ data.booked[ seat ].component ];
|
||||
}
|
||||
unavailableSeats[ data.booked[ seat ].component ][ data.booked[ seat ].id ] = 'nav';
|
||||
}
|
||||
}
|
||||
|
||||
for ( let seat in data.reserved ) {
|
||||
if ( data.reserved[ seat ] ) {
|
||||
if ( !unavailableSeats[ data.reserved[ seat ].component ] ) {
|
||||
@@ -198,6 +187,15 @@
|
||||
}
|
||||
}
|
||||
|
||||
for ( let seat in data.booked ) {
|
||||
if ( data.booked[ seat ] ) {
|
||||
if ( !unavailableSeats[ data.booked[ seat ].component ] ) {
|
||||
unavailableSeats[ data.booked[ seat ].component ];
|
||||
}
|
||||
unavailableSeats[ data.booked[ seat ].component ][ data.booked[ seat ].id ] = 'nav';
|
||||
}
|
||||
}
|
||||
|
||||
let tickets = {};
|
||||
if ( this.cart[ this.event.eventID ] ) {
|
||||
tickets = this.cart[ this.event.eventID ][ 'tickets' ];
|
||||
@@ -449,8 +447,7 @@
|
||||
if ( data.data[ group ] > 0 ) {
|
||||
const options = {
|
||||
method: 'post',
|
||||
// TODO: Add correct name here as well once it is working at all
|
||||
body: JSON.stringify( { 'id': 'ticket' + data.component + '_' + group, 'component': data.component, 'ticketOption': '', 'eventID': this.event.eventID, 'count': data.data[ group ], 'category': this.draggables[ data.component ].category, 'name': 'Ticket ' } ),
|
||||
body: JSON.stringify( { 'id': 'ticket' + data.component + '_' + group, 'component': data.component, 'ticketOption': group, 'eventID': this.event.eventID, 'count': data.data[ group ], 'category': this.draggables[ data.component ].category, 'name': 'Ticket ' + data.component + ' (' + this.event.ageGroups[ group ].name + ')' } ),
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'charset': 'utf-8'
|
||||
@@ -510,7 +507,7 @@
|
||||
.parent {
|
||||
height: 80vh;
|
||||
width: 70vw;
|
||||
top: 17vh;
|
||||
top: 90px;
|
||||
left: 5vw;
|
||||
position: absolute;
|
||||
border: black 1px solid;
|
||||
@@ -548,7 +545,7 @@
|
||||
.toolbar {
|
||||
display: flex;
|
||||
position: fixed;
|
||||
top: 17vh;
|
||||
top: 90px;
|
||||
left: 5.5vw;
|
||||
}
|
||||
.toolbar button {
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
|
||||
<template>
|
||||
<div id="sideCartView">
|
||||
<h1>Seat plan: {{ name }}</h1>
|
||||
<h2>Cart</h2>
|
||||
<div v-if="Object.keys( cart ).length > 0" style="height: 100%; width: 100%;">
|
||||
<div class="scroll-wrapper">
|
||||
@@ -64,6 +65,10 @@ export default {
|
||||
'height': {
|
||||
type: Number,
|
||||
default: 17
|
||||
},
|
||||
'name': {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
data() {
|
||||
@@ -92,7 +97,7 @@ export default {
|
||||
position: fixed;
|
||||
right: 0;
|
||||
height: 100vh;
|
||||
top: 17vh;
|
||||
top: 90px;
|
||||
width: 25vw;
|
||||
background-color: var( --accent-background );
|
||||
color: var( --secondary-color );
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<p>Detailed explanation of payment gateways can be found <a href="https://libreevent.janishutz.com/docs/payments" target="_blank">here</a>. You may install more payment gateway integrations in the plugins section.</p>
|
||||
<p>Detailed explanation of payment gateways can be found <a href="https://libreevent.janishutz.com/docs/payments" target="_blank">here</a>. You may install more payment gateway integrations in the plugins section. Only one may be used at any given time.</p>
|
||||
|
||||
<div class="admin-settings">
|
||||
<h2>Admin Accounts</h2>
|
||||
@@ -103,8 +103,8 @@
|
||||
'value': 'stripe'
|
||||
},
|
||||
'adyen': {
|
||||
'displayName':'Adyen',
|
||||
'value': 'adyen'
|
||||
'displayName':'Payrexx',
|
||||
'value': 'payrexx'
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -43,6 +43,12 @@
|
||||
<input type="password" v-model="formData[ 'password2' ]" name="password2" id="password2" required><br><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label for="news">Do you want to potentially get newsletter?</label><br>
|
||||
<input type="checkbox" v-model="formData[ 'newsletter' ]" name="news" id="news"><br><br>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<!-- TODO: Ask for permission to send emails (Make question sound really optional) -->
|
||||
</form>
|
||||
|
||||
Reference in New Issue
Block a user