Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 40e8dc6cae | |||
| 712f0e594f | |||
| a32c75ac64 | |||
| b54378e759 | |||
| aaa7aeab81 | |||
| 12e9b7357c | |||
| a529148bac | |||
| df992c0c29 | |||
| cdca730448 | |||
| 181b6c41da | |||
| 879842aa06 |
22
Readme.md
22
Readme.md
@@ -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.
BIN
android/app/release/app-release.aab
Normal file
BIN
android/app/release/app-release.aab
Normal file
Binary file not shown.
Binary file not shown.
@@ -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>
|
||||
|
||||
@@ -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)"
|
||||
}
|
||||
@@ -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')
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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 }],
|
||||
|
||||
@@ -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,9 +159,9 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
doShake: function () {
|
||||
const {fetchRandomCocktail} = useStorage();
|
||||
const { fetchRandomCocktail } = useStorage();
|
||||
window.scrollTo({ top: 0, left: 0, behavior: "smooth" });
|
||||
if(Math.random() > 0.8){
|
||||
if (Math.random() > 0.8) {
|
||||
fetchRandomCocktail();
|
||||
}
|
||||
this.chosenCocktail =
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user