(function ($, window, document) { var currentItem; function showLocalSubtitles(page, index) { Dashboard.showLoadingMsg(); var popup = $('.popupSubtitleViewer', page).popup('open'); $('.subtitleContent', page).html(''); var url = 'Videos/' + currentItem.Id + '/Subtitles/' + index; $.get(ApiClient.getUrl(url)).done(function (result) { $('.subtitleContent', page).html(result); Dashboard.hideLoadingMsg(); popup.popup('reposition', {}); }); } function showRemoteSubtitles(page, id) { Dashboard.showLoadingMsg(); var popup = $('.popupSubtitleViewer', page).popup('open'); $('.subtitleContent', page).html('\nLoading...\n\n\n'); var url = 'Providers/Subtitles/Subtitles/' + id; ApiClient.get(ApiClient.getUrl(url)).done(function (result) { $('.subtitleContent', page).html(result); Dashboard.hideLoadingMsg(); popup.popup('reposition', {}); }); } function downloadRemoteSubtitles(page, id) { var url = 'Items/' + currentItem.Id + '/RemoteSearch/Subtitles/' + id; ApiClient.ajax({ type: "POST", url: ApiClient.getUrl(url) }).done(function () { Dashboard.alert(Globalize.translate('MessageDownloadQueued')); }); } function deleteLocalSubtitle(page, index) { var msg = Globalize.translate('MessageAreYouSureDeleteSubtitles'); Dashboard.confirm(msg, Globalize.translate('HeaderConfirmDeletion'), function (result) { if (result) { Dashboard.showLoadingMsg(); var url = 'Videos/' + currentItem.Id + '/Subtitles/' + index; ApiClient.ajax({ type: "DELETE", url: ApiClient.getUrl(url) }).done(function () { reload(page); }); } }); } function fillSubtitleList(page, item) { var streams = item.MediaStreams || []; var subs = streams.filter(function (s) { return s.Type == 'Subtitle'; }); var html = ''; if (subs.length) { html += '
'; html += ''; } var elem = $('.subtitleList', page).html(html).trigger('create'); $('.btnViewSubtitles', elem).on('click', function () { var index = this.getAttribute('data-index'); showLocalSubtitles(page, index); }); $('.btnDelete', elem).on('click', function () { var index = this.getAttribute('data-index'); deleteLocalSubtitle(page, index); }); } function fillLanguages(page, languages) { $('#selectLanguage', page).html(languages.map(function (l) { return ''; })); Dashboard.getCurrentUser().done(function (user) { var lang = user.Configuration.SubtitleLanguagePreference; if (lang) { $('#selectLanguage', page).val(lang); } }); } function renderSearchResults(page, results) { var lastProvider = ''; var html = ''; if (!results.length) { $('.noSearchResults', page).show(); $('.subtitleResults', page).html(''); Dashboard.hideLoadingMsg(); return; } $('.noSearchResults', page).hide(); html += ''; var elem = $('.subtitleResults', page).html(html).trigger('create'); $('.btnViewSubtitle', elem).on('click', function () { var id = this.getAttribute('data-subid'); showRemoteSubtitles(page, id); }); $('.btnDownload', elem).on('click', function () { var id = this.getAttribute('data-subid'); downloadRemoteSubtitles(page, id); }); Dashboard.hideLoadingMsg(); } function searchForSubtitles(page, language) { Dashboard.showLoadingMsg(); var url = ApiClient.getUrl('Items/' + currentItem.Id + '/RemoteSearch/Subtitles/' + language); ApiClient.getJSON(url).done(function (results) { renderSearchResults(page, results); }); } function reload(page) { $('.noSearchResults', page).hide(); MetadataEditor.getItemPromise().done(function (item) { currentItem = item; LibraryBrowser.renderName(item, $('.itemName', page), true); fillSubtitleList(page, item); Dashboard.hideLoadingMsg(); }); } function onSearchSubmit() { var form = this; var lang = $('#selectLanguage', form).val(); searchForSubtitles($(form).parents('.page'), lang); return false; } $(document).on('pageinit', "#editItemMetadataPage", function () { var page = this; $('.subtitleSearchForm').off('submit', onSearchSubmit).on('submit', onSearchSubmit); $(page.querySelector('paper-tabs')).on('tabchange', function () { if (parseInt(this.selected) == 1) { var tabContent = page.querySelector('.subtitleTabContent'); $('.subtitleResults', tabContent).empty(); Dashboard.showLoadingMsg(); reload(tabContent); ApiClient.getCultures().done(function (languages) { fillLanguages(tabContent, languages); }); } }); }); })(jQuery, window, document);