11 Commits
v1.0 ... v1.1

10 changed files with 92 additions and 38 deletions

View File

@@ -15,10 +15,26 @@ Die Autoren des Projekts warnen vor den Schäden, die Alkohol anrichtet, und üb
Alle Cocktailrezepte dienen nur zur Information.
Bei der Erstellung dieses Projekts wurden keine Food-Blogger, Barkeeper oder Programmierer geschädigt.
## Download
- [Android Release APK](android/app/release/app-release.apk)
- [Android Debug APK](android/app/build/outputs/apk/debug/app-debug.apk)
## Releases
Übersicht aller [Releases](/releases). Downloade die App von dort.
- Version 1.1
- Favourisieren aus Shake-Sicht möglich
- Logo auf Startseite
- kleine Verbesserungen und Bugfixes
- Version 1.0
- grundlegende Funktionen implementiert
- editieren nicht möglich
## Open Bugs, Issues & ToDos
- Shake: Scroll-to-top funktioniert nicht
- New Cocktail
- Zutat verschwindet bei hinzufügen einer neuen Reihe
- Edit Cocktails
- Cocktail Zutat zeigen
- Speichern ermöglichen
- API Key
- Key nicht gespeichert
## Quellen und Bibliotheken
- die [CocktailDB](https://www.thecocktaildb.com/) API; der eigene API Schlüssel kann in der App gespeichert werden

Binary file not shown.

Binary file not shown.

View File

@@ -12,12 +12,15 @@
<meta name="format-detection" content="telephone=no" />
<meta name="msapplication-tap-highlight" content="no" />
<link rel="shortcut icon" type="image/png" href="<%= BASE_URL %>img/favicon.ico" />
<link rel="shortcut icon" type="image/png" href="/img/favicon.ico" />
<link rel="favicon" type="image/png" href="/img/favicon.ico?" />
<link rel="icon" type="image/png" href="/img/icon.png?" />
<link rel="manifest" href="/manifest.json">
<!-- add to homescreen for ios -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-title" content="Cocktail Shaker App" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<meta name="apple-mobile-web-app-status-bar-style" content="rgb(202, 0, 152)" />
</head>
<body>

View File

@@ -1,27 +1,25 @@
{
"name": "cocktail-shaker",
"short_name": "CS",
"description": "shake your way to a new cocktail",
"theme_color": "#4DBA87",
"icons": [{
"src": "./img/favicon.ico",
"sizes": "32x32",
"type": "image/png",
"purpose": "maskable"
"type": "image/png"
},
{
"src": "./img/icon.png",
"sizes": "32x32",
"type": "image/png",
"purpose": "maskable"
"type": "image/png"
},
{
"src": "./img/splash.png",
"sizes": "128x128",
"type": "image/png",
"purpose": "maskable"
"type": "image/png"
}
],
"start_url": ".",
"start_url": "/",
"display": "standalone",
"background_color": "#000000"
"background_color": "rgb(202, 0, 152)"
}

View File

@@ -15,22 +15,22 @@ const routes = [{
path: '',
redirect: '/tabs/Shake'
},
{
path: 'Shake',
component: () => import('@/views/Shake.vue')
},
{
path: 'Shake/:id',
component: () => import('@/views/ViewCocktail.vue')
},
{
path: "New",
component: () => import('@/views/NewCocktail.vue')
path: 'Shake',
component: () => import('@/views/Shake.vue')
},
{
path: "New/:id",
component: () => import('@/views/EditCocktail.vue')
},
{
path: "New",
component: () => import('@/views/NewCocktail.vue')
},
{
path: 'Cocktails',
component: () => import('@/views/Cocktails.vue')

View File

@@ -9,8 +9,7 @@
<ion-header collapse="condense">
<ion-toolbar>
<ion-title size="large"
>Cocktaillist
{{ cocktails ? "#" + cocktails.length : "#0" }}</ion-title
>Cocktails {{ cocktails ? "#" + cocktails.length : "please restore" }}</ion-title
>
</ion-toolbar>
</ion-header>

View File

@@ -2,13 +2,13 @@
<ion-page>
<ion-header>
<ion-toolbar>
<ion-title>{{ mode }} Cocktail</ion-title>
<ion-title>New Cocktail</ion-title>
</ion-toolbar>
</ion-header>
<ion-content :fullscreen="true">
<ion-header collapse="condense">
<ion-toolbar>
<ion-title size="large">{{ mode }} Cocktail</ion-title>
<ion-title size="large">New Cocktail</ion-title>
</ion-toolbar>
</ion-header>
@@ -150,7 +150,6 @@
<script>
import { useStorage } from "@/composables/useStorage";
//import router from "@/router";
import glassJson from "../data/glasses.json";
import ingredientJson from "../data/ingredients.json";
import unitJson from "../data/units.json";
@@ -217,7 +216,6 @@ export default {
},
data() {
return {
mode: "New", //"Edit"
cocktail: {
name: null,
ingredients: [{ amount: 0, unit: "ml", ingredient: null }],

View File

@@ -22,14 +22,18 @@
Shake your phone <br />
to get a Cocktail
</h1>
<ion-button color="success" expand="block" @click="doShake()"
>Start shaking</ion-button
>
<ion-img
class="image-icon"
:src="`${publicPath}img/glasses/Martini.svg`"
class="start-icon"
:src="`${publicPath}img/icon.png`"
alt="CocktailShaker"
></ion-img>
<ion-button
size="large"
color="success"
expand="block"
@click="doShake()"
>Start shaking</ion-button
>
</div>
<!-- Show cocktail -->
@@ -80,10 +84,28 @@
<div class="buttonContainer">
<!--Take Photo -->
<ion-button color="secondary" @click="takePhoto(chosenCocktail)">
<ion-icon :icon="camera"></ion-icon>
<ion-icon :icon="camera" slot="icon-only"></ion-icon>
</ion-button>
<!--Favourise Cocktail -->
<ion-button
color="success"
@click="doFavouriseCocktail(chosenCocktail)"
>
<ion-icon
v-if="chosenCocktail.favourite == true"
slot="icon-only"
:icon="star"
class="icon-star-true"
></ion-icon>
<ion-icon
v-else
slot="icon-only"
:icon="star"
class="icon-star-false"
></ion-icon>
</ion-button>
<!--Next Cocktail-->
<ion-button color="success" @click="doShake()"
<ion-button color="primary" @click="doShake()"
>Shake again</ion-button
>
</div>
@@ -109,7 +131,7 @@ import {
IonButton,
IonImg,
} from "@ionic/vue";
import { camera } from "ionicons/icons";
import { camera, star } from "ionicons/icons";
export default {
name: "Shake",
components: {
@@ -137,10 +159,10 @@ export default {
},
methods: {
doShake: function () {
const {fetchRandomCocktail} = useStorage();
const { fetchRandomCocktail } = useStorage();
window.scrollTo({ top: 0, left: 0, behavior: "smooth" });
if(Math.random() > 0.8){
fetchRandomCocktail();
if (Math.random() > 0.8) {
fetchRandomCocktail();
}
this.chosenCocktail =
this.cocktails[Math.floor(Math.random() * this.cocktails.length)];
@@ -148,11 +170,17 @@ export default {
},
},
setup() {
const { takePhoto } = useStorage();
const { takePhoto, favouriseCocktail } = useStorage();
const doFavouriseCocktail = async (cocktail) => {
favouriseCocktail(cocktail);
};
return {
camera,
doFavouriseCocktail,
takePhoto,
camera,
star,
};
},
};
@@ -203,4 +231,16 @@ ion-img.bigimage {
ion-button {
margin: 10px;
}
.icon-star-false {
color: rgb(0, 0, 0);
}
.icon-star-true {
color: rgb(255, 238, 0);
}
.start-icon{
margin: auto;
max-width: 80%;
height: auto;
border-radius: 5%;
}
</style>