mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/RelatedArticles
synced 2024-12-23 13:23:36 +00:00
911d78e8ee
Follow up to I9442b0336e22ca795cc06f76068215266fe81271 Bug: T306228 Change-Id: Ifb1f1937009b098999471cfa5e820a063dc5a4a0
55 lines
1.4 KiB
JavaScript
55 lines
1.4 KiB
JavaScript
'use strict';
|
|
|
|
/**
|
|
* Model for an article
|
|
* It is the single source of truth about a Card, which is a representation
|
|
* of a wiki article. It emits a 'change' event when its attribute changes.
|
|
* A View can listen to this event and update the UI accordingly.
|
|
*
|
|
* @class mw.cards.CardModel
|
|
* @extends OO.EventEmitter
|
|
* @param {Object} attributes article data, such as title, url, etc. about
|
|
* an article
|
|
*/
|
|
function CardModel( attributes ) {
|
|
CardModel.super.apply( this, arguments );
|
|
/**
|
|
* @property {Object} attributes of the model
|
|
*/
|
|
this.attributes = attributes;
|
|
}
|
|
OO.inheritClass( CardModel, OO.EventEmitter );
|
|
|
|
/**
|
|
* Set a model attribute.
|
|
* Emits a 'change' event with the object whose key is the attribute
|
|
* that's being updated and value is the value that's being set. The event
|
|
* can also be silenced.
|
|
*
|
|
* @param {string} key attribute that's being set
|
|
* @param {Mixed} value the value of the key param
|
|
* @param {boolean} [silent] whether to emit the 'change' event. By default
|
|
* the 'change' event will be emitted.
|
|
*/
|
|
CardModel.prototype.set = function ( key, value, silent ) {
|
|
var event = {};
|
|
|
|
this.attributes[ key ] = value;
|
|
if ( !silent ) {
|
|
event[ key ] = value;
|
|
this.emit( 'change', event );
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Get the model attribute's value.
|
|
*
|
|
* @param {string} key attribute that's being looked up
|
|
* @return {Mixed}
|
|
*/
|
|
CardModel.prototype.get = function ( key ) {
|
|
return this.attributes[ key ];
|
|
};
|
|
|
|
module.exports = CardModel;
|