define(['jQuery'], function ($) { var query = { StartIndex: 0, Limit: 50 }; var currentResult; function showStatusMessage(id) { var item = currentResult.Items.filter(function (i) { return i.Id == id; })[0]; Dashboard.alert({ title: getStatusText(item, false), message: item.StatusMessage }); } function deleteOriginalFile(page, id) { var item = currentResult.Items.filter(function (i) { return i.Id == id; })[0]; var message = Globalize.translate('MessageFileWillBeDeleted') + '

' + item.OriginalPath + '

' + Globalize.translate('MessageSureYouWishToProceed'); require(['confirm'], function (confirm) { confirm(message, Globalize.translate('HeaderDeleteFile')).then(function () { Dashboard.showLoadingMsg(); ApiClient.deleteOriginalFileFromOrganizationResult(id).then(function () { Dashboard.hideLoadingMsg(); reloadItems(page); }, onApiFailure); }); }); } function organizeFileWithCorrections(page, item) { showCorrectionPopup(page, item); } function showCorrectionPopup(page, item) { require(['components/fileorganizer/fileorganizer'], function (fileorganizer) { fileorganizer.show(item).then(function () { reloadItems(page); }); }); } function organizeFile(page, id) { var item = currentResult.Items.filter(function (i) { return i.Id == id; })[0]; if (!item.TargetPath) { if (item.Type == "Episode") { organizeFileWithCorrections(page, item); } return; } var message = Globalize.translate('MessageFollowingFileWillBeMovedFrom') + '

' + item.OriginalPath + '

' + Globalize.translate('MessageDestinationTo') + '

' + item.TargetPath; if (item.DuplicatePaths.length) { message += '

' + Globalize.translate('MessageDuplicatesWillBeDeleted'); message += '

' + item.DuplicatePaths.join('
'); } message += '

' + Globalize.translate('MessageSureYouWishToProceed'); require(['confirm'], function (confirm) { confirm(message, Globalize.translate('HeaderOrganizeFile')).then(function () { Dashboard.showLoadingMsg(); ApiClient.performOrganization(id).then(function () { Dashboard.hideLoadingMsg(); reloadItems(page); }, onApiFailure); }); }); } function reloadItems(page) { Dashboard.showLoadingMsg(); ApiClient.getFileOrganizationResults(query).then(function (result) { currentResult = result; renderResults(page, result); Dashboard.hideLoadingMsg(); }, onApiFailure); } function getStatusText(item, enhance) { var status = item.Status; var color = null; if (status == 'SkippedExisting') { status = Globalize.translate('StatusSkipped'); } else if (status == 'Failure') { color = '#cc0000'; status = Globalize.translate('StatusFailed'); } if (status == 'Success') { color = 'green'; status = Globalize.translate('StatusSuccess'); } if (enhance) { if (item.StatusMessage) { return '' + status + ''; } else { return '' + status + ''; } } return status; } function renderResults(page, result) { var rows = result.Items.map(function (item) { var html = ''; html += ''; html += ''; var date = parseISO8601Date(item.Date, { toLocal: true }); html += date.toLocaleDateString(); html += ''; html += ''; var status = item.Status; if (status == 'SkippedExisting') { html += ''; html += item.OriginalFileName; html += ''; } else if (status == 'Failure') { html += ''; html += item.OriginalFileName; html += ''; } else { html += '
'; html += item.OriginalFileName; html += '
'; } html += ''; html += ''; html += item.TargetPath || ''; html += ''; html += ''; if (item.Status != 'Success') { html += ''; html += ''; } html += ''; html += ''; return html; }).join(''); var elem = $('.resultBody', page).html(rows).parents('.tblOrganizationResults').table('refresh').trigger('create'); $('.btnShowStatusMessage', elem).on('click', function () { var id = this.getAttribute('data-resultid'); showStatusMessage(id); }); $('.btnProcessResult', elem).on('click', function () { var id = this.getAttribute('data-resultid'); organizeFile(page, id); }); $('.btnDeleteResult', elem).on('click', function () { var id = this.getAttribute('data-resultid'); deleteOriginalFile(page, id); }); var pagingHtml = LibraryBrowser.getQueryPagingHtml({ startIndex: query.StartIndex, limit: query.Limit, totalRecordCount: result.TotalRecordCount, showLimit: false, updatePageSizeSetting: false }); $(page)[0].querySelector('.listTopPaging').innerHTML = pagingHtml; if (result.TotalRecordCount > query.Limit && result.TotalRecordCount > 50) { $('.listBottomPaging', page).html(pagingHtml).trigger('create'); } else { $('.listBottomPaging', page).empty(); } $('.btnNextPage', page).on('click', function () { query.StartIndex += query.Limit; reloadItems(page); }); $('.btnPreviousPage', page).on('click', function () { query.StartIndex -= query.Limit; reloadItems(page); }); if (result.TotalRecordCount) { $('.btnClearLog', page).show(); } else { $('.btnClearLog', page).hide(); } } function onWebSocketMessage(e, msg) { var page = $.mobile.activePage; if ((msg.MessageType == 'ScheduledTaskEnded' && msg.Data.Key == 'AutoOrganize') || msg.MessageType == 'AutoOrganizeUpdate') { reloadItems(page); } } function onApiFailure(e) { Dashboard.hideLoadingMsg(); if (e.status == 0) { Dashboard.alert({ title: 'Auto-Organize', message: 'The operation is going to take a little longer. The view will be updated on completion.' }); } else { Dashboard.alert({ title: Globalize.translate('AutoOrganizeError'), message: Globalize.translate('ErrorOrganizingFileWithErrorCode', e.headers.get('X-Application-Error-Code')) }); } } function getTabs() { return [ { href: 'autoorganizelog.html', name: Globalize.translate('TabActivityLog') }, { href: 'autoorganizetv.html', name: Globalize.translate('TabTV') }, { href: 'autoorganizesmart.html', name: Globalize.translate('TabSmartMatches') }]; } $(document).on('pageinit', "#libraryFileOrganizerLogPage", function () { var page = this; $('.btnClearLog', page).on('click', function () { ApiClient.clearOrganizationLog().then(function () { reloadItems(page); }, onApiFailure); }); }).on('pageshow', '#libraryFileOrganizerLogPage', function () { LibraryMenu.setTabs('autoorganize', 0, getTabs); var page = this; reloadItems(page); // on here $('.btnOrganize', page).taskButton({ mode: 'on', progressElem: page.querySelector('.organizeProgress'), panel: $('.organizeTaskPanel', page), taskKey: 'AutoOrganize' }); Events.on(ApiClient, 'websocketmessage', onWebSocketMessage); }).on('pagebeforehide', '#libraryFileOrganizerLogPage', function () { var page = this; currentResult = null; // off here $('.btnOrganize', page).taskButton({ mode: 'off' }); Events.off(ApiClient, 'websocketmessage', onWebSocketMessage); }); });