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'^daily/$', views.daily_food, name='daily-food'),
|
||||||
url(r'^weekly/$', views.weekly_food, name='weekly-food'),
|
url(r'^weekly/$', views.weekly_food, name='weekly-food'),
|
||||||
url(r'^all/$', views.food, name='all-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 django.shortcuts import render
|
||||||
|
|
||||||
from apps.food.models import Menu, HappyHour
|
from apps.food.models import Menu, HappyHour, SingleFood
|
||||||
|
|
||||||
|
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
def daily_food(request):
|
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()
|
today = datetime.datetime.now()
|
||||||
daily_menus = Menu.objects.filter(date__exact=today)
|
daily_menus = Menu.objects.filter(date__exact=today)
|
||||||
feki_menu = Menu.objects.filter(date__exact=today).filter(location__contains="Feldkirchenstraße").last()
|
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 %}
|
{% block content %}
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
{{ macros.day_menu(title='Feki', location_menu=feki_menu, fail_text='Die Feki 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.') }}
|
{{ macros.day_menu(title='Austraße', location_menu=austr_menu, fail_text='Die Austr Mensa hat heute geschlossen.', css_id="austr") }}
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
{{ macros.day_menu(title='Erba', location_menu=erba_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') }}
|
{{ macros.day_menu(title='Markusplatz', location_menu=markus_cafete, fail_text='Aktuell gibt es keine warmen Speisen',css_id="markuspl") }}
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
{{ macros.happy_hours(happy_hours=happy_hours) }}
|
{{ macros.happy_hours(happy_hours=happy_hours) }}
|
||||||
|
|||||||
@ -1,12 +1,16 @@
|
|||||||
{% extends 'base.jinja' %}
|
{% 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 %}
|
{% block css_extra %}
|
||||||
<link rel="stylesheet" href="{{ static('css/food/main.css') }}">
|
<link rel="stylesheet" href="{{ static('css/food/main.css') }}">
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block bottom_nav %}
|
{% block bottom_nav %}
|
||||||
<nav id="food-nav" class="navbar navbar-default bg-light">
|
<nav id="food-nav" class="navbar navbar-default bg-light">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<a class="nav-link" href="{{ url('daily-food') }}">Daily</a>
|
<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('weekly-food') }}"> Weekly </a>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
@ -1,5 +1,5 @@
|
|||||||
{% macro day_menu(title, location_menu, fail_text) -%}
|
{% macro day_menu(title, location_menu, fail_text, css_id='menu') -%}
|
||||||
<div class="col p-2">
|
<div id="{{ css_id }}" class="col p-2 menu">
|
||||||
<div class="p-3 border border-dark rounded bg-light text-dark">
|
<div class="p-3 border border-dark rounded bg-light text-dark">
|
||||||
<h2>{{ title }} </h2>
|
<h2>{{ title }} </h2>
|
||||||
{% if location_menu %}
|
{% if location_menu %}
|
||||||
@ -18,8 +18,10 @@
|
|||||||
<h2>{{ title }}</h2>
|
<h2>{{ title }}</h2>
|
||||||
{% if location_menus %}
|
{% if location_menus %}
|
||||||
{% for menu in location_menus %}
|
{% for menu in location_menus %}
|
||||||
<p><strong>{{ menu.date.strftime('%A, %m.%Y') }}</strong></p>
|
<div class="menu">
|
||||||
{{ get_menu(menu.menu.all()) }}
|
<p><strong>{{ menu.date.strftime('%A, %m.%Y') }}</strong></p>
|
||||||
|
{{ get_menu(menu.menu.all()) }}
|
||||||
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% else %}
|
{% else %}
|
||||||
<p> {{ fail_text }}</p>
|
<p> {{ fail_text }}</p>
|
||||||
@ -31,8 +33,10 @@
|
|||||||
{% macro get_menu(menu) -%}
|
{% macro get_menu(menu) -%}
|
||||||
<ul class="border">
|
<ul class="border">
|
||||||
{% for single_food in menu %}
|
{% for single_food in menu %}
|
||||||
<li><p>{{ single_food.name }} <i class="fa fa-star-o" aria-hidden="true"></i>
|
<li data-food="{{ single_food.id }}" data-rating="{{ single_food.rating }}" class="food-item">
|
||||||
</p></li>
|
<p>{{ single_food.name }}<span
|
||||||
|
class="rating-wrapper"></span></p>
|
||||||
|
</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
{% endmacro %}
|
{% endmacro %}
|
||||||
|
|||||||
Reference in New Issue
Block a user