add food rating

This commit is contained in:
Götz 2017-10-20 05:44:03 +02:00
parent 8286aec27b
commit ef59883834
7 changed files with 102 additions and 13 deletions

View File

@ -23,4 +23,5 @@ urlpatterns = [
url(r'^daily/$', views.daily_food, name='daily-food'),
url(r'^weekly/$', views.weekly_food, name='weekly-food'),
url(r'^all/$', views.food, name='all-food'),
url(r'^daily/$', views.daily_food, name='daily-food'),
]

View File

@ -5,11 +5,22 @@ import datetime
from django.shortcuts import render
from apps.food.models import Menu, HappyHour
from apps.food.models import Menu, HappyHour, SingleFood
# Create your views here.
def daily_food(request):
print(
"REQUEST------------------------------------------------------------------------------------------------------")
id = request.GET.get('food_id', None)
rating = request.GET.get('rating', None)
print("ID: %s, RATING: %s" % (id, rating))
if id and rating:
food = SingleFood.objects.get(id=id)
food.rating = rating
food.save()
print("DONE")
today = datetime.datetime.now()
daily_menus = Menu.objects.filter(date__exact=today)
feki_menu = Menu.objects.filter(date__exact=today).filter(location__contains="Feldkirchenstraße").last()

View File

@ -0,0 +1,65 @@
/**
* Created by michigg on 20.10.17.
*/
document.addEventListener('DOMContentLoaded', rate_init);
function rate_init() {
add_Stars('feki');
add_Stars('austr');
add_Stars('erba');
add_Stars('markuspl');
$('.star').on("mouseenter mouseleave", function () {
showRating(this);
}).on("click", function () {
sendRating(this);
})
}
function add_Stars(id) {
$('#' + id + ' .food-item').each(function () {
console.log($(this).data('food'));
console.log($(this).data('rating'));
var food = $(this).data('food');
var rating = $(this).data('rating');
for (var i = 0; i < 5; i++) {
$(this).find('.rating-wrapper').append('<i id="star-' + (i + 1) + '-' + id + '-' + food + '" class="fa fa-star-o star" aria-hidden="true"></i>');
}
buildRating(id, food, rating);
});
}
function showRating(obj) {
//console.log($(obj).attr('id'));
splitted_id = $(obj).attr('id').split('-');
var rating = splitted_id[1];
var id = splitted_id[2];
var food = splitted_id[3];
buildRating(id, food, rating);
}
function buildRating(id, food, rating) {
for (var i = 0; i < 5; i++) {
var icon_id = '#star-' + (i + 1) + '-' + id + '-' + food;
if (i < rating) {
$(icon_id).removeClass('fa-star-o').addClass('fa-star');
} else {
$(icon_id).removeClass('fa-star').addClass('fa-star-o');
}
}
}
function sendRating(obj) {
splitted_id = $(obj).attr('id').split('-');
var rating = splitted_id[1];
var food_id = splitted_id[3];
//TODO: Better URL handling
var url = window.location.href;
console.log(url);
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
}
};
xhttp.open("GET", url + "?rating=" + rating + "&food_id=" + food_id, true);
xhttp.send();
}

File diff suppressed because one or more lines are too long

View File

@ -7,12 +7,12 @@
{% block content %}
<div class="container">
<div class="row">
{{ macros.day_menu(title='Feki', location_menu=feki_menu, fail_text='Die Feki Mensa hat heute geschlossen.') }}
{{ macros.day_menu(title='Austraße', location_menu=austr_menu, fail_text='Die Austr Mensa hat heute geschlossen.') }}
{{ macros.day_menu(title='Feki', location_menu=feki_menu, fail_text='Die Feki Mensa hat heute geschlossen.', css_id="feki") }}
{{ macros.day_menu(title='Austraße', location_menu=austr_menu, fail_text='Die Austr Mensa hat heute geschlossen.', css_id="austr") }}
</div>
<div class="row">
{{ macros.day_menu(title='Erba', location_menu=erba_cafete, fail_text='Aktuell gibt es keine warmen Speisen') }}
{{ macros.day_menu(title='Markusplatz', location_menu=markus_cafete, fail_text='Aktuell gibt es keine warmen Speisen') }}
{{ macros.day_menu(title='Erba', location_menu=erba_cafete, fail_text='Aktuell gibt es keine warmen Speisen', css_id="erba") }}
{{ macros.day_menu(title='Markusplatz', location_menu=markus_cafete, fail_text='Aktuell gibt es keine warmen Speisen',css_id="markuspl") }}
</div>
<div class="row">
{{ macros.happy_hours(happy_hours=happy_hours) }}

View File

@ -1,12 +1,16 @@
{% extends 'base.jinja' %}
{% block js_extra %}
<script src="{{ static('libs/jquery/jquery-3.2.1.min.js') }}"></script>
<script src="{{ static('js/food/rating.js') }}"></script>
{% endblock %}
{% block css_extra %}
<link rel="stylesheet" href="{{ static('css/food/main.css') }}">
{% endblock %}
{% block bottom_nav %}
<nav id="food-nav" class="navbar navbar-default bg-light">
<div class="container">
<a class="nav-link" href="{{ url('daily-food') }}">Daily</a>
<a class="nav-link" href="{{ url('weekly-food') }}">Weekly</a>
<a class="nav-link" href="{{ url('daily-food') }}"> Daily </a>
<a class="nav-link" href="{{ url('weekly-food') }}"> Weekly </a>
</div>
</nav>
{% endblock %}

View File

@ -1,5 +1,5 @@
{% macro day_menu(title, location_menu, fail_text) -%}
<div class="col p-2">
{% macro day_menu(title, location_menu, fail_text, css_id='menu') -%}
<div id="{{ css_id }}" class="col p-2 menu">
<div class="p-3 border border-dark rounded bg-light text-dark">
<h2>{{ title }} </h2>
{% if location_menu %}
@ -18,8 +18,10 @@
<h2>{{ title }}</h2>
{% if location_menus %}
{% for menu in location_menus %}
<p><strong>{{ menu.date.strftime('%A, %m.%Y') }}</strong></p>
{{ get_menu(menu.menu.all()) }}
<div class="menu">
<p><strong>{{ menu.date.strftime('%A, %m.%Y') }}</strong></p>
{{ get_menu(menu.menu.all()) }}
</div>
{% endfor %}
{% else %}
<p> {{ fail_text }}</p>
@ -31,8 +33,10 @@
{% macro get_menu(menu) -%}
<ul class="border">
{% for single_food in menu %}
<li><p>{{ single_food.name }} <i class="fa fa-star-o" aria-hidden="true"></i>
</p></li>
<li data-food="{{ single_food.id }}" data-rating="{{ single_food.rating }}" class="food-item">
<p>{{ single_food.name }}<span
class="rating-wrapper"></span></p>
</li>
{% endfor %}
</ul>
{% endmacro %}