forked from DGNum/gestioCOF
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() {
|
static get names() {
|
||||||
return this.models.map(function(v) {
|
return this.models.map(function(v) {
|
||||||
return v.constructor.verbose_name;
|
return v.verbose_name;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -594,6 +594,7 @@ class ModelList {
|
||||||
* @param {Object[]} [datalist=[]]
|
* @param {Object[]} [datalist=[]]
|
||||||
*/
|
*/
|
||||||
constructor(datalist) {
|
constructor(datalist) {
|
||||||
|
this.data = {};
|
||||||
this.from(datalist || []);
|
this.from(datalist || []);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -606,7 +607,7 @@ class ModelList {
|
||||||
*/
|
*/
|
||||||
get_or_create(depth, data) {
|
get_or_create(depth, data) {
|
||||||
var model = this.constructor.models[depth];
|
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){
|
var existing = this.data[name].find(function (v){
|
||||||
return v.id === data['id'] ;
|
return v.id === data['id'] ;
|
||||||
|
@ -616,12 +617,13 @@ class ModelList {
|
||||||
return existing;
|
return existing;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (depth == this.constructor.models.length) {
|
if (depth == this.constructor.models.length-1) {
|
||||||
var created = new model(data) ;
|
var created = new model(data) ;
|
||||||
|
this.data[name].push(created);
|
||||||
return created ;
|
return created ;
|
||||||
} else {
|
} else {
|
||||||
var par_name = this.constructor.models[depth+1]
|
var par_name = this.constructor.models[depth+1]
|
||||||
.constructor.verbose_name;
|
.verbose_name;
|
||||||
|
|
||||||
var par_data = data[par_name];
|
var par_data = data[par_name];
|
||||||
var created = new model(data);
|
var created = new model(data);
|
||||||
|
@ -645,7 +647,7 @@ class ModelList {
|
||||||
}
|
}
|
||||||
|
|
||||||
for (let data of datalist) {
|
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) {
|
render_element(elt, templates, options) {
|
||||||
var name = elt.constructor.verbose_name;
|
var name = elt.constructor.verbose_name;
|
||||||
var depth = this.names.indexOf(name);
|
var depth = this.constructor.names.indexOf(name);
|
||||||
var template = templates[name];
|
var template = templates[name];
|
||||||
|
var options = options || {} ;
|
||||||
|
|
||||||
if (depth == -1) {
|
if (depth == -1) {
|
||||||
return $();
|
return $();
|
||||||
} else if (depth == 0) {
|
} 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 {
|
} else {
|
||||||
var child_model = this.constructor.models[depth-1];
|
var child_model = this.constructor.models[depth-1];
|
||||||
var children = this.data[child_model.verbose_name]
|
var children = this.data[child_model.verbose_name]
|
||||||
.filter(v => v[name].id == elt.id) ;
|
.filter(v => v[name].id == elt.id) ;
|
||||||
children.sort(child_model.compare);
|
children.sort(child_model.compare);
|
||||||
|
|
||||||
$container = elt.display($(template), options);
|
var $container = $('<div></div>');
|
||||||
$container.attr('data'+name+'id', elt.id);
|
$container.attr('data-'+name+'-id', elt.id);
|
||||||
|
$container.append(elt.display($(template), options));
|
||||||
|
|
||||||
for (let child of children) {
|
for (let child of children) {
|
||||||
$container.append(this.render_element(child, templates, options));
|
$container.append(this.render_element(child, templates, options));
|
||||||
|
@ -701,7 +707,7 @@ class ModelList {
|
||||||
roots.sort(root_model.compare);
|
roots.sort(root_model.compare);
|
||||||
|
|
||||||
for (let root of roots) {
|
for (let root of roots) {
|
||||||
$container.append(this.render_element(root, templates, options);
|
$container.append(this.render_element(root, templates, options));
|
||||||
}
|
}
|
||||||
|
|
||||||
return $container;
|
return $container;
|
||||||
|
@ -758,7 +764,7 @@ class APIModelList extends ModelList {
|
||||||
|
|
||||||
api_options['format'] = 'json';
|
api_options['format'] = 'json';
|
||||||
|
|
||||||
$.getJSON(this.url_model, api_options)
|
$.getJSON(this.constructor.url_model, api_options)
|
||||||
.done(function(json, textStatus, jqXHR) {
|
.done(function(json, textStatus, jqXHR) {
|
||||||
that.from(json);
|
that.from(json);
|
||||||
on_success(json, textStatus, jqXHR);
|
on_success(json, textStatus, jqXHR);
|
||||||
|
@ -790,9 +796,10 @@ class ArticleList extends APIModelList {
|
||||||
* @default <tt>django-js-reverse('kfet.kpsul.articles_data')</tt>
|
* @default <tt>django-js-reverse('kfet.kpsul.articles_data')</tt>
|
||||||
* @see {@link Models.APIModelList.url_model|APIModelList.url_model}
|
* @see {@link Models.APIModelList.url_model|APIModelList.url_model}
|
||||||
*/
|
*/
|
||||||
static get url_model {
|
static get url_model() {
|
||||||
return Urls['kfet.kpsul.articles_data'];
|
return Urls['kfet.kpsul.articles_data']();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1040,11 +1047,32 @@ class ArticleCategoryFormatter extends Formatter {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Properties renderable to html.
|
* Properties renderable to html.
|
||||||
* @default {@link Models.Statement.props}
|
* @default {@link Models.ArticleCategory.props}
|
||||||
*/
|
*/
|
||||||
static get props() {
|
static get props() {
|
||||||
return ArticleCategory.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() {
|
static get _data_stock() {
|
||||||
return {
|
return {
|
||||||
|
|
Loading…
Reference in a new issue