mediawiki-extensions-Relate.../resources/ext.relatedArticles.cards/CardView.js

55 lines
1.2 KiB
JavaScript
Raw Normal View History

/* 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 ) );