const util = require( './util.js' ), mfExtend = require( './mfExtend' ), View = require( './View' ), browser = require( './Browser' ).getSingleton(); /** * List of items page view * * @class PageList * @extends module:mobile.startup/View */ function PageList() { View.apply( this, arguments ); } mfExtend( PageList, View, { /** * @memberof PageList * @instance * @mixes module:mobile.startup/View#defaults * @property {Object} defaults Default options hash. * @property {Page[]} defaults.pages Array of Page objects. These should match * the Page model and not necessarily the * underlying API format used. * E.g. [ * { * heading: "Claude Monet", * id: undefined, * title: "Claude Monet", * displayTitle: "Claude Monet", * url: "/wiki/Claude_Monet", * thumbnail: { * height: 62, * source: "http://127.0.0.1:8080/images/thumb/thumb.jpg", * width: 80, * isLandscape: true * } * } * ] */ defaults: { pages: [] }, /** * Render page images for the existing page list. Assumes no page images have been loaded. * * @memberof PageList * @instance */ renderPageImages() { const self = this; setTimeout( () => { self.$el.find( '.list-thumb' ).each( function () { const style = self.$el.find( this ).data( 'style' ); self.$el.find( this ).attr( 'style', style ); } ); // Delay an unnecessary load of images on mobile (slower?) connections // In particular on search results which can be regenerated quickly. }, browser.isWideScreen() ? 0 : 1000 ); }, /** * @inheritdoc * @memberof PageList * @instance */ postRender() { this.renderPageImages(); }, template: util.template( ` ` ), /** * @memberof PageList * @instance */ templatePartials: { // The server uses a very different structure in // SpecialMobileEditWatchlist.getLineHtml(). Be aware of these differences // when updating server rendered items. item: util.template( `
  • {{^thumbnail}}{{/thumbnail}}

    {{{displayTitle}}}

    {{#wikidataDescription}}
    {{wikidataDescription}}
    {{/wikidataDescription}} {{#proximity}}
    {{proximity}}
    {{/proximity}}
  • ` ) } } ); module.exports = PageList;