articlelist and modellist finished

This commit is contained in:
Ludovic Stephan 2017-03-09 09:20:53 -03:00
parent fe8e5d7e46
commit c9b7683238

View file

@ -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 = $('<div></div>');
$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 <tt>django-js-reverse('kfet.kpsul.articles_data')</tt>
* @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 {