diff --git a/dashboard-ui/bower_components/emby-webcomponents/.bower.json b/dashboard-ui/bower_components/emby-webcomponents/.bower.json index e19ea6b647..e8c08d4958 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/.bower.json +++ b/dashboard-ui/bower_components/emby-webcomponents/.bower.json @@ -15,12 +15,12 @@ }, "devDependencies": {}, "ignore": [], - "version": "1.4.80", - "_release": "1.4.80", + "version": "1.4.81", + "_release": "1.4.81", "_resolution": { "type": "version", - "tag": "1.4.80", - "commit": "a959ba5d3e78c15e700002a399450365bc6b9328" + "tag": "1.4.81", + "commit": "77ba771ece78a8beb9262d7ac296175df6c052b2" }, "_source": "https://github.com/MediaBrowser/emby-webcomponents.git", "_target": "^1.2.0", diff --git a/dashboard-ui/bower_components/emby-webcomponents/listview/listview.css b/dashboard-ui/bower_components/emby-webcomponents/listview/listview.css index 3ba903b9b3..aa01b90e23 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/listview/listview.css +++ b/dashboard-ui/bower_components/emby-webcomponents/listview/listview.css @@ -12,26 +12,31 @@ button.listItem { } .listItem { + margin: 0; display: block; align-items: center; text-align: left; - padding: 0 1em !important; + padding: .25em .5em .25em 1em !important; line-height: 170%; border-bottom: 1px solid #2a2a2a; } - .listItem.largeImage { - padding: 1em 0 1em 1em; - } +div.listItem { + cursor: pointer; +} - .listItem > *:not(.listItemBody) { - flex-shrink: 0; - } +.listItem.largeImage { + padding: 1em 0 1em 1em; +} - .listItem > * { - display: inline-block; - vertical-align: middle; - } +.listItem > *:not(.listItemBody) { + flex-shrink: 0; +} + +.listItem > * { + display: inline-block; + vertical-align: middle; +} .listItemBody { flex-grow: 1; @@ -56,9 +61,8 @@ button.listItem { padding-bottom: 0; } - .listItemBody h3 { + .listItemBody h2, .listItemBody h3 { margin: 0; - font-weight: normal; padding: 0; overflow: hidden; text-overflow: ellipsis; @@ -80,6 +84,8 @@ button.listItem { .listItemImage { width: 7.4vh; height: 7.4vh; + min-width: 40px; + min-height: 40px; background-repeat: no-repeat; background-size: contain; flex-shrink: 0; @@ -140,8 +146,20 @@ button.listItem { align-items: center; } - .listItemMediaInfo > * { - display: inline-block; +.layout-tv .listItemMediaInfo { + margin: .5em 0; +} + +.listItemMediaInfo > * { + display: inline-block; +} + +.listGroupHeader { + margin: 2em 0 1em; +} + + .listGroupHeader.first { + margin-top: 0; } @supports (display: flex) { @@ -150,3 +168,10 @@ button.listItem { display: flex; } } + +@media all and (max-width: 800px) { + + .listItem .endsAt, .listItem .criticRating { + display: none !important; + } +} diff --git a/dashboard-ui/bower_components/emby-webcomponents/listview/listview.js b/dashboard-ui/bower_components/emby-webcomponents/listview/listview.js index f14518e495..e233db60a0 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/listview/listview.js +++ b/dashboard-ui/bower_components/emby-webcomponents/listview/listview.js @@ -1,10 +1,10 @@ -define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutManager', 'userdataButtons', 'css!./listview'], function (itemHelper, mediaInfo, indicators, connectionManager, layoutManager, userdataButtons) { +define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutManager', 'globalize', 'userdataButtons', 'css!./listview'], function (itemHelper, mediaInfo, indicators, connectionManager, layoutManager, globalize, userdataButtons) { function getIndex(item, options) { if (options.index == 'disc') { - return item.ParentIndexNumber == null ? '' : Globalize.translate('sharedcomponents#ValueDiscNumber', item.ParentIndexNumber); + return item.ParentIndexNumber == null ? '' : globalize.translate('sharedcomponents#ValueDiscNumber', item.ParentIndexNumber); } var sortBy = (options.sortBy || '').toLowerCase(); @@ -122,32 +122,36 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan var clickEntireItem = layoutManager.tv ? true : false; var outerTagName = clickEntireItem ? 'button' : 'div'; - return items.map(function (item) { + var outerHtml = ''; + + outerHtml += items.map(function (item) { var html = ''; - //if (options.showIndex !== false) { + if (options.showIndex) { - // var itemGroupTitle = LibraryBrowser.getListViewIndex(item, options); + var itemGroupTitle = getIndex(item, options); - // if (itemGroupTitle != groupTitle) { + if (itemGroupTitle != groupTitle) { - // outerHtml += ''; + if (html) { + html += ''; + } - // if (index == 0) { - // html += '

'; - // } - // else { - // html += '

'; - // } - // html += itemGroupTitle; - // html += '

'; + if (index == 0) { + html += '

'; + } + else { + html += '

'; + } + html += itemGroupTitle; + html += '

'; - // html += '
'; + html += '
'; - // groupTitle = itemGroupTitle; - // } - //} + groupTitle = itemGroupTitle; + } + } var cssClass = "itemAction listItem"; @@ -165,7 +169,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan if (imgUrl) { html += '
'; } else { - html += '
'; + html += '
'; } var indicatorsHtml = ''; @@ -219,16 +223,18 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan for (var i = 0, textLinesLength = textlines.length; i < textLinesLength; i++) { if (i == 0 && isLargeStyle) { - html += '

'; + html += '

'; } else if (i == 0) { - html += '
'; + html += '

'; } else { html += '
'; } html += textlines[i] || ' '; if (i == 0 && isLargeStyle) { html += '

'; + } else if (i == 0) { + html += '

'; } else { html += '
'; } @@ -249,7 +255,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan if (!clickEntireItem) { html += ''; html += ''; - html += userdataButtons.getIconsHtml(item); + html += userdataButtons.getIconsHtml(item, false); html += ''; } @@ -263,6 +269,8 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan return html; }).join(''); + + return outerHtml; } return { diff --git a/dashboard-ui/bower_components/emby-webcomponents/mediainfo/mediainfo.css b/dashboard-ui/bower_components/emby-webcomponents/mediainfo/mediainfo.css index f76ba59727..db526403c4 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/mediainfo/mediainfo.css +++ b/dashboard-ui/bower_components/emby-webcomponents/mediainfo/mediainfo.css @@ -24,17 +24,17 @@ i.mediaInfoItem { .starRatingContainer i { color: #CB272A; - width: 3vh; - height: 3vh; - font-size: 3vh; + width: auto !important; + height: auto !important; + font-size: 120%; } .mediaInfoItem.criticRating { - padding-left: 3.15vh; + padding-left: 1.5em; background-position: left center; background-repeat: no-repeat; - background-size: auto 2.6vh; - min-height: 2.6vh; + background-size: auto 1.2em; + min-height: 1.2em; display: flex; align-items: center; } @@ -68,10 +68,4 @@ i.mediaInfoItem { width: 4vh; height: 4vh; font-size: 4vh; -} - -.layout-tv .starRatingContainer i { - width: 3.4vh; - height: 3.4vh; - font-size: 3.4vh; -} +} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/da.json b/dashboard-ui/bower_components/emby-webcomponents/strings/da.json index 0520621d32..fda37d9848 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/da.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/da.json @@ -5,6 +5,12 @@ "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", "ButtonTryAgain": "Try Again", "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "ValueDiscNumber": "Disc {0}", + "Favorite": "Favorite", + "Unrated": "Unrated", + "Played": "Played", + "Like": "Like", + "Dislike": "Dislike", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Del", "ServerUpdateNeeded": "Denne Emby server b\u00f8r opdateres. For at downloade den nyeste version bes\u00f8g venligst {0}", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/de.json b/dashboard-ui/bower_components/emby-webcomponents/strings/de.json index 49667818ad..e46f273c11 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/de.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/de.json @@ -5,6 +5,12 @@ "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", "ButtonTryAgain": "Try Again", "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "ValueDiscNumber": "Disc {0}", + "Favorite": "Favorite", + "Unrated": "Unrated", + "Played": "Played", + "Like": "Like", + "Dislike": "Dislike", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Teilen", "ServerUpdateNeeded": "Dieser Emby Server sollte aktualisiert werden. Um die neueste Version zu laden, besuche bitte {0}", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/en-US.json b/dashboard-ui/bower_components/emby-webcomponents/strings/en-US.json index 5d410526e3..6c0b40d0e1 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/en-US.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/en-US.json @@ -92,5 +92,11 @@ "HeaderYouSaid": "You Said...", "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "ValueDiscNumber": "Disc {0}", + "Unrated": "Unrated", + "Favorite": "Favorite", + "Like": "Like", + "Dislike": "Dislike", + "Played": "Played", "RefreshDialogHelp": "Metadata is refreshed based on settings and internet services that are enabled in the Emby Server dashboard." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/es-MX.json b/dashboard-ui/bower_components/emby-webcomponents/strings/es-MX.json index a03bcaeca6..3c01da94db 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/es-MX.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/es-MX.json @@ -5,6 +5,12 @@ "MessageIfYouBlockedVoice": "Si ha negado el acceso por voz a la aplicaci\u00f3n necesitara reconfigurar antes de intentarlo de nuevo.", "ButtonTryAgain": "Intentar de Nuevo", "MessageWeDidntRecognizeCommand": "Lo sentimos, no reconocimos ese comando.", + "ValueDiscNumber": "Disc {0}", + "Favorite": "Favorite", + "Unrated": "Unrated", + "Played": "Played", + "Like": "Like", + "Dislike": "Dislike", "ValueSpecialEpisodeName": "Especial - {0}", "Share": "Compartir", "ServerUpdateNeeded": "Este Servidor Emby necesita ser actualizado. Para descargar la ultima versi\u00f3n, por favor visite {0}", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json b/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json index b311487bed..1437d74b5c 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json @@ -5,6 +5,12 @@ "MessageIfYouBlockedVoice": "\u0415\u0433\u0435\u0440 \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u0493\u0430 \u0434\u0430\u0443\u044b\u0441\u0442\u044b\u049b \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u044b\u04a3\u044b\u0437 \u0431\u0430\u0441 \u0442\u0430\u0440\u0442\u044b\u043b\u0441\u0430, \u049b\u0430\u0439\u0442\u0430 \u04d9\u0440\u0435\u043a\u0435\u0442\u0442\u0435\u043d\u0443\u0456\u04a3\u0456\u0437\u0434\u0435\u043d \u0430\u043b\u0434\u044b\u043d\u0430\u043d \u049b\u0430\u0439\u0442\u0430 \u0442\u0435\u04a3\u0448\u0435\u0443\u0456\u04a3\u0456\u0437 \u049b\u0430\u0436\u0435\u0442 \u0431\u043e\u043b\u0430\u0434\u044b.", "ButtonTryAgain": "\u04d8\u0440\u0435\u043a\u0435\u0442\u0442\u0456 \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u0443", "MessageWeDidntRecognizeCommand": "\u041e\u0441\u044b\u043d\u0434\u0430\u0439 \u043f\u04d9\u0440\u043c\u0435\u043d\u0434\u0456 \u0442\u0430\u043d\u044b\u043f \u0430\u0439\u044b\u0440\u043c\u0430\u0434\u044b\u049b.", + "ValueDiscNumber": "Disc {0}", + "Favorite": "Favorite", + "Unrated": "Unrated", + "Played": "Played", + "Like": "Like", + "Dislike": "Dislike", "ValueSpecialEpisodeName": "\u0410\u0440\u043d\u0430\u0439\u044b - {0}", "Share": "\u041e\u0440\u0442\u0430\u049b\u0442\u0430\u0441\u0443", "ServerUpdateNeeded": "\u041e\u0441\u044b Emby Server \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u0443\u044b \u049b\u0430\u0436\u0435\u0442. \u0421\u043e\u04a3\u0493\u044b \u043d\u04b1\u0441\u049b\u0430\u0441\u044b\u043d \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443 \u04af\u0448\u0456\u043d, {0} \u043a\u0456\u0440\u0456\u04a3\u0456\u0437", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/nb.json b/dashboard-ui/bower_components/emby-webcomponents/strings/nb.json index 3af2788277..dd3716f4a7 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/nb.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/nb.json @@ -5,6 +5,12 @@ "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", "ButtonTryAgain": "Try Again", "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "ValueDiscNumber": "Disc {0}", + "Favorite": "Favorite", + "Unrated": "Unrated", + "Played": "Played", + "Like": "Like", + "Dislike": "Dislike", "ValueSpecialEpisodeName": "Spesial - {0}", "Share": "Del", "ServerUpdateNeeded": "Denne Emby serveren trenger en oppdatering. For \u00e5 laste ned nyeste versjon, vennligst bes\u00f8k: {0}", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/nl.json b/dashboard-ui/bower_components/emby-webcomponents/strings/nl.json index 66e1996118..404645d1da 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/nl.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/nl.json @@ -5,6 +5,12 @@ "MessageIfYouBlockedVoice": "Als u spraak toegang uitgeschakeld heeft moet u dit opnieuw configureren voordat u verder gaat.", "ButtonTryAgain": "Probeer opnieuw", "MessageWeDidntRecognizeCommand": "Sorry, dat commando herkennen we niet.", + "ValueDiscNumber": "Disc {0}", + "Favorite": "Favorite", + "Unrated": "Unrated", + "Played": "Played", + "Like": "Like", + "Dislike": "Dislike", "ValueSpecialEpisodeName": "Speciaal - {0}", "Share": "Delen", "ServerUpdateNeeded": "Deze Emby Server moet worden bijgewerkt. Om de laatste versie te downloaden, gaat u naar {0}", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/pt-BR.json b/dashboard-ui/bower_components/emby-webcomponents/strings/pt-BR.json index c42672e1f8..e852dda40c 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/pt-BR.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/pt-BR.json @@ -5,6 +5,12 @@ "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", "ButtonTryAgain": "Try Again", "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "ValueDiscNumber": "Disc {0}", + "Favorite": "Favorite", + "Unrated": "Unrated", + "Played": "Played", + "Like": "Like", + "Dislike": "Dislike", "ValueSpecialEpisodeName": "Especial - {0}", "Share": "Compartilhar", "ServerUpdateNeeded": "Este servidor Emby precisa ser atualizado. Para baixar a \u00faltima vers\u00e3o, por favor visite {0}", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/pt-PT.json b/dashboard-ui/bower_components/emby-webcomponents/strings/pt-PT.json index 8502fa5411..0e17446347 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/pt-PT.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/pt-PT.json @@ -5,6 +5,12 @@ "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", "ButtonTryAgain": "Try Again", "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "ValueDiscNumber": "Disc {0}", + "Favorite": "Favorite", + "Unrated": "Unrated", + "Played": "Played", + "Like": "Like", + "Dislike": "Dislike", "ValueSpecialEpisodeName": "Especial - {0}", "Share": "Partilhar", "ServerUpdateNeeded": "Este Servidor Emby precisa ser atualizado. Para fazer download da vers\u00e3o mais recente, por favor visite {0}", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json b/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json index d3e25e5f80..5fb5f48637 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json @@ -5,6 +5,12 @@ "MessageIfYouBlockedVoice": "\u0415\u0441\u043b\u0438 \u043e\u0442\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e, \u043f\u0435\u0440\u0435\u0434 \u043d\u043e\u0432\u043e\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u043e\u0439 \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 \u043f\u0435\u0440\u0435\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430.", "ButtonTryAgain": "\u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u043f\u043e\u043f\u044b\u0442\u043a\u0443", "MessageWeDidntRecognizeCommand": "\u0414\u0430\u043d\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043d\u0435 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u043d\u0430.", + "ValueDiscNumber": "Disc {0}", + "Favorite": "Favorite", + "Unrated": "Unrated", + "Played": "Played", + "Like": "Like", + "Dislike": "Dislike", "ValueSpecialEpisodeName": "\u0421\u043f\u0435\u0446\u044d\u043f\u0438\u0437\u043e\u0434 - {0}", "Share": "\u041f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f", "ServerUpdateNeeded": "\u0414\u0430\u043d\u043d\u044b\u0439 Emby Server \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c. \u0427\u0442\u043e\u0431\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0432\u0435\u0440\u0441\u0438\u044e, \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435 {0}", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/sv.json b/dashboard-ui/bower_components/emby-webcomponents/strings/sv.json index 20bd918094..36845d93c6 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/sv.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/sv.json @@ -5,6 +5,12 @@ "MessageIfYouBlockedVoice": "Om du nekade tillg\u00e5ng f\u00f6r r\u00f6st\u00e5tkomst till appen s\u00e5 beh\u00f6ver du konfigurera om innan du f\u00f6rs\u00f6ker igen.", "ButtonTryAgain": "F\u00f6rs\u00f6k igen", "MessageWeDidntRecognizeCommand": "Ledsen, men vi k\u00e4nner inte igen det kommandot.", + "ValueDiscNumber": "Disc {0}", + "Favorite": "Favorite", + "Unrated": "Unrated", + "Played": "Played", + "Like": "Like", + "Dislike": "Dislike", "ValueSpecialEpisodeName": "Specialavsnitt - {0}", "Share": "Dela", "ServerUpdateNeeded": "Den h\u00e4r Emby servern beh\u00f6ver uppdateras. F\u00f6r att ladda ner senaste versionen, g\u00e5 till {0}", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/zh-TW.json b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-TW.json new file mode 100644 index 0000000000..da87fff86b --- /dev/null +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-TW.json @@ -0,0 +1,102 @@ +{ + "NoItemsFound": "\u7121\u9805\u76ee", + "HeaderSaySomethingLike": "\u8aaa\u9ede\u6771\u897f\uff0c\u50cf\u662f...", + "HeaderYouSaid": "\u60a8\u662f\u6307...", + "MessageIfYouBlockedVoice": "\u5982\u679c\u60a8\u62d2\u7d55\u7a0b\u5f0f\u4f7f\u7528\u8a9e\u97f3\u8fa8\u8b58\uff0c\u60a8\u5c07\u9700\u8981\u5728\u91cd\u8a66\u4e4b\u524d\u518d\u6b21\u8a2d\u5b9a", + "ButtonTryAgain": "\u91cd\u8a66", + "MessageWeDidntRecognizeCommand": "\u5f88\u62b1\u6b49\uff0c\u6211\u5011\u7121\u6cd5\u8fa8\u8b58\u6b64\u6307\u4ee4", + "ValueDiscNumber": "Disc {0}", + "Favorite": "Favorite", + "Unrated": "Unrated", + "Played": "Played", + "Like": "Like", + "Dislike": "Dislike", + "ValueSpecialEpisodeName": "Special - {0}", + "Share": "\u5206\u4eab", + "ServerUpdateNeeded": "\u6b64Emby\u4f3a\u670d\u5668\u9700\u8981\u66f4\u65b0\uff0c\u8acb\u81f3{0}\u53d6\u5f97\u6700\u65b0\u7248\u672c", + "LiveTvGuideRequiresUnlock": "\u96fb\u8996\u6307\u5357\u76ee\u524d\u53ea\u9650\u65bc{0}\u500b\u983b\u9053\u3002\u9ede\u9078\u300c\u89e3\u9396\u300d\u4ee5\u4e86\u89e3\u5982\u4f55\u7372\u5f97\u66f4\u5b8c\u6574\u7684\u9ad4\u9a57", + "AttributeNew": "New", + "AttributePremiere": "\u9996\u64ad", + "AttributeLive": "\u6b63\u5728\u64ad\u653e", + "TrackCount": "{0}\u500b\u66f2\u76ee", + "ItemCount": "{0}\u500b\u9805\u76ee", + "ValueSeriesYearToPresent": "{0}-Present", + "ReleaseYearValue": "\u63a8\u51fa\u65e5\u671f\uff1a{0}", + "OriginalAirDateValue": "\u539f\u59cb\u64ad\u51fa\u65e5\u671f\uff1a{0}", + "EndsAtValue": "\u5b8c\u7d50\u65bc{0}", + "OptionSundayShort": "\u65e5", + "OptionMondayShort": "\u4e00", + "OptionTuesdayShort": "\u4e8c", + "OptionWednesdayShort": "\u4e09", + "OptionThursdayShort": "\u56db", + "OptionFridayShort": "\u4e94", + "OptionSaturdayShort": "\u516d", + "HeaderSelectDate": "\u9078\u64c7\u65e5\u671f", + "ButtonOk": "\u78ba\u5b9a", + "ButtonCancel": "\u53d6\u6d88", + "ButtonGotIt": "\u6211\u77e5\u9053\u4e86", + "RecordingCancelled": "\u5df2\u53d6\u6d88\u6392\u7a0b\u9304\u88fd", + "RecordingScheduled": "\u5df2\u6392\u7a0b\u9304\u88fd", + "SeriesRecordingScheduled": "\u5df2\u6392\u7a0b\u9304\u88fd\u6574\u500b\u7cfb\u5217", + "HeaderNewRecording": "\u65b0\u9304\u88fd", + "Sunday": "\u661f\u671f\u65e5", + "Monday": "\u661f\u671f\u4e00", + "Tuesday": "\u661f\u671f\u4e8c", + "Wednesday": "\u661f\u671f\u4e09", + "Thursday": "\u661f\u671f\u56db", + "Friday": "\u661f\u671f\u4e94", + "Saturday": "\u661f\u671f\u516d", + "Days": "\u65e5", + "RecordSeries": "\u9304\u88fd\u6574\u500b\u7cfb\u5217", + "LabelPrePaddingMinutes": "\u63d0\u524d\u958b\u59cb\u5206\u9418\u6578\uff1a", + "LabelPostPaddingMinutes": "\u5ef6\u5f8c\u7d50\u675f\u5206\u9418\u6578\uff1a", + "RecordOnAllChannels": "\u5728\u6240\u6709\u983b\u9053\u9304\u88fd", + "RecordAnytime": "\u5728\u4efb\u4f55\u6642\u9593\u9304\u88fd", + "RecordOnlyNewEpisodes": "\u53ea\u9304\u88fd\u65b0\u96c6\u6578", + "HeaderBecomeProjectSupporter": "\u53d6\u5f97Emby\u8c6a\u83ef\u7248", + "HeaderEnjoyDayTrial": "\u514d\u8cbb\u8a66\u752814\u5929", + "MessageActiveSubscriptionRequiredSeriesRecordings": "\u8981\u4f7f\u7528\u81ea\u52d5\u9304\u88fd\u7cfb\u5217\u7684\u529f\u80fd\uff0c\u9700\u8981\u6709\u6548\u7684Emby\u8c6a\u83ef\u7248\u8a02\u95b1", + "OptionConvertRecordingsToStreamingFormat": "\u81ea\u52d5\u5c07\u9304\u88fd\u5167\u5bb9\u8f49\u63db\u6210\u9069\u7528\u65bc\u4e32\u6d41\u7684\u683c\u5f0f", + "OptionConvertRecordingsToStreamingFormatHelp": "\u9304\u88fd\u7684\u5167\u5bb9\u5c07\u6703\u8f49\u63db\u6210MP4\uff0c\u4ee5\u4fbf\u66f4\u5bb9\u6613\u5730\u5728\u60a8\u7684\u88dd\u7f6e\u4e0a\u64ad\u653e", + "FeatureRequiresEmbyPremiere": "\u6b64\u529f\u80fd\u9700\u8981\u6709\u6548\u7684Emby\u8c6a\u83ef\u7248\u8a02\u95b1", + "Record": "\u9304\u88fd", + "Save": "\u5132\u5b58", + "Edit": "\u7de8\u8f2f", + "Download": "\u4e0b\u8f09", + "Advanced": "\u9032\u968e", + "Delete": "\u522a\u9664", + "HeaderDeleteItem": "\u522a\u9664\u9805\u76ee", + "ConfirmDeleteItem": "\u522a\u9664\u6b64\u9805\u76ee\u6642\uff0c\u4e5f\u6703\u4e00\u4f75\u5f9e\u6a94\u6848\u7cfb\u7d71\u53ca\u5a92\u9ad4\u6ac3\u4e2d\u522a\u9664\u3002\u78ba\u5b9a\u8981\u522a\u9664\u55ce\uff1f", + "Refresh": "\u91cd\u65b0\u6574\u7406", + "RefreshQueued": "Refresh queued.", + "AddToCollection": "\u65b0\u589e\u5230\u6536\u85cf\u6ac3", + "NewCollection": "\u65b0\u6536\u85cf\u6ac3", + "LabelCollection": "\u6536\u85cf\u6ac3\uff1a", + "Help": "\u8aaa\u660e", + "NewCollectionHelp": "\u6536\u85cf\u6ac3\u8b93\u60a8\u80fd\u5920\u5efa\u7acb\u500b\u4eba\u5316\u7684\u5f71\u97f3\u53ca\u5176\u4ed6\u5a92\u9ad4\u7684\u5206\u985e", + "SearchForCollectionInternetMetadata": "\u5728\u7db2\u8def\u4e0a\u641c\u5c0b\u76f8\u95dc\u7684\u5c01\u9762\u5716\u53ca\u8a73\u7d30\u8cc7\u6599", + "LabelName": "\u540d\u7a31\uff1a", + "NewCollectionNameExample": "\u4f8b\u5982\uff1a\u661f\u969b\u5927\u6230\u7e3d\u532f", + "MessageItemsAdded": "\u5df2\u65b0\u589e\u9805\u76ee", + "OptionNew": "\u65b0\u589e...", + "LabelPlaylist": "\u64ad\u653e\u6e05\u55ae\uff1a", + "AddToPlaylist": "\u65b0\u589e\u5230\u64ad\u653e\u6e05\u55ae", + "Subtitles": "\u5b57\u5e55", + "SearchForSubtitles": "\u641c\u5c0b\u5b57\u5e55", + "LabelLanguage": "\u8a9e\u8a00\uff1a", + "Search": "\u641c\u5c0b", + "NoSubtitleSearchResultsFound": "\u7121\u7d50\u679c", + "File": "\u6a94\u6848", + "MessageAreYouSureDeleteSubtitles": "\u60a8\u771f\u7684\u8981\u522a\u9664\u9019\u500b\u5b57\u5e55\u6a94\u55ce\uff1f", + "ConfirmDeletion": "\u78ba\u5b9a\u522a\u9664", + "MySubtitles": "\u6211\u7684\u5b57\u5e55", + "MessageDownloadQueued": "\u9700\u8981\u4e0b\u8f09", + "EditSubtitles": "\u7de8\u8f2f\u5b57\u5e55", + "UnlockGuide": "\u89e3\u9396\u65b9\u5f0f", + "RefreshMetadata": "\u66f4\u65b0\u8a73\u7d30\u8cc7\u6599", + "ReplaceExistingImages": "\u53d6\u4ee3\u73fe\u6709\u5716\u7247", + "ReplaceAllMetadata": "\u53d6\u4ee3\u6240\u6709\u8a73\u7d30\u8cc7\u6599", + "SearchForMissingMetadata": "\u641c\u5c0b\u907a\u5931\u7684\u8a73\u7d30\u8cc7\u6599", + "LabelRefreshMode": "\u66f4\u65b0\u6a21\u5f0f\uff1a", + "RefreshDialogHelp": "\u8a73\u7d30\u8cc7\u6599\u7684\u66f4\u65b0\u65b9\u5f0f\u6703\u4f9d\u64daEmby\u7684\u8a2d\u5b9a\u53ca\u5df2\u7d93\u555f\u7528\u7684\u7db2\u8def\u670d\u52d9\u4f86\u9032\u884c" +} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/userdatabuttons/userdatabuttons.css b/dashboard-ui/bower_components/emby-webcomponents/userdatabuttons/userdatabuttons.css new file mode 100644 index 0000000000..f0abdff812 --- /dev/null +++ b/dashboard-ui/bower_components/emby-webcomponents/userdatabuttons/userdatabuttons.css @@ -0,0 +1,8 @@ + +.btnUserData { + color: #aaa; +} + +.btnUserDataOn, .btnUserDataOn i { + color: #cc3333 !important; +} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/userdatabuttons/userdatabuttons.js b/dashboard-ui/bower_components/emby-webcomponents/userdatabuttons/userdatabuttons.js index e0d14cbff8..f44875f51e 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/userdatabuttons/userdatabuttons.js +++ b/dashboard-ui/bower_components/emby-webcomponents/userdatabuttons/userdatabuttons.js @@ -1,4 +1,4 @@ -define(['connectionManager', 'globalize', 'paper-icon-button-light', 'material-icons', 'emby-button'], function (connectionManager, globalize) { +define(['connectionManager', 'globalize', 'paper-icon-button-light', 'material-icons', 'emby-button', 'css!./userdatabuttons'], function (connectionManager, globalize) { function getUserDataButtonHtml(method, itemId, iconCssClass, icon, tooltip, style) { diff --git a/dashboard-ui/bower_components/iron-location/.bower.json b/dashboard-ui/bower_components/iron-location/.bower.json new file mode 100644 index 0000000000..33aead2456 --- /dev/null +++ b/dashboard-ui/bower_components/iron-location/.bower.json @@ -0,0 +1,49 @@ +{ + "name": "iron-location", + "version": "0.8.5", + "description": "Bidirectional data binding into the page's URL.", + "private": true, + "authors": [ + "The Polymer Authors" + ], + "keywords": [ + "web-components", + "polymer", + "routing" + ], + "main": [ + "iron-location.html", + "iron-query-params.html" + ], + "repository": { + "type": "git", + "url": "git://github.com/PolymerElements/iron-location.git" + }, + "license": "http://polymer.github.io/LICENSE.txt", + "homepage": "https://github.com/PolymerElements/iron-location", + "ignore": [], + "dependencies": { + "polymer": "Polymer/polymer#^1.0.0" + }, + "devDependencies": { + "promise-polyfill": "polymerlabs/promise-polyfill#^1.0.0", + "iron-component-page": "polymerelements/iron-component-page#^1.0.0", + "iron-flex-layout": "polymerelements/iron-flex-layout#^1.0.0", + "paper-input": "polymerelements/paper-input#^1.0.0", + "paper-slider": "polymerelements/paper-slider#^1.0.0", + "paper-styles": "polymerelements/paper-styles#^1.0.0", + "test-fixture": "polymerelements/test-fixture#^1.0.0", + "web-component-tester": "^4.0.0", + "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0", + "iron-demo-helpers": "PolymerElements/iron-demo-helpers#^1.2.3" + }, + "_release": "0.8.5", + "_resolution": { + "type": "version", + "tag": "v0.8.5", + "commit": "d7c5a9c991bf5e94094c16e94eb34e2eb30db4b0" + }, + "_source": "git://github.com/PolymerElements/iron-location.git", + "_target": "^0.8.0", + "_originalSource": "PolymerElements/iron-location" +} \ No newline at end of file diff --git a/dashboard-ui/bower_components/iron-location/.github/ISSUE_TEMPLATE.md b/dashboard-ui/bower_components/iron-location/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000000..e3b4e289b6 --- /dev/null +++ b/dashboard-ui/bower_components/iron-location/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,33 @@ + +### Description + + +### Expected outcome + + + +### Actual outcome + + + +### Live Demo + + +### Steps to reproduce + + + +### Browsers Affected + +- [ ] Chrome +- [ ] Firefox +- [ ] Safari 9 +- [ ] Safari 8 +- [ ] Safari 7 +- [ ] Edge +- [ ] IE 11 +- [ ] IE 10 diff --git a/dashboard-ui/bower_components/iron-location/.gitignore b/dashboard-ui/bower_components/iron-location/.gitignore new file mode 100644 index 0000000000..8d4ae2536a --- /dev/null +++ b/dashboard-ui/bower_components/iron-location/.gitignore @@ -0,0 +1 @@ +bower_components diff --git a/dashboard-ui/bower_components/iron-location/.travis.yml b/dashboard-ui/bower_components/iron-location/.travis.yml new file mode 100644 index 0000000000..fd5d0d0d5e --- /dev/null +++ b/dashboard-ui/bower_components/iron-location/.travis.yml @@ -0,0 +1,23 @@ +language: node_js +sudo: required +node_js: stable +addons: + firefox: '46.0' + apt: + sources: + - google-chrome + packages: + - google-chrome-stable + sauce_connect: true +before_script: + - npm install -g bower polylint web-component-tester + - bower install + - polylint +script: + - xvfb-run wct + - "if [ \"${TRAVIS_PULL_REQUEST}\" = \"false\" ]; then wct -s 'default'; fi" +env: + global: + - secure: GQ+cUlta7BWa8Gq4YXrBStPzwRpHT2QG79T4pbDTz2Zs1RvT0GYQaEUksPQnsNCwnTF8ondXhUfMxHcC/r8p7YTCt2hSJSsKkx0lMertsjbKW38ZG28liaAN8msYGb9hnTs4qxhpVEX1pZtOI13RKBU85dw+jKbtxKDX/jVrMn42XCMhEmTeLxM4z8dW5nBu6LW6F3nwABQIUfdc/3OeIYG+2n+84zkXIsX1BFeejq28E6fYJAoMJgqfugLPgPu4IEVCWZJwYl2SgdXwxAcJ2auPph5GJ3DLd0fRRD1TZ94/u0A+eJcQ0OPiPu8hLpQNXOkCgAnO5jkpTCDERNQnB4nY8VfZeZdf1RLAB4VmxzOAbJwJcnqGrh89H6RhKKXyhcuFCgFACYfkzncBCs+co5KwVcwLq88cDOUbnmo3DlwQWpkfusvKy/ZrMrFrX1zycJWN4u8rDsIH4ELasSQh/J3OIa9l2mKfL/OEvqCmpv/ZLGlOVSvNLpr4U7vTVdZBP6C9rtwVXX7VzrClttiidHfoxztAMrNh2GBMjNH9n3FuWMoA/OSoxQGc7RreTsuzdniw3iJYUHIeG08R9bqRtSVA71AlQrbqUaHR+WM7rf7GUx6xG0uDop5vH0RDkE0Nld1W8XuVhHQUg3y3fd4AHJAQVmM7Zsfa3AY1gSr3hV0= + - secure: He0JAbtg9jFzuEBRHQdFWHJ33uueY/9Hxq4NB5PCAI1Z9ebIiTs73ofdNy6e+ftBqlQnBuhoKLfIpuD8Qj2kSdLHQvg1s6ojvNDmAvau1ZINCJRgOSKbGC0TvCVx9rT9Kqc83eqKvKDzr/rcpaIArgMYJzBrSG0D2Kn4luUQnWkKfo1knn17ytJFCvzqQvPWZTIZ6beJ7MRKXRU093a4wYMsKIxQHH65T4Ypj+RBsgv6Xnidjb8qZbNsEwaeOwExfsh30WUo/hSygRi2CP3KSRSc/vsMgSrGpFghZpnhjeDJAGTiDzCTxpJkAkHXereJT4agsWErcgSrRTaxi5G6f18o56pRS+I61BC5DuGGwSL7hOHWSC8pGzkwVFyz31MB2ll0HO3iQHMmcSjY37+G7toEP/vJ/UHm6SZoQq36HGJea7Ycv/2mk4HAHcVEDxhYG42bXXflxevFeqAkVUI7SxSaQpQuZF76/4th4uKFmAHPvRVj5yx8OWil9Lt6cG8DIEZaxXdJVueGgiODmmul7lAd5osO/1UCg4CTy1OnmuSJj7ax9LBa6YY2+3uvnBfE7fNUVKmVmVhlLsF0QAdj0LaFoSU0eQFWdReYqBxEvc4gOT3AtEpaAvfZnL11Q6wVyI7kCHhTHrltA4WENPOSA2u7W//WsQfHX3gRdpIVIVI= +dist: trusty diff --git a/dashboard-ui/bower_components/iron-location/CONTRIBUTING.md b/dashboard-ui/bower_components/iron-location/CONTRIBUTING.md new file mode 100644 index 0000000000..cfda1a5542 --- /dev/null +++ b/dashboard-ui/bower_components/iron-location/CONTRIBUTING.md @@ -0,0 +1,77 @@ + + +# Polymer Elements +## Guide for Contributors + +Polymer Elements are built in the open, and the Polymer authors eagerly encourage any and all forms of community contribution. When contributing, please follow these guidelines: + +### Filing Issues + +**If you are filing an issue to request a feature**, please provide a clear description of the feature. It can be helpful to describe answers to the following questions: + + 1. **Who will use the feature?** _“As someone filling out a form…”_ + 2. **When will they use the feature?** _“When I enter an invalid value…”_ + 3. **What is the user’s goal?** _“I want to be visually notified that the value needs to be corrected…”_ + +**If you are filing an issue to report a bug**, please provide: + + 1. **A clear description of the bug and related expectations.** Consider using the following example template for reporting a bug: + + ```markdown + The `paper-foo` element causes the page to turn pink when clicked. + + ## Expected outcome + + The page stays the same color. + + ## Actual outcome + + The page turns pink. + + ## Steps to reproduce + + 1. Put a `paper-foo` element in the page. + 2. Open the page in a web browser. + 3. Click the `paper-foo` element. + ``` + + 2. **A reduced test case that demonstrates the problem.** If possible, please include the test case as a JSBin. Start with this template to easily import and use relevant Polymer Elements: [https://jsbin.com/lebawa/edit?html,output](https://jsbin.com/lebawa/edit?html,output). + + 3. **A list of browsers where the problem occurs.** This can be skipped if the problem is the same across all browsers. + +### Submitting Pull Requests + +**Before creating a pull request**, please ensure that an issue exists for the corresponding change in the pull request that you intend to make. **If an issue does not exist, please create one per the guidelines above**. The goal is to discuss the design and necessity of the proposed change with Polymer authors and community before diving into a pull request. + +When submitting pull requests, please provide: + + 1. **A reference to the corresponding issue** or issues that will be closed by the pull request. Please refer to these issues in the pull request description using the following syntax: + + ```markdown + (For a single issue) + Fixes #20 + + (For multiple issues) + Fixes #32, fixes #40 + ``` + + 2. **A succinct description of the design** used to fix any related issues. For example: + + ```markdown + This fixes #20 by removing styles that leaked which would cause the page to turn pink whenever `paper-foo` is clicked. + ``` + + 3. **At least one test for each bug fixed or feature added** as part of the pull request. Pull requests that fix bugs or add features without accompanying tests will not be considered. + +If a proposed change contains multiple commits, please [squash commits](https://www.google.com/url?q=http://blog.steveklabnik.com/posts/2012-11-08-how-to-squash-commits-in-a-github-pull-request) to as few as is necessary to succinctly express the change. A Polymer author can help you squash commits, so don’t be afraid to ask us if you need help with that! diff --git a/dashboard-ui/bower_components/iron-location/bower.json b/dashboard-ui/bower_components/iron-location/bower.json new file mode 100644 index 0000000000..dd66b1474a --- /dev/null +++ b/dashboard-ui/bower_components/iron-location/bower.json @@ -0,0 +1,40 @@ +{ + "name": "iron-location", + "version": "0.8.5", + "description": "Bidirectional data binding into the page's URL.", + "private": true, + "authors": [ + "The Polymer Authors" + ], + "keywords": [ + "web-components", + "polymer", + "routing" + ], + "main": [ + "iron-location.html", + "iron-query-params.html" + ], + "repository": { + "type": "git", + "url": "git://github.com/PolymerElements/iron-location.git" + }, + "license": "http://polymer.github.io/LICENSE.txt", + "homepage": "https://github.com/PolymerElements/iron-location", + "ignore": [], + "dependencies": { + "polymer": "Polymer/polymer#^1.0.0" + }, + "devDependencies": { + "promise-polyfill": "polymerlabs/promise-polyfill#^1.0.0", + "iron-component-page": "polymerelements/iron-component-page#^1.0.0", + "iron-flex-layout": "polymerelements/iron-flex-layout#^1.0.0", + "paper-input": "polymerelements/paper-input#^1.0.0", + "paper-slider": "polymerelements/paper-slider#^1.0.0", + "paper-styles": "polymerelements/paper-styles#^1.0.0", + "test-fixture": "polymerelements/test-fixture#^1.0.0", + "web-component-tester": "^4.0.0", + "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0", + "iron-demo-helpers": "PolymerElements/iron-demo-helpers#^1.2.3" + } +} diff --git a/dashboard-ui/bower_components/iron-location/demo/index.html b/dashboard-ui/bower_components/iron-location/demo/index.html new file mode 100644 index 0000000000..19d80bbd3b --- /dev/null +++ b/dashboard-ui/bower_components/iron-location/demo/index.html @@ -0,0 +1,126 @@ + + + + + + iron-location + + + + + + + + + + + + + + + + + + + + + + diff --git a/dashboard-ui/bower_components/iron-location/demo/iron-query-params.html b/dashboard-ui/bower_components/iron-location/demo/iron-query-params.html new file mode 100644 index 0000000000..a7d753a716 --- /dev/null +++ b/dashboard-ui/bower_components/iron-location/demo/iron-query-params.html @@ -0,0 +1,119 @@ + + + + + + iron-query-params + + + + + + + + + + + + + + + + + + diff --git a/dashboard-ui/bower_components/iron-location/index.html b/dashboard-ui/bower_components/iron-location/index.html new file mode 100644 index 0000000000..8ded210751 --- /dev/null +++ b/dashboard-ui/bower_components/iron-location/index.html @@ -0,0 +1,27 @@ + + + + + + iron-location + + + + + + + + + + + + + diff --git a/dashboard-ui/bower_components/iron-location/iron-location.html b/dashboard-ui/bower_components/iron-location/iron-location.html new file mode 100644 index 0000000000..e80c0b0152 --- /dev/null +++ b/dashboard-ui/bower_components/iron-location/iron-location.html @@ -0,0 +1,330 @@ + + + + + + diff --git a/dashboard-ui/bower_components/iron-location/iron-query-params.html b/dashboard-ui/bower_components/iron-location/iron-query-params.html new file mode 100644 index 0000000000..d21a468087 --- /dev/null +++ b/dashboard-ui/bower_components/iron-location/iron-query-params.html @@ -0,0 +1,83 @@ + + + + + + diff --git a/dashboard-ui/bower_components/iron-location/test/index.html b/dashboard-ui/bower_components/iron-location/test/index.html new file mode 100644 index 0000000000..83e5250ba5 --- /dev/null +++ b/dashboard-ui/bower_components/iron-location/test/index.html @@ -0,0 +1,26 @@ + + + + + + + + + + + + diff --git a/dashboard-ui/bower_components/iron-location/test/initialization-cases.html b/dashboard-ui/bower_components/iron-location/test/initialization-cases.html new file mode 100644 index 0000000000..f8bde4f542 --- /dev/null +++ b/dashboard-ui/bower_components/iron-location/test/initialization-cases.html @@ -0,0 +1,277 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dashboard-ui/bower_components/iron-location/test/initialization-iframe.html b/dashboard-ui/bower_components/iron-location/test/initialization-iframe.html new file mode 100644 index 0000000000..564bf262a0 --- /dev/null +++ b/dashboard-ui/bower_components/iron-location/test/initialization-iframe.html @@ -0,0 +1,61 @@ + + + + + + + Base source for injecting into an iframe for tests + + + + + + + diff --git a/dashboard-ui/bower_components/iron-location/test/initialization-tests.html b/dashboard-ui/bower_components/iron-location/test/initialization-tests.html new file mode 100644 index 0000000000..16c911191d --- /dev/null +++ b/dashboard-ui/bower_components/iron-location/test/initialization-tests.html @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/dashboard-ui/bower_components/iron-location/test/iron-location.html b/dashboard-ui/bower_components/iron-location/test/iron-location.html new file mode 100644 index 0000000000..c4fd4ee602 --- /dev/null +++ b/dashboard-ui/bower_components/iron-location/test/iron-location.html @@ -0,0 +1,369 @@ + + + + + iron-location + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dashboard-ui/bower_components/iron-location/test/iron-query-params.html b/dashboard-ui/bower_components/iron-location/test/iron-query-params.html new file mode 100644 index 0000000000..4dea02f387 --- /dev/null +++ b/dashboard-ui/bower_components/iron-location/test/iron-query-params.html @@ -0,0 +1,96 @@ + + + + + iron-location + + + + + + + + + + + + + + + + diff --git a/dashboard-ui/bower_components/iron-location/test/redirection.html b/dashboard-ui/bower_components/iron-location/test/redirection.html new file mode 100644 index 0000000000..3b21f26764 --- /dev/null +++ b/dashboard-ui/bower_components/iron-location/test/redirection.html @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + diff --git a/dashboard-ui/components/remotecontrol.js b/dashboard-ui/components/remotecontrol.js index 3255ddb307..3f96c1c1a1 100644 --- a/dashboard-ui/components/remotecontrol.js +++ b/dashboard-ui/components/remotecontrol.js @@ -1,4 +1,4 @@ -define(['browser', 'datetime', 'libraryBrowser'], function (browser, datetime, libraryBrowser) { +define(['browser', 'datetime', 'libraryBrowser', 'listView'], function (browser, datetime, libraryBrowser, listView) { function showSlideshowMenu(context) { require(['scripts/slideshow'], function () { @@ -403,7 +403,7 @@ //}).then(function (result) { - // html += LibraryBrowser.getListViewHtml({ + // html += listView.getListViewHtml({ // items: result.Items, // smallIcon: true // }); @@ -411,7 +411,7 @@ // page(".playlist").html(html).lazyChildren(); //}); - html += libraryBrowser.getListViewHtml({ + html += listView.getListViewHtml({ items: MediaController.playlist(), smallIcon: true }); diff --git a/dashboard-ui/scripts/episodes.js b/dashboard-ui/scripts/episodes.js index 93dda46e57..3dfb98b90f 100644 --- a/dashboard-ui/scripts/episodes.js +++ b/dashboard-ui/scripts/episodes.js @@ -1,4 +1,4 @@ -define(['events', 'libraryBrowser', 'imageLoader', 'jQuery'], function (events, libraryBrowser, imageLoader, $) { +define(['events', 'libraryBrowser', 'imageLoader', 'listView'], function (events, libraryBrowser, imageLoader, listView) { return function (view, params, tabContent) { @@ -76,7 +76,7 @@ if (viewStyle == "List") { - html = libraryBrowser.getListViewHtml({ + html = listView.getListViewHtml({ items: result.Items, sortBy: query.SortBy }); @@ -107,17 +107,31 @@ }); } - $('.paging', tabContent).html(pagingHtml); + var i, length; + var elems = tabContent.querySelectorAll('.paging'); + for (i = 0, length = elems.length; i < length; i++) { + elems[i].innerHTML = pagingHtml; + } - $('.btnNextPage', tabContent).on('click', function () { + function onNextPageClick() { query.StartIndex += query.Limit; reloadItems(tabContent); - }); + } - $('.btnPreviousPage', tabContent).on('click', function () { + function onPreviousPageClick() { query.StartIndex -= query.Limit; reloadItems(tabContent); - }); + } + + elems = tabContent.querySelectorAll('.btnNextPage'); + for (i = 0, length = elems.length; i < length; i++) { + elems[i].addEventListener('click', onNextPageClick); + } + + elems = tabContent.querySelectorAll('.btnPreviousPage'); + for (i = 0, length = elems.length; i < length; i++) { + elems[i].addEventListener('click', onPreviousPageClick); + } var itemsContainer = tabContent.querySelector('.itemsContainer'); itemsContainer.innerHTML = html; diff --git a/dashboard-ui/scripts/gamespage.js b/dashboard-ui/scripts/gamespage.js index adc2f5b309..1d713c1d98 100644 --- a/dashboard-ui/scripts/gamespage.js +++ b/dashboard-ui/scripts/gamespage.js @@ -1,4 +1,4 @@ -define(['jQuery'], function ($) { +define(['jQuery', 'listView'], function ($, listView) { var data = {}; @@ -66,7 +66,7 @@ define(['jQuery'], function ($) { if (view == "List") { - html = LibraryBrowser.getListViewHtml({ + html = listView.getListViewHtml({ items: result.Items, context: 'games', sortBy: query.SortBy diff --git a/dashboard-ui/scripts/itembynamedetailpage.js b/dashboard-ui/scripts/itembynamedetailpage.js index 11f033c5d0..4f53c72847 100644 --- a/dashboard-ui/scripts/itembynamedetailpage.js +++ b/dashboard-ui/scripts/itembynamedetailpage.js @@ -1,4 +1,4 @@ -define([], function () { +define(['listView'], function (listView) { function renderItems(page, item) { @@ -218,7 +218,7 @@ Limit: 30 }, { playFromHere: true, - defaultAction: 'playallfromhere', + action: 'playallfromhere', smallIcon: true }); break; @@ -248,7 +248,7 @@ listOptions.items = result.Items; if (type == 'Audio') { - html = LibraryBrowser.getListViewHtml(listOptions); + html = listView.getListViewHtml(listOptions); } else { html = LibraryBrowser.getPosterViewHtml(listOptions); } diff --git a/dashboard-ui/scripts/itemdetailpage.js b/dashboard-ui/scripts/itemdetailpage.js index d89c42013d..66813a4423 100644 --- a/dashboard-ui/scripts/itemdetailpage.js +++ b/dashboard-ui/scripts/itemdetailpage.js @@ -1,4 +1,4 @@ -define(['layoutManager', 'datetime', 'mediaInfo', 'backdrop', 'scrollStyles'], function (layoutManager, datetime, mediaInfo, backdrop) { +define(['layoutManager', 'datetime', 'mediaInfo', 'backdrop', 'listView', 'scrollStyles'], function (layoutManager, datetime, mediaInfo, backdrop, listView) { var currentItem; @@ -931,14 +931,14 @@ if (item.Type == "MusicAlbum") { - html = LibraryBrowser.getListViewHtml({ + html = listView.getListViewHtml({ items: result.Items, smallIcon: true, showIndex: true, index: 'disc', showIndexNumber: true, playFromHere: true, - defaultAction: 'playallfromhere', + action: 'playallfromhere', lazy: true }); @@ -1315,9 +1315,9 @@ page.querySelector('#themeSongsCollapsible').classList.remove('hide'); - var html = LibraryBrowser.getListViewHtml({ - items: items, - smallIcon: true + var html = listView.getListViewHtml({ + items: result.Items, + sortBy: query.SortBy }); page.querySelector('#themeSongsContent').innerHTML = html; diff --git a/dashboard-ui/scripts/itemlistpage.js b/dashboard-ui/scripts/itemlistpage.js index 0365e84600..e1b7eef0e8 100644 --- a/dashboard-ui/scripts/itemlistpage.js +++ b/dashboard-ui/scripts/itemlistpage.js @@ -1,4 +1,4 @@ -define(['libraryBrowser', 'alphaPicker'], function (libraryBrowser, alphaPicker) { +define(['libraryBrowser', 'alphaPicker', 'listView'], function (libraryBrowser, alphaPicker, listView) { return function (view, params) { @@ -114,7 +114,7 @@ } else if (viewStyle == "List") { - html = libraryBrowser.getListViewHtml({ + html = listView.getListViewHtml({ items: result.Items, sortBy: query.SortBy }); diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js index b48f96e981..14a4f46ad7 100644 --- a/dashboard-ui/scripts/librarybrowser.js +++ b/dashboard-ui/scripts/librarybrowser.js @@ -1192,75 +1192,6 @@ }, - getListViewIndex: function (item, options) { - - if (options.index == 'disc') { - - return item.ParentIndexNumber == null ? '' : Globalize.translate('ValueDiscNumber', item.ParentIndexNumber); - } - - var sortBy = (options.sortBy || '').toLowerCase(); - var code, name; - - if (sortBy.indexOf('sortname') == 0) { - - if (item.Type == 'Episode') return ''; - - // SortName - name = (item.SortName || item.Name || '?')[0].toUpperCase(); - - code = name.charCodeAt(0); - if (code < 65 || code > 90) { - return '#'; - } - - return name.toUpperCase(); - } - if (sortBy.indexOf('officialrating') == 0) { - - return item.OfficialRating || Globalize.translate('HeaderUnrated'); - } - if (sortBy.indexOf('communityrating') == 0) { - - if (item.CommunityRating == null) { - return Globalize.translate('HeaderUnrated'); - } - - return Math.floor(item.CommunityRating); - } - if (sortBy.indexOf('criticrating') == 0) { - - if (item.CriticRating == null) { - return Globalize.translate('HeaderUnrated'); - } - - return Math.floor(item.CriticRating); - } - if (sortBy.indexOf('metascore') == 0) { - - if (item.Metascore == null) { - return Globalize.translate('HeaderUnrated'); - } - - return Math.floor(item.Metascore); - } - if (sortBy.indexOf('albumartist') == 0) { - - // SortName - if (!item.AlbumArtist) return ''; - - name = item.AlbumArtist[0].toUpperCase(); - - code = name.charCodeAt(0); - if (code < 65 || code > 90) { - return '#'; - } - - return name.toUpperCase(); - } - return ''; - }, - getUserDataCssClass: function (key) { if (!key) return ''; @@ -1268,208 +1199,6 @@ return 'libraryItemUserData' + key.replace(new RegExp(' ', 'g'), ''); }, - getListViewHtml: function (options) { - - require(['listViewStyle', 'material-icons']); - - var outerHtml = ""; - - if (options.title) { - outerHtml += '

'; - outerHtml += options.title; - outerHtml += '

'; - } - - outerHtml += '
'; - - var index = 0; - var groupTitle = ''; - - outerHtml += options.items.map(function (item) { - - var html = ''; - - if (options.showIndex !== false) { - - var itemGroupTitle = LibraryBrowser.getListViewIndex(item, options); - - if (itemGroupTitle != groupTitle) { - - outerHtml += '
'; - - if (index == 0) { - html += '

'; - } - else { - html += '

'; - } - html += itemGroupTitle; - html += '

'; - - html += '
'; - - groupTitle = itemGroupTitle; - } - } - - var dataAttributes = LibraryBrowser.getItemDataAttributes(item, options, index); - - var cssClass = 'listItem'; - - var href = LibraryBrowser.getHref(item, options.context); - html += '
'; - - var imgUrl; - - var downloadWidth = options.smallIcon ? 70 : 80; - // Scaling 400w episode images to 80 doesn't turn out very well - var minScale = item.Type == 'Episode' || item.Type == 'Game' || options.smallIcon ? 2 : 1.5; - - if (item.ImageTags.Primary) { - - imgUrl = ApiClient.getScaledImageUrl(item.Id, { - maxWidth: downloadWidth, - tag: item.ImageTags.Primary, - type: "Primary", - index: 0, - minScale: minScale - }); - - } - else if (item.AlbumId && item.AlbumPrimaryImageTag) { - - imgUrl = ApiClient.getScaledImageUrl(item.AlbumId, { - type: "Primary", - maxWidth: downloadWidth, - tag: item.AlbumPrimaryImageTag, - minScale: minScale - }); - - } - else if (item.SeriesId && item.SeriesPrimaryImageTag) { - - imgUrl = ApiClient.getScaledImageUrl(item.SeriesId, { - type: "Primary", - maxWidth: downloadWidth, - tag: item.SeriesPrimaryImageTag, - minScale: minScale - }); - - } - else if (item.ParentPrimaryImageTag) { - - imgUrl = ApiClient.getScaledImageUrl(item.ParentPrimaryImageItemId, { - type: "Primary", - maxWidth: downloadWidth, - tag: item.ParentPrimaryImageTag, - minScale: minScale - }); - } - - if (imgUrl) { - if (options.smallIcon) { - html += '
'; - } else { - html += '
'; - } - } else { - if (options.smallIcon) { - html += '
'; - } else { - html += '
'; - } - } - - var textlines = []; - - if (item.Type == 'Episode') { - textlines.push(item.SeriesName || ' '); - } else if (item.Type == 'MusicAlbum') { - textlines.push(item.AlbumArtist || ' '); - } - - var displayName = itemHelper.getDisplayName(item); - - if (options.showIndexNumber && item.IndexNumber != null) { - displayName = item.IndexNumber + ". " + displayName; - } - textlines.push(displayName); - - if (item.Type == 'Audio') { - textlines.push(item.ArtistItems.map(function (a) { - return a.Name; - - }).join(', ') || ' '); - } - - if (item.Type == 'Game') { - textlines.push(item.GameSystem || ' '); - } - - else if (item.Type == 'MusicGenre') { - textlines.push(' '); - } - else if (item.Type == 'MusicArtist') { - textlines.push(' '); - } - else if (item.Type == 'TvChannel') { - - if (item.CurrentProgram) { - textlines.push(itemHelper.getDisplayName(item.CurrentProgram)); - } - } - else { - textlines.push('
' + mediaInfo.getPrimaryMediaInfoHtml(item, { - endsAt: false - }) + '
'); - } - - var defaultAction = options.defaultAction; - if (defaultAction == 'play' || defaultAction == 'playallfromhere') { - if (item.PlayAccess != 'Full') { - defaultAction = null; - } - } - - var bodyCssClass = 'mediaItem clearLink listItemBody'; - if (textlines.length > 2) { - bodyCssClass += ' three-line'; - } else { - bodyCssClass += ' two-line'; - } - var defaultActionAttribute = defaultAction ? (' data-action="' + defaultAction + '" class="itemWithAction ' + bodyCssClass + '"') : ' class="' + bodyCssClass + '"'; - html += ''; - - for (var i = 0, textLinesLength = textlines.length; i < textLinesLength; i++) { - - if (i == 0) { - html += '
'; - } else { - html += '
'; - } - html += textlines[i] || ' '; - html += '
'; - } - - html += ''; - - html += ''; - html += ''; - html += LibraryBrowser.getUserDataIconsHtml(item); - html += ''; - - html += '
'; - - index++; - return html; - - }).join(''); - - outerHtml += '
'; - - return outerHtml; - }, - getItemDataAttributesList: function (item, options, index) { var atts = []; diff --git a/dashboard-ui/scripts/moviecollections.js b/dashboard-ui/scripts/moviecollections.js index 96c6f1b80f..ce4f61cda5 100644 --- a/dashboard-ui/scripts/moviecollections.js +++ b/dashboard-ui/scripts/moviecollections.js @@ -1,4 +1,4 @@ -define(['events', 'libraryBrowser', 'imageLoader', 'alphaPicker'], function (events, libraryBrowser, imageLoader, alphaPicker) { +define(['events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView'], function (events, libraryBrowser, imageLoader, alphaPicker, listView) { return function (view, params, tabContent) { @@ -108,7 +108,7 @@ } else if (viewStyle == "List") { - html = libraryBrowser.getListViewHtml({ + html = listView.getListViewHtml({ items: result.Items, context: 'movies', sortBy: query.SortBy diff --git a/dashboard-ui/scripts/movies.js b/dashboard-ui/scripts/movies.js index 5c8a8a8d36..1f573256ca 100644 --- a/dashboard-ui/scripts/movies.js +++ b/dashboard-ui/scripts/movies.js @@ -1,4 +1,4 @@ -define(['events', 'libraryBrowser', 'imageLoader', 'alphaPicker'], function (events, libraryBrowser, imageLoader, alphaPicker) { +define(['events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView'], function (events, libraryBrowser, imageLoader, alphaPicker, listView) { return function (view, params, tabContent) { @@ -109,7 +109,7 @@ } else if (viewStyle == "List") { - html = libraryBrowser.getListViewHtml({ + html = listView.getListViewHtml({ items: result.Items, context: 'movies', sortBy: query.SortBy diff --git a/dashboard-ui/scripts/movietrailers.js b/dashboard-ui/scripts/movietrailers.js index 677157d035..83105fefba 100644 --- a/dashboard-ui/scripts/movietrailers.js +++ b/dashboard-ui/scripts/movietrailers.js @@ -1,4 +1,4 @@ -define(['events', 'libraryBrowser', 'imageLoader', 'alphaPicker'], function (events, libraryBrowser, imageLoader, alphaPicker) { +define(['events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView'], function (events, libraryBrowser, imageLoader, alphaPicker, listView) { return function (view, params, tabContent) { @@ -108,7 +108,7 @@ } else if (viewStyle == "List") { - html = libraryBrowser.getListViewHtml({ + html = listView.getListViewHtml({ items: result.Items, context: 'movies', sortBy: query.SortBy diff --git a/dashboard-ui/scripts/musicalbums.js b/dashboard-ui/scripts/musicalbums.js index 12c0643442..f22a8de9b1 100644 --- a/dashboard-ui/scripts/musicalbums.js +++ b/dashboard-ui/scripts/musicalbums.js @@ -1,4 +1,4 @@ -define(['events', 'libraryBrowser', 'imageLoader', 'alphaPicker'], function (events, libraryBrowser, imageLoader, alphaPicker) { +define(['events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView'], function (events, libraryBrowser, imageLoader, alphaPicker, listView) { return function (view, params, tabContent) { @@ -75,7 +75,7 @@ if (viewStyle == "List") { - html = libraryBrowser.getListViewHtml({ + html = listView.getListViewHtml({ items: result.Items, context: 'music', sortBy: query.SortBy diff --git a/dashboard-ui/scripts/musicartists.js b/dashboard-ui/scripts/musicartists.js index 854f1aa77e..f1492c6055 100644 --- a/dashboard-ui/scripts/musicartists.js +++ b/dashboard-ui/scripts/musicartists.js @@ -1,4 +1,4 @@ -define(['events', 'libraryBrowser', 'imageLoader', 'alphaPicker'], function (events, libraryBrowser, imageLoader, alphaPicker) { +define(['events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView'], function (events, libraryBrowser, imageLoader, alphaPicker, listView) { return function (view, params, tabContent) { @@ -77,9 +77,8 @@ if (viewStyle == "List") { - html = LibraryBrowser.getListViewHtml({ + html = listView.getListViewHtml({ items: result.Items, - context: 'music', sortBy: query.SortBy }); } diff --git a/dashboard-ui/scripts/playlistedit.js b/dashboard-ui/scripts/playlistedit.js index c3c50dbee2..1b0af4cdf2 100644 --- a/dashboard-ui/scripts/playlistedit.js +++ b/dashboard-ui/scripts/playlistedit.js @@ -1,4 +1,4 @@ -define(['appStorage', 'jQuery'], function (appStorage, $) { +define(['appStorage', 'jQuery', 'listView'], function (appStorage, $, listView) { var data = {}; function getPageData() { @@ -60,15 +60,14 @@ if (view == "List") { - html = LibraryBrowser.getListViewHtml({ + html = listView.getListViewHtml({ items: result.Items, sortBy: query.SortBy, showIndex: false, showRemoveFromPlaylist: true, playFromHere: true, - defaultAction: 'playallfromhere', + action: 'playallfromhere', smallIcon: true - }); } diff --git a/dashboard-ui/scripts/playlists.js b/dashboard-ui/scripts/playlists.js index b193fba51a..628c23f7a3 100644 --- a/dashboard-ui/scripts/playlists.js +++ b/dashboard-ui/scripts/playlists.js @@ -1,4 +1,4 @@ -define([], function () { +define(['listView'], function (listView) { var data = {}; function getPageData() { @@ -80,7 +80,7 @@ if (view == "List") { - html = LibraryBrowser.getListViewHtml({ + html = listView.getListViewHtml({ items: result.Items, sortBy: query.SortBy }); diff --git a/dashboard-ui/scripts/secondaryitems.js b/dashboard-ui/scripts/secondaryitems.js index 83a889752d..bc6bbca87b 100644 --- a/dashboard-ui/scripts/secondaryitems.js +++ b/dashboard-ui/scripts/secondaryitems.js @@ -1,4 +1,4 @@ -define(['libraryBrowser'], function (libraryBrowser) { +define(['libraryBrowser', 'listView'], function (libraryBrowser, listView) { return function (view, params) { @@ -127,10 +127,10 @@ if (query.IncludeItemTypes == "Audio") { - html = '
' + libraryBrowser.getListViewHtml({ + html = '
' + listView.getListViewHtml({ items: result.Items, playFromHere: true, - defaultAction: 'playallfromhere', + action: 'playallfromhere', smallIcon: true }) + '
'; diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index dc65fa4c4b..a8a8c23d37 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -1934,8 +1934,10 @@ var AppInfo = {}; define('native-promise-only', [bowerPath + '/native-promise-only/lib/npo.src']); define("fingerprintjs2", [bowerPath + '/fingerprintjs2/fingerprint2'], returnFirstDependency); define("clearButtonStyle", ['css!' + embyWebComponentsBowerPath + '/clearbutton']); + define("userdataButtons", [embyWebComponentsBowerPath + "/userdatabuttons/userdatabuttons"], returnFirstDependency); define("listView", [embyWebComponentsBowerPath + "/listview/listview"], returnFirstDependency); define("listViewStyle", ['css!' + embyWebComponentsBowerPath + "/listview/listview"], returnFirstDependency); + define("indicators", [embyWebComponentsBowerPath + "/indicators/indicators"], returnFirstDependency); if ('registerElement' in document && 'content' in document.createElement('template')) { define('webcomponentsjs', []); diff --git a/dashboard-ui/scripts/songs.js b/dashboard-ui/scripts/songs.js index 9915361d8e..3a0ad05215 100644 --- a/dashboard-ui/scripts/songs.js +++ b/dashboard-ui/scripts/songs.js @@ -1,4 +1,4 @@ -define(['events', 'libraryBrowser', 'imageLoader'], function (events, libraryBrowser, imageLoader) { +define(['events', 'libraryBrowser', 'imageLoader', 'listView'], function (events, libraryBrowser, imageLoader, listView) { return function (view, params, tabContent) { @@ -68,10 +68,9 @@ filterButton: false }); - var html = LibraryBrowser.getListViewHtml({ + var html = listView.getListViewHtml({ items: result.Items, - showIndex: true, - defaultAction: 'play', + action: 'playallfromhere', smallIcon: true }); diff --git a/dashboard-ui/scripts/tvshows.js b/dashboard-ui/scripts/tvshows.js index 73c98b6f03..cb7dbe1302 100644 --- a/dashboard-ui/scripts/tvshows.js +++ b/dashboard-ui/scripts/tvshows.js @@ -1,4 +1,4 @@ -define(['events', 'libraryBrowser', 'imageLoader', 'alphaPicker'], function (events, libraryBrowser, imageLoader, alphaPicker) { +define(['events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView'], function (events, libraryBrowser, imageLoader, alphaPicker, listView) { return function (view, params, tabContent) { @@ -109,7 +109,7 @@ } else if (viewStyle == "List") { - html = libraryBrowser.getListViewHtml({ + html = listView.getListViewHtml({ items: result.Items, context: 'tv', sortBy: query.SortBy