diff --git a/package.json b/package.json
index a7ebd002e5..49cd22d9a3 100644
--- a/package.json
+++ b/package.json
@@ -92,6 +92,7 @@
"src/components/actionSheet/actionSheet.js",
"src/components/autoFocuser.js",
"src/components/cardbuilder/cardBuilder.js",
+ "src/components/cardbuilder/chaptercardbuilder.js",
"src/components/cardbuilder/peoplecardbuilder.js",
"src/components/images/imageLoader.js",
"src/components/indicators/indicators.js",
diff --git a/src/components/cardbuilder/chaptercardbuilder.js b/src/components/cardbuilder/chaptercardbuilder.js
index eae60574b3..c6ee9ba3c5 100644
--- a/src/components/cardbuilder/chaptercardbuilder.js
+++ b/src/components/cardbuilder/chaptercardbuilder.js
@@ -1,13 +1,23 @@
-define(['datetime', 'imageLoader', 'connectionManager', 'layoutManager', 'browser'], function (datetime, imageLoader, connectionManager, layoutManager, browser) {
- 'use strict';
+/* eslint-disable indent */
- var enableFocusTransform = !browser.slow && !browser.edge;
+/**
+ * Module for building cards from item data.
+ * @module components/cardBuilder/chaptercardbuilder
+ */
- function buildChapterCardsHtml(item, chapters, options) {
+import datetime from 'datetime';
+import imageLoader from 'imageLoader';
+import connectionManager from 'connectionManager';
+import layoutManager from 'layoutManager';
+import browser from 'browser';
+
+ const enableFocusTransform = !browser.slow && !browser.edge;
+
+ function buildChapterCardsHtml(item, chapters, options) {
// TODO move card creation code to Card component
- var className = 'card itemAction chapterCard';
+ let className = 'card itemAction chapterCard';
if (layoutManager.tv) {
className += ' show-focus';
@@ -17,12 +27,12 @@ define(['datetime', 'imageLoader', 'connectionManager', 'layoutManager', 'browse
}
}
- var mediaStreams = ((item.MediaSources || [])[0] || {}).MediaStreams || [];
- var videoStream = mediaStreams.filter(function (i) {
- return i.Type === 'Video';
+ const mediaStreams = ((item.MediaSources || [])[0] || {}).MediaStreams || [];
+ const videoStream = mediaStreams.filter(({Type}) => {
+ return Type === 'Video';
})[0] || {};
- var shape = (options.backdropShape || 'backdrop');
+ let shape = (options.backdropShape || 'backdrop');
if (videoStream.Width && videoStream.Height) {
@@ -31,24 +41,24 @@ define(['datetime', 'imageLoader', 'connectionManager', 'layoutManager', 'browse
}
}
- className += ' ' + shape + 'Card';
+ className += ` ${shape}Card`;
if (options.block || options.rows) {
className += ' block';
}
- var html = '';
- var itemsInRow = 0;
+ let html = '';
+ let itemsInRow = 0;
- var apiClient = connectionManager.getApiClient(item.ServerId);
+ const apiClient = connectionManager.getApiClient(item.ServerId);
- for (var i = 0, length = chapters.length; i < length; i++) {
+ for (let i = 0, length = chapters.length; i < length; i++) {
if (options.rows && itemsInRow === 0) {
html += '
';
}
- var chapter = chapters[i];
+ const chapter = chapters[i];
html += buildChapterCard(item, apiClient, chapter, i, options, className, shape);
itemsInRow++;
@@ -62,50 +72,50 @@ define(['datetime', 'imageLoader', 'connectionManager', 'layoutManager', 'browse
return html;
}
- function getImgUrl(item, chapter, index, maxWidth, apiClient) {
+ function getImgUrl({Id}, {ImageTag}, index, maxWidth, apiClient) {
- if (chapter.ImageTag) {
+ if (ImageTag) {
- return apiClient.getScaledImageUrl(item.Id, {
+ return apiClient.getScaledImageUrl(Id, {
maxWidth: maxWidth * 2,
- tag: chapter.ImageTag,
+ tag: ImageTag,
type: 'Chapter',
- index: index
+ index
});
}
return null;
}
- function buildChapterCard(item, apiClient, chapter, index, options, className, shape) {
+ function buildChapterCard(item, apiClient, chapter, index, {width, coverImage}, className, shape) {
- var imgUrl = getImgUrl(item, chapter, index, options.width || 400, apiClient);
+ const imgUrl = getImgUrl(item, chapter, index, width || 400, apiClient);
- var cardImageContainerClass = 'cardContent cardContent-shadow cardImageContainer chapterCardImageContainer';
- if (options.coverImage) {
+ let cardImageContainerClass = 'cardContent cardContent-shadow cardImageContainer chapterCardImageContainer';
+ if (coverImage) {
cardImageContainerClass += ' coveredImage';
}
- var dataAttributes = ' data-action="play" data-isfolder="' + item.IsFolder + '" data-id="' + item.Id + '" data-serverid="' + item.ServerId + '" data-type="' + item.Type + '" data-mediatype="' + item.MediaType + '" data-positionticks="' + chapter.StartPositionTicks + '"';
- var cardImageContainer = imgUrl ? ('
') : ('
');
+ const dataAttributes = ` data-action="play" data-isfolder="${item.IsFolder}" data-id="${item.Id}" data-serverid="${item.ServerId}" data-type="${item.Type}" data-mediatype="${item.MediaType}" data-positionticks="${chapter.StartPositionTicks}"`;
+ let cardImageContainer = imgUrl ? (`
`) : (`
`);
if (!imgUrl) {
cardImageContainer += '
';
}
- var nameHtml = '';
- nameHtml += '
' + chapter.Name + '
';
- nameHtml += '
' + datetime.getDisplayRunningTime(chapter.StartPositionTicks) + '
';
+ let nameHtml = '';
+ nameHtml += `
${chapter.Name}
`;
+ nameHtml += `
${datetime.getDisplayRunningTime(chapter.StartPositionTicks)}
`;
- var cardBoxCssClass = 'cardBox';
- var cardScalableClass = 'cardScalable';
+ const cardBoxCssClass = 'cardBox';
+ const cardScalableClass = 'cardScalable';
- var html = '
';
+ const html = `
`;
return html;
}
- function buildChapterCards(item, chapters, options) {
+ export function buildChapterCards(item, chapters, options) {
if (options.parentContainer) {
// Abort if the container has been disposed
@@ -121,15 +131,16 @@ define(['datetime', 'imageLoader', 'connectionManager', 'layoutManager', 'browse
}
}
- var html = buildChapterCardsHtml(item, chapters, options);
+ const html = buildChapterCardsHtml(item, chapters, options);
options.itemsContainer.innerHTML = html;
imageLoader.lazyChildren(options.itemsContainer);
}
- return {
- buildChapterCards: buildChapterCards
- };
+/* eslint-enable indent */
+
+export default {
+ buildChapterCards: buildChapterCards
+};
-});