From 935dee853e46d5bf70ee3f924343426c5413a970 Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Tue, 26 Jan 2021 19:19:42 +0100 Subject: [PATCH] added ordering of supermarket categories --- cookbook/models.py | 3 +++ cookbook/serializer.py | 2 +- cookbook/templates/shopping_list.html | 24 +++++++++++++++++++++--- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/cookbook/models.py b/cookbook/models.py index c807bd21d..800e4f1da 100644 --- a/cookbook/models.py +++ b/cookbook/models.py @@ -166,6 +166,9 @@ class SupermarketCategoryRelation(models.Model): category = models.ForeignKey(SupermarketCategory, on_delete=models.CASCADE, related_name='category_to_supermarket') order = models.IntegerField(default=0) + class Meta: + ordering = ('order',) + class SyncLog(models.Model): sync = models.ForeignKey(Sync, on_delete=models.CASCADE) diff --git a/cookbook/serializer.py b/cookbook/serializer.py index 5f34ecbdf..8a824fdf0 100644 --- a/cookbook/serializer.py +++ b/cookbook/serializer.py @@ -161,7 +161,7 @@ class SupermarketCategoryRelationSerializer(serializers.ModelSerializer): class Meta: model = SupermarketCategoryRelation - fields = ('id', 'category', 'supermarket') + fields = ('id', 'category', 'supermarket', 'order') class SupermarketSerializer(UniqueFieldsMixin, serializers.ModelSerializer): diff --git a/cookbook/templates/shopping_list.html b/cookbook/templates/shopping_list.html index e6a168e5d..5e7805737 100644 --- a/cookbook/templates/shopping_list.html +++ b/cookbook/templates/shopping_list.html @@ -403,7 +403,8 @@ no_category: { name: gettext('Uncategorized'), id: -1, - entries: [] + entries: [], + order: 99999999 } } @@ -412,6 +413,7 @@ categories[e.food.supermarket_category.id] = { name: e.food.supermarket_category.name, id: e.food.supermarket_category.id, + order: 0, entries: [] }; } @@ -422,6 +424,7 @@ categories[el.category.id] = { name: el.category.name, id: el.category.id, + order: el.order, entries: [] }; }) @@ -449,11 +452,26 @@ } }); - return categories + let ordered_categories = [] + for (let [i,v] of Object.entries(categories)){ + ordered_categories.push(v) + } + + ordered_categories.sort(function (a, b) { + if (a.order < b.order) { + return -1 + } else if (a.order > b.order) { + return 1 + } else { + return 0 + } + }) + + return ordered_categories }, export_text() { let text = '' - for (let [i, c] of Object.entries(this.display_categories)) { + for (let c of this.display_categories) { for (let e of c.entries.filter(item => item.checked === false)) { text += `${this.export_text_prefix}${e.amount} ${e.unit.name} ${e.food.name} \n` }