articlelist and modellist finished
This commit is contained in:
parent
fe8e5d7e46
commit
c9b7683238
1 changed files with 42 additions and 14 deletions
|
@ -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 {
|
||||
|
|
Loading…
Add table
Reference in a new issue