From 565a054323c9443c8c70c6de0f294612a7d06691 Mon Sep 17 00:00:00 2001 From: Ludovic Stephan Date: Fri, 17 Mar 2017 17:30:22 -0300 Subject: [PATCH 1/3] Add support for low stock css --- kfet/static/kfet/css/kpsul.css | 4 ++++ kfet/static/kfet/js/kfet.api.js | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/kfet/static/kfet/css/kpsul.css b/kfet/static/kfet/css/kpsul.css index 371331c0..20169e55 100644 --- a/kfet/static/kfet/css/kpsul.css +++ b/kfet/static/kfet/css/kpsul.css @@ -304,6 +304,10 @@ input[type=number]::-webkit-outer-spin-button { font-size:14px; } +#articles_data .article[data_stock="low"] { + background:rgba(236,100,0,0.3); +} + #articles_data span { height:25px; line-height:25px; diff --git a/kfet/static/kfet/js/kfet.api.js b/kfet/static/kfet/js/kfet.api.js index a80b7b9c..679f0e4a 100644 --- a/kfet/static/kfet/js/kfet.api.js +++ b/kfet/static/kfet/js/kfet.api.js @@ -1100,6 +1100,10 @@ class ArticleFormatter extends Formatter { return Article.props; } + static get attrs() { + return ['data_stock']; + } + static prop_price(s) { return amountToUKF(s.price, true); } @@ -1112,7 +1116,7 @@ class ArticleFormatter extends Formatter { } static attr_data_stock(a) { - if (a.stock >= 5) { return this._data_stock.ok; } + if (a.stock > 5) { return this._data_stock.ok; } else if (a.stock >= -5) { return this._data_stock.low; } else /* a.stock < -5 */ { return this._data_stock.neg; } } From fc3e86aea65d0cbbc4fadfeed85cc5b901638dba Mon Sep 17 00:00:00 2001 From: Ludovic Stephan Date: Sat, 18 Mar 2017 22:06:30 -0300 Subject: [PATCH 2/3] Add websocket support to ArticleManager --- kfet/static/kfet/js/kpsul.js | 5 +++-- kfet/templates/kfet/kpsul.html | 8 +++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/kfet/static/kfet/js/kpsul.js b/kfet/static/kfet/js/kpsul.js index 1a6ca4b2..fd7b1a1f 100644 --- a/kfet/static/kfet/js/kpsul.js +++ b/kfet/static/kfet/js/kpsul.js @@ -415,9 +415,10 @@ class ArticleManager { this.list.fromAPI({}, this.display_list.bind(this), $.noop) ; } + //TODO: filter articles before ? update_data(data) { - for (let article_dict of data) { - article = this.list.find('article', article_dict['id']); + for (let article_dict of data.articles) { + var article = this.list.find('article', article_dict['id']); // For now, article additions are disregarded if (article) { diff --git a/kfet/templates/kfet/kpsul.html b/kfet/templates/kfet/kpsul.html index 31714bdb..8fd903df 100644 --- a/kfet/templates/kfet/kpsul.html +++ b/kfet/templates/kfet/kpsul.html @@ -799,11 +799,9 @@ $(document).ready(function() { displayCheckoutData(); } } - for (var i=0; i Date: Mon, 20 Mar 2017 00:26:11 -0300 Subject: [PATCH 3/3] Change node.type to node.modelname for clarity --- kfet/static/kfet/js/kfet.api.js | 20 ++++++++++---------- kfet/static/kfet/js/kpsul.js | 10 +++++----- kfet/views.py | 4 ++-- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/kfet/static/kfet/js/kfet.api.js b/kfet/static/kfet/js/kfet.api.js index 679f0e4a..d2fca5d7 100644 --- a/kfet/static/kfet/js/kfet.api.js +++ b/kfet/static/kfet/js/kfet.api.js @@ -560,7 +560,7 @@ class Article extends ModelObject { class TreeNode { constructor(type, content) { - this.type = type; + this.modelname = type; this.content = content; this.parent = null; this.children = []; @@ -611,15 +611,15 @@ class ModelForest { * @param {number} direction */ get_or_create(data, direction) { - var model = this.constructor.models[data.type]; + var model = this.constructor.models[data.modelname]; - var existing = this.find(data.type, data.content.id); + var existing = this.find(data.modelname, data.content.id); if (existing) { return existing; } - var content = new this.constructor.models[data.type](data.content); - var node = new TreeNode(data.type, content); + var content = new this.constructor.models[data.modelname](data.content); + var node = new TreeNode(data.modelname, content); if (data.child_sort) node.child_sort = data.child_sort @@ -671,11 +671,11 @@ class ModelForest { * @param {Object} [options] Options for element render method */ render_element(node, templates, options) { - var template = templates[node.type]; + var template = templates[node.modelname]; var options = options || {} ; var $container = $('
'); - $container.attr('id', node.type+'-'+node.content.id); + $container.attr('id', node.modelname+'-'+node.content.id); var $rendered = node.content.display($(template), options); $container.append($rendered); @@ -695,13 +695,13 @@ class ModelForest { var existing = node.parent ; var first_missing = node; - while (existing && !($container.find('#'+existing.type+'-'+existing.id))) { + while (existing && !($container.find('#'+existing.modelname+'-'+existing.id))) { first_missing = existing ; existing = existing.parent; } var $to_insert = render_element(first_missing, templates, options); - var $insert_in = existing ? $container.find('#'+existing.type+'-'+existing.id) + var $insert_in = existing ? $container.find('#'+existing.modelname+'-'+existing.id) : $container ; $insert_in.prepend($to_insert); } @@ -741,7 +741,7 @@ class ModelForest { find(type, id) { var result = null; function callback(node) { - if (node.type === type && node.content.id == id) + if (node.modelname === type && node.content.id == id) result = node ; } diff --git a/kfet/static/kfet/js/kpsul.js b/kfet/static/kfet/js/kpsul.js index fd7b1a1f..49c61468 100644 --- a/kfet/static/kfet/js/kpsul.js +++ b/kfet/static/kfet/js/kpsul.js @@ -528,7 +528,7 @@ class ArticleAutocomplete { var that = this ; article_list.traverse(function(node) { - if (node.type === 'article' && + if (node.modelname === 'article' && node.content.name.toLowerCase() .startsWith(lower)) { that.matching['article'].push(node.content); @@ -557,11 +557,11 @@ class ArticleAutocomplete { var that = this; this.manager.list.traverse(function(node) { - if (that.matching[node.type].indexOf(node.content) != -1) { - that._$container.find('#'+node.type+'-'+node.content.id) + if (that.matching[node.modelname].indexOf(node.content) != -1) { + that._$container.find('#'+node.modelname+'-'+node.content.id) .show(); } else { - that._$container.find('#'+node.type+'-'+node.content.id) + that._$container.find('#'+node.modelname+'-'+node.content.id) .hide(); } }); @@ -584,7 +584,7 @@ class ArticleAutocomplete { var that = this; this.resetMatch(); this.manager.list.traverse(function(node) { - that.matching[node.type].push(node.content); + that.matching[node.modelname].push(node.content); }); this.updateDisplay(); } diff --git a/kfet/views.py b/kfet/views.py index 1fd9322c..befe92d4 100644 --- a/kfet/views.py +++ b/kfet/views.py @@ -1349,7 +1349,7 @@ def kpsul_articles_data(request): for article in articles: articlelist.append({ - 'type': 'article', + 'modelname': 'article', 'content': { 'id': article.id, 'name': article.name, @@ -1357,7 +1357,7 @@ def kpsul_articles_data(request): 'stock': article.stock, }, 'parent': { - 'type': 'category', + 'modelname': 'category', 'content': { 'id': article.category.id, 'name': article.category.name,