mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/RelatedArticles
synced 2024-12-23 05:13:05 +00:00
55 lines
1.2 KiB
JavaScript
55 lines
1.2 KiB
JavaScript
|
/* eslint-disable no-underscore-dangle */
|
||
|
( function ( $, mw ) {
|
||
|
'use strict';
|
||
|
|
||
|
/**
|
||
|
* Renders a Card model and updates when it does.
|
||
|
*
|
||
|
* @class mw.cards.CardView
|
||
|
* @param {mw.cards.CardModel} model
|
||
|
*/
|
||
|
function CardView( model ) {
|
||
|
/**
|
||
|
* @property {mw.cards.CardModel}
|
||
|
*/
|
||
|
this.model = model;
|
||
|
|
||
|
// listen to model changes and re-render the view
|
||
|
this.model.on( 'change', this.render.bind( this ) );
|
||
|
|
||
|
/**
|
||
|
* @property {jQuery}
|
||
|
*/
|
||
|
this.$el = $( this._render() );
|
||
|
}
|
||
|
OO.initClass( CardView );
|
||
|
|
||
|
/**
|
||
|
* @property {Object} compiled template
|
||
|
*/
|
||
|
CardView.prototype.template = mw.template.get( 'ext.relatedArticles.cards', 'card.muhogan' );
|
||
|
|
||
|
/**
|
||
|
* Replace the html of this.$el with a newly rendered html using the model
|
||
|
* attributes.
|
||
|
*/
|
||
|
CardView.prototype.render = function () {
|
||
|
this.$el.replaceWith( this._render() );
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Renders the template using the model attributes.
|
||
|
*
|
||
|
* @ignore
|
||
|
* @return {string}
|
||
|
*/
|
||
|
CardView.prototype._render = function () {
|
||
|
var attributes = $.extend( {}, this.model.attributes );
|
||
|
attributes.thumbnailUrl = CSS.escape( attributes.thumbnailUrl );
|
||
|
|
||
|
return this.template.render( attributes );
|
||
|
};
|
||
|
|
||
|
mw.cards.CardView = CardView;
|
||
|
}( jQuery, mediaWiki ) );
|