add food rating
This commit is contained in:
parent
8286aec27b
commit
ef59883834
@ -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'),
|
||||
]
|
||||
|
||||
@ -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()
|
||||
|
||||
65
ofu_app/static/js/food/rating.js
Normal file
65
ofu_app/static/js/food/rating.js
Normal 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();
|
||||
}
|
||||
4
ofu_app/static/libs/jquery/jquery-3.2.1.min.js
vendored
Normal file
4
ofu_app/static/libs/jquery/jquery-3.2.1.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -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) }}
|
||||
|
||||
@ -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 %}
|
||||
@ -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 %}
|
||||
|
||||
Reference in New Issue
Block a user