Compare commits

...

3 Commits

Author SHA1 Message Date
Thomas L 80b6fd3cf0 make ui fancy 2020-06-20 19:00:43 +02:00
Thomas L 69ff0c24d4 basic functional ui with vue 2020-06-20 17:09:00 +02:00
Thomas L c3f36b89ca add version requirement for python interpreter 2020-06-20 14:50:23 +02:00
3 changed files with 100 additions and 0 deletions

View File

@ -0,0 +1,46 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css"
integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk"
crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<title>Pizzatool</title>
</head>
<body>
<div id="app" class="container">
<h2>Ingredients</h2>
<ul class="list-group">
<li v-for="ingredient in ingredients" class="list-group-item d-flex justify-content-between align-items-center">
{{ ingredient.name }}
<button v-on:click="delete_ingredient(ingredient.id)" class="btn btn-primary">-</button>
</li>
<li class="list-group-item">
<form v-on:submit.prevent="create_ingredient" class="form-inline">
<input v-model="ingredient_name" placeholder="New Ingredient" class="form-control">
<button type="submit" class="btn btn-primary">+</button>
</form>
</li>
</ul>
<h2>Pizzas</h2>
<ul class="list-group">
<li v-for="pizza in pizzas" class="list-group-item d-flex justify-content-between align-items-center">
{{ pizza.name }}
<button v-on:click="delete_pizza(pizza.id)" class="btn btn-primary">-</button>
</li>
<li class="list-group-item">
<form v-on:submit.prevent="create_pizza" class="form-inline">
<input v-model="pizza_name" placeholder="New Pizza" class="form-control">
<button type="submit" class="btn btn-primary">+</button>
</form>
</li>
</ul>
</div>
<script src="ui.js"></script>
</body>
</html>

53
frontend/vue_dl6tom/ui.js Normal file
View File

@ -0,0 +1,53 @@
var app = new Vue({
el: '#app',
data: {
ingredients: [],
ingredient_name: '',
pizzas: [],
pizza_name: '',
},
methods: {
create_ingredient: function() {
axios.post('api/ingredients', {
name: this.ingredient_name,
})
.then(function(response) {
app.ingredients.push(response.data);
});
},
delete_ingredient: function(id) {
axios.delete('api/ingredients/' + id)
.then(function() {
app.ingredients = app.ingredients.filter(function(ingredient) {
return ingredient.id != id;
});
});
},
create_pizza: function() {
axios.post('api/pizzas', {
name: this.pizza_name,
})
.then(function(response) {
app.pizzas.push(response.data);
});
},
delete_pizza: function(id) {
axios.delete('api/pizzas/' + id)
.then(function() {
app.pizzas = app.pizzas.filter(function(pizza) {
return pizza.id != id;
});
});
},
},
mounted: function() {
axios.get('api/ingredients')
.then(function(response) {
app.ingredients = response.data;
});
axios.get('api/pizzas')
.then(function(response) {
app.pizzas = response.data;
});
},
})

View File

@ -12,6 +12,7 @@ setup(
'pizzatool=pizzatool:main',
]
},
python_requires='>=3.7',
install_requires=[
'aiofiles',
'aiosqlite',