diff --git a/MusicPlayerV2-GUI/public/bar-config.json b/MusicPlayerV2-GUI/public/bar-config.json index 271596c..622afea 100644 --- a/MusicPlayerV2-GUI/public/bar-config.json +++ b/MusicPlayerV2-GUI/public/bar-config.json @@ -5,15 +5,189 @@ "18+": "" }, "offering": { - "test": { - "name": "Test drink", - "price": 700, - "id": "test" + "big-bar": { + "offering": { + "softdrinks": { + "name": "Softdrinks", + "price": 400, + "id": "softdrinks" + }, + "energy": { + "name": "Energy", + "price": 400, + "id": "energy" + }, + "mate": { + "name": "Mate", + "price": 500, + "id": "mate", + "depot": 200 + }, + "sparkly-water": { + "name": "Mineralwasser mit", + "price": 300, + "id": "sparkly-water", + "showLine": true + }, + "rose": { + "name": "Rosé", + "price": 1500, + "id": "rose", + "depot": 200 + }, + "red": { + "name": "Rotwein", + "price": 2000, + "id": "red", + "depot": 200 + }, + "wine-glasses": { + "name": "Weingläser", + "price": 0, + "id": "wine-glasses", + "depot": 200 + }, + "appenzeller": { + "name": "Appenzeller Vollmond", + "price": 500, + "id": "appenzeller", + "depot": 200 + }, + "feldschloesschen": { + "name": "Feldschlösschen", + "price": 500, + "id": "feldschloesschen", + "depot": 200 + }, + "sommersby": { + "name": "Sommersby", + "price": 500, + "id": "sommersby", + "depot": 200 + }, + "jever-fun": { + "name": "Jever Fun", + "price": 400, + "id": "jever-fun", + "depot": 200 + }, + "trojka-ice": { + "name": "Trojka Ice", + "price": 600, + "id": "trojka-ice", + "depot": 200, + "showLine": true + }, + "vodka-red-energy": { + "name": "Vodka Rot Energy", + "price": 800, + "id": "vodka-red-energy" + }, + "vodka-green-citro": { + "name": "Vodka Grün Citro", + "price": 800, + "id": "vodka-green-citro" + }, + "vodka-white-energy": { + "name": "Vodka White Energy", + "price": 900, + "id": "vodka-white-energy" + }, + "gin-tonic": { + "name": "Gin Tonic", + "price": 900, + "id": "gin-tonic" + }, + "rum-cola": { + "name": "Rum Cola", + "price": 900, + "id": "rum-cola" + }, + "whiskey-cola": { + "name": "Whiskey Cola", + "price": 900, + "id": "whiskey-cola" + }, + "mate-mit-schuss": { + "name": "Mate mit Schuss", + "price": 1200, + "id": "mate-mit-schuss", + "depot": 200, + "showLine": true + }, + "poseidon": { + "name": "Poseidon", + "price": 900, + "id": "poseidon" + }, + "arielle": { + "name": "Arielle", + "price": 900, + "id": "arielle" + }, + "pearl-driver": { + "name": "Pearl Driver", + "price": 400, + "id": "pearl-driver" + } + }, + "name": "Poseidon's Quelle", + "id": "big-bar" }, - "test-2": { - "name": "Test drink 2", - "price": 500, - "id": "test-2" + "small-bar": { + "offering": { + "softdrinks": { + "name": "Softdrinks (Alle)", + "price": 300, + "id": "softdrinks", + "showLine": true + }, + "appenzeller": { + "name": "Appenzeller Vollmond", + "price": 500, + "id": "appenzeller", + "depot": 200 + }, + "feldschloesschen": { + "name": "Feldschlösschen", + "price": 500, + "id": "feldschloesschen", + "depot": 200 + }, + "sommersby": { + "name": "Sommersby", + "price": 500, + "id": "sommersby", + "depot": 200 + }, + "jever-fun": { + "name": "Jever Fun", + "price": 400, + "id": "jever-fun", + "depot": 200, + "showLine": true + }, + "rose": { + "name": "Rosé", + "price": 1500, + "id": "rose", + "depot": 200 + }, + "red": { + "name": "Rotwein", + "price": 2000, + "id": "red", + "depot": 200 + }, + "wine-glasses": { + "name": "Weingläser", + "price": 0, + "id": "wine-glasses", + "depot": 200 + } + }, + "name": "Seepferdchenbar", + "id": "small-bar" } } } diff --git a/MusicPlayerV2-GUI/src/views/BarView.vue b/MusicPlayerV2-GUI/src/views/BarView.vue index 9ce2535..bc478c7 100644 --- a/MusicPlayerV2-GUI/src/views/BarView.vue +++ b/MusicPlayerV2-GUI/src/views/BarView.vue @@ -5,22 +5,32 @@ } from 'vue'; interface FullConfig { - 'offering': BarConfig, - 'ages': Ages + 'offering': Bars; + 'ages': Ages; + } + + interface Bars { + [name: string]: { + 'offering': BarConfig; + 'name': string; + 'id': string; + } } interface Ages { - '18+': string, - '16-18': string + '18+': string; + '16-18': string; } interface BarConfig { - [id: string]: Offer; + [id: string]: Offer } interface Offer { 'name': string; 'price': number; // In cents + 'depot'?: number; // In cents + 'showLine'?: boolean; 'id': string; } @@ -33,8 +43,12 @@ '16-18': '', 'below': '' } ); - const offering: Ref = ref( {} ); + const offering: Ref = ref( {} ); const selection: Ref = ref( {} ); + const selectedBar: Ref = ref( '' ); + const enableDepotReminder = ref( true ); + + let cashinInDepot = false; fetch( '/bar-config.json' ).then( res => { if ( res.status === 200 ) { @@ -43,15 +57,22 @@ offering.value = data.offering; ages.value = data.ages; - reset(); } ); } else { alert( 'Failed to load' ); } } ); - const reset = () => { - const keys = Object.keys( offering.value ); + const reset = ( skipCheck = true ) => { + if ( !skipCheck && !Object.keys( offering.value ).includes( selectedBar.value ) ) return; + + if ( cashinInDepot && enableDepotReminder.value ) alert( 'Hand out chips for depot' ); + + cashinInDepot = false; + + const keys = Object.keys( offering.value[ selectedBar.value ].offering ); + + selection.value = {}; keys.forEach( val => { selection.value[ val ] = 0; @@ -66,7 +87,10 @@ for ( let i = 0; i < keys.length; i++ ) { const o = selection.value[ keys[ i ] ]; - totalPrice += o * offering.value[ keys[ i ] ].price; + totalPrice += o * offering.value[ selectedBar.value ].offering[ keys[ i ] ].price; + totalPrice += o * ( offering.value[ selectedBar.value ].offering[ keys[ i ] ].depot ?? 0 ); + + if ( offering.value[ selectedBar.value ].offering[ keys[ i ] ].depot ?? 0 > 0 ) cashinInDepot = true; } return totalPrice / 100; @@ -83,17 +107,40 @@