From c9b7683238095b98ae811cd853e731e89a568479 Mon Sep 17 00:00:00 2001 From: Ludovic Stephan Date: Thu, 9 Mar 2017 09:20:53 -0300 Subject: [PATCH] articlelist and modellist finished --- kfet/static/kfet/js/kfet.api.js | 56 ++++++++++++++++++++++++--------- 1 file changed, 42 insertions(+), 14 deletions(-) diff --git a/kfet/static/kfet/js/kfet.api.js b/kfet/static/kfet/js/kfet.api.js index 9beefbb6..4747dfce 100644 --- a/kfet/static/kfet/js/kfet.api.js +++ b/kfet/static/kfet/js/kfet.api.js @@ -585,7 +585,7 @@ class ModelList { */ static get names() { return this.models.map(function(v) { - return v.constructor.verbose_name; + return v.verbose_name; }); } @@ -594,6 +594,7 @@ class ModelList { * @param {Object[]} [datalist=[]] */ constructor(datalist) { + this.data = {}; this.from(datalist || []); } @@ -606,7 +607,7 @@ class ModelList { */ get_or_create(depth, data) { var model = this.constructor.models[depth]; - var name = model.constructor.verbose_name ; + var name = model.verbose_name ; var existing = this.data[name].find(function (v){ return v.id === data['id'] ; @@ -616,12 +617,13 @@ class ModelList { return existing; } - if (depth == this.constructor.models.length) { + if (depth == this.constructor.models.length-1) { var created = new model(data) ; + this.data[name].push(created); return created ; } else { var par_name = this.constructor.models[depth+1] - .constructor.verbose_name; + .verbose_name; var par_data = data[par_name]; var created = new model(data); @@ -645,7 +647,7 @@ class ModelList { } for (let data of datalist) { - this.get_or_create(data, 0); + this.get_or_create(0, data); } } @@ -665,21 +667,25 @@ class ModelList { */ render_element(elt, templates, options) { var name = elt.constructor.verbose_name; - var depth = this.names.indexOf(name); + var depth = this.constructor.names.indexOf(name); var template = templates[name]; + var options = options || {} ; if (depth == -1) { return $(); } else if (depth == 0) { - return elt.display($(template), options); + var $rendered = elt.display($(template), options); + $rendered.attr('data-'+name+'-id', elt.id); + return $rendered; } else { var child_model = this.constructor.models[depth-1]; var children = this.data[child_model.verbose_name] .filter(v => v[name].id == elt.id) ; children.sort(child_model.compare); - $container = elt.display($(template), options); - $container.attr('data'+name+'id', elt.id); + var $container = $('
'); + $container.attr('data-'+name+'-id', elt.id); + $container.append(elt.display($(template), options)); for (let child of children) { $container.append(this.render_element(child, templates, options)); @@ -701,7 +707,7 @@ class ModelList { roots.sort(root_model.compare); for (let root of roots) { - $container.append(this.render_element(root, templates, options); + $container.append(this.render_element(root, templates, options)); } return $container; @@ -758,7 +764,7 @@ class APIModelList extends ModelList { api_options['format'] = 'json'; - $.getJSON(this.url_model, api_options) + $.getJSON(this.constructor.url_model, api_options) .done(function(json, textStatus, jqXHR) { that.from(json); on_success(json, textStatus, jqXHR); @@ -790,9 +796,10 @@ class ArticleList extends APIModelList { * @default django-js-reverse('kfet.kpsul.articles_data') * @see {@link Models.APIModelList.url_model|APIModelList.url_model} */ - static get url_model { - return Urls['kfet.kpsul.articles_data']; + static get url_model() { + return Urls['kfet.kpsul.articles_data'](); } +} @@ -1040,11 +1047,32 @@ class ArticleCategoryFormatter extends Formatter { /** * Properties renderable to html. - * @default {@link Models.Statement.props} + * @default {@link Models.ArticleCategory.props} */ static get props() { return ArticleCategory.props; } +} + + +/** + * @memberof Formatters + * @extends Formatters.Formatter + */ + +class ArticleFormatter extends Formatter { + + /** + * Properties renderable to html. + * @default {@link Models.Article.props} + */ + static get props() { + return Article.props; + } + + static prop_price(s) { + return amountToUKF(s.price, true); + } static get _data_stock() { return {