define('application/formatters/bookmarkasset', [
'rofl/lib/l10n',
'antie/formatter',
'antie/iterator',
'antie/runtimecontext',
'application/widgets/asset/asset',
'application/utils',
'rofl/lib/utils'
], function (
L10N,
Formatter,
Iterator,
RuntimeContext,
Asset,
AppUtils,
Utils
) {
'use strict';
var layout = RuntimeContext.getCurrentApplication().getLayout().asset.bookmark,
l10n = L10N.getInstance();
return Formatter.extend({
/**
* Formats the widget.
*
* @param {Object|Iterator} item - The item.
* @param {Object} params - Contains format params passed by child class.
* @returns {Object} - The formatted widget.
*/
format: function (item, params) {
var formatParams = params || {},
button,
isVodEpisode = item.isVodEpisode(),
start = new Date(item.getStartTime() * 1000),
end = new Date(item.getEndTime() * 1000),
assetWidth = Math.round(formatParams.width || layout.width),
assetHeight = Math.round(formatParams.height || layout.height),
background = item.getImageUrl(assetWidth + 'x' + assetHeight),
title = item.getTitle(),
subTitle = l10n.get('asset.vodDurationText', {
year: item.getYear(),
duration: AppUtils.getHourMinutesText(item.getDuration())
}),
bookmarkEvHandler = Utils.bind(this._onBookmarkChange, this),
contentId = item.getId();
if (isVodEpisode) {
title = item.getSeriesTitle();
subTitle = l10n.get('asset.vodEpisodeDurationText', {
season: item.getSeason(),
episode: item.getEpisodeNumber(),
duration: AppUtils.getHourMinutesText(item.getDuration())
});
}
button = new Asset({
title: title,
subTitle: subTitle,
lockedTitle: l10n.get('settings.parental.title'),
startTime: start,
endTime: end,
background: background,
progressbar: true,
setBookmarkProgress: true,
gradient: false,
classNames: {
widget: 'bookmark'
},
item: item,
listeners: [
{
evName: '$' + contentId + '_bookmark',
evHandler: Utils.bind(bookmarkEvHandler, Asset)
}
],
playOnSelect: true
});
button.addClass('bookmark');
return button;
},
/**
* Gets executed when the bookmark changes.
*
* @param {Object} asset - The asset instance to update.
* @private
*/
_onBookmarkChange: function (asset) {
asset.updateProgressBar();
}
});
});