mirror of
https://github.com/janishutz/libreevent.git
synced 2025-11-25 21:34:24 +00:00
run eslint to fix errors
This commit is contained in:
73
src/webapp/main/.eslintrc.js
Normal file
73
src/webapp/main/.eslintrc.js
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
/*
|
||||||
|
* libreevent - .eslintrc.js
|
||||||
|
*
|
||||||
|
* Created by Janis Hutz 02/26/2023, Licensed under the GPL V3 License
|
||||||
|
* https://janishutz.com, development@janishutz.com
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
'env': {
|
||||||
|
'browser': true,
|
||||||
|
'commonjs': true,
|
||||||
|
'es2021': true,
|
||||||
|
'node': true
|
||||||
|
},
|
||||||
|
'extends': [
|
||||||
|
'plugin:vue/vue3-essential',
|
||||||
|
'eslint:recommended'
|
||||||
|
],
|
||||||
|
'overrides': [
|
||||||
|
],
|
||||||
|
'parserOptions': {
|
||||||
|
'ecmaVersion': 'latest'
|
||||||
|
},
|
||||||
|
'rules': {
|
||||||
|
'indent': [
|
||||||
|
'error',
|
||||||
|
4
|
||||||
|
],
|
||||||
|
'linebreak-style': [
|
||||||
|
'error',
|
||||||
|
'unix'
|
||||||
|
],
|
||||||
|
'quotes': [
|
||||||
|
'error',
|
||||||
|
'single'
|
||||||
|
],
|
||||||
|
'semi': [
|
||||||
|
'error',
|
||||||
|
'always'
|
||||||
|
],
|
||||||
|
'spaced-comment': [
|
||||||
|
'error',
|
||||||
|
'always'
|
||||||
|
],
|
||||||
|
'arrow-spacing': [
|
||||||
|
'error',
|
||||||
|
{ 'before': true, 'after': true }
|
||||||
|
],
|
||||||
|
'func-call-spacing': [
|
||||||
|
'error',
|
||||||
|
'never'
|
||||||
|
],
|
||||||
|
'keyword-spacing': [
|
||||||
|
'error',
|
||||||
|
{ 'before': true, 'after': true }
|
||||||
|
],
|
||||||
|
'key-spacing': [
|
||||||
|
'error',
|
||||||
|
{ 'mode': 'strict' }
|
||||||
|
],
|
||||||
|
'space-before-blocks': [
|
||||||
|
'error',
|
||||||
|
'always'
|
||||||
|
],
|
||||||
|
'space-in-parens': [
|
||||||
|
'error',
|
||||||
|
'always'
|
||||||
|
],
|
||||||
|
'no-var': 'error'
|
||||||
|
}
|
||||||
|
};
|
||||||
2103
src/webapp/main/package-lock.json
generated
2103
src/webapp/main/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -5,7 +5,8 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite --host",
|
"dev": "vite --host",
|
||||||
"preview": "vite preview --host",
|
"preview": "vite preview --host",
|
||||||
"build": "vite build"
|
"build": "vite build",
|
||||||
|
"lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@pdfme/generator": "^1.2.3",
|
"@pdfme/generator": "^1.2.3",
|
||||||
@@ -18,6 +19,8 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@vitejs/plugin-vue": "^1.10.2",
|
"@vitejs/plugin-vue": "^1.10.2",
|
||||||
"vite": "^2.5.4"
|
"vite": "^2.5.4",
|
||||||
|
"eslint": "^8.39.0",
|
||||||
|
"eslint-plugin-vue": "^9.17.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
4
src/webapp/main/public/coloris.min.js
vendored
4
src/webapp/main/public/coloris.min.js
vendored
File diff suppressed because one or more lines are too long
@@ -169,7 +169,7 @@ export default {
|
|||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
theme: '',
|
theme: '',
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
changeTheme () {
|
changeTheme () {
|
||||||
@@ -211,5 +211,5 @@ solution. Your help is greatly appreciated by the team as well as all its users!
|
|||||||
=> https://libreevent.janishutz.com/
|
=> https://libreevent.janishutz.com/
|
||||||
` );
|
` );
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -45,11 +45,11 @@ export default {
|
|||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
tickets: { 'ticket1': 20, 'ticket2': 20 },
|
tickets: { 'ticket1': 20, 'ticket2': 20 },
|
||||||
event: { 'name': 'TestEvent2', 'location': 'TestLocation2', 'eventID': 'test2', 'date': '2023-07-15', 'currency': 'CHF', 'categories': { '1': { 'price': { '1':25, '2':35 }, 'bg': 'black', 'fg': 'white', 'name': 'Category 1', 'id': 1 }, '2': { 'price': { '1':15, '2':20 }, 'bg': 'green', 'fg': 'white', 'name': 'Category 2', 'id': 2 } }, 'ageGroups': { '1':{ 'id': 1, 'name':'Child', 'age':'0 - 15.99' }, '2':{ 'id': 2, 'name': 'Adult' } }, 'maxTickets': 2 },
|
event: { 'name': 'TestEvent2', 'location': 'TestLocation2', 'eventID': 'test2', 'date': '2023-07-15', 'currency': 'CHF', 'categories': { '1': { 'price': { '1': 25, '2': 35 }, 'bg': 'black', 'fg': 'white', 'name': 'Category 1', 'id': 1 }, '2': { 'price': { '1': 15, '2': 20 }, 'bg': 'green', 'fg': 'white', 'name': 'Category 2', 'id': 2 } }, 'ageGroups': { '1': { 'id': 1, 'name': 'Child', 'age': '0 - 15.99' }, '2': { 'id': 2, 'name': 'Adult' } }, 'maxTickets': 2 },
|
||||||
cart: {},
|
cart: {},
|
||||||
selectedTickets: {},
|
selectedTickets: {},
|
||||||
maxTickets: 10,
|
maxTickets: 10,
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
ticketHandling( id, option, operation ) {
|
ticketHandling( id, option, operation ) {
|
||||||
@@ -245,7 +245,7 @@ export default {
|
|||||||
this.loadTickets();
|
this.loadTickets();
|
||||||
this.seatChecks();
|
this.seatChecks();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
name: 'notifications',
|
name: 'notifications',
|
||||||
props: {
|
props: {
|
||||||
location: {
|
location: {
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
currentID: { 'critical': 0, 'medium': 1000, 'low': 100000 },
|
currentID: { 'critical': 0, 'medium': 1000, 'low': 100000 },
|
||||||
displayTimeCurrentNotification: 0,
|
displayTimeCurrentNotification: 0,
|
||||||
notificationScheduler: null,
|
notificationScheduler: null,
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
createNotification( message, showDuration, messageType, priority ) {
|
createNotification( message, showDuration, messageType, priority ) {
|
||||||
@@ -121,7 +121,7 @@
|
|||||||
unmounted ( ) {
|
unmounted ( ) {
|
||||||
clearInterval( this.notificationScheduler );
|
clearInterval( this.notificationScheduler );
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|||||||
@@ -93,8 +93,8 @@
|
|||||||
<!-- Options to be passed in: html, settings (for settings component), strings, confirm, dropdowns, selection -->
|
<!-- Options to be passed in: html, settings (for settings component), strings, confirm, dropdowns, selection -->
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import settings from '@/components/settings/settings.vue';
|
import settings from '@/components/settings/settings.vue';
|
||||||
export default {
|
export default {
|
||||||
name: 'popups',
|
name: 'popups',
|
||||||
components: {
|
components: {
|
||||||
settings,
|
settings,
|
||||||
@@ -110,7 +110,7 @@
|
|||||||
contentType: 'dropdown',
|
contentType: 'dropdown',
|
||||||
data: {},
|
data: {},
|
||||||
info: '',
|
info: '',
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
closePopup( message ) {
|
closePopup( message ) {
|
||||||
@@ -167,7 +167,7 @@
|
|||||||
$( '#popup-backdrop' ).fadeIn( 300 );
|
$( '#popup-backdrop' ).fadeIn( 300 );
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|||||||
@@ -200,34 +200,34 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
draggables: {
|
draggables: {
|
||||||
type: Object,
|
type: Object,
|
||||||
"default": {}
|
'default': {}
|
||||||
},
|
},
|
||||||
scaleFactor: {
|
scaleFactor: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1,
|
'default': 1,
|
||||||
},
|
},
|
||||||
generalSettings: {
|
generalSettings: {
|
||||||
type: Object,
|
type: Object,
|
||||||
"default": {},
|
'default': {},
|
||||||
},
|
},
|
||||||
zoomFactor: {
|
zoomFactor: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1
|
'default': 1
|
||||||
},
|
},
|
||||||
active: {
|
active: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1,
|
'default': 1,
|
||||||
},
|
},
|
||||||
historyPos: {
|
historyPos: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 0,
|
'default': 0,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
internal: {},
|
internal: {},
|
||||||
categories: { '1':{} },
|
categories: { '1': {} },
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
loadInternal () {
|
loadInternal () {
|
||||||
@@ -282,7 +282,7 @@ export default {
|
|||||||
created () {
|
created () {
|
||||||
this.loadInternal();
|
this.loadInternal();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|||||||
@@ -47,18 +47,18 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Vue3DraggableResizable from 'vue3-draggable-resizable';
|
import Vue3DraggableResizable from 'vue3-draggable-resizable';
|
||||||
import properties from '@/components/seatplan/editor/properties.vue';
|
import properties from '@/components/seatplan/editor/properties.vue';
|
||||||
import circularSeatplanComponent from '@/components/seatplan/seatplanComponents/seats/circular.vue';
|
import circularSeatplanComponent from '@/components/seatplan/seatplanComponents/seats/circular.vue';
|
||||||
import rectangularSeatplanComponent from '@/components/seatplan/seatplanComponents/seats/rectangular.vue';
|
import rectangularSeatplanComponent from '@/components/seatplan/seatplanComponents/seats/rectangular.vue';
|
||||||
import trapezoidSeatplanComponent from '@/components/seatplan/seatplanComponents/seats/trapezoid.vue';
|
import trapezoidSeatplanComponent from '@/components/seatplan/seatplanComponents/seats/trapezoid.vue';
|
||||||
import stagesSeatplanComponent from '@/components/seatplan/seatplanComponents/stages.vue';
|
import stagesSeatplanComponent from '@/components/seatplan/seatplanComponents/stages.vue';
|
||||||
import standingSeatplanComponent from '@/components/seatplan/seatplanComponents/standing.vue';
|
import standingSeatplanComponent from '@/components/seatplan/seatplanComponents/standing.vue';
|
||||||
import textFieldSeatplanComponent from '@/components/seatplan/seatplanComponents/textField.vue';
|
import textFieldSeatplanComponent from '@/components/seatplan/seatplanComponents/textField.vue';
|
||||||
import notifications from '@/components/notifications/notifications.vue';
|
import notifications from '@/components/notifications/notifications.vue';
|
||||||
import 'vue3-draggable-resizable/dist/Vue3DraggableResizable.css';
|
import 'vue3-draggable-resizable/dist/Vue3DraggableResizable.css';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
'name': 'window',
|
'name': 'window',
|
||||||
components: {
|
components: {
|
||||||
Vue3DraggableResizable,
|
Vue3DraggableResizable,
|
||||||
@@ -74,7 +74,7 @@
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
active: 0,
|
active: 0,
|
||||||
draggables: { 1: { 'x': 100, 'y':100, 'h': 100, 'w': 250, 'active': false, 'draggable': true, 'resizable': true, 'id': 1, 'origin': 1, 'shape':'rectangular', 'type': 'seat', 'startingRow': 1, 'seatNumberingPosition': 1, 'sector': 'A', 'text': { 'text': 'TestText', 'textSize': 20, 'colour': '#20FFFF' }, 'numberingDirection': 'left', 'seatNumberingPosition': 1, 'category': '1' } },
|
draggables: { 1: { 'x': 100, 'y': 100, 'h': 100, 'w': 250, 'active': false, 'draggable': true, 'resizable': true, 'id': 1, 'origin': 1, 'shape': 'rectangular', 'type': 'seat', 'startingRow': 1, 'seatNumberingPosition': 1, 'sector': 'A', 'text': { 'text': 'TestText', 'textSize': 20, 'colour': '#20FFFF' }, 'numberingDirection': 'left', 'seatNumberingPosition': 1, 'category': '1' } },
|
||||||
available: { 'redo': false, 'undo': false },
|
available: { 'redo': false, 'undo': false },
|
||||||
scaleFactor: 1,
|
scaleFactor: 1,
|
||||||
sizePoll: null,
|
sizePoll: null,
|
||||||
@@ -84,7 +84,7 @@
|
|||||||
generalSettings: { 'namingScheme': 'numeric' },
|
generalSettings: { 'namingScheme': 'numeric' },
|
||||||
seatCountInfo: { 'details': {}, 'count': 0 },
|
seatCountInfo: { 'details': {}, 'count': 0 },
|
||||||
autoSave: null,
|
autoSave: null,
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
/*
|
/*
|
||||||
@@ -139,7 +139,7 @@
|
|||||||
this.autoSave = setInterval( () => {
|
this.autoSave = setInterval( () => {
|
||||||
const options = {
|
const options = {
|
||||||
method: 'post',
|
method: 'post',
|
||||||
body: JSON.stringify( { 'data':{ 'seatInfo': this.seatCountInfo, 'data': this.scaleDown( this.draggables ) }, 'location': sessionStorage.getItem( 'locationID' ) } ),
|
body: JSON.stringify( { 'data': { 'seatInfo': this.seatCountInfo, 'data': this.scaleDown( this.draggables ) }, 'location': sessionStorage.getItem( 'locationID' ) } ),
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
'charset': 'utf-8'
|
'charset': 'utf-8'
|
||||||
@@ -233,7 +233,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
scaleDown ( valueArray ) {
|
scaleDown ( valueArray ) {
|
||||||
const allowedAttributes = [ 'w', 'h', 'x', 'y' ]
|
const allowedAttributes = [ 'w', 'h', 'x', 'y' ];
|
||||||
let returnArray = {};
|
let returnArray = {};
|
||||||
for ( let entry in valueArray ) {
|
for ( let entry in valueArray ) {
|
||||||
returnArray[ entry ] = {};
|
returnArray[ entry ] = {};
|
||||||
@@ -248,7 +248,7 @@
|
|||||||
return returnArray;
|
return returnArray;
|
||||||
},
|
},
|
||||||
scaleUp ( valueArray ) {
|
scaleUp ( valueArray ) {
|
||||||
const allowedAttributes = [ 'w', 'h', 'x', 'y' ]
|
const allowedAttributes = [ 'w', 'h', 'x', 'y' ];
|
||||||
let returnArray = {};
|
let returnArray = {};
|
||||||
for ( let entry in valueArray ) {
|
for ( let entry in valueArray ) {
|
||||||
returnArray[ entry ] = {};
|
returnArray[ entry ] = {};
|
||||||
@@ -325,7 +325,7 @@
|
|||||||
sessionStorage.setItem( 'seatplan', JSON.stringify( this.scaleDown( this.draggables ) ) );
|
sessionStorage.setItem( 'seatplan', JSON.stringify( this.scaleDown( this.draggables ) ) );
|
||||||
const options = {
|
const options = {
|
||||||
method: 'post',
|
method: 'post',
|
||||||
body: JSON.stringify( { 'data':{ 'seatInfo': this.seatCountInfo, 'data': this.scaleDown( this.draggables ) }, 'location': sessionStorage.getItem( 'locationID' ) } ),
|
body: JSON.stringify( { 'data': { 'seatInfo': this.seatCountInfo, 'data': this.scaleDown( this.draggables ) }, 'location': sessionStorage.getItem( 'locationID' ) } ),
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
'charset': 'utf-8'
|
'charset': 'utf-8'
|
||||||
@@ -351,7 +351,7 @@
|
|||||||
let deployNotification = this.$refs.notification.createNotification( 'Deploying...', 5, 'progress', 'normal' );
|
let deployNotification = this.$refs.notification.createNotification( 'Deploying...', 5, 'progress', 'normal' );
|
||||||
const options = {
|
const options = {
|
||||||
method: 'post',
|
method: 'post',
|
||||||
body: JSON.stringify( { 'data':{ 'seatInfo': this.seatCountInfo, 'data': this.scaleDown( this.draggables ) }, 'location': sessionStorage.getItem( 'locationID' ) } ),
|
body: JSON.stringify( { 'data': { 'seatInfo': this.seatCountInfo, 'data': this.scaleDown( this.draggables ) }, 'location': sessionStorage.getItem( 'locationID' ) } ),
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
'charset': 'utf-8'
|
'charset': 'utf-8'
|
||||||
@@ -370,7 +370,7 @@
|
|||||||
} );
|
} );
|
||||||
},
|
},
|
||||||
addNewElement () {
|
addNewElement () {
|
||||||
this.draggables[ Object.keys( this.draggables ).length + 1 ] = { 'x': 100, 'y':100, 'h': 100, 'w': 250, 'active': false, 'draggable': true, 'resizable': true, 'id': ( Object.keys( this.draggables ).length + 1 ), 'origin': 1, 'shape':'rectangular', 'type': 'seat', 'startingRow': 1, 'seatNumberingPosition': Object.keys( this.draggables ).length, 'sector': 'A', 'text': { 'text': 'TestText', 'textSize': 20, 'colour': '#20FFFF' }, 'ticketCount': 1, 'numberingDirection': 'left', 'category': '1' };
|
this.draggables[ Object.keys( this.draggables ).length + 1 ] = { 'x': 100, 'y': 100, 'h': 100, 'w': 250, 'active': false, 'draggable': true, 'resizable': true, 'id': ( Object.keys( this.draggables ).length + 1 ), 'origin': 1, 'shape': 'rectangular', 'type': 'seat', 'startingRow': 1, 'seatNumberingPosition': Object.keys( this.draggables ).length, 'sector': 'A', 'text': { 'text': 'TestText', 'textSize': 20, 'colour': '#20FFFF' }, 'ticketCount': 1, 'numberingDirection': 'left', 'category': '1' };
|
||||||
this.saveHistory();
|
this.saveHistory();
|
||||||
document.getElementById( 'parent' ).scrollTop = 0;
|
document.getElementById( 'parent' ).scrollTop = 0;
|
||||||
document.getElementById( 'parent' ).scrollLeft = 0;
|
document.getElementById( 'parent' ).scrollLeft = 0;
|
||||||
@@ -444,7 +444,7 @@
|
|||||||
clearInterval( this.sizePoll );
|
clearInterval( this.sizePoll );
|
||||||
clearInterval( this.autoSave );
|
clearInterval( this.autoSave );
|
||||||
},
|
},
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|||||||
@@ -27,33 +27,33 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
h: {
|
h: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 100,
|
'default': 100,
|
||||||
},
|
},
|
||||||
w: {
|
w: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 200,
|
'default': 200,
|
||||||
},
|
},
|
||||||
scaleFactor: {
|
scaleFactor: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1,
|
'default': 1,
|
||||||
},
|
},
|
||||||
origin: {
|
origin: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1,
|
'default': 1,
|
||||||
},
|
},
|
||||||
startingRow: {
|
startingRow: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1,
|
'default': 1,
|
||||||
},
|
},
|
||||||
id: {
|
id: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1
|
'default': 1
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
seats: {},
|
seats: {},
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
calculateChairs () {
|
calculateChairs () {
|
||||||
@@ -114,6 +114,6 @@ export default {
|
|||||||
created() {
|
created() {
|
||||||
this.calculateChairs();
|
this.calculateChairs();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -27,29 +27,29 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
h: {
|
h: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 100,
|
'default': 100,
|
||||||
},
|
},
|
||||||
w: {
|
w: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 200,
|
'default': 200,
|
||||||
},
|
},
|
||||||
scaleFactor: {
|
scaleFactor: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1,
|
'default': 1,
|
||||||
},
|
},
|
||||||
origin: {
|
origin: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1,
|
'default': 1,
|
||||||
},
|
},
|
||||||
id: {
|
id: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1
|
'default': 1
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
seats: {},
|
seats: {},
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
calculateChairs () {
|
calculateChairs () {
|
||||||
@@ -104,6 +104,6 @@ export default {
|
|||||||
created() {
|
created() {
|
||||||
this.calculateChairs();
|
this.calculateChairs();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -27,33 +27,33 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
h: {
|
h: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 100,
|
'default': 100,
|
||||||
},
|
},
|
||||||
w: {
|
w: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 200,
|
'default': 200,
|
||||||
},
|
},
|
||||||
scaleFactor: {
|
scaleFactor: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1,
|
'default': 1,
|
||||||
},
|
},
|
||||||
origin: {
|
origin: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1,
|
'default': 1,
|
||||||
},
|
},
|
||||||
startingRow: {
|
startingRow: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1,
|
'default': 1,
|
||||||
},
|
},
|
||||||
id: {
|
id: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1
|
'default': 1
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
seats: {},
|
seats: {},
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
calculateChairs () {
|
calculateChairs () {
|
||||||
@@ -63,7 +63,7 @@ export default {
|
|||||||
let h = Math.round( this.h / this.scaleFactor );
|
let h = Math.round( this.h / this.scaleFactor );
|
||||||
const size = 33;
|
const size = 33;
|
||||||
let side = Math.min( w, h ) + 20;
|
let side = Math.min( w, h ) + 20;
|
||||||
let heightTriangle = Math.floor( Math.sqrt( side ** 2 - ( Math.sqrt( side ** 2 * 2 ) / 2 ) ) )
|
let heightTriangle = Math.floor( Math.sqrt( side ** 2 - ( Math.sqrt( side ** 2 * 2 ) / 2 ) ) );
|
||||||
let sideOffset = size / Math.sqrt( 2 );
|
let sideOffset = size / Math.sqrt( 2 );
|
||||||
let count = Math.floor( heightTriangle / ( sideOffset * 2 ) );
|
let count = Math.floor( heightTriangle / ( sideOffset * 2 ) );
|
||||||
const angle = Math.PI / 4;
|
const angle = Math.PI / 4;
|
||||||
@@ -117,6 +117,6 @@ export default {
|
|||||||
created() {
|
created() {
|
||||||
this.calculateChairs();
|
this.calculateChairs();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -66,11 +66,11 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
origin: {
|
origin: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1,
|
'default': 1,
|
||||||
},
|
},
|
||||||
shape: {
|
shape: {
|
||||||
type: String,
|
type: String,
|
||||||
"default": "rectangular",
|
'default': 'rectangular',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
@@ -78,7 +78,7 @@ export default {
|
|||||||
style: 'border-style: none none solid none',
|
style: 'border-style: none none solid none',
|
||||||
circularStyle: 'top: 0; left 100%;',
|
circularStyle: 'top: 0; left 100%;',
|
||||||
trapezoidStyle: 'rotate: 45deg',
|
trapezoidStyle: 'rotate: 45deg',
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
updateOrigin () {
|
updateOrigin () {
|
||||||
@@ -109,6 +109,6 @@ export default {
|
|||||||
created() {
|
created() {
|
||||||
this.updateOrigin();
|
this.updateOrigin();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -66,11 +66,11 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
origin: {
|
origin: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1,
|
'default': 1,
|
||||||
},
|
},
|
||||||
shape: {
|
shape: {
|
||||||
type: String,
|
type: String,
|
||||||
"default": "rectangular",
|
'default': 'rectangular',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
@@ -78,7 +78,7 @@ export default {
|
|||||||
style: 'border-style: none none solid none',
|
style: 'border-style: none none solid none',
|
||||||
circularStyle: 'top: 0; left 100%;',
|
circularStyle: 'top: 0; left 100%;',
|
||||||
trapezoidStyle: 'rotate: 45deg',
|
trapezoidStyle: 'rotate: 45deg',
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
updateOrigin () {
|
updateOrigin () {
|
||||||
@@ -109,6 +109,6 @@ export default {
|
|||||||
created() {
|
created() {
|
||||||
this.updateOrigin();
|
this.updateOrigin();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -19,29 +19,29 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
origin: {
|
origin: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1,
|
'default': 1,
|
||||||
},
|
},
|
||||||
text: {
|
text: {
|
||||||
type: String,
|
type: String,
|
||||||
"default": "Untitled",
|
'default': 'Untitled',
|
||||||
},
|
},
|
||||||
textSize: {
|
textSize: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 20,
|
'default': 20,
|
||||||
},
|
},
|
||||||
scaleFactor: {
|
scaleFactor: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1,
|
'default': 1,
|
||||||
},
|
},
|
||||||
colour: {
|
colour: {
|
||||||
type: String,
|
type: String,
|
||||||
"default": '#000000',
|
'default': '#000000',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
style: 'font-size: 20pt; rotate: 0deg; color: #000000',
|
style: 'font-size: 20pt; rotate: 0deg; color: #000000',
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
updateStyle () {
|
updateStyle () {
|
||||||
@@ -65,5 +65,5 @@ export default {
|
|||||||
created() {
|
created() {
|
||||||
this.updateStyle();
|
this.updateStyle();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
@@ -34,37 +34,37 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
h: {
|
h: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 100,
|
'default': 100,
|
||||||
},
|
},
|
||||||
w: {
|
w: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 200,
|
'default': 200,
|
||||||
},
|
},
|
||||||
scaleFactor: {
|
scaleFactor: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1,
|
'default': 1,
|
||||||
},
|
},
|
||||||
origin: {
|
origin: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1,
|
'default': 1,
|
||||||
},
|
},
|
||||||
startingRow: {
|
startingRow: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1,
|
'default': 1,
|
||||||
},
|
},
|
||||||
data: {
|
data: {
|
||||||
type: Object,
|
type: Object,
|
||||||
"default": { 'sector': 'A', 'sectorCount': 1, 'unavailableSeats': { 'secAr0s0': 'nav' }, 'categoryInfo': { 'pricing': { '1': { 'displayName': 'Adults - CHF 20.-', 'value': '1', 'price': 20 }, '2': { 'displayName': 'Child (0 - 15.99y) - CHF 15.-', 'value': '2', 'price': 15 } } } }
|
'default': { 'sector': 'A', 'sectorCount': 1, 'unavailableSeats': { 'secAr0s0': 'nav' }, 'categoryInfo': { 'pricing': { '1': { 'displayName': 'Adults - CHF 20.-', 'value': '1', 'price': 20 }, '2': { 'displayName': 'Child (0 - 15.99y) - CHF 15.-', 'value': '2', 'price': 15 } } } }
|
||||||
},
|
},
|
||||||
id: {
|
id: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1,
|
'default': 1,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
seats: {},
|
seats: {},
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
calculateChairs () {
|
calculateChairs () {
|
||||||
@@ -175,6 +175,6 @@ export default {
|
|||||||
created() {
|
created() {
|
||||||
this.calculateChairs();
|
this.calculateChairs();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -34,41 +34,41 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
h: {
|
h: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 100,
|
'default': 100,
|
||||||
},
|
},
|
||||||
w: {
|
w: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 200,
|
'default': 200,
|
||||||
},
|
},
|
||||||
scaleFactor: {
|
scaleFactor: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1,
|
'default': 1,
|
||||||
},
|
},
|
||||||
startingRow: {
|
startingRow: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1,
|
'default': 1,
|
||||||
},
|
},
|
||||||
origin: {
|
origin: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1,
|
'default': 1,
|
||||||
},
|
},
|
||||||
data: {
|
data: {
|
||||||
type: Object,
|
type: Object,
|
||||||
"default": { 'sector': 'A', 'sectorCount': 1, 'unavailableSeats': { 'secAr0s0': 'nav' }, 'categoryInfo': { 'pricing': { '1': { 'displayName': 'Adults - CHF 20.-', 'value': '1', 'price': 20 }, '2': { 'displayName': 'Child (0 - 15.99y) - CHF 15.-', 'value': '2', 'price': 15 } } } }
|
'default': { 'sector': 'A', 'sectorCount': 1, 'unavailableSeats': { 'secAr0s0': 'nav' }, 'categoryInfo': { 'pricing': { '1': { 'displayName': 'Adults - CHF 20.-', 'value': '1', 'price': 20 }, '2': { 'displayName': 'Child (0 - 15.99y) - CHF 15.-', 'value': '2', 'price': 15 } } } }
|
||||||
},
|
},
|
||||||
id: {
|
id: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1,
|
'default': 1,
|
||||||
},
|
},
|
||||||
unavailable: {
|
unavailable: {
|
||||||
type: Object,
|
type: Object,
|
||||||
"default": {}
|
'default': {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
seats: {},
|
seats: {},
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
calculateChairs () {
|
calculateChairs () {
|
||||||
@@ -170,6 +170,6 @@ export default {
|
|||||||
created() {
|
created() {
|
||||||
this.calculateChairs();
|
this.calculateChairs();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -34,37 +34,37 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
h: {
|
h: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 100,
|
'default': 100,
|
||||||
},
|
},
|
||||||
w: {
|
w: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 200,
|
'default': 200,
|
||||||
},
|
},
|
||||||
scaleFactor: {
|
scaleFactor: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1,
|
'default': 1,
|
||||||
},
|
},
|
||||||
origin: {
|
origin: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1,
|
'default': 1,
|
||||||
},
|
},
|
||||||
startingRow: {
|
startingRow: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1,
|
'default': 1,
|
||||||
},
|
},
|
||||||
data: {
|
data: {
|
||||||
type: Object,
|
type: Object,
|
||||||
"default": { 'sector': 'A', 'sectorCount': 1, 'unavailableSeats': { 'secAr0s0': 'nav' }, 'categoryInfo': { 'pricing': { '1': { 'displayName': 'Adults - CHF 20.-', 'value': '1', 'price': 20 }, '2': { 'displayName': 'Child (0 - 15.99y) - CHF 15.-', 'value': '2', 'price': 15 } } } }
|
'default': { 'sector': 'A', 'sectorCount': 1, 'unavailableSeats': { 'secAr0s0': 'nav' }, 'categoryInfo': { 'pricing': { '1': { 'displayName': 'Adults - CHF 20.-', 'value': '1', 'price': 20 }, '2': { 'displayName': 'Child (0 - 15.99y) - CHF 15.-', 'value': '2', 'price': 15 } } } }
|
||||||
},
|
},
|
||||||
id: {
|
id: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1,
|
'default': 1,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
seats: {},
|
seats: {},
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
calculateChairs () {
|
calculateChairs () {
|
||||||
@@ -87,7 +87,7 @@ export default {
|
|||||||
let h = Math.round( this.h / this.scaleFactor );
|
let h = Math.round( this.h / this.scaleFactor );
|
||||||
const size = 33;
|
const size = 33;
|
||||||
let side = Math.min( w, h ) + 20;
|
let side = Math.min( w, h ) + 20;
|
||||||
let heightTriangle = Math.floor( Math.sqrt( side ** 2 - ( Math.sqrt( side ** 2 * 2 ) / 2 ) ) )
|
let heightTriangle = Math.floor( Math.sqrt( side ** 2 - ( Math.sqrt( side ** 2 * 2 ) / 2 ) ) );
|
||||||
let sideOffset = size / Math.sqrt( 2 );
|
let sideOffset = size / Math.sqrt( 2 );
|
||||||
let count = Math.floor( heightTriangle / ( sideOffset * 2 ) );
|
let count = Math.floor( heightTriangle / ( sideOffset * 2 ) );
|
||||||
const angle = Math.PI / 4;
|
const angle = Math.PI / 4;
|
||||||
@@ -178,6 +178,6 @@ export default {
|
|||||||
created() {
|
created() {
|
||||||
this.calculateChairs();
|
this.calculateChairs();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -66,11 +66,11 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
origin: {
|
origin: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1,
|
'default': 1,
|
||||||
},
|
},
|
||||||
shape: {
|
shape: {
|
||||||
type: String,
|
type: String,
|
||||||
"default": "rectangular",
|
'default': 'rectangular',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
@@ -78,7 +78,7 @@ export default {
|
|||||||
style: 'border-style: none none solid none',
|
style: 'border-style: none none solid none',
|
||||||
circularStyle: 'top: 0; left 100%;',
|
circularStyle: 'top: 0; left 100%;',
|
||||||
trapezoidStyle: 'rotate: 45deg',
|
trapezoidStyle: 'rotate: 45deg',
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
updateOrigin () {
|
updateOrigin () {
|
||||||
@@ -109,6 +109,6 @@ export default {
|
|||||||
created() {
|
created() {
|
||||||
this.updateOrigin();
|
this.updateOrigin();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -65,15 +65,15 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
origin: {
|
origin: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1,
|
'default': 1,
|
||||||
},
|
},
|
||||||
shape: {
|
shape: {
|
||||||
type: String,
|
type: String,
|
||||||
"default": "rectangular",
|
'default': 'rectangular',
|
||||||
},
|
},
|
||||||
color: {
|
color: {
|
||||||
type: Object,
|
type: Object,
|
||||||
"default": { 'fg': '#FFFFFF' }
|
'default': { 'fg': '#FFFFFF' }
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
@@ -81,7 +81,7 @@ export default {
|
|||||||
style: 'border-style: none none solid none;',
|
style: 'border-style: none none solid none;',
|
||||||
circularStyle: 'top: 0; left 100%;',
|
circularStyle: 'top: 0; left 100%;',
|
||||||
trapezoidStyle: 'rotate: 45deg',
|
trapezoidStyle: 'rotate: 45deg',
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
updateOrigin () {
|
updateOrigin () {
|
||||||
@@ -115,6 +115,6 @@ export default {
|
|||||||
created() {
|
created() {
|
||||||
this.updateOrigin();
|
this.updateOrigin();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -19,29 +19,29 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
origin: {
|
origin: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1,
|
'default': 1,
|
||||||
},
|
},
|
||||||
text: {
|
text: {
|
||||||
type: String,
|
type: String,
|
||||||
"default": "Untitled",
|
'default': 'Untitled',
|
||||||
},
|
},
|
||||||
textSize: {
|
textSize: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 20,
|
'default': 20,
|
||||||
},
|
},
|
||||||
scaleFactor: {
|
scaleFactor: {
|
||||||
type: Number,
|
type: Number,
|
||||||
"default": 1,
|
'default': 1,
|
||||||
},
|
},
|
||||||
colour: {
|
colour: {
|
||||||
type: String,
|
type: String,
|
||||||
"default": '#000000',
|
'default': '#000000',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
style: 'font-size: 20pt; rotate: 0deg; color: #000000',
|
style: 'font-size: 20pt; rotate: 0deg; color: #000000',
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
updateStyle () {
|
updateStyle () {
|
||||||
@@ -65,5 +65,5 @@ export default {
|
|||||||
created() {
|
created() {
|
||||||
this.updateStyle();
|
this.updateStyle();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
@@ -50,19 +50,19 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Vue3DraggableResizable from 'vue3-draggable-resizable';
|
import Vue3DraggableResizable from 'vue3-draggable-resizable';
|
||||||
import circularSeatplanComponent from '@/components/seatplan/userApp/seatplanComponents/seats/circular.vue';
|
import circularSeatplanComponent from '@/components/seatplan/userApp/seatplanComponents/seats/circular.vue';
|
||||||
import rectangularSeatplanComponent from '@/components/seatplan/userApp/seatplanComponents/seats/rectangular.vue';
|
import rectangularSeatplanComponent from '@/components/seatplan/userApp/seatplanComponents/seats/rectangular.vue';
|
||||||
import trapezoidSeatplanComponent from '@/components/seatplan/userApp/seatplanComponents/seats/trapezoid.vue';
|
import trapezoidSeatplanComponent from '@/components/seatplan/userApp/seatplanComponents/seats/trapezoid.vue';
|
||||||
import stagesSeatplanComponent from '@/components/seatplan/userApp/seatplanComponents/stages.vue';
|
import stagesSeatplanComponent from '@/components/seatplan/userApp/seatplanComponents/stages.vue';
|
||||||
import standingSeatplanComponent from '@/components/seatplan/userApp/seatplanComponents/standing.vue';
|
import standingSeatplanComponent from '@/components/seatplan/userApp/seatplanComponents/standing.vue';
|
||||||
import textFieldSeatplanComponent from '@/components/seatplan/userApp/seatplanComponents/textField.vue';
|
import textFieldSeatplanComponent from '@/components/seatplan/userApp/seatplanComponents/textField.vue';
|
||||||
import notifications from '@/components/notifications/notifications.vue';
|
import notifications from '@/components/notifications/notifications.vue';
|
||||||
import popups from '@/components/notifications/popups.vue';
|
import popups from '@/components/notifications/popups.vue';
|
||||||
import 'vue3-draggable-resizable/dist/Vue3DraggableResizable.css';
|
import 'vue3-draggable-resizable/dist/Vue3DraggableResizable.css';
|
||||||
import sideCartView from '@/components/sideCartView.vue';
|
import sideCartView from '@/components/sideCartView.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
'name': 'window',
|
'name': 'window',
|
||||||
components: {
|
components: {
|
||||||
Vue3DraggableResizable,
|
Vue3DraggableResizable,
|
||||||
@@ -78,8 +78,8 @@
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
draggables: { 1: { 'x': 100, 'y':100, 'h': 100, 'w': 250, 'active': false, 'draggable': true, 'resizable': true, 'id': 1, 'origin': 1, 'shape':'rectangular', 'type': 'seat', 'startingRow': 1, 'seatCountingStartingPoint': 1, 'sector': 'A', 'text': { 'text': 'TestText', 'textSize': 20, 'colour': '#20FFFF' }, 'ticketCount': 1, 'category': 1 } },
|
draggables: { 1: { 'x': 100, 'y': 100, 'h': 100, 'w': 250, 'active': false, 'draggable': true, 'resizable': true, 'id': 1, 'origin': 1, 'shape': 'rectangular', 'type': 'seat', 'startingRow': 1, 'seatCountingStartingPoint': 1, 'sector': 'A', 'text': { 'text': 'TestText', 'textSize': 20, 'colour': '#20FFFF' }, 'ticketCount': 1, 'category': 1 } },
|
||||||
event: { 'name': 'TestEvent2', 'location': 'TestLocation2', 'eventID': 'test2', 'date': '2023-07-15', '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' } }, 'maxTickets': 2 },
|
event: { 'name': 'TestEvent2', 'location': 'TestLocation2', 'eventID': 'test2', 'date': '2023-07-15', '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' } }, 'maxTickets': 2 },
|
||||||
available: { 'redo': false, 'undo': false },
|
available: { 'redo': false, 'undo': false },
|
||||||
scaleFactor: 1,
|
scaleFactor: 1,
|
||||||
sizePoll: null,
|
sizePoll: null,
|
||||||
@@ -91,7 +91,7 @@
|
|||||||
selectedSeat: {},
|
selectedSeat: {},
|
||||||
cart: {},
|
cart: {},
|
||||||
unavailableSeats: {},
|
unavailableSeats: {},
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
/*
|
/*
|
||||||
@@ -276,10 +276,10 @@
|
|||||||
this.movePos.top = parent.scrollHeight - parent.scrollTop;
|
this.movePos.top = parent.scrollHeight - parent.scrollTop;
|
||||||
this.movePos.isMoving = false;
|
this.movePos.isMoving = false;
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
},
|
},
|
||||||
scaleDown ( valueArray ) {
|
scaleDown ( valueArray ) {
|
||||||
const allowedAttributes = [ 'w', 'h', 'x', 'y' ]
|
const allowedAttributes = [ 'w', 'h', 'x', 'y' ];
|
||||||
let returnArray = {};
|
let returnArray = {};
|
||||||
for ( let entry in valueArray ) {
|
for ( let entry in valueArray ) {
|
||||||
returnArray[ entry ] = {};
|
returnArray[ entry ] = {};
|
||||||
@@ -502,7 +502,7 @@
|
|||||||
unmounted() {
|
unmounted() {
|
||||||
clearInterval( this.sizePoll );
|
clearInterval( this.sizePoll );
|
||||||
},
|
},
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
options: {},
|
options: {},
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
openRightClickMenu( event, options ) {
|
openRightClickMenu( event, options ) {
|
||||||
@@ -45,7 +45,7 @@ export default {
|
|||||||
this.$emit( 'command', command );
|
this.$emit( 'command', command );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|||||||
@@ -63,7 +63,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
showsPW: false,
|
showsPW: false,
|
||||||
@@ -85,7 +85,7 @@
|
|||||||
$( '#' + box ).fadeOut( 300 );
|
$( '#' + box ).fadeOut( 300 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
total: 0,
|
total: 0,
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
calculateTotal () {
|
calculateTotal () {
|
||||||
@@ -89,7 +89,7 @@ export default {
|
|||||||
created() {
|
created() {
|
||||||
this.calculateTotal();
|
this.calculateTotal();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|||||||
@@ -90,4 +90,4 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
}
|
};
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { createRouter, createWebHistory } from 'vue-router'
|
import { createRouter, createWebHistory } from 'vue-router';
|
||||||
import { useUserStore } from '@/stores/userStore';
|
import { useUserStore } from '@/stores/userStore';
|
||||||
import { useBackendStore } from '@/stores/backendStore';
|
import { useBackendStore } from '@/stores/backendStore';
|
||||||
import adminRoutes from '@/router/adminRoutes';
|
import adminRoutes from '@/router/adminRoutes';
|
||||||
|
|||||||
@@ -170,4 +170,4 @@ export default [
|
|||||||
transition: 'scale',
|
transition: 'scale',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
]
|
];
|
||||||
@@ -7,9 +7,9 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { defineStore } from "pinia";
|
import { defineStore } from 'pinia';
|
||||||
|
|
||||||
export const useBackendStore = defineStore ( 'backend', {
|
export const useBackendStore = defineStore( 'backend', {
|
||||||
state: () => ( { 'guestPurchase': false, 'guestPurchaseAllowed': false } ),
|
state: () => ( { 'guestPurchase': false, 'guestPurchaseAllowed': false } ),
|
||||||
getters: {
|
getters: {
|
||||||
getIsGuestPurchase: ( state ) => state.guestPurchase,
|
getIsGuestPurchase: ( state ) => state.guestPurchase,
|
||||||
|
|||||||
@@ -7,9 +7,9 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { defineStore } from "pinia";
|
import { defineStore } from 'pinia';
|
||||||
|
|
||||||
export const useUserStore = defineStore ( 'user', {
|
export const useUserStore = defineStore( 'user', {
|
||||||
state: () => ( { 'isUserAuth': false, 'isAdminAuth': false, 'userData': {}, 'isTwoFACompliantUser': false, 'isTwoFACompliantAdmin': false, 'pageName': 'libreevent' } ),
|
state: () => ( { 'isUserAuth': false, 'isAdminAuth': false, 'userData': {}, 'isTwoFACompliantUser': false, 'isTwoFACompliantAdmin': false, 'pageName': 'libreevent' } ),
|
||||||
getters: {
|
getters: {
|
||||||
getUserAuthenticated: ( state ) => state.isUserAuth,
|
getUserAuthenticated: ( state ) => state.isUserAuth,
|
||||||
|
|||||||
@@ -14,16 +14,16 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
formData: {}
|
formData: {}
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
setup () {
|
setup () {
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -24,15 +24,15 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { useUserStore } from '@/stores/userStore';
|
import { useUserStore } from '@/stores/userStore';
|
||||||
import { mapStores } from 'pinia';
|
import { mapStores } from 'pinia';
|
||||||
import notifications from '@/components/notifications/notifications.vue';
|
import notifications from '@/components/notifications/notifications.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
formData: {}
|
formData: {}
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
notifications,
|
notifications,
|
||||||
@@ -80,7 +80,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|||||||
@@ -210,14 +210,14 @@
|
|||||||
</style>
|
</style>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { useUserStore } from '@/stores/userStore';
|
import { useUserStore } from '@/stores/userStore';
|
||||||
import { mapStores } from 'pinia';
|
import { mapStores } from 'pinia';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
formData: {}
|
formData: {}
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapStores( useUserStore )
|
...mapStores( useUserStore )
|
||||||
@@ -249,6 +249,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -96,10 +96,10 @@
|
|||||||
</style>
|
</style>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import popups from '@/components/notifications/popups.vue';
|
import popups from '@/components/notifications/popups.vue';
|
||||||
import rightClickMenu from '@/components/settings/rightClickMenu.vue';
|
import rightClickMenu from '@/components/settings/rightClickMenu.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'OrderView',
|
name: 'OrderView',
|
||||||
components: {
|
components: {
|
||||||
popups,
|
popups,
|
||||||
@@ -107,11 +107,11 @@
|
|||||||
},
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
events: { 'test':{ 'name': 'TestEvent', 'description': 'This is a description for the TestEvent to test multiline support and proper positioning of the Fields', 'freeSeats': 2, 'maxSeats': 2, 'date':'2023-08-15', 'startingPrice':15, 'location': 'TestLocation', 'eventID': 'test', 'currency': 'CHF', 'logo': new URL( '/assets/logo.png', import.meta.url ).href } },
|
events: { 'test': { 'name': 'TestEvent', 'description': 'This is a description for the TestEvent to test multiline support and proper positioning of the Fields', 'freeSeats': 2, 'maxSeats': 2, 'date': '2023-08-15', 'startingPrice': 15, 'location': 'TestLocation', 'eventID': 'test', 'currency': 'CHF', 'logo': new URL( '/assets/logo.png', import.meta.url ).href } },
|
||||||
currentDate: new Date().getTime(),
|
currentDate: new Date().getTime(),
|
||||||
eventList: { 'upcoming': { 'name': 'Upcoming', 'content': {} }, 'past': { 'name': 'Past', 'content': {} }, 'drafts': { 'name': 'Drafts', 'content': {} } },
|
eventList: { 'upcoming': { 'name': 'Upcoming', 'content': {} }, 'past': { 'name': 'Past', 'content': {} }, 'drafts': { 'name': 'Drafts', 'content': {} } },
|
||||||
currentlyOpenMenu: '',
|
currentlyOpenMenu: '',
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.loadData();
|
this.loadData();
|
||||||
@@ -149,7 +149,7 @@
|
|||||||
} );
|
} );
|
||||||
},
|
},
|
||||||
openRightClickMenu( id, event ) {
|
openRightClickMenu( id, event ) {
|
||||||
this.$refs.rclk.openRightClickMenu( event, { 'edit': { 'command': 'editEvent', 'symbol': 'edit', 'display': 'Edit event' }, 'delete': { 'command': 'deleteEvent', 'symbol': 'delete', 'display': 'Delete event' } } )
|
this.$refs.rclk.openRightClickMenu( event, { 'edit': { 'command': 'editEvent', 'symbol': 'edit', 'display': 'Edit event' }, 'delete': { 'command': 'deleteEvent', 'symbol': 'delete', 'display': 'Delete event' } } );
|
||||||
this.currentlyOpenMenu = id;
|
this.currentlyOpenMenu = id;
|
||||||
},
|
},
|
||||||
executeCommand( command ) {
|
executeCommand( command ) {
|
||||||
@@ -213,5 +213,5 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -36,17 +36,17 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import popups from '@/components/notifications/popups.vue';
|
import popups from '@/components/notifications/popups.vue';
|
||||||
import rightClickMenu from '@/components/settings/rightClickMenu.vue';
|
import rightClickMenu from '@/components/settings/rightClickMenu.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
locations: { 'test':{ 'name':'TestLocation', 'locationID':'test', 'seatplan-enabled': true, 'seatplan': {} } },
|
locations: { 'test': { 'name': 'TestLocation', 'locationID': 'test', 'seatplan-enabled': true, 'seatplan': {} } },
|
||||||
currentlyOpenMenu: '',
|
currentlyOpenMenu: '',
|
||||||
currentPopup: '',
|
currentPopup: '',
|
||||||
updatedLocations: {}
|
updatedLocations: {}
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
popups,
|
popups,
|
||||||
@@ -60,21 +60,21 @@
|
|||||||
'locationID': {
|
'locationID': {
|
||||||
'display': 'Internal location name',
|
'display': 'Internal location name',
|
||||||
'id': 'locationID',
|
'id': 'locationID',
|
||||||
'tooltip':'Give the location where the event takes place a name. This name will not be shown to the customers and is used for the backend and admin portal. Has to be unique',
|
'tooltip': 'Give the location where the event takes place a name. This name will not be shown to the customers and is used for the backend and admin portal. Has to be unique',
|
||||||
'value': locationID,
|
'value': locationID,
|
||||||
'type': 'text',
|
'type': 'text',
|
||||||
},
|
},
|
||||||
'name': {
|
'name': {
|
||||||
'display': 'Public location name',
|
'display': 'Public location name',
|
||||||
'id': 'name',
|
'id': 'name',
|
||||||
'tooltip':'The name of the location that is shown to the customers.',
|
'tooltip': 'The name of the location that is shown to the customers.',
|
||||||
'value': this.locations[ locationID ][ 'name' ],
|
'value': this.locations[ locationID ][ 'name' ],
|
||||||
'type': 'text',
|
'type': 'text',
|
||||||
},
|
},
|
||||||
'seatplan-enabled': {
|
'seatplan-enabled': {
|
||||||
'display': 'Use seat plan?',
|
'display': 'Use seat plan?',
|
||||||
'id': 'seatplan-enabled',
|
'id': 'seatplan-enabled',
|
||||||
'tooltip':'With this toggle you may specify whether or not this location has a seat plan or not.',
|
'tooltip': 'With this toggle you may specify whether or not this location has a seat plan or not.',
|
||||||
'value': this.locations[ locationID ][ 'seatplan-enabled' ],
|
'value': this.locations[ locationID ][ 'seatplan-enabled' ],
|
||||||
'type': 'toggle',
|
'type': 'toggle',
|
||||||
},
|
},
|
||||||
@@ -86,28 +86,28 @@
|
|||||||
'locationID': {
|
'locationID': {
|
||||||
'display': 'Internal location name',
|
'display': 'Internal location name',
|
||||||
'id': 'locationID',
|
'id': 'locationID',
|
||||||
'tooltip':'Give the location where the event takes place a name. This name will not be shown to the customers and is used for the backend and admin portal. Has to be unique',
|
'tooltip': 'Give the location where the event takes place a name. This name will not be shown to the customers and is used for the backend and admin portal. Has to be unique',
|
||||||
'value': '',
|
'value': '',
|
||||||
'type': 'text',
|
'type': 'text',
|
||||||
},
|
},
|
||||||
'name': {
|
'name': {
|
||||||
'display': 'Public location name',
|
'display': 'Public location name',
|
||||||
'id': 'name',
|
'id': 'name',
|
||||||
'tooltip':'The name of the location that is shown to the customers.',
|
'tooltip': 'The name of the location that is shown to the customers.',
|
||||||
'value': '',
|
'value': '',
|
||||||
'type': 'text',
|
'type': 'text',
|
||||||
},
|
},
|
||||||
'seatplan-enabled': {
|
'seatplan-enabled': {
|
||||||
'display': 'Use seat plan?',
|
'display': 'Use seat plan?',
|
||||||
'id': 'seatplan-enabled',
|
'id': 'seatplan-enabled',
|
||||||
'tooltip':'With this toggle you may specify whether or not this location has a seat plan or not.',
|
'tooltip': 'With this toggle you may specify whether or not this location has a seat plan or not.',
|
||||||
'value': true,
|
'value': true,
|
||||||
'type': 'toggle',
|
'type': 'toggle',
|
||||||
},
|
},
|
||||||
'seatplanEditor': {
|
'seatplanEditor': {
|
||||||
'display': 'Seat plan editor',
|
'display': 'Seat plan editor',
|
||||||
'id': 'seatplanEditor',
|
'id': 'seatplanEditor',
|
||||||
'tooltip':'The seat plan editor allows you to create a seat plan that closely resembles the location you host the event in.',
|
'tooltip': 'The seat plan editor allows you to create a seat plan that closely resembles the location you host the event in.',
|
||||||
'type': 'link',
|
'type': 'link',
|
||||||
'restrictions': {
|
'restrictions': {
|
||||||
'to': '/admin/seatplan',
|
'to': '/admin/seatplan',
|
||||||
@@ -120,9 +120,9 @@
|
|||||||
openRightClickMenu( id, event, hasSeatplan ) {
|
openRightClickMenu( id, event, hasSeatplan ) {
|
||||||
this.currentlyOpenMenu = id;
|
this.currentlyOpenMenu = id;
|
||||||
if ( hasSeatplan ) {
|
if ( hasSeatplan ) {
|
||||||
this.$refs.rclk.openRightClickMenu( event, { 'edit': { 'command': 'editLocation', 'symbol': 'edit', 'display': 'Edit location' }, 'editor': { 'command': 'openEditor', 'symbol': 'tune', 'display': 'Edit seatplan' }, 'delete': { 'command': 'deleteLocation', 'symbol': 'delete', 'display': 'Delete location' } } )
|
this.$refs.rclk.openRightClickMenu( event, { 'edit': { 'command': 'editLocation', 'symbol': 'edit', 'display': 'Edit location' }, 'editor': { 'command': 'openEditor', 'symbol': 'tune', 'display': 'Edit seatplan' }, 'delete': { 'command': 'deleteLocation', 'symbol': 'delete', 'display': 'Delete location' } } );
|
||||||
} else {
|
} else {
|
||||||
this.$refs.rclk.openRightClickMenu( event, { 'edit': { 'command': 'editLocation', 'symbol': 'edit', 'display': 'Edit location' }, 'delete': { 'command': 'deleteLocation', 'symbol': 'delete', 'display': 'Delete location' } } )
|
this.$refs.rclk.openRightClickMenu( event, { 'edit': { 'command': 'editLocation', 'symbol': 'edit', 'display': 'Edit location' }, 'delete': { 'command': 'deleteLocation', 'symbol': 'delete', 'display': 'Delete location' } } );
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
executeCommand( command ) {
|
executeCommand( command ) {
|
||||||
@@ -193,7 +193,7 @@
|
|||||||
} );
|
} );
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -71,17 +71,17 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import PictureInput from 'vue-picture-input';
|
import PictureInput from 'vue-picture-input';
|
||||||
import notifications from '@/components/notifications/notifications.vue';
|
import notifications from '@/components/notifications/notifications.vue';
|
||||||
import popups from '@/components/notifications/popups.vue';
|
import popups from '@/components/notifications/popups.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
startPageTemplates: [],
|
startPageTemplates: [],
|
||||||
startPageSettings: {},
|
startPageSettings: {},
|
||||||
selectedTemplate: '',
|
selectedTemplate: '',
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
PictureInput,
|
PictureInput,
|
||||||
@@ -106,7 +106,7 @@
|
|||||||
for ( let setting in this.startPageSettings ) {
|
for ( let setting in this.startPageSettings ) {
|
||||||
if ( this.startPageSettings[ setting ][ 'type' ] === 'image' ) {
|
if ( this.startPageSettings[ setting ][ 'type' ] === 'image' ) {
|
||||||
if ( this.saveImage( this.startPageSettings[ setting ].id ) ) {
|
if ( this.saveImage( this.startPageSettings[ setting ].id ) ) {
|
||||||
this.$refs.notification.createNotification( 'No image selected!', 5, 'error', 'normal' )
|
this.$refs.notification.createNotification( 'No image selected!', 5, 'error', 'normal' );
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ( this.startPageSettings[ setting ][ 'value' ] ) {
|
if ( this.startPageSettings[ setting ][ 'value' ] ) {
|
||||||
@@ -221,5 +221,5 @@
|
|||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -25,11 +25,11 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
allPlugins: {}
|
allPlugins: {}
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
loadData () {
|
loadData () {
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
created () {
|
created () {
|
||||||
this.loadData();
|
this.loadData();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|||||||
@@ -54,12 +54,12 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import settings from '@/components/settings/settings.vue';
|
import settings from '@/components/settings/settings.vue';
|
||||||
import popups from '@/components/notifications/popups.vue';
|
import popups from '@/components/notifications/popups.vue';
|
||||||
import rightClickMenu from '@/components/settings/rightClickMenu.vue';
|
import rightClickMenu from '@/components/settings/rightClickMenu.vue';
|
||||||
import notifications from '@/components/notifications/notifications.vue';
|
import notifications from '@/components/notifications/notifications.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'adminSettingsView',
|
name: 'adminSettingsView',
|
||||||
components: {
|
components: {
|
||||||
settings,
|
settings,
|
||||||
@@ -76,20 +76,20 @@
|
|||||||
'2fa': {
|
'2fa': {
|
||||||
'display': 'Require Two-Factor-Authentication of user',
|
'display': 'Require Two-Factor-Authentication of user',
|
||||||
'id': '2fa',
|
'id': '2fa',
|
||||||
'tooltip':'Control whether or not users are required to use Two-Factor-Authentication. Defaults to "User can decide", which is recommended',
|
'tooltip': 'Control whether or not users are required to use Two-Factor-Authentication. Defaults to "User can decide", which is recommended',
|
||||||
'value': 'enforce',
|
'value': 'enforce',
|
||||||
'type': 'select',
|
'type': 'select',
|
||||||
'restrictions': {
|
'restrictions': {
|
||||||
'enforce': {
|
'enforce': {
|
||||||
'displayName':'Always require',
|
'displayName': 'Always require',
|
||||||
'value': 'enforce'
|
'value': 'enforce'
|
||||||
},
|
},
|
||||||
'allow': {
|
'allow': {
|
||||||
'displayName':'User can decide',
|
'displayName': 'User can decide',
|
||||||
'value': 'allow'
|
'value': 'allow'
|
||||||
},
|
},
|
||||||
'disable': {
|
'disable': {
|
||||||
'displayName':'Disable',
|
'displayName': 'Disable',
|
||||||
'value': 'disable'
|
'value': 'disable'
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@@ -97,7 +97,7 @@
|
|||||||
'currency': {
|
'currency': {
|
||||||
'display': 'Currency',
|
'display': 'Currency',
|
||||||
'id': 'currency',
|
'id': 'currency',
|
||||||
'tooltip':'Specify a currency in which the prices are displayed to the customer. Defaults to USD. Please use valid currency codes.',
|
'tooltip': 'Specify a currency in which the prices are displayed to the customer. Defaults to USD. Please use valid currency codes.',
|
||||||
'value': 'USD',
|
'value': 'USD',
|
||||||
'type': 'text',
|
'type': 'text',
|
||||||
},
|
},
|
||||||
@@ -115,16 +115,16 @@
|
|||||||
'paymentGateway': {
|
'paymentGateway': {
|
||||||
'display': 'Select the payment gateway to use',
|
'display': 'Select the payment gateway to use',
|
||||||
'id': 'paymentGateway',
|
'id': 'paymentGateway',
|
||||||
'tooltip':'With this setting you may change which payment gateway you want to use. You will need to provide details below! If you are not sure what this setting means, please click the link below.',
|
'tooltip': 'With this setting you may change which payment gateway you want to use. You will need to provide details below! If you are not sure what this setting means, please click the link below.',
|
||||||
'value': 'stripe',
|
'value': 'stripe',
|
||||||
'type': 'select',
|
'type': 'select',
|
||||||
'restrictions': {
|
'restrictions': {
|
||||||
'payrexx': {
|
'payrexx': {
|
||||||
'displayName':'Payrexx',
|
'displayName': 'Payrexx',
|
||||||
'value': 'payrexx'
|
'value': 'payrexx'
|
||||||
},
|
},
|
||||||
'stripe': {
|
'stripe': {
|
||||||
'displayName':'Stripe',
|
'displayName': 'Stripe',
|
||||||
'value': 'stripe'
|
'value': 'stripe'
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@@ -151,7 +151,7 @@
|
|||||||
// 'type': 'toggle',
|
// 'type': 'toggle',
|
||||||
// },
|
// },
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
showAccountSettings ( account ) {
|
showAccountSettings ( account ) {
|
||||||
@@ -160,28 +160,28 @@
|
|||||||
'pagesSettings': {
|
'pagesSettings': {
|
||||||
'display': 'Modify pages',
|
'display': 'Modify pages',
|
||||||
'id': 'pagesSettings',
|
'id': 'pagesSettings',
|
||||||
'tooltip':'Change this setting to allow or disallow the selected user to access and change any settings of pages like the start page.',
|
'tooltip': 'Change this setting to allow or disallow the selected user to access and change any settings of pages like the start page.',
|
||||||
'value': false,
|
'value': false,
|
||||||
'type': 'toggle',
|
'type': 'toggle',
|
||||||
},
|
},
|
||||||
'locationsSettings': {
|
'locationsSettings': {
|
||||||
'display': 'Location settings and seat plans',
|
'display': 'Location settings and seat plans',
|
||||||
'id': 'locationsSettings',
|
'id': 'locationsSettings',
|
||||||
'tooltip':'Change this setting to allow or disallow the selected user to modify, delete or create locations with their corresponding seat plans.',
|
'tooltip': 'Change this setting to allow or disallow the selected user to modify, delete or create locations with their corresponding seat plans.',
|
||||||
'value': false,
|
'value': false,
|
||||||
'type': 'toggle',
|
'type': 'toggle',
|
||||||
},
|
},
|
||||||
'plugins': {
|
'plugins': {
|
||||||
'display': 'Plugin management',
|
'display': 'Plugin management',
|
||||||
'id': 'plugins',
|
'id': 'plugins',
|
||||||
'tooltip':'Change this setting to allow or disallow the selected user to install or uninstall plugins. Some plugins might allow you to set extra permissions inside of their settings panels',
|
'tooltip': 'Change this setting to allow or disallow the selected user to install or uninstall plugins. Some plugins might allow you to set extra permissions inside of their settings panels',
|
||||||
'value': false,
|
'value': false,
|
||||||
'type': 'toggle',
|
'type': 'toggle',
|
||||||
},
|
},
|
||||||
'events': {
|
'events': {
|
||||||
'display': 'Event management',
|
'display': 'Event management',
|
||||||
'id': 'events',
|
'id': 'events',
|
||||||
'tooltip':'Change this setting to allow or disallow the selected user to install or uninstall plugins. Some plugins might allow you to set extra permissions inside of their settings panels',
|
'tooltip': 'Change this setting to allow or disallow the selected user to install or uninstall plugins. Some plugins might allow you to set extra permissions inside of their settings panels',
|
||||||
'value': false,
|
'value': false,
|
||||||
'type': 'toggle',
|
'type': 'toggle',
|
||||||
},
|
},
|
||||||
@@ -195,14 +195,14 @@
|
|||||||
'username': {
|
'username': {
|
||||||
'display': 'Username',
|
'display': 'Username',
|
||||||
'id': 'username',
|
'id': 'username',
|
||||||
'tooltip':'Change the username for this user.',
|
'tooltip': 'Change the username for this user.',
|
||||||
'value': this.adminAccounts[ account ][ 'username' ],
|
'value': this.adminAccounts[ account ][ 'username' ],
|
||||||
'type': 'text',
|
'type': 'text',
|
||||||
},
|
},
|
||||||
'pass': {
|
'pass': {
|
||||||
'display': 'Password',
|
'display': 'Password',
|
||||||
'id': 'pass',
|
'id': 'pass',
|
||||||
'tooltip':'Change the password for this user.',
|
'tooltip': 'Change the password for this user.',
|
||||||
'value': '',
|
'value': '',
|
||||||
'type': 'password',
|
'type': 'password',
|
||||||
},
|
},
|
||||||
@@ -247,28 +247,28 @@
|
|||||||
'username': {
|
'username': {
|
||||||
'display': 'Username',
|
'display': 'Username',
|
||||||
'id': 'username',
|
'id': 'username',
|
||||||
'tooltip':'Add a username for this user',
|
'tooltip': 'Add a username for this user',
|
||||||
'value': '',
|
'value': '',
|
||||||
'type': 'text',
|
'type': 'text',
|
||||||
},
|
},
|
||||||
'email': {
|
'email': {
|
||||||
'display': 'Email',
|
'display': 'Email',
|
||||||
'id': 'email',
|
'id': 'email',
|
||||||
'tooltip':'Add an email-address for this user',
|
'tooltip': 'Add an email-address for this user',
|
||||||
'value': '',
|
'value': '',
|
||||||
'type': 'text',
|
'type': 'text',
|
||||||
},
|
},
|
||||||
'pass': {
|
'pass': {
|
||||||
'display': 'Password',
|
'display': 'Password',
|
||||||
'id': 'pass',
|
'id': 'pass',
|
||||||
'tooltip':'Create a password for this user.',
|
'tooltip': 'Create a password for this user.',
|
||||||
'value': '',
|
'value': '',
|
||||||
'type': 'password',
|
'type': 'password',
|
||||||
},
|
},
|
||||||
'two_fa': {
|
'two_fa': {
|
||||||
'display': 'Two Factor Authentication',
|
'display': 'Two Factor Authentication',
|
||||||
'id': 'two_fa',
|
'id': 'two_fa',
|
||||||
'tooltip':'With this setting you may change the 2FA Authentication should work for this user. Enhanced requires the user to enter a code, simple solely to click a link',
|
'tooltip': 'With this setting you may change the 2FA Authentication should work for this user. Enhanced requires the user to enter a code, simple solely to click a link',
|
||||||
'value': 'enhanced',
|
'value': 'enhanced',
|
||||||
'type': 'select',
|
'type': 'select',
|
||||||
'restrictions': {
|
'restrictions': {
|
||||||
@@ -348,7 +348,7 @@
|
|||||||
if ( res.status === 200 ) {
|
if ( res.status === 200 ) {
|
||||||
this.$refs.notification.createNotification( 'Payment gateway settings saved!', 5, 'ok', 'normal' );
|
this.$refs.notification.createNotification( 'Payment gateway settings saved!', 5, 'ok', 'normal' );
|
||||||
}
|
}
|
||||||
} )
|
} );
|
||||||
} else if ( this.currentPopup === 'createAccount' ) {
|
} else if ( this.currentPopup === 'createAccount' ) {
|
||||||
let fetchOptions = {
|
let fetchOptions = {
|
||||||
method: 'post',
|
method: 'post',
|
||||||
@@ -390,7 +390,7 @@
|
|||||||
this.$refs.rclk.openRightClickMenu( event, {
|
this.$refs.rclk.openRightClickMenu( event, {
|
||||||
// 'permissions': { 'command': 'openPermissions', 'symbol': 'edit', 'display': 'Edit permissions' },
|
// 'permissions': { 'command': 'openPermissions', 'symbol': 'edit', 'display': 'Edit permissions' },
|
||||||
'password': { 'command': 'updatePassword', 'symbol': 'password', 'display': 'Edit account settings' },
|
'password': { 'command': 'updatePassword', 'symbol': 'password', 'display': 'Edit account settings' },
|
||||||
'delete': { 'command': 'deleteUser', 'symbol': 'delete', 'display': 'Delete User' } } )
|
'delete': { 'command': 'deleteUser', 'symbol': 'delete', 'display': 'Delete User' } } );
|
||||||
this.currentlyOpenMenu = id;
|
this.currentlyOpenMenu = id;
|
||||||
},
|
},
|
||||||
loadData() {
|
loadData() {
|
||||||
@@ -447,7 +447,7 @@
|
|||||||
this.loadData();
|
this.loadData();
|
||||||
this.loadAdminAccounts();
|
this.loadAdminAccounts();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -14,11 +14,11 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import notifications from '@/components/notifications/notifications.vue';
|
import notifications from '@/components/notifications/notifications.vue';
|
||||||
import { useUserStore } from '@/stores/userStore';
|
import { useUserStore } from '@/stores/userStore';
|
||||||
import { mapStores } from 'pinia';
|
import { mapStores } from 'pinia';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'twoFAAdmin',
|
name: 'twoFAAdmin',
|
||||||
components: {
|
components: {
|
||||||
notifications
|
notifications
|
||||||
@@ -26,14 +26,14 @@
|
|||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
code: { '1': '', '2': '' }
|
code: { '1': '', '2': '' }
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapStores( useUserStore ),
|
...mapStores( useUserStore ),
|
||||||
},
|
},
|
||||||
created () {
|
created () {
|
||||||
if ( this.userStore.getAdminTwoFACompliant ) {
|
if ( this.userStore.getAdminTwoFACompliant ) {
|
||||||
if ( !!window.EventSource ) {
|
if ( window.EventSource ) {
|
||||||
setTimeout( () => {
|
setTimeout( () => {
|
||||||
let startNotification = this.$refs.notification.createNotification( 'Connecting to status service', 20, 'progress', 'normal' );
|
let startNotification = this.$refs.notification.createNotification( 'Connecting to status service', 20, 'progress', 'normal' );
|
||||||
let source = new EventSource( localStorage.getItem( 'url' ) + '/admin/2fa/check', { withCredentials: true } );
|
let source = new EventSource( localStorage.getItem( 'url' ) + '/admin/2fa/check', { withCredentials: true } );
|
||||||
@@ -46,14 +46,14 @@
|
|||||||
self.$router.push( '/admin' );
|
self.$router.push( '/admin' );
|
||||||
console.log( e.data );
|
console.log( e.data );
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
source.onopen = e => {
|
source.onopen = e => {
|
||||||
self.$refs.notification.createNotification( 'Connected to status service', 5, 'ok', 'normal' );
|
self.$refs.notification.createNotification( 'Connected to status service', 5, 'ok', 'normal' );
|
||||||
self.$refs.notification.cancelNotification( startNotification );
|
self.$refs.notification.cancelNotification( startNotification );
|
||||||
};
|
};
|
||||||
|
|
||||||
source.addEventListener( 'error', function(e) {
|
source.addEventListener( 'error', function( e ) {
|
||||||
if ( e.eventPhase == EventSource.CLOSED ) source.close();
|
if ( e.eventPhase == EventSource.CLOSED ) source.close();
|
||||||
|
|
||||||
if ( e.target.readyState == EventSource.CLOSED ) {
|
if ( e.target.readyState == EventSource.CLOSED ) {
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
self.$refs.notification.cancelNotification( startNotification );
|
self.$refs.notification.cancelNotification( startNotification );
|
||||||
self.$refs.notification.createNotification( 'Could not connect to status service', 5, 'error', 'normal' );
|
self.$refs.notification.createNotification( 'Could not connect to status service', 5, 'error', 'normal' );
|
||||||
}
|
}
|
||||||
}, false)
|
}, false );
|
||||||
}, 300 );
|
}, 300 );
|
||||||
} else {
|
} else {
|
||||||
setTimeout( () => {
|
setTimeout( () => {
|
||||||
@@ -99,7 +99,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|||||||
@@ -15,9 +15,9 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import window from '@/components/seatplan/editor/window.vue';
|
import window from '@/components/seatplan/editor/window.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
location: '',
|
location: '',
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
created() {
|
created() {
|
||||||
this.checkLocationSelected();
|
this.checkLocationSelected();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
|||||||
@@ -182,12 +182,12 @@
|
|||||||
</style>
|
</style>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import settings from '@/components/settings/settings.vue';
|
import settings from '@/components/settings/settings.vue';
|
||||||
import notifications from '@/components/notifications/notifications.vue';
|
import notifications from '@/components/notifications/notifications.vue';
|
||||||
import popups from '@/components/notifications/popups.vue';
|
import popups from '@/components/notifications/popups.vue';
|
||||||
import PictureInput from 'vue-picture-input';
|
import PictureInput from 'vue-picture-input';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'TicketsDetailsView',
|
name: 'TicketsDetailsView',
|
||||||
components: {
|
components: {
|
||||||
settings,
|
settings,
|
||||||
@@ -198,7 +198,7 @@
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
locations: {},
|
locations: {},
|
||||||
event: { 'name': 'Unnamed event', 'description': '', 'location': '', 'date': '', 'categories': {}, 'ageGroups': { '1':{ 'id': 1, 'name':'Child', 'age':'0 - 15.99' }, '2':{ 'id': 2, 'name': 'Adult' } }, 'maxTickets': 2, 'eventID': 'untitled' },
|
event: { 'name': 'Unnamed event', 'description': '', 'location': '', 'date': '', 'categories': {}, 'ageGroups': { '1': { 'id': 1, 'name': 'Child', 'age': '0 - 15.99' }, '2': { 'id': 2, 'name': 'Adult' } }, 'maxTickets': 2, 'eventID': 'untitled' },
|
||||||
specialSettings: {
|
specialSettings: {
|
||||||
// 'guest-purchase': {
|
// 'guest-purchase': {
|
||||||
// 'display': 'Enable guest purchase',
|
// 'display': 'Enable guest purchase',
|
||||||
@@ -217,7 +217,7 @@
|
|||||||
'maxTickets': {
|
'maxTickets': {
|
||||||
'display': 'Maximum ticket count per account',
|
'display': 'Maximum ticket count per account',
|
||||||
'id': 'maxTickets',
|
'id': 'maxTickets',
|
||||||
'tooltip':'With this setting you can control how many tickets a person can buy. Defaults to 0, which means do not limit.',
|
'tooltip': 'With this setting you can control how many tickets a person can buy. Defaults to 0, which means do not limit.',
|
||||||
'value': 0,
|
'value': 0,
|
||||||
'type': 'number',
|
'type': 'number',
|
||||||
'restrictions': {
|
'restrictions': {
|
||||||
@@ -265,7 +265,7 @@
|
|||||||
hasLiveVersion: false,
|
hasLiveVersion: false,
|
||||||
hasSeatPlan: true,
|
hasSeatPlan: true,
|
||||||
totalSeats: 0,
|
totalSeats: 0,
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
created () {
|
created () {
|
||||||
this.loadData();
|
this.loadData();
|
||||||
@@ -355,7 +355,7 @@
|
|||||||
}
|
}
|
||||||
if ( this.event.categories[ category ].price[ price ] < lowestPrice ) {
|
if ( this.event.categories[ category ].price[ price ] < lowestPrice ) {
|
||||||
lowestPrice = this.event.categories[ category ].price[ price ];
|
lowestPrice = this.event.categories[ category ].price[ price ];
|
||||||
};
|
}
|
||||||
}
|
}
|
||||||
totalSeats += parseInt( this.event.categories[ category ].ticketCount ?? 0 );
|
totalSeats += parseInt( this.event.categories[ category ].ticketCount ?? 0 );
|
||||||
}
|
}
|
||||||
@@ -479,7 +479,7 @@
|
|||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
} )
|
} );
|
||||||
}
|
}
|
||||||
} else if ( this.command === 'deployEvent' ) {
|
} else if ( this.command === 'deployEvent' ) {
|
||||||
this.save( 'deploy' );
|
this.save( 'deploy' );
|
||||||
@@ -539,6 +539,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -14,16 +14,16 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
formData: {}
|
formData: {}
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
setup () {
|
setup () {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -114,15 +114,15 @@
|
|||||||
</style>
|
</style>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import popups from '@/components/notifications/popups.vue';
|
import popups from '@/components/notifications/popups.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
cart: {},
|
cart: {},
|
||||||
backend: { 'currency': 'CHF' },
|
backend: { 'currency': 'CHF' },
|
||||||
ticketToDelete: {},
|
ticketToDelete: {},
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
popups,
|
popups,
|
||||||
@@ -233,7 +233,7 @@
|
|||||||
this.seatChecks( event );
|
this.seatChecks( event );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -14,15 +14,15 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
methods: {
|
methods: {
|
||||||
|
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {}
|
return {};
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
@@ -99,7 +99,7 @@
|
|||||||
</style>
|
</style>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
name: 'OrderView',
|
name: 'OrderView',
|
||||||
methods: {
|
methods: {
|
||||||
setActiveTicket ( id ) {
|
setActiveTicket ( id ) {
|
||||||
@@ -128,10 +128,10 @@
|
|||||||
},
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
events: { 'test':{ 'name': 'TestEvent', 'description': 'This is a description for the TestEvent to test multiline support and proper positioning of the Fields', 'free': 2, 'maxTickets': 2, 'date':'2023-08-31T09:00:00Z', 'startingPrice':15, 'location': 'TestLocation', 'eventID': 'test', 'currency': 'CHF', 'logo': new URL( '/src/assets/logo.png', import.meta.url ).href }, 'test2':{ 'name': 'TestEvent2', 'description': 'This is a description for the TestEvent to test multiline support and proper positioning of the Fields', 'freeSeats': 2, 'maxSeats': 2, 'date':'2023-08-15T09:00:00Z', 'startingPrice':15, 'location': 'TestLocation', 'eventID': 'test2', 'currency': 'CHF', 'logo': new URL( '/src/assets/logo.png', import.meta.url ).href } },
|
events: { 'test': { 'name': 'TestEvent', 'description': 'This is a description for the TestEvent to test multiline support and proper positioning of the Fields', 'free': 2, 'maxTickets': 2, 'date': '2023-08-31T09:00:00Z', 'startingPrice': 15, 'location': 'TestLocation', 'eventID': 'test', 'currency': 'CHF', 'logo': new URL( '/src/assets/logo.png', import.meta.url ).href }, 'test2': { 'name': 'TestEvent2', 'description': 'This is a description for the TestEvent to test multiline support and proper positioning of the Fields', 'freeSeats': 2, 'maxSeats': 2, 'date': '2023-08-15T09:00:00Z', 'startingPrice': 15, 'location': 'TestLocation', 'eventID': 'test2', 'currency': 'CHF', 'logo': new URL( '/src/assets/logo.png', import.meta.url ).href } },
|
||||||
today: new Date().getTime(),
|
today: new Date().getTime(),
|
||||||
locations: {},
|
locations: {},
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
orderedEvents () {
|
orderedEvents () {
|
||||||
@@ -148,7 +148,7 @@
|
|||||||
return rt;
|
return rt;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -22,9 +22,9 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import notifications from '@/components/notifications/notifications.vue';
|
import notifications from '@/components/notifications/notifications.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'PaymentSuccessView',
|
name: 'PaymentSuccessView',
|
||||||
components: {
|
components: {
|
||||||
notifications
|
notifications
|
||||||
@@ -33,10 +33,10 @@
|
|||||||
|
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {}
|
return {};
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
if ( !!window.EventSource ) {
|
if ( window.EventSource ) {
|
||||||
setTimeout( () => {
|
setTimeout( () => {
|
||||||
let startNotification = this.$refs.notification.createNotification( 'Connecting to status service...', 20, 'progress', 'normal' );
|
let startNotification = this.$refs.notification.createNotification( 'Connecting to status service...', 20, 'progress', 'normal' );
|
||||||
let source = new EventSource( localStorage.getItem( 'url' ) + '/payments/status', { withCredentials: true } );
|
let source = new EventSource( localStorage.getItem( 'url' ) + '/payments/status', { withCredentials: true } );
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
} else if ( e.data === 'paymentOk' ) {
|
} else if ( e.data === 'paymentOk' ) {
|
||||||
self.$refs.notification.createNotification( 'Your payment has been marked as completed!', 5, 'ok', 'normal' );
|
self.$refs.notification.createNotification( 'Your payment has been marked as completed!', 5, 'ok', 'normal' );
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
source.onopen = e => {
|
source.onopen = e => {
|
||||||
self.$refs.notification.createNotification( 'Connected to status service', 5, 'ok', 'normal' );
|
self.$refs.notification.createNotification( 'Connected to status service', 5, 'ok', 'normal' );
|
||||||
@@ -103,7 +103,7 @@
|
|||||||
}, 5000 );
|
}, 5000 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
|||||||
@@ -171,7 +171,7 @@ export default {
|
|||||||
backend: { 'currency': 'CHF' },
|
backend: { 'currency': 'CHF' },
|
||||||
cartNotEmpty: false,
|
cartNotEmpty: false,
|
||||||
userData: {},
|
userData: {},
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
notifications,
|
notifications,
|
||||||
@@ -189,7 +189,7 @@ export default {
|
|||||||
for ( let event in cart ) {
|
for ( let event in cart ) {
|
||||||
if ( Object.keys( cart[ event ][ 'tickets' ] ).length ) {
|
if ( Object.keys( cart[ event ][ 'tickets' ] ).length ) {
|
||||||
this.cartNotEmpty = true;
|
this.cartNotEmpty = true;
|
||||||
};
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( this.cartNotEmpty ) {
|
if ( this.cartNotEmpty ) {
|
||||||
|
|||||||
@@ -158,7 +158,7 @@
|
|||||||
</style>
|
</style>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
name: 'TicketsDetailsView',
|
name: 'TicketsDetailsView',
|
||||||
created () {
|
created () {
|
||||||
if ( !sessionStorage.getItem( 'selectedTicket' ) ) {
|
if ( !sessionStorage.getItem( 'selectedTicket' ) ) {
|
||||||
@@ -176,8 +176,8 @@
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
event: {},
|
event: {},
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -47,10 +47,10 @@
|
|||||||
</style>
|
</style>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import seatplan from '@/components/seatplan/userApp/userWindow.vue';
|
import seatplan from '@/components/seatplan/userApp/userWindow.vue';
|
||||||
import noseatplan from '@/components/noseatplan.vue';
|
import noseatplan from '@/components/noseatplan.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'TicketsDetailsView',
|
name: 'TicketsDetailsView',
|
||||||
components: {
|
components: {
|
||||||
seatplan,
|
seatplan,
|
||||||
@@ -60,7 +60,7 @@
|
|||||||
return {
|
return {
|
||||||
hasSeatplan: false,
|
hasSeatplan: false,
|
||||||
eventID: '',
|
eventID: '',
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
created () {
|
created () {
|
||||||
if ( !sessionStorage.getItem( 'selectedTicket' ) ) {
|
if ( !sessionStorage.getItem( 'selectedTicket' ) ) {
|
||||||
@@ -73,6 +73,6 @@
|
|||||||
this.hasSeatplan = true;
|
this.hasSeatplan = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -107,19 +107,19 @@
|
|||||||
</style>
|
</style>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { useUserStore } from '@/stores/userStore';
|
import { useUserStore } from '@/stores/userStore';
|
||||||
import { mapStores } from 'pinia';
|
import { mapStores } from 'pinia';
|
||||||
import notifications from '@/components/notifications/notifications.vue';
|
import notifications from '@/components/notifications/notifications.vue';
|
||||||
import popups from '@/components/notifications/popups.vue';
|
import popups from '@/components/notifications/popups.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
accountData: {},
|
accountData: {},
|
||||||
isEditingAccount: false,
|
isEditingAccount: false,
|
||||||
emailStatus: '',
|
emailStatus: '',
|
||||||
twoFASetting: 'allow',
|
twoFASetting: 'allow',
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
notifications,
|
notifications,
|
||||||
@@ -201,7 +201,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if ( !( /[a-z]/.test( mail[ l ] ) || /[A-Z]/.test( mail[ l ] ) || /[1-9]/.test( mail[ l ] ) || mail[ l ] === '-' || mail[ l ] === '_' ) ) {
|
} else if ( !( /[a-z]/.test( mail[ l ] ) || /[A-Z]/.test( mail[ l ] ) || /[1-9]/.test( mail[ l ] ) || mail[ l ] === '-' || mail[ l ] === '_' ) ) {
|
||||||
return false
|
return false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ( mail[ l ] === '@' ) {
|
if ( mail[ l ] === '@' ) {
|
||||||
@@ -265,5 +265,5 @@
|
|||||||
created () {
|
created () {
|
||||||
this.loadData();
|
this.loadData();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
@@ -26,15 +26,15 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { useUserStore } from '@/stores/userStore';
|
import { useUserStore } from '@/stores/userStore';
|
||||||
import { mapStores } from 'pinia';
|
import { mapStores } from 'pinia';
|
||||||
import notifications from '@/components/notifications/notifications.vue';
|
import notifications from '@/components/notifications/notifications.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
formData: {}
|
formData: {}
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
notifications,
|
notifications,
|
||||||
@@ -82,7 +82,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|||||||
@@ -28,13 +28,13 @@
|
|||||||
</style>
|
</style>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import notifications from '@/components/notifications/notifications.vue';
|
import notifications from '@/components/notifications/notifications.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
email: '',
|
email: '',
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
notifications,
|
notifications,
|
||||||
@@ -64,5 +64,5 @@
|
|||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
@@ -53,16 +53,16 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { useUserStore } from '@/stores/userStore';
|
import { useUserStore } from '@/stores/userStore';
|
||||||
import { mapStores } from 'pinia';
|
import { mapStores } from 'pinia';
|
||||||
import notifications from '@/components/notifications/notifications.vue';
|
import notifications from '@/components/notifications/notifications.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
formData: {},
|
formData: {},
|
||||||
emailStatus: '',
|
emailStatus: '',
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
notifications,
|
notifications,
|
||||||
@@ -102,7 +102,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if ( !( /[a-z]/.test( mail[ l ] ) || /[A-Z]/.test( mail[ l ] ) || /[1-9]/.test( mail[ l ] ) || mail[ l ] === '-' || mail[ l ] === '_' ) ) {
|
} else if ( !( /[a-z]/.test( mail[ l ] ) || /[A-Z]/.test( mail[ l ] ) || /[1-9]/.test( mail[ l ] ) || mail[ l ] === '-' || mail[ l ] === '_' ) ) {
|
||||||
return false
|
return false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ( mail[ l ] === '@' ) {
|
if ( mail[ l ] === '@' ) {
|
||||||
@@ -182,7 +182,7 @@
|
|||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|||||||
@@ -14,11 +14,11 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import notifications from '@/components/notifications/notifications.vue';
|
import notifications from '@/components/notifications/notifications.vue';
|
||||||
import { useUserStore } from '@/stores/userStore';
|
import { useUserStore } from '@/stores/userStore';
|
||||||
import { mapStores } from 'pinia';
|
import { mapStores } from 'pinia';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'twoFA',
|
name: 'twoFA',
|
||||||
components: {
|
components: {
|
||||||
notifications
|
notifications
|
||||||
@@ -27,14 +27,14 @@
|
|||||||
return {
|
return {
|
||||||
code: { '1': '', '2': '' },
|
code: { '1': '', '2': '' },
|
||||||
serverPing: null,
|
serverPing: null,
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapStores( useUserStore ),
|
...mapStores( useUserStore ),
|
||||||
},
|
},
|
||||||
created () {
|
created () {
|
||||||
if ( this.userStore.getUserTwoFACompliant ) {
|
if ( this.userStore.getUserTwoFACompliant ) {
|
||||||
if ( !!window.EventSource ) {
|
if ( window.EventSource ) {
|
||||||
setTimeout( () => {
|
setTimeout( () => {
|
||||||
let startNotification = this.$refs.notification.createNotification( 'Connecting to status service', 20, 'progress', 'normal' );
|
let startNotification = this.$refs.notification.createNotification( 'Connecting to status service', 20, 'progress', 'normal' );
|
||||||
let source = new EventSource( localStorage.getItem( 'url' ) + '/user/2fa/check', { withCredentials: true } );
|
let source = new EventSource( localStorage.getItem( 'url' ) + '/user/2fa/check', { withCredentials: true } );
|
||||||
@@ -46,7 +46,7 @@
|
|||||||
self.userStore.setUserAuth( true );
|
self.userStore.setUserAuth( true );
|
||||||
self.$router.push( sessionStorage.getItem( 'redirect' ) ?? '/account' );
|
self.$router.push( sessionStorage.getItem( 'redirect' ) ?? '/account' );
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
source.onopen = e => {
|
source.onopen = e => {
|
||||||
self.$refs.notification.createNotification( 'Connected to status service', 5, 'ok', 'normal' );
|
self.$refs.notification.createNotification( 'Connected to status service', 5, 'ok', 'normal' );
|
||||||
@@ -60,7 +60,7 @@
|
|||||||
self.$refs.notification.cancelNotification( startNotification );
|
self.$refs.notification.cancelNotification( startNotification );
|
||||||
self.$refs.notification.createNotification( 'Could not connect to status service', 5, 'error', 'normal' );
|
self.$refs.notification.createNotification( 'Could not connect to status service', 5, 'error', 'normal' );
|
||||||
}
|
}
|
||||||
}, false)
|
}, false );
|
||||||
}, 300 );
|
}, 300 );
|
||||||
} else {
|
} else {
|
||||||
setTimeout( () => {
|
setTimeout( () => {
|
||||||
@@ -101,7 +101,7 @@
|
|||||||
unmounted() {
|
unmounted() {
|
||||||
clearInterval( this.serverPing );
|
clearInterval( this.serverPing );
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { defineConfig } from 'vite'
|
import { defineConfig } from 'vite';
|
||||||
import vue from '@vitejs/plugin-vue'
|
import vue from '@vitejs/plugin-vue';
|
||||||
const path = require( 'path' );
|
const path = require( 'path' );
|
||||||
|
|
||||||
export default defineConfig( {
|
export default defineConfig( {
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
/* eslint-env node */
|
|
||||||
module.exports = {
|
|
||||||
root: true,
|
|
||||||
'extends': [
|
|
||||||
'plugin:vue/vue3-essential',
|
|
||||||
'eslint:recommended'
|
|
||||||
],
|
|
||||||
parserOptions: {
|
|
||||||
ecmaVersion: 'latest'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
73
src/webapp/setup/.eslintrc.js
Normal file
73
src/webapp/setup/.eslintrc.js
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
/*
|
||||||
|
* libreevent - .eslintrc.js
|
||||||
|
*
|
||||||
|
* Created by Janis Hutz 02/26/2023, Licensed under the GPL V3 License
|
||||||
|
* https://janishutz.com, development@janishutz.com
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
'env': {
|
||||||
|
'browser': true,
|
||||||
|
'commonjs': true,
|
||||||
|
'es2021': true,
|
||||||
|
'node': true
|
||||||
|
},
|
||||||
|
'extends': [
|
||||||
|
'plugin:vue/vue3-essential',
|
||||||
|
'eslint:recommended'
|
||||||
|
],
|
||||||
|
'overrides': [
|
||||||
|
],
|
||||||
|
'parserOptions': {
|
||||||
|
'ecmaVersion': 'latest'
|
||||||
|
},
|
||||||
|
'rules': {
|
||||||
|
'indent': [
|
||||||
|
'error',
|
||||||
|
4
|
||||||
|
],
|
||||||
|
'linebreak-style': [
|
||||||
|
'error',
|
||||||
|
'unix'
|
||||||
|
],
|
||||||
|
'quotes': [
|
||||||
|
'error',
|
||||||
|
'single'
|
||||||
|
],
|
||||||
|
'semi': [
|
||||||
|
'error',
|
||||||
|
'always'
|
||||||
|
],
|
||||||
|
'spaced-comment': [
|
||||||
|
'error',
|
||||||
|
'always'
|
||||||
|
],
|
||||||
|
'arrow-spacing': [
|
||||||
|
'error',
|
||||||
|
{ 'before': true, 'after': true }
|
||||||
|
],
|
||||||
|
'func-call-spacing': [
|
||||||
|
'error',
|
||||||
|
'never'
|
||||||
|
],
|
||||||
|
'keyword-spacing': [
|
||||||
|
'error',
|
||||||
|
{ 'before': true, 'after': true }
|
||||||
|
],
|
||||||
|
'key-spacing': [
|
||||||
|
'error',
|
||||||
|
{ 'mode': 'strict' }
|
||||||
|
],
|
||||||
|
'space-before-blocks': [
|
||||||
|
'error',
|
||||||
|
'always'
|
||||||
|
],
|
||||||
|
'space-in-parens': [
|
||||||
|
'error',
|
||||||
|
'always'
|
||||||
|
],
|
||||||
|
'no-var': 'error'
|
||||||
|
}
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user