Add jsdoc comments to history models

This commit is contained in:
Ludovic Stephan 2017-03-17 21:00:58 -03:00
parent 58c57c6f89
commit b0b1fdf936

View file

@ -85,7 +85,18 @@ class Config {
* Models without API support: * Models without API support:
* {@link Models.Statement}, * {@link Models.Statement},
* {@link Models.ArticleCategory}, * {@link Models.ArticleCategory},
* {@link Models.Article}. * {@link Models.Article},
* {@link Models.HistoryGroup},
* {@link Models.OperationGroup},
* {@link Models.TransferGroup},
* {@link Models.Operation},
* {@link Models.Purchase},
* {@link Models.SpecialOperation},
* {@link Models.Transfer}.
* <br>
* Implementations of ModelForest:
* {@link Models.ArticleList}
* {@link Models.OperationList}
* *
* @namespace Models * @namespace Models
*/ */
@ -168,8 +179,7 @@ class ModelObject {
} }
/** /**
* Returns a string value for the model, to use in comparisons * Compares two ModelObject instances.
* @see {@link Models.TreeNode.compare|TreeNode.compare}
*/ */
static compare(a, b) { static compare(a, b) {
return a.id - b.id; return a.id - b.id;
@ -569,13 +579,6 @@ class Day extends ModelObject {
*/ */
static get default_data() { return {'id': '', 'date': moment()}; } static get default_data() { return {'id': '', 'date': moment()}; }
/**
* Verbose name for Day model.
* @default <tt>'day'</tt>
* @see {@link Models.ModelObject.verbose_name[ModelObject.verbose_name}
*/
static get verbose_name() { return 'day'; }
/** /**
* @default {@link Formatters.DayFormatter} * @default {@link Formatters.DayFormatter}
*/ */
@ -600,22 +603,34 @@ class Day extends ModelObject {
} }
/** /**
* HistoryGroup model. Should not be used without extending. * HistoryGroup model. Should not be used directly.
* @extends Models.ModelObject * @extends Models.ModelObject
* @memberof Models * @memberof Models
*/ */
class HistoryGroup extends ModelObject { class HistoryGroup extends ModelObject {
/**
* Properties assowiated to HistoryGroup instances.
* @default <tt>['id', 'at', 'comment', 'valid_by']</tt>
* @see {@link Models.ModelObject.props|ModelObject.props}
*/
static get props() { static get props() {
return ['id', 'at', 'comment', 'valid_by']; return ['id', 'at', 'comment', 'valid_by'];
} }
/**
* Default values for HistoryGroup model instances
* @default <tt>{ 'id': 0, 'at': moment(), 'comment': '',
'valid_by': '' }</tt>
* @see {@link Models.ModelObject.default_data|ModelObject.default_data}
*/
static get default_data() { static get default_data() {
return {'id': 0, 'at': moment(), 'comment': '', return {'id': 0, 'at': moment(), 'comment': '',
'valid_by': '',}; 'valid_by': '',};
} }
/** /**
* Comparison function between OperationGroup model instances. * Comparison function between HistoryGroup model instances.
* @see {@link Models.ModelObject.compare|ModelObject.compare} * @see {@link Models.ModelObject.compare|ModelObject.compare}
*/ */
static compare(a, b) { static compare(a, b) {
@ -639,8 +654,7 @@ class OperationGroup extends HistoryGroup {
/** /**
* Properties associated with an opegroup. * Properties associated with an opegroup.
* @default <tt>['id', 'amount', 'at', 'is_cof', * @default <tt>{@link Models.HistoryGroup.props|HistoryGroup.props} + ['is_cof', 'trigramme']</tt>
* 'comment', 'trigramme', 'valid_by', 'day', 'type']</tt>
* @see {@link Models.ModelObject.props|ModelObject.props} * @see {@link Models.ModelObject.props|ModelObject.props}
*/ */
static get props() { static get props() {
@ -649,8 +663,8 @@ class OperationGroup extends HistoryGroup {
/** /**
* Default values for OperationGroup instances. * Default values for OperationGroup instances.
* @default <tt>{'id': 0, 'amount': 0, 'at': moment(), 'is_cof': false, * @default <tt>{@link Models.HistoryGroup.default_data|HistoryGroup.default_data} +
'comment': '', 'trigramme': '', 'valid_by': ''}</tt> * {'amount': 0, 'is_cof': false, 'trigramme': ''}</tt>
* @see {@link Models.ModelObject.default_data|ModelObject.default_data} * @see {@link Models.ModelObject.default_data|ModelObject.default_data}
*/ */
static get default_data() { static get default_data() {
@ -693,9 +707,7 @@ class Operation extends ModelObject {
/** /**
* Properties associated to an operation. * Properties associated to an operation.
* @default <tt>['id', 'type', 'amount', 'article_name', 'article_nb', * @default <tt>['id', 'amount', 'canceled_at', 'canceled_by']</tt>
* 'is_checkout', 'addcost_amount', 'addcost_for', 'canceled_at',
* 'canceled_by', 'from_acc', 'to_acc', 'opegroup']</tt>
* @see {@link Models.ModelObject.props|ModelObject.props} * @see {@link Models.ModelObject.props|ModelObject.props}
*/ */
static get props() { static get props() {
@ -704,9 +716,7 @@ class Operation extends ModelObject {
/** /**
* Default values for Operation model instances * Default values for Operation model instances
* @default <tt>{'id': 0, 'type': '', 'amount': 0, 'article_name': '', * @default <tt>{'id': '', 'amount': 0, 'canceled_at': undefined, 'canceled_by': '' }</tt>
* 'article_nb': 0, 'is_checkout': false, 'addcost_amount': 0,
* 'addcost_for': '', 'canceled_at': undefined, 'canceled_by': ''}</tt>
* @see {@link Models.ModelObject.default_data|ModelObject.default_data} * @see {@link Models.ModelObject.default_data|ModelObject.default_data}
*/ */
static get default_data() { static get default_data() {
@ -725,13 +735,33 @@ class Operation extends ModelObject {
} }
} }
/**
* Purchase model. Cannot be accessed through API.
* @extends Models.Operation
* @memberof Models
*/
class Purchase extends Operation { class Purchase extends Operation {
/**
* Additional properties for purchases.
* @default <tt>{@link Models.Operation.props|Operation.props} + ['article_name', 'article_nb',
* 'addcost_amount', 'addcost_for']</tt>
* @see {@link Models.ModelObject.props|ModelObject.props}
*/
static get props() { static get props() {
return Operation.props.concat( return Operation.props.concat(
['article_name', 'article_nb', 'addcost_amount', 'addcost_for'] ['article_name', 'article_nb', 'addcost_amount', 'addcost_for']
); );
} }
/**
* Default values for Operation model instances
* @default <tt>{@link Models.Operation.default_data|Operation.default_data} + {
* 'article_name': '', 'article_nb': 0,
* 'addcost_amount': 0, 'addcost_for': ''
* }
* @see {@link Models.ModelObject.default_data|ModelObject.default_data}
*/
static get default_data() { static get default_data() {
return $.extend({}, Operation.default_data, { return $.extend({}, Operation.default_data, {
'article_name': '', 'article_nb': 0, 'article_name': '', 'article_nb': 0,
@ -739,34 +769,75 @@ class Purchase extends Operation {
}); });
} }
/**
* @default {@link Formatters.PurchaseFormatter}
*/
formatter() { formatter() {
return PurchaseFormatter; return PurchaseFormatter;
} }
} }
/**
* Special operation model. Cannot be accessed through API.
* @extends Models.Operation
* @memberof Models
*/
class SpecialOperation extends Operation { class SpecialOperation extends Operation {
/**
* Additional properties for special operations.
* @default <tt>{@link Models.Operation.props|Operation.props} + ['type', 'is_checkout']</tt>
* @see {@link Models.ModelObject.props|ModelObject.props}
*/
static get props() { static get props() {
return Operation.props.concat(['type', 'is_checkout']); return Operation.props.concat(['type', 'is_checkout']);
} }
/**
* Default values for SpecialOperation model instances
* @default <tt>{@link Models.Operation.default_data|Operation.default_data} + {'type': '', 'is_checkout': false}
* @see {@link Models.ModelObject.default_data|ModelObject.default_data}
*/
static get default_data() { static get default_data() {
return $.extend({}, Operation.default_data, {'type': '', 'is_checkout': false}); return $.extend({}, Operation.default_data, {'type': '', 'is_checkout': false});
} }
/**
* @default {@link Formatters.SpecialOpeFormatter}
*/
formatter() { formatter() {
return SpecialOpeFormatter; return SpecialOpeFormatter;
} }
} }
/**
* Transfer model. Cannot be accessed through API.
* @exetends Models.Operation
* @memberof Models
*/
class Transfer extends Operation { class Transfer extends Operation {
/**
* Additional properties for transfers.
* @default <tt>{@link Models.Operation.props|Operation.props} + ['from_acc', 'to_acc']</tt>
* @see {@link Models.ModelObject.props|ModelObject.props}
*/
static get props() { static get props() {
return Operation.props.concat(['from_acc', 'to_acc']); return Operation.props.concat(['from_acc', 'to_acc']);
} }
/**
* Default values for Transfer model instances
* @default <tt>{@link Models.Operation.default_data|Operation.default_data} + {'from_acc': '', 'to_acc': ''}
* @see {@link Models.ModelObject.default_data|ModelObject.default_data}
*/
static get default_data() { static get default_data() {
return $.extend({}, Operation.default_data, {'from_acc': '', 'to_acc': ''}); return $.extend({}, Operation.default_data, {'from_acc': '', 'to_acc': ''});
} }
/**
* @default {@link Formatters.TransferFormatter}
*/
formatter() { formatter() {
return TransferFormatter; return TransferFormatter;
} }
@ -1346,7 +1417,6 @@ class ArticleCategoryFormatter extends Formatter {
* @memberof Formatters * @memberof Formatters
* @extends Formatters.Formatter * @extends Formatters.Formatter
*/ */
class ArticleFormatter extends Formatter { class ArticleFormatter extends Formatter {
/** /**
@ -1357,6 +1427,9 @@ class ArticleFormatter extends Formatter {
return Article.props; return Article.props;
} }
/**
* <tt>s.price</tt> converted to UKF.
*/
static prop_price(s) { static prop_price(s) {
return amountToUKF(s.price, true); return amountToUKF(s.price, true);
} }
@ -1368,10 +1441,13 @@ class ArticleFormatter extends Formatter {
}; };
} }
static attr_data_stock(a) { /**
if (a.stock >= 5) { return this._data_stock.ok; } * Value of data_stock attribute based on s.stock.
else if (a.stock >= -5) { return this._data_stock.low; } */
else /* a.stock < -5 */ { return this._data_stock.neg; } static attr_data_stock(s) {
if (s.stock >= 5) { return this._data_stock.ok; }
else if (s.stock >= -5) { return this._data_stock.low; }
else /* s.stock < -5 */{ return this._data_stock.neg; }
} }
} }
@ -1381,13 +1457,18 @@ class ArticleFormatter extends Formatter {
* @memberof Formatters * @memberof Formatters
* @todo don't display trigramme in account_read * @todo don't display trigramme in account_read
*/ */
class HistoryGroupFormatter extends Formatter { class HistoryGroupFormatter extends Formatter {
/**
* <tt>a.time<tt> formatted as <tt>HH:mm:ss</tt>
*/
static prop_time(a) { static prop_time(a) {
return a.at.format('HH:mm:ss'); return a.at.format('HH:mm:ss');
} }
/**
* <tt>valid_by</tt> property is displayed only if <tt>a.valid_by</tt> is nonempty.
*/
static prop_valid_by(a) { static prop_valid_by(a) {
if (a.valid_by) if (a.valid_by)
return 'Par '+a.valid_by; return 'Par '+a.valid_by;
@ -1396,24 +1477,46 @@ class HistoryGroupFormatter extends Formatter {
} }
} }
/**
* @memberof Formatters
* @extends Formatters.HistoryGroupFormatter
*/
class TransferGroupFormatter extends HistoryGroupFormatter { class TransferGroupFormatter extends HistoryGroupFormatter {
/**
* Properties renderable to html.
* @default {@link Models.TransferGroup.props} <tt> + ['infos', 'time']</tt>
*/
static get props() { static get props() {
return TransferGroup.props.concat(['infos', 'time']); return TransferGroup.props.concat(['infos', 'time']);
} }
/**
* Generic info for transfergroups.
*/
static prop_infos(a) { static prop_infos(a) {
//TODO find better thing to put here //TODO find better thing to put here
return 'Transferts'; return 'Transferts';
} }
} }
/**
* @memberof Formatters
* @extends Formatters.HistoryGroupFormatter
*/
class OpegroupFormatter extends HistoryGroupFormatter { class OpegroupFormatter extends HistoryGroupFormatter {
/**
* Properties renderable to html.
* @default {@link Models.OperationGroup.props} <tt> + ['time']</tt>
*/
static get props() { static get props() {
return OperationGroup.props.concat(['time']); return OperationGroup.props.concat(['time']);
} }
/**
* <tt>a.amount</tt> displayed according to <tt>a.is_cof</tt> and <tt>a.trigramme</tt> values.
*/
static prop_amount(a) { static prop_amount(a) {
return amountDisplay(a.amount, a.is_cof, a.trigramme); return amountDisplay(a.amount, a.is_cof, a.trigramme);
} }
@ -1423,7 +1526,6 @@ class OpegroupFormatter extends HistoryGroupFormatter {
* @extends Formatters.Formatter * @extends Formatters.Formatter
* @memberof Formatters * @memberof Formatters
*/ */
class DayFormatter extends Formatter { class DayFormatter extends Formatter {
/** /**
@ -1434,6 +1536,9 @@ class DayFormatter extends Formatter {
return Day.props; return Day.props;
} }
/**
* <tt>a.date</tt> formatted as <tt>D MMMM</tt>
*/
static prop_date(a) { static prop_date(a) {
return a.date.format('D MMMM'); return a.date.format('D MMMM');
} }
@ -1445,6 +1550,10 @@ class DayFormatter extends Formatter {
*/ */
class OperationFormatter extends Formatter { class OperationFormatter extends Formatter {
/**
* Properties renderable to html.
* @default <tt>['amount', 'infos1', 'infos2', 'addcost', 'canceled']</tt>
*/
static get props() { static get props() {
return ['amount', 'infos1', 'infos2', 'addcost', 'canceled']; return ['amount', 'infos1', 'infos2', 'addcost', 'canceled'];
} }
@ -1453,10 +1562,16 @@ class OperationFormatter extends Formatter {
return ['canceled']; return ['canceled'];
} }
/**
* <tt>a.amount</tt> displayed according to <tt>a.is_cof</tt> and <tt>a.trigramme</tt> values.
*/
static prop_amount(a) { static prop_amount(a) {
return amountDisplay(a.amount, a.is_cof, a.trigramme); return amountDisplay(a.amount, a.is_cof, a.trigramme);
} }
/**
* <tt>addcost</tt> property is displayed iff <tt>a.addcost_for</tt> is nonempty.
*/
static prop_addcost(a) { static prop_addcost(a) {
if (a.addcost_for) { if (a.addcost_for) {
return '('+amountDisplay(a.addcost_amount, a.is_cof) return '('+amountDisplay(a.addcost_amount, a.is_cof)
@ -1466,6 +1581,9 @@ class OperationFormatter extends Formatter {
} }
} }
/**
* <tt>canceled</tt> property is displayed iff <tt>a.canceled_at</tt> is defined.
*/
static prop_canceled(a) { static prop_canceled(a) {
if (a.canceled_at) { if (a.canceled_at) {
cancel = 'Annulé'; cancel = 'Annulé';
@ -1484,6 +1602,10 @@ class OperationFormatter extends Formatter {
} }
} }
/**
* @extends Formatters.OperationFormatter
* @memberof Formatters
*/
class PurchaseFormatter extends OperationFormatter { class PurchaseFormatter extends OperationFormatter {
static prop_infos1(a) { static prop_infos1(a) {
@ -1495,8 +1617,15 @@ class PurchaseFormatter extends OperationFormatter {
} }
} }
/**
* @extends Formatters.OperationFormatter
* @memberof Formatters
*/
class SpecialOpeFormatter extends OperationFormatter { class SpecialOpeFormatter extends OperationFormatter {
/**
* <tt>a.amount</tt> with two decimal places.
*/
static prop_infos1(a) { static prop_infos1(a) {
return a.amount.toFixed(2)+'€'; return a.amount.toFixed(2)+'€';
} }
@ -1524,8 +1653,15 @@ class SpecialOpeFormatter extends OperationFormatter {
} }
} }
/**
* @extends Formatters.OperationFormatter
* @memberof Formatters
*/
class TransferFormatter extends OperationFormatter { class TransferFormatter extends OperationFormatter {
/**
* <tt>a.amount</tt> with two decimal places.
*/
static prop_amount(a) { static prop_amount(a) {
return a.amount.toFixed(2)+'€'; return a.amount.toFixed(2)+'€';
} }