mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
minify resources
This commit is contained in:
parent
8a6884abef
commit
661eeac16e
201 changed files with 203 additions and 52376 deletions
File diff suppressed because one or more lines are too long
|
@ -1,106 +1 @@
|
|||
define(['jQuery'], function ($) {
|
||||
'use strict';
|
||||
|
||||
function reloadList(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var promise1 = ApiClient.getAvailablePlugins({
|
||||
TargetSystems: 'Server'
|
||||
});
|
||||
|
||||
var promise2 = ApiClient.getInstalledPlugins();
|
||||
|
||||
Promise.all([promise1, promise2]).then(function (responses) {
|
||||
renderInstalled(page, responses[0], responses[1]);
|
||||
renderCatalog(page, responses[0], responses[1]);
|
||||
});
|
||||
}
|
||||
|
||||
function getCategories() {
|
||||
|
||||
var context = getParameterByName('context');
|
||||
|
||||
var categories = [];
|
||||
|
||||
if (context == 'sync') {
|
||||
categories.push('Sync');
|
||||
}
|
||||
else if (context == 'livetv') {
|
||||
categories.push('Live TV');
|
||||
}
|
||||
else if (context == 'notifications') {
|
||||
categories.push('Notifications');
|
||||
}
|
||||
|
||||
return categories;
|
||||
}
|
||||
|
||||
function renderInstalled(page, availablePlugins, installedPlugins) {
|
||||
|
||||
requirejs(['scripts/pluginspage'], function() {
|
||||
var category = getCategories()[0];
|
||||
|
||||
installedPlugins = installedPlugins.filter(function (i) {
|
||||
|
||||
var catalogEntry = availablePlugins.filter(function (a) {
|
||||
return (a.guid || '').toLowerCase() == (i.Id || '').toLowerCase();
|
||||
})[0];
|
||||
|
||||
if (catalogEntry) {
|
||||
return catalogEntry.category == category;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
PluginsPage.renderPlugins(page, installedPlugins);
|
||||
});
|
||||
}
|
||||
|
||||
function renderCatalog(page, availablePlugins, installedPlugins) {
|
||||
|
||||
requirejs(['scripts/plugincatalogpage'], function () {
|
||||
var categories = getCategories();
|
||||
|
||||
PluginCatalog.renderCatalog({
|
||||
|
||||
catalogElement: $('.catalog', page),
|
||||
availablePlugins: availablePlugins,
|
||||
installedPlugins: installedPlugins,
|
||||
categories: categories,
|
||||
showCategory: false,
|
||||
context: getParameterByName('context'),
|
||||
targetSystem: 'Server'
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
$(document).on('pagebeforeshow pageshow', "#appServicesPage", function () {
|
||||
|
||||
// This needs both events for the helpurl to get done at the right time
|
||||
|
||||
var page = this;
|
||||
|
||||
var context = getParameterByName('context');
|
||||
|
||||
if (context == 'sync') {
|
||||
LibraryMenu.setTitle(Globalize.translate('TitleSync'));
|
||||
page.setAttribute('data-helpurl', 'https://github.com/MediaBrowser/Wiki/wiki/Sync');
|
||||
}
|
||||
else if (context == 'livetv') {
|
||||
LibraryMenu.setTitle(Globalize.translate('TitleLiveTV'));
|
||||
page.setAttribute('data-helpurl', 'https://github.com/MediaBrowser/Wiki/wiki/Live%20TV');
|
||||
}
|
||||
else if (context == 'notifications') {
|
||||
LibraryMenu.setTitle(Globalize.translate('TitleNotifications'));
|
||||
page.setAttribute('data-helpurl', 'https://github.com/MediaBrowser/Wiki/wiki/Notifications');
|
||||
}
|
||||
|
||||
}).on('pageshow', "#appServicesPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
reloadList(page);
|
||||
});
|
||||
|
||||
});
|
||||
define(["jQuery"],function($){"use strict";function reloadList(page){Dashboard.showLoadingMsg();var promise1=ApiClient.getAvailablePlugins({TargetSystems:"Server"}),promise2=ApiClient.getInstalledPlugins();Promise.all([promise1,promise2]).then(function(responses){renderInstalled(page,responses[0],responses[1]),renderCatalog(page,responses[0],responses[1])})}function getCategories(){var context=getParameterByName("context"),categories=[];return"sync"==context?categories.push("Sync"):"livetv"==context?categories.push("Live TV"):"notifications"==context&&categories.push("Notifications"),categories}function renderInstalled(page,availablePlugins,installedPlugins){requirejs(["scripts/pluginspage"],function(){var category=getCategories()[0];installedPlugins=installedPlugins.filter(function(i){var catalogEntry=availablePlugins.filter(function(a){return(a.guid||"").toLowerCase()==(i.Id||"").toLowerCase()})[0];return!!catalogEntry&&catalogEntry.category==category}),PluginsPage.renderPlugins(page,installedPlugins)})}function renderCatalog(page,availablePlugins,installedPlugins){requirejs(["scripts/plugincatalogpage"],function(){var categories=getCategories();PluginCatalog.renderCatalog({catalogElement:$(".catalog",page),availablePlugins:availablePlugins,installedPlugins:installedPlugins,categories:categories,showCategory:!1,context:getParameterByName("context"),targetSystem:"Server"})})}$(document).on("pagebeforeshow pageshow","#appServicesPage",function(){var page=this,context=getParameterByName("context");"sync"==context?(LibraryMenu.setTitle(Globalize.translate("TitleSync")),page.setAttribute("data-helpurl","https://github.com/MediaBrowser/Wiki/wiki/Sync")):"livetv"==context?(LibraryMenu.setTitle(Globalize.translate("TitleLiveTV")),page.setAttribute("data-helpurl","https://github.com/MediaBrowser/Wiki/wiki/Live%20TV")):"notifications"==context&&(LibraryMenu.setTitle(Globalize.translate("TitleNotifications")),page.setAttribute("data-helpurl","https://github.com/MediaBrowser/Wiki/wiki/Notifications"))}).on("pageshow","#appServicesPage",function(){var page=this;reloadList(page)})});
|
|
@ -1,112 +1 @@
|
|||
define(['backdrop', 'appStorage'], function (backdrop, appStorage) {
|
||||
'use strict';
|
||||
|
||||
function enabled() {
|
||||
|
||||
var apiClient = window.ApiClient;
|
||||
|
||||
if (!apiClient) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var userId = apiClient.getCurrentUserId();
|
||||
|
||||
var val = appStorage.getItem('enableBackdrops-' + userId);
|
||||
|
||||
// For bandwidth
|
||||
return val == '1';
|
||||
}
|
||||
|
||||
var cache = {};
|
||||
|
||||
function getBackdropItemIds(apiClient, userId, types, parentId) {
|
||||
|
||||
var key = 'backdrops2_' + userId + (types || '') + (parentId || '');
|
||||
|
||||
var data = cache[key];
|
||||
|
||||
if (data) {
|
||||
|
||||
console.log('Found backdrop id list in cache. Key: ' + key);
|
||||
data = JSON.parse(data);
|
||||
return Promise.resolve(data);
|
||||
} else {
|
||||
|
||||
var options = {
|
||||
|
||||
SortBy: "IsFavoriteOrLiked,Random",
|
||||
Limit: 20,
|
||||
Recursive: true,
|
||||
IncludeItemTypes: types,
|
||||
ImageTypes: "Backdrop",
|
||||
//Ids: "8114409aa00a2722456c08e298f90bed",
|
||||
ParentId: parentId
|
||||
};
|
||||
|
||||
return apiClient.getItems(apiClient.getCurrentUserId(), options).then(function (result) {
|
||||
|
||||
var images = result.Items.map(function (i) {
|
||||
return {
|
||||
Id: i.Id,
|
||||
tag: i.BackdropImageTags[0],
|
||||
ServerId: i.ServerId
|
||||
};
|
||||
});
|
||||
|
||||
cache[key] = JSON.stringify(images);
|
||||
return images;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function showBackdrop(type, parentId) {
|
||||
|
||||
var apiClient = window.ApiClient;
|
||||
|
||||
if (!apiClient) {
|
||||
return;
|
||||
}
|
||||
|
||||
getBackdropItemIds(apiClient, apiClient.getCurrentUserId(), type, parentId).then(function (images) {
|
||||
|
||||
if (images.length) {
|
||||
|
||||
backdrop.setBackdrops(images.map(function (i) {
|
||||
i.BackdropImageTags = [i.tag];
|
||||
return i;
|
||||
}));
|
||||
|
||||
} else {
|
||||
|
||||
backdrop.clear();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
pageClassOn('pagebeforeshow', "page", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
// These pages self-manage their backdrops
|
||||
if (page.classList.contains('selfBackdropPage')) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (page.classList.contains('backdropPage')) {
|
||||
|
||||
if (enabled()) {
|
||||
var type = page.getAttribute('data-backdroptype');
|
||||
|
||||
var parentId = page.classList.contains('globalBackdropPage') ? '' : LibraryMenu.getTopParentId();
|
||||
showBackdrop(type, parentId);
|
||||
|
||||
} else {
|
||||
page.classList.remove('backdropPage');
|
||||
backdrop.clear();
|
||||
}
|
||||
} else {
|
||||
backdrop.clear();
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
define(["backdrop","appStorage"],function(backdrop,appStorage){"use strict";function enabled(){var apiClient=window.ApiClient;if(!apiClient)return!1;var userId=apiClient.getCurrentUserId(),val=appStorage.getItem("enableBackdrops-"+userId);return"1"==val}function getBackdropItemIds(apiClient,userId,types,parentId){var key="backdrops2_"+userId+(types||"")+(parentId||""),data=cache[key];if(data)return console.log("Found backdrop id list in cache. Key: "+key),data=JSON.parse(data),Promise.resolve(data);var options={SortBy:"IsFavoriteOrLiked,Random",Limit:20,Recursive:!0,IncludeItemTypes:types,ImageTypes:"Backdrop",ParentId:parentId};return apiClient.getItems(apiClient.getCurrentUserId(),options).then(function(result){var images=result.Items.map(function(i){return{Id:i.Id,tag:i.BackdropImageTags[0],ServerId:i.ServerId}});return cache[key]=JSON.stringify(images),images})}function showBackdrop(type,parentId){var apiClient=window.ApiClient;apiClient&&getBackdropItemIds(apiClient,apiClient.getCurrentUserId(),type,parentId).then(function(images){images.length?backdrop.setBackdrops(images.map(function(i){return i.BackdropImageTags=[i.tag],i})):backdrop.clear()})}var cache={};pageClassOn("pagebeforeshow","page",function(){var page=this;if(!page.classList.contains("selfBackdropPage"))if(page.classList.contains("backdropPage"))if(enabled()){var type=page.getAttribute("data-backdroptype"),parentId=page.classList.contains("globalBackdropPage")?"":LibraryMenu.getTopParentId();showBackdrop(type,parentId)}else page.classList.remove("backdropPage"),backdrop.clear();else backdrop.clear()})});
|
|
@ -1,73 +1 @@
|
|||
define(['appSettings', 'emby-checkbox'], function (appSettings) {
|
||||
'use strict';
|
||||
|
||||
function loadForm(page, user) {
|
||||
|
||||
var uploadServers = appSettings.cameraUploadServers();
|
||||
|
||||
page.querySelector('.uploadServerList').innerHTML = ConnectionManager.getSavedServers().map(function (s) {
|
||||
|
||||
var checkedHtml = uploadServers.indexOf(s.Id) == -1 ? '' : ' checked';
|
||||
var html = '<label><input type="checkbox" is="emby-checkbox"' + checkedHtml + ' class="chkUploadServer" data-id="' + s.Id + '"/><span>' + s.Name + '</span></label>';
|
||||
|
||||
return html;
|
||||
|
||||
}).join('');
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
}
|
||||
|
||||
function saveUser(page) {
|
||||
|
||||
var chkUploadServer = page.querySelectorAll('.chkUploadServer');
|
||||
var cameraUploadServers = [];
|
||||
|
||||
for (var i = 0, length = chkUploadServer.length; i < length; i++) {
|
||||
if (chkUploadServer[i].checked) {
|
||||
cameraUploadServers.push(chkUploadServer[i].getAttribute('data-id'));
|
||||
}
|
||||
}
|
||||
|
||||
appSettings.cameraUploadServers(cameraUploadServers);
|
||||
|
||||
if (window.MainActivity) {
|
||||
// TODO: isolate into android app
|
||||
MainActivity.authorizeStorage();
|
||||
}
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
}
|
||||
|
||||
return function (view, params) {
|
||||
|
||||
view.querySelector('form').addEventListener('submit', function (e) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
saveUser(view);
|
||||
|
||||
// Disable default form submission
|
||||
e.preventDefault();
|
||||
return false;
|
||||
});
|
||||
|
||||
view.addEventListener('viewshow', function () {
|
||||
var page = this;
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var userId = params.userId || Dashboard.getCurrentUserId();
|
||||
|
||||
ApiClient.getUser(userId).then(function (user) {
|
||||
|
||||
loadForm(page, user);
|
||||
});
|
||||
});
|
||||
|
||||
view.addEventListener('viewbeforehide', function () {
|
||||
|
||||
saveUser(this);
|
||||
});
|
||||
};
|
||||
|
||||
});
|
||||
define(["appSettings","emby-checkbox"],function(appSettings){"use strict";function loadForm(page,user){var uploadServers=appSettings.cameraUploadServers();page.querySelector(".uploadServerList").innerHTML=ConnectionManager.getSavedServers().map(function(s){var checkedHtml=uploadServers.indexOf(s.Id)==-1?"":" checked",html='<label><input type="checkbox" is="emby-checkbox"'+checkedHtml+' class="chkUploadServer" data-id="'+s.Id+'"/><span>'+s.Name+"</span></label>";return html}).join(""),Dashboard.hideLoadingMsg()}function saveUser(page){for(var chkUploadServer=page.querySelectorAll(".chkUploadServer"),cameraUploadServers=[],i=0,length=chkUploadServer.length;i<length;i++)chkUploadServer[i].checked&&cameraUploadServers.push(chkUploadServer[i].getAttribute("data-id"));appSettings.cameraUploadServers(cameraUploadServers),window.MainActivity&&MainActivity.authorizeStorage(),Dashboard.hideLoadingMsg()}return function(view,params){view.querySelector("form").addEventListener("submit",function(e){return Dashboard.showLoadingMsg(),saveUser(view),e.preventDefault(),!1}),view.addEventListener("viewshow",function(){var page=this;Dashboard.showLoadingMsg();var userId=params.userId||Dashboard.getCurrentUserId();ApiClient.getUser(userId).then(function(user){loadForm(page,user)})}),view.addEventListener("viewbeforehide",function(){saveUser(this)})}});
|
|
@ -1,264 +1 @@
|
|||
define(['jQuery', 'cardBuilder', 'imageLoader', 'emby-itemscontainer'], function ($, cardBuilder, imageLoader) {
|
||||
'use strict';
|
||||
|
||||
var data = {};
|
||||
|
||||
function getPageData(context) {
|
||||
var key = getSavedQueryKey(context);
|
||||
var pageData = data[key];
|
||||
|
||||
if (!pageData) {
|
||||
pageData = data[key] = {
|
||||
query: {
|
||||
SortBy: "",
|
||||
SortOrder: "Ascending",
|
||||
Fields: "PrimaryImageAspectRatio",
|
||||
StartIndex: 0,
|
||||
Limit: LibraryBrowser.getDefaultPageSize()
|
||||
}
|
||||
};
|
||||
|
||||
LibraryBrowser.loadSavedQueryValues(key, pageData.query);
|
||||
}
|
||||
return pageData;
|
||||
}
|
||||
|
||||
function getQuery(context) {
|
||||
|
||||
return getPageData(context).query;
|
||||
}
|
||||
|
||||
function getSavedQueryKey(context) {
|
||||
|
||||
if (!context.savedQueryKey) {
|
||||
context.savedQueryKey = LibraryBrowser.getSavedQueryKey('channelitems');
|
||||
}
|
||||
return context.savedQueryKey;
|
||||
}
|
||||
|
||||
function getParam(context, name) {
|
||||
|
||||
if (!context.pageParams) {
|
||||
context.pageParams = {};
|
||||
}
|
||||
|
||||
if (!context.pageParams[name]) {
|
||||
context.pageParams[name] = getParameterByName(name);
|
||||
}
|
||||
|
||||
return context.pageParams[name];
|
||||
}
|
||||
|
||||
function reloadFeatures(page) {
|
||||
|
||||
var channelId = getParam(page, 'id');
|
||||
|
||||
ApiClient.getJSON(ApiClient.getUrl("Channels/" + channelId + "/Features")).then(function (features) {
|
||||
|
||||
if (features.CanFilter) {
|
||||
|
||||
$('.filterControls', page).show();
|
||||
|
||||
} else {
|
||||
$('.filterControls', page).hide();
|
||||
}
|
||||
|
||||
if (features.SupportsSortOrderToggle) {
|
||||
|
||||
$('.sortOrderToggle', page).show();
|
||||
} else {
|
||||
$('.sortOrderToggle', page).hide();
|
||||
}
|
||||
|
||||
var maxPageSize = features.MaxPageSize;
|
||||
|
||||
var query = getQuery(page);
|
||||
if (maxPageSize) {
|
||||
query.Limit = Math.min(maxPageSize, query.Limit || maxPageSize);
|
||||
}
|
||||
|
||||
getPageData(page).sortFields = features.DefaultSortFields;
|
||||
|
||||
reloadItems(page);
|
||||
});
|
||||
}
|
||||
|
||||
function reloadItems(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var channelId = getParam(page, 'id');
|
||||
var folderId = getParam(page, 'folderId');
|
||||
|
||||
var query = getQuery(page);
|
||||
query.UserId = Dashboard.getCurrentUserId();
|
||||
|
||||
if (folderId) {
|
||||
|
||||
ApiClient.getItem(query.UserId, folderId).then(function (item) {
|
||||
|
||||
LibraryMenu.setTitle(item.Name);
|
||||
});
|
||||
|
||||
} else {
|
||||
|
||||
ApiClient.getItem(query.UserId, channelId).then(function (item) {
|
||||
|
||||
LibraryMenu.setTitle(item.Name);
|
||||
});
|
||||
}
|
||||
|
||||
query.folderId = folderId;
|
||||
|
||||
ApiClient.getJSON(ApiClient.getUrl("Channels/" + channelId + "/Items", query)).then(function (result) {
|
||||
|
||||
// Scroll back up so they can see the results from the beginning
|
||||
window.scrollTo(0, 0);
|
||||
|
||||
var html = '';
|
||||
var pagingHtml = LibraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
totalRecordCount: result.TotalRecordCount,
|
||||
showLimit: false,
|
||||
updatePageSizeSetting: false,
|
||||
sortButton: true,
|
||||
filterButton: true
|
||||
});
|
||||
|
||||
updateFilterControls(page);
|
||||
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "auto",
|
||||
defaultShape: 'square',
|
||||
context: 'channels',
|
||||
showTitle: true,
|
||||
coverImage: true,
|
||||
showYear: true,
|
||||
lazy: true,
|
||||
centerText: true
|
||||
});
|
||||
|
||||
var i, length;
|
||||
var elems = page.querySelectorAll('.paging');
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].innerHTML = pagingHtml;
|
||||
}
|
||||
|
||||
var elem = page.querySelector('#items');
|
||||
elem.innerHTML = html;
|
||||
imageLoader.lazyChildren(elem);
|
||||
|
||||
$('.btnNextPage', page).on('click', function () {
|
||||
query.StartIndex += query.Limit;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.btnPreviousPage', page).on('click', function () {
|
||||
query.StartIndex -= query.Limit;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.btnFilter', page).on('click', function () {
|
||||
showFilterMenu(page);
|
||||
});
|
||||
|
||||
// On callback make sure to set StartIndex = 0
|
||||
$('.btnSort', page).on('click', function () {
|
||||
showSortMenu(page);
|
||||
});
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
|
||||
}, function () {
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
function showFilterMenu(page) {
|
||||
|
||||
require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
|
||||
|
||||
var filterDialog = new filterDialogFactory({
|
||||
query: getQuery(page)
|
||||
});
|
||||
|
||||
Events.on(filterDialog, 'filterchange', function () {
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
filterDialog.show();
|
||||
});
|
||||
}
|
||||
|
||||
function showSortMenu(page) {
|
||||
|
||||
var sortFields = getPageData(page).sortFields;
|
||||
|
||||
var items = [];
|
||||
|
||||
items.push({
|
||||
name: Globalize.translate('OptionDefaultSort'),
|
||||
id: ''
|
||||
});
|
||||
|
||||
if (sortFields.indexOf('Name') != -1) {
|
||||
items.push({
|
||||
name: Globalize.translate('OptionNameSort'),
|
||||
id: 'SortName'
|
||||
});
|
||||
}
|
||||
if (sortFields.indexOf('CommunityRating') != -1) {
|
||||
items.push({
|
||||
name: Globalize.translate('OptionCommunityRating'),
|
||||
id: 'CommunityRating'
|
||||
});
|
||||
}
|
||||
if (sortFields.indexOf('DateCreated') != -1) {
|
||||
items.push({
|
||||
name: Globalize.translate('OptionDateAdded'),
|
||||
id: 'DateCreated'
|
||||
});
|
||||
}
|
||||
if (sortFields.indexOf('PlayCount') != -1) {
|
||||
items.push({
|
||||
name: Globalize.translate('OptionPlayCount'),
|
||||
id: 'PlayCount'
|
||||
});
|
||||
}
|
||||
if (sortFields.indexOf('PremiereDate') != -1) {
|
||||
items.push({
|
||||
name: Globalize.translate('OptionReleaseDate'),
|
||||
id: 'PremiereDate'
|
||||
});
|
||||
}
|
||||
if (sortFields.indexOf('Runtime') != -1) {
|
||||
items.push({
|
||||
name: Globalize.translate('OptionRuntime'),
|
||||
id: 'Runtime'
|
||||
});
|
||||
}
|
||||
|
||||
LibraryBrowser.showSortMenu({
|
||||
items: items,
|
||||
callback: function () {
|
||||
reloadItems(page);
|
||||
},
|
||||
query: getQuery(page)
|
||||
});
|
||||
}
|
||||
|
||||
function updateFilterControls(page) {
|
||||
|
||||
}
|
||||
|
||||
pageIdOn('pagebeforeshow', "channelItemsPage", function () {
|
||||
|
||||
var page = this;
|
||||
reloadFeatures(page);
|
||||
updateFilterControls(page);
|
||||
});
|
||||
|
||||
});
|
||||
define(["jQuery","cardBuilder","imageLoader","emby-itemscontainer"],function($,cardBuilder,imageLoader){"use strict";function getPageData(context){var key=getSavedQueryKey(context),pageData=data[key];return pageData||(pageData=data[key]={query:{SortBy:"",SortOrder:"Ascending",Fields:"PrimaryImageAspectRatio",StartIndex:0,Limit:LibraryBrowser.getDefaultPageSize()}},LibraryBrowser.loadSavedQueryValues(key,pageData.query)),pageData}function getQuery(context){return getPageData(context).query}function getSavedQueryKey(context){return context.savedQueryKey||(context.savedQueryKey=LibraryBrowser.getSavedQueryKey("channelitems")),context.savedQueryKey}function getParam(context,name){return context.pageParams||(context.pageParams={}),context.pageParams[name]||(context.pageParams[name]=getParameterByName(name)),context.pageParams[name]}function reloadFeatures(page){var channelId=getParam(page,"id");ApiClient.getJSON(ApiClient.getUrl("Channels/"+channelId+"/Features")).then(function(features){features.CanFilter?$(".filterControls",page).show():$(".filterControls",page).hide(),features.SupportsSortOrderToggle?$(".sortOrderToggle",page).show():$(".sortOrderToggle",page).hide();var maxPageSize=features.MaxPageSize,query=getQuery(page);maxPageSize&&(query.Limit=Math.min(maxPageSize,query.Limit||maxPageSize)),getPageData(page).sortFields=features.DefaultSortFields,reloadItems(page)})}function reloadItems(page){Dashboard.showLoadingMsg();var channelId=getParam(page,"id"),folderId=getParam(page,"folderId"),query=getQuery(page);query.UserId=Dashboard.getCurrentUserId(),folderId?ApiClient.getItem(query.UserId,folderId).then(function(item){LibraryMenu.setTitle(item.Name)}):ApiClient.getItem(query.UserId,channelId).then(function(item){LibraryMenu.setTitle(item.Name)}),query.folderId=folderId,ApiClient.getJSON(ApiClient.getUrl("Channels/"+channelId+"/Items",query)).then(function(result){window.scrollTo(0,0);var html="",pagingHtml=LibraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1,updatePageSizeSetting:!1,sortButton:!0,filterButton:!0});updateFilterControls(page),html=cardBuilder.getCardsHtml({items:result.Items,shape:"auto",defaultShape:"square",context:"channels",showTitle:!0,coverImage:!0,showYear:!0,lazy:!0,centerText:!0});var i,length,elems=page.querySelectorAll(".paging");for(i=0,length=elems.length;i<length;i++)elems[i].innerHTML=pagingHtml;var elem=page.querySelector("#items");elem.innerHTML=html,imageLoader.lazyChildren(elem),$(".btnNextPage",page).on("click",function(){query.StartIndex+=query.Limit,reloadItems(page)}),$(".btnPreviousPage",page).on("click",function(){query.StartIndex-=query.Limit,reloadItems(page)}),$(".btnFilter",page).on("click",function(){showFilterMenu(page)}),$(".btnSort",page).on("click",function(){showSortMenu(page)}),Dashboard.hideLoadingMsg()},function(){Dashboard.hideLoadingMsg()})}function showFilterMenu(page){require(["components/filterdialog/filterdialog"],function(filterDialogFactory){var filterDialog=new filterDialogFactory({query:getQuery(page)});Events.on(filterDialog,"filterchange",function(){reloadItems(page)}),filterDialog.show()})}function showSortMenu(page){var sortFields=getPageData(page).sortFields,items=[];items.push({name:Globalize.translate("OptionDefaultSort"),id:""}),sortFields.indexOf("Name")!=-1&&items.push({name:Globalize.translate("OptionNameSort"),id:"SortName"}),sortFields.indexOf("CommunityRating")!=-1&&items.push({name:Globalize.translate("OptionCommunityRating"),id:"CommunityRating"}),sortFields.indexOf("DateCreated")!=-1&&items.push({name:Globalize.translate("OptionDateAdded"),id:"DateCreated"}),sortFields.indexOf("PlayCount")!=-1&&items.push({name:Globalize.translate("OptionPlayCount"),id:"PlayCount"}),sortFields.indexOf("PremiereDate")!=-1&&items.push({name:Globalize.translate("OptionReleaseDate"),id:"PremiereDate"}),sortFields.indexOf("Runtime")!=-1&&items.push({name:Globalize.translate("OptionRuntime"),id:"Runtime"}),LibraryBrowser.showSortMenu({items:items,callback:function(){reloadItems(page)},query:getQuery(page)})}function updateFilterControls(page){}var data={};pageIdOn("pagebeforeshow","channelItemsPage",function(){var page=this;reloadFeatures(page),updateFilterControls(page)})});
|
|
@ -1,97 +1 @@
|
|||
define(['libraryBrowser', 'cardBuilder', 'imageLoader', 'emby-itemscontainer', 'emby-tabs', 'emby-button', 'scripts/channelslatest', 'scripts/sections'], function (libraryBrowser, cardBuilder, imageLoader) {
|
||||
'use strict';
|
||||
|
||||
// The base query options
|
||||
var query = {
|
||||
|
||||
StartIndex: 0
|
||||
};
|
||||
|
||||
function reloadItems(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
query.UserId = Dashboard.getCurrentUserId();
|
||||
|
||||
ApiClient.getJSON(ApiClient.getUrl("Channels", query)).then(function (result) {
|
||||
|
||||
// Scroll back up so they can see the results from the beginning
|
||||
window.scrollTo(0, 0);
|
||||
|
||||
var html = '';
|
||||
|
||||
var view = 'Thumb';
|
||||
|
||||
if (view == "Thumb") {
|
||||
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
context: 'channels',
|
||||
showTitle: true,
|
||||
lazy: true,
|
||||
centerText: true,
|
||||
preferThumb: true
|
||||
});
|
||||
|
||||
}
|
||||
else if (view == "ThumbCard") {
|
||||
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
preferThumb: true,
|
||||
context: 'channels',
|
||||
lazy: true,
|
||||
cardLayout: true,
|
||||
showTitle: true
|
||||
});
|
||||
}
|
||||
|
||||
var elem = page.querySelector('#items');
|
||||
elem.innerHTML = html;
|
||||
imageLoader.lazyChildren(elem);
|
||||
|
||||
libraryBrowser.saveQueryValues('channels', query);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
function loadTab(page, index) {
|
||||
|
||||
switch (index) {
|
||||
|
||||
case 1:
|
||||
libraryBrowser.loadSavedQueryValues('channels', query);
|
||||
reloadItems(page);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return function (view, params) {
|
||||
|
||||
var self = this;
|
||||
var viewTabs = view.querySelector('.libraryViewNav');
|
||||
|
||||
libraryBrowser.configurePaperLibraryTabs(view, viewTabs, view.querySelectorAll('.pageTabContent'), [0, 1]);
|
||||
|
||||
viewTabs.addEventListener('tabchange', function (e) {
|
||||
loadTab(view, parseInt(e.detail.selectedTabIndex));
|
||||
});
|
||||
|
||||
require(["headroom-window"], function (headroom) {
|
||||
headroom.add(viewTabs);
|
||||
self.headroom = headroom;
|
||||
});
|
||||
|
||||
view.addEventListener('viewdestroy', function (e) {
|
||||
|
||||
if (self.headroom) {
|
||||
self.headroom.remove(viewTabs);
|
||||
}
|
||||
});
|
||||
};
|
||||
});
|
||||
define(["libraryBrowser","cardBuilder","imageLoader","emby-itemscontainer","emby-tabs","emby-button","scripts/channelslatest","scripts/sections"],function(libraryBrowser,cardBuilder,imageLoader){"use strict";function reloadItems(page){Dashboard.showLoadingMsg(),query.UserId=Dashboard.getCurrentUserId(),ApiClient.getJSON(ApiClient.getUrl("Channels",query)).then(function(result){window.scrollTo(0,0);var html="",view="Thumb";"Thumb"==view?html=cardBuilder.getCardsHtml({items:result.Items,shape:"backdrop",context:"channels",showTitle:!0,lazy:!0,centerText:!0,preferThumb:!0}):"ThumbCard"==view&&(html=cardBuilder.getCardsHtml({items:result.Items,shape:"backdrop",preferThumb:!0,context:"channels",lazy:!0,cardLayout:!0,showTitle:!0}));var elem=page.querySelector("#items");elem.innerHTML=html,imageLoader.lazyChildren(elem),libraryBrowser.saveQueryValues("channels",query),Dashboard.hideLoadingMsg()})}function loadTab(page,index){switch(index){case 1:libraryBrowser.loadSavedQueryValues("channels",query),reloadItems(page)}}var query={StartIndex:0};return function(view,params){var self=this,viewTabs=view.querySelector(".libraryViewNav");libraryBrowser.configurePaperLibraryTabs(view,viewTabs,view.querySelectorAll(".pageTabContent"),[0,1]),viewTabs.addEventListener("tabchange",function(e){loadTab(view,parseInt(e.detail.selectedTabIndex))}),require(["headroom-window"],function(headroom){headroom.add(viewTabs),self.headroom=headroom}),view.addEventListener("viewdestroy",function(e){self.headroom&&self.headroom.remove(viewTabs)})}});
|
|
@ -1,38 +1 @@
|
|||
define([], function () {
|
||||
'use strict';
|
||||
|
||||
function reloadItems(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
Sections.loadLatestChannelItems(page.querySelector('.latestItems'), Dashboard.getCurrentUserId()).then(function() {
|
||||
Dashboard.hideLoadingMsg();
|
||||
}, function () {
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
function loadTab(page, index) {
|
||||
|
||||
switch (index) {
|
||||
|
||||
case 0:
|
||||
reloadItems(page);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
pageIdOn('pageinit', "channelsPage", function () {
|
||||
|
||||
var page = this;
|
||||
var mdlTabs = page.querySelector('.libraryViewNav');
|
||||
|
||||
mdlTabs.addEventListener('tabchange', function (e) {
|
||||
loadTab(page, parseInt(e.detail.selectedTabIndex));
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
define([],function(){"use strict";function reloadItems(page){Dashboard.showLoadingMsg(),Sections.loadLatestChannelItems(page.querySelector(".latestItems"),Dashboard.getCurrentUserId()).then(function(){Dashboard.hideLoadingMsg()},function(){Dashboard.hideLoadingMsg()})}function loadTab(page,index){switch(index){case 0:reloadItems(page)}}pageIdOn("pageinit","channelsPage",function(){var page=this,mdlTabs=page.querySelector(".libraryViewNav");mdlTabs.addEventListener("tabchange",function(e){loadTab(page,parseInt(e.detail.selectedTabIndex))})})});
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,96 +1 @@
|
|||
define(['jQuery'], function ($) {
|
||||
'use strict';
|
||||
|
||||
function load(page, device, capabilities) {
|
||||
|
||||
if (capabilities.SupportsContentUploading) {
|
||||
$('#fldCameraUploadPath', page).removeClass('hide');
|
||||
} else {
|
||||
$('#fldCameraUploadPath', page).addClass('hide');
|
||||
}
|
||||
|
||||
$('#txtCustomName', page).val(device.CustomName || '');
|
||||
$('#txtUploadPath', page).val(device.CameraUploadPath || '');
|
||||
$('.reportedName', page).html(device.ReportedName || '');
|
||||
}
|
||||
|
||||
function loadData(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var id = getParameterByName('id');
|
||||
|
||||
var promise1 = ApiClient.getJSON(ApiClient.getUrl('Devices/Info', { Id: id }));
|
||||
var promise2 = ApiClient.getJSON(ApiClient.getUrl('Devices/Capabilities', { Id: id }));
|
||||
|
||||
Promise.all([promise1, promise2]).then(function (responses) {
|
||||
|
||||
load(page, responses[0], responses[1]);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
function save(page) {
|
||||
|
||||
var id = getParameterByName('id');
|
||||
|
||||
ApiClient.ajax({
|
||||
|
||||
url: ApiClient.getUrl('Devices/Options', { Id: id }),
|
||||
type: 'POST',
|
||||
data: JSON.stringify({
|
||||
|
||||
CustomName: $('#txtCustomName', page).val(),
|
||||
CameraUploadPath: $('#txtUploadPath', page).val()
|
||||
|
||||
}),
|
||||
contentType: "application/json"
|
||||
|
||||
}).then(Dashboard.processServerConfigurationUpdateResult);
|
||||
}
|
||||
|
||||
function onSubmit() {
|
||||
var form = this;
|
||||
var page = $(form).parents('.page');
|
||||
|
||||
save(page);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#devicePage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
$('#btnSelectUploadPath', page).on("click.selectDirectory", function () {
|
||||
|
||||
require(['directorybrowser'], function (directoryBrowser) {
|
||||
|
||||
var picker = new directoryBrowser();
|
||||
|
||||
picker.show({
|
||||
|
||||
callback: function (path) {
|
||||
|
||||
if (path) {
|
||||
$('#txtUploadPath', page).val(path);
|
||||
}
|
||||
picker.close();
|
||||
},
|
||||
|
||||
header: Globalize.translate('HeaderSelectUploadPath')
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
$('.deviceForm').off('submit', onSubmit).on('submit', onSubmit);
|
||||
|
||||
}).on('pageshow', "#devicePage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
loadData(page);
|
||||
});
|
||||
|
||||
});
|
||||
define(["jQuery"],function($){"use strict";function load(page,device,capabilities){capabilities.SupportsContentUploading?$("#fldCameraUploadPath",page).removeClass("hide"):$("#fldCameraUploadPath",page).addClass("hide"),$("#txtCustomName",page).val(device.CustomName||""),$("#txtUploadPath",page).val(device.CameraUploadPath||""),$(".reportedName",page).html(device.ReportedName||"")}function loadData(page){Dashboard.showLoadingMsg();var id=getParameterByName("id"),promise1=ApiClient.getJSON(ApiClient.getUrl("Devices/Info",{Id:id})),promise2=ApiClient.getJSON(ApiClient.getUrl("Devices/Capabilities",{Id:id}));Promise.all([promise1,promise2]).then(function(responses){load(page,responses[0],responses[1]),Dashboard.hideLoadingMsg()})}function save(page){var id=getParameterByName("id");ApiClient.ajax({url:ApiClient.getUrl("Devices/Options",{Id:id}),type:"POST",data:JSON.stringify({CustomName:$("#txtCustomName",page).val(),CameraUploadPath:$("#txtUploadPath",page).val()}),contentType:"application/json"}).then(Dashboard.processServerConfigurationUpdateResult)}function onSubmit(){var form=this,page=$(form).parents(".page");return save(page),!1}$(document).on("pageinit","#devicePage",function(){var page=this;$("#btnSelectUploadPath",page).on("click.selectDirectory",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({callback:function(path){path&&$("#txtUploadPath",page).val(path),picker.close()},header:Globalize.translate("HeaderSelectUploadPath")})})}),$(".deviceForm").off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#devicePage",function(){var page=this;loadData(page)})});
|
|
@ -1,113 +1 @@
|
|||
define(['jQuery', 'listViewStyle'], function ($) {
|
||||
'use strict';
|
||||
|
||||
function deleteDevice(page, id) {
|
||||
|
||||
var msg = Globalize.translate('DeleteDeviceConfirmation');
|
||||
|
||||
require(['confirm'], function (confirm) {
|
||||
|
||||
confirm(msg, Globalize.translate('HeaderDeleteDevice')).then(function () {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
ApiClient.ajax({
|
||||
type: "DELETE",
|
||||
url: ApiClient.getUrl('Devices', {
|
||||
Id: id
|
||||
})
|
||||
|
||||
}).then(function () {
|
||||
|
||||
loadData(page);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
function load(page, devices) {
|
||||
|
||||
var html = '';
|
||||
|
||||
if (devices.length) {
|
||||
html += '<div class="paperList">';
|
||||
}
|
||||
|
||||
html += devices.map(function (d) {
|
||||
|
||||
var deviceHtml = '';
|
||||
deviceHtml += '<div class="listItem">';
|
||||
|
||||
deviceHtml += '<i class="listItemIcon md-icon" style="background:#999;">tablet_android</i>';
|
||||
|
||||
if (d.AppName && d.LastUserName) {
|
||||
deviceHtml += '<div class="listItemBody three-line">';
|
||||
} else {
|
||||
deviceHtml += '<div class="listItemBody two-line">';
|
||||
}
|
||||
deviceHtml += '<a class="clearLink" href="device.html?id=' + d.Id + '">';
|
||||
|
||||
deviceHtml += '<div class="listItemBodyText">';
|
||||
deviceHtml += d.Name;
|
||||
deviceHtml += '</div>';
|
||||
|
||||
if (d.AppName) {
|
||||
deviceHtml += '<div class="listItemBodyText secondary">';
|
||||
deviceHtml += d.AppName;
|
||||
deviceHtml += '</div>';
|
||||
}
|
||||
|
||||
if (d.LastUserName) {
|
||||
deviceHtml += '<div class="listItemBodyText secondary">';
|
||||
deviceHtml += Globalize.translate('DeviceLastUsedByUserName', d.LastUserName);
|
||||
deviceHtml += '</div>';
|
||||
}
|
||||
|
||||
deviceHtml += '</a>';
|
||||
deviceHtml += '</div>';
|
||||
|
||||
deviceHtml += '<button type="button" is="paper-icon-button-light" class="btnDeleteDevice" data-id="' + d.Id + '" title="' + Globalize.translate('ButtonDelete') + '"><i class="md-icon">delete</i></button>';
|
||||
|
||||
deviceHtml += '</div>';
|
||||
|
||||
return deviceHtml;
|
||||
|
||||
}).join('');
|
||||
|
||||
if (devices.length) {
|
||||
html += '</div>';
|
||||
}
|
||||
|
||||
var elem = $('.devicesList', page).html(html).trigger('create');
|
||||
|
||||
$('.btnDeleteDevice', elem).on('click', function () {
|
||||
|
||||
deleteDevice(page, this.getAttribute('data-id'));
|
||||
});
|
||||
}
|
||||
|
||||
function loadData(page) {
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
ApiClient.getJSON(ApiClient.getUrl('Devices', {
|
||||
|
||||
SupportsPersistentIdentifier: true
|
||||
|
||||
})).then(function (result) {
|
||||
|
||||
load(page, result.Items);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
$(document).on('pageshow', "#devicesPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
loadData(page);
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
define(["jQuery","listViewStyle"],function($){"use strict";function deleteDevice(page,id){var msg=Globalize.translate("DeleteDeviceConfirmation");require(["confirm"],function(confirm){confirm(msg,Globalize.translate("HeaderDeleteDevice")).then(function(){Dashboard.showLoadingMsg(),ApiClient.ajax({type:"DELETE",url:ApiClient.getUrl("Devices",{Id:id})}).then(function(){loadData(page)})})})}function load(page,devices){var html="";devices.length&&(html+='<div class="paperList">'),html+=devices.map(function(d){var deviceHtml="";return deviceHtml+='<div class="listItem">',deviceHtml+='<i class="listItemIcon md-icon" style="background:#999;">tablet_android</i>',deviceHtml+=d.AppName&&d.LastUserName?'<div class="listItemBody three-line">':'<div class="listItemBody two-line">',deviceHtml+='<a class="clearLink" href="device.html?id='+d.Id+'">',deviceHtml+='<div class="listItemBodyText">',deviceHtml+=d.Name,deviceHtml+="</div>",d.AppName&&(deviceHtml+='<div class="listItemBodyText secondary">',deviceHtml+=d.AppName,deviceHtml+="</div>"),d.LastUserName&&(deviceHtml+='<div class="listItemBodyText secondary">',deviceHtml+=Globalize.translate("DeviceLastUsedByUserName",d.LastUserName),deviceHtml+="</div>"),deviceHtml+="</a>",deviceHtml+="</div>",deviceHtml+='<button type="button" is="paper-icon-button-light" class="btnDeleteDevice" data-id="'+d.Id+'" title="'+Globalize.translate("ButtonDelete")+'"><i class="md-icon">delete</i></button>',deviceHtml+="</div>"}).join(""),devices.length&&(html+="</div>");var elem=$(".devicesList",page).html(html).trigger("create");$(".btnDeleteDevice",elem).on("click",function(){deleteDevice(page,this.getAttribute("data-id"))})}function loadData(page){Dashboard.showLoadingMsg(),ApiClient.getJSON(ApiClient.getUrl("Devices",{SupportsPersistentIdentifier:!0})).then(function(result){load(page,result.Items),Dashboard.hideLoadingMsg()})}$(document).on("pageshow","#devicesPage",function(){var page=this;loadData(page)})});
|
File diff suppressed because one or more lines are too long
|
@ -1,122 +1 @@
|
|||
define(['jQuery', 'listViewStyle'], function ($) {
|
||||
'use strict';
|
||||
|
||||
function loadProfiles(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
ApiClient.getJSON(ApiClient.getUrl("Dlna/ProfileInfos")).then(function (result) {
|
||||
|
||||
renderUserProfiles(page, result);
|
||||
renderSystemProfiles(page, result);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function renderUserProfiles(page, profiles) {
|
||||
|
||||
renderProfiles(page, page.querySelector('.customProfiles'), profiles.filter(function (p) {
|
||||
return p.Type == 'User';
|
||||
}));
|
||||
}
|
||||
|
||||
function renderSystemProfiles(page, profiles) {
|
||||
|
||||
renderProfiles(page, page.querySelector('.systemProfiles'), profiles.filter(function (p) {
|
||||
return p.Type == 'System';
|
||||
}));
|
||||
}
|
||||
|
||||
function renderProfiles(page, element, profiles) {
|
||||
|
||||
var html = '';
|
||||
|
||||
if (profiles.length) {
|
||||
html += '<div class="paperList">';
|
||||
}
|
||||
|
||||
for (var i = 0, length = profiles.length; i < length; i++) {
|
||||
|
||||
var profile = profiles[i];
|
||||
|
||||
html += '<div class="listItem">';
|
||||
|
||||
html += "<a item-icon class='clearLink listItemIconContainer' href='dlnaprofile.html?id=" + profile.Id + "'>";
|
||||
html += '<i class="md-icon listItemIcon">dvr</i>';
|
||||
html += "</a>";
|
||||
|
||||
html += '<div class="listItemBody">';
|
||||
html += "<a class='clearLink' href='dlnaprofile.html?id=" + profile.Id + "'>";
|
||||
|
||||
html += "<div>" + profile.Name + "</div>";
|
||||
//html += "<div secondary>" + task.Description + "</div>";
|
||||
|
||||
html += "</a>";
|
||||
html += '</div>';
|
||||
|
||||
if (profile.Type == 'User') {
|
||||
html += '<button type="button" is="paper-icon-button-light" class="btnDeleteProfile" data-profileid="' + profile.Id + '" title="' + Globalize.translate('ButtonDelete') + '"><i class="md-icon">delete</i></button>';
|
||||
}
|
||||
|
||||
html += '</div>';
|
||||
}
|
||||
|
||||
if (profiles.length) {
|
||||
html += '</div>';
|
||||
}
|
||||
|
||||
element.innerHTML = html;
|
||||
|
||||
$('.btnDeleteProfile', element).on('click', function () {
|
||||
|
||||
var id = this.getAttribute('data-profileid');
|
||||
deleteProfile(page, id);
|
||||
});
|
||||
}
|
||||
|
||||
function deleteProfile(page, id) {
|
||||
|
||||
require(['confirm'], function (confirm) {
|
||||
|
||||
confirm(Globalize.translate('MessageConfirmProfileDeletion'), Globalize.translate('HeaderConfirmProfileDeletion')).then(function () {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
ApiClient.ajax({
|
||||
type: "DELETE",
|
||||
url: ApiClient.getUrl("Dlna/Profiles/" + id)
|
||||
|
||||
}).then(function () {
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
|
||||
loadProfiles(page);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function getTabs() {
|
||||
return [
|
||||
{
|
||||
href: 'dlnasettings.html',
|
||||
name: Globalize.translate('TabSettings')
|
||||
},
|
||||
{
|
||||
href: 'dlnaprofiles.html',
|
||||
name: Globalize.translate('TabProfiles')
|
||||
}];
|
||||
}
|
||||
|
||||
$(document).on('pageshow', "#dlnaProfilesPage", function () {
|
||||
|
||||
LibraryMenu.setTabs('dlna', 1, getTabs);
|
||||
var page = this;
|
||||
|
||||
loadProfiles(page);
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
define(["jQuery","listViewStyle"],function($){"use strict";function loadProfiles(page){Dashboard.showLoadingMsg(),ApiClient.getJSON(ApiClient.getUrl("Dlna/ProfileInfos")).then(function(result){renderUserProfiles(page,result),renderSystemProfiles(page,result),Dashboard.hideLoadingMsg()})}function renderUserProfiles(page,profiles){renderProfiles(page,page.querySelector(".customProfiles"),profiles.filter(function(p){return"User"==p.Type}))}function renderSystemProfiles(page,profiles){renderProfiles(page,page.querySelector(".systemProfiles"),profiles.filter(function(p){return"System"==p.Type}))}function renderProfiles(page,element,profiles){var html="";profiles.length&&(html+='<div class="paperList">');for(var i=0,length=profiles.length;i<length;i++){var profile=profiles[i];html+='<div class="listItem">',html+="<a item-icon class='clearLink listItemIconContainer' href='dlnaprofile.html?id="+profile.Id+"'>",html+='<i class="md-icon listItemIcon">dvr</i>',html+="</a>",html+='<div class="listItemBody">',html+="<a class='clearLink' href='dlnaprofile.html?id="+profile.Id+"'>",html+="<div>"+profile.Name+"</div>",html+="</a>",html+="</div>","User"==profile.Type&&(html+='<button type="button" is="paper-icon-button-light" class="btnDeleteProfile" data-profileid="'+profile.Id+'" title="'+Globalize.translate("ButtonDelete")+'"><i class="md-icon">delete</i></button>'),html+="</div>"}profiles.length&&(html+="</div>"),element.innerHTML=html,$(".btnDeleteProfile",element).on("click",function(){var id=this.getAttribute("data-profileid");deleteProfile(page,id)})}function deleteProfile(page,id){require(["confirm"],function(confirm){confirm(Globalize.translate("MessageConfirmProfileDeletion"),Globalize.translate("HeaderConfirmProfileDeletion")).then(function(){Dashboard.showLoadingMsg(),ApiClient.ajax({type:"DELETE",url:ApiClient.getUrl("Dlna/Profiles/"+id)}).then(function(){Dashboard.hideLoadingMsg(),loadProfiles(page)})})})}function getTabs(){return[{href:"dlnasettings.html",name:Globalize.translate("TabSettings")},{href:"dlnaprofiles.html",name:Globalize.translate("TabProfiles")}]}$(document).on("pageshow","#dlnaProfilesPage",function(){LibraryMenu.setTabs("dlna",1,getTabs);var page=this;loadProfiles(page)})});
|
|
@ -1,83 +1 @@
|
|||
define(['jQuery', 'fnchecked'], function ($) {
|
||||
'use strict';
|
||||
|
||||
function loadPage(page, config, users) {
|
||||
|
||||
page.querySelector('#chkEnablePlayTo').checked = config.EnablePlayTo;
|
||||
page.querySelector('#chkEnableDlnaDebugLogging').checked = config.EnableDebugLog;
|
||||
|
||||
$('#txtClientDiscoveryInterval', page).val(config.ClientDiscoveryIntervalSeconds);
|
||||
|
||||
$('#chkEnableServer', page).checked(config.EnableServer);
|
||||
$('#chkBlastAliveMessages', page).checked(config.BlastAliveMessages);
|
||||
$('#txtBlastInterval', page).val(config.BlastAliveMessageIntervalSeconds);
|
||||
|
||||
var usersHtml = users.map(function (u) {
|
||||
return '<option value="' + u.Id + '">' + u.Name + '</option>';
|
||||
}).join('');
|
||||
|
||||
$('#selectUser', page).html(usersHtml).val(config.DefaultUserId || '');
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
}
|
||||
|
||||
function onSubmit() {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var form = this;
|
||||
|
||||
ApiClient.getNamedConfiguration("dlna").then(function (config) {
|
||||
|
||||
config.EnablePlayTo = form.querySelector('#chkEnablePlayTo').checked;
|
||||
config.EnableDebugLog = form.querySelector('#chkEnableDlnaDebugLogging').checked;
|
||||
|
||||
config.ClientDiscoveryIntervalSeconds = $('#txtClientDiscoveryInterval', form).val();
|
||||
|
||||
config.EnableServer = $('#chkEnableServer', form).checked();
|
||||
config.BlastAliveMessages = $('#chkBlastAliveMessages', form).checked();
|
||||
config.BlastAliveMessageIntervalSeconds = $('#txtBlastInterval', form).val();
|
||||
config.DefaultUserId = $('#selectUser', form).val();
|
||||
|
||||
ApiClient.updateNamedConfiguration("dlna", config).then(Dashboard.processServerConfigurationUpdateResult);
|
||||
});
|
||||
|
||||
// Disable default form submission
|
||||
return false;
|
||||
}
|
||||
|
||||
function getTabs() {
|
||||
return [
|
||||
{
|
||||
href: 'dlnasettings.html',
|
||||
name: Globalize.translate('TabSettings')
|
||||
},
|
||||
{
|
||||
href: 'dlnaprofiles.html',
|
||||
name: Globalize.translate('TabProfiles')
|
||||
}];
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#dlnaSettingsPage", function () {
|
||||
|
||||
$('.dlnaSettingsForm').off('submit', onSubmit).on('submit', onSubmit);
|
||||
|
||||
}).on('pageshow', "#dlnaSettingsPage", function () {
|
||||
|
||||
LibraryMenu.setTabs('dlna', 0, getTabs);
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var page = this;
|
||||
|
||||
var promise1 = ApiClient.getNamedConfiguration("dlna");
|
||||
var promise2 = ApiClient.getUsers();
|
||||
|
||||
Promise.all([promise1, promise2]).then(function (responses) {
|
||||
|
||||
loadPage(page, responses[0], responses[1]);
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
define(["jQuery","fnchecked"],function($){"use strict";function loadPage(page,config,users){page.querySelector("#chkEnablePlayTo").checked=config.EnablePlayTo,page.querySelector("#chkEnableDlnaDebugLogging").checked=config.EnableDebugLog,$("#txtClientDiscoveryInterval",page).val(config.ClientDiscoveryIntervalSeconds),$("#chkEnableServer",page).checked(config.EnableServer),$("#chkBlastAliveMessages",page).checked(config.BlastAliveMessages),$("#txtBlastInterval",page).val(config.BlastAliveMessageIntervalSeconds);var usersHtml=users.map(function(u){return'<option value="'+u.Id+'">'+u.Name+"</option>"}).join("");$("#selectUser",page).html(usersHtml).val(config.DefaultUserId||""),Dashboard.hideLoadingMsg()}function onSubmit(){Dashboard.showLoadingMsg();var form=this;return ApiClient.getNamedConfiguration("dlna").then(function(config){config.EnablePlayTo=form.querySelector("#chkEnablePlayTo").checked,config.EnableDebugLog=form.querySelector("#chkEnableDlnaDebugLogging").checked,config.ClientDiscoveryIntervalSeconds=$("#txtClientDiscoveryInterval",form).val(),config.EnableServer=$("#chkEnableServer",form).checked(),config.BlastAliveMessages=$("#chkBlastAliveMessages",form).checked(),config.BlastAliveMessageIntervalSeconds=$("#txtBlastInterval",form).val(),config.DefaultUserId=$("#selectUser",form).val(),ApiClient.updateNamedConfiguration("dlna",config).then(Dashboard.processServerConfigurationUpdateResult)}),!1}function getTabs(){return[{href:"dlnasettings.html",name:Globalize.translate("TabSettings")},{href:"dlnaprofiles.html",name:Globalize.translate("TabProfiles")}]}$(document).on("pageinit","#dlnaSettingsPage",function(){$(".dlnaSettingsForm").off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#dlnaSettingsPage",function(){LibraryMenu.setTabs("dlna",0,getTabs),Dashboard.showLoadingMsg();var page=this,promise1=ApiClient.getNamedConfiguration("dlna"),promise2=ApiClient.getUsers();Promise.all([promise1,promise2]).then(function(responses){loadPage(page,responses[0],responses[1])})})});
|
|
@ -1,38 +1 @@
|
|||
define(['loading'], function (loading) {
|
||||
'use strict';
|
||||
|
||||
function reload(context, itemId) {
|
||||
|
||||
loading.show();
|
||||
|
||||
if (itemId) {
|
||||
require(['metadataEditor'], function (metadataEditor) {
|
||||
|
||||
metadataEditor.embed(context.querySelector('.editPageInnerContent'), itemId, ApiClient.serverInfo().Id);
|
||||
});
|
||||
} else {
|
||||
context.querySelector('.editPageInnerContent').innerHTML = '';
|
||||
loading.hide();
|
||||
}
|
||||
}
|
||||
|
||||
return function (view, params) {
|
||||
|
||||
view.addEventListener('viewshow', function () {
|
||||
reload(this, MetadataEditor.getCurrentItemId());
|
||||
});
|
||||
|
||||
MetadataEditor.setCurrentItemId(null);
|
||||
|
||||
view.querySelector('.libraryTree').addEventListener('itemclicked', function (event) {
|
||||
|
||||
var data = event.detail;
|
||||
|
||||
if (data.id != MetadataEditor.getCurrentItemId()) {
|
||||
|
||||
MetadataEditor.setCurrentItemId(data.id);
|
||||
reload(view, data.id);
|
||||
}
|
||||
});
|
||||
};
|
||||
});
|
||||
define(["loading"],function(loading){"use strict";function reload(context,itemId){loading.show(),itemId?require(["metadataEditor"],function(metadataEditor){metadataEditor.embed(context.querySelector(".editPageInnerContent"),itemId,ApiClient.serverInfo().Id)}):(context.querySelector(".editPageInnerContent").innerHTML="",loading.hide())}return function(view,params){view.addEventListener("viewshow",function(){reload(this,MetadataEditor.getCurrentItemId())}),MetadataEditor.setCurrentItemId(null),view.querySelector(".libraryTree").addEventListener("itemclicked",function(event){var data=event.detail;data.id!=MetadataEditor.getCurrentItemId()&&(MetadataEditor.setCurrentItemId(data.id),reload(view,data.id))})}});
|
File diff suppressed because one or more lines are too long
|
@ -1,203 +1 @@
|
|||
define(['jQuery'], function ($) {
|
||||
'use strict';
|
||||
|
||||
function loadPage(page, config, systemInfo) {
|
||||
|
||||
page.querySelector('#chkEnableThrottle').checked = config.EnableThrottling;
|
||||
|
||||
$('#selectVideoDecoder', page).val(config.HardwareAccelerationType);
|
||||
$('#selectThreadCount', page).val(config.EncodingThreadCount);
|
||||
$('#txtDownMixAudioBoost', page).val(config.DownMixAudioBoost);
|
||||
page.querySelector('.txtEncoderPath').value = config.EncoderAppPath || '';
|
||||
$('#txtTranscodingTempPath', page).val(config.TranscodingTempPath || '');
|
||||
$('#txtVaapiDevice', page).val(config.VaapiDevice || '');
|
||||
|
||||
page.querySelector('#selectH264Preset').value = config.H264Preset || '';
|
||||
page.querySelector('#txtH264Crf').value = config.H264Crf || '';
|
||||
|
||||
var selectEncoderPath = page.querySelector('#selectEncoderPath');
|
||||
|
||||
selectEncoderPath.value = systemInfo.EncoderLocationType;
|
||||
onSelectEncoderPathChange.call(selectEncoderPath);
|
||||
|
||||
page.querySelector('#selectVideoDecoder').dispatchEvent(new CustomEvent('change', {
|
||||
bubbles: true
|
||||
}));
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
}
|
||||
|
||||
function onSaveEncodingPathFailure(response) {
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
|
||||
var msg = '';
|
||||
|
||||
// This is a fallback that handles both 404 and 400 (no path entered)
|
||||
msg = Globalize.translate('FFmpegSavePathNotFound');
|
||||
|
||||
require(['alert'], function (alert) {
|
||||
alert(msg);
|
||||
});
|
||||
}
|
||||
|
||||
function updateEncoder(form) {
|
||||
|
||||
return ApiClient.getSystemInfo().then(function (systemInfo) {
|
||||
|
||||
return ApiClient.ajax({
|
||||
url: ApiClient.getUrl('System/MediaEncoder/Path'),
|
||||
type: 'POST',
|
||||
data: {
|
||||
Path: form.querySelector('.txtEncoderPath').value,
|
||||
PathType: form.querySelector('#selectEncoderPath').value
|
||||
}
|
||||
}).then(Dashboard.processServerConfigurationUpdateResult, onSaveEncodingPathFailure);
|
||||
});
|
||||
}
|
||||
|
||||
function onSubmit() {
|
||||
|
||||
var form = this;
|
||||
|
||||
var onDecoderConfirmed = function () {
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
ApiClient.getNamedConfiguration("encoding").then(function (config) {
|
||||
|
||||
config.DownMixAudioBoost = $('#txtDownMixAudioBoost', form).val();
|
||||
config.TranscodingTempPath = $('#txtTranscodingTempPath', form).val();
|
||||
config.EncodingThreadCount = $('#selectThreadCount', form).val();
|
||||
config.HardwareAccelerationType = $('#selectVideoDecoder', form).val();
|
||||
config.VaapiDevice = $('#txtVaapiDevice', form).val();
|
||||
|
||||
config.H264Preset = form.querySelector('#selectH264Preset').value;
|
||||
config.H264Crf = parseInt(form.querySelector('#txtH264Crf').value || '0');
|
||||
|
||||
config.EnableThrottling = form.querySelector('#chkEnableThrottle').checked;
|
||||
|
||||
ApiClient.updateNamedConfiguration("encoding", config).then(function () {
|
||||
|
||||
updateEncoder(form);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
if ($('#selectVideoDecoder', form).val()) {
|
||||
|
||||
require(['alert'], function (alert) {
|
||||
alert({
|
||||
title: Globalize.translate('TitleHardwareAcceleration'),
|
||||
text: Globalize.translate('HardwareAccelerationWarning')
|
||||
}).then(onDecoderConfirmed);
|
||||
});
|
||||
|
||||
} else {
|
||||
onDecoderConfirmed();
|
||||
}
|
||||
|
||||
|
||||
// Disable default form submission
|
||||
return false;
|
||||
}
|
||||
|
||||
function onSelectEncoderPathChange(e) {
|
||||
|
||||
var page = $(this).parents('.page')[0];
|
||||
|
||||
if (this.value == 'Custom') {
|
||||
page.querySelector('.fldEncoderPath').classList.remove('hide');
|
||||
page.querySelector('.txtEncoderPath').setAttribute('required', 'required');
|
||||
} else {
|
||||
page.querySelector('.fldEncoderPath').classList.add('hide');
|
||||
page.querySelector('.txtEncoderPath').removeAttribute('required');
|
||||
}
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#encodingSettingsPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
page.querySelector('#selectVideoDecoder').addEventListener('change', function () {
|
||||
|
||||
if (this.value == 'vaapi') {
|
||||
|
||||
page.querySelector('.fldVaapiDevice').classList.remove('hide');
|
||||
page.querySelector('#txtVaapiDevice').setAttribute('required', 'required');
|
||||
|
||||
} else {
|
||||
page.querySelector('.fldVaapiDevice').classList.add('hide');
|
||||
page.querySelector('#txtVaapiDevice').removeAttribute('required');
|
||||
}
|
||||
});
|
||||
|
||||
$('#btnSelectEncoderPath', page).on("click.selectDirectory", function () {
|
||||
|
||||
require(['directorybrowser'], function (directoryBrowser) {
|
||||
|
||||
var picker = new directoryBrowser();
|
||||
|
||||
picker.show({
|
||||
|
||||
includeFiles: true,
|
||||
callback: function (path) {
|
||||
|
||||
if (path) {
|
||||
$('.txtEncoderPath', page).val(path);
|
||||
}
|
||||
picker.close();
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
$('#btnSelectTranscodingTempPath', page).on("click.selectDirectory", function () {
|
||||
|
||||
require(['directorybrowser'], function (directoryBrowser) {
|
||||
|
||||
var picker = new directoryBrowser();
|
||||
|
||||
picker.show({
|
||||
|
||||
callback: function (path) {
|
||||
|
||||
if (path) {
|
||||
$('#txtTranscodingTempPath', page).val(path);
|
||||
}
|
||||
picker.close();
|
||||
},
|
||||
|
||||
header: Globalize.translate('HeaderSelectTranscodingPath'),
|
||||
|
||||
instruction: Globalize.translate('HeaderSelectTranscodingPathHelp')
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
$('.encodingSettingsForm').off('submit', onSubmit).on('submit', onSubmit);
|
||||
|
||||
page.querySelector('#selectEncoderPath').addEventListener('change', onSelectEncoderPathChange);
|
||||
|
||||
}).on('pageshow', "#encodingSettingsPage", function () {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var page = this;
|
||||
|
||||
ApiClient.getNamedConfiguration("encoding").then(function (config) {
|
||||
|
||||
ApiClient.getSystemInfo().then(function (systemInfo) {
|
||||
|
||||
if (systemInfo.EncoderLocationType == "External") {
|
||||
page.querySelector('.fldSelectEncoderPathType').classList.add('hide');
|
||||
} else {
|
||||
page.querySelector('.fldSelectEncoderPathType').classList.remove('hide');
|
||||
}
|
||||
|
||||
loadPage(page, config, systemInfo);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
define(["jQuery"],function($){"use strict";function loadPage(page,config,systemInfo){page.querySelector("#chkEnableThrottle").checked=config.EnableThrottling,$("#selectVideoDecoder",page).val(config.HardwareAccelerationType),$("#selectThreadCount",page).val(config.EncodingThreadCount),$("#txtDownMixAudioBoost",page).val(config.DownMixAudioBoost),page.querySelector(".txtEncoderPath").value=config.EncoderAppPath||"",$("#txtTranscodingTempPath",page).val(config.TranscodingTempPath||""),$("#txtVaapiDevice",page).val(config.VaapiDevice||""),page.querySelector("#selectH264Preset").value=config.H264Preset||"",page.querySelector("#txtH264Crf").value=config.H264Crf||"";var selectEncoderPath=page.querySelector("#selectEncoderPath");selectEncoderPath.value=systemInfo.EncoderLocationType,onSelectEncoderPathChange.call(selectEncoderPath),page.querySelector("#selectVideoDecoder").dispatchEvent(new CustomEvent("change",{bubbles:!0})),Dashboard.hideLoadingMsg()}function onSaveEncodingPathFailure(response){Dashboard.hideLoadingMsg();var msg="";msg=Globalize.translate("FFmpegSavePathNotFound"),require(["alert"],function(alert){alert(msg)})}function updateEncoder(form){return ApiClient.getSystemInfo().then(function(systemInfo){return ApiClient.ajax({url:ApiClient.getUrl("System/MediaEncoder/Path"),type:"POST",data:{Path:form.querySelector(".txtEncoderPath").value,PathType:form.querySelector("#selectEncoderPath").value}}).then(Dashboard.processServerConfigurationUpdateResult,onSaveEncodingPathFailure)})}function onSubmit(){var form=this,onDecoderConfirmed=function(){Dashboard.showLoadingMsg(),ApiClient.getNamedConfiguration("encoding").then(function(config){config.DownMixAudioBoost=$("#txtDownMixAudioBoost",form).val(),config.TranscodingTempPath=$("#txtTranscodingTempPath",form).val(),config.EncodingThreadCount=$("#selectThreadCount",form).val(),config.HardwareAccelerationType=$("#selectVideoDecoder",form).val(),config.VaapiDevice=$("#txtVaapiDevice",form).val(),config.H264Preset=form.querySelector("#selectH264Preset").value,config.H264Crf=parseInt(form.querySelector("#txtH264Crf").value||"0"),config.EnableThrottling=form.querySelector("#chkEnableThrottle").checked,ApiClient.updateNamedConfiguration("encoding",config).then(function(){updateEncoder(form)})})};return $("#selectVideoDecoder",form).val()?require(["alert"],function(alert){alert({title:Globalize.translate("TitleHardwareAcceleration"),text:Globalize.translate("HardwareAccelerationWarning")}).then(onDecoderConfirmed)}):onDecoderConfirmed(),!1}function onSelectEncoderPathChange(e){var page=$(this).parents(".page")[0];"Custom"==this.value?(page.querySelector(".fldEncoderPath").classList.remove("hide"),page.querySelector(".txtEncoderPath").setAttribute("required","required")):(page.querySelector(".fldEncoderPath").classList.add("hide"),page.querySelector(".txtEncoderPath").removeAttribute("required"))}$(document).on("pageinit","#encodingSettingsPage",function(){var page=this;page.querySelector("#selectVideoDecoder").addEventListener("change",function(){"vaapi"==this.value?(page.querySelector(".fldVaapiDevice").classList.remove("hide"),page.querySelector("#txtVaapiDevice").setAttribute("required","required")):(page.querySelector(".fldVaapiDevice").classList.add("hide"),page.querySelector("#txtVaapiDevice").removeAttribute("required"))}),$("#btnSelectEncoderPath",page).on("click.selectDirectory",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({includeFiles:!0,callback:function(path){path&&$(".txtEncoderPath",page).val(path),picker.close()}})})}),$("#btnSelectTranscodingTempPath",page).on("click.selectDirectory",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({callback:function(path){path&&$("#txtTranscodingTempPath",page).val(path),picker.close()},header:Globalize.translate("HeaderSelectTranscodingPath"),instruction:Globalize.translate("HeaderSelectTranscodingPathHelp")})})}),$(".encodingSettingsForm").off("submit",onSubmit).on("submit",onSubmit),page.querySelector("#selectEncoderPath").addEventListener("change",onSelectEncoderPathChange)}).on("pageshow","#encodingSettingsPage",function(){Dashboard.showLoadingMsg();var page=this;ApiClient.getNamedConfiguration("encoding").then(function(config){ApiClient.getSystemInfo().then(function(systemInfo){"External"==systemInfo.EncoderLocationType?page.querySelector(".fldSelectEncoderPathType").classList.add("hide"):page.querySelector(".fldSelectEncoderPathType").classList.remove("hide"),loadPage(page,config,systemInfo)})})})});
|
File diff suppressed because one or more lines are too long
|
@ -1,20 +1 @@
|
|||
define(['components/favoriteitems'], function (favoriteItems) {
|
||||
'use strict';
|
||||
|
||||
return function (view, params) {
|
||||
|
||||
var self = this;
|
||||
|
||||
view.addEventListener('viewshow', function (e) {
|
||||
|
||||
var isRestored = e.detail.isRestored;
|
||||
|
||||
if (!isRestored) {
|
||||
|
||||
var parentId = null;
|
||||
favoriteItems.render(view, Dashboard.getCurrentUserId(), parentId);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
});
|
||||
define(["components/favoriteitems"],function(favoriteItems){"use strict";return function(view,params){view.addEventListener("viewshow",function(e){var isRestored=e.detail.isRestored;if(!isRestored){var parentId=null;favoriteItems.render(view,Dashboard.getCurrentUserId(),parentId)}})}});
|
|
@ -1,66 +1 @@
|
|||
define([], function () {
|
||||
'use strict';
|
||||
|
||||
function processForgotPasswordResult(result) {
|
||||
|
||||
if (result.Action == 'ContactAdmin') {
|
||||
|
||||
Dashboard.alert({
|
||||
|
||||
message: Globalize.translate('MessageContactAdminToResetPassword'),
|
||||
title: Globalize.translate('HeaderForgotPassword')
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if (result.Action == 'InNetworkRequired') {
|
||||
|
||||
Dashboard.alert({
|
||||
|
||||
message: Globalize.translate('MessageForgotPasswordInNetworkRequired'),
|
||||
title: Globalize.translate('HeaderForgotPassword')
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if (result.Action == 'PinCode') {
|
||||
|
||||
var msg = Globalize.translate('MessageForgotPasswordFileCreated');
|
||||
|
||||
msg += "<br/>";
|
||||
msg += "<br/>";
|
||||
msg += result.PinFile;
|
||||
msg += "<br/>";
|
||||
|
||||
Dashboard.alert({
|
||||
|
||||
message: msg,
|
||||
title: Globalize.translate('HeaderForgotPassword')
|
||||
});
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
return function (view, params) {
|
||||
|
||||
function onSubmit(e) {
|
||||
|
||||
ApiClient.ajax({
|
||||
|
||||
type: 'POST',
|
||||
url: ApiClient.getUrl('Users/ForgotPassword'),
|
||||
dataType: 'json',
|
||||
data: {
|
||||
EnteredUsername: view.querySelector('#txtName').value
|
||||
}
|
||||
|
||||
}).then(processForgotPasswordResult);
|
||||
|
||||
e.preventDefault();
|
||||
return false;
|
||||
}
|
||||
|
||||
view.querySelector('form').addEventListener('submit', onSubmit);
|
||||
};
|
||||
|
||||
});
|
||||
define([],function(){"use strict";function processForgotPasswordResult(result){if("ContactAdmin"==result.Action)return void Dashboard.alert({message:Globalize.translate("MessageContactAdminToResetPassword"),title:Globalize.translate("HeaderForgotPassword")});if("InNetworkRequired"==result.Action)return void Dashboard.alert({message:Globalize.translate("MessageForgotPasswordInNetworkRequired"),title:Globalize.translate("HeaderForgotPassword")});if("PinCode"==result.Action){var msg=Globalize.translate("MessageForgotPasswordFileCreated");return msg+="<br/>",msg+="<br/>",msg+=result.PinFile,msg+="<br/>",void Dashboard.alert({message:msg,title:Globalize.translate("HeaderForgotPassword")})}}return function(view,params){function onSubmit(e){return ApiClient.ajax({type:"POST",url:ApiClient.getUrl("Users/ForgotPassword"),dataType:"json",data:{EnteredUsername:view.querySelector("#txtName").value}}).then(processForgotPasswordResult),e.preventDefault(),!1}view.querySelector("form").addEventListener("submit",onSubmit)}});
|
|
@ -1,56 +1 @@
|
|||
define([], function () {
|
||||
'use strict';
|
||||
|
||||
function processForgotPasswordResult(result) {
|
||||
|
||||
if (result.Success) {
|
||||
|
||||
var msg = Globalize.translate('MessagePasswordResetForUsers');
|
||||
|
||||
msg += '<br/>';
|
||||
msg += '<br/>';
|
||||
msg += result.UsersReset.join('<br/>');
|
||||
|
||||
Dashboard.alert({
|
||||
|
||||
message: msg,
|
||||
title: Globalize.translate('HeaderPasswordReset'),
|
||||
|
||||
callback: function () {
|
||||
|
||||
window.location.href = 'login.html';
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
Dashboard.alert({
|
||||
|
||||
message: Globalize.translate('MessageInvalidForgotPasswordPin'),
|
||||
title: Globalize.translate('HeaderPasswordReset')
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
return function (view, params) {
|
||||
|
||||
function onSubmit(e) {
|
||||
|
||||
ApiClient.ajax({
|
||||
|
||||
type: 'POST',
|
||||
url: ApiClient.getUrl('Users/ForgotPassword/Pin'),
|
||||
dataType: 'json',
|
||||
data: {
|
||||
Pin: view.querySelector('#txtPin').value
|
||||
}
|
||||
|
||||
}).then(processForgotPasswordResult);
|
||||
|
||||
e.preventDefault();
|
||||
return false;
|
||||
}
|
||||
|
||||
view.querySelector('form').addEventListener('submit', onSubmit);
|
||||
};
|
||||
});
|
||||
define([],function(){"use strict";function processForgotPasswordResult(result){if(result.Success){var msg=Globalize.translate("MessagePasswordResetForUsers");return msg+="<br/>",msg+="<br/>",msg+=result.UsersReset.join("<br/>"),void Dashboard.alert({message:msg,title:Globalize.translate("HeaderPasswordReset"),callback:function(){window.location.href="login.html"}})}Dashboard.alert({message:Globalize.translate("MessageInvalidForgotPasswordPin"),title:Globalize.translate("HeaderPasswordReset")})}return function(view,params){function onSubmit(e){return ApiClient.ajax({type:"POST",url:ApiClient.getUrl("Users/ForgotPassword/Pin"),dataType:"json",data:{Pin:view.querySelector("#txtPin").value}}).then(processForgotPasswordResult),e.preventDefault(),!1}view.querySelector("form").addEventListener("submit",onSubmit)}});
|
|
@ -1,84 +1 @@
|
|||
define(['jQuery', 'imageLoader'], function ($, imageLoader) {
|
||||
'use strict';
|
||||
|
||||
// The base query options
|
||||
var query = {
|
||||
|
||||
SortBy: "SortName",
|
||||
SortOrder: "Ascending",
|
||||
Recursive: true,
|
||||
Fields: "DateCreated,ItemCounts",
|
||||
StartIndex: 0
|
||||
};
|
||||
|
||||
function getSavedQueryKey() {
|
||||
|
||||
return LibraryBrowser.getSavedQueryKey();
|
||||
}
|
||||
|
||||
function reloadItems(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
ApiClient.getGameGenres(Dashboard.getCurrentUserId(), query).then(function (result) {
|
||||
|
||||
// Scroll back up so they can see the results from the beginning
|
||||
window.scrollTo(0, 0);
|
||||
|
||||
var html = '';
|
||||
|
||||
$('.listTopPaging', page).html(LibraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
totalRecordCount: result.TotalRecordCount,
|
||||
showLimit: false
|
||||
}));
|
||||
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
preferThumb: true,
|
||||
context: 'games',
|
||||
showItemCounts: true,
|
||||
centerText: true,
|
||||
lazy: true
|
||||
});
|
||||
|
||||
var elem = page.querySelector('#items');
|
||||
elem.innerHTML = html;
|
||||
imageLoader.lazyChildren(elem);
|
||||
|
||||
$('.btnNextPage', page).on('click', function () {
|
||||
query.StartIndex += query.Limit;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.btnPreviousPage', page).on('click', function () {
|
||||
query.StartIndex -= query.Limit;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
$(document).on('pagebeforeshow', "#gameGenresPage", function () {
|
||||
|
||||
query.ParentId = LibraryMenu.getTopParentId();
|
||||
|
||||
var limit = LibraryBrowser.getDefaultPageSize();
|
||||
|
||||
// If the default page size has changed, the start index will have to be reset
|
||||
if (limit != query.Limit) {
|
||||
query.Limit = limit;
|
||||
query.StartIndex = 0;
|
||||
}
|
||||
|
||||
LibraryBrowser.loadSavedQueryValues(getSavedQueryKey(), query);
|
||||
|
||||
reloadItems(this);
|
||||
});
|
||||
|
||||
});
|
||||
define(["jQuery","imageLoader"],function($,imageLoader){"use strict";function getSavedQueryKey(){return LibraryBrowser.getSavedQueryKey()}function reloadItems(page){Dashboard.showLoadingMsg(),ApiClient.getGameGenres(Dashboard.getCurrentUserId(),query).then(function(result){window.scrollTo(0,0);var html="";$(".listTopPaging",page).html(LibraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1})),html=LibraryBrowser.getPosterViewHtml({items:result.Items,shape:"backdrop",preferThumb:!0,context:"games",showItemCounts:!0,centerText:!0,lazy:!0});var elem=page.querySelector("#items");elem.innerHTML=html,imageLoader.lazyChildren(elem),$(".btnNextPage",page).on("click",function(){query.StartIndex+=query.Limit,reloadItems(page)}),$(".btnPreviousPage",page).on("click",function(){query.StartIndex-=query.Limit,reloadItems(page)}),LibraryBrowser.saveQueryValues(getSavedQueryKey(),query),Dashboard.hideLoadingMsg()})}var query={SortBy:"SortName",SortOrder:"Ascending",Recursive:!0,Fields:"DateCreated,ItemCounts",StartIndex:0};$(document).on("pagebeforeshow","#gameGenresPage",function(){query.ParentId=LibraryMenu.getTopParentId();var limit=LibraryBrowser.getDefaultPageSize();limit!=query.Limit&&(query.Limit=limit,query.StartIndex=0),LibraryBrowser.loadSavedQueryValues(getSavedQueryKey(),query),reloadItems(this)})});
|
|
@ -1,186 +1 @@
|
|||
define(['jQuery', 'listView', 'imageLoader'], function ($, listView, imageLoader) {
|
||||
'use strict';
|
||||
|
||||
var data = {};
|
||||
|
||||
function getPageData(context) {
|
||||
var key = getSavedQueryKey(context);
|
||||
var pageData = data[key];
|
||||
|
||||
if (!pageData) {
|
||||
pageData = data[key] = {
|
||||
query: {
|
||||
SortBy: "SortName",
|
||||
SortOrder: "Ascending",
|
||||
MediaTypes: "Game",
|
||||
Recursive: true,
|
||||
Fields: "Genres,Studios,PrimaryImageAspectRatio,SortName",
|
||||
ImageTypeLimit: 1,
|
||||
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
|
||||
StartIndex: 0,
|
||||
Limit: LibraryBrowser.getDefaultPageSize()
|
||||
},
|
||||
view: LibraryBrowser.getSavedView(key) || 'Poster'
|
||||
};
|
||||
|
||||
pageData.query.ParentId = LibraryMenu.getTopParentId();
|
||||
LibraryBrowser.loadSavedQueryValues(key, pageData.query);
|
||||
}
|
||||
return pageData;
|
||||
}
|
||||
|
||||
function getQuery(context) {
|
||||
|
||||
return getPageData(context).query;
|
||||
}
|
||||
|
||||
function getSavedQueryKey(context) {
|
||||
|
||||
if (!context.savedQueryKey) {
|
||||
context.savedQueryKey = LibraryBrowser.getSavedQueryKey('games');
|
||||
}
|
||||
return context.savedQueryKey;
|
||||
}
|
||||
|
||||
function reloadItems(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var query = getQuery(page);
|
||||
|
||||
ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function (result) {
|
||||
|
||||
// Scroll back up so they can see the results from the beginning
|
||||
window.scrollTo(0, 0);
|
||||
|
||||
var html = '';
|
||||
|
||||
$('.listTopPaging', page).html(LibraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
totalRecordCount: result.TotalRecordCount,
|
||||
showLimit: false,
|
||||
filterButton: true
|
||||
}));
|
||||
|
||||
var view = getPageData(page).view;
|
||||
|
||||
if (view == "List") {
|
||||
|
||||
html = listView.getListViewHtml({
|
||||
items: result.Items,
|
||||
context: 'games',
|
||||
sortBy: query.SortBy
|
||||
});
|
||||
}
|
||||
else if (view == "Poster") {
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "auto",
|
||||
context: 'games',
|
||||
showTitle: true,
|
||||
showParentTitle: true,
|
||||
centerText: true
|
||||
});
|
||||
}
|
||||
else if (view == "PosterCard") {
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "auto",
|
||||
context: 'games',
|
||||
showTitle: true,
|
||||
showParentTitle: true,
|
||||
cardLayout: true
|
||||
});
|
||||
}
|
||||
|
||||
var elem = page.querySelector('#items');
|
||||
elem.innerHTML = html;
|
||||
imageLoader.lazyChildren(elem);
|
||||
|
||||
$('.btnNextPage', page).on('click', function () {
|
||||
query.StartIndex += query.Limit;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.btnPreviousPage', page).on('click', function () {
|
||||
query.StartIndex -= query.Limit;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.btnFilter', page).on('click', function () {
|
||||
showFilterMenu(page);
|
||||
});
|
||||
|
||||
LibraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
function showFilterMenu(page) {
|
||||
|
||||
require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
|
||||
|
||||
var filterDialog = new filterDialogFactory({
|
||||
query: getQuery(page),
|
||||
mode: 'games'
|
||||
});
|
||||
|
||||
Events.on(filterDialog, 'filterchange', function () {
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
filterDialog.show();
|
||||
});
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#gamesPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
$('.alphabetPicker', this).on('alphaselect', function (e, character) {
|
||||
|
||||
var query = getQuery(page);
|
||||
query.NameStartsWithOrGreater = character;
|
||||
query.StartIndex = 0;
|
||||
|
||||
reloadItems(page);
|
||||
|
||||
}).on('alphaclear', function (e) {
|
||||
|
||||
var query = getQuery(page);
|
||||
query.NameStartsWithOrGreater = '';
|
||||
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
}).on('pagebeforeshow', "#gamesPage", function () {
|
||||
|
||||
var page = this;
|
||||
var query = getQuery(page);
|
||||
query.ParentId = LibraryMenu.getTopParentId();
|
||||
|
||||
var limit = LibraryBrowser.getDefaultPageSize();
|
||||
|
||||
// If the default page size has changed, the start index will have to be reset
|
||||
if (limit != query.Limit) {
|
||||
query.Limit = limit;
|
||||
query.StartIndex = 0;
|
||||
}
|
||||
|
||||
var viewkey = getSavedQueryKey(page);
|
||||
|
||||
LibraryBrowser.loadSavedQueryValues(viewkey, query);
|
||||
|
||||
LibraryBrowser.getSavedViewSetting(viewkey).then(function (val) {
|
||||
|
||||
if (val) {
|
||||
$('#selectView', page).val(val).trigger('change');
|
||||
} else {
|
||||
reloadItems(page);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
define(["jQuery","listView","imageLoader"],function($,listView,imageLoader){"use strict";function getPageData(context){var key=getSavedQueryKey(context),pageData=data[key];return pageData||(pageData=data[key]={query:{SortBy:"SortName",SortOrder:"Ascending",MediaTypes:"Game",Recursive:!0,Fields:"Genres,Studios,PrimaryImageAspectRatio,SortName",ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Banner,Thumb",StartIndex:0,Limit:LibraryBrowser.getDefaultPageSize()},view:LibraryBrowser.getSavedView(key)||"Poster"},pageData.query.ParentId=LibraryMenu.getTopParentId(),LibraryBrowser.loadSavedQueryValues(key,pageData.query)),pageData}function getQuery(context){return getPageData(context).query}function getSavedQueryKey(context){return context.savedQueryKey||(context.savedQueryKey=LibraryBrowser.getSavedQueryKey("games")),context.savedQueryKey}function reloadItems(page){Dashboard.showLoadingMsg();var query=getQuery(page);ApiClient.getItems(Dashboard.getCurrentUserId(),query).then(function(result){window.scrollTo(0,0);var html="";$(".listTopPaging",page).html(LibraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1,filterButton:!0}));var view=getPageData(page).view;"List"==view?html=listView.getListViewHtml({items:result.Items,context:"games",sortBy:query.SortBy}):"Poster"==view?html=LibraryBrowser.getPosterViewHtml({items:result.Items,shape:"auto",context:"games",showTitle:!0,showParentTitle:!0,centerText:!0}):"PosterCard"==view&&(html=LibraryBrowser.getPosterViewHtml({items:result.Items,shape:"auto",context:"games",showTitle:!0,showParentTitle:!0,cardLayout:!0}));var elem=page.querySelector("#items");elem.innerHTML=html,imageLoader.lazyChildren(elem),$(".btnNextPage",page).on("click",function(){query.StartIndex+=query.Limit,reloadItems(page)}),$(".btnPreviousPage",page).on("click",function(){query.StartIndex-=query.Limit,reloadItems(page)}),$(".btnFilter",page).on("click",function(){showFilterMenu(page)}),LibraryBrowser.saveQueryValues(getSavedQueryKey(page),query),Dashboard.hideLoadingMsg()})}function showFilterMenu(page){require(["components/filterdialog/filterdialog"],function(filterDialogFactory){var filterDialog=new filterDialogFactory({query:getQuery(page),mode:"games"});Events.on(filterDialog,"filterchange",function(){reloadItems(page)}),filterDialog.show()})}var data={};$(document).on("pageinit","#gamesPage",function(){var page=this;$(".alphabetPicker",this).on("alphaselect",function(e,character){var query=getQuery(page);query.NameStartsWithOrGreater=character,query.StartIndex=0,reloadItems(page)}).on("alphaclear",function(e){var query=getQuery(page);query.NameStartsWithOrGreater="",reloadItems(page)})}).on("pagebeforeshow","#gamesPage",function(){var page=this,query=getQuery(page);query.ParentId=LibraryMenu.getTopParentId();var limit=LibraryBrowser.getDefaultPageSize();limit!=query.Limit&&(query.Limit=limit,query.StartIndex=0);var viewkey=getSavedQueryKey(page);LibraryBrowser.loadSavedQueryValues(viewkey,query),LibraryBrowser.getSavedViewSetting(viewkey).then(function(val){val?$("#selectView",page).val(val).trigger("change"):reloadItems(page)})})});
|
|
@ -1,72 +1 @@
|
|||
define(['jQuery', 'imageLoader'], function ($, imageLoader) {
|
||||
'use strict';
|
||||
|
||||
$(document).on('pagebeforeshow', "#gamesRecommendedPage", function () {
|
||||
|
||||
var parentId = LibraryMenu.getTopParentId();
|
||||
var userId = Dashboard.getCurrentUserId();
|
||||
|
||||
var page = this;
|
||||
|
||||
var options = {
|
||||
|
||||
IncludeItemTypes: "Game",
|
||||
Limit: 18,
|
||||
Fields: "PrimaryImageAspectRatio",
|
||||
ParentId: parentId,
|
||||
ImageTypeLimit: 1,
|
||||
EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
|
||||
};
|
||||
|
||||
ApiClient.getJSON(ApiClient.getUrl('Users/' + userId + '/Items/Latest', options)).then(function (items) {
|
||||
|
||||
var recentlyAddedItems = page.querySelector('#recentlyAddedItems');
|
||||
recentlyAddedItems.innerHTML = LibraryBrowser.getPosterViewHtml({
|
||||
items: items,
|
||||
transparent: true,
|
||||
borderless: true,
|
||||
shape: 'auto',
|
||||
lazy: true
|
||||
|
||||
});
|
||||
imageLoader.lazyChildren(recentlyAddedItems);
|
||||
|
||||
});
|
||||
|
||||
options = {
|
||||
|
||||
SortBy: "DatePlayed",
|
||||
SortOrder: "Descending",
|
||||
MediaTypes: "Game",
|
||||
Limit: 18,
|
||||
Recursive: true,
|
||||
Filters: "IsPlayed",
|
||||
Fields: "ItemCounts,AudioInfo,PrimaryImageAspectRatio",
|
||||
ParentId: parentId,
|
||||
ImageTypeLimit: 1,
|
||||
EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
|
||||
};
|
||||
|
||||
ApiClient.getItems(userId, options).then(function (result) {
|
||||
|
||||
if (result.Items.length) {
|
||||
$('#recentlyPlayedSection', page).show();
|
||||
} else {
|
||||
$('#recentlyPlayedSection', page).hide();
|
||||
}
|
||||
|
||||
var recentlyPlayedItems = page.querySelector('#recentlyPlayedItems');
|
||||
recentlyPlayedItems.innerHTML = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
transparent: true,
|
||||
borderless: true,
|
||||
shape: 'auto',
|
||||
lazy: true
|
||||
|
||||
});
|
||||
imageLoader.lazyChildren(recentlyPlayedItems);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
define(["jQuery","imageLoader"],function($,imageLoader){"use strict";$(document).on("pagebeforeshow","#gamesRecommendedPage",function(){var parentId=LibraryMenu.getTopParentId(),userId=Dashboard.getCurrentUserId(),page=this,options={IncludeItemTypes:"Game",Limit:18,Fields:"PrimaryImageAspectRatio",ParentId:parentId,ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Banner,Thumb"};ApiClient.getJSON(ApiClient.getUrl("Users/"+userId+"/Items/Latest",options)).then(function(items){var recentlyAddedItems=page.querySelector("#recentlyAddedItems");recentlyAddedItems.innerHTML=LibraryBrowser.getPosterViewHtml({items:items,transparent:!0,borderless:!0,shape:"auto",lazy:!0}),imageLoader.lazyChildren(recentlyAddedItems)}),options={SortBy:"DatePlayed",SortOrder:"Descending",MediaTypes:"Game",Limit:18,Recursive:!0,Filters:"IsPlayed",Fields:"ItemCounts,AudioInfo,PrimaryImageAspectRatio",ParentId:parentId,ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Banner,Thumb"},ApiClient.getItems(userId,options).then(function(result){result.Items.length?$("#recentlyPlayedSection",page).show():$("#recentlyPlayedSection",page).hide();var recentlyPlayedItems=page.querySelector("#recentlyPlayedItems");recentlyPlayedItems.innerHTML=LibraryBrowser.getPosterViewHtml({items:result.Items,transparent:!0,borderless:!0,shape:"auto",lazy:!0}),imageLoader.lazyChildren(recentlyPlayedItems)})})});
|
|
@ -1,85 +1 @@
|
|||
define(['jQuery', 'imageLoader'], function ($, imageLoader) {
|
||||
'use strict';
|
||||
|
||||
// The base query options
|
||||
var query = {
|
||||
|
||||
SortBy: "SortName",
|
||||
SortOrder: "Ascending",
|
||||
MediaTypes: "Game",
|
||||
Recursive: true,
|
||||
Fields: "ItemCounts",
|
||||
StartIndex: 0
|
||||
};
|
||||
|
||||
function getSavedQueryKey() {
|
||||
|
||||
return LibraryBrowser.getSavedQueryKey();
|
||||
}
|
||||
|
||||
function reloadItems(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
ApiClient.getStudios(Dashboard.getCurrentUserId(), query).then(function (result) {
|
||||
|
||||
// Scroll back up so they can see the results from the beginning
|
||||
window.scrollTo(0, 0);
|
||||
|
||||
var html = '';
|
||||
|
||||
$('.listTopPaging', page).html(LibraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
totalRecordCount: result.TotalRecordCount,
|
||||
showLimit: false
|
||||
}));
|
||||
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
preferThumb: true,
|
||||
context: 'games',
|
||||
showItemCounts: true,
|
||||
centerText: true,
|
||||
lazy: true
|
||||
});
|
||||
|
||||
var elem = page.querySelector('#items');
|
||||
elem.innerHTML = html;
|
||||
imageLoader.lazyChildren(elem);
|
||||
|
||||
$('.btnNextPage', page).on('click', function () {
|
||||
query.StartIndex += query.Limit;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.btnPreviousPage', page).on('click', function () {
|
||||
query.StartIndex -= query.Limit;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
$(document).on('pagebeforeshow', "#gameStudiosPage", function () {
|
||||
|
||||
query.ParentId = LibraryMenu.getTopParentId();
|
||||
|
||||
var limit = LibraryBrowser.getDefaultPageSize();
|
||||
|
||||
// If the default page size has changed, the start index will have to be reset
|
||||
if (limit != query.Limit) {
|
||||
query.Limit = limit;
|
||||
query.StartIndex = 0;
|
||||
}
|
||||
|
||||
LibraryBrowser.loadSavedQueryValues(getSavedQueryKey(), query);
|
||||
|
||||
reloadItems(this);
|
||||
});
|
||||
|
||||
});
|
||||
define(["jQuery","imageLoader"],function($,imageLoader){"use strict";function getSavedQueryKey(){return LibraryBrowser.getSavedQueryKey()}function reloadItems(page){Dashboard.showLoadingMsg(),ApiClient.getStudios(Dashboard.getCurrentUserId(),query).then(function(result){window.scrollTo(0,0);var html="";$(".listTopPaging",page).html(LibraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1})),html=LibraryBrowser.getPosterViewHtml({items:result.Items,shape:"backdrop",preferThumb:!0,context:"games",showItemCounts:!0,centerText:!0,lazy:!0});var elem=page.querySelector("#items");elem.innerHTML=html,imageLoader.lazyChildren(elem),$(".btnNextPage",page).on("click",function(){query.StartIndex+=query.Limit,reloadItems(page)}),$(".btnPreviousPage",page).on("click",function(){query.StartIndex-=query.Limit,reloadItems(page)}),LibraryBrowser.saveQueryValues(getSavedQueryKey(),query),Dashboard.hideLoadingMsg()})}var query={SortBy:"SortName",SortOrder:"Ascending",MediaTypes:"Game",Recursive:!0,Fields:"ItemCounts",StartIndex:0};$(document).on("pagebeforeshow","#gameStudiosPage",function(){query.ParentId=LibraryMenu.getTopParentId();var limit=LibraryBrowser.getDefaultPageSize();limit!=query.Limit&&(query.Limit=limit,query.StartIndex=0),LibraryBrowser.loadSavedQueryValues(getSavedQueryKey(),query),reloadItems(this)})});
|
|
@ -1,77 +1 @@
|
|||
define(['jQuery', 'imageLoader'], function ($, imageLoader) {
|
||||
'use strict';
|
||||
|
||||
// The base query options
|
||||
var query = {
|
||||
|
||||
SortBy: "SortName",
|
||||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "GameSystem",
|
||||
Recursive: true,
|
||||
Fields: "DateCreated",
|
||||
StartIndex: 0,
|
||||
ImageTypeLimit: 1,
|
||||
EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
|
||||
};
|
||||
|
||||
function getSavedQueryKey() {
|
||||
|
||||
return LibraryBrowser.getSavedQueryKey();
|
||||
}
|
||||
|
||||
function reloadItems(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function (result) {
|
||||
|
||||
// Scroll back up so they can see the results from the beginning
|
||||
window.scrollTo(0, 0);
|
||||
|
||||
updateFilterControls(page);
|
||||
|
||||
var html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
context: 'games',
|
||||
showTitle: true,
|
||||
centerText: true,
|
||||
lazy: true
|
||||
|
||||
});
|
||||
|
||||
var elem = page.querySelector('#items');
|
||||
elem.innerHTML = html;
|
||||
imageLoader.lazyChildren(elem);
|
||||
|
||||
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
function updateFilterControls(page) {
|
||||
|
||||
// Reset form values using the last used query
|
||||
}
|
||||
|
||||
$(document).on('pagebeforeshow', "#gamesystemsPage", function () {
|
||||
|
||||
query.ParentId = LibraryMenu.getTopParentId();
|
||||
|
||||
var limit = LibraryBrowser.getDefaultPageSize();
|
||||
|
||||
// If the default page size has changed, the start index will have to be reset
|
||||
if (limit != query.Limit) {
|
||||
query.Limit = limit;
|
||||
query.StartIndex = 0;
|
||||
}
|
||||
|
||||
LibraryBrowser.loadSavedQueryValues(getSavedQueryKey(), query);
|
||||
|
||||
reloadItems(this);
|
||||
|
||||
updateFilterControls(this);
|
||||
});
|
||||
|
||||
});
|
||||
define(["jQuery","imageLoader"],function($,imageLoader){"use strict";function getSavedQueryKey(){return LibraryBrowser.getSavedQueryKey()}function reloadItems(page){Dashboard.showLoadingMsg(),ApiClient.getItems(Dashboard.getCurrentUserId(),query).then(function(result){window.scrollTo(0,0),updateFilterControls(page);var html=LibraryBrowser.getPosterViewHtml({items:result.Items,shape:"backdrop",context:"games",showTitle:!0,centerText:!0,lazy:!0}),elem=page.querySelector("#items");elem.innerHTML=html,imageLoader.lazyChildren(elem),LibraryBrowser.saveQueryValues(getSavedQueryKey(),query),Dashboard.hideLoadingMsg()})}function updateFilterControls(page){}var query={SortBy:"SortName",SortOrder:"Ascending",IncludeItemTypes:"GameSystem",Recursive:!0,Fields:"DateCreated",StartIndex:0,ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Banner,Thumb"};$(document).on("pagebeforeshow","#gamesystemsPage",function(){query.ParentId=LibraryMenu.getTopParentId();var limit=LibraryBrowser.getDefaultPageSize();limit!=query.Limit&&(query.Limit=limit,query.StartIndex=0),LibraryBrowser.loadSavedQueryValues(getSavedQueryKey(),query),reloadItems(this),updateFilterControls(this)})});
|
|
@ -1,15 +1 @@
|
|||
define(['components/favoriteitems'], function (favoriteItems) {
|
||||
'use strict';
|
||||
|
||||
return function (view, params, tabContent) {
|
||||
|
||||
var self = this;
|
||||
|
||||
self.renderTab = function () {
|
||||
|
||||
var parentId = null;
|
||||
favoriteItems.render(tabContent, Dashboard.getCurrentUserId(), parentId);
|
||||
};
|
||||
};
|
||||
|
||||
});
|
||||
define(["components/favoriteitems"],function(favoriteItems){"use strict";return function(view,params,tabContent){var self=this;self.renderTab=function(){var parentId=null;favoriteItems.render(tabContent,Dashboard.getCurrentUserId(),parentId)}}});
|
|
@ -1,71 +1 @@
|
|||
define(['components/categorysyncbuttons', 'cardBuilder', 'apphost', 'imageLoader', 'emby-itemscontainer'], function (categorysyncbuttons, cardBuilder, appHost, imageLoader) {
|
||||
'use strict';
|
||||
|
||||
function getNextUpPromise() {
|
||||
|
||||
var query = {
|
||||
|
||||
Limit: 24,
|
||||
Fields: "PrimaryImageAspectRatio,SeriesInfo,DateCreated,BasicSyncInfo",
|
||||
UserId: Dashboard.getCurrentUserId(),
|
||||
ImageTypeLimit: 1,
|
||||
EnableImageTypes: "Primary,Backdrop,Thumb"
|
||||
};
|
||||
|
||||
return ApiClient.getNextUpEpisodes(query);
|
||||
}
|
||||
function loadNextUp(page, promise) {
|
||||
|
||||
promise.then(function (result) {
|
||||
|
||||
if (result.Items.length) {
|
||||
page.querySelector('.noNextUpItems').classList.add('hide');
|
||||
} else {
|
||||
page.querySelector('.noNextUpItems').classList.remove('hide');
|
||||
}
|
||||
|
||||
var html = '';
|
||||
|
||||
var supportsImageAnalysis = appHost.supports('imageanalysis');
|
||||
|
||||
html += cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
showTitle: true,
|
||||
showParentTitle: true,
|
||||
overlayText: false,
|
||||
lazy: true,
|
||||
preferThumb: true,
|
||||
showDetailsMenu: true,
|
||||
centerText: !supportsImageAnalysis,
|
||||
overlayPlayButton: true,
|
||||
context: 'home-nextup',
|
||||
cardLayout: supportsImageAnalysis,
|
||||
vibrant: supportsImageAnalysis
|
||||
});
|
||||
|
||||
var elem = page.querySelector('#nextUpItems');
|
||||
elem.innerHTML = html;
|
||||
imageLoader.lazyChildren(elem);
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
return function (view, params, tabContent) {
|
||||
|
||||
var self = this;
|
||||
var nextUpPromise;
|
||||
|
||||
categorysyncbuttons.init(view);
|
||||
|
||||
self.preRender = function () {
|
||||
nextUpPromise = getNextUpPromise();
|
||||
};
|
||||
|
||||
self.renderTab = function () {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
loadNextUp(view, nextUpPromise);
|
||||
};
|
||||
};
|
||||
|
||||
});
|
||||
define(["components/categorysyncbuttons","cardBuilder","apphost","imageLoader","emby-itemscontainer"],function(categorysyncbuttons,cardBuilder,appHost,imageLoader){"use strict";function getNextUpPromise(){var query={Limit:24,Fields:"PrimaryImageAspectRatio,SeriesInfo,DateCreated,BasicSyncInfo",UserId:Dashboard.getCurrentUserId(),ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Thumb"};return ApiClient.getNextUpEpisodes(query)}function loadNextUp(page,promise){promise.then(function(result){result.Items.length?page.querySelector(".noNextUpItems").classList.add("hide"):page.querySelector(".noNextUpItems").classList.remove("hide");var html="",supportsImageAnalysis=appHost.supports("imageanalysis");html+=cardBuilder.getCardsHtml({items:result.Items,shape:"backdrop",showTitle:!0,showParentTitle:!0,overlayText:!1,lazy:!0,preferThumb:!0,showDetailsMenu:!0,centerText:!supportsImageAnalysis,overlayPlayButton:!0,context:"home-nextup",cardLayout:supportsImageAnalysis,vibrant:supportsImageAnalysis});var elem=page.querySelector("#nextUpItems");elem.innerHTML=html,imageLoader.lazyChildren(elem),Dashboard.hideLoadingMsg()})}return function(view,params,tabContent){var nextUpPromise,self=this;categorysyncbuttons.init(view),self.preRender=function(){nextUpPromise=getNextUpPromise()},self.renderTab=function(){Dashboard.showLoadingMsg(),loadNextUp(view,nextUpPromise)}}});
|
|
@ -1,155 +1 @@
|
|||
define(['datetime', 'cardBuilder', 'apphost', 'imageLoader', 'emby-itemscontainer', 'scrollStyles'], function (datetime, cardBuilder, appHost, imageLoader) {
|
||||
'use strict';
|
||||
|
||||
function getUpcomingPromise() {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var query = {
|
||||
|
||||
Limit: 40,
|
||||
Fields: "AirTime,UserData",
|
||||
UserId: Dashboard.getCurrentUserId(),
|
||||
ImageTypeLimit: 1,
|
||||
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
|
||||
EnableTotalRecordCount: false
|
||||
};
|
||||
|
||||
return ApiClient.getJSON(ApiClient.getUrl("Shows/Upcoming", query));
|
||||
}
|
||||
|
||||
function loadUpcoming(page, promise) {
|
||||
|
||||
promise.then(function (result) {
|
||||
|
||||
var items = result.Items;
|
||||
|
||||
if (items.length) {
|
||||
page.querySelector('.noItemsMessage').style.display = 'none';
|
||||
} else {
|
||||
page.querySelector('.noItemsMessage').style.display = 'block';
|
||||
}
|
||||
|
||||
var elem = page.querySelector('#upcomingItems');
|
||||
renderUpcoming(elem, items);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
function enableScrollX() {
|
||||
return browserInfo.mobile;
|
||||
}
|
||||
|
||||
function getThumbShape() {
|
||||
return enableScrollX() ? 'overflowBackdrop' : 'backdrop';
|
||||
}
|
||||
|
||||
function renderUpcoming(elem, items) {
|
||||
|
||||
var groups = [];
|
||||
|
||||
var currentGroupName = '';
|
||||
var currentGroup = [];
|
||||
|
||||
var i, length;
|
||||
|
||||
for (i = 0, length = items.length; i < length; i++) {
|
||||
|
||||
var item = items[i];
|
||||
|
||||
var dateText = '';
|
||||
|
||||
if (item.PremiereDate) {
|
||||
try {
|
||||
|
||||
var premiereDate = datetime.parseISO8601Date(item.PremiereDate, true);
|
||||
|
||||
if (datetime.isRelativeDay(premiereDate, -1)) {
|
||||
dateText = Globalize.translate('Yesterday');
|
||||
} else {
|
||||
dateText = LibraryBrowser.getFutureDateText(premiereDate, true);
|
||||
}
|
||||
|
||||
} catch (err) {
|
||||
}
|
||||
}
|
||||
|
||||
if (dateText != currentGroupName) {
|
||||
|
||||
if (currentGroup.length) {
|
||||
groups.push({
|
||||
name: currentGroupName,
|
||||
items: currentGroup
|
||||
});
|
||||
}
|
||||
|
||||
currentGroupName = dateText;
|
||||
currentGroup = [item];
|
||||
} else {
|
||||
currentGroup.push(item);
|
||||
}
|
||||
}
|
||||
|
||||
var html = '';
|
||||
|
||||
for (i = 0, length = groups.length; i < length; i++) {
|
||||
|
||||
var group = groups[i];
|
||||
|
||||
html += '<div class="homePageSection">';
|
||||
html += '<h1 class="listHeader">' + group.name + '</h1>';
|
||||
|
||||
var allowBottomPadding = true;
|
||||
|
||||
if (enableScrollX()) {
|
||||
allowBottomPadding = false;
|
||||
html += '<div is="emby-itemscontainer" class="itemsContainer hiddenScrollX">';
|
||||
} else {
|
||||
html += '<div is="emby-itemscontainer" class="itemsContainer vertical-wrap">';
|
||||
}
|
||||
|
||||
var supportsImageAnalysis = appHost.supports('imageanalysis');
|
||||
|
||||
html += cardBuilder.getCardsHtml({
|
||||
items: group.items,
|
||||
showLocationTypeIndicator: false,
|
||||
shape: getThumbShape(),
|
||||
showTitle: true,
|
||||
preferThumb: true,
|
||||
lazy: true,
|
||||
showDetailsMenu: true,
|
||||
centerText: !supportsImageAnalysis,
|
||||
context: 'home-upcoming',
|
||||
overlayMoreButton: !supportsImageAnalysis,
|
||||
showParentTitle: true,
|
||||
allowBottomPadding: allowBottomPadding,
|
||||
cardLayout: supportsImageAnalysis,
|
||||
vibrant: supportsImageAnalysis
|
||||
|
||||
});
|
||||
html += '</div>';
|
||||
|
||||
html += '</div>';
|
||||
}
|
||||
|
||||
elem.innerHTML = html;
|
||||
imageLoader.lazyChildren(elem);
|
||||
}
|
||||
return function (view, params, tabContent) {
|
||||
|
||||
var self = this;
|
||||
var upcomingPromise;
|
||||
|
||||
self.preRender = function () {
|
||||
upcomingPromise = getUpcomingPromise();
|
||||
};
|
||||
|
||||
self.renderTab = function () {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
loadUpcoming(view, upcomingPromise);
|
||||
};
|
||||
};
|
||||
|
||||
});
|
||||
define(["datetime","cardBuilder","apphost","imageLoader","emby-itemscontainer","scrollStyles"],function(datetime,cardBuilder,appHost,imageLoader){"use strict";function getUpcomingPromise(){Dashboard.showLoadingMsg();var query={Limit:40,Fields:"AirTime,UserData",UserId:Dashboard.getCurrentUserId(),ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Banner,Thumb",EnableTotalRecordCount:!1};return ApiClient.getJSON(ApiClient.getUrl("Shows/Upcoming",query))}function loadUpcoming(page,promise){promise.then(function(result){var items=result.Items;items.length?page.querySelector(".noItemsMessage").style.display="none":page.querySelector(".noItemsMessage").style.display="block";var elem=page.querySelector("#upcomingItems");renderUpcoming(elem,items),Dashboard.hideLoadingMsg()})}function enableScrollX(){return browserInfo.mobile}function getThumbShape(){return enableScrollX()?"overflowBackdrop":"backdrop"}function renderUpcoming(elem,items){var i,length,groups=[],currentGroupName="",currentGroup=[];for(i=0,length=items.length;i<length;i++){var item=items[i],dateText="";if(item.PremiereDate)try{var premiereDate=datetime.parseISO8601Date(item.PremiereDate,!0);dateText=datetime.isRelativeDay(premiereDate,-1)?Globalize.translate("Yesterday"):LibraryBrowser.getFutureDateText(premiereDate,!0)}catch(err){}dateText!=currentGroupName?(currentGroup.length&&groups.push({name:currentGroupName,items:currentGroup}),currentGroupName=dateText,currentGroup=[item]):currentGroup.push(item)}var html="";for(i=0,length=groups.length;i<length;i++){var group=groups[i];html+='<div class="homePageSection">',html+='<h1 class="listHeader">'+group.name+"</h1>";var allowBottomPadding=!0;enableScrollX()?(allowBottomPadding=!1,html+='<div is="emby-itemscontainer" class="itemsContainer hiddenScrollX">'):html+='<div is="emby-itemscontainer" class="itemsContainer vertical-wrap">';var supportsImageAnalysis=appHost.supports("imageanalysis");html+=cardBuilder.getCardsHtml({items:group.items,showLocationTypeIndicator:!1,shape:getThumbShape(),showTitle:!0,preferThumb:!0,lazy:!0,showDetailsMenu:!0,centerText:!supportsImageAnalysis,context:"home-upcoming",overlayMoreButton:!supportsImageAnalysis,showParentTitle:!0,allowBottomPadding:allowBottomPadding,cardLayout:supportsImageAnalysis,vibrant:supportsImageAnalysis}),html+="</div>",html+="</div>"}elem.innerHTML=html,imageLoader.lazyChildren(elem)}return function(view,params,tabContent){var upcomingPromise,self=this;self.preRender=function(){upcomingPromise=getUpcomingPromise()},self.renderTab=function(){Dashboard.showLoadingMsg(),loadUpcoming(view,upcomingPromise)}}});
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,73 +1 @@
|
|||
define(['datetime', 'listView'], function (datetime, listView) {
|
||||
'use strict';
|
||||
|
||||
function isSameDay(date1, date2) {
|
||||
|
||||
return date1.toDateString() === date2.toDateString();
|
||||
}
|
||||
|
||||
function renderPrograms(page, result) {
|
||||
|
||||
var html = '';
|
||||
var currentItems = [];
|
||||
var currentStartDate = null;
|
||||
|
||||
for (var i = 0, length = result.Items.length; i < length; i++) {
|
||||
|
||||
var item = result.Items[i];
|
||||
|
||||
var itemStartDate = datetime.parseISO8601Date(item.StartDate);
|
||||
|
||||
if (!currentStartDate || !isSameDay(currentStartDate, itemStartDate)) {
|
||||
|
||||
if (currentItems.length) {
|
||||
|
||||
html += '<h1>' + datetime.toLocaleDateString(currentStartDate, { weekday: 'long', month: 'long', day: 'numeric' }) + '</h1>';
|
||||
|
||||
html += '<div is="emby-itemscontainer" class="vertical-list">' + listView.getListViewHtml({
|
||||
items: currentItems,
|
||||
enableUserDataButtons: false,
|
||||
showParentTitle: true,
|
||||
image: false,
|
||||
showProgramTime: true,
|
||||
mediaInfo: false,
|
||||
parentTitleWithTitle: true
|
||||
|
||||
}) + '</div>';
|
||||
}
|
||||
|
||||
currentStartDate = itemStartDate;
|
||||
currentItems = [];
|
||||
}
|
||||
|
||||
currentItems.push(item);
|
||||
}
|
||||
|
||||
page.querySelector('#childrenContent').innerHTML = html;
|
||||
}
|
||||
|
||||
function loadPrograms(page, channelId) {
|
||||
|
||||
ApiClient.getLiveTvPrograms({
|
||||
|
||||
ChannelIds: channelId,
|
||||
UserId: Dashboard.getCurrentUserId(),
|
||||
HasAired: false,
|
||||
SortBy: "StartDate",
|
||||
EnableTotalRecordCount: false,
|
||||
EnableImages: false,
|
||||
ImageTypeLimit: 0,
|
||||
EnableUserData: false
|
||||
|
||||
}).then(function (result) {
|
||||
|
||||
renderPrograms(page, result);
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
renderPrograms: loadPrograms
|
||||
};
|
||||
|
||||
});
|
||||
define(["datetime","listView"],function(datetime,listView){"use strict";function isSameDay(date1,date2){return date1.toDateString()===date2.toDateString()}function renderPrograms(page,result){for(var html="",currentItems=[],currentStartDate=null,i=0,length=result.Items.length;i<length;i++){var item=result.Items[i],itemStartDate=datetime.parseISO8601Date(item.StartDate);currentStartDate&&isSameDay(currentStartDate,itemStartDate)||(currentItems.length&&(html+="<h1>"+datetime.toLocaleDateString(currentStartDate,{weekday:"long",month:"long",day:"numeric"})+"</h1>",html+='<div is="emby-itemscontainer" class="vertical-list">'+listView.getListViewHtml({items:currentItems,enableUserDataButtons:!1,showParentTitle:!0,image:!1,showProgramTime:!0,mediaInfo:!1,parentTitleWithTitle:!0})+"</div>"),currentStartDate=itemStartDate,currentItems=[]),currentItems.push(item)}page.querySelector("#childrenContent").innerHTML=html}function loadPrograms(page,channelId){ApiClient.getLiveTvPrograms({ChannelIds:channelId,UserId:Dashboard.getCurrentUserId(),HasAired:!1,SortBy:"StartDate",EnableTotalRecordCount:!1,EnableImages:!1,ImageTypeLimit:0,EnableUserData:!1}).then(function(result){renderPrograms(page,result),Dashboard.hideLoadingMsg()})}return{renderPrograms:loadPrograms}});
|
|
@ -1,141 +1 @@
|
|||
define(['cardBuilder', 'imageLoader', 'emby-itemscontainer'], function (cardBuilder, imageLoader) {
|
||||
'use strict';
|
||||
|
||||
return function (view, params, tabContent) {
|
||||
|
||||
var self = this;
|
||||
var data = {};
|
||||
|
||||
function getPageData(context) {
|
||||
var key = getSavedQueryKey(context);
|
||||
var pageData = data[key];
|
||||
|
||||
if (!pageData) {
|
||||
pageData = data[key] = {
|
||||
query: {
|
||||
StartIndex: 0,
|
||||
Limit: LibraryBrowser.getDefaultPageSize(),
|
||||
Fields: "PrimaryImageAspectRatio"
|
||||
}
|
||||
};
|
||||
|
||||
LibraryBrowser.loadSavedQueryValues(key, pageData.query);
|
||||
}
|
||||
return pageData;
|
||||
}
|
||||
|
||||
function getQuery(context) {
|
||||
|
||||
return getPageData(context).query;
|
||||
}
|
||||
|
||||
function getSavedQueryKey(context) {
|
||||
|
||||
if (!context.savedQueryKey) {
|
||||
context.savedQueryKey = LibraryBrowser.getSavedQueryKey('channels');
|
||||
}
|
||||
return context.savedQueryKey;
|
||||
}
|
||||
|
||||
function getChannelsHtml(channels) {
|
||||
|
||||
return cardBuilder.getCardsHtml({
|
||||
items: channels,
|
||||
shape: "square",
|
||||
showTitle: true,
|
||||
lazy: true,
|
||||
cardLayout: true,
|
||||
showDetailsMenu: true,
|
||||
showCurrentProgram: true
|
||||
});
|
||||
}
|
||||
|
||||
function renderChannels(context, result) {
|
||||
|
||||
var query = getQuery(context);
|
||||
|
||||
context.querySelector('.paging').innerHTML = LibraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
totalRecordCount: result.TotalRecordCount,
|
||||
showLimit: false,
|
||||
updatePageSizeSetting: false,
|
||||
filterButton: false
|
||||
});
|
||||
|
||||
var html = getChannelsHtml(result.Items);
|
||||
|
||||
var elem = context.querySelector('#items');
|
||||
elem.innerHTML = html;
|
||||
imageLoader.lazyChildren(elem);
|
||||
|
||||
var i, length;
|
||||
var elems;
|
||||
|
||||
function onNextPageClick() {
|
||||
query.StartIndex += query.Limit;
|
||||
reloadItems(context);
|
||||
}
|
||||
|
||||
function onPreviousPageClick() {
|
||||
query.StartIndex -= query.Limit;
|
||||
reloadItems(context);
|
||||
}
|
||||
|
||||
elems = context.querySelectorAll('.btnNextPage');
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].addEventListener('click', onNextPageClick);
|
||||
}
|
||||
|
||||
elems = context.querySelectorAll('.btnPreviousPage');
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].addEventListener('click', onPreviousPageClick);
|
||||
}
|
||||
|
||||
LibraryBrowser.saveQueryValues(getSavedQueryKey(context), query);
|
||||
}
|
||||
|
||||
function showFilterMenu(context) {
|
||||
|
||||
require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
|
||||
|
||||
var filterDialog = new filterDialogFactory({
|
||||
query: getQuery(context),
|
||||
mode: 'livetvchannels'
|
||||
});
|
||||
|
||||
Events.on(filterDialog, 'filterchange', function () {
|
||||
reloadItems(context);
|
||||
});
|
||||
|
||||
filterDialog.show();
|
||||
});
|
||||
}
|
||||
|
||||
function reloadItems(context) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var query = getQuery(context);
|
||||
|
||||
query.UserId = Dashboard.getCurrentUserId();
|
||||
|
||||
ApiClient.getLiveTvChannels(query).then(function (result) {
|
||||
|
||||
renderChannels(context, result);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
tabContent.querySelector('.btnFilter').addEventListener('click', function () {
|
||||
showFilterMenu(tabContent);
|
||||
});
|
||||
|
||||
self.renderTab = function () {
|
||||
|
||||
reloadItems(tabContent);
|
||||
};
|
||||
};
|
||||
|
||||
});
|
||||
define(["cardBuilder","imageLoader","emby-itemscontainer"],function(cardBuilder,imageLoader){"use strict";return function(view,params,tabContent){function getPageData(context){var key=getSavedQueryKey(context),pageData=data[key];return pageData||(pageData=data[key]={query:{StartIndex:0,Limit:LibraryBrowser.getDefaultPageSize(),Fields:"PrimaryImageAspectRatio"}},LibraryBrowser.loadSavedQueryValues(key,pageData.query)),pageData}function getQuery(context){return getPageData(context).query}function getSavedQueryKey(context){return context.savedQueryKey||(context.savedQueryKey=LibraryBrowser.getSavedQueryKey("channels")),context.savedQueryKey}function getChannelsHtml(channels){return cardBuilder.getCardsHtml({items:channels,shape:"square",showTitle:!0,lazy:!0,cardLayout:!0,showDetailsMenu:!0,showCurrentProgram:!0})}function renderChannels(context,result){function onNextPageClick(){query.StartIndex+=query.Limit,reloadItems(context)}function onPreviousPageClick(){query.StartIndex-=query.Limit,reloadItems(context)}var query=getQuery(context);context.querySelector(".paging").innerHTML=LibraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1,updatePageSizeSetting:!1,filterButton:!1});var html=getChannelsHtml(result.Items),elem=context.querySelector("#items");elem.innerHTML=html,imageLoader.lazyChildren(elem);var i,length,elems;for(elems=context.querySelectorAll(".btnNextPage"),i=0,length=elems.length;i<length;i++)elems[i].addEventListener("click",onNextPageClick);for(elems=context.querySelectorAll(".btnPreviousPage"),i=0,length=elems.length;i<length;i++)elems[i].addEventListener("click",onPreviousPageClick);LibraryBrowser.saveQueryValues(getSavedQueryKey(context),query)}function showFilterMenu(context){require(["components/filterdialog/filterdialog"],function(filterDialogFactory){var filterDialog=new filterDialogFactory({query:getQuery(context),mode:"livetvchannels"});Events.on(filterDialog,"filterchange",function(){reloadItems(context)}),filterDialog.show()})}function reloadItems(context){Dashboard.showLoadingMsg();var query=getQuery(context);query.UserId=Dashboard.getCurrentUserId(),ApiClient.getLiveTvChannels(query).then(function(result){renderChannels(context,result),Dashboard.hideLoadingMsg()})}var self=this,data={};tabContent.querySelector(".btnFilter").addEventListener("click",function(){showFilterMenu(tabContent)}),self.renderTab=function(){reloadItems(tabContent)}}});
|
|
@ -1,120 +1 @@
|
|||
define(['datetime', 'cardBuilder', 'apphost'], function (datetime, cardBuilder, appHost) {
|
||||
'use strict';
|
||||
|
||||
function enableScrollX() {
|
||||
return browserInfo.mobile;
|
||||
}
|
||||
|
||||
function getBackdropShape() {
|
||||
return enableScrollX() ? 'overflowBackdrop' : 'backdrop';
|
||||
}
|
||||
|
||||
function getTimersHtml(timers, options) {
|
||||
|
||||
options = options || {};
|
||||
var items = timers.map(function (t) {
|
||||
t.Type = 'Timer';
|
||||
return t;
|
||||
});
|
||||
|
||||
var groups = [];
|
||||
|
||||
var currentGroupName = '';
|
||||
var currentGroup = [];
|
||||
|
||||
var i, length;
|
||||
|
||||
for (i = 0, length = items.length; i < length; i++) {
|
||||
|
||||
var item = items[i];
|
||||
|
||||
var dateText = '';
|
||||
|
||||
if (options.indexByDate !== false && item.StartDate) {
|
||||
try {
|
||||
|
||||
var premiereDate = datetime.parseISO8601Date(item.StartDate, true);
|
||||
|
||||
dateText = LibraryBrowser.getFutureDateText(premiereDate, true);
|
||||
|
||||
} catch (err) {
|
||||
}
|
||||
}
|
||||
|
||||
if (dateText != currentGroupName) {
|
||||
|
||||
if (currentGroup.length) {
|
||||
groups.push({
|
||||
name: currentGroupName,
|
||||
items: currentGroup
|
||||
});
|
||||
}
|
||||
|
||||
currentGroupName = dateText;
|
||||
currentGroup = [item];
|
||||
} else {
|
||||
currentGroup.push(item);
|
||||
}
|
||||
}
|
||||
|
||||
if (currentGroup.length) {
|
||||
groups.push({
|
||||
name: currentGroupName,
|
||||
items: currentGroup
|
||||
});
|
||||
}
|
||||
|
||||
var html = '';
|
||||
|
||||
for (i = 0, length = groups.length; i < length; i++) {
|
||||
|
||||
var group = groups[i];
|
||||
|
||||
if (group.name) {
|
||||
html += '<div class="homePageSection">';
|
||||
|
||||
html += '<h1 class="listHeader">' + group.name + '</h1>';
|
||||
}
|
||||
|
||||
if (enableScrollX()) {
|
||||
html += '<div is="emby-itemscontainer" class="itemsContainer hiddenScrollX">';
|
||||
} else {
|
||||
html += '<div is="emby-itemscontainer" class="itemsContainer vertical-wrap">';
|
||||
}
|
||||
|
||||
var supportsImageAnalysis = appHost.supports('imageanalysis');
|
||||
var cardLayout = appHost.preferVisualCards || supportsImageAnalysis;
|
||||
|
||||
html += cardBuilder.getCardsHtml({
|
||||
items: group.items,
|
||||
shape: getBackdropShape(),
|
||||
showParentTitleOrTitle: true,
|
||||
showAirTime: true,
|
||||
showAirEndTime: true,
|
||||
showChannelName: true,
|
||||
cardLayout: cardLayout,
|
||||
centerText: !cardLayout,
|
||||
vibrant: supportsImageAnalysis,
|
||||
action: 'edit',
|
||||
cardFooterAside: 'none',
|
||||
preferThumb: true,
|
||||
coverImage: true,
|
||||
overlayText: false
|
||||
|
||||
});
|
||||
html += '</div>';
|
||||
|
||||
if (group.name) {
|
||||
html += '</div>';
|
||||
}
|
||||
}
|
||||
|
||||
return Promise.resolve(html);
|
||||
}
|
||||
|
||||
window.LiveTvHelpers = {
|
||||
|
||||
getTimersHtml: getTimersHtml
|
||||
|
||||
};
|
||||
});
|
||||
define(["datetime","cardBuilder","apphost"],function(datetime,cardBuilder,appHost){"use strict";function enableScrollX(){return browserInfo.mobile}function getBackdropShape(){return enableScrollX()?"overflowBackdrop":"backdrop"}function getTimersHtml(timers,options){options=options||{};var i,length,items=timers.map(function(t){return t.Type="Timer",t}),groups=[],currentGroupName="",currentGroup=[];for(i=0,length=items.length;i<length;i++){var item=items[i],dateText="";if(options.indexByDate!==!1&&item.StartDate)try{var premiereDate=datetime.parseISO8601Date(item.StartDate,!0);dateText=LibraryBrowser.getFutureDateText(premiereDate,!0)}catch(err){}dateText!=currentGroupName?(currentGroup.length&&groups.push({name:currentGroupName,items:currentGroup}),currentGroupName=dateText,currentGroup=[item]):currentGroup.push(item)}currentGroup.length&&groups.push({name:currentGroupName,items:currentGroup});var html="";for(i=0,length=groups.length;i<length;i++){var group=groups[i];group.name&&(html+='<div class="homePageSection">',html+='<h1 class="listHeader">'+group.name+"</h1>"),html+=enableScrollX()?'<div is="emby-itemscontainer" class="itemsContainer hiddenScrollX">':'<div is="emby-itemscontainer" class="itemsContainer vertical-wrap">';var supportsImageAnalysis=appHost.supports("imageanalysis"),cardLayout=appHost.preferVisualCards||supportsImageAnalysis;html+=cardBuilder.getCardsHtml({items:group.items,shape:getBackdropShape(),showParentTitleOrTitle:!0,showAirTime:!0,showAirEndTime:!0,showChannelName:!0,cardLayout:cardLayout,centerText:!cardLayout,vibrant:supportsImageAnalysis,action:"edit",cardFooterAside:"none",preferThumb:!0,coverImage:!0,overlayText:!1}),html+="</div>",group.name&&(html+="</div>")}return Promise.resolve(html)}window.LiveTvHelpers={getTimersHtml:getTimersHtml}});
|
|
@ -1,26 +1 @@
|
|||
define(['tvguide'], function (tvguide) {
|
||||
'use strict';
|
||||
|
||||
return function (view, params, tabContent) {
|
||||
|
||||
var self = this;
|
||||
var guideInstance;
|
||||
self.renderTab = function () {
|
||||
if (!guideInstance) {
|
||||
guideInstance = new tvguide({
|
||||
element: tabContent
|
||||
});
|
||||
}
|
||||
};
|
||||
self.onShow = function () {
|
||||
if (guideInstance) {
|
||||
guideInstance.resume();
|
||||
}
|
||||
};
|
||||
self.onHide = function () {
|
||||
if (guideInstance) {
|
||||
guideInstance.pause();
|
||||
}
|
||||
};
|
||||
};
|
||||
});
|
||||
define(["tvguide"],function(tvguide){"use strict";return function(view,params,tabContent){var guideInstance,self=this;self.renderTab=function(){guideInstance||(guideInstance=new tvguide({element:tabContent}))},self.onShow=function(){guideInstance&&guideInstance.resume()},self.onHide=function(){guideInstance&&guideInstance.pause()}}});
|
|
@ -1,51 +1 @@
|
|||
define(['events'], function (events) {
|
||||
'use strict';
|
||||
|
||||
function onListingsSubmitted() {
|
||||
|
||||
Dashboard.navigate('livetvstatus.html');
|
||||
}
|
||||
|
||||
function init(page, type, providerId) {
|
||||
|
||||
var url = 'components/tvproviders/' + type + '.js';
|
||||
|
||||
require([url], function (factory) {
|
||||
|
||||
var instance = new factory(page, providerId, {
|
||||
});
|
||||
|
||||
events.on(instance, 'submitted', onListingsSubmitted);
|
||||
|
||||
instance.init();
|
||||
});
|
||||
}
|
||||
|
||||
function loadTemplate(page, type, providerId) {
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open('GET', 'components/tvproviders/' + type + '.template.html', true);
|
||||
|
||||
xhr.onload = function (e) {
|
||||
|
||||
var html = this.response;
|
||||
var elem = page.querySelector('.providerTemplate');
|
||||
elem.innerHTML = Globalize.translateDocument(html);
|
||||
|
||||
init(page, type, providerId);
|
||||
}
|
||||
|
||||
xhr.send();
|
||||
}
|
||||
|
||||
pageIdOn('pageshow', "liveTvGuideProviderPage", function () {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var providerId = getParameterByName('id');
|
||||
var type = getParameterByName('type');
|
||||
var page = this;
|
||||
loadTemplate(page, type, providerId);
|
||||
});
|
||||
|
||||
});
|
||||
define(["events"],function(events){"use strict";function onListingsSubmitted(){Dashboard.navigate("livetvstatus.html")}function init(page,type,providerId){var url="components/tvproviders/"+type+".js";require([url],function(factory){var instance=new factory(page,providerId,{});events.on(instance,"submitted",onListingsSubmitted),instance.init()})}function loadTemplate(page,type,providerId){var xhr=new XMLHttpRequest;xhr.open("GET","components/tvproviders/"+type+".template.html",!0),xhr.onload=function(e){var html=this.response,elem=page.querySelector(".providerTemplate");elem.innerHTML=Globalize.translateDocument(html),init(page,type,providerId)},xhr.send()}pageIdOn("pageshow","liveTvGuideProviderPage",function(){Dashboard.showLoadingMsg();var providerId=getParameterByName("id"),type=getParameterByName("type"),page=this;loadTemplate(page,type,providerId)})});
|
|
@ -1,187 +1 @@
|
|||
define(['cardBuilder', 'apphost', 'imageLoader', 'libraryBrowser', 'emby-itemscontainer'], function (cardBuilder, appHost, imageLoader, libraryBrowser) {
|
||||
'use strict';
|
||||
|
||||
return function (view, params) {
|
||||
|
||||
// The base query options
|
||||
var query = {
|
||||
UserId: Dashboard.getCurrentUserId(),
|
||||
StartIndex: 0,
|
||||
Fields: "ChannelInfo",
|
||||
Limit: libraryBrowser.getDefaultPageSize()
|
||||
};
|
||||
|
||||
if (params.type == 'Recordings') {
|
||||
query.IsInProgress = false;
|
||||
|
||||
if (params.groupid) {
|
||||
query.GroupId = params.groupid;
|
||||
}
|
||||
|
||||
} else if (params.type == 'RecordingSeries') {
|
||||
query.SortOrder = 'SortName';
|
||||
query.SortOrder = 'Ascending';
|
||||
} else {
|
||||
query.HasAired = false;
|
||||
query.SortBy = 'StartDate,SortName';
|
||||
query.SortOrder = 'Ascending';
|
||||
}
|
||||
|
||||
function getSavedQueryKey() {
|
||||
return libraryBrowser.getSavedQueryKey();
|
||||
}
|
||||
|
||||
function reloadItems(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var promise = params.type == 'Recordings' ?
|
||||
ApiClient.getLiveTvRecordings(query) :
|
||||
params.type == 'RecordingSeries' ?
|
||||
ApiClient.getLiveTvRecordingSeries(query) :
|
||||
params.IsAiring == 'true' ?
|
||||
ApiClient.getLiveTvRecommendedPrograms(query) :
|
||||
ApiClient.getLiveTvPrograms(query);
|
||||
|
||||
promise.then(function (result) {
|
||||
|
||||
// Scroll back up so they can see the results from the beginning
|
||||
window.scrollTo(0, 0);
|
||||
|
||||
var html = '';
|
||||
var pagingHtml = libraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
totalRecordCount: result.TotalRecordCount,
|
||||
showLimit: false
|
||||
});
|
||||
|
||||
page.querySelector('.listTopPaging').innerHTML = pagingHtml;
|
||||
|
||||
var supportsImageAnalysis = appHost.supports('imageanalysis') && (params.type == 'Recordings' || params.type == 'RecordingSeries');
|
||||
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: query.IsMovie || params.type == 'RecordingSeries' ? 'portrait' : "backdrop",
|
||||
preferThumb: !query.IsMovie && params.type != 'RecordingSeries',
|
||||
inheritThumb: params.type == 'Recordings',
|
||||
context: 'livetv',
|
||||
centerText: !supportsImageAnalysis,
|
||||
lazy: true,
|
||||
overlayText: false,
|
||||
showParentTitleOrTitle: true,
|
||||
showTitle: false,
|
||||
showParentTitle: query.IsSeries !== false && !query.IsMovie,
|
||||
showAirTime: params.type != 'Recordings' && params.type != 'RecordingSeries',
|
||||
showAirDateTime: params.type != 'Recordings' && params.type != 'RecordingSeries',
|
||||
showChannelName: params.type != 'Recordings' && params.type != 'RecordingSeries',
|
||||
overlayMoreButton: !supportsImageAnalysis,
|
||||
showYear: query.IsMovie && params.type == 'Recordings',
|
||||
showSeriesYear: params.type === 'RecordingSeries',
|
||||
coverImage: true,
|
||||
cardLayout: supportsImageAnalysis,
|
||||
vibrant: supportsImageAnalysis
|
||||
});
|
||||
|
||||
var elem = page.querySelector('.itemsContainer');
|
||||
elem.innerHTML = html + pagingHtml;
|
||||
imageLoader.lazyChildren(elem);
|
||||
|
||||
var i, length;
|
||||
var elems;
|
||||
|
||||
function onNextPageClick() {
|
||||
query.StartIndex += query.Limit;
|
||||
reloadItems(page);
|
||||
}
|
||||
|
||||
function onPreviousPageClick() {
|
||||
query.StartIndex -= query.Limit;
|
||||
reloadItems(page);
|
||||
}
|
||||
|
||||
elems = page.querySelectorAll('.btnNextPage');
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].addEventListener('click', onNextPageClick);
|
||||
}
|
||||
|
||||
elems = page.querySelectorAll('.btnPreviousPage');
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].addEventListener('click', onPreviousPageClick);
|
||||
}
|
||||
|
||||
libraryBrowser.saveQueryValues(getSavedQueryKey(), query);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
view.addEventListener('viewbeforeshow', function () {
|
||||
|
||||
query.ParentId = LibraryMenu.getTopParentId();
|
||||
|
||||
var page = this;
|
||||
|
||||
if (params.IsMovie == 'true') {
|
||||
query.IsMovie = true;
|
||||
}
|
||||
else if (params.IsMovie == 'false') {
|
||||
query.IsMovie = false;
|
||||
}
|
||||
if (params.IsSports == 'true') {
|
||||
query.IsSports = true;
|
||||
}
|
||||
else if (params.IsSports == 'false') {
|
||||
query.IsSports = false;
|
||||
}
|
||||
if (params.IsKids == 'true') {
|
||||
query.IsKids = true;
|
||||
}
|
||||
else if (params.IsKids == 'false') {
|
||||
query.IsKids = false;
|
||||
}
|
||||
if (params.IsAiring == 'true') {
|
||||
query.IsAiring = true;
|
||||
}
|
||||
else if (params.IsAiring == 'false') {
|
||||
query.IsAiring = false;
|
||||
}
|
||||
|
||||
if (params.type == 'Recordings') {
|
||||
|
||||
if (params.IsMovie == 'true') {
|
||||
LibraryMenu.setTitle(Globalize.translate('TabMovies'));
|
||||
} else if (params.IsSports == 'true') {
|
||||
LibraryMenu.setTitle(Globalize.translate('Sports'));
|
||||
} else if (params.IsKids == 'true') {
|
||||
LibraryMenu.setTitle(Globalize.translate('HeaderForKids'));
|
||||
} else {
|
||||
LibraryMenu.setTitle(Globalize.translate('TabRecordings'));
|
||||
}
|
||||
|
||||
} else if (params.type == 'RecordingSeries') {
|
||||
|
||||
LibraryMenu.setTitle(Globalize.translate('TabSeries'));
|
||||
} else {
|
||||
|
||||
if (params.IsMovie == 'true') {
|
||||
LibraryMenu.setTitle(Globalize.translate('HeaderUpcomingMovies'));
|
||||
} else if (params.IsSports == 'true') {
|
||||
LibraryMenu.setTitle(Globalize.translate('HeaderUpcomingSports'));
|
||||
} else if (params.IsKids == 'true') {
|
||||
LibraryMenu.setTitle(Globalize.translate('HeaderUpcomingForKids'));
|
||||
} else if (params.IsAiring == 'true') {
|
||||
LibraryMenu.setTitle(Globalize.translate('HeaderWhatsOnTV'));
|
||||
} else {
|
||||
LibraryMenu.setTitle(Globalize.translate('HeaderUpcomingPrograms'));
|
||||
}
|
||||
}
|
||||
|
||||
var viewkey = getSavedQueryKey();
|
||||
|
||||
libraryBrowser.loadSavedQueryValues(viewkey, query);
|
||||
|
||||
reloadItems(page);
|
||||
});
|
||||
};
|
||||
});
|
||||
define(["cardBuilder","apphost","imageLoader","libraryBrowser","emby-itemscontainer"],function(cardBuilder,appHost,imageLoader,libraryBrowser){"use strict";return function(view,params){function getSavedQueryKey(){return libraryBrowser.getSavedQueryKey()}function reloadItems(page){Dashboard.showLoadingMsg();var promise="Recordings"==params.type?ApiClient.getLiveTvRecordings(query):"RecordingSeries"==params.type?ApiClient.getLiveTvRecordingSeries(query):"true"==params.IsAiring?ApiClient.getLiveTvRecommendedPrograms(query):ApiClient.getLiveTvPrograms(query);promise.then(function(result){function onNextPageClick(){query.StartIndex+=query.Limit,reloadItems(page)}function onPreviousPageClick(){query.StartIndex-=query.Limit,reloadItems(page)}window.scrollTo(0,0);var html="",pagingHtml=libraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1});page.querySelector(".listTopPaging").innerHTML=pagingHtml;var supportsImageAnalysis=appHost.supports("imageanalysis")&&("Recordings"==params.type||"RecordingSeries"==params.type);html=cardBuilder.getCardsHtml({items:result.Items,shape:query.IsMovie||"RecordingSeries"==params.type?"portrait":"backdrop",preferThumb:!query.IsMovie&&"RecordingSeries"!=params.type,inheritThumb:"Recordings"==params.type,context:"livetv",centerText:!supportsImageAnalysis,lazy:!0,overlayText:!1,showParentTitleOrTitle:!0,showTitle:!1,showParentTitle:query.IsSeries!==!1&&!query.IsMovie,showAirTime:"Recordings"!=params.type&&"RecordingSeries"!=params.type,showAirDateTime:"Recordings"!=params.type&&"RecordingSeries"!=params.type,showChannelName:"Recordings"!=params.type&&"RecordingSeries"!=params.type,overlayMoreButton:!supportsImageAnalysis,showYear:query.IsMovie&&"Recordings"==params.type,showSeriesYear:"RecordingSeries"===params.type,coverImage:!0,cardLayout:supportsImageAnalysis,vibrant:supportsImageAnalysis});var elem=page.querySelector(".itemsContainer");elem.innerHTML=html+pagingHtml,imageLoader.lazyChildren(elem);var i,length,elems;for(elems=page.querySelectorAll(".btnNextPage"),i=0,length=elems.length;i<length;i++)elems[i].addEventListener("click",onNextPageClick);for(elems=page.querySelectorAll(".btnPreviousPage"),i=0,length=elems.length;i<length;i++)elems[i].addEventListener("click",onPreviousPageClick);libraryBrowser.saveQueryValues(getSavedQueryKey(),query),Dashboard.hideLoadingMsg()})}var query={UserId:Dashboard.getCurrentUserId(),StartIndex:0,Fields:"ChannelInfo",Limit:libraryBrowser.getDefaultPageSize()};"Recordings"==params.type?(query.IsInProgress=!1,params.groupid&&(query.GroupId=params.groupid)):"RecordingSeries"==params.type?(query.SortOrder="SortName",query.SortOrder="Ascending"):(query.HasAired=!1,query.SortBy="StartDate,SortName",query.SortOrder="Ascending"),view.addEventListener("viewbeforeshow",function(){query.ParentId=LibraryMenu.getTopParentId();var page=this;"true"==params.IsMovie?query.IsMovie=!0:"false"==params.IsMovie&&(query.IsMovie=!1),"true"==params.IsSports?query.IsSports=!0:"false"==params.IsSports&&(query.IsSports=!1),"true"==params.IsKids?query.IsKids=!0:"false"==params.IsKids&&(query.IsKids=!1),"true"==params.IsAiring?query.IsAiring=!0:"false"==params.IsAiring&&(query.IsAiring=!1),"Recordings"==params.type?"true"==params.IsMovie?LibraryMenu.setTitle(Globalize.translate("TabMovies")):"true"==params.IsSports?LibraryMenu.setTitle(Globalize.translate("Sports")):"true"==params.IsKids?LibraryMenu.setTitle(Globalize.translate("HeaderForKids")):LibraryMenu.setTitle(Globalize.translate("TabRecordings")):"RecordingSeries"==params.type?LibraryMenu.setTitle(Globalize.translate("TabSeries")):"true"==params.IsMovie?LibraryMenu.setTitle(Globalize.translate("HeaderUpcomingMovies")):"true"==params.IsSports?LibraryMenu.setTitle(Globalize.translate("HeaderUpcomingSports")):"true"==params.IsKids?LibraryMenu.setTitle(Globalize.translate("HeaderUpcomingForKids")):"true"==params.IsAiring?LibraryMenu.setTitle(Globalize.translate("HeaderWhatsOnTV")):LibraryMenu.setTitle(Globalize.translate("HeaderUpcomingPrograms"));var viewkey=getSavedQueryKey();libraryBrowser.loadSavedQueryValues(viewkey,query),reloadItems(page)})}});
|
File diff suppressed because one or more lines are too long
|
@ -1,135 +1 @@
|
|||
define(['cardBuilder', 'apphost', 'imageLoader', 'scripts/livetvcomponents', 'emby-button', 'emby-itemscontainer'], function (cardBuilder, appHost, imageLoader) {
|
||||
'use strict';
|
||||
|
||||
function enableScrollX() {
|
||||
return browserInfo.mobile;
|
||||
}
|
||||
|
||||
function renderRecordings(elem, recordings, cardOptions) {
|
||||
|
||||
if (recordings.length) {
|
||||
elem.classList.remove('hide');
|
||||
} else {
|
||||
elem.classList.add('hide');
|
||||
}
|
||||
|
||||
var recordingItems = elem.querySelector('.recordingItems');
|
||||
|
||||
if (enableScrollX()) {
|
||||
recordingItems.classList.add('hiddenScrollX');
|
||||
recordingItems.classList.remove('vertical-wrap');
|
||||
} else {
|
||||
recordingItems.classList.remove('hiddenScrollX');
|
||||
recordingItems.classList.add('vertical-wrap');
|
||||
}
|
||||
|
||||
var supportsImageAnalysis = appHost.supports('imageanalysis');
|
||||
var cardLayout = appHost.preferVisualCards || supportsImageAnalysis;
|
||||
|
||||
recordingItems.innerHTML = cardBuilder.getCardsHtml(Object.assign({
|
||||
items: recordings,
|
||||
shape: (enableScrollX() ? 'autooverflow' : 'auto'),
|
||||
showTitle: true,
|
||||
showParentTitle: true,
|
||||
coverImage: true,
|
||||
cardLayout: cardLayout,
|
||||
centerText: !cardLayout,
|
||||
vibrant: supportsImageAnalysis,
|
||||
allowBottomPadding: !enableScrollX(),
|
||||
preferThumb: 'auto'
|
||||
|
||||
}, cardOptions || {}));
|
||||
|
||||
imageLoader.lazyChildren(recordingItems);
|
||||
}
|
||||
|
||||
function getBackdropShape() {
|
||||
return enableScrollX() ? 'overflowBackdrop' : 'backdrop';
|
||||
}
|
||||
|
||||
function renderActiveRecordings(context, promise) {
|
||||
|
||||
promise.then(function (result) {
|
||||
|
||||
// The IsActive param is new, so handle older servers that don't support it
|
||||
if (result.Items.length && result.Items[0].Status != 'InProgress') {
|
||||
result.Items = [];
|
||||
}
|
||||
|
||||
renderRecordings(context.querySelector('#activeRecordings'), result.Items, {
|
||||
shape: getBackdropShape(),
|
||||
showParentTitle: false,
|
||||
showTitle: true,
|
||||
showAirTime: true,
|
||||
showAirEndTime: true,
|
||||
showChannelName: true,
|
||||
preferThumb: true,
|
||||
coverImage: true,
|
||||
overlayText: false
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function renderTimers(context, timers, options) {
|
||||
|
||||
LiveTvHelpers.getTimersHtml(timers, options).then(function (html) {
|
||||
|
||||
var elem = context;
|
||||
|
||||
if (html) {
|
||||
elem.classList.remove('hide');
|
||||
} else {
|
||||
elem.classList.add('hide');
|
||||
}
|
||||
|
||||
elem.querySelector('.recordingItems').innerHTML = html;
|
||||
|
||||
imageLoader.lazyChildren(elem);
|
||||
});
|
||||
}
|
||||
|
||||
function renderUpcomingRecordings(context, promise) {
|
||||
|
||||
promise.then(function (result) {
|
||||
|
||||
renderTimers(context.querySelector('#upcomingRecordings'), result.Items);
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
return function (view, params, tabContent) {
|
||||
|
||||
var self = this;
|
||||
var activeRecordingsPromise;
|
||||
var upcomingRecordingsPromise;
|
||||
|
||||
tabContent.querySelector('#upcomingRecordings .recordingItems').addEventListener('timercancelled', function () {
|
||||
self.preRender();
|
||||
self.renderTab();
|
||||
});
|
||||
|
||||
self.preRender = function () {
|
||||
activeRecordingsPromise = ApiClient.getLiveTvRecordings({
|
||||
|
||||
UserId: Dashboard.getCurrentUserId(),
|
||||
IsInProgress: true,
|
||||
Fields: 'CanDelete,PrimaryImageAspectRatio,BasicSyncInfo',
|
||||
EnableTotalRecordCount: false,
|
||||
EnableImageTypes: "Primary,Thumb,Backdrop"
|
||||
});
|
||||
|
||||
upcomingRecordingsPromise = ApiClient.getLiveTvTimers({
|
||||
IsActive: false,
|
||||
IsScheduled: true
|
||||
});
|
||||
};
|
||||
|
||||
self.renderTab = function () {
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
renderActiveRecordings(tabContent, activeRecordingsPromise);
|
||||
renderUpcomingRecordings(tabContent, upcomingRecordingsPromise);
|
||||
};
|
||||
};
|
||||
|
||||
});
|
||||
define(["cardBuilder","apphost","imageLoader","scripts/livetvcomponents","emby-button","emby-itemscontainer"],function(cardBuilder,appHost,imageLoader){"use strict";function enableScrollX(){return browserInfo.mobile}function renderRecordings(elem,recordings,cardOptions){recordings.length?elem.classList.remove("hide"):elem.classList.add("hide");var recordingItems=elem.querySelector(".recordingItems");enableScrollX()?(recordingItems.classList.add("hiddenScrollX"),recordingItems.classList.remove("vertical-wrap")):(recordingItems.classList.remove("hiddenScrollX"),recordingItems.classList.add("vertical-wrap"));var supportsImageAnalysis=appHost.supports("imageanalysis"),cardLayout=appHost.preferVisualCards||supportsImageAnalysis;recordingItems.innerHTML=cardBuilder.getCardsHtml(Object.assign({items:recordings,shape:enableScrollX()?"autooverflow":"auto",showTitle:!0,showParentTitle:!0,coverImage:!0,cardLayout:cardLayout,centerText:!cardLayout,vibrant:supportsImageAnalysis,allowBottomPadding:!enableScrollX(),preferThumb:"auto"},cardOptions||{})),imageLoader.lazyChildren(recordingItems)}function getBackdropShape(){return enableScrollX()?"overflowBackdrop":"backdrop"}function renderActiveRecordings(context,promise){promise.then(function(result){result.Items.length&&"InProgress"!=result.Items[0].Status&&(result.Items=[]),renderRecordings(context.querySelector("#activeRecordings"),result.Items,{shape:getBackdropShape(),showParentTitle:!1,showTitle:!0,showAirTime:!0,showAirEndTime:!0,showChannelName:!0,preferThumb:!0,coverImage:!0,overlayText:!1})})}function renderTimers(context,timers,options){LiveTvHelpers.getTimersHtml(timers,options).then(function(html){var elem=context;html?elem.classList.remove("hide"):elem.classList.add("hide"),elem.querySelector(".recordingItems").innerHTML=html,imageLoader.lazyChildren(elem)})}function renderUpcomingRecordings(context,promise){promise.then(function(result){renderTimers(context.querySelector("#upcomingRecordings"),result.Items),Dashboard.hideLoadingMsg()})}return function(view,params,tabContent){var activeRecordingsPromise,upcomingRecordingsPromise,self=this;tabContent.querySelector("#upcomingRecordings .recordingItems").addEventListener("timercancelled",function(){self.preRender(),self.renderTab()}),self.preRender=function(){activeRecordingsPromise=ApiClient.getLiveTvRecordings({UserId:Dashboard.getCurrentUserId(),IsInProgress:!0,Fields:"CanDelete,PrimaryImageAspectRatio,BasicSyncInfo",EnableTotalRecordCount:!1,EnableImageTypes:"Primary,Thumb,Backdrop"}),upcomingRecordingsPromise=ApiClient.getLiveTvTimers({IsActive:!1,IsScheduled:!0})},self.renderTab=function(){Dashboard.showLoadingMsg(),renderActiveRecordings(tabContent,activeRecordingsPromise),renderUpcomingRecordings(tabContent,upcomingRecordingsPromise)}}});
|
|
@ -1,63 +1 @@
|
|||
define(['datetime', 'cardBuilder', 'imageLoader', 'apphost', 'paper-icon-button-light', 'emby-button'], function (datetime, cardBuilder, imageLoader, appHost) {
|
||||
'use strict';
|
||||
|
||||
var query = {
|
||||
|
||||
SortBy: "SortName",
|
||||
SortOrder: "Ascending"
|
||||
};
|
||||
|
||||
function renderTimers(context, timers) {
|
||||
|
||||
var html = '';
|
||||
|
||||
var supportsImageAnalysis = appHost.supports('imageanalysis');
|
||||
var cardLayout = appHost.preferVisualCards || supportsImageAnalysis;
|
||||
|
||||
html += cardBuilder.getCardsHtml({
|
||||
items: timers,
|
||||
shape: 'backdrop',
|
||||
showTitle: true,
|
||||
cardLayout: cardLayout,
|
||||
vibrant: supportsImageAnalysis,
|
||||
preferThumb: true,
|
||||
coverImage: true,
|
||||
overlayText: false,
|
||||
showSeriesTimerTime: true,
|
||||
showSeriesTimerChannel: true,
|
||||
centerText: !cardLayout,
|
||||
overlayMoreButton: !cardLayout
|
||||
});
|
||||
|
||||
var elem = context.querySelector('#items');
|
||||
elem.innerHTML = html;
|
||||
|
||||
imageLoader.lazyChildren(elem);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
}
|
||||
|
||||
function reload(context, promise) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
promise.then(function (result) {
|
||||
|
||||
renderTimers(context, result.Items);
|
||||
});
|
||||
}
|
||||
|
||||
return function (view, params, tabContent) {
|
||||
|
||||
var self = this;
|
||||
var timersPromise;
self.preRender = function () {
|
||||
timersPromise = ApiClient.getLiveTvSeriesTimers(query);
|
||||
};
|
||||
|
||||
self.renderTab = function () {
|
||||
|
||||
reload(tabContent, timersPromise);
|
||||
};
|
||||
};
|
||||
|
||||
});
|
||||
define(["datetime","cardBuilder","imageLoader","apphost","paper-icon-button-light","emby-button"],function(datetime,cardBuilder,imageLoader,appHost){"use strict";function renderTimers(context,timers){var html="",supportsImageAnalysis=appHost.supports("imageanalysis"),cardLayout=appHost.preferVisualCards||supportsImageAnalysis;html+=cardBuilder.getCardsHtml({items:timers,shape:"backdrop",showTitle:!0,cardLayout:cardLayout,vibrant:supportsImageAnalysis,preferThumb:!0,coverImage:!0,overlayText:!1,showSeriesTimerTime:!0,showSeriesTimerChannel:!0,centerText:!cardLayout,overlayMoreButton:!cardLayout});var elem=context.querySelector("#items");elem.innerHTML=html,imageLoader.lazyChildren(elem),Dashboard.hideLoadingMsg()}function reload(context,promise){Dashboard.showLoadingMsg(),promise.then(function(result){renderTimers(context,result.Items)})}var query={SortBy:"SortName",SortOrder:"Ascending"};return function(view,params,tabContent){var timersPromise,self=this;self.preRender=function(){timersPromise=ApiClient.getLiveTvSeriesTimers(query)},self.renderTab=function(){reload(tabContent,timersPromise)}}});
|
|
@ -1,208 +1 @@
|
|||
define(['jQuery', 'fnchecked'], function ($) {
|
||||
'use strict';
|
||||
|
||||
function loadPage(page, config) {
|
||||
|
||||
$('.liveTvSettingsForm', page).show();
|
||||
$('.noLiveTvServices', page).hide();
|
||||
|
||||
$('#selectGuideDays', page).val(config.GuideDays || '');
|
||||
|
||||
$('#chkMovies', page).checked(config.EnableMovieProviders);
|
||||
$('#chkConvertRecordings', page).checked(config.EnableRecordingEncoding);
|
||||
$('#chkPreserveAudio', page).checked(config.EnableOriginalAudioWithEncodedRecordings || false);
|
||||
$('#chkPreserveVideo', page).checked(config.RecordedVideoCodec == 'copy');
|
||||
|
||||
$('#txtPrePaddingMinutes', page).val(config.PrePaddingSeconds / 60);
|
||||
$('#txtPostPaddingMinutes', page).val(config.PostPaddingSeconds / 60);
|
||||
|
||||
page.querySelector('#txtRecordingPath').value = config.RecordingPath || '';
|
||||
page.querySelector('#txtMovieRecordingPath').value = config.MovieRecordingPath || '';
|
||||
page.querySelector('#txtSeriesRecordingPath').value = config.SeriesRecordingPath || '';
|
||||
page.querySelector('#selectConversionFormat').value = config.RecordingEncodingFormat || '';
|
||||
|
||||
page.querySelector('#txtPostProcessor').value = config.RecordingPostProcessor || '';
|
||||
page.querySelector('#txtPostProcessorArguments').value = config.RecordingPostProcessorArguments || '';
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
}
|
||||
|
||||
function onSubmit() {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var form = this;
|
||||
|
||||
ApiClient.getNamedConfiguration("livetv").then(function (config) {
|
||||
|
||||
config.GuideDays = $('#selectGuideDays', form).val() || null;
|
||||
config.EnableMovieProviders = $('#chkMovies', form).checked();
|
||||
config.EnableRecordingEncoding = $('#chkConvertRecordings', form).checked();
|
||||
config.EnableOriginalAudioWithEncodedRecordings = $('#chkPreserveAudio', form).checked();
|
||||
config.RecordedVideoCodec = $('#chkPreserveVideo', form).checked() ? 'copy' : null;
|
||||
|
||||
var recordingPath = form.querySelector('#txtRecordingPath').value || null;
|
||||
var movieRecordingPath = form.querySelector('#txtMovieRecordingPath').value || null;
|
||||
var seriesRecordingPath = form.querySelector('#txtSeriesRecordingPath').value || null;
|
||||
|
||||
var recordingPathChanged = recordingPath != config.RecordingPath ||
|
||||
movieRecordingPath != config.MovieRecordingPath ||
|
||||
seriesRecordingPath != config.SeriesRecordingPath;
|
||||
|
||||
config.RecordingPath = recordingPath;
|
||||
config.MovieRecordingPath = movieRecordingPath;
|
||||
config.SeriesRecordingPath = seriesRecordingPath;
|
||||
|
||||
config.RecordingEncodingFormat = form.querySelector('#selectConversionFormat').value;
|
||||
config.PrePaddingSeconds = $('#txtPrePaddingMinutes', form).val() * 60;
|
||||
config.PostPaddingSeconds = $('#txtPostPaddingMinutes', form).val() * 60;
|
||||
|
||||
config.RecordingPostProcessor = $('#txtPostProcessor', form).val();
|
||||
config.RecordingPostProcessorArguments = $('#txtPostProcessorArguments', form).val();
|
||||
|
||||
ApiClient.updateNamedConfiguration("livetv", config).then(function () {
|
||||
Dashboard.processServerConfigurationUpdateResult();
|
||||
|
||||
showSaveMessage(recordingPathChanged);
|
||||
});
|
||||
});
|
||||
|
||||
// Disable default form submission
|
||||
return false;
|
||||
}
|
||||
|
||||
function showSaveMessage(recordingPathChanged) {
|
||||
|
||||
var msg = '';
|
||||
|
||||
if (recordingPathChanged) {
|
||||
msg += Globalize.translate('RecordingPathChangeMessage');
|
||||
}
|
||||
|
||||
if (msg) {
|
||||
require(['alert'], function (alert) {
|
||||
alert(msg);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function getTabs() {
|
||||
return [
|
||||
{
|
||||
href: 'livetvstatus.html',
|
||||
name: Globalize.translate('TabDevices')
|
||||
},
|
||||
{
|
||||
href: 'livetvsettings.html',
|
||||
name: Globalize.translate('TabSettings')
|
||||
},
|
||||
{
|
||||
href: 'appservices.html?context=livetv',
|
||||
name: Globalize.translate('TabServices')
|
||||
}];
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#liveTvSettingsPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
$('.liveTvSettingsForm').off('submit', onSubmit).on('submit', onSubmit);
|
||||
|
||||
$('#btnSelectRecordingPath', page).on("click.selectDirectory", function () {
|
||||
|
||||
require(['directorybrowser'], function (directoryBrowser) {
|
||||
|
||||
var picker = new directoryBrowser();
|
||||
|
||||
picker.show({
|
||||
|
||||
callback: function (path) {
|
||||
|
||||
if (path) {
|
||||
$('#txtRecordingPath', page).val(path);
|
||||
}
|
||||
picker.close();
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
$('#btnSelectMovieRecordingPath', page).on("click.selectDirectory", function () {
|
||||
|
||||
require(['directorybrowser'], function (directoryBrowser) {
|
||||
|
||||
var picker = new directoryBrowser();
|
||||
|
||||
picker.show({
|
||||
|
||||
callback: function (path) {
|
||||
|
||||
if (path) {
|
||||
$('#txtMovieRecordingPath', page).val(path);
|
||||
}
|
||||
picker.close();
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
$('#btnSelectSeriesRecordingPath', page).on("click.selectDirectory", function () {
|
||||
|
||||
require(['directorybrowser'], function (directoryBrowser) {
|
||||
|
||||
var picker = new directoryBrowser();
|
||||
|
||||
picker.show({
|
||||
|
||||
callback: function (path) {
|
||||
|
||||
if (path) {
|
||||
$('#txtSeriesRecordingPath', page).val(path);
|
||||
}
|
||||
picker.close();
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
$('#btnSelectPostProcessorPath', page).on("click.selectDirectory", function () {
|
||||
|
||||
require(['directorybrowser'], function (directoryBrowser) {
|
||||
|
||||
var picker = new directoryBrowser();
|
||||
|
||||
picker.show({
|
||||
|
||||
includeFiles: true,
|
||||
callback: function (path) {
|
||||
|
||||
if (path) {
|
||||
$('#txtPostProcessor', page).val(path);
|
||||
}
|
||||
picker.close();
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
}).on('pageshow', "#liveTvSettingsPage", function () {
|
||||
|
||||
LibraryMenu.setTabs('livetvadmin', 1, getTabs);
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var page = this;
|
||||
|
||||
ApiClient.getNamedConfiguration("livetv").then(function (config) {
|
||||
|
||||
loadPage(page, config);
|
||||
});
|
||||
|
||||
if (AppInfo.enableSupporterMembership) {
|
||||
page.querySelector('.btnSupporterForConverting a').href = 'https://emby.media/premiere';
|
||||
} else {
|
||||
page.querySelector('.btnSupporterForConverting a').href = '#';
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
define(["jQuery","fnchecked"],function($){"use strict";function loadPage(page,config){$(".liveTvSettingsForm",page).show(),$(".noLiveTvServices",page).hide(),$("#selectGuideDays",page).val(config.GuideDays||""),$("#chkMovies",page).checked(config.EnableMovieProviders),$("#chkConvertRecordings",page).checked(config.EnableRecordingEncoding),$("#chkPreserveAudio",page).checked(config.EnableOriginalAudioWithEncodedRecordings||!1),$("#chkPreserveVideo",page).checked("copy"==config.RecordedVideoCodec),$("#txtPrePaddingMinutes",page).val(config.PrePaddingSeconds/60),$("#txtPostPaddingMinutes",page).val(config.PostPaddingSeconds/60),page.querySelector("#txtRecordingPath").value=config.RecordingPath||"",page.querySelector("#txtMovieRecordingPath").value=config.MovieRecordingPath||"",page.querySelector("#txtSeriesRecordingPath").value=config.SeriesRecordingPath||"",page.querySelector("#selectConversionFormat").value=config.RecordingEncodingFormat||"",page.querySelector("#txtPostProcessor").value=config.RecordingPostProcessor||"",page.querySelector("#txtPostProcessorArguments").value=config.RecordingPostProcessorArguments||"",Dashboard.hideLoadingMsg()}function onSubmit(){Dashboard.showLoadingMsg();var form=this;return ApiClient.getNamedConfiguration("livetv").then(function(config){config.GuideDays=$("#selectGuideDays",form).val()||null,config.EnableMovieProviders=$("#chkMovies",form).checked(),config.EnableRecordingEncoding=$("#chkConvertRecordings",form).checked(),config.EnableOriginalAudioWithEncodedRecordings=$("#chkPreserveAudio",form).checked(),config.RecordedVideoCodec=$("#chkPreserveVideo",form).checked()?"copy":null;var recordingPath=form.querySelector("#txtRecordingPath").value||null,movieRecordingPath=form.querySelector("#txtMovieRecordingPath").value||null,seriesRecordingPath=form.querySelector("#txtSeriesRecordingPath").value||null,recordingPathChanged=recordingPath!=config.RecordingPath||movieRecordingPath!=config.MovieRecordingPath||seriesRecordingPath!=config.SeriesRecordingPath;config.RecordingPath=recordingPath,config.MovieRecordingPath=movieRecordingPath,config.SeriesRecordingPath=seriesRecordingPath,config.RecordingEncodingFormat=form.querySelector("#selectConversionFormat").value,config.PrePaddingSeconds=60*$("#txtPrePaddingMinutes",form).val(),config.PostPaddingSeconds=60*$("#txtPostPaddingMinutes",form).val(),config.RecordingPostProcessor=$("#txtPostProcessor",form).val(),config.RecordingPostProcessorArguments=$("#txtPostProcessorArguments",form).val(),ApiClient.updateNamedConfiguration("livetv",config).then(function(){Dashboard.processServerConfigurationUpdateResult(),showSaveMessage(recordingPathChanged)})}),!1}function showSaveMessage(recordingPathChanged){var msg="";recordingPathChanged&&(msg+=Globalize.translate("RecordingPathChangeMessage")),msg&&require(["alert"],function(alert){alert(msg)})}function getTabs(){return[{href:"livetvstatus.html",name:Globalize.translate("TabDevices")},{href:"livetvsettings.html",name:Globalize.translate("TabSettings")},{href:"appservices.html?context=livetv",name:Globalize.translate("TabServices")}]}$(document).on("pageinit","#liveTvSettingsPage",function(){var page=this;$(".liveTvSettingsForm").off("submit",onSubmit).on("submit",onSubmit),$("#btnSelectRecordingPath",page).on("click.selectDirectory",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({callback:function(path){path&&$("#txtRecordingPath",page).val(path),picker.close()}})})}),$("#btnSelectMovieRecordingPath",page).on("click.selectDirectory",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({callback:function(path){path&&$("#txtMovieRecordingPath",page).val(path),picker.close()}})})}),$("#btnSelectSeriesRecordingPath",page).on("click.selectDirectory",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({callback:function(path){path&&$("#txtSeriesRecordingPath",page).val(path),picker.close()}})})}),$("#btnSelectPostProcessorPath",page).on("click.selectDirectory",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({includeFiles:!0,callback:function(path){path&&$("#txtPostProcessor",page).val(path),picker.close()}})})})}).on("pageshow","#liveTvSettingsPage",function(){LibraryMenu.setTabs("livetvadmin",1,getTabs),Dashboard.showLoadingMsg();var page=this;ApiClient.getNamedConfiguration("livetv").then(function(config){loadPage(page,config)}),AppInfo.enableSupporterMembership?page.querySelector(".btnSupporterForConverting a").href="https://emby.media/premiere":page.querySelector(".btnSupporterForConverting a").href="#"})});
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,81 +1 @@
|
|||
define(['jQuery'], function ($) {
|
||||
'use strict';
|
||||
|
||||
function reload(page, providerId) {
|
||||
|
||||
page.querySelector('.txtDevicePath').value = '';
|
||||
page.querySelector('.chkFavorite').checked = false;
|
||||
|
||||
if (providerId) {
|
||||
ApiClient.getNamedConfiguration("livetv").then(function (config) {
|
||||
|
||||
var info = config.TunerHosts.filter(function (i) {
|
||||
return i.Id == providerId;
|
||||
})[0];
|
||||
|
||||
page.querySelector('.txtDevicePath').value = info.Url || '';
|
||||
page.querySelector('.chkFavorite').checked = info.ImportFavoritesOnly;
|
||||
page.querySelector('.chkTranscode').checked = info.AllowHWTranscoding;
|
||||
page.querySelector('.chkEnabled').checked = info.IsEnabled;
|
||||
|
||||
});
|
||||
} else {
|
||||
page.querySelector('.chkEnabled').checked = true;
|
||||
}
|
||||
}
|
||||
|
||||
function submitForm(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var info = {
|
||||
Type: 'hdhomerun',
|
||||
Url: page.querySelector('.txtDevicePath').value,
|
||||
ImportFavoritesOnly: page.querySelector('.chkFavorite').checked,
|
||||
AllowHWTranscoding: page.querySelector('.chkTranscode').checked,
|
||||
IsEnabled: page.querySelector('.chkEnabled').checked,
|
||||
DataVersion: 1
|
||||
};
|
||||
|
||||
var id = getParameterByName('id');
|
||||
|
||||
if (id) {
|
||||
info.Id = id;
|
||||
}
|
||||
|
||||
ApiClient.ajax({
|
||||
type: "POST",
|
||||
url: ApiClient.getUrl('LiveTv/TunerHosts'),
|
||||
data: JSON.stringify(info),
|
||||
contentType: "application/json"
|
||||
|
||||
}).then(function (result) {
|
||||
|
||||
Dashboard.processServerConfigurationUpdateResult();
|
||||
Dashboard.navigate('livetvstatus.html');
|
||||
|
||||
}, function () {
|
||||
Dashboard.alert({
|
||||
message: Globalize.translate('ErrorSavingTvProvider')
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#liveTvTunerProviderHdHomerunPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
$('form', page).on('submit', function () {
|
||||
submitForm(page);
|
||||
return false;
|
||||
});
|
||||
|
||||
}).on('pageshow', "#liveTvTunerProviderHdHomerunPage", function () {
|
||||
|
||||
var providerId = getParameterByName('id');
|
||||
var page = this;
|
||||
reload(page, providerId);
|
||||
});
|
||||
|
||||
});
|
||||
define(["jQuery"],function($){"use strict";function reload(page,providerId){page.querySelector(".txtDevicePath").value="",page.querySelector(".chkFavorite").checked=!1,providerId?ApiClient.getNamedConfiguration("livetv").then(function(config){var info=config.TunerHosts.filter(function(i){return i.Id==providerId})[0];page.querySelector(".txtDevicePath").value=info.Url||"",page.querySelector(".chkFavorite").checked=info.ImportFavoritesOnly,page.querySelector(".chkTranscode").checked=info.AllowHWTranscoding,page.querySelector(".chkEnabled").checked=info.IsEnabled}):page.querySelector(".chkEnabled").checked=!0}function submitForm(page){Dashboard.showLoadingMsg();var info={Type:"hdhomerun",Url:page.querySelector(".txtDevicePath").value,ImportFavoritesOnly:page.querySelector(".chkFavorite").checked,AllowHWTranscoding:page.querySelector(".chkTranscode").checked,IsEnabled:page.querySelector(".chkEnabled").checked,DataVersion:1},id=getParameterByName("id");id&&(info.Id=id),ApiClient.ajax({type:"POST",url:ApiClient.getUrl("LiveTv/TunerHosts"),data:JSON.stringify(info),contentType:"application/json"}).then(function(result){Dashboard.processServerConfigurationUpdateResult(),Dashboard.navigate("livetvstatus.html")},function(){Dashboard.alert({message:Globalize.translate("ErrorSavingTvProvider")})})}$(document).on("pageinit","#liveTvTunerProviderHdHomerunPage",function(){var page=this;$("form",page).on("submit",function(){return submitForm(page),!1})}).on("pageshow","#liveTvTunerProviderHdHomerunPage",function(){var providerId=getParameterByName("id"),page=this;reload(page,providerId)})});
|
|
@ -1,92 +1 @@
|
|||
define(['jQuery'], function ($) {
|
||||
'use strict';
|
||||
|
||||
function reload(page, providerId) {
|
||||
|
||||
page.querySelector('.txtDevicePath').value = '';
|
||||
|
||||
if (providerId) {
|
||||
ApiClient.getNamedConfiguration("livetv").then(function (config) {
|
||||
|
||||
var info = config.TunerHosts.filter(function (i) {
|
||||
return i.Id == providerId;
|
||||
})[0];
|
||||
|
||||
page.querySelector('.txtDevicePath').value = info.Url || '';
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function submitForm(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var info = {
|
||||
Type: 'm3u',
|
||||
Url: page.querySelector('.txtDevicePath').value,
|
||||
EnableTvgId: true
|
||||
};
|
||||
|
||||
var id = getParameterByName('id');
|
||||
|
||||
if (id) {
|
||||
info.Id = id;
|
||||
}
|
||||
|
||||
ApiClient.ajax({
|
||||
type: "POST",
|
||||
url: ApiClient.getUrl('LiveTv/TunerHosts'),
|
||||
data: JSON.stringify(info),
|
||||
contentType: "application/json"
|
||||
|
||||
}).then(function () {
|
||||
|
||||
Dashboard.processServerConfigurationUpdateResult();
|
||||
Dashboard.navigate('livetvstatus.html');
|
||||
|
||||
}, function () {
|
||||
Dashboard.hideLoadingMsg();
|
||||
Dashboard.alert({
|
||||
message: Globalize.translate('ErrorSavingTvProvider')
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#liveTvTunerProviderM3UPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
$('form', page).on('submit', function () {
|
||||
submitForm(page);
|
||||
return false;
|
||||
});
|
||||
|
||||
$('#btnSelectPath', page).on("click.selectDirectory", function () {
|
||||
|
||||
require(['directorybrowser'], function (directoryBrowser) {
|
||||
|
||||
var picker = new directoryBrowser();
|
||||
|
||||
picker.show({
|
||||
|
||||
includeFiles: true,
|
||||
callback: function (path) {
|
||||
if (path) {
|
||||
$('.txtDevicePath', page).val(path);
|
||||
}
|
||||
picker.close();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
}).on('pageshow', "#liveTvTunerProviderM3UPage", function () {
|
||||
|
||||
var providerId = getParameterByName('id');
|
||||
var page = this;
|
||||
reload(page, providerId);
|
||||
});
|
||||
|
||||
});
|
||||
define(["jQuery"],function($){"use strict";function reload(page,providerId){page.querySelector(".txtDevicePath").value="",providerId&&ApiClient.getNamedConfiguration("livetv").then(function(config){var info=config.TunerHosts.filter(function(i){return i.Id==providerId})[0];page.querySelector(".txtDevicePath").value=info.Url||""})}function submitForm(page){Dashboard.showLoadingMsg();var info={Type:"m3u",Url:page.querySelector(".txtDevicePath").value,EnableTvgId:!0},id=getParameterByName("id");id&&(info.Id=id),ApiClient.ajax({type:"POST",url:ApiClient.getUrl("LiveTv/TunerHosts"),data:JSON.stringify(info),contentType:"application/json"}).then(function(){Dashboard.processServerConfigurationUpdateResult(),Dashboard.navigate("livetvstatus.html")},function(){Dashboard.hideLoadingMsg(),Dashboard.alert({message:Globalize.translate("ErrorSavingTvProvider")})})}$(document).on("pageinit","#liveTvTunerProviderM3UPage",function(){var page=this;$("form",page).on("submit",function(){return submitForm(page),!1}),$("#btnSelectPath",page).on("click.selectDirectory",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({includeFiles:!0,callback:function(path){path&&$(".txtDevicePath",page).val(path),picker.close()}})})})}).on("pageshow","#liveTvTunerProviderM3UPage",function(){var providerId=getParameterByName("id"),page=this;reload(page,providerId)})});
|
|
@ -1,45 +1 @@
|
|||
define(['appSettings', 'connectionManager'], function (appSettings, connectionManager) {
|
||||
'use strict';
|
||||
|
||||
var syncPromise;
|
||||
|
||||
return {
|
||||
|
||||
sync: function (options) {
|
||||
|
||||
if (syncPromise) {
|
||||
return syncPromise.promise();
|
||||
}
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
require(['multiserversync'], function (MultiServerSync) {
|
||||
|
||||
options = options || {};
|
||||
|
||||
options.cameraUploadServers = appSettings.cameraUploadServers();
|
||||
|
||||
syncPromise = new MultiServerSync(connectionManager).sync(options).then(function () {
|
||||
|
||||
syncPromise = null;
|
||||
resolve();
|
||||
|
||||
}, function () {
|
||||
|
||||
syncPromise = null;
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
},
|
||||
|
||||
getSyncStatus: function () {
|
||||
|
||||
if (syncPromise != null) {
|
||||
return 'Syncing';
|
||||
}
|
||||
return 'Idle';
|
||||
}
|
||||
};
|
||||
|
||||
});
|
||||
define(["appSettings","connectionManager"],function(appSettings,connectionManager){"use strict";var syncPromise;return{sync:function(options){return syncPromise?syncPromise.promise():new Promise(function(resolve,reject){require(["multiserversync"],function(MultiServerSync){options=options||{},options.cameraUploadServers=appSettings.cameraUploadServers(),syncPromise=new MultiServerSync(connectionManager).sync(options).then(function(){syncPromise=null,resolve()},function(){syncPromise=null})})})},getSyncStatus:function(){return null!=syncPromise?"Syncing":"Idle"}}});
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,106 +1 @@
|
|||
define(['jQuery'], function ($) {
|
||||
'use strict';
|
||||
|
||||
var metadataKey = "xbmcmetadata";
|
||||
|
||||
function loadPage(page, config, users) {
|
||||
|
||||
var html = '<option value="" selected="selected">' + Globalize.translate('OptionNone') + '</option>';
|
||||
|
||||
html += users.map(function (user) {
|
||||
return '<option value="' + user.Id + '">' + user.Name + '</option>';
|
||||
}).join('');
|
||||
|
||||
$('#selectUser', page).html(html).val(config.UserId || '');
|
||||
$('#selectReleaseDateFormat', page).val(config.ReleaseDateFormat);
|
||||
|
||||
page.querySelector('#chkSaveImagePaths').checked = config.SaveImagePathsInNfo;
|
||||
page.querySelector('#chkEnablePathSubstitution').checked = config.EnablePathSubstitution;
|
||||
page.querySelector('#chkEnableExtraThumbs').checked = config.EnableExtraThumbsDuplication;
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
}
|
||||
|
||||
function onSubmit() {
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var form = this;
|
||||
|
||||
ApiClient.getNamedConfiguration(metadataKey).then(function (config) {
|
||||
|
||||
config.UserId = $('#selectUser', form).val() || null;
|
||||
config.ReleaseDateFormat = $('#selectReleaseDateFormat', form).val();
|
||||
|
||||
config.SaveImagePathsInNfo = form.querySelector('#chkSaveImagePaths').checked;
|
||||
config.EnablePathSubstitution = form.querySelector('#chkEnablePathSubstitution').checked;
|
||||
config.EnableExtraThumbsDuplication = form.querySelector('#chkEnableExtraThumbs').checked;
|
||||
|
||||
ApiClient.updateNamedConfiguration(metadataKey, config).then(function () {
|
||||
Dashboard.processServerConfigurationUpdateResult();
|
||||
|
||||
showConfirmMessage(config);
|
||||
});
|
||||
});
|
||||
|
||||
// Disable default form submission
|
||||
return false;
|
||||
}
|
||||
|
||||
function showConfirmMessage(config) {
|
||||
|
||||
var msg = [];
|
||||
|
||||
msg.push(Globalize.translate('MetadataSettingChangeHelp'));
|
||||
|
||||
require(['alert'], function (alert) {
|
||||
alert({
|
||||
text: msg.join('<br/><br/>')
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function getTabs() {
|
||||
return [
|
||||
{
|
||||
href: 'library.html',
|
||||
name: Globalize.translate('HeaderLibraries')
|
||||
},
|
||||
{
|
||||
href: 'librarydisplay.html',
|
||||
name: Globalize.translate('TabDisplay')
|
||||
},
|
||||
{
|
||||
href: 'metadataimages.html',
|
||||
name: Globalize.translate('TabMetadata')
|
||||
},
|
||||
{
|
||||
href: 'metadatanfo.html',
|
||||
name: Globalize.translate('TabNfoSettings')
|
||||
},
|
||||
{
|
||||
href: 'librarysettings.html',
|
||||
name: Globalize.translate('TabAdvanced')
|
||||
}];
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#metadataNfoPage", function () {
|
||||
|
||||
$('.metadataNfoForm').off('submit', onSubmit).on('submit', onSubmit);
|
||||
|
||||
}).on('pageshow', "#metadataNfoPage", function () {
|
||||
|
||||
LibraryMenu.setTabs('metadata', 3, getTabs);
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var page = this;
|
||||
|
||||
var promise1 = ApiClient.getUsers();
|
||||
var promise2 = ApiClient.getNamedConfiguration(metadataKey);
|
||||
|
||||
Promise.all([promise1, promise2]).then(function (responses) {
|
||||
|
||||
loadPage(page, responses[1], responses[0]);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
define(["jQuery"],function($){"use strict";function loadPage(page,config,users){var html='<option value="" selected="selected">'+Globalize.translate("OptionNone")+"</option>";html+=users.map(function(user){return'<option value="'+user.Id+'">'+user.Name+"</option>"}).join(""),$("#selectUser",page).html(html).val(config.UserId||""),$("#selectReleaseDateFormat",page).val(config.ReleaseDateFormat),page.querySelector("#chkSaveImagePaths").checked=config.SaveImagePathsInNfo,page.querySelector("#chkEnablePathSubstitution").checked=config.EnablePathSubstitution,page.querySelector("#chkEnableExtraThumbs").checked=config.EnableExtraThumbsDuplication,Dashboard.hideLoadingMsg()}function onSubmit(){Dashboard.showLoadingMsg();var form=this;return ApiClient.getNamedConfiguration(metadataKey).then(function(config){config.UserId=$("#selectUser",form).val()||null,config.ReleaseDateFormat=$("#selectReleaseDateFormat",form).val(),config.SaveImagePathsInNfo=form.querySelector("#chkSaveImagePaths").checked,config.EnablePathSubstitution=form.querySelector("#chkEnablePathSubstitution").checked,config.EnableExtraThumbsDuplication=form.querySelector("#chkEnableExtraThumbs").checked,ApiClient.updateNamedConfiguration(metadataKey,config).then(function(){Dashboard.processServerConfigurationUpdateResult(),showConfirmMessage(config)})}),!1}function showConfirmMessage(config){var msg=[];msg.push(Globalize.translate("MetadataSettingChangeHelp")),require(["alert"],function(alert){alert({text:msg.join("<br/><br/>")})})}function getTabs(){return[{href:"library.html",name:Globalize.translate("HeaderLibraries")},{href:"librarydisplay.html",name:Globalize.translate("TabDisplay")},{href:"metadataimages.html",name:Globalize.translate("TabMetadata")},{href:"metadatanfo.html",name:Globalize.translate("TabNfoSettings")},{href:"librarysettings.html",name:Globalize.translate("TabAdvanced")}]}var metadataKey="xbmcmetadata";$(document).on("pageinit","#metadataNfoPage",function(){$(".metadataNfoForm").off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#metadataNfoPage",function(){LibraryMenu.setTabs("metadata",3,getTabs),Dashboard.showLoadingMsg();var page=this,promise1=ApiClient.getUsers(),promise2=ApiClient.getNamedConfiguration(metadataKey);Promise.all([promise1,promise2]).then(function(responses){loadPage(page,responses[1],responses[0])})})});
|
|
@ -1,103 +1 @@
|
|||
define(['jQuery', 'fnchecked'], function ($) {
|
||||
'use strict';
|
||||
|
||||
function loadPage(page, config, languages) {
|
||||
|
||||
$('#chkSubtitlesMovies', page).checked(config.DownloadMovieSubtitles);
|
||||
$('#chkSubtitlesEpisodes', page).checked(config.DownloadEpisodeSubtitles);
|
||||
|
||||
$('#chkSkipIfGraphicalSubsPresent', page).checked(config.SkipIfEmbeddedSubtitlesPresent);
|
||||
$('#chkSkipIfAudioTrackPresent', page).checked(config.SkipIfAudioTrackMatches);
|
||||
$('#chkRequirePerfectMatch', page).checked(config.RequirePerfectMatch);
|
||||
|
||||
$('#txtOpenSubtitleUsername', page).val(config.OpenSubtitlesUsername);
|
||||
$('#txtOpenSubtitlePassword', page).val('');
|
||||
|
||||
populateLanguages(page, config, languages);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
}
|
||||
|
||||
function populateLanguages(page, config, languages) {
|
||||
|
||||
var html = '';
|
||||
|
||||
for (var i = 0, length = languages.length; i < length; i++) {
|
||||
|
||||
var culture = languages[i];
|
||||
|
||||
html += '<label><input type="checkbox" is="emby-checkbox" class="chkLang" data-lang="' + culture.ThreeLetterISOLanguageName.toLowerCase() + '" /><span>' + culture.DisplayName + '</span></label>';
|
||||
}
|
||||
|
||||
$('.downloadLanguages', page).html(html);
|
||||
|
||||
var langs = config.DownloadLanguages || [];
|
||||
|
||||
$('.chkLang', page).each(function () {
|
||||
|
||||
this.checked = langs.indexOf(this.getAttribute('data-lang')) != -1;
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
function onSubmit() {
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var form = this;
|
||||
|
||||
ApiClient.getNamedConfiguration("subtitles").then(function (config) {
|
||||
|
||||
config.DownloadMovieSubtitles = $('#chkSubtitlesMovies', form).checked();
|
||||
config.DownloadEpisodeSubtitles = $('#chkSubtitlesEpisodes', form).checked();
|
||||
|
||||
config.SkipIfEmbeddedSubtitlesPresent = $('#chkSkipIfGraphicalSubsPresent', form).checked();
|
||||
config.SkipIfAudioTrackMatches = $('#chkSkipIfAudioTrackPresent', form).checked();
|
||||
config.RequirePerfectMatch = $('#chkRequirePerfectMatch', form).checked();
|
||||
|
||||
config.OpenSubtitlesUsername = $('#txtOpenSubtitleUsername', form).val();
|
||||
|
||||
var newPassword = $('#txtOpenSubtitlePassword', form).val();
|
||||
|
||||
if (newPassword) {
|
||||
config.OpenSubtitlesPasswordHash = newPassword;
|
||||
}
|
||||
|
||||
config.DownloadLanguages = $('.chkLang', form).get().filter(function (c) {
|
||||
|
||||
return c.checked;
|
||||
|
||||
}).map(function (c) {
|
||||
|
||||
return c.getAttribute('data-lang');
|
||||
|
||||
});
|
||||
|
||||
ApiClient.updateNamedConfiguration("subtitles", config).then(Dashboard.processServerConfigurationUpdateResult);
|
||||
});
|
||||
|
||||
// Disable default form submission
|
||||
return false;
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#metadataSubtitlesPage", function () {
|
||||
|
||||
$('.metadataSubtitlesForm').off('submit', onSubmit).on('submit', onSubmit);
|
||||
|
||||
}).on('pageshow', "#metadataSubtitlesPage", function () {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var page = this;
|
||||
|
||||
var promise1 = ApiClient.getNamedConfiguration("subtitles");
|
||||
var promise2 = ApiClient.getCultures();
|
||||
|
||||
Promise.all([promise1, promise2]).then(function (responses) {
|
||||
|
||||
loadPage(page, responses[0], responses[1]);
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
define(["jQuery","fnchecked"],function($){"use strict";function loadPage(page,config,languages){$("#chkSubtitlesMovies",page).checked(config.DownloadMovieSubtitles),$("#chkSubtitlesEpisodes",page).checked(config.DownloadEpisodeSubtitles),$("#chkSkipIfGraphicalSubsPresent",page).checked(config.SkipIfEmbeddedSubtitlesPresent),$("#chkSkipIfAudioTrackPresent",page).checked(config.SkipIfAudioTrackMatches),$("#chkRequirePerfectMatch",page).checked(config.RequirePerfectMatch),$("#txtOpenSubtitleUsername",page).val(config.OpenSubtitlesUsername),$("#txtOpenSubtitlePassword",page).val(""),populateLanguages(page,config,languages),Dashboard.hideLoadingMsg()}function populateLanguages(page,config,languages){for(var html="",i=0,length=languages.length;i<length;i++){var culture=languages[i];html+='<label><input type="checkbox" is="emby-checkbox" class="chkLang" data-lang="'+culture.ThreeLetterISOLanguageName.toLowerCase()+'" /><span>'+culture.DisplayName+"</span></label>"}$(".downloadLanguages",page).html(html);var langs=config.DownloadLanguages||[];$(".chkLang",page).each(function(){this.checked=langs.indexOf(this.getAttribute("data-lang"))!=-1})}function onSubmit(){Dashboard.showLoadingMsg();var form=this;return ApiClient.getNamedConfiguration("subtitles").then(function(config){config.DownloadMovieSubtitles=$("#chkSubtitlesMovies",form).checked(),config.DownloadEpisodeSubtitles=$("#chkSubtitlesEpisodes",form).checked(),config.SkipIfEmbeddedSubtitlesPresent=$("#chkSkipIfGraphicalSubsPresent",form).checked(),config.SkipIfAudioTrackMatches=$("#chkSkipIfAudioTrackPresent",form).checked(),config.RequirePerfectMatch=$("#chkRequirePerfectMatch",form).checked(),config.OpenSubtitlesUsername=$("#txtOpenSubtitleUsername",form).val();var newPassword=$("#txtOpenSubtitlePassword",form).val();newPassword&&(config.OpenSubtitlesPasswordHash=newPassword),config.DownloadLanguages=$(".chkLang",form).get().filter(function(c){return c.checked}).map(function(c){return c.getAttribute("data-lang")}),ApiClient.updateNamedConfiguration("subtitles",config).then(Dashboard.processServerConfigurationUpdateResult)}),!1}$(document).on("pageinit","#metadataSubtitlesPage",function(){$(".metadataSubtitlesForm").off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#metadataSubtitlesPage",function(){Dashboard.showLoadingMsg();var page=this,promise1=ApiClient.getNamedConfiguration("subtitles"),promise2=ApiClient.getCultures();Promise.all([promise1,promise2]).then(function(responses){loadPage(page,responses[0],responses[1])})})});
|
File diff suppressed because one or more lines are too long
|
@ -1,246 +1 @@
|
|||
define(['libraryBrowser', 'cardBuilder', 'lazyLoader', 'apphost', 'globalize', 'dom'], function (libraryBrowser, cardBuilder, lazyLoader, appHost, globalize, dom) {
|
||||
'use strict';
|
||||
|
||||
return function (view, params, tabContent) {
|
||||
|
||||
var self = this;
|
||||
|
||||
var data = {};
|
||||
function getPageData() {
|
||||
var key = getSavedQueryKey();
|
||||
var pageData = data[key];
|
||||
|
||||
if (!pageData) {
|
||||
pageData = data[key] = {
|
||||
query: {
|
||||
SortBy: "SortName",
|
||||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "Movie",
|
||||
Recursive: true,
|
||||
EnableTotalRecordCount: false
|
||||
},
|
||||
view: libraryBrowser.getSavedView(key) || (appHost.preferVisualCards ? 'PosterCard' : 'Poster')
|
||||
};
|
||||
|
||||
pageData.query.ParentId = params.topParentId;
|
||||
libraryBrowser.loadSavedQueryValues(key, pageData.query);
|
||||
}
|
||||
return pageData;
|
||||
}
|
||||
|
||||
function getQuery() {
|
||||
|
||||
return getPageData().query;
|
||||
}
|
||||
|
||||
function getSavedQueryKey() {
|
||||
|
||||
return libraryBrowser.getSavedQueryKey('moviegenres');
|
||||
}
|
||||
|
||||
function getPromise() {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
var query = getQuery();
|
||||
|
||||
return ApiClient.getGenres(Dashboard.getCurrentUserId(), query);
|
||||
}
|
||||
|
||||
function enableScrollX() {
|
||||
return browserInfo.mobile;
|
||||
}
|
||||
|
||||
function getThumbShape() {
|
||||
return enableScrollX() ? 'overflowBackdrop' : 'backdrop';
|
||||
}
|
||||
|
||||
function getPortraitShape() {
|
||||
return enableScrollX() ? 'overflowPortrait' : 'portrait';
|
||||
}
|
||||
|
||||
function getMoreItemsHref(itemId, type) {
|
||||
|
||||
return 'secondaryitems.html?type=' + type + '&genreId=' + itemId + '&parentId=' + params.topParentId;
|
||||
}
|
||||
|
||||
dom.addEventListener(tabContent, 'click', function (e) {
|
||||
|
||||
var btnMoreFromGenre = dom.parentWithClass(e.target, 'btnMoreFromGenre');
|
||||
if (btnMoreFromGenre) {
|
||||
var id = btnMoreFromGenre.getAttribute('data-id');
|
||||
Dashboard.navigate(getMoreItemsHref(id, 'Movie'));
|
||||
}
|
||||
|
||||
}, {
|
||||
passive: true
|
||||
});
|
||||
|
||||
function fillItemsContainer(elem) {
|
||||
|
||||
var id = elem.getAttribute('data-id');
|
||||
|
||||
var viewStyle = self.getCurrentViewStyle();
|
||||
|
||||
var limit = viewStyle == 'Thumb' || viewStyle == 'ThumbCard' ?
|
||||
5 :
|
||||
8;
|
||||
|
||||
if (enableScrollX()) {
|
||||
limit = 10;
|
||||
}
|
||||
|
||||
var enableImageTypes = viewStyle == 'Thumb' || viewStyle == 'ThumbCard' ?
|
||||
"Primary,Backdrop,Thumb" :
|
||||
"Primary";
|
||||
|
||||
var query = {
|
||||
SortBy: "SortName",
|
||||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "Movie",
|
||||
Recursive: true,
|
||||
Fields: "PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo",
|
||||
ImageTypeLimit: 1,
|
||||
EnableImageTypes: enableImageTypes,
|
||||
Limit: limit,
|
||||
GenreIds: id,
|
||||
EnableTotalRecordCount: false,
|
||||
ParentId: params.topParentId
|
||||
};
|
||||
|
||||
ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function (result) {
|
||||
|
||||
var supportsImageAnalysis = appHost.supports('imageanalysis');
|
||||
|
||||
if (viewStyle == "Thumb") {
|
||||
cardBuilder.buildCards(result.Items, {
|
||||
itemsContainer: elem,
|
||||
shape: getThumbShape(),
|
||||
preferThumb: true,
|
||||
showTitle: true,
|
||||
scalable: true,
|
||||
centerText: true,
|
||||
overlayMoreButton: true,
|
||||
allowBottomPadding: false
|
||||
});
|
||||
}
|
||||
else if (viewStyle == "ThumbCard") {
|
||||
|
||||
cardBuilder.buildCards(result.Items, {
|
||||
itemsContainer: elem,
|
||||
shape: getThumbShape(),
|
||||
preferThumb: true,
|
||||
showTitle: true,
|
||||
scalable: true,
|
||||
centerText: false,
|
||||
cardLayout: true,
|
||||
vibrant: supportsImageAnalysis,
|
||||
showYear: true
|
||||
});
|
||||
}
|
||||
else if (viewStyle == "PosterCard") {
|
||||
cardBuilder.buildCards(result.Items, {
|
||||
itemsContainer: elem,
|
||||
shape: getPortraitShape(),
|
||||
showTitle: true,
|
||||
scalable: true,
|
||||
centerText: false,
|
||||
cardLayout: true,
|
||||
vibrant: supportsImageAnalysis,
|
||||
showYear: true
|
||||
});
|
||||
}
|
||||
else if (viewStyle == "Poster") {
|
||||
cardBuilder.buildCards(result.Items, {
|
||||
itemsContainer: elem,
|
||||
shape: getPortraitShape(),
|
||||
showTitle: true,
|
||||
scalable: true,
|
||||
centerText: true,
|
||||
overlayMoreButton: true,
|
||||
allowBottomPadding: false
|
||||
});
|
||||
}
|
||||
|
||||
if (result.Items.length >= query.Limit) {
|
||||
tabContent.querySelector('.btnMoreFromGenre' + id).classList.remove('hide');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function reloadItems(context, promise) {
|
||||
|
||||
var query = getQuery();
|
||||
|
||||
promise.then(function (result) {
|
||||
|
||||
var elem = context.querySelector('#items');
|
||||
var html = '';
|
||||
|
||||
var items = result.Items;
|
||||
|
||||
for (var i = 0, length = items.length; i < length; i++) {
|
||||
|
||||
var item = items[i];
|
||||
|
||||
html += '<div class="homePageSection">';
|
||||
|
||||
html += '<div style="display:flex;align-items:center;">';
|
||||
html += '<h1 class="listHeader">';
|
||||
html += item.Name;
|
||||
html += '</h1>';
|
||||
html += '<button is="emby-button" type="button" class="raised more mini hide btnMoreFromGenre btnMoreFromGenre' + item.Id + '" data-id="' + item.Id + '">';
|
||||
html += '<span>' + globalize.translate('ButtonMore') + '</span>';
|
||||
html += '</button>';
|
||||
html += '</div>';
|
||||
|
||||
if (enableScrollX()) {
|
||||
html += '<div is="emby-itemscontainer" class="itemsContainer hiddenScrollX lazy" data-id="' + item.Id + '">';
|
||||
} else {
|
||||
html += '<div is="emby-itemscontainer" class="itemsContainer vertical-wrap lazy" data-id="' + item.Id + '">';
|
||||
}
|
||||
html += '</div>';
|
||||
|
||||
html += '</div>';
|
||||
}
|
||||
|
||||
elem.innerHTML = html;
|
||||
|
||||
lazyLoader.lazyChildren(elem, fillItemsContainer);
|
||||
|
||||
libraryBrowser.saveQueryValues(getSavedQueryKey(), query);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
self.getViewStyles = function () {
|
||||
return 'Poster,PosterCard,Thumb,ThumbCard'.split(',');
|
||||
};
|
||||
|
||||
self.getCurrentViewStyle = function () {
|
||||
return getPageData(tabContent).view;
|
||||
};
|
||||
|
||||
self.setCurrentViewStyle = function (viewStyle) {
|
||||
getPageData(tabContent).view = viewStyle;
|
||||
libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle);
|
||||
fullyReload();
|
||||
};
|
||||
|
||||
self.enableViewSelection = true;
|
||||
var promise;
|
||||
|
||||
self.preRender = function () {
|
||||
promise = getPromise();
|
||||
};
|
||||
|
||||
self.renderTab = function () {
|
||||
|
||||
reloadItems(tabContent, promise);
|
||||
};
|
||||
|
||||
function fullyReload() {
|
||||
self.preRender();
|
||||
self.renderTab();
|
||||
}
|
||||
};
|
||||
});
|
||||
define(["libraryBrowser","cardBuilder","lazyLoader","apphost","globalize","dom"],function(libraryBrowser,cardBuilder,lazyLoader,appHost,globalize,dom){"use strict";return function(view,params,tabContent){function getPageData(){var key=getSavedQueryKey(),pageData=data[key];return pageData||(pageData=data[key]={query:{SortBy:"SortName",SortOrder:"Ascending",IncludeItemTypes:"Movie",Recursive:!0,EnableTotalRecordCount:!1},view:libraryBrowser.getSavedView(key)||(appHost.preferVisualCards?"PosterCard":"Poster")},pageData.query.ParentId=params.topParentId,libraryBrowser.loadSavedQueryValues(key,pageData.query)),pageData}function getQuery(){return getPageData().query}function getSavedQueryKey(){return libraryBrowser.getSavedQueryKey("moviegenres")}function getPromise(){Dashboard.showLoadingMsg();var query=getQuery();return ApiClient.getGenres(Dashboard.getCurrentUserId(),query)}function enableScrollX(){return browserInfo.mobile}function getThumbShape(){return enableScrollX()?"overflowBackdrop":"backdrop"}function getPortraitShape(){return enableScrollX()?"overflowPortrait":"portrait"}function getMoreItemsHref(itemId,type){return"secondaryitems.html?type="+type+"&genreId="+itemId+"&parentId="+params.topParentId}function fillItemsContainer(elem){var id=elem.getAttribute("data-id"),viewStyle=self.getCurrentViewStyle(),limit="Thumb"==viewStyle||"ThumbCard"==viewStyle?5:8;enableScrollX()&&(limit=10);var enableImageTypes="Thumb"==viewStyle||"ThumbCard"==viewStyle?"Primary,Backdrop,Thumb":"Primary",query={SortBy:"SortName",SortOrder:"Ascending",IncludeItemTypes:"Movie",Recursive:!0,Fields:"PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo",ImageTypeLimit:1,EnableImageTypes:enableImageTypes,Limit:limit,GenreIds:id,EnableTotalRecordCount:!1,ParentId:params.topParentId};ApiClient.getItems(Dashboard.getCurrentUserId(),query).then(function(result){var supportsImageAnalysis=appHost.supports("imageanalysis");"Thumb"==viewStyle?cardBuilder.buildCards(result.Items,{itemsContainer:elem,shape:getThumbShape(),preferThumb:!0,showTitle:!0,scalable:!0,centerText:!0,overlayMoreButton:!0,allowBottomPadding:!1}):"ThumbCard"==viewStyle?cardBuilder.buildCards(result.Items,{itemsContainer:elem,shape:getThumbShape(),preferThumb:!0,showTitle:!0,scalable:!0,centerText:!1,cardLayout:!0,vibrant:supportsImageAnalysis,showYear:!0}):"PosterCard"==viewStyle?cardBuilder.buildCards(result.Items,{itemsContainer:elem,shape:getPortraitShape(),showTitle:!0,scalable:!0,centerText:!1,cardLayout:!0,vibrant:supportsImageAnalysis,showYear:!0}):"Poster"==viewStyle&&cardBuilder.buildCards(result.Items,{itemsContainer:elem,shape:getPortraitShape(),showTitle:!0,scalable:!0,centerText:!0,overlayMoreButton:!0,allowBottomPadding:!1}),result.Items.length>=query.Limit&&tabContent.querySelector(".btnMoreFromGenre"+id).classList.remove("hide")})}function reloadItems(context,promise){var query=getQuery();promise.then(function(result){for(var elem=context.querySelector("#items"),html="",items=result.Items,i=0,length=items.length;i<length;i++){var item=items[i];html+='<div class="homePageSection">',html+='<div style="display:flex;align-items:center;">',html+='<h1 class="listHeader">',html+=item.Name,html+="</h1>",html+='<button is="emby-button" type="button" class="raised more mini hide btnMoreFromGenre btnMoreFromGenre'+item.Id+'" data-id="'+item.Id+'">',html+="<span>"+globalize.translate("ButtonMore")+"</span>",html+="</button>",html+="</div>",html+=enableScrollX()?'<div is="emby-itemscontainer" class="itemsContainer hiddenScrollX lazy" data-id="'+item.Id+'">':'<div is="emby-itemscontainer" class="itemsContainer vertical-wrap lazy" data-id="'+item.Id+'">',html+="</div>",html+="</div>"}elem.innerHTML=html,lazyLoader.lazyChildren(elem,fillItemsContainer),libraryBrowser.saveQueryValues(getSavedQueryKey(),query),Dashboard.hideLoadingMsg()})}function fullyReload(){self.preRender(),self.renderTab()}var self=this,data={};dom.addEventListener(tabContent,"click",function(e){var btnMoreFromGenre=dom.parentWithClass(e.target,"btnMoreFromGenre");if(btnMoreFromGenre){var id=btnMoreFromGenre.getAttribute("data-id");Dashboard.navigate(getMoreItemsHref(id,"Movie"))}},{passive:!0}),self.getViewStyles=function(){return"Poster,PosterCard,Thumb,ThumbCard".split(",")},self.getCurrentViewStyle=function(){return getPageData(tabContent).view},self.setCurrentViewStyle=function(viewStyle){getPageData(tabContent).view=viewStyle,libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent),viewStyle),fullyReload()},self.enableViewSelection=!0;var promise;self.preRender=function(){promise=getPromise()},self.renderTab=function(){reloadItems(tabContent,promise)}}});
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,75 +1 @@
|
|||
define(['libraryBrowser', 'cardBuilder'], function (libraryBrowser, cardBuilder) {
|
||||
'use strict';
|
||||
|
||||
// The base query options
|
||||
var data = {};
|
||||
|
||||
function getQuery(params) {
|
||||
|
||||
var key = getSavedQueryKey();
|
||||
var pageData = data[key];
|
||||
|
||||
if (!pageData) {
|
||||
pageData = data[key] = {
|
||||
query: {
|
||||
SortBy: "SortName",
|
||||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "Movie",
|
||||
Recursive: true,
|
||||
Fields: "DateCreated,ItemCounts,PrimaryImageAspectRatio",
|
||||
StartIndex: 0
|
||||
}
|
||||
};
|
||||
|
||||
pageData.query.ParentId = params.topParentId;
|
||||
}
|
||||
return pageData.query;
|
||||
}
|
||||
|
||||
function getSavedQueryKey() {
|
||||
|
||||
return libraryBrowser.getSavedQueryKey('studios');
|
||||
}
|
||||
|
||||
function getPromise(context, params) {
|
||||
|
||||
var query = getQuery(params);
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
return ApiClient.getStudios(Dashboard.getCurrentUserId(), query);
|
||||
}
|
||||
function reloadItems(context, params, promise) {
|
||||
|
||||
promise.then(function (result) {
|
||||
|
||||
var elem = context.querySelector('#items');
|
||||
cardBuilder.buildCards(result.Items, {
|
||||
itemsContainer: elem,
|
||||
shape: "backdrop",
|
||||
preferThumb: true,
|
||||
showTitle: true,
|
||||
scalable: true,
|
||||
showItemCounts: true,
|
||||
centerText: true,
|
||||
overlayMoreButton: true
|
||||
});
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
return function (view, params, tabContent) {
|
||||
|
||||
var self = this;
|
||||
var promise;
|
||||
|
||||
self.preRender = function () {
|
||||
promise = getPromise(view, params);
|
||||
};
|
||||
|
||||
self.renderTab = function () {
|
||||
|
||||
reloadItems(tabContent, params, promise);
|
||||
};
|
||||
};
|
||||
});
|
||||
define(["libraryBrowser","cardBuilder"],function(libraryBrowser,cardBuilder){"use strict";function getQuery(params){var key=getSavedQueryKey(),pageData=data[key];return pageData||(pageData=data[key]={query:{SortBy:"SortName",SortOrder:"Ascending",IncludeItemTypes:"Movie",Recursive:!0,Fields:"DateCreated,ItemCounts,PrimaryImageAspectRatio",StartIndex:0}},pageData.query.ParentId=params.topParentId),pageData.query}function getSavedQueryKey(){return libraryBrowser.getSavedQueryKey("studios")}function getPromise(context,params){var query=getQuery(params);return Dashboard.showLoadingMsg(),ApiClient.getStudios(Dashboard.getCurrentUserId(),query)}function reloadItems(context,params,promise){promise.then(function(result){var elem=context.querySelector("#items");cardBuilder.buildCards(result.Items,{itemsContainer:elem,shape:"backdrop",preferThumb:!0,showTitle:!0,scalable:!0,showItemCounts:!0,centerText:!0,overlayMoreButton:!0}),Dashboard.hideLoadingMsg()})}var data={};return function(view,params,tabContent){var promise,self=this;self.preRender=function(){promise=getPromise(view,params)},self.renderTab=function(){reloadItems(tabContent,params,promise)}}});
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,248 +1 @@
|
|||
define(['events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView', 'cardBuilder', 'apphost', 'emby-itemscontainer'], function (events, libraryBrowser, imageLoader, alphaPicker, listView, cardBuilder, appHost) {
|
||||
'use strict';
|
||||
|
||||
return function (view, params, tabContent) {
|
||||
|
||||
var self = this;
|
||||
|
||||
var data = {};
|
||||
|
||||
function getPageData(context) {
|
||||
var key = getSavedQueryKey(context);
|
||||
var pageData = data[key];
|
||||
|
||||
if (!pageData) {
|
||||
pageData = data[key] = {
|
||||
query: {
|
||||
SortBy: "SortName",
|
||||
SortOrder: "Ascending",
|
||||
Recursive: true,
|
||||
Fields: "PrimaryImageAspectRatio,SortName,ItemCounts,BasicSyncInfo",
|
||||
StartIndex: 0,
|
||||
ImageTypeLimit: 1,
|
||||
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
|
||||
Limit: LibraryBrowser.getDefaultPageSize()
|
||||
},
|
||||
view: libraryBrowser.getSavedView(key) || (appHost.preferVisualCards ? 'PosterCard' : 'Poster')
|
||||
};
|
||||
|
||||
pageData.query.ParentId = params.topParentId;
|
||||
libraryBrowser.loadSavedQueryValues(key, pageData.query);
|
||||
}
|
||||
return pageData;
|
||||
}
|
||||
|
||||
function getQuery(context) {
|
||||
|
||||
return getPageData(context).query;
|
||||
}
|
||||
|
||||
function getSavedQueryKey(context) {
|
||||
|
||||
if (!context.savedQueryKey) {
|
||||
context.savedQueryKey = LibraryBrowser.getSavedQueryKey(self.mode);
|
||||
}
|
||||
return context.savedQueryKey;
|
||||
}
|
||||
|
||||
function onViewStyleChange() {
|
||||
|
||||
var viewStyle = self.getCurrentViewStyle();
|
||||
|
||||
var itemsContainer = tabContent.querySelector('.itemsContainer');
|
||||
|
||||
if (viewStyle == "List") {
|
||||
|
||||
itemsContainer.classList.add('vertical-list');
|
||||
itemsContainer.classList.remove('vertical-wrap');
|
||||
}
|
||||
else {
|
||||
|
||||
itemsContainer.classList.remove('vertical-list');
|
||||
itemsContainer.classList.add('vertical-wrap');
|
||||
}
|
||||
itemsContainer.innerHTML = '';
|
||||
}
|
||||
|
||||
function reloadItems(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var query = getQuery(page);
|
||||
|
||||
var promise = self.mode == 'albumartists' ?
|
||||
ApiClient.getAlbumArtists(Dashboard.getCurrentUserId(), query) :
|
||||
ApiClient.getArtists(Dashboard.getCurrentUserId(), query);
|
||||
|
||||
promise.then(function (result) {
|
||||
|
||||
// Scroll back up so they can see the results from the beginning
|
||||
window.scrollTo(0, 0);
|
||||
|
||||
updateFilterControls(page);
|
||||
|
||||
var pagingHtml = LibraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
totalRecordCount: result.TotalRecordCount,
|
||||
showLimit: false,
|
||||
updatePageSizeSetting: false,
|
||||
addLayoutButton: false,
|
||||
sortButton: false,
|
||||
filterButton: false
|
||||
});
|
||||
|
||||
var html;
|
||||
var viewStyle = self.getCurrentViewStyle();
|
||||
|
||||
if (viewStyle == "List") {
|
||||
|
||||
html = listView.getListViewHtml({
|
||||
items: result.Items,
|
||||
sortBy: query.SortBy
|
||||
});
|
||||
}
|
||||
else if (viewStyle == "PosterCard") {
|
||||
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "square",
|
||||
context: 'music',
|
||||
showTitle: true,
|
||||
coverImage: true,
|
||||
lazy: true,
|
||||
cardLayout: true,
|
||||
showSongCount: true,
|
||||
vibrant: true
|
||||
});
|
||||
}
|
||||
else {
|
||||
|
||||
// Poster
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "square",
|
||||
context: 'music',
|
||||
showTitle: true,
|
||||
coverImage: true,
|
||||
lazy: true,
|
||||
centerText: true,
|
||||
overlayPlayButton: true
|
||||
});
|
||||
}
|
||||
|
||||
var i, length;
|
||||
var elems = tabContent.querySelectorAll('.paging');
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].innerHTML = pagingHtml;
|
||||
}
|
||||
|
||||
function onNextPageClick() {
|
||||
query.StartIndex += query.Limit;
|
||||
reloadItems(tabContent);
|
||||
}
|
||||
|
||||
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;
|
||||
imageLoader.lazyChildren(itemsContainer);
|
||||
|
||||
libraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
self.showFilterMenu = function () {
|
||||
|
||||
require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
|
||||
|
||||
var filterDialog = new filterDialogFactory({
|
||||
query: getQuery(tabContent),
|
||||
mode: self.mode
|
||||
});
|
||||
|
||||
Events.on(filterDialog, 'filterchange', function () {
|
||||
getQuery(tabContent).StartIndex = 0;
|
||||
reloadItems(tabContent);
|
||||
});
|
||||
|
||||
filterDialog.show();
|
||||
});
|
||||
}
|
||||
|
||||
function updateFilterControls(tabContent) {
|
||||
|
||||
var query = getQuery(tabContent);
|
||||
self.alphaPicker.value(query.NameStartsWithOrGreater);
|
||||
}
|
||||
|
||||
function initPage(tabContent) {
|
||||
|
||||
var alphaPickerElement = tabContent.querySelector('.alphaPicker');
|
||||
alphaPickerElement.addEventListener('alphavaluechanged', function (e) {
|
||||
var newValue = e.detail.value;
|
||||
var query = getQuery(tabContent);
|
||||
query.NameStartsWithOrGreater = newValue;
|
||||
query.StartIndex = 0;
|
||||
reloadItems(tabContent);
|
||||
});
|
||||
|
||||
self.alphaPicker = new alphaPicker({
|
||||
element: alphaPickerElement,
|
||||
valueChangeEvent: 'click'
|
||||
});
|
||||
|
||||
tabContent.querySelector('.btnFilter').addEventListener('click', function () {
|
||||
self.showFilterMenu();
|
||||
});
|
||||
|
||||
var btnSelectView = tabContent.querySelector('.btnSelectView');
|
||||
btnSelectView.addEventListener('click', function (e) {
|
||||
|
||||
libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'List,Poster,PosterCard'.split(','));
|
||||
});
|
||||
|
||||
btnSelectView.addEventListener('layoutchange', function (e) {
|
||||
|
||||
var viewStyle = e.detail.viewStyle;
|
||||
|
||||
getPageData(tabContent).view = viewStyle;
|
||||
libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle);
|
||||
getQuery(tabContent).StartIndex = 0;
|
||||
onViewStyleChange();
|
||||
reloadItems(tabContent);
|
||||
});
|
||||
}
|
||||
|
||||
self.getCurrentViewStyle = function () {
|
||||
return getPageData(tabContent).view;
|
||||
};
|
||||
|
||||
initPage(tabContent);
|
||||
onViewStyleChange();
|
||||
|
||||
self.renderTab = function () {
|
||||
|
||||
reloadItems(tabContent);
|
||||
updateFilterControls(tabContent);
|
||||
};
|
||||
|
||||
self.destroy = function () {
|
||||
};
|
||||
};
|
||||
});
|
||||
define(["events","libraryBrowser","imageLoader","alphaPicker","listView","cardBuilder","apphost","emby-itemscontainer"],function(events,libraryBrowser,imageLoader,alphaPicker,listView,cardBuilder,appHost){"use strict";return function(view,params,tabContent){function getPageData(context){var key=getSavedQueryKey(context),pageData=data[key];return pageData||(pageData=data[key]={query:{SortBy:"SortName",SortOrder:"Ascending",Recursive:!0,Fields:"PrimaryImageAspectRatio,SortName,ItemCounts,BasicSyncInfo",StartIndex:0,ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Banner,Thumb",Limit:LibraryBrowser.getDefaultPageSize()},view:libraryBrowser.getSavedView(key)||(appHost.preferVisualCards?"PosterCard":"Poster")},pageData.query.ParentId=params.topParentId,libraryBrowser.loadSavedQueryValues(key,pageData.query)),pageData}function getQuery(context){return getPageData(context).query}function getSavedQueryKey(context){return context.savedQueryKey||(context.savedQueryKey=LibraryBrowser.getSavedQueryKey(self.mode)),context.savedQueryKey}function onViewStyleChange(){var viewStyle=self.getCurrentViewStyle(),itemsContainer=tabContent.querySelector(".itemsContainer");"List"==viewStyle?(itemsContainer.classList.add("vertical-list"),itemsContainer.classList.remove("vertical-wrap")):(itemsContainer.classList.remove("vertical-list"),itemsContainer.classList.add("vertical-wrap")),itemsContainer.innerHTML=""}function reloadItems(page){Dashboard.showLoadingMsg();var query=getQuery(page),promise="albumartists"==self.mode?ApiClient.getAlbumArtists(Dashboard.getCurrentUserId(),query):ApiClient.getArtists(Dashboard.getCurrentUserId(),query);promise.then(function(result){function onNextPageClick(){query.StartIndex+=query.Limit,reloadItems(tabContent)}function onPreviousPageClick(){query.StartIndex-=query.Limit,reloadItems(tabContent)}window.scrollTo(0,0),updateFilterControls(page);var html,pagingHtml=LibraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1,updatePageSizeSetting:!1,addLayoutButton:!1,sortButton:!1,filterButton:!1}),viewStyle=self.getCurrentViewStyle();html="List"==viewStyle?listView.getListViewHtml({items:result.Items,sortBy:query.SortBy}):"PosterCard"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"square",context:"music",showTitle:!0,coverImage:!0,lazy:!0,cardLayout:!0,showSongCount:!0,vibrant:!0}):cardBuilder.getCardsHtml({items:result.Items,shape:"square",context:"music",showTitle:!0,coverImage:!0,lazy:!0,centerText:!0,overlayPlayButton:!0});var i,length,elems=tabContent.querySelectorAll(".paging");for(i=0,length=elems.length;i<length;i++)elems[i].innerHTML=pagingHtml;for(elems=tabContent.querySelectorAll(".btnNextPage"),i=0,length=elems.length;i<length;i++)elems[i].addEventListener("click",onNextPageClick);for(elems=tabContent.querySelectorAll(".btnPreviousPage"),i=0,length=elems.length;i<length;i++)elems[i].addEventListener("click",onPreviousPageClick);var itemsContainer=tabContent.querySelector(".itemsContainer");itemsContainer.innerHTML=html,imageLoader.lazyChildren(itemsContainer),libraryBrowser.saveQueryValues(getSavedQueryKey(page),query),Dashboard.hideLoadingMsg()})}function updateFilterControls(tabContent){var query=getQuery(tabContent);self.alphaPicker.value(query.NameStartsWithOrGreater)}function initPage(tabContent){var alphaPickerElement=tabContent.querySelector(".alphaPicker");alphaPickerElement.addEventListener("alphavaluechanged",function(e){var newValue=e.detail.value,query=getQuery(tabContent);query.NameStartsWithOrGreater=newValue,query.StartIndex=0,reloadItems(tabContent)}),self.alphaPicker=new alphaPicker({element:alphaPickerElement,valueChangeEvent:"click"}),tabContent.querySelector(".btnFilter").addEventListener("click",function(){self.showFilterMenu()});var btnSelectView=tabContent.querySelector(".btnSelectView");btnSelectView.addEventListener("click",function(e){libraryBrowser.showLayoutMenu(e.target,self.getCurrentViewStyle(),"List,Poster,PosterCard".split(","))}),btnSelectView.addEventListener("layoutchange",function(e){var viewStyle=e.detail.viewStyle;getPageData(tabContent).view=viewStyle,libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent),viewStyle),getQuery(tabContent).StartIndex=0,onViewStyleChange(),reloadItems(tabContent)})}var self=this,data={};self.showFilterMenu=function(){require(["components/filterdialog/filterdialog"],function(filterDialogFactory){var filterDialog=new filterDialogFactory({query:getQuery(tabContent),mode:self.mode});Events.on(filterDialog,"filterchange",function(){getQuery(tabContent).StartIndex=0,reloadItems(tabContent)}),filterDialog.show()})},self.getCurrentViewStyle=function(){return getPageData(tabContent).view},initPage(tabContent),onViewStyleChange(),self.renderTab=function(){reloadItems(tabContent),updateFilterControls(tabContent)},self.destroy=function(){}}});
|
|
@ -1,128 +1 @@
|
|||
define(['events', 'libraryBrowser', 'imageLoader', 'cardBuilder'], function (events, libraryBrowser, imageLoader, cardBuilder) {
|
||||
'use strict';
|
||||
|
||||
return function (view, params, tabContent) {
|
||||
|
||||
var self = this;
|
||||
|
||||
var data = {};
|
||||
|
||||
function getPageData(context) {
|
||||
var key = getSavedQueryKey(context);
|
||||
var pageData = data[key];
|
||||
|
||||
if (!pageData) {
|
||||
pageData = data[key] = {
|
||||
query: {
|
||||
SortBy: "SortName",
|
||||
SortOrder: "Ascending",
|
||||
Fields: "PrimaryImageAspectRatio,SortName",
|
||||
StartIndex: 0,
|
||||
ImageTypeLimit: 1,
|
||||
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
|
||||
Limit: LibraryBrowser.getDefaultPageSize()
|
||||
},
|
||||
view: libraryBrowser.getSavedView(key) || 'Poster'
|
||||
};
|
||||
|
||||
pageData.query.ParentId = params.topParentId;
|
||||
libraryBrowser.loadSavedQueryValues(key, pageData.query);
|
||||
}
|
||||
return pageData;
|
||||
}
|
||||
|
||||
function getQuery(context) {
|
||||
|
||||
return getPageData(context).query;
|
||||
}
|
||||
|
||||
function getSavedQueryKey(context) {
|
||||
|
||||
if (!context.savedQueryKey) {
|
||||
context.savedQueryKey = libraryBrowser.getSavedQueryKey('folders');
|
||||
}
|
||||
return context.savedQueryKey;
|
||||
}
|
||||
|
||||
function reloadItems(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var query = getQuery(page);
|
||||
|
||||
ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function (result) {
|
||||
|
||||
// Scroll back up so they can see the results from the beginning
|
||||
window.scrollTo(0, 0);
|
||||
|
||||
var pagingHtml = LibraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
totalRecordCount: result.TotalRecordCount,
|
||||
showLimit: false,
|
||||
updatePageSizeSetting: false,
|
||||
addLayoutButton: false,
|
||||
sortButton: false,
|
||||
filterButton: false
|
||||
});
|
||||
|
||||
var html = cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "square",
|
||||
context: 'folders',
|
||||
showTitle: true,
|
||||
showParentTitle: true,
|
||||
lazy: true,
|
||||
centerText: true,
|
||||
overlayPlayButton: true
|
||||
});
|
||||
|
||||
var i, length;
|
||||
var elems = tabContent.querySelectorAll('.paging');
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].innerHTML = pagingHtml;
|
||||
}
|
||||
|
||||
function onNextPageClick() {
|
||||
query.StartIndex += query.Limit;
|
||||
reloadItems(tabContent);
|
||||
}
|
||||
|
||||
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;
|
||||
imageLoader.lazyChildren(itemsContainer);
|
||||
|
||||
libraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
self.getCurrentViewStyle = function () {
|
||||
return getPageData(tabContent).view;
|
||||
};
|
||||
|
||||
self.renderTab = function () {
|
||||
|
||||
reloadItems(tabContent);
|
||||
};
|
||||
|
||||
self.destroy = function () {
|
||||
};
|
||||
};
|
||||
});
|
||||
define(["events","libraryBrowser","imageLoader","cardBuilder"],function(events,libraryBrowser,imageLoader,cardBuilder){"use strict";return function(view,params,tabContent){function getPageData(context){var key=getSavedQueryKey(context),pageData=data[key];return pageData||(pageData=data[key]={query:{SortBy:"SortName",SortOrder:"Ascending",Fields:"PrimaryImageAspectRatio,SortName",StartIndex:0,ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Banner,Thumb",Limit:LibraryBrowser.getDefaultPageSize()},view:libraryBrowser.getSavedView(key)||"Poster"},pageData.query.ParentId=params.topParentId,libraryBrowser.loadSavedQueryValues(key,pageData.query)),pageData}function getQuery(context){return getPageData(context).query}function getSavedQueryKey(context){return context.savedQueryKey||(context.savedQueryKey=libraryBrowser.getSavedQueryKey("folders")),context.savedQueryKey}function reloadItems(page){Dashboard.showLoadingMsg();var query=getQuery(page);ApiClient.getItems(Dashboard.getCurrentUserId(),query).then(function(result){function onNextPageClick(){query.StartIndex+=query.Limit,reloadItems(tabContent)}function onPreviousPageClick(){query.StartIndex-=query.Limit,reloadItems(tabContent)}window.scrollTo(0,0);var i,length,pagingHtml=LibraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1,updatePageSizeSetting:!1,addLayoutButton:!1,sortButton:!1,filterButton:!1}),html=cardBuilder.getCardsHtml({items:result.Items,shape:"square",context:"folders",showTitle:!0,showParentTitle:!0,lazy:!0,centerText:!0,overlayPlayButton:!0}),elems=tabContent.querySelectorAll(".paging");for(i=0,length=elems.length;i<length;i++)elems[i].innerHTML=pagingHtml;for(elems=tabContent.querySelectorAll(".btnNextPage"),i=0,length=elems.length;i<length;i++)elems[i].addEventListener("click",onNextPageClick);for(elems=tabContent.querySelectorAll(".btnPreviousPage"),i=0,length=elems.length;i<length;i++)elems[i].addEventListener("click",onPreviousPageClick);var itemsContainer=tabContent.querySelector(".itemsContainer");itemsContainer.innerHTML=html,imageLoader.lazyChildren(itemsContainer),libraryBrowser.saveQueryValues(getSavedQueryKey(page),query),Dashboard.hideLoadingMsg()})}var self=this,data={};self.getCurrentViewStyle=function(){return getPageData(tabContent).view},self.renderTab=function(){reloadItems(tabContent)},self.destroy=function(){}}});
|
|
@ -1,163 +1 @@
|
|||
define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader'], function (libraryBrowser, cardBuilder, appHost, imageLoader) {
|
||||
'use strict';
|
||||
|
||||
return function (view, params, tabContent) {
|
||||
|
||||
var self = this;
|
||||
|
||||
var data = {};
|
||||
function getPageData() {
|
||||
var key = getSavedQueryKey();
|
||||
var pageData = data[key];
|
||||
|
||||
if (!pageData) {
|
||||
pageData = data[key] = {
|
||||
query: {
|
||||
SortBy: "SortName",
|
||||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "Audio,MusicAlbum",
|
||||
Recursive: true,
|
||||
Fields: "DateCreated,ItemCounts",
|
||||
StartIndex: 0
|
||||
},
|
||||
view: libraryBrowser.getSavedView(key) || (appHost.preferVisualCards ? 'PosterCard' : 'Poster')
|
||||
};
|
||||
|
||||
pageData.query.ParentId = params.topParentId;
|
||||
libraryBrowser.loadSavedQueryValues(key, pageData.query);
|
||||
}
|
||||
return pageData;
|
||||
}
|
||||
|
||||
function getQuery() {
|
||||
|
||||
return getPageData().query;
|
||||
}
|
||||
|
||||
function getSavedQueryKey() {
|
||||
|
||||
return libraryBrowser.getSavedQueryKey('genres');
|
||||
}
|
||||
|
||||
function getPromise() {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
var query = getQuery();
|
||||
|
||||
return ApiClient.getGenres(Dashboard.getCurrentUserId(), query);
|
||||
}
|
||||
|
||||
function reloadItems(context, promise) {
|
||||
|
||||
var query = getQuery();
|
||||
|
||||
promise.then(function (result) {
|
||||
|
||||
var html = '';
|
||||
|
||||
var viewStyle = self.getCurrentViewStyle();
|
||||
|
||||
if (viewStyle == "Thumb") {
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
preferThumb: true,
|
||||
context: 'music',
|
||||
showItemCounts: true,
|
||||
centerText: true,
|
||||
lazy: true,
|
||||
overlayMoreButton: true,
|
||||
showTitle: true
|
||||
});
|
||||
}
|
||||
else if (viewStyle == "ThumbCard") {
|
||||
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
preferThumb: true,
|
||||
context: 'music',
|
||||
showItemCounts: true,
|
||||
cardLayout: true,
|
||||
showTitle: true,
|
||||
lazy: true,
|
||||
vibrant: true
|
||||
});
|
||||
}
|
||||
else if (viewStyle == "PosterCard") {
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "auto",
|
||||
context: 'music',
|
||||
showItemCounts: true,
|
||||
lazy: true,
|
||||
cardLayout: true,
|
||||
showTitle: true,
|
||||
vibrant: true
|
||||
});
|
||||
}
|
||||
else if (viewStyle == "Poster") {
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "auto",
|
||||
context: 'music',
|
||||
centerText: true,
|
||||
showItemCounts: true,
|
||||
lazy: true,
|
||||
overlayMoreButton: true,
|
||||
showTitle: true
|
||||
});
|
||||
}
|
||||
|
||||
var elem = context.querySelector('#items');
|
||||
elem.innerHTML = html;
|
||||
imageLoader.lazyChildren(elem);
|
||||
|
||||
libraryBrowser.saveQueryValues(getSavedQueryKey(), query);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
self.getViewStyles = function () {
|
||||
return 'Poster,PosterCard,Thumb,ThumbCard'.split(',');
|
||||
};
|
||||
|
||||
self.getCurrentViewStyle = function () {
|
||||
return getPageData(tabContent).view;
|
||||
};
|
||||
|
||||
self.setCurrentViewStyle = function (viewStyle) {
|
||||
getPageData(tabContent).view = viewStyle;
|
||||
libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle);
|
||||
fullyReload();
|
||||
};
|
||||
|
||||
self.enableViewSelection = true;
|
||||
var promise;
|
||||
|
||||
self.preRender = function () {
|
||||
promise = getPromise();
|
||||
};
|
||||
|
||||
self.renderTab = function () {
|
||||
|
||||
reloadItems(tabContent, promise);
|
||||
};
|
||||
|
||||
function fullyReload() {
|
||||
self.preRender();
|
||||
self.renderTab();
|
||||
}
|
||||
|
||||
var btnSelectView = tabContent.querySelector('.btnSelectView');
|
||||
btnSelectView.addEventListener('click', function (e) {
|
||||
|
||||
libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), self.getViewStyles());
|
||||
});
|
||||
|
||||
btnSelectView.addEventListener('layoutchange', function (e) {
|
||||
|
||||
self.setCurrentViewStyle(e.detail.viewStyle);
|
||||
});
|
||||
};
|
||||
});
|
||||
define(["libraryBrowser","cardBuilder","apphost","imageLoader"],function(libraryBrowser,cardBuilder,appHost,imageLoader){"use strict";return function(view,params,tabContent){function getPageData(){var key=getSavedQueryKey(),pageData=data[key];return pageData||(pageData=data[key]={query:{SortBy:"SortName",SortOrder:"Ascending",IncludeItemTypes:"Audio,MusicAlbum",Recursive:!0,Fields:"DateCreated,ItemCounts",StartIndex:0},view:libraryBrowser.getSavedView(key)||(appHost.preferVisualCards?"PosterCard":"Poster")},pageData.query.ParentId=params.topParentId,libraryBrowser.loadSavedQueryValues(key,pageData.query)),pageData}function getQuery(){return getPageData().query}function getSavedQueryKey(){return libraryBrowser.getSavedQueryKey("genres")}function getPromise(){Dashboard.showLoadingMsg();var query=getQuery();return ApiClient.getGenres(Dashboard.getCurrentUserId(),query)}function reloadItems(context,promise){var query=getQuery();promise.then(function(result){var html="",viewStyle=self.getCurrentViewStyle();"Thumb"==viewStyle?html=cardBuilder.getCardsHtml({items:result.Items,shape:"backdrop",preferThumb:!0,context:"music",showItemCounts:!0,centerText:!0,lazy:!0,overlayMoreButton:!0,showTitle:!0}):"ThumbCard"==viewStyle?html=cardBuilder.getCardsHtml({items:result.Items,shape:"backdrop",preferThumb:!0,context:"music",showItemCounts:!0,cardLayout:!0,showTitle:!0,lazy:!0,vibrant:!0}):"PosterCard"==viewStyle?html=cardBuilder.getCardsHtml({items:result.Items,shape:"auto",context:"music",showItemCounts:!0,lazy:!0,cardLayout:!0,showTitle:!0,vibrant:!0}):"Poster"==viewStyle&&(html=cardBuilder.getCardsHtml({items:result.Items,shape:"auto",context:"music",centerText:!0,showItemCounts:!0,lazy:!0,overlayMoreButton:!0,showTitle:!0}));var elem=context.querySelector("#items");elem.innerHTML=html,imageLoader.lazyChildren(elem),libraryBrowser.saveQueryValues(getSavedQueryKey(),query),Dashboard.hideLoadingMsg()})}function fullyReload(){self.preRender(),self.renderTab()}var self=this,data={};self.getViewStyles=function(){return"Poster,PosterCard,Thumb,ThumbCard".split(",")},self.getCurrentViewStyle=function(){return getPageData(tabContent).view},self.setCurrentViewStyle=function(viewStyle){getPageData(tabContent).view=viewStyle,libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent),viewStyle),fullyReload()},self.enableViewSelection=!0;var promise;self.preRender=function(){promise=getPromise()},self.renderTab=function(){reloadItems(tabContent,promise)};var btnSelectView=tabContent.querySelector(".btnSelectView");btnSelectView.addEventListener("click",function(e){libraryBrowser.showLayoutMenu(e.target,self.getCurrentViewStyle(),self.getViewStyles())}),btnSelectView.addEventListener("layoutchange",function(e){self.setCurrentViewStyle(e.detail.viewStyle)})}});
|
File diff suppressed because one or more lines are too long
|
@ -1,54 +1 @@
|
|||
define(['apphost', 'listViewStyle'], function (appHost) {
|
||||
'use strict';
|
||||
|
||||
return function (view, params) {
|
||||
|
||||
view.querySelector('.btnLogout').addEventListener('click', function () {
|
||||
|
||||
Dashboard.logout();
|
||||
});
|
||||
|
||||
view.addEventListener('viewshow', function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
var userId = params.userId || Dashboard.getCurrentUserId();
|
||||
|
||||
page.querySelector('.lnkDisplayPreferences').setAttribute('href', 'mypreferencesdisplay.html?userId=' + userId);
|
||||
page.querySelector('.lnkLanguagePreferences').setAttribute('href', 'mypreferenceslanguages.html?userId=' + userId);
|
||||
page.querySelector('.lnkHomeScreenPreferences').setAttribute('href', 'mypreferenceshome.html?userId=' + userId);
|
||||
page.querySelector('.lnkMyProfile').setAttribute('href', 'myprofile.html?userId=' + userId);
|
||||
page.querySelector('.lnkSync').setAttribute('href', 'mysyncsettings.html?userId=' + userId);
|
||||
page.querySelector('.lnkCameraUpload').setAttribute('href', 'camerauploadsettings.html?userId=' + userId);
|
||||
|
||||
if (appHost.supports('cameraupload')) {
|
||||
page.querySelector('.lnkCameraUpload').classList.remove('hide');
|
||||
} else {
|
||||
page.querySelector('.lnkCameraUpload').classList.add('hide');
|
||||
}
|
||||
|
||||
if (appHost.supports('sync')) {
|
||||
page.querySelector('.lnkSync').classList.remove('hide');
|
||||
} else {
|
||||
page.querySelector('.lnkSync').classList.add('hide');
|
||||
}
|
||||
|
||||
Dashboard.getCurrentUser().then(function (user) {
|
||||
|
||||
page.querySelector('.headerUser').innerHTML = user.Name;
|
||||
|
||||
if (user.Policy.IsAdministrator) {
|
||||
page.querySelector('.adminSection').classList.remove('hide');
|
||||
} else {
|
||||
page.querySelector('.adminSection').classList.add('hide');
|
||||
}
|
||||
});
|
||||
|
||||
if (appHost.supports('multiserver')) {
|
||||
page.querySelector('.selectServer').classList.remove('hide');
|
||||
} else {
|
||||
page.querySelector('.selectServer').classList.add('hide');
|
||||
}
|
||||
});
|
||||
};
|
||||
});
|
||||
define(["apphost","listViewStyle"],function(appHost){"use strict";return function(view,params){view.querySelector(".btnLogout").addEventListener("click",function(){Dashboard.logout()}),view.addEventListener("viewshow",function(){var page=this,userId=params.userId||Dashboard.getCurrentUserId();page.querySelector(".lnkDisplayPreferences").setAttribute("href","mypreferencesdisplay.html?userId="+userId),page.querySelector(".lnkLanguagePreferences").setAttribute("href","mypreferenceslanguages.html?userId="+userId),page.querySelector(".lnkHomeScreenPreferences").setAttribute("href","mypreferenceshome.html?userId="+userId),page.querySelector(".lnkMyProfile").setAttribute("href","myprofile.html?userId="+userId),page.querySelector(".lnkSync").setAttribute("href","mysyncsettings.html?userId="+userId),page.querySelector(".lnkCameraUpload").setAttribute("href","camerauploadsettings.html?userId="+userId),appHost.supports("cameraupload")?page.querySelector(".lnkCameraUpload").classList.remove("hide"):page.querySelector(".lnkCameraUpload").classList.add("hide"),appHost.supports("sync")?page.querySelector(".lnkSync").classList.remove("hide"):page.querySelector(".lnkSync").classList.add("hide"),Dashboard.getCurrentUser().then(function(user){page.querySelector(".headerUser").innerHTML=user.Name,user.Policy.IsAdministrator?page.querySelector(".adminSection").classList.remove("hide"):page.querySelector(".adminSection").classList.add("hide")}),appHost.supports("multiserver")?page.querySelector(".selectServer").classList.remove("hide"):page.querySelector(".selectServer").classList.add("hide")})}});
|
|
@ -1,127 +1 @@
|
|||
define(['userSettingsBuilder', 'appStorage'], function (userSettingsBuilder, appStorage) {
|
||||
'use strict';
|
||||
|
||||
return function (view, params) {
|
||||
|
||||
var userId = params.userId || Dashboard.getCurrentUserId();
|
||||
var userSettingsInstance = new userSettingsBuilder();
|
||||
var userSettingsLoaded;
|
||||
|
||||
function loadForm(page, user) {
|
||||
|
||||
userSettingsInstance.setUserInfo(userId, ApiClient).then(function () {
|
||||
userSettingsLoaded = true;
|
||||
page.querySelector('.chkDisplayMissingEpisodes').checked = user.Configuration.DisplayMissingEpisodes || false;
|
||||
page.querySelector('.chkDisplayUnairedEpisodes').checked = user.Configuration.DisplayUnairedEpisodes || false;
|
||||
|
||||
page.querySelector('#chkThemeSong').checked = userSettingsInstance.enableThemeSongs();
|
||||
page.querySelector('#selectBackdrop').value = appStorage.getItem('enableBackdrops-' + user.Id) || '0';
|
||||
|
||||
page.querySelector('#selectLanguage').value = userSettingsInstance.language() || '';
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
function refreshGlobalUserSettings() {
|
||||
require(['userSettings'], function (userSettings) {
|
||||
userSettings.importFrom(userSettingsInstance);
|
||||
});
|
||||
}
|
||||
|
||||
function saveUser(page, user) {
|
||||
|
||||
user.Configuration.DisplayMissingEpisodes = page.querySelector('.chkDisplayMissingEpisodes').checked;
|
||||
user.Configuration.DisplayUnairedEpisodes = page.querySelector('.chkDisplayUnairedEpisodes').checked;
|
||||
|
||||
if (userSettingsLoaded) {
|
||||
|
||||
if (AppInfo.supportsUserDisplayLanguageSetting) {
|
||||
userSettingsInstance.language(page.querySelector('#selectLanguage').value);
|
||||
}
|
||||
|
||||
userSettingsInstance.enableThemeSongs(page.querySelector('#chkThemeSong').checked);
|
||||
|
||||
if (userId === Dashboard.getCurrentUserId()) {
|
||||
refreshGlobalUserSettings();
|
||||
}
|
||||
}
|
||||
|
||||
appStorage.setItem('enableBackdrops-' + user.Id, page.querySelector('#selectBackdrop').value);
|
||||
|
||||
return ApiClient.updateUserConfiguration(user.Id, user.Configuration);
|
||||
}
|
||||
|
||||
function save(page) {
|
||||
|
||||
if (!AppInfo.enableAutoSave) {
|
||||
Dashboard.showLoadingMsg();
|
||||
}
|
||||
|
||||
ApiClient.getUser(userId).then(function (user) {
|
||||
|
||||
saveUser(page, user).then(function () {
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
if (!AppInfo.enableAutoSave) {
|
||||
require(['toast'], function (toast) {
|
||||
toast(Globalize.translate('SettingsSaved'));
|
||||
});
|
||||
}
|
||||
|
||||
}, function () {
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
view.querySelector('.displayPreferencesForm').addEventListener('submit', function (e) {
|
||||
save(view);
|
||||
e.preventDefault();
|
||||
// Disable default form submission
|
||||
return false;
|
||||
});
|
||||
|
||||
if (AppInfo.enableAutoSave) {
|
||||
view.querySelector('.btnSave').classList.add('hide');
|
||||
} else {
|
||||
view.querySelector('.btnSave').classList.remove('hide');
|
||||
}
|
||||
|
||||
view.addEventListener('viewshow', function () {
|
||||
var page = this;
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
ApiClient.getUser(userId).then(function (user) {
|
||||
|
||||
loadForm(page, user);
|
||||
|
||||
var requiresUserPreferences = view.querySelectorAll('.requiresUserPreferences');
|
||||
for (var i = 0, length = requiresUserPreferences.length; i < length; i++) {
|
||||
if (user.Policy.EnableUserPreferenceAccess) {
|
||||
requiresUserPreferences[i].classList.remove('hide');
|
||||
} else {
|
||||
requiresUserPreferences[i].classList.add('hide');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (AppInfo.supportsUserDisplayLanguageSetting) {
|
||||
page.querySelector('.languageSection').classList.remove('hide');
|
||||
} else {
|
||||
page.querySelector('.languageSection').classList.add('hide');
|
||||
}
|
||||
});
|
||||
|
||||
view.addEventListener('viewbeforehide', function () {
|
||||
var page = this;
|
||||
|
||||
if (AppInfo.enableAutoSave) {
|
||||
save(page);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
});
|
||||
define(["userSettingsBuilder","appStorage"],function(userSettingsBuilder,appStorage){"use strict";return function(view,params){function loadForm(page,user){userSettingsInstance.setUserInfo(userId,ApiClient).then(function(){userSettingsLoaded=!0,page.querySelector(".chkDisplayMissingEpisodes").checked=user.Configuration.DisplayMissingEpisodes||!1,page.querySelector(".chkDisplayUnairedEpisodes").checked=user.Configuration.DisplayUnairedEpisodes||!1,page.querySelector("#chkThemeSong").checked=userSettingsInstance.enableThemeSongs(),page.querySelector("#selectBackdrop").value=appStorage.getItem("enableBackdrops-"+user.Id)||"0",page.querySelector("#selectLanguage").value=userSettingsInstance.language()||"",Dashboard.hideLoadingMsg()})}function refreshGlobalUserSettings(){require(["userSettings"],function(userSettings){userSettings.importFrom(userSettingsInstance)})}function saveUser(page,user){return user.Configuration.DisplayMissingEpisodes=page.querySelector(".chkDisplayMissingEpisodes").checked,user.Configuration.DisplayUnairedEpisodes=page.querySelector(".chkDisplayUnairedEpisodes").checked,userSettingsLoaded&&(AppInfo.supportsUserDisplayLanguageSetting&&userSettingsInstance.language(page.querySelector("#selectLanguage").value),userSettingsInstance.enableThemeSongs(page.querySelector("#chkThemeSong").checked),userId===Dashboard.getCurrentUserId()&&refreshGlobalUserSettings()),appStorage.setItem("enableBackdrops-"+user.Id,page.querySelector("#selectBackdrop").value),ApiClient.updateUserConfiguration(user.Id,user.Configuration)}function save(page){AppInfo.enableAutoSave||Dashboard.showLoadingMsg(),ApiClient.getUser(userId).then(function(user){saveUser(page,user).then(function(){Dashboard.hideLoadingMsg(),AppInfo.enableAutoSave||require(["toast"],function(toast){toast(Globalize.translate("SettingsSaved"))})},function(){Dashboard.hideLoadingMsg()})})}var userSettingsLoaded,userId=params.userId||Dashboard.getCurrentUserId(),userSettingsInstance=new userSettingsBuilder;view.querySelector(".displayPreferencesForm").addEventListener("submit",function(e){return save(view),e.preventDefault(),!1}),AppInfo.enableAutoSave?view.querySelector(".btnSave").classList.add("hide"):view.querySelector(".btnSave").classList.remove("hide"),view.addEventListener("viewshow",function(){var page=this;Dashboard.showLoadingMsg(),ApiClient.getUser(userId).then(function(user){loadForm(page,user);for(var requiresUserPreferences=view.querySelectorAll(".requiresUserPreferences"),i=0,length=requiresUserPreferences.length;i<length;i++)user.Policy.EnableUserPreferenceAccess?requiresUserPreferences[i].classList.remove("hide"):requiresUserPreferences[i].classList.add("hide")}),AppInfo.supportsUserDisplayLanguageSetting?page.querySelector(".languageSection").classList.remove("hide"):page.querySelector(".languageSection").classList.add("hide")}),view.addEventListener("viewbeforehide",function(){var page=this;AppInfo.enableAutoSave&&save(page)})}});
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,218 +1 @@
|
|||
define(['scripts/userpasswordpage'], function (Userpasswordpage) {
|
||||
'use strict';
|
||||
|
||||
var currentFile;
|
||||
|
||||
function reloadUser(page) {
|
||||
|
||||
var userId = getParameterByName("userId");
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
ApiClient.getUser(userId).then(function (user) {
|
||||
|
||||
page.querySelector('.username').innerHTML = user.Name;
|
||||
var uploadUserImage = page.querySelector('#uploadUserImage');
|
||||
uploadUserImage.value = '';
|
||||
uploadUserImage.dispatchEvent(new CustomEvent('change', {}));
|
||||
|
||||
LibraryMenu.setTitle(user.Name);
|
||||
|
||||
var imageUrl;
|
||||
|
||||
var fldImage = page.querySelector('#fldImage');
|
||||
if (user.PrimaryImageTag) {
|
||||
|
||||
imageUrl = ApiClient.getUserImageUrl(user.Id, {
|
||||
height: 200,
|
||||
tag: user.PrimaryImageTag,
|
||||
type: "Primary"
|
||||
});
|
||||
|
||||
} else {
|
||||
imageUrl = "css/images/logindefault.png";
|
||||
}
|
||||
|
||||
fldImage.classList.remove('hide');
|
||||
fldImage.innerHTML = "<img width='140px' src='" + imageUrl + "' />";
|
||||
|
||||
var showImageEditing = false;
|
||||
|
||||
if (user.ConnectLinkType == 'Guest') {
|
||||
|
||||
page.querySelector('.connectMessage').classList.remove('hide');
|
||||
}
|
||||
else if (user.PrimaryImageTag) {
|
||||
|
||||
showImageEditing = true;
|
||||
page.querySelector('.connectMessage').classList.add('hide');
|
||||
|
||||
} else {
|
||||
showImageEditing = true;
|
||||
page.querySelector('.connectMessage').classList.add('hide');
|
||||
}
|
||||
|
||||
Dashboard.getCurrentUser().then(function (loggedInUser) {
|
||||
|
||||
if (showImageEditing && AppInfo.supportsFileInput && (loggedInUser.Policy.IsAdministrator || user.Policy.EnableUserPreferenceAccess)) {
|
||||
page.querySelector('.newImageForm').classList.remove('hide');
|
||||
page.querySelector('#btnDeleteImage').classList.remove('hide');
|
||||
} else {
|
||||
page.querySelector('.newImageForm').classList.add('hide');
|
||||
page.querySelector('#btnDeleteImage').classList.add('hide');
|
||||
}
|
||||
});
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function onFileReaderError(evt) {
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
|
||||
switch (evt.target.error.code) {
|
||||
case evt.target.error.NOT_FOUND_ERR:
|
||||
require(['toast'], function (toast) {
|
||||
toast(Globalize.translate('FileNotFound'));
|
||||
});
|
||||
break;
|
||||
case evt.target.error.NOT_READABLE_ERR:
|
||||
require(['toast'], function (toast) {
|
||||
toast(Globalize.translate('FileReadError'));
|
||||
});
|
||||
break;
|
||||
case evt.target.error.ABORT_ERR:
|
||||
break; // noop
|
||||
default:
|
||||
{
|
||||
require(['toast'], function (toast) {
|
||||
toast(Globalize.translate('FileReadError'));
|
||||
});
|
||||
break;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function onFileReaderAbort(evt) {
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
require(['toast'], function (toast) {
|
||||
toast(Globalize.translate('FileReadCancelled'));
|
||||
});
|
||||
}
|
||||
|
||||
function setFiles(page, files) {
|
||||
|
||||
var file = files[0];
|
||||
|
||||
if (!file || !file.type.match('image.*')) {
|
||||
page.querySelector('#userImageOutput').innerHTML = '';
|
||||
page.querySelector('#fldUpload').classList.add('hide');
|
||||
currentFile = null;
|
||||
return;
|
||||
}
|
||||
|
||||
currentFile = file;
|
||||
|
||||
var reader = new FileReader();
|
||||
|
||||
reader.onerror = onFileReaderError;
|
||||
reader.onloadstart = function () {
|
||||
page.querySelector('#fldUpload').classList.add('hide');
|
||||
};
|
||||
reader.onabort = onFileReaderAbort;
|
||||
|
||||
// Closure to capture the file information.
|
||||
reader.onload = function (e) {
|
||||
|
||||
// Render thumbnail.
|
||||
var html = ['<img style="max-width:500px;max-height:200px;" src="', e.target.result, '" title="', escape(file.name), '"/>'].join('');
|
||||
|
||||
page.querySelector('#userImageOutput').innerHTML = html;
|
||||
page.querySelector('#fldUpload').classList.remove('hide');
|
||||
};
|
||||
|
||||
// Read in the image file as a data URL.
|
||||
reader.readAsDataURL(file);
|
||||
}
|
||||
|
||||
function onImageDragOver(e) {
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
e.originalEvent.dataTransfer.dropEffect = 'Copy';
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return function (view, params) {
|
||||
|
||||
reloadUser(view);
|
||||
|
||||
var userpasswordpage = new Userpasswordpage(view, params);
|
||||
|
||||
var userImageDropZone = view.querySelector('#userImageDropZone');
|
||||
userImageDropZone.addEventListener('dragOver', onImageDragOver);
|
||||
userImageDropZone.addEventListener('drop', function (e) {
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
setFiles(view, e.originalEvent.dataTransfer.files);
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
view.querySelector('#btnDeleteImage').addEventListener('click', function () {
|
||||
|
||||
require(['confirm'], function (confirm) {
|
||||
|
||||
confirm(Globalize.translate('DeleteImageConfirmation'), Globalize.translate('DeleteImage')).then(function () {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var userId = getParameterByName("userId");
|
||||
|
||||
ApiClient.deleteUserImage(userId, "primary").then(function () {
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
|
||||
reloadUser(view);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
view.querySelector('.newImageForm').addEventListener('submit', function (e) {
|
||||
|
||||
var file = currentFile;
|
||||
|
||||
if (!file) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (file.type != "image/png" && file.type != "image/jpeg" && file.type != "image/jpeg") {
|
||||
return false;
|
||||
}
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var userId = getParameterByName("userId");
|
||||
|
||||
ApiClient.uploadUserImage(userId, 'Primary', file).then(function () {
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
|
||||
reloadUser(view);
|
||||
});
|
||||
|
||||
e.preventDefault();
|
||||
return false;
|
||||
});
|
||||
|
||||
view.querySelector('#uploadUserImage').addEventListener('change', function (e) {
|
||||
setFiles(view, e.target.files);
|
||||
});
|
||||
};
|
||||
});
|
||||
define(["scripts/userpasswordpage"],function(Userpasswordpage){"use strict";function reloadUser(page){var userId=getParameterByName("userId");Dashboard.showLoadingMsg(),ApiClient.getUser(userId).then(function(user){page.querySelector(".username").innerHTML=user.Name;var uploadUserImage=page.querySelector("#uploadUserImage");uploadUserImage.value="",uploadUserImage.dispatchEvent(new CustomEvent("change",{})),LibraryMenu.setTitle(user.Name);var imageUrl,fldImage=page.querySelector("#fldImage");imageUrl=user.PrimaryImageTag?ApiClient.getUserImageUrl(user.Id,{height:200,tag:user.PrimaryImageTag,type:"Primary"}):"css/images/logindefault.png",fldImage.classList.remove("hide"),fldImage.innerHTML="<img width='140px' src='"+imageUrl+"' />";var showImageEditing=!1;"Guest"==user.ConnectLinkType?page.querySelector(".connectMessage").classList.remove("hide"):user.PrimaryImageTag?(showImageEditing=!0,page.querySelector(".connectMessage").classList.add("hide")):(showImageEditing=!0,page.querySelector(".connectMessage").classList.add("hide")),Dashboard.getCurrentUser().then(function(loggedInUser){showImageEditing&&AppInfo.supportsFileInput&&(loggedInUser.Policy.IsAdministrator||user.Policy.EnableUserPreferenceAccess)?(page.querySelector(".newImageForm").classList.remove("hide"),page.querySelector("#btnDeleteImage").classList.remove("hide")):(page.querySelector(".newImageForm").classList.add("hide"),page.querySelector("#btnDeleteImage").classList.add("hide"))}),Dashboard.hideLoadingMsg()})}function onFileReaderError(evt){switch(Dashboard.hideLoadingMsg(),evt.target.error.code){case evt.target.error.NOT_FOUND_ERR:require(["toast"],function(toast){toast(Globalize.translate("FileNotFound"))});break;case evt.target.error.NOT_READABLE_ERR:require(["toast"],function(toast){toast(Globalize.translate("FileReadError"))});break;case evt.target.error.ABORT_ERR:break;default:require(["toast"],function(toast){toast(Globalize.translate("FileReadError"))})}}function onFileReaderAbort(evt){Dashboard.hideLoadingMsg(),require(["toast"],function(toast){toast(Globalize.translate("FileReadCancelled"))})}function setFiles(page,files){var file=files[0];if(!file||!file.type.match("image.*"))return page.querySelector("#userImageOutput").innerHTML="",page.querySelector("#fldUpload").classList.add("hide"),void(currentFile=null);currentFile=file;var reader=new FileReader;reader.onerror=onFileReaderError,reader.onloadstart=function(){page.querySelector("#fldUpload").classList.add("hide")},reader.onabort=onFileReaderAbort,reader.onload=function(e){var html=['<img style="max-width:500px;max-height:200px;" src="',e.target.result,'" title="',escape(file.name),'"/>'].join("");page.querySelector("#userImageOutput").innerHTML=html,page.querySelector("#fldUpload").classList.remove("hide")},reader.readAsDataURL(file)}function onImageDragOver(e){return e.preventDefault(),e.originalEvent.dataTransfer.dropEffect="Copy",!1}var currentFile;return function(view,params){reloadUser(view);var userImageDropZone=(new Userpasswordpage(view,params),view.querySelector("#userImageDropZone"));userImageDropZone.addEventListener("dragOver",onImageDragOver),userImageDropZone.addEventListener("drop",function(e){return e.preventDefault(),setFiles(view,e.originalEvent.dataTransfer.files),!1}),view.querySelector("#btnDeleteImage").addEventListener("click",function(){require(["confirm"],function(confirm){confirm(Globalize.translate("DeleteImageConfirmation"),Globalize.translate("DeleteImage")).then(function(){Dashboard.showLoadingMsg();var userId=getParameterByName("userId");ApiClient.deleteUserImage(userId,"primary").then(function(){Dashboard.hideLoadingMsg(),reloadUser(view)})})})}),view.querySelector(".newImageForm").addEventListener("submit",function(e){var file=currentFile;if(!file)return!1;if("image/png"!=file.type&&"image/jpeg"!=file.type&&"image/jpeg"!=file.type)return!1;Dashboard.showLoadingMsg();var userId=getParameterByName("userId");return ApiClient.uploadUserImage(userId,"Primary",file).then(function(){Dashboard.hideLoadingMsg(),reloadUser(view)}),e.preventDefault(),!1}),view.querySelector("#uploadUserImage").addEventListener("change",function(e){setFiles(view,e.target.files)})}});
|
|
@ -1,80 +1 @@
|
|||
define(['apphost', 'globalize', 'syncJobList', 'events', 'localsync', 'emby-button', 'paper-icon-button-light'], function (appHost, globalize, syncJobList, events, localSync) {
|
||||
'use strict';
|
||||
|
||||
return function (view, params) {
|
||||
|
||||
var interval;
|
||||
|
||||
function isLocalSyncManagement() {
|
||||
return appHost.supports('sync') && params.mode == 'offline';
|
||||
}
|
||||
|
||||
function refreshSyncStatus(page) {
|
||||
|
||||
if (isLocalSyncManagement()) {
|
||||
|
||||
var status = localSync.getSyncStatus();
|
||||
|
||||
if (status == "Active") {
|
||||
page.querySelector('.btnSyncNow').classList.add('hide');
|
||||
}
|
||||
else {
|
||||
page.querySelector('.btnSyncNow').classList.remove('hide');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function syncNow(page) {
|
||||
|
||||
localSync.sync();
|
||||
require(['toast'], function (toast) {
|
||||
toast(Globalize.translate('MessageSyncStarted'));
|
||||
});
|
||||
refreshSyncStatus(page);
|
||||
}
|
||||
|
||||
view.querySelector('.btnSyncNow').addEventListener('click', function () {
|
||||
syncNow(view);
|
||||
});
|
||||
|
||||
if (isLocalSyncManagement()) {
|
||||
|
||||
view.querySelector('.localSyncStatus').classList.remove('hide');
|
||||
|
||||
} else {
|
||||
view.querySelector('.localSyncStatus').classList.add('hide');
|
||||
}
|
||||
|
||||
var mySyncJobList = new syncJobList({
|
||||
isLocalSync: params.mode === 'offline',
|
||||
serverId: ApiClient.serverId(),
|
||||
userId: params.mode === 'offline' ? null : ApiClient.getCurrentUserId(),
|
||||
element: view.querySelector('.syncActivity'),
|
||||
mode: params.mode
|
||||
});
|
||||
|
||||
view.addEventListener('viewbeforeshow', function () {
|
||||
|
||||
refreshSyncStatus(view);
|
||||
|
||||
if (appHost.supports('sync')) {
|
||||
interval = setInterval(function () {
|
||||
refreshSyncStatus(view);
|
||||
}, 5000);
|
||||
}
|
||||
});
|
||||
|
||||
view.addEventListener('viewbeforehide', function () {
|
||||
|
||||
if (interval) {
|
||||
clearInterval(interval);
|
||||
interval = null;
|
||||
}
|
||||
});
|
||||
|
||||
view.addEventListener('viewdestroy', function () {
|
||||
|
||||
mySyncJobList.destroy();
|
||||
});
|
||||
};
|
||||
});
|
||||
define(["apphost","globalize","syncJobList","events","localsync","emby-button","paper-icon-button-light"],function(appHost,globalize,syncJobList,events,localSync){"use strict";return function(view,params){function isLocalSyncManagement(){return appHost.supports("sync")&&"offline"==params.mode}function refreshSyncStatus(page){if(isLocalSyncManagement()){var status=localSync.getSyncStatus();"Active"==status?page.querySelector(".btnSyncNow").classList.add("hide"):page.querySelector(".btnSyncNow").classList.remove("hide")}}function syncNow(page){localSync.sync(),require(["toast"],function(toast){toast(Globalize.translate("MessageSyncStarted"))}),refreshSyncStatus(page)}var interval;view.querySelector(".btnSyncNow").addEventListener("click",function(){syncNow(view)}),isLocalSyncManagement()?view.querySelector(".localSyncStatus").classList.remove("hide"):view.querySelector(".localSyncStatus").classList.add("hide");var mySyncJobList=new syncJobList({isLocalSync:"offline"===params.mode,serverId:ApiClient.serverId(),userId:"offline"===params.mode?null:ApiClient.getCurrentUserId(),element:view.querySelector(".syncActivity"),mode:params.mode});view.addEventListener("viewbeforeshow",function(){refreshSyncStatus(view),appHost.supports("sync")&&(interval=setInterval(function(){refreshSyncStatus(view)},5e3))}),view.addEventListener("viewbeforehide",function(){interval&&(clearInterval(interval),interval=null)}),view.addEventListener("viewdestroy",function(){mySyncJobList.destroy()})}});
|
|
@ -1,66 +1 @@
|
|||
define(['appSettings', 'apphost', 'emby-checkbox', 'emby-select', 'emby-input'], function (appSettings, appHost) {
|
||||
'use strict';
|
||||
|
||||
function loadForm(page, user) {
|
||||
|
||||
page.querySelector('#txtSyncPath').value = appSettings.syncPath() || '';
|
||||
page.querySelector('#chkWifi').checked = appSettings.syncOnlyOnWifi();
|
||||
page.querySelector('.selectAudioBitrate').value = appSettings.maxStaticMusicBitrate() || '';
|
||||
}
|
||||
|
||||
function saveUser(page) {
|
||||
|
||||
var syncPath = page.querySelector('#txtSyncPath').value;
|
||||
|
||||
appSettings.syncPath(syncPath);
|
||||
appSettings.syncOnlyOnWifi(page.querySelector('#chkWifi').checked);
|
||||
appSettings.maxStaticMusicBitrate(page.querySelector('.selectAudioBitrate').value || null);
|
||||
}
|
||||
|
||||
return function (view, params) {
|
||||
|
||||
view.querySelector('form').addEventListener('submit', function (e) {
|
||||
|
||||
saveUser(view);
|
||||
|
||||
// Disable default form submission
|
||||
e.preventDefault();
|
||||
return false;
|
||||
});
|
||||
|
||||
view.querySelector('#btnSelectSyncPath').addEventListener('click', function () {
|
||||
|
||||
require(['nativedirectorychooser'], function () {
|
||||
NativeDirectoryChooser.chooseDirectory().then(function (path) {
|
||||
|
||||
if (path) {
|
||||
view.querySelector('#txtSyncPath').value = path;
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
view.addEventListener('viewshow', function () {
|
||||
var page = this;
|
||||
|
||||
var userId = getParameterByName('userId') || Dashboard.getCurrentUserId();
|
||||
|
||||
ApiClient.getUser(userId).then(function (user) {
|
||||
|
||||
loadForm(page, user);
|
||||
});
|
||||
|
||||
if (appHost.supports('customsyncpath')) {
|
||||
page.querySelector('.fldSyncPath').classList.remove('hide');
|
||||
} else {
|
||||
page.querySelector('.fldSyncPath').classList.add('hide');
|
||||
}
|
||||
});
|
||||
|
||||
view.addEventListener('viewbeforehide', function () {
|
||||
|
||||
saveUser(this);
|
||||
});
|
||||
};
|
||||
|
||||
});
|
||||
define(["appSettings","apphost","emby-checkbox","emby-select","emby-input"],function(appSettings,appHost){"use strict";function loadForm(page,user){page.querySelector("#txtSyncPath").value=appSettings.syncPath()||"",page.querySelector("#chkWifi").checked=appSettings.syncOnlyOnWifi(),page.querySelector(".selectAudioBitrate").value=appSettings.maxStaticMusicBitrate()||""}function saveUser(page){var syncPath=page.querySelector("#txtSyncPath").value;appSettings.syncPath(syncPath),appSettings.syncOnlyOnWifi(page.querySelector("#chkWifi").checked),appSettings.maxStaticMusicBitrate(page.querySelector(".selectAudioBitrate").value||null)}return function(view,params){view.querySelector("form").addEventListener("submit",function(e){return saveUser(view),e.preventDefault(),!1}),view.querySelector("#btnSelectSyncPath").addEventListener("click",function(){require(["nativedirectorychooser"],function(){NativeDirectoryChooser.chooseDirectory().then(function(path){path&&(view.querySelector("#txtSyncPath").value=path)})})}),view.addEventListener("viewshow",function(){var page=this,userId=getParameterByName("userId")||Dashboard.getCurrentUserId();ApiClient.getUser(userId).then(function(user){loadForm(page,user)}),appHost.supports("customsyncpath")?page.querySelector(".fldSyncPath").classList.remove("hide"):page.querySelector(".fldSyncPath").classList.add("hide")}),view.addEventListener("viewbeforehide",function(){saveUser(this)})}});
|
|
@ -1,39 +1 @@
|
|||
define(['jQuery'], function ($) {
|
||||
'use strict';
|
||||
|
||||
$(document).on("pageshow", "#notificationsPage", function () {
|
||||
|
||||
// If there is no user logged in there can be no notifications
|
||||
if (!Dashboard.getCurrentUserId()) return;
|
||||
|
||||
var elem = $(".notificationsList");
|
||||
var startIndex = 0;
|
||||
var limit = 10;
|
||||
|
||||
Notifications.showNotificationsList(startIndex, limit, elem);
|
||||
|
||||
elem.on("click", ".btnPreviousPage", function (e) {
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
startIndex = startIndex - limit;
|
||||
|
||||
if (startIndex < 0) startIndex = 0;
|
||||
|
||||
Notifications.showNotificationsList(startIndex, limit, elem);
|
||||
|
||||
}).on("click", ".btnNextPage", function (e) {
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
startIndex = startIndex + limit;
|
||||
|
||||
Notifications.showNotificationsList(startIndex, limit, elem);
|
||||
|
||||
});
|
||||
|
||||
Notifications.markNotificationsRead([]);
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
define(["jQuery"],function($){"use strict";$(document).on("pageshow","#notificationsPage",function(){if(Dashboard.getCurrentUserId()){var elem=$(".notificationsList"),startIndex=0,limit=10;Notifications.showNotificationsList(startIndex,limit,elem),elem.on("click",".btnPreviousPage",function(e){e.preventDefault(),startIndex-=limit,startIndex<0&&(startIndex=0),Notifications.showNotificationsList(startIndex,limit,elem)}).on("click",".btnNextPage",function(e){e.preventDefault(),startIndex+=limit,Notifications.showNotificationsList(startIndex,limit,elem)}),Notifications.markNotificationsRead([])}})});
|
|
@ -1,216 +1 @@
|
|||
define(['libraryBrowser', 'listViewStyle'], function (libraryBrowser) {
|
||||
'use strict';
|
||||
|
||||
function notifications() {
|
||||
|
||||
var self = this;
|
||||
|
||||
self.getNotificationsSummaryPromise = null;
|
||||
|
||||
self.total = 0;
|
||||
|
||||
self.getNotificationsSummary = function () {
|
||||
|
||||
var apiClient = window.ApiClient;
|
||||
|
||||
if (!apiClient) {
|
||||
return;
|
||||
}
|
||||
|
||||
self.getNotificationsSummaryPromise = self.getNotificationsSummaryPromise || apiClient.getNotificationSummary(Dashboard.getCurrentUserId());
|
||||
|
||||
return self.getNotificationsSummaryPromise;
|
||||
};
|
||||
|
||||
self.updateNotificationCount = function () {
|
||||
|
||||
if (!Dashboard.getCurrentUserId()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!window.ApiClient) {
|
||||
return;
|
||||
}
|
||||
|
||||
var promise = self.getNotificationsSummary();
|
||||
|
||||
if (!promise) {
|
||||
return;
|
||||
}
|
||||
|
||||
promise.then(function (summary) {
|
||||
|
||||
var btnNotificationsInner = document.querySelector('.btnNotificationsInner');
|
||||
if (btnNotificationsInner) {
|
||||
|
||||
btnNotificationsInner.classList.remove('levelNormal');
|
||||
btnNotificationsInner.classList.remove('levelWarning');
|
||||
btnNotificationsInner.classList.remove('levelError');
|
||||
btnNotificationsInner.innerHTML = summary.UnreadCount;
|
||||
|
||||
if (summary.UnreadCount) {
|
||||
btnNotificationsInner.classList.add('level' + summary.MaxUnreadNotificationLevel);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
self.markNotificationsRead = function (ids, callback) {
|
||||
|
||||
ApiClient.markNotificationsRead(Dashboard.getCurrentUserId(), ids, true).then(function () {
|
||||
|
||||
self.getNotificationsSummaryPromise = null;
|
||||
|
||||
self.updateNotificationCount();
|
||||
|
||||
if (callback) {
|
||||
callback();
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
self.showNotificationsList = function (startIndex, limit, elem) {
|
||||
|
||||
refreshNotifications(startIndex, limit, elem, true);
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
function refreshNotifications(startIndex, limit, elem, showPaging) {
|
||||
|
||||
var apiClient = window.ApiClient;
|
||||
|
||||
if (apiClient) {
|
||||
return apiClient.getNotifications(Dashboard.getCurrentUserId(), { StartIndex: startIndex, Limit: limit }).then(function (result) {
|
||||
|
||||
listUnreadNotifications(result.Notifications, result.TotalRecordCount, startIndex, limit, elem, showPaging);
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function listUnreadNotifications(list, totalRecordCount, startIndex, limit, elem, showPaging) {
|
||||
|
||||
if (!totalRecordCount) {
|
||||
elem.html('<p style="padding:.5em 1em;">' + Globalize.translate('LabelNoUnreadNotifications') + '</p>');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
Notifications.total = totalRecordCount;
|
||||
|
||||
var html = '';
|
||||
|
||||
if (totalRecordCount > limit && showPaging === true) {
|
||||
|
||||
var query = { StartIndex: startIndex, Limit: limit };
|
||||
|
||||
html += libraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
totalRecordCount: totalRecordCount,
|
||||
showLimit: false,
|
||||
updatePageSizeSetting: false
|
||||
});
|
||||
}
|
||||
|
||||
require(['humanedate'], function () {
|
||||
for (var i = 0, length = list.length; i < length; i++) {
|
||||
|
||||
var notification = list[i];
|
||||
|
||||
html += getNotificationHtml(notification);
|
||||
|
||||
}
|
||||
|
||||
elem.html(html).trigger('create');
|
||||
});
|
||||
}
|
||||
|
||||
function getNotificationHtml(notification) {
|
||||
|
||||
var itemHtml = '';
|
||||
|
||||
if (notification.Url) {
|
||||
itemHtml += '<a class="clearLink" href="' + notification.Url + '" target="_blank">';
|
||||
}
|
||||
|
||||
itemHtml += '<div class="listItem">';
|
||||
|
||||
if (notification.Level == "Error") {
|
||||
itemHtml += '<i class="listItemIcon md-icon" style="background:#cc3333;">error</i>';
|
||||
} else {
|
||||
itemHtml += '<i class="listItemIcon md-icon">dvr</i>';
|
||||
}
|
||||
|
||||
itemHtml += '<div class="listItemBody three-line">';
|
||||
|
||||
itemHtml += '<h3 class="listItemBodyText">';
|
||||
itemHtml += notification.Name;
|
||||
itemHtml += '</h3>';
|
||||
|
||||
itemHtml += '<div class="listItemBodyText secondary">';
|
||||
itemHtml += humane_date(notification.Date);
|
||||
itemHtml += '</div>';
|
||||
|
||||
if (notification.Description) {
|
||||
itemHtml += '<div class="listItemBodyText secondary listItemBodyText-nowrap">';
|
||||
itemHtml += notification.Description;
|
||||
itemHtml += '</div>';
|
||||
}
|
||||
|
||||
itemHtml += '</div>';
|
||||
|
||||
itemHtml += '</div>';
|
||||
|
||||
if (notification.Url) {
|
||||
itemHtml += '</a>';
|
||||
}
|
||||
|
||||
return itemHtml;
|
||||
}
|
||||
|
||||
window.Notifications = new notifications();
|
||||
var needsRefresh = true;
|
||||
|
||||
function onWebSocketMessage(e, msg) {
|
||||
if (msg.MessageType === "NotificationUpdated" || msg.MessageType === "NotificationAdded" || msg.MessageType === "NotificationsMarkedRead") {
|
||||
|
||||
Notifications.getNotificationsSummaryPromise = null;
|
||||
|
||||
Notifications.updateNotificationCount();
|
||||
}
|
||||
}
|
||||
|
||||
function initializeApiClient(apiClient) {
|
||||
Events.off(apiClient, "websocketmessage", onWebSocketMessage);
|
||||
Events.on(apiClient, "websocketmessage", onWebSocketMessage);
|
||||
}
|
||||
|
||||
if (window.ApiClient) {
|
||||
initializeApiClient(window.ApiClient);
|
||||
}
|
||||
|
||||
Events.on(ConnectionManager, 'apiclientcreated', function (e, apiClient) {
|
||||
initializeApiClient(apiClient);
|
||||
});
|
||||
|
||||
Events.on(ConnectionManager, 'localusersignedin', function () {
|
||||
needsRefresh = true;
|
||||
});
|
||||
|
||||
Events.on(ConnectionManager, 'localusersignedout', function () {
|
||||
needsRefresh = true;
|
||||
});
|
||||
|
||||
pageClassOn('pageshow', "type-interior", function () {
|
||||
|
||||
if (needsRefresh) {
|
||||
Notifications.updateNotificationCount();
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
define(["libraryBrowser","listViewStyle"],function(libraryBrowser){"use strict";function notifications(){var self=this;self.getNotificationsSummaryPromise=null,self.total=0,self.getNotificationsSummary=function(){var apiClient=window.ApiClient;if(apiClient)return self.getNotificationsSummaryPromise=self.getNotificationsSummaryPromise||apiClient.getNotificationSummary(Dashboard.getCurrentUserId()),self.getNotificationsSummaryPromise},self.updateNotificationCount=function(){if(Dashboard.getCurrentUserId()&&window.ApiClient){var promise=self.getNotificationsSummary();promise&&promise.then(function(summary){var btnNotificationsInner=document.querySelector(".btnNotificationsInner");btnNotificationsInner&&(btnNotificationsInner.classList.remove("levelNormal"),btnNotificationsInner.classList.remove("levelWarning"),btnNotificationsInner.classList.remove("levelError"),btnNotificationsInner.innerHTML=summary.UnreadCount,summary.UnreadCount&&btnNotificationsInner.classList.add("level"+summary.MaxUnreadNotificationLevel))})}},self.markNotificationsRead=function(ids,callback){ApiClient.markNotificationsRead(Dashboard.getCurrentUserId(),ids,!0).then(function(){self.getNotificationsSummaryPromise=null,self.updateNotificationCount(),callback&&callback()})},self.showNotificationsList=function(startIndex,limit,elem){refreshNotifications(startIndex,limit,elem,!0)}}function refreshNotifications(startIndex,limit,elem,showPaging){var apiClient=window.ApiClient;if(apiClient)return apiClient.getNotifications(Dashboard.getCurrentUserId(),{StartIndex:startIndex,Limit:limit}).then(function(result){listUnreadNotifications(result.Notifications,result.TotalRecordCount,startIndex,limit,elem,showPaging)})}function listUnreadNotifications(list,totalRecordCount,startIndex,limit,elem,showPaging){if(!totalRecordCount)return void elem.html('<p style="padding:.5em 1em;">'+Globalize.translate("LabelNoUnreadNotifications")+"</p>");Notifications.total=totalRecordCount;var html="";if(totalRecordCount>limit&&showPaging===!0){var query={StartIndex:startIndex,Limit:limit};html+=libraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:totalRecordCount,showLimit:!1,updatePageSizeSetting:!1})}require(["humanedate"],function(){for(var i=0,length=list.length;i<length;i++){var notification=list[i];html+=getNotificationHtml(notification)}elem.html(html).trigger("create")})}function getNotificationHtml(notification){var itemHtml="";return notification.Url&&(itemHtml+='<a class="clearLink" href="'+notification.Url+'" target="_blank">'),itemHtml+='<div class="listItem">',itemHtml+="Error"==notification.Level?'<i class="listItemIcon md-icon" style="background:#cc3333;">error</i>':'<i class="listItemIcon md-icon">dvr</i>',itemHtml+='<div class="listItemBody three-line">',itemHtml+='<h3 class="listItemBodyText">',itemHtml+=notification.Name,itemHtml+="</h3>",itemHtml+='<div class="listItemBodyText secondary">',itemHtml+=humane_date(notification.Date),itemHtml+="</div>",notification.Description&&(itemHtml+='<div class="listItemBodyText secondary listItemBodyText-nowrap">',itemHtml+=notification.Description,itemHtml+="</div>"),itemHtml+="</div>",itemHtml+="</div>",notification.Url&&(itemHtml+="</a>"),itemHtml}function onWebSocketMessage(e,msg){"NotificationUpdated"!==msg.MessageType&&"NotificationAdded"!==msg.MessageType&&"NotificationsMarkedRead"!==msg.MessageType||(Notifications.getNotificationsSummaryPromise=null,Notifications.updateNotificationCount())}function initializeApiClient(apiClient){Events.off(apiClient,"websocketmessage",onWebSocketMessage),Events.on(apiClient,"websocketmessage",onWebSocketMessage)}window.Notifications=new notifications;var needsRefresh=!0;window.ApiClient&&initializeApiClient(window.ApiClient),Events.on(ConnectionManager,"apiclientcreated",function(e,apiClient){initializeApiClient(apiClient)}),Events.on(ConnectionManager,"localusersignedin",function(){needsRefresh=!0}),Events.on(ConnectionManager,"localusersignedout",function(){needsRefresh=!0}),pageClassOn("pageshow","type-interior",function(){needsRefresh&&Notifications.updateNotificationCount()})});
|
|
@ -1,193 +1 @@
|
|||
define(['jQuery', 'emby-checkbox', 'fnchecked'], function ($) {
|
||||
'use strict';
|
||||
|
||||
var notificationsConfigurationKey = "notifications";
|
||||
|
||||
function fillItems(elem, items, cssClass, idPrefix, currentList, isEnabledList) {
|
||||
|
||||
var html = '<div class="checkboxList paperList" style="padding: .5em 1em;">';
|
||||
|
||||
html += items.map(function (u) {
|
||||
|
||||
var isChecked = isEnabledList ? currentList.indexOf(u.Id) != -1 : currentList.indexOf(u.Id) == -1;
|
||||
|
||||
var checkedHtml = isChecked ? ' checked="checked"' : '';
|
||||
|
||||
return '<label><input is="emby-checkbox" class="' + cssClass + '" type="checkbox" data-itemid="' + u.Id + '"' + checkedHtml + '/><span>' + u.Name + '</span></label>';
|
||||
|
||||
}).join('');
|
||||
|
||||
html += '</div>';
|
||||
|
||||
elem.html(html).trigger('create');
|
||||
}
|
||||
|
||||
function reload(page) {
|
||||
|
||||
var type = getParameterByName('type');
|
||||
|
||||
var promise1 = ApiClient.getUsers();
|
||||
var promise2 = ApiClient.getNamedConfiguration(notificationsConfigurationKey);
|
||||
var promise3 = ApiClient.getJSON(ApiClient.getUrl("Notifications/Types"));
|
||||
var promise4 = ApiClient.getJSON(ApiClient.getUrl("Notifications/Services"));
|
||||
|
||||
Promise.all([promise1, promise2, promise3, promise4]).then(function (responses) {
|
||||
|
||||
var users = responses[0];
|
||||
var notificationOptions = responses[1];
|
||||
var types = responses[2];
|
||||
var services = responses[3];
|
||||
|
||||
var notificationConfig = notificationOptions.Options.filter(function (n) {
|
||||
|
||||
return n.Type == type;
|
||||
|
||||
})[0];
|
||||
|
||||
var typeInfo = types.filter(function (n) {
|
||||
|
||||
return n.Type == type;
|
||||
|
||||
})[0] || {};
|
||||
|
||||
if (typeInfo.IsBasedOnUserEvent) {
|
||||
$('.monitorUsers', page).show();
|
||||
} else {
|
||||
$('.monitorUsers', page).hide();
|
||||
}
|
||||
|
||||
if (typeInfo.Variables.length) {
|
||||
$('.tokenHelp', page).show();
|
||||
|
||||
$('.tokenList', page).html(typeInfo.Variables.map(function (v) {
|
||||
|
||||
return '{' + v + '}';
|
||||
|
||||
}).join(', '));
|
||||
|
||||
} else {
|
||||
$('.tokenHelp', page).hide();
|
||||
}
|
||||
|
||||
$('.notificationType', page).html(typeInfo.Name || 'Unknown Notification');
|
||||
|
||||
if (!notificationConfig) {
|
||||
|
||||
notificationConfig = {
|
||||
DisabledMonitorUsers: [],
|
||||
SendToUsers: [],
|
||||
DisabledServices: [],
|
||||
SendToUserMode: 'Admins'
|
||||
};
|
||||
}
|
||||
|
||||
fillItems($('.monitorUsersList', page), users, 'chkMonitor', 'chkMonitor', notificationConfig.DisabledMonitorUsers);
|
||||
fillItems($('.sendToUsersList', page), users, 'chkSendTo', 'chkSendTo', notificationConfig.SendToUsers, true);
|
||||
fillItems($('.servicesList', page), services, 'chkService', 'chkService', notificationConfig.DisabledServices);
|
||||
|
||||
$('#chkEnabled', page).checked(notificationConfig.Enabled || false);
|
||||
|
||||
$('#txtTitle', page).val(notificationConfig.Title || typeInfo.DefaultTitle);
|
||||
|
||||
$('#selectUsers', page).val(notificationConfig.SendToUserMode).trigger('change');
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
function save(page) {
|
||||
|
||||
var type = getParameterByName('type');
|
||||
|
||||
var promise1 = ApiClient.getNamedConfiguration(notificationsConfigurationKey);
|
||||
var promise2 = ApiClient.getJSON(ApiClient.getUrl("Notifications/Types"));
|
||||
|
||||
Promise.all([promise1, promise2]).then(function (responses) {
|
||||
|
||||
var notificationOptions = responses[0];
|
||||
var types = responses[1];
|
||||
|
||||
var notificationConfig = notificationOptions.Options.filter(function (n) {
|
||||
|
||||
return n.Type == type;
|
||||
|
||||
})[0];
|
||||
|
||||
if (!notificationConfig) {
|
||||
notificationConfig = {
|
||||
Type: type
|
||||
};
|
||||
notificationOptions.Options.push(notificationConfig);
|
||||
}
|
||||
|
||||
var typeInfo = types.filter(function (n) {
|
||||
|
||||
return n.Type == type;
|
||||
|
||||
})[0] || {};
|
||||
|
||||
notificationConfig.Enabled = $('#chkEnabled', page).checked();
|
||||
notificationConfig.Title = $('#txtTitle', page).val();
|
||||
notificationConfig.SendToUserMode = $('#selectUsers', page).val();
|
||||
|
||||
// Don't persist if it's just the default
|
||||
if (notificationConfig.Title == typeInfo.DefaultTitle) {
|
||||
notificationConfig.Title = null;
|
||||
}
|
||||
|
||||
notificationConfig.DisabledMonitorUsers = $('.chkMonitor', page).get().filter(function (c) {
|
||||
return !c.checked;
|
||||
}).map(function (c) {
|
||||
return c.getAttribute('data-itemid');
|
||||
});
|
||||
|
||||
notificationConfig.SendToUsers = $('.chkSendTo', page).get().filter(function (c) {
|
||||
return c.checked;
|
||||
}).map(function (c) {
|
||||
return c.getAttribute('data-itemid');
|
||||
});
|
||||
|
||||
notificationConfig.DisabledServices = $('.chkService', page).get().filter(function (c) {
|
||||
return !c.checked;
|
||||
}).map(function (c) {
|
||||
return c.getAttribute('data-itemid');
|
||||
});
|
||||
|
||||
ApiClient.updateNamedConfiguration(notificationsConfigurationKey, notificationOptions).then(function (r) {
|
||||
|
||||
Dashboard.processServerConfigurationUpdateResult();
|
||||
Dashboard.navigate('notificationsettings.html');
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
function onSubmit() {
|
||||
var page = $(this).parents('.page');
|
||||
save(page);
|
||||
return false;
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#notificationSettingPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
$('#selectUsers', page).on('change', function () {
|
||||
|
||||
if (this.value == 'Custom') {
|
||||
$('.selectCustomUsers', page).show();
|
||||
} else {
|
||||
$('.selectCustomUsers', page).hide();
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
$('.notificationSettingForm').off('submit', onSubmit).on('submit', onSubmit);
|
||||
|
||||
}).on('pageshow', "#notificationSettingPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
reload(page);
|
||||
});
|
||||
|
||||
});
|
||||
define(["jQuery","emby-checkbox","fnchecked"],function($){"use strict";function fillItems(elem,items,cssClass,idPrefix,currentList,isEnabledList){var html='<div class="checkboxList paperList" style="padding: .5em 1em;">';html+=items.map(function(u){var isChecked=isEnabledList?currentList.indexOf(u.Id)!=-1:currentList.indexOf(u.Id)==-1,checkedHtml=isChecked?' checked="checked"':"";return'<label><input is="emby-checkbox" class="'+cssClass+'" type="checkbox" data-itemid="'+u.Id+'"'+checkedHtml+"/><span>"+u.Name+"</span></label>"}).join(""),html+="</div>",elem.html(html).trigger("create")}function reload(page){var type=getParameterByName("type"),promise1=ApiClient.getUsers(),promise2=ApiClient.getNamedConfiguration(notificationsConfigurationKey),promise3=ApiClient.getJSON(ApiClient.getUrl("Notifications/Types")),promise4=ApiClient.getJSON(ApiClient.getUrl("Notifications/Services"));Promise.all([promise1,promise2,promise3,promise4]).then(function(responses){var users=responses[0],notificationOptions=responses[1],types=responses[2],services=responses[3],notificationConfig=notificationOptions.Options.filter(function(n){return n.Type==type})[0],typeInfo=types.filter(function(n){return n.Type==type})[0]||{};typeInfo.IsBasedOnUserEvent?$(".monitorUsers",page).show():$(".monitorUsers",page).hide(),typeInfo.Variables.length?($(".tokenHelp",page).show(),$(".tokenList",page).html(typeInfo.Variables.map(function(v){return"{"+v+"}"}).join(", "))):$(".tokenHelp",page).hide(),$(".notificationType",page).html(typeInfo.Name||"Unknown Notification"),notificationConfig||(notificationConfig={DisabledMonitorUsers:[],SendToUsers:[],DisabledServices:[],SendToUserMode:"Admins"}),fillItems($(".monitorUsersList",page),users,"chkMonitor","chkMonitor",notificationConfig.DisabledMonitorUsers),fillItems($(".sendToUsersList",page),users,"chkSendTo","chkSendTo",notificationConfig.SendToUsers,!0),fillItems($(".servicesList",page),services,"chkService","chkService",notificationConfig.DisabledServices),$("#chkEnabled",page).checked(notificationConfig.Enabled||!1),$("#txtTitle",page).val(notificationConfig.Title||typeInfo.DefaultTitle),$("#selectUsers",page).val(notificationConfig.SendToUserMode).trigger("change")})}function save(page){var type=getParameterByName("type"),promise1=ApiClient.getNamedConfiguration(notificationsConfigurationKey),promise2=ApiClient.getJSON(ApiClient.getUrl("Notifications/Types"));Promise.all([promise1,promise2]).then(function(responses){var notificationOptions=responses[0],types=responses[1],notificationConfig=notificationOptions.Options.filter(function(n){return n.Type==type})[0];notificationConfig||(notificationConfig={Type:type},notificationOptions.Options.push(notificationConfig));var typeInfo=types.filter(function(n){return n.Type==type})[0]||{};notificationConfig.Enabled=$("#chkEnabled",page).checked(),notificationConfig.Title=$("#txtTitle",page).val(),notificationConfig.SendToUserMode=$("#selectUsers",page).val(),notificationConfig.Title==typeInfo.DefaultTitle&&(notificationConfig.Title=null),notificationConfig.DisabledMonitorUsers=$(".chkMonitor",page).get().filter(function(c){return!c.checked}).map(function(c){return c.getAttribute("data-itemid")}),notificationConfig.SendToUsers=$(".chkSendTo",page).get().filter(function(c){return c.checked}).map(function(c){return c.getAttribute("data-itemid")}),notificationConfig.DisabledServices=$(".chkService",page).get().filter(function(c){return!c.checked}).map(function(c){return c.getAttribute("data-itemid")}),ApiClient.updateNamedConfiguration(notificationsConfigurationKey,notificationOptions).then(function(r){Dashboard.processServerConfigurationUpdateResult(),Dashboard.navigate("notificationsettings.html")})})}function onSubmit(){var page=$(this).parents(".page");return save(page),!1}var notificationsConfigurationKey="notifications";$(document).on("pageinit","#notificationSettingPage",function(){var page=this;$("#selectUsers",page).on("change",function(){"Custom"==this.value?$(".selectCustomUsers",page).show():$(".selectCustomUsers",page).hide()}),$(".notificationSettingForm").off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#notificationSettingPage",function(){var page=this;reload(page)})});
|
|
@ -1,87 +1 @@
|
|||
define(['jQuery', 'listViewStyle'], function ($) {
|
||||
'use strict';
|
||||
|
||||
function reload(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
ApiClient.getJSON(ApiClient.getUrl("Notifications/Types")).then(function (list) {
|
||||
|
||||
var html = '';
|
||||
|
||||
var lastCategory = "";
|
||||
|
||||
html += list.map(function (i) {
|
||||
|
||||
var itemHtml = '';
|
||||
|
||||
if (i.Category != lastCategory) {
|
||||
lastCategory = i.Category;
|
||||
|
||||
if (lastCategory) {
|
||||
itemHtml += '</div>';
|
||||
|
||||
}
|
||||
itemHtml += '<h1>';
|
||||
itemHtml += i.Category;
|
||||
itemHtml += '</h1>';
|
||||
|
||||
itemHtml += '<div class="paperList" style="margin-bottom:2em;">';
|
||||
}
|
||||
|
||||
itemHtml += '<a class="clearLink" href="notificationsetting.html?type=' + i.Type + '">';
|
||||
itemHtml += '<div class="listItem">';
|
||||
|
||||
if (i.Enabled) {
|
||||
itemHtml += '<i class="listItemIcon md-icon">notifications_active</i>';
|
||||
}
|
||||
else {
|
||||
itemHtml += '<i class="listItemIcon md-icon" style="background-color:#999;">notifications_off</i>';
|
||||
}
|
||||
|
||||
itemHtml += '<div class="listItemBody">';
|
||||
itemHtml += '<div class="listItemBodyText">' + i.Name + '</div>';
|
||||
|
||||
itemHtml += '</div>';
|
||||
|
||||
itemHtml += '<button type="button" is="paper-icon-button-light"><i class="md-icon">mode_edit</i></button>';
|
||||
|
||||
itemHtml += '</div>';
|
||||
itemHtml += '</a>';
|
||||
|
||||
return itemHtml;
|
||||
|
||||
}).join('');
|
||||
|
||||
if (list.length) {
|
||||
html += '</div>';
|
||||
}
|
||||
|
||||
$('.notificationList', page).html(html).trigger('create');
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
function getTabs() {
|
||||
return [
|
||||
{
|
||||
href: 'notificationsettings.html',
|
||||
name: Globalize.translate('TabNotifications')
|
||||
},
|
||||
{
|
||||
href: 'appservices.html?context=notifications',
|
||||
name: Globalize.translate('TabServices')
|
||||
}];
|
||||
}
|
||||
|
||||
return function (view, params) {
|
||||
|
||||
view.addEventListener('viewshow', function () {
|
||||
|
||||
LibraryMenu.setTabs('notifications', 0, getTabs);
|
||||
|
||||
reload(view);
|
||||
});
|
||||
};
|
||||
});
|
||||
define(["jQuery","listViewStyle"],function($){"use strict";function reload(page){Dashboard.showLoadingMsg(),ApiClient.getJSON(ApiClient.getUrl("Notifications/Types")).then(function(list){var html="",lastCategory="";html+=list.map(function(i){var itemHtml="";return i.Category!=lastCategory&&(lastCategory=i.Category,lastCategory&&(itemHtml+="</div>"),itemHtml+="<h1>",itemHtml+=i.Category,itemHtml+="</h1>",itemHtml+='<div class="paperList" style="margin-bottom:2em;">'),itemHtml+='<a class="clearLink" href="notificationsetting.html?type='+i.Type+'">',itemHtml+='<div class="listItem">',itemHtml+=i.Enabled?'<i class="listItemIcon md-icon">notifications_active</i>':'<i class="listItemIcon md-icon" style="background-color:#999;">notifications_off</i>',itemHtml+='<div class="listItemBody">',itemHtml+='<div class="listItemBodyText">'+i.Name+"</div>",itemHtml+="</div>",itemHtml+='<button type="button" is="paper-icon-button-light"><i class="md-icon">mode_edit</i></button>',itemHtml+="</div>",itemHtml+="</a>"}).join(""),list.length&&(html+="</div>"),$(".notificationList",page).html(html).trigger("create"),Dashboard.hideLoadingMsg()})}function getTabs(){return[{href:"notificationsettings.html",name:Globalize.translate("TabNotifications")},{href:"appservices.html?context=notifications",name:Globalize.translate("TabServices")}]}return function(view,params){view.addEventListener("viewshow",function(){LibraryMenu.setTabs("notifications",0,getTabs),reload(view)})}});
|
File diff suppressed because one or more lines are too long
|
@ -1,31 +1 @@
|
|||
define(['components/remotecontrol', 'emby-button'], function (remotecontrolFactory) {
|
||||
'use strict';
|
||||
|
||||
return function (view, params) {
|
||||
|
||||
var self = this;
|
||||
|
||||
var remoteControl = new remotecontrolFactory();
|
||||
remoteControl.init(view, view.querySelector('.remoteControlContent'));
|
||||
|
||||
view.addEventListener('viewbeforeshow', function (e) {
|
||||
document.body.classList.add('hiddenViewMenuBar');
|
||||
document.body.classList.add('hiddenNowPlayingBar');
|
||||
|
||||
if (remoteControl) {
|
||||
remoteControl.onShow();
|
||||
}
|
||||
});
|
||||
|
||||
view.addEventListener('viewbeforehide', function (e) {
|
||||
|
||||
if (remoteControl) {
|
||||
remoteControl.destroy();
|
||||
}
|
||||
|
||||
document.body.classList.remove('hiddenViewMenuBar');
|
||||
document.body.classList.remove('hiddenNowPlayingBar');
|
||||
});
|
||||
};
|
||||
|
||||
});
|
||||
define(["components/remotecontrol","emby-button"],function(remotecontrolFactory){"use strict";return function(view,params){var remoteControl=new remotecontrolFactory;remoteControl.init(view,view.querySelector(".remoteControlContent")),view.addEventListener("viewbeforeshow",function(e){document.body.classList.add("hiddenViewMenuBar"),document.body.classList.add("hiddenNowPlayingBar"),remoteControl&&remoteControl.onShow()}),view.addEventListener("viewbeforehide",function(e){remoteControl&&remoteControl.destroy(),document.body.classList.remove("hiddenViewMenuBar"),document.body.classList.remove("hiddenNowPlayingBar")})}});
|
|
@ -1,164 +1 @@
|
|||
define(['jQuery', 'cardBuilder', 'imageLoader', 'emby-itemscontainer'], function ($, cardBuilder, imageLoader) {
|
||||
'use strict';
|
||||
|
||||
var view = 'Poster';
|
||||
|
||||
var data = {};
|
||||
function getQuery() {
|
||||
|
||||
var key = getSavedQueryKey();
|
||||
var pageData = data[key];
|
||||
|
||||
if (!pageData) {
|
||||
pageData = data[key] = {
|
||||
query: {
|
||||
SortBy: "IsFolder,SortName",
|
||||
SortOrder: "Ascending",
|
||||
Fields: "PrimaryImageAspectRatio,SortName",
|
||||
ImageTypeLimit: 1,
|
||||
EnableImageTypes: "Primary",
|
||||
StartIndex: 0,
|
||||
Limit: LibraryBrowser.getDefaultPageSize()
|
||||
}
|
||||
};
|
||||
|
||||
pageData.query.Recursive = false;
|
||||
pageData.query.MediaTypes = null;
|
||||
pageData.query.ParentId = getParameterByName('parentId') || LibraryMenu.getTopParentId();
|
||||
|
||||
LibraryBrowser.loadSavedQueryValues(key, pageData.query);
|
||||
}
|
||||
return pageData.query;
|
||||
}
|
||||
|
||||
function getSavedQueryKey() {
|
||||
|
||||
return LibraryBrowser.getSavedQueryKey('v1');
|
||||
}
|
||||
|
||||
function reloadItems(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var query = getQuery();
|
||||
ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function (result) {
|
||||
|
||||
// Scroll back up so they can see the results from the beginning
|
||||
window.scrollTo(0, 0);
|
||||
|
||||
var html = '';
|
||||
var pagingHtml = LibraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
totalRecordCount: result.TotalRecordCount,
|
||||
viewButton: false,
|
||||
showLimit: false
|
||||
});
|
||||
|
||||
page.querySelector('.listTopPaging').innerHTML = pagingHtml;
|
||||
|
||||
if (view == "Poster") {
|
||||
// Poster
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "square",
|
||||
context: getParameterByName('context') || 'photos',
|
||||
overlayText: true,
|
||||
lazy: true,
|
||||
coverImage: true,
|
||||
showTitle: false,
|
||||
centerText: true
|
||||
});
|
||||
}
|
||||
|
||||
var elem = page.querySelector('.itemsContainer');
|
||||
elem.innerHTML = html + pagingHtml;
|
||||
imageLoader.lazyChildren(elem);
|
||||
|
||||
$('.btnNextPage', page).on('click', function () {
|
||||
query.StartIndex += query.Limit;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.btnPreviousPage', page).on('click', function () {
|
||||
query.StartIndex -= query.Limit;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
function startSlideshow(page, itemQuery, startItemId) {
|
||||
|
||||
var userId = Dashboard.getCurrentUserId();
|
||||
|
||||
var localQuery = $.extend({}, itemQuery);
|
||||
localQuery.StartIndex = 0;
|
||||
localQuery.Limit = null;
|
||||
localQuery.MediaTypes = "Photo";
|
||||
localQuery.Recursive = true;
|
||||
localQuery.Filters = "IsNotFolder";
|
||||
|
||||
ApiClient.getItems(userId, localQuery).then(function (result) {
|
||||
|
||||
showSlideshow(page, result.Items, startItemId);
|
||||
});
|
||||
}
|
||||
|
||||
function showSlideshow(page, items, startItemId) {
|
||||
|
||||
var index = items.map(function (i) {
|
||||
return i.Id;
|
||||
|
||||
}).indexOf(startItemId);
|
||||
|
||||
if (index == -1) {
|
||||
index = 0;
|
||||
}
|
||||
|
||||
require(['slideshow'], function (slideshow) {
|
||||
|
||||
var newSlideShow = new slideshow({
|
||||
showTitle: false,
|
||||
cover: false,
|
||||
items: items,
|
||||
startIndex: index,
|
||||
interval: 7000,
|
||||
interactive: true
|
||||
});
|
||||
|
||||
newSlideShow.show();
|
||||
});
|
||||
}
|
||||
|
||||
function onListItemClick(e) {
|
||||
|
||||
var page = $(this).parents('.page')[0];
|
||||
var info = LibraryBrowser.getListItemInfo(this);
|
||||
|
||||
if (info.mediaType == 'Photo') {
|
||||
var query = getQuery();
|
||||
|
||||
Photos.startSlideshow(page, query, info.id);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
pageIdOn('pageinit', "photosPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
reloadItems(page, 0);
|
||||
|
||||
$(page).on('click', '.mediaItem', onListItemClick);
|
||||
|
||||
});
|
||||
|
||||
window.Photos = {
|
||||
startSlideshow: startSlideshow
|
||||
};
|
||||
|
||||
});
|
||||
define(["jQuery","cardBuilder","imageLoader","emby-itemscontainer"],function($,cardBuilder,imageLoader){"use strict";function getQuery(){var key=getSavedQueryKey(),pageData=data[key];return pageData||(pageData=data[key]={query:{SortBy:"IsFolder,SortName",SortOrder:"Ascending",Fields:"PrimaryImageAspectRatio,SortName",ImageTypeLimit:1,EnableImageTypes:"Primary",StartIndex:0,Limit:LibraryBrowser.getDefaultPageSize()}},pageData.query.Recursive=!1,pageData.query.MediaTypes=null,pageData.query.ParentId=getParameterByName("parentId")||LibraryMenu.getTopParentId(),LibraryBrowser.loadSavedQueryValues(key,pageData.query)),pageData.query}function getSavedQueryKey(){return LibraryBrowser.getSavedQueryKey("v1")}function reloadItems(page){Dashboard.showLoadingMsg();var query=getQuery();ApiClient.getItems(Dashboard.getCurrentUserId(),query).then(function(result){window.scrollTo(0,0);var html="",pagingHtml=LibraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,viewButton:!1,showLimit:!1});page.querySelector(".listTopPaging").innerHTML=pagingHtml,"Poster"==view&&(html=cardBuilder.getCardsHtml({items:result.Items,shape:"square",context:getParameterByName("context")||"photos",overlayText:!0,lazy:!0,coverImage:!0,showTitle:!1,centerText:!0}));var elem=page.querySelector(".itemsContainer");elem.innerHTML=html+pagingHtml,imageLoader.lazyChildren(elem),$(".btnNextPage",page).on("click",function(){query.StartIndex+=query.Limit,reloadItems(page)}),$(".btnPreviousPage",page).on("click",function(){query.StartIndex-=query.Limit,reloadItems(page)}),LibraryBrowser.saveQueryValues(getSavedQueryKey(),query),Dashboard.hideLoadingMsg()})}function startSlideshow(page,itemQuery,startItemId){var userId=Dashboard.getCurrentUserId(),localQuery=$.extend({},itemQuery);localQuery.StartIndex=0,localQuery.Limit=null,localQuery.MediaTypes="Photo",localQuery.Recursive=!0,localQuery.Filters="IsNotFolder",ApiClient.getItems(userId,localQuery).then(function(result){showSlideshow(page,result.Items,startItemId)})}function showSlideshow(page,items,startItemId){var index=items.map(function(i){return i.Id}).indexOf(startItemId);index==-1&&(index=0),require(["slideshow"],function(slideshow){var newSlideShow=new slideshow({showTitle:!1,cover:!1,items:items,startIndex:index,interval:7e3,interactive:!0});newSlideShow.show()})}function onListItemClick(e){var page=$(this).parents(".page")[0],info=LibraryBrowser.getListItemInfo(this);if("Photo"==info.mediaType){var query=getQuery();return Photos.startSlideshow(page,query,info.id),!1}}var view="Poster",data={};pageIdOn("pageinit","photosPage",function(){var page=this;reloadItems(page,0),$(page).on("click",".mediaItem",onListItemClick)}),window.Photos={startSlideshow:startSlideshow}});
|
|
@ -1,66 +1 @@
|
|||
define(['jQuery'], function ($) {
|
||||
'use strict';
|
||||
|
||||
function loadPage(page, config) {
|
||||
|
||||
$('#txtMinResumePct', page).val(config.MinResumePct);
|
||||
$('#txtMaxResumePct', page).val(config.MaxResumePct);
|
||||
$('#txtMinResumeDuration', page).val(config.MinResumeDurationSeconds);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
}
|
||||
|
||||
function onSubmit() {
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var form = this;
|
||||
|
||||
ApiClient.getServerConfiguration().then(function (config) {
|
||||
|
||||
config.MinResumePct = $('#txtMinResumePct', form).val();
|
||||
config.MaxResumePct = $('#txtMaxResumePct', form).val();
|
||||
config.MinResumeDurationSeconds = $('#txtMinResumeDuration', form).val();
|
||||
|
||||
ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult);
|
||||
});
|
||||
|
||||
// Disable default form submission
|
||||
return false;
|
||||
}
|
||||
|
||||
function getTabs() {
|
||||
return [
|
||||
{
|
||||
href: 'cinemamodeconfiguration.html',
|
||||
name: Globalize.translate('TabCinemaMode')
|
||||
},
|
||||
{
|
||||
href: 'playbackconfiguration.html',
|
||||
name: Globalize.translate('TabResumeSettings')
|
||||
},
|
||||
{
|
||||
href: 'streamingsettings.html',
|
||||
name: Globalize.translate('TabStreaming')
|
||||
}];
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#playbackConfigurationPage", function () {
|
||||
|
||||
$('.playbackConfigurationForm').off('submit', onSubmit).on('submit', onSubmit);
|
||||
|
||||
}).on('pageshow', "#playbackConfigurationPage", function () {
|
||||
|
||||
LibraryMenu.setTabs('playback', 1, getTabs);
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var page = this;
|
||||
|
||||
ApiClient.getServerConfiguration().then(function (config) {
|
||||
|
||||
loadPage(page, config);
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
define(["jQuery"],function($){"use strict";function loadPage(page,config){$("#txtMinResumePct",page).val(config.MinResumePct),$("#txtMaxResumePct",page).val(config.MaxResumePct),$("#txtMinResumeDuration",page).val(config.MinResumeDurationSeconds),Dashboard.hideLoadingMsg()}function onSubmit(){Dashboard.showLoadingMsg();var form=this;return ApiClient.getServerConfiguration().then(function(config){config.MinResumePct=$("#txtMinResumePct",form).val(),config.MaxResumePct=$("#txtMaxResumePct",form).val(),config.MinResumeDurationSeconds=$("#txtMinResumeDuration",form).val(),ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult)}),!1}function getTabs(){return[{href:"cinemamodeconfiguration.html",name:Globalize.translate("TabCinemaMode")},{href:"playbackconfiguration.html",name:Globalize.translate("TabResumeSettings")},{href:"streamingsettings.html",name:Globalize.translate("TabStreaming")}]}$(document).on("pageinit","#playbackConfigurationPage",function(){$(".playbackConfigurationForm").off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#playbackConfigurationPage",function(){LibraryMenu.setTabs("playback",1,getTabs),Dashboard.showLoadingMsg();var page=this;ApiClient.getServerConfiguration().then(function(config){loadPage(page,config)})})});
|
|
@ -1,117 +1 @@
|
|||
define(['jQuery', 'listView', 'imageLoader'], function ($, listView, imageLoader) {
|
||||
'use strict';
|
||||
|
||||
var data = {};
|
||||
function getPageData() {
|
||||
var key = getSavedQueryKey();
|
||||
var pageData = data[key];
|
||||
|
||||
if (!pageData) {
|
||||
pageData = data[key] = {
|
||||
query: {
|
||||
Fields: "PrimaryImageAspectRatio",
|
||||
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
|
||||
StartIndex: 0,
|
||||
Limit: 200
|
||||
},
|
||||
view: LibraryBrowser.getSavedView(key) || 'List'
|
||||
};
|
||||
|
||||
pageData.query.ParentId = LibraryMenu.getTopParentId();
|
||||
LibraryBrowser.loadSavedQueryValues(key, pageData.query);
|
||||
}
|
||||
return pageData;
|
||||
}
|
||||
|
||||
function getQuery() {
|
||||
|
||||
return getPageData().query;
|
||||
}
|
||||
|
||||
function getSavedQueryKey() {
|
||||
|
||||
return LibraryBrowser.getSavedQueryKey();
|
||||
}
|
||||
|
||||
function reloadItems(page, item) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var query = getQuery();
|
||||
|
||||
query.UserId = Dashboard.getCurrentUserId();
|
||||
|
||||
ApiClient.getJSON(ApiClient.getUrl('Playlists/' + item.Id + '/Items', query)).then(function (result) {
|
||||
|
||||
// Scroll back up so they can see the results from the beginning
|
||||
window.scrollTo(0, 0);
|
||||
|
||||
var html = '';
|
||||
|
||||
html += LibraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
totalRecordCount: result.TotalRecordCount,
|
||||
showLimit: false,
|
||||
updatePageSizeSetting: false
|
||||
|
||||
});
|
||||
|
||||
html += listView.getListViewHtml({
|
||||
items: result.Items,
|
||||
sortBy: query.SortBy,
|
||||
showIndex: false,
|
||||
showRemoveFromPlaylist: true,
|
||||
playFromHere: true,
|
||||
action: 'playallfromhere',
|
||||
smallIcon: true,
|
||||
dragHandle: true,
|
||||
playlistId: item.Id
|
||||
});
|
||||
|
||||
var elem = page.querySelector('#childrenContent .itemsContainer');
|
||||
elem.classList.add('vertical-list');
|
||||
elem.classList.remove('vertical-wrap');
|
||||
elem.innerHTML = html;
|
||||
|
||||
imageLoader.lazyChildren(elem);
|
||||
|
||||
$('.btnNextPage', elem).on('click', function () {
|
||||
query.StartIndex += query.Limit;
|
||||
reloadItems(page, item);
|
||||
});
|
||||
|
||||
$('.btnPreviousPage', elem).on('click', function () {
|
||||
query.StartIndex -= query.Limit;
|
||||
reloadItems(page, item);
|
||||
});
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
function init(page, item) {
|
||||
|
||||
var elem = page.querySelector('#childrenContent .itemsContainer');
|
||||
|
||||
elem.enableDragReordering(true);
|
||||
|
||||
elem.addEventListener('needsrefresh', function () {
|
||||
|
||||
reloadItems(page, item);
|
||||
});
|
||||
}
|
||||
|
||||
window.PlaylistViewer = {
|
||||
render: function (page, item) {
|
||||
|
||||
if (!page.playlistInit) {
|
||||
page.playlistInit = true;
|
||||
init(page, item);
|
||||
}
|
||||
|
||||
reloadItems(page, item);
|
||||
}
|
||||
};
|
||||
|
||||
});
|
||||
define(["jQuery","listView","imageLoader"],function($,listView,imageLoader){"use strict";function getPageData(){var key=getSavedQueryKey(),pageData=data[key];return pageData||(pageData=data[key]={query:{Fields:"PrimaryImageAspectRatio",EnableImageTypes:"Primary,Backdrop,Banner,Thumb",StartIndex:0,Limit:200},view:LibraryBrowser.getSavedView(key)||"List"},pageData.query.ParentId=LibraryMenu.getTopParentId(),LibraryBrowser.loadSavedQueryValues(key,pageData.query)),pageData}function getQuery(){return getPageData().query}function getSavedQueryKey(){return LibraryBrowser.getSavedQueryKey()}function reloadItems(page,item){Dashboard.showLoadingMsg();var query=getQuery();query.UserId=Dashboard.getCurrentUserId(),ApiClient.getJSON(ApiClient.getUrl("Playlists/"+item.Id+"/Items",query)).then(function(result){window.scrollTo(0,0);var html="";html+=LibraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1,updatePageSizeSetting:!1}),html+=listView.getListViewHtml({items:result.Items,sortBy:query.SortBy,showIndex:!1,showRemoveFromPlaylist:!0,playFromHere:!0,action:"playallfromhere",smallIcon:!0,dragHandle:!0,playlistId:item.Id});var elem=page.querySelector("#childrenContent .itemsContainer");elem.classList.add("vertical-list"),elem.classList.remove("vertical-wrap"),elem.innerHTML=html,imageLoader.lazyChildren(elem),$(".btnNextPage",elem).on("click",function(){query.StartIndex+=query.Limit,reloadItems(page,item)}),$(".btnPreviousPage",elem).on("click",function(){query.StartIndex-=query.Limit,reloadItems(page,item)}),Dashboard.hideLoadingMsg()})}function init(page,item){var elem=page.querySelector("#childrenContent .itemsContainer");elem.enableDragReordering(!0),elem.addEventListener("needsrefresh",function(){reloadItems(page,item)})}var data={};window.PlaylistViewer={render:function(page,item){page.playlistInit||(page.playlistInit=!0,init(page,item)),reloadItems(page,item)}}});
|
|
@ -1,225 +1 @@
|
|||
define(['listView', 'cardBuilder', 'libraryBrowser', 'apphost', 'imageLoader', 'emby-itemscontainer'], function (listView, cardBuilder, libraryBrowser, appHost, imageLoader) {
|
||||
'use strict';
|
||||
|
||||
return function (view, params) {
|
||||
|
||||
var data = {};
|
||||
function getPageData(context) {
|
||||
var key = getSavedQueryKey(context);
|
||||
var pageData = data[key];
|
||||
|
||||
if (!pageData) {
|
||||
pageData = data[key] = {
|
||||
query: {
|
||||
SortBy: "SortName",
|
||||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "Playlist",
|
||||
Recursive: true,
|
||||
Fields: "PrimaryImageAspectRatio,SortName,CumulativeRunTimeTicks,CanDelete",
|
||||
StartIndex: 0,
|
||||
Limit: LibraryBrowser.getDefaultPageSize()
|
||||
},
|
||||
view: LibraryBrowser.getSavedView(key) || appHost.preferVisualCards ? 'PosterCard' : 'Poster'
|
||||
};
|
||||
|
||||
pageData.query.ParentId = LibraryMenu.getTopParentId();
|
||||
LibraryBrowser.loadSavedQueryValues(key, pageData.query);
|
||||
}
|
||||
return pageData;
|
||||
}
|
||||
|
||||
function getQuery(context) {
|
||||
|
||||
return getPageData(context).query;
|
||||
}
|
||||
|
||||
function getSavedQueryKey(context) {
|
||||
|
||||
if (!context.savedQueryKey) {
|
||||
context.savedQueryKey = libraryBrowser.getSavedQueryKey();
|
||||
}
|
||||
return context.savedQueryKey;
|
||||
}
|
||||
|
||||
function showLoadingMessage() {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
}
|
||||
|
||||
function hideLoadingMessage() {
|
||||
Dashboard.hideLoadingMsg();
|
||||
}
|
||||
|
||||
function onViewStyleChange() {
|
||||
|
||||
var viewStyle = getPageData(view).view;
|
||||
|
||||
var itemsContainer = view.querySelector('.itemsContainer');
|
||||
|
||||
if (viewStyle == "List") {
|
||||
|
||||
itemsContainer.classList.add('vertical-list');
|
||||
itemsContainer.classList.remove('vertical-wrap');
|
||||
}
|
||||
else {
|
||||
|
||||
itemsContainer.classList.remove('vertical-list');
|
||||
itemsContainer.classList.add('vertical-wrap');
|
||||
}
|
||||
itemsContainer.innerHTML = '';
|
||||
}
|
||||
|
||||
function reloadItems() {
|
||||
|
||||
showLoadingMessage();
|
||||
|
||||
var query = getQuery(view);
|
||||
var promise1 = ApiClient.getItems(Dashboard.getCurrentUserId(), query);
|
||||
var promise2 = Dashboard.getCurrentUser();
|
||||
|
||||
Promise.all([promise1, promise2]).then(function (responses) {
|
||||
|
||||
var result = responses[0];
|
||||
var user = responses[1];
|
||||
|
||||
// Scroll back up so they can see the results from the beginning
|
||||
window.scrollTo(0, 0);
|
||||
|
||||
var html = '';
|
||||
var viewStyle = getPageData(view).view;
|
||||
|
||||
view.querySelector('.listTopPaging').innerHTML = LibraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
totalRecordCount: result.TotalRecordCount,
|
||||
viewButton: false,
|
||||
showLimit: false,
|
||||
updatePageSizeSetting: false,
|
||||
addLayoutButton: true,
|
||||
layouts: 'List,Poster,PosterCard,Thumb,ThumbCard',
|
||||
currentLayout: viewStyle
|
||||
|
||||
});
|
||||
|
||||
if (result.TotalRecordCount) {
|
||||
|
||||
if (viewStyle == "List") {
|
||||
|
||||
html = listView.getListViewHtml({
|
||||
items: result.Items,
|
||||
sortBy: query.SortBy
|
||||
});
|
||||
}
|
||||
else if (viewStyle == "PosterCard") {
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "square",
|
||||
showTitle: true,
|
||||
lazy: true,
|
||||
coverImage: true,
|
||||
showItemCounts: true,
|
||||
cardLayout: true,
|
||||
vibrant: true
|
||||
});
|
||||
}
|
||||
else if (viewStyle == "Thumb") {
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
showTitle: true,
|
||||
centerText: true,
|
||||
lazy: true,
|
||||
preferThumb: true,
|
||||
overlayPlayButton: true
|
||||
});
|
||||
}
|
||||
else if (viewStyle == "ThumbCard") {
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
showTitle: true,
|
||||
lazy: true,
|
||||
preferThumb: true,
|
||||
cardLayout: true,
|
||||
showItemCounts: true,
|
||||
vibrant: true
|
||||
});
|
||||
}
|
||||
else {
|
||||
// Poster
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "square",
|
||||
showTitle: true,
|
||||
lazy: true,
|
||||
coverImage: true,
|
||||
showItemCounts: true,
|
||||
centerText: true,
|
||||
overlayPlayButton: true
|
||||
});
|
||||
}
|
||||
|
||||
view.querySelector('.noItemsMessage').classList.add('hide');
|
||||
|
||||
} else {
|
||||
|
||||
view.querySelector('.noItemsMessage').classList.remove('hide');
|
||||
}
|
||||
|
||||
var elem = view.querySelector('.itemsContainer');
|
||||
elem.innerHTML = html;
|
||||
imageLoader.lazyChildren(elem);
|
||||
|
||||
var btnNextPage = view.querySelector('.btnNextPage');
|
||||
if (btnNextPage) {
|
||||
btnNextPage.addEventListener('click', function () {
|
||||
query.StartIndex += query.Limit;
|
||||
reloadItems();
|
||||
});
|
||||
}
|
||||
|
||||
var btnPreviousPage = view.querySelector('.btnPreviousPage');
|
||||
if (btnPreviousPage) {
|
||||
btnPreviousPage.addEventListener('click', function () {
|
||||
query.StartIndex -= query.Limit;
|
||||
reloadItems();
|
||||
});
|
||||
}
|
||||
|
||||
var btnChangeLayout = view.querySelector('.btnChangeLayout');
|
||||
if (btnChangeLayout) {
|
||||
btnChangeLayout.addEventListener('layoutchange', function (e) {
|
||||
var layout = e.detail.viewStyle;
|
||||
getPageData(view).view = layout;
|
||||
LibraryBrowser.saveViewSetting(getSavedQueryKey(view), layout);
|
||||
onViewStyleChange();
|
||||
reloadItems();
|
||||
});
|
||||
}
|
||||
|
||||
LibraryBrowser.saveQueryValues(getSavedQueryKey(view), query);
|
||||
|
||||
hideLoadingMessage();
|
||||
});
|
||||
}
|
||||
|
||||
view.addEventListener('viewbeforeshow', function() {
|
||||
reloadItems();
|
||||
});
|
||||
|
||||
view.querySelector('.btnNewPlaylist').addEventListener('click', function () {
|
||||
|
||||
require(['playlistEditor'], function (playlistEditor) {
|
||||
|
||||
var serverId = ApiClient.serverInfo().Id;
|
||||
new playlistEditor().show({
|
||||
items: [],
|
||||
serverId: serverId
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
onViewStyleChange();
|
||||
|
||||
};
|
||||
});
|
||||
define(["listView","cardBuilder","libraryBrowser","apphost","imageLoader","emby-itemscontainer"],function(listView,cardBuilder,libraryBrowser,appHost,imageLoader){"use strict";return function(view,params){function getPageData(context){var key=getSavedQueryKey(context),pageData=data[key];return pageData||(pageData=data[key]={query:{SortBy:"SortName",SortOrder:"Ascending",IncludeItemTypes:"Playlist",Recursive:!0,Fields:"PrimaryImageAspectRatio,SortName,CumulativeRunTimeTicks,CanDelete",StartIndex:0,Limit:LibraryBrowser.getDefaultPageSize()},view:LibraryBrowser.getSavedView(key)||appHost.preferVisualCards?"PosterCard":"Poster"},pageData.query.ParentId=LibraryMenu.getTopParentId(),LibraryBrowser.loadSavedQueryValues(key,pageData.query)),pageData}function getQuery(context){return getPageData(context).query}function getSavedQueryKey(context){return context.savedQueryKey||(context.savedQueryKey=libraryBrowser.getSavedQueryKey()),context.savedQueryKey}function showLoadingMessage(){Dashboard.showLoadingMsg()}function hideLoadingMessage(){Dashboard.hideLoadingMsg()}function onViewStyleChange(){var viewStyle=getPageData(view).view,itemsContainer=view.querySelector(".itemsContainer");"List"==viewStyle?(itemsContainer.classList.add("vertical-list"),itemsContainer.classList.remove("vertical-wrap")):(itemsContainer.classList.remove("vertical-list"),itemsContainer.classList.add("vertical-wrap")),itemsContainer.innerHTML=""}function reloadItems(){showLoadingMessage();var query=getQuery(view),promise1=ApiClient.getItems(Dashboard.getCurrentUserId(),query),promise2=Dashboard.getCurrentUser();Promise.all([promise1,promise2]).then(function(responses){var result=responses[0];responses[1];window.scrollTo(0,0);var html="",viewStyle=getPageData(view).view;view.querySelector(".listTopPaging").innerHTML=LibraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,viewButton:!1,showLimit:!1,updatePageSizeSetting:!1,addLayoutButton:!0,layouts:"List,Poster,PosterCard,Thumb,ThumbCard",currentLayout:viewStyle}),result.TotalRecordCount?(html="List"==viewStyle?listView.getListViewHtml({items:result.Items,sortBy:query.SortBy}):"PosterCard"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"square",showTitle:!0,lazy:!0,coverImage:!0,showItemCounts:!0,cardLayout:!0,vibrant:!0}):"Thumb"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"backdrop",showTitle:!0,centerText:!0,lazy:!0,preferThumb:!0,overlayPlayButton:!0}):"ThumbCard"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"backdrop",showTitle:!0,lazy:!0,preferThumb:!0,cardLayout:!0,showItemCounts:!0,vibrant:!0}):cardBuilder.getCardsHtml({items:result.Items,shape:"square",showTitle:!0,lazy:!0,coverImage:!0,showItemCounts:!0,centerText:!0,overlayPlayButton:!0}),view.querySelector(".noItemsMessage").classList.add("hide")):view.querySelector(".noItemsMessage").classList.remove("hide");var elem=view.querySelector(".itemsContainer");elem.innerHTML=html,imageLoader.lazyChildren(elem);var btnNextPage=view.querySelector(".btnNextPage");btnNextPage&&btnNextPage.addEventListener("click",function(){query.StartIndex+=query.Limit,reloadItems()});var btnPreviousPage=view.querySelector(".btnPreviousPage");btnPreviousPage&&btnPreviousPage.addEventListener("click",function(){query.StartIndex-=query.Limit,reloadItems()});var btnChangeLayout=view.querySelector(".btnChangeLayout");btnChangeLayout&&btnChangeLayout.addEventListener("layoutchange",function(e){var layout=e.detail.viewStyle;getPageData(view).view=layout,LibraryBrowser.saveViewSetting(getSavedQueryKey(view),layout),onViewStyleChange(),reloadItems()}),LibraryBrowser.saveQueryValues(getSavedQueryKey(view),query),hideLoadingMessage()})}var data={};view.addEventListener("viewbeforeshow",function(){reloadItems()}),view.querySelector(".btnNewPlaylist").addEventListener("click",function(){require(["playlistEditor"],function(playlistEditor){var serverId=ApiClient.serverInfo().Id;(new playlistEditor).show({items:[],serverId:serverId})})}),onViewStyleChange()}});
|
|
@ -1,307 +1 @@
|
|||
define(['jQuery', 'cardStyle'], function ($) {
|
||||
'use strict';
|
||||
|
||||
// The base query options
|
||||
var query = {
|
||||
TargetSystems: 'Server',
|
||||
IsAdult: false
|
||||
};
|
||||
|
||||
function reloadList(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
if (AppInfo.enableAppStorePolicy) {
|
||||
$('.optionAdultContainer', page).hide();
|
||||
} else {
|
||||
$('.optionAdultContainer', page).show();
|
||||
}
|
||||
|
||||
query.IsAppStoreSafe = true;
|
||||
|
||||
var promise1 = ApiClient.getAvailablePlugins(query);
|
||||
|
||||
var promise2 = ApiClient.getInstalledPlugins();
|
||||
|
||||
Promise.all([promise1, promise2]).then(function (responses) {
|
||||
|
||||
populateList({
|
||||
|
||||
catalogElement: $('#pluginTiles', page),
|
||||
noItemsElement: $("#noPlugins", page),
|
||||
availablePlugins: responses[0],
|
||||
installedPlugins: responses[1]
|
||||
|
||||
});
|
||||
});
|
||||
}
|
||||
function populateList(options) {
|
||||
populateListInternal(options);
|
||||
}
|
||||
|
||||
function populateListInternal(options) {
|
||||
|
||||
var availablePlugins = options.availablePlugins;
|
||||
var installedPlugins = options.installedPlugins;
|
||||
|
||||
var allPlugins = availablePlugins.filter(function (p) {
|
||||
|
||||
p.category = p.category || "General";
|
||||
p.categoryDisplayName = Globalize.translate('PluginCategory' + p.category.replace(' ', ''));
|
||||
|
||||
if (options.categories) {
|
||||
if (options.categories.indexOf(p.category) == -1) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (options.targetSystem) {
|
||||
if (p.targetSystem != options.targetSystem) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return p.type == "UserInstalled";
|
||||
|
||||
});
|
||||
|
||||
availablePlugins = allPlugins.sort(function (a, b) {
|
||||
|
||||
var aName = (a.category);
|
||||
var bName = (b.category);
|
||||
|
||||
if (aName > bName) {
|
||||
return 1;
|
||||
}
|
||||
if (bName > aName) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
aName = (a.name);
|
||||
bName = (b.name);
|
||||
|
||||
if (aName > bName) {
|
||||
return 1;
|
||||
}
|
||||
if (bName > aName) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
});
|
||||
|
||||
var html = '';
|
||||
var i, length, plugin;
|
||||
|
||||
var currentCategory;
|
||||
|
||||
if (!options.categories) {
|
||||
currentCategory = Globalize.translate('HeaderTopPlugins');
|
||||
html += '<div class="detailSectionHeader"><h1>' + currentCategory + '</h1></div>';
|
||||
var topPlugins = allPlugins.slice(0).sort(function (a, b) {
|
||||
|
||||
if (a.installs > b.installs) {
|
||||
return -1;
|
||||
}
|
||||
if (b.installs > a.installs) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
var aName = (a.name);
|
||||
var bName = (b.name);
|
||||
|
||||
if (aName > bName) {
|
||||
return 1;
|
||||
}
|
||||
if (bName > aName) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
});
|
||||
|
||||
html += '<div class="itemsContainer vertical-wrap">';
|
||||
var limit = screen.availWidth >= 1920 ? 15 : 12;
|
||||
for (i = 0, length = Math.min(topPlugins.length, limit) ; i < length; i++) {
|
||||
html += getPluginHtml(topPlugins[i], options, installedPlugins);
|
||||
}
|
||||
html += '</div>';
|
||||
html += '<br/>';
|
||||
html += '<br/>';
|
||||
}
|
||||
|
||||
var hasOpenTag = false;
|
||||
currentCategory = null;
|
||||
|
||||
if (options.showCategory === false) {
|
||||
html += '<div class="itemsContainer vertical-wrap">';
|
||||
hasOpenTag = true;
|
||||
}
|
||||
|
||||
for (i = 0, length = availablePlugins.length; i < length; i++) {
|
||||
|
||||
plugin = availablePlugins[i];
|
||||
|
||||
var category = plugin.categoryDisplayName;
|
||||
|
||||
if (category != currentCategory) {
|
||||
|
||||
if (options.showCategory !== false) {
|
||||
if (currentCategory) {
|
||||
hasOpenTag = false;
|
||||
html += '</div>';
|
||||
html += '<br/>';
|
||||
html += '<br/>';
|
||||
}
|
||||
|
||||
html += '<div class="detailSectionHeader"><h1>' + category + '</h1></div>';
|
||||
html += '<div class="itemsContainer vertical-wrap">';
|
||||
hasOpenTag = true;
|
||||
}
|
||||
|
||||
currentCategory = category;
|
||||
}
|
||||
|
||||
html += getPluginHtml(plugin, options, installedPlugins);
|
||||
|
||||
}
|
||||
|
||||
if (hasOpenTag) {
|
||||
html += '</div>';
|
||||
}
|
||||
|
||||
if (!availablePlugins.length && options.noItemsElement) {
|
||||
$(options.noItemsElement).hide();
|
||||
}
|
||||
|
||||
$(options.catalogElement).html(html);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
}
|
||||
|
||||
function getPluginHtml(plugin, options, installedPlugins) {
|
||||
|
||||
var html = '';
|
||||
|
||||
var href = plugin.externalUrl ? plugin.externalUrl : "addplugin.html?name=" + encodeURIComponent(plugin.name) + "&guid=" + plugin.guid;
|
||||
if (options.context) {
|
||||
href += "&context=" + options.context;
|
||||
}
|
||||
var target = plugin.externalUrl ? ' target="_blank"' : '';
|
||||
|
||||
html += "<div class='card backdropCard scalableCard backdropCard-scalable'>";
|
||||
|
||||
html += '<div class="cardBox cardBox-bottompadded visualCardBox">';
|
||||
html += '<div class="cardScalable visualCardBox-cardScalable">';
|
||||
|
||||
html += '<div class="cardPadder cardPadder-backdrop"></div>';
|
||||
|
||||
html += '<a class="cardContent" href="' + href + '"' + target + '>';
|
||||
if (plugin.thumbImage) {
|
||||
html += '<div class="cardImage" style="background-image:url(\'' + plugin.thumbImage + '\');">';
|
||||
} else {
|
||||
html += '<div class="cardImage" style="background-image:url(\'css/images/items/list/collection.png\');">';
|
||||
}
|
||||
|
||||
if (plugin.isPremium) {
|
||||
if (plugin.price > 0) {
|
||||
html += "<div class='premiumBanner'><img src='css/images/supporter/premiumflag.png' /></div>";
|
||||
} else {
|
||||
html += "<div class='premiumBanner'><img src='css/images/supporter/supporterflag.png' /></div>";
|
||||
}
|
||||
}
|
||||
html += "</div>";
|
||||
|
||||
// cardContent
|
||||
html += "</a>";
|
||||
|
||||
// cardScalable
|
||||
html += "</div>";
|
||||
|
||||
html += '<div class="cardFooter visualCardBox-cardFooter">';
|
||||
|
||||
html += "<div class='cardText'>";
|
||||
html += plugin.name;
|
||||
html += "</div>";
|
||||
|
||||
// html += "<div class='cardText' style='display:flex;align-items:center;'>";
|
||||
|
||||
// if (plugin.avgRating) {
|
||||
// html += '<i class="md-icon" style="color:#cc3333;margin-right:.25em;">star</i>';
|
||||
// html += plugin.avgRating.toFixed(1);
|
||||
// }
|
||||
|
||||
// if (plugin.totalRatings) {
|
||||
// html += "<div style='margin-left:.5em;'>";
|
||||
// html += " " + Globalize.translate('LabelNumberReviews').replace("{0}", plugin.totalRatings);
|
||||
// }
|
||||
// html += "</div>";
|
||||
|
||||
// html += "</div>";
|
||||
|
||||
var installedPlugin = plugin.isApp ? null : installedPlugins.filter(function (ip) {
|
||||
return ip.Id == plugin.guid;
|
||||
})[0];
|
||||
|
||||
html += "<div class='cardText'>";
|
||||
|
||||
if (installedPlugin) {
|
||||
html += Globalize.translate('LabelVersionInstalled').replace("{0}", installedPlugin.Version);
|
||||
} else {
|
||||
html += ' ';
|
||||
}
|
||||
html += "</div>";
|
||||
|
||||
// cardFooter
|
||||
html += "</div>";
|
||||
|
||||
// cardBox
|
||||
html += "</div>";
|
||||
|
||||
// card
|
||||
html += "</div>";
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
function getTabs() {
|
||||
return [
|
||||
{
|
||||
href: 'plugins.html',
|
||||
name: Globalize.translate('TabMyPlugins')
|
||||
},
|
||||
{
|
||||
href: 'plugincatalog.html',
|
||||
name: Globalize.translate('TabCatalog')
|
||||
}];
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#pluginCatalogPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
$('#selectSystem', page).on('change', function () {
|
||||
|
||||
query.TargetSystems = this.value;
|
||||
reloadList(page);
|
||||
});
|
||||
|
||||
$('#chkAdult', page).on('change', function () {
|
||||
|
||||
query.IsAdult = this.checked ? null : false;
|
||||
reloadList(page);
|
||||
});
|
||||
|
||||
}).on('pageshow', "#pluginCatalogPage", function () {
|
||||
|
||||
LibraryMenu.setTabs('plugins', 1, getTabs);
|
||||
var page = this;
|
||||
|
||||
reloadList(page);
|
||||
});
|
||||
|
||||
window.PluginCatalog = {
|
||||
renderCatalog: populateList
|
||||
};
|
||||
|
||||
});
|
||||
define(["jQuery","cardStyle"],function($){"use strict";function reloadList(page){Dashboard.showLoadingMsg(),AppInfo.enableAppStorePolicy?$(".optionAdultContainer",page).hide():$(".optionAdultContainer",page).show(),query.IsAppStoreSafe=!0;var promise1=ApiClient.getAvailablePlugins(query),promise2=ApiClient.getInstalledPlugins();Promise.all([promise1,promise2]).then(function(responses){populateList({catalogElement:$("#pluginTiles",page),noItemsElement:$("#noPlugins",page),availablePlugins:responses[0],installedPlugins:responses[1]})})}function populateList(options){populateListInternal(options)}function populateListInternal(options){var availablePlugins=options.availablePlugins,installedPlugins=options.installedPlugins,allPlugins=availablePlugins.filter(function(p){return p.category=p.category||"General",p.categoryDisplayName=Globalize.translate("PluginCategory"+p.category.replace(" ","")),(!options.categories||options.categories.indexOf(p.category)!=-1)&&((!options.targetSystem||p.targetSystem==options.targetSystem)&&"UserInstalled"==p.type)});availablePlugins=allPlugins.sort(function(a,b){var aName=a.category,bName=b.category;return aName>bName?1:bName>aName?-1:(aName=a.name,bName=b.name,aName>bName?1:bName>aName?-1:0)});var i,length,plugin,currentCategory,html="";if(!options.categories){currentCategory=Globalize.translate("HeaderTopPlugins"),html+='<div class="detailSectionHeader"><h1>'+currentCategory+"</h1></div>";var topPlugins=allPlugins.slice(0).sort(function(a,b){if(a.installs>b.installs)return-1;if(b.installs>a.installs)return 1;var aName=a.name,bName=b.name;return aName>bName?1:bName>aName?-1:0});html+='<div class="itemsContainer vertical-wrap">';var limit=screen.availWidth>=1920?15:12;for(i=0,length=Math.min(topPlugins.length,limit);i<length;i++)html+=getPluginHtml(topPlugins[i],options,installedPlugins);html+="</div>",html+="<br/>",html+="<br/>"}var hasOpenTag=!1;for(currentCategory=null,options.showCategory===!1&&(html+='<div class="itemsContainer vertical-wrap">',hasOpenTag=!0),i=0,length=availablePlugins.length;i<length;i++){plugin=availablePlugins[i];var category=plugin.categoryDisplayName;category!=currentCategory&&(options.showCategory!==!1&&(currentCategory&&(hasOpenTag=!1,html+="</div>",html+="<br/>",html+="<br/>"),html+='<div class="detailSectionHeader"><h1>'+category+"</h1></div>",html+='<div class="itemsContainer vertical-wrap">',hasOpenTag=!0),currentCategory=category),html+=getPluginHtml(plugin,options,installedPlugins)}hasOpenTag&&(html+="</div>"),!availablePlugins.length&&options.noItemsElement&&$(options.noItemsElement).hide(),$(options.catalogElement).html(html),Dashboard.hideLoadingMsg()}function getPluginHtml(plugin,options,installedPlugins){var html="",href=plugin.externalUrl?plugin.externalUrl:"addplugin.html?name="+encodeURIComponent(plugin.name)+"&guid="+plugin.guid;options.context&&(href+="&context="+options.context);var target=plugin.externalUrl?' target="_blank"':"";html+="<div class='card backdropCard scalableCard backdropCard-scalable'>",html+='<div class="cardBox cardBox-bottompadded visualCardBox">',html+='<div class="cardScalable visualCardBox-cardScalable">',html+='<div class="cardPadder cardPadder-backdrop"></div>',html+='<a class="cardContent" href="'+href+'"'+target+">",html+=plugin.thumbImage?'<div class="cardImage" style="background-image:url(\''+plugin.thumbImage+"');\">":'<div class="cardImage" style="background-image:url(\'css/images/items/list/collection.png\');">',plugin.isPremium&&(html+=plugin.price>0?"<div class='premiumBanner'><img src='css/images/supporter/premiumflag.png' /></div>":"<div class='premiumBanner'><img src='css/images/supporter/supporterflag.png' /></div>"),html+="</div>",html+="</a>",html+="</div>",html+='<div class="cardFooter visualCardBox-cardFooter">',html+="<div class='cardText'>",html+=plugin.name,html+="</div>";var installedPlugin=plugin.isApp?null:installedPlugins.filter(function(ip){return ip.Id==plugin.guid})[0];return html+="<div class='cardText'>",html+=installedPlugin?Globalize.translate("LabelVersionInstalled").replace("{0}",installedPlugin.Version):" ",html+="</div>",html+="</div>",html+="</div>",html+="</div>"}function getTabs(){return[{href:"plugins.html",name:Globalize.translate("TabMyPlugins")},{href:"plugincatalog.html",name:Globalize.translate("TabCatalog")}]}var query={TargetSystems:"Server",IsAdult:!1};$(document).on("pageinit","#pluginCatalogPage",function(){var page=this;$("#selectSystem",page).on("change",function(){query.TargetSystems=this.value,reloadList(page)}),$("#chkAdult",page).on("change",function(){query.IsAdult=!!this.checked&&null,reloadList(page)})}).on("pageshow","#pluginCatalogPage",function(){LibraryMenu.setTabs("plugins",1,getTabs);var page=this;reloadList(page)}),window.PluginCatalog={renderCatalog:populateList}});
|
|
@ -1,250 +1 @@
|
|||
define(['jQuery', 'cardStyle'], function ($) {
|
||||
'use strict';
|
||||
|
||||
function deletePlugin(page, uniqueid, name) {
|
||||
|
||||
var msg = Globalize.translate('UninstallPluginConfirmation').replace("{0}", name);
|
||||
|
||||
require(['confirm'], function (confirm) {
|
||||
confirm(msg, Globalize.translate('UninstallPluginHeader')).then(function () {
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
ApiClient.uninstallPlugin(uniqueid).then(function () {
|
||||
|
||||
reloadList(page);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function showNoConfigurationMessage() {
|
||||
Dashboard.alert({
|
||||
message: Globalize.translate('NoPluginConfigurationMessage')
|
||||
});
|
||||
}
|
||||
|
||||
function showConnectMessage() {
|
||||
Dashboard.alert({
|
||||
message: Globalize.translate('MessagePluginConfigurationRequiresLocalAccess')
|
||||
});
|
||||
}
|
||||
|
||||
function getPluginCardHtml(plugin, pluginConfigurationPages) {
|
||||
|
||||
var configPage = $.grep(pluginConfigurationPages, function (pluginConfigurationPage) {
|
||||
return pluginConfigurationPage.PluginId == plugin.Id;
|
||||
})[0];
|
||||
|
||||
var html = '';
|
||||
|
||||
var isConnectMode = Dashboard.isConnectMode();
|
||||
var configPageUrl = configPage ? Dashboard.getConfigurationPageUrl(configPage.Name) : null;
|
||||
|
||||
var href = configPage && !isConnectMode ?
|
||||
configPageUrl :
|
||||
null;
|
||||
|
||||
html += "<div data-id='" + plugin.Id + "' data-name='" + plugin.Name + "' class='card backdropCard scalableCard backdropCard-scalable'>";
|
||||
|
||||
html += '<div class="cardBox cardBox-bottompadded visualCardBox">';
|
||||
html += '<div class="cardScalable visualCardBox-cardScalable">';
|
||||
|
||||
html += '<div class="cardPadder cardPadder-backdrop"></div>';
|
||||
|
||||
if (href) {
|
||||
html += '<a class="cardContent" href="' + href + '">';
|
||||
}
|
||||
else if (!configPageUrl) {
|
||||
html += '<div class="cardContent noConfigPluginCard noHoverEffect">';
|
||||
}
|
||||
else if (isConnectMode) {
|
||||
html += '<div class="cardContent connectModePluginCard">';
|
||||
}
|
||||
else {
|
||||
html += '<div class="cardContent">';
|
||||
}
|
||||
|
||||
if (plugin.ImageUrl) {
|
||||
html += '<div class="cardImage" style="background-image:url(\'' + plugin.ImageUrl + '\');">';
|
||||
} else {
|
||||
html += '<div class="cardImage" style="background-image:url(\'css/images/items/list/collection.png\');">';
|
||||
}
|
||||
|
||||
html += "</div>";
|
||||
|
||||
// cardContent
|
||||
if (href) {
|
||||
html += "</a>";
|
||||
} else {
|
||||
html += "</div>";
|
||||
}
|
||||
|
||||
// cardScalable
|
||||
html += "</div>";
|
||||
|
||||
html += '<div class="cardFooter visualCardBox-cardFooter">';
|
||||
|
||||
html += '<div style="text-align:right; float:right;padding-top:5px;">';
|
||||
html += '<button type="button" is="paper-icon-button-light" class="btnCardMenu autoSize"><i class="md-icon">more_vert</i></button>';
|
||||
html += "</div>";
|
||||
|
||||
html += "<div class='cardText'>";
|
||||
html += plugin.Name;
|
||||
html += "</div>";
|
||||
|
||||
html += "<div class='cardText'>";
|
||||
html += plugin.Version;
|
||||
html += "</div>";
|
||||
|
||||
// cardFooter
|
||||
html += "</div>";
|
||||
|
||||
// cardBox
|
||||
html += "</div>";
|
||||
|
||||
// card
|
||||
html += "</div>";
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
function renderPlugins(page, plugins, showNoPluginsMessage) {
|
||||
|
||||
ApiClient.getJSON(ApiClient.getUrl("web/configurationpages") + "?pageType=PluginConfiguration").then(function (configPages) {
|
||||
|
||||
populateList(page, plugins, configPages, showNoPluginsMessage);
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
function populateList(page, plugins, pluginConfigurationPages, showNoPluginsMessage) {
|
||||
|
||||
plugins = plugins.sort(function (plugin1, plugin2) {
|
||||
|
||||
return (plugin1.Name) > (plugin2.Name) ? 1 : -1;
|
||||
|
||||
});
|
||||
|
||||
var html = plugins.map(function (p) {
|
||||
return getPluginCardHtml(p, pluginConfigurationPages);
|
||||
|
||||
}).join('');
|
||||
|
||||
if (!plugins.length) {
|
||||
|
||||
if (showNoPluginsMessage) {
|
||||
html += '<div style="padding:5px;">';
|
||||
|
||||
if (AppInfo.enableAppStorePolicy) {
|
||||
html += '<p>' + Globalize.translate('MessageNoPluginsDueToAppStore') + '</p>';
|
||||
} else {
|
||||
html += '<p>' + Globalize.translate('MessageNoPluginsInstalled') + '</p>';
|
||||
|
||||
html += '<p><a href="plugincatalog.html">';
|
||||
html += Globalize.translate('BrowsePluginCatalogMessage');
|
||||
html += '</a></p>';
|
||||
}
|
||||
html += '</div>';
|
||||
}
|
||||
|
||||
$('.installedPlugins', page).html(html);
|
||||
} else {
|
||||
|
||||
var elem = $('.installedPlugins', page).addClass('itemsContainer').addClass('vertical-wrap').html(html);
|
||||
|
||||
$('.noConfigPluginCard', elem).on('click', function () {
|
||||
showNoConfigurationMessage();
|
||||
});
|
||||
|
||||
$('.connectModePluginCard', elem).on('click', function () {
|
||||
showConnectMessage();
|
||||
});
|
||||
|
||||
$('.btnCardMenu', elem).on('click', function () {
|
||||
showPluginMenu(page, this);
|
||||
});
|
||||
}
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
}
|
||||
|
||||
function showPluginMenu(page, elem) {
|
||||
|
||||
var card = $(elem).parents('.card');
|
||||
var id = card.attr('data-id');
|
||||
var name = card.attr('data-name');
|
||||
var configHref = $('.cardContent', card).attr('href');
|
||||
|
||||
var menuItems = [];
|
||||
|
||||
if (configHref) {
|
||||
menuItems.push({
|
||||
name: Globalize.translate('ButtonSettings'),
|
||||
id: 'open',
|
||||
ironIcon: 'mode-edit'
|
||||
});
|
||||
}
|
||||
|
||||
menuItems.push({
|
||||
name: Globalize.translate('ButtonUninstall'),
|
||||
id: 'delete',
|
||||
ironIcon: 'delete'
|
||||
});
|
||||
|
||||
require(['actionsheet'], function (actionsheet) {
|
||||
|
||||
actionsheet.show({
|
||||
items: menuItems,
|
||||
positionTo: elem,
|
||||
callback: function (resultId) {
|
||||
|
||||
switch (resultId) {
|
||||
|
||||
case 'open':
|
||||
Dashboard.navigate(configHref);
|
||||
break;
|
||||
case 'delete':
|
||||
deletePlugin(page, id, name);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
function reloadList(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
ApiClient.getInstalledPlugins().then(function (plugins) {
|
||||
|
||||
renderPlugins(page, plugins, true);
|
||||
});
|
||||
}
|
||||
|
||||
function getTabs() {
|
||||
return [
|
||||
{
|
||||
href: 'plugins.html',
|
||||
name: Globalize.translate('TabMyPlugins')
|
||||
},
|
||||
{
|
||||
href: 'plugincatalog.html',
|
||||
name: Globalize.translate('TabCatalog')
|
||||
}];
|
||||
}
|
||||
|
||||
$(document).on('pageshow', "#pluginsPage", function () {
|
||||
|
||||
LibraryMenu.setTabs('plugins', 0, getTabs);
|
||||
reloadList(this);
|
||||
});
|
||||
|
||||
window.PluginsPage = {
|
||||
renderPlugins: renderPlugins
|
||||
};
|
||||
|
||||
});
|
||||
define(["jQuery","cardStyle"],function($){"use strict";function deletePlugin(page,uniqueid,name){var msg=Globalize.translate("UninstallPluginConfirmation").replace("{0}",name);require(["confirm"],function(confirm){confirm(msg,Globalize.translate("UninstallPluginHeader")).then(function(){Dashboard.showLoadingMsg(),ApiClient.uninstallPlugin(uniqueid).then(function(){reloadList(page)})})})}function showNoConfigurationMessage(){Dashboard.alert({message:Globalize.translate("NoPluginConfigurationMessage")})}function showConnectMessage(){Dashboard.alert({message:Globalize.translate("MessagePluginConfigurationRequiresLocalAccess")})}function getPluginCardHtml(plugin,pluginConfigurationPages){var configPage=$.grep(pluginConfigurationPages,function(pluginConfigurationPage){return pluginConfigurationPage.PluginId==plugin.Id})[0],html="",isConnectMode=Dashboard.isConnectMode(),configPageUrl=configPage?Dashboard.getConfigurationPageUrl(configPage.Name):null,href=configPage&&!isConnectMode?configPageUrl:null;return html+="<div data-id='"+plugin.Id+"' data-name='"+plugin.Name+"' class='card backdropCard scalableCard backdropCard-scalable'>",html+='<div class="cardBox cardBox-bottompadded visualCardBox">',html+='<div class="cardScalable visualCardBox-cardScalable">',html+='<div class="cardPadder cardPadder-backdrop"></div>',html+=href?'<a class="cardContent" href="'+href+'">':configPageUrl?isConnectMode?'<div class="cardContent connectModePluginCard">':'<div class="cardContent">':'<div class="cardContent noConfigPluginCard noHoverEffect">',html+=plugin.ImageUrl?'<div class="cardImage" style="background-image:url(\''+plugin.ImageUrl+"');\">":'<div class="cardImage" style="background-image:url(\'css/images/items/list/collection.png\');">',html+="</div>",html+=href?"</a>":"</div>",html+="</div>",html+='<div class="cardFooter visualCardBox-cardFooter">',html+='<div style="text-align:right; float:right;padding-top:5px;">',html+='<button type="button" is="paper-icon-button-light" class="btnCardMenu autoSize"><i class="md-icon">more_vert</i></button>',html+="</div>",html+="<div class='cardText'>",html+=plugin.Name,html+="</div>",html+="<div class='cardText'>",html+=plugin.Version,html+="</div>",html+="</div>",html+="</div>",html+="</div>"}function renderPlugins(page,plugins,showNoPluginsMessage){ApiClient.getJSON(ApiClient.getUrl("web/configurationpages")+"?pageType=PluginConfiguration").then(function(configPages){populateList(page,plugins,configPages,showNoPluginsMessage)})}function populateList(page,plugins,pluginConfigurationPages,showNoPluginsMessage){plugins=plugins.sort(function(plugin1,plugin2){return plugin1.Name>plugin2.Name?1:-1});var html=plugins.map(function(p){return getPluginCardHtml(p,pluginConfigurationPages)}).join("");if(plugins.length){var elem=$(".installedPlugins",page).addClass("itemsContainer").addClass("vertical-wrap").html(html);$(".noConfigPluginCard",elem).on("click",function(){showNoConfigurationMessage()}),$(".connectModePluginCard",elem).on("click",function(){showConnectMessage()}),$(".btnCardMenu",elem).on("click",function(){showPluginMenu(page,this)})}else showNoPluginsMessage&&(html+='<div style="padding:5px;">',AppInfo.enableAppStorePolicy?html+="<p>"+Globalize.translate("MessageNoPluginsDueToAppStore")+"</p>":(html+="<p>"+Globalize.translate("MessageNoPluginsInstalled")+"</p>",html+='<p><a href="plugincatalog.html">',html+=Globalize.translate("BrowsePluginCatalogMessage"),html+="</a></p>"),html+="</div>"),$(".installedPlugins",page).html(html);Dashboard.hideLoadingMsg()}function showPluginMenu(page,elem){var card=$(elem).parents(".card"),id=card.attr("data-id"),name=card.attr("data-name"),configHref=$(".cardContent",card).attr("href"),menuItems=[];configHref&&menuItems.push({name:Globalize.translate("ButtonSettings"),id:"open",ironIcon:"mode-edit"}),menuItems.push({name:Globalize.translate("ButtonUninstall"),id:"delete",ironIcon:"delete"}),require(["actionsheet"],function(actionsheet){actionsheet.show({items:menuItems,positionTo:elem,callback:function(resultId){switch(resultId){case"open":Dashboard.navigate(configHref);break;case"delete":deletePlugin(page,id,name)}}})})}function reloadList(page){Dashboard.showLoadingMsg(),ApiClient.getInstalledPlugins().then(function(plugins){renderPlugins(page,plugins,!0)})}function getTabs(){return[{href:"plugins.html",name:Globalize.translate("TabMyPlugins")},{href:"plugincatalog.html",name:Globalize.translate("TabCatalog")}]}$(document).on("pageshow","#pluginsPage",function(){LibraryMenu.setTabs("plugins",0,getTabs),reloadList(this)}),window.PluginsPage={renderPlugins:renderPlugins}});
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,198 +1 @@
|
|||
define(['libraryBrowser', 'focusManager', 'embyRouter', 'cardBuilder', 'imageLoader', 'emby-input', 'paper-icon-button-light', 'material-icons', 'emby-itemscontainer'], function (libraryBrowser, focusManager, embyRouter, cardBuilder, imageLoader) {
|
||||
'use strict';
|
||||
|
||||
function loadSuggestions(page) {
|
||||
|
||||
var options = {
|
||||
|
||||
SortBy: "IsFavoriteOrLiked,Random",
|
||||
IncludeItemTypes: "Movie,Series,MusicArtist",
|
||||
Limit: 20,
|
||||
Recursive: true,
|
||||
ImageTypeLimit: 0,
|
||||
EnableImages: false
|
||||
};
|
||||
|
||||
ApiClient.getItems(Dashboard.getCurrentUserId(), options).then(function (result) {
|
||||
|
||||
var html = result.Items.map(function (i) {
|
||||
|
||||
var href = LibraryBrowser.getHref(i);
|
||||
|
||||
var itemHtml = '<div><a style="display:inline-block;padding:.55em 1em;" href="' + href + '">';
|
||||
itemHtml += i.Name;
|
||||
itemHtml += '</a></div>';
|
||||
return itemHtml;
|
||||
|
||||
}).join('');
|
||||
|
||||
page.querySelector('.searchSuggestions').innerHTML = html;
|
||||
});
|
||||
}
|
||||
|
||||
return function (view, params) {
|
||||
|
||||
var textSuggestions = view.querySelector('.textSuggestions');
|
||||
var searchResults = view.querySelector('.searchResults');
|
||||
var searchHintTimeout;
|
||||
|
||||
function clearSearchHintTimeout() {
|
||||
|
||||
if (searchHintTimeout) {
|
||||
|
||||
clearTimeout(searchHintTimeout);
|
||||
searchHintTimeout = null;
|
||||
}
|
||||
}
|
||||
|
||||
function showTextSuggestions() {
|
||||
textSuggestions.classList.remove('hide');
|
||||
}
|
||||
|
||||
function getAdditionalTextLines(hint) {
|
||||
|
||||
if (hint.Type == "Audio") {
|
||||
|
||||
return [[hint.AlbumArtist, hint.Album].join(" - ")];
|
||||
|
||||
}
|
||||
else if (hint.Type == "MusicAlbum") {
|
||||
|
||||
return [hint.AlbumArtist];
|
||||
|
||||
}
|
||||
else if (hint.Type == "MusicArtist") {
|
||||
|
||||
return [Globalize.translate('LabelArtist')];
|
||||
|
||||
}
|
||||
else if (hint.Type == "Movie") {
|
||||
|
||||
return [Globalize.translate('LabelMovie')];
|
||||
|
||||
}
|
||||
else if (hint.Type == "MusicVideo") {
|
||||
|
||||
return [Globalize.translate('LabelMusicVideo')];
|
||||
}
|
||||
else if (hint.Type == "Episode") {
|
||||
|
||||
return [Globalize.translate('LabelEpisode')];
|
||||
|
||||
}
|
||||
else if (hint.Type == "Series") {
|
||||
|
||||
return [Globalize.translate('Series')];
|
||||
}
|
||||
else if (hint.Type == "BoxSet") {
|
||||
|
||||
return [Globalize.translate('LabelCollection')];
|
||||
}
|
||||
else if (hint.ChannelName) {
|
||||
|
||||
return [hint.ChannelName];
|
||||
}
|
||||
|
||||
return [hint.Type];
|
||||
}
|
||||
|
||||
function renderSearchResultsInOverlay(hints) {
|
||||
|
||||
// Massage the objects to look like regular items
|
||||
hints = hints.map(function (i) {
|
||||
|
||||
i.Id = i.ItemId;
|
||||
i.ImageTags = {};
|
||||
i.UserData = {};
|
||||
|
||||
if (i.PrimaryImageTag) {
|
||||
i.ImageTags.Primary = i.PrimaryImageTag;
|
||||
}
|
||||
return i;
|
||||
});
|
||||
|
||||
var html = cardBuilder.getCardsHtml({
|
||||
items: hints,
|
||||
shape: "auto",
|
||||
overlayText: false,
|
||||
showTitle: true,
|
||||
centerImage: true,
|
||||
centerText: true,
|
||||
textLines: getAdditionalTextLines,
|
||||
overlayMoreButton: true,
|
||||
serverId: ApiClient.serverInfo().Id
|
||||
});
|
||||
|
||||
if (!hints.length) {
|
||||
html = '<p style="text-align:center;margin-top:2em;">' + Globalize.translate('NoResultsFound') + '</p>';
|
||||
}
|
||||
|
||||
var itemsContainer = searchResults;
|
||||
itemsContainer.innerHTML = html;
|
||||
searchResults.classList.remove('hide');
|
||||
textSuggestions.classList.add('hide');
|
||||
imageLoader.lazyChildren(itemsContainer);
|
||||
}
|
||||
|
||||
function requestSearchHintsForOverlay(searchTerm) {
|
||||
|
||||
var currentTimeout = searchHintTimeout;
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
ApiClient.getSearchHints({
|
||||
|
||||
userId: Dashboard.getCurrentUserId(),
|
||||
searchTerm: (searchTerm || '').trim(),
|
||||
limit: 30
|
||||
|
||||
}).then(function (result) {
|
||||
|
||||
if (currentTimeout == searchHintTimeout) {
|
||||
renderSearchResultsInOverlay(result.SearchHints);
|
||||
}
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
}, function () {
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
function onSearchChange(val) {
|
||||
|
||||
if (!val) {
|
||||
clearSearchHintTimeout();
|
||||
searchResults.classList.add('hide');
|
||||
searchResults.innerHTML = '';
|
||||
showTextSuggestions();
|
||||
return;
|
||||
}
|
||||
|
||||
clearSearchHintTimeout();
|
||||
|
||||
searchHintTimeout = setTimeout(function () {
|
||||
requestSearchHintsForOverlay(val);
|
||||
}, 300);
|
||||
}
|
||||
|
||||
showTextSuggestions();
|
||||
loadSuggestions(view);
|
||||
|
||||
view.querySelector('.txtSearch').addEventListener('input', function () {
|
||||
onSearchChange(this.value);
|
||||
});
|
||||
|
||||
view.querySelector('.btnBack').addEventListener('click', function () {
|
||||
embyRouter.back();
|
||||
});
|
||||
|
||||
view.addEventListener('viewbeforeshow', function (e) {
|
||||
document.body.classList.add('hiddenViewMenuBar');
|
||||
});
|
||||
|
||||
view.addEventListener('viewbeforehide', function (e) {
|
||||
|
||||
document.body.classList.remove('hiddenViewMenuBar');
|
||||
});
|
||||
|
||||
};
|
||||
});
|
||||
define(["libraryBrowser","focusManager","embyRouter","cardBuilder","imageLoader","emby-input","paper-icon-button-light","material-icons","emby-itemscontainer"],function(libraryBrowser,focusManager,embyRouter,cardBuilder,imageLoader){"use strict";function loadSuggestions(page){var options={SortBy:"IsFavoriteOrLiked,Random",IncludeItemTypes:"Movie,Series,MusicArtist",Limit:20,Recursive:!0,ImageTypeLimit:0,EnableImages:!1};ApiClient.getItems(Dashboard.getCurrentUserId(),options).then(function(result){var html=result.Items.map(function(i){var href=LibraryBrowser.getHref(i),itemHtml='<div><a style="display:inline-block;padding:.55em 1em;" href="'+href+'">';return itemHtml+=i.Name,itemHtml+="</a></div>"}).join("");page.querySelector(".searchSuggestions").innerHTML=html})}return function(view,params){function clearSearchHintTimeout(){searchHintTimeout&&(clearTimeout(searchHintTimeout),searchHintTimeout=null)}function showTextSuggestions(){textSuggestions.classList.remove("hide")}function getAdditionalTextLines(hint){return"Audio"==hint.Type?[[hint.AlbumArtist,hint.Album].join(" - ")]:"MusicAlbum"==hint.Type?[hint.AlbumArtist]:"MusicArtist"==hint.Type?[Globalize.translate("LabelArtist")]:"Movie"==hint.Type?[Globalize.translate("LabelMovie")]:"MusicVideo"==hint.Type?[Globalize.translate("LabelMusicVideo")]:"Episode"==hint.Type?[Globalize.translate("LabelEpisode")]:"Series"==hint.Type?[Globalize.translate("Series")]:"BoxSet"==hint.Type?[Globalize.translate("LabelCollection")]:hint.ChannelName?[hint.ChannelName]:[hint.Type]}function renderSearchResultsInOverlay(hints){hints=hints.map(function(i){return i.Id=i.ItemId,i.ImageTags={},i.UserData={},i.PrimaryImageTag&&(i.ImageTags.Primary=i.PrimaryImageTag),i});var html=cardBuilder.getCardsHtml({items:hints,shape:"auto",overlayText:!1,showTitle:!0,centerImage:!0,centerText:!0,textLines:getAdditionalTextLines,overlayMoreButton:!0,serverId:ApiClient.serverInfo().Id});hints.length||(html='<p style="text-align:center;margin-top:2em;">'+Globalize.translate("NoResultsFound")+"</p>");var itemsContainer=searchResults;itemsContainer.innerHTML=html,searchResults.classList.remove("hide"),textSuggestions.classList.add("hide"),imageLoader.lazyChildren(itemsContainer)}function requestSearchHintsForOverlay(searchTerm){var currentTimeout=searchHintTimeout;Dashboard.showLoadingMsg(),ApiClient.getSearchHints({userId:Dashboard.getCurrentUserId(),searchTerm:(searchTerm||"").trim(),limit:30}).then(function(result){currentTimeout==searchHintTimeout&&renderSearchResultsInOverlay(result.SearchHints),Dashboard.hideLoadingMsg()},function(){Dashboard.hideLoadingMsg()})}function onSearchChange(val){return val?(clearSearchHintTimeout(),void(searchHintTimeout=setTimeout(function(){requestSearchHintsForOverlay(val)},300))):(clearSearchHintTimeout(),searchResults.classList.add("hide"),searchResults.innerHTML="",void showTextSuggestions())}var searchHintTimeout,textSuggestions=view.querySelector(".textSuggestions"),searchResults=view.querySelector(".searchResults");showTextSuggestions(),loadSuggestions(view),view.querySelector(".txtSearch").addEventListener("input",function(){onSearchChange(this.value)}),view.querySelector(".btnBack").addEventListener("click",function(){embyRouter.back()}),view.addEventListener("viewbeforeshow",function(e){document.body.classList.add("hiddenViewMenuBar")}),view.addEventListener("viewbeforehide",function(e){document.body.classList.remove("hiddenViewMenuBar")})}});
|
|
@ -1,277 +1 @@
|
|||
define(['libraryBrowser', 'listView', 'cardBuilder', 'imageLoader', 'emby-itemscontainer'], function (libraryBrowser, listView, cardBuilder, imageLoader) {
|
||||
'use strict';
|
||||
|
||||
return function (view, params) {
|
||||
|
||||
var data = {};
|
||||
|
||||
function addCurrentItemToQuery(query, item) {
|
||||
|
||||
if (params.parentId) {
|
||||
query.ParentId = params.parentId;
|
||||
}
|
||||
|
||||
if (item.Type == "Person") {
|
||||
query.PersonIds = item.Id;
|
||||
}
|
||||
else if (item.Type == "Genre") {
|
||||
query.Genres = item.Name;
|
||||
}
|
||||
else if (item.Type == "MusicGenre") {
|
||||
query.Genres = item.Name;
|
||||
}
|
||||
else if (item.Type == "GameGenre") {
|
||||
query.Genres = item.Name;
|
||||
}
|
||||
else if (item.Type == "Studio") {
|
||||
query.StudioIds = item.Id;
|
||||
}
|
||||
else if (item.Type == "MusicArtist") {
|
||||
query.ArtistIds = item.Id;
|
||||
} else {
|
||||
query.ParentId = item.Id;
|
||||
}
|
||||
}
|
||||
|
||||
function getQuery(parentItem) {
|
||||
|
||||
var key = getSavedQueryKey();
|
||||
var pageData = data[key];
|
||||
|
||||
if (!pageData) {
|
||||
pageData = data[key] = {
|
||||
query: {
|
||||
SortBy: "SortName",
|
||||
SortOrder: "Ascending",
|
||||
Recursive: params.recursive !== 'false',
|
||||
Fields: "PrimaryImageAspectRatio,SortName,BasicSyncInfo",
|
||||
ImageTypeLimit: 1,
|
||||
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
|
||||
StartIndex: 0,
|
||||
Limit: libraryBrowser.getDefaultPageSize()
|
||||
}
|
||||
};
|
||||
|
||||
var type = params.type;
|
||||
if (type) {
|
||||
pageData.query.IncludeItemTypes = type;
|
||||
|
||||
if (type == 'Audio') {
|
||||
pageData.query.SortBy = 'Album,SortName';
|
||||
}
|
||||
}
|
||||
|
||||
var filters = params.filters;
|
||||
if (type) {
|
||||
pageData.query.Filters = filters;
|
||||
}
|
||||
|
||||
if (parentItem) {
|
||||
addCurrentItemToQuery(pageData.query, parentItem);
|
||||
}
|
||||
|
||||
libraryBrowser.loadSavedQueryValues(key, pageData.query);
|
||||
}
|
||||
return pageData.query;
|
||||
}
|
||||
|
||||
function getSavedQueryKey() {
|
||||
|
||||
return libraryBrowser.getSavedQueryKey();
|
||||
}
|
||||
|
||||
function parentWithClass(elem, className) {
|
||||
|
||||
while (!elem.classList || !elem.classList.contains(className)) {
|
||||
elem = elem.parentNode;
|
||||
|
||||
if (!elem) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
return elem;
|
||||
}
|
||||
function onListItemClick(e) {
|
||||
|
||||
var mediaItem = parentWithClass(e.target, 'mediaItem');
|
||||
if (mediaItem) {
|
||||
var info = libraryBrowser.getListItemInfo(mediaItem);
|
||||
|
||||
if (info.mediaType == 'Photo') {
|
||||
var query = getQuery();
|
||||
|
||||
require(['scripts/photos'], function () {
|
||||
Photos.startSlideshow(view, query, info.id);
|
||||
});
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function onViewStyleChange(parentItem) {
|
||||
|
||||
var query = getQuery(parentItem);
|
||||
|
||||
var itemsContainer = view.querySelector('#items');
|
||||
|
||||
if (query.IncludeItemTypes == "Audio") {
|
||||
|
||||
itemsContainer.classList.add('vertical-list');
|
||||
itemsContainer.classList.remove('vertical-wrap');
|
||||
|
||||
} else {
|
||||
|
||||
itemsContainer.classList.remove('vertical-list');
|
||||
itemsContainer.classList.add('vertical-wrap');
|
||||
}
|
||||
}
|
||||
|
||||
function reloadItems(parentItem) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var query = getQuery(parentItem);
|
||||
|
||||
ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function (result) {
|
||||
|
||||
// Scroll back up so they can see the results from the beginning
|
||||
window.scrollTo(0, 0);
|
||||
|
||||
var html = '';
|
||||
var pagingHtml = libraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
totalRecordCount: result.TotalRecordCount,
|
||||
showLimit: false
|
||||
});
|
||||
|
||||
var i, length;
|
||||
var elems;
|
||||
|
||||
elems = view.querySelectorAll('.paging');
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].innerHTML = pagingHtml;
|
||||
}
|
||||
|
||||
var itemsContainer = view.querySelector('#items');
|
||||
|
||||
if (query.IncludeItemTypes == "Audio") {
|
||||
|
||||
html = listView.getListViewHtml({
|
||||
items: result.Items,
|
||||
playFromHere: true,
|
||||
action: 'playallfromhere',
|
||||
smallIcon: true
|
||||
});
|
||||
|
||||
} else {
|
||||
|
||||
var posterOptions = {
|
||||
items: result.Items,
|
||||
shape: "auto",
|
||||
centerText: true,
|
||||
lazy: true
|
||||
};
|
||||
|
||||
if (query.IncludeItemTypes == "MusicAlbum") {
|
||||
posterOptions.overlayText = false;
|
||||
posterOptions.showParentTitle = true;
|
||||
posterOptions.showTitle = true;
|
||||
posterOptions.overlayPlayButton = true;
|
||||
}
|
||||
else if (query.IncludeItemTypes == "MusicArtist") {
|
||||
posterOptions.overlayText = false;
|
||||
posterOptions.overlayPlayButton = true;
|
||||
}
|
||||
else if (query.IncludeItemTypes == "Episode") {
|
||||
posterOptions.overlayText = false;
|
||||
posterOptions.showParentTitle = true;
|
||||
posterOptions.showTitle = true;
|
||||
posterOptions.overlayPlayButton = true;
|
||||
}
|
||||
|
||||
// Poster
|
||||
html = cardBuilder.getCardsHtml(posterOptions);
|
||||
}
|
||||
|
||||
itemsContainer.innerHTML = html;
|
||||
imageLoader.lazyChildren(itemsContainer);
|
||||
|
||||
function onNextPageClick() {
|
||||
query.StartIndex += query.Limit;
|
||||
reloadItems(view);
|
||||
}
|
||||
|
||||
function onPreviousPageClick() {
|
||||
query.StartIndex -= query.Limit;
|
||||
reloadItems(view);
|
||||
}
|
||||
|
||||
elems = view.querySelectorAll('.btnNextPage');
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].addEventListener('click', onNextPageClick);
|
||||
}
|
||||
|
||||
elems = view.querySelectorAll('.btnPreviousPage');
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].addEventListener('click', onPreviousPageClick);
|
||||
}
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
view.addEventListener('click', onListItemClick);
|
||||
|
||||
function getItemPromise() {
|
||||
|
||||
var id = params.genreId || params.studioId || params.artistId || params.personId || params.parentId;
|
||||
|
||||
if (id) {
|
||||
return ApiClient.getItem(Dashboard.getCurrentUserId(), id);
|
||||
}
|
||||
|
||||
var name = params.genre;
|
||||
|
||||
if (name) {
|
||||
return ApiClient.getGenre(name, Dashboard.getCurrentUserId());
|
||||
}
|
||||
|
||||
name = params.musicgenre;
|
||||
|
||||
if (name) {
|
||||
return ApiClient.getMusicGenre(name, Dashboard.getCurrentUserId());
|
||||
}
|
||||
|
||||
name = params.gamegenre;
|
||||
|
||||
if (name) {
|
||||
return ApiClient.getGameGenre(name, Dashboard.getCurrentUserId());
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
view.addEventListener('viewbeforeshow', function (e) {
|
||||
|
||||
var parentPromise = getItemPromise();
|
||||
|
||||
if (parentPromise) {
|
||||
parentPromise.then(function (parent) {
|
||||
LibraryMenu.setTitle(parent.Name);
|
||||
|
||||
onViewStyleChange(parent);
|
||||
reloadItems(parent);
|
||||
});
|
||||
}
|
||||
|
||||
else {
|
||||
onViewStyleChange();
|
||||
reloadItems();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
});
|
||||
define(["libraryBrowser","listView","cardBuilder","imageLoader","emby-itemscontainer"],function(libraryBrowser,listView,cardBuilder,imageLoader){"use strict";return function(view,params){function addCurrentItemToQuery(query,item){params.parentId&&(query.ParentId=params.parentId),"Person"==item.Type?query.PersonIds=item.Id:"Genre"==item.Type?query.Genres=item.Name:"MusicGenre"==item.Type?query.Genres=item.Name:"GameGenre"==item.Type?query.Genres=item.Name:"Studio"==item.Type?query.StudioIds=item.Id:"MusicArtist"==item.Type?query.ArtistIds=item.Id:query.ParentId=item.Id}function getQuery(parentItem){var key=getSavedQueryKey(),pageData=data[key];if(!pageData){pageData=data[key]={query:{SortBy:"SortName",SortOrder:"Ascending",Recursive:"false"!==params.recursive,Fields:"PrimaryImageAspectRatio,SortName,BasicSyncInfo",ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Banner,Thumb",StartIndex:0,Limit:libraryBrowser.getDefaultPageSize()}};var type=params.type;type&&(pageData.query.IncludeItemTypes=type,"Audio"==type&&(pageData.query.SortBy="Album,SortName"));var filters=params.filters;type&&(pageData.query.Filters=filters),parentItem&&addCurrentItemToQuery(pageData.query,parentItem),libraryBrowser.loadSavedQueryValues(key,pageData.query)}return pageData.query}function getSavedQueryKey(){return libraryBrowser.getSavedQueryKey()}function parentWithClass(elem,className){for(;!elem.classList||!elem.classList.contains(className);)if(elem=elem.parentNode,!elem)return null;return elem}function onListItemClick(e){var mediaItem=parentWithClass(e.target,"mediaItem");if(mediaItem){var info=libraryBrowser.getListItemInfo(mediaItem);if("Photo"==info.mediaType){var query=getQuery();return require(["scripts/photos"],function(){Photos.startSlideshow(view,query,info.id)}),!1}}}function onViewStyleChange(parentItem){var query=getQuery(parentItem),itemsContainer=view.querySelector("#items");"Audio"==query.IncludeItemTypes?(itemsContainer.classList.add("vertical-list"),itemsContainer.classList.remove("vertical-wrap")):(itemsContainer.classList.remove("vertical-list"),itemsContainer.classList.add("vertical-wrap"))}function reloadItems(parentItem){Dashboard.showLoadingMsg();var query=getQuery(parentItem);ApiClient.getItems(Dashboard.getCurrentUserId(),query).then(function(result){function onNextPageClick(){query.StartIndex+=query.Limit,reloadItems(view)}function onPreviousPageClick(){query.StartIndex-=query.Limit,reloadItems(view)}window.scrollTo(0,0);var i,length,elems,html="",pagingHtml=libraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1});for(elems=view.querySelectorAll(".paging"),i=0,length=elems.length;i<length;i++)elems[i].innerHTML=pagingHtml;var itemsContainer=view.querySelector("#items");if("Audio"==query.IncludeItemTypes)html=listView.getListViewHtml({items:result.Items,playFromHere:!0,action:"playallfromhere",smallIcon:!0});else{var posterOptions={items:result.Items,shape:"auto",centerText:!0,lazy:!0};"MusicAlbum"==query.IncludeItemTypes?(posterOptions.overlayText=!1,posterOptions.showParentTitle=!0,posterOptions.showTitle=!0,posterOptions.overlayPlayButton=!0):"MusicArtist"==query.IncludeItemTypes?(posterOptions.overlayText=!1,posterOptions.overlayPlayButton=!0):"Episode"==query.IncludeItemTypes&&(posterOptions.overlayText=!1,posterOptions.showParentTitle=!0,posterOptions.showTitle=!0,posterOptions.overlayPlayButton=!0),html=cardBuilder.getCardsHtml(posterOptions)}for(itemsContainer.innerHTML=html,imageLoader.lazyChildren(itemsContainer),elems=view.querySelectorAll(".btnNextPage"),i=0,length=elems.length;i<length;i++)elems[i].addEventListener("click",onNextPageClick);for(elems=view.querySelectorAll(".btnPreviousPage"),i=0,length=elems.length;i<length;i++)elems[i].addEventListener("click",onPreviousPageClick);Dashboard.hideLoadingMsg()})}function getItemPromise(){var id=params.genreId||params.studioId||params.artistId||params.personId||params.parentId;if(id)return ApiClient.getItem(Dashboard.getCurrentUserId(),id);var name=params.genre;return name?ApiClient.getGenre(name,Dashboard.getCurrentUserId()):(name=params.musicgenre)?ApiClient.getMusicGenre(name,Dashboard.getCurrentUserId()):(name=params.gamegenre,name?ApiClient.getGameGenre(name,Dashboard.getCurrentUserId()):null)}var data={};view.addEventListener("click",onListItemClick),view.addEventListener("viewbeforeshow",function(e){var parentPromise=getItemPromise();parentPromise?parentPromise.then(function(parent){LibraryMenu.setTitle(parent.Name),onViewStyleChange(parent),reloadItems(parent)}):(onViewStyleChange(),reloadItems())})}});
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,158 +1 @@
|
|||
define(['datetime', 'jQuery'], function (datetime, $) {
|
||||
'use strict';
|
||||
|
||||
function revoke(page, key) {
|
||||
|
||||
require(['confirm'], function (confirm) {
|
||||
|
||||
confirm(Globalize.translate('MessageConfirmRevokeApiKey'), Globalize.translate('HeaderConfirmRevokeApiKey')).then(function () {
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
ApiClient.ajax({
|
||||
type: "DELETE",
|
||||
url: ApiClient.getUrl('Auth/Keys/' + key)
|
||||
|
||||
}).then(function () {
|
||||
|
||||
loadData(page);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
function renderKeys(page, keys, users) {
|
||||
|
||||
var rows = keys.map(function (item) {
|
||||
|
||||
var html = '';
|
||||
|
||||
html += '<tr>';
|
||||
|
||||
html += '<td>';
|
||||
html += '<button data-token="' + item.AccessToken + '" class="btnRevoke" data-mini="true" title="' + Globalize.translate('ButtonRevoke') + '" style="margin:0;">' + Globalize.translate('ButtonRevoke') + '</button>';
|
||||
html += '</td>';
|
||||
|
||||
html += '<td style="vertical-align:middle;">';
|
||||
html += (item.AccessToken);
|
||||
html += '</td>';
|
||||
|
||||
html += '<td style="vertical-align:middle;">';
|
||||
html += (item.AppName || '');
|
||||
html += '</td>';
|
||||
|
||||
html += '<td style="vertical-align:middle;">';
|
||||
html += (item.DeviceName || '');
|
||||
html += '</td>';
|
||||
|
||||
html += '<td style="vertical-align:middle;">';
|
||||
|
||||
var user = users.filter(function (u) {
|
||||
|
||||
return u.Id == item.UserId;
|
||||
})[0];
|
||||
|
||||
if (user) {
|
||||
html += user.Name;
|
||||
}
|
||||
|
||||
html += '</td>';
|
||||
|
||||
html += '<td style="vertical-align:middle;">';
|
||||
|
||||
var date = datetime.parseISO8601Date(item.DateCreated, true);
|
||||
|
||||
html += datetime.toLocaleDateString(date) + ' ' + datetime.getDisplayTime(date);
|
||||
|
||||
html += '</td>';
|
||||
|
||||
html += '</tr>';
|
||||
|
||||
return html;
|
||||
|
||||
}).join('');
|
||||
|
||||
var elem = $('.resultBody', page).html(rows).parents('.tblApiKeys').table("refresh").trigger('create');
|
||||
|
||||
$('.btnRevoke', elem).on('click', function () {
|
||||
|
||||
revoke(page, this.getAttribute('data-token'));
|
||||
});
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
}
|
||||
|
||||
function loadData(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
ApiClient.getUsers().then(function (users) {
|
||||
|
||||
ApiClient.getJSON(ApiClient.getUrl('Auth/Keys')).then(function (result) {
|
||||
|
||||
renderKeys(page, result.Items, users);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function showNewKeyPrompt(page) {
|
||||
require(['prompt'], function (prompt) {
|
||||
|
||||
// HeaderNewApiKeyHelp not used
|
||||
|
||||
prompt({
|
||||
title: Globalize.translate('HeaderNewApiKey'),
|
||||
label: Globalize.translate('LabelAppName'),
|
||||
description: Globalize.translate('LabelAppNameExample')
|
||||
|
||||
}).then(function (value) {
|
||||
|
||||
ApiClient.ajax({
|
||||
type: "POST",
|
||||
url: ApiClient.getUrl('Auth/Keys', {
|
||||
|
||||
App: value
|
||||
|
||||
})
|
||||
|
||||
}).then(function () {
|
||||
|
||||
loadData(page);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
function getTabs() {
|
||||
return [
|
||||
{
|
||||
href: 'dashboardhosting.html',
|
||||
name: Globalize.translate('TabHosting')
|
||||
},
|
||||
{
|
||||
href: 'serversecurity.html',
|
||||
name: Globalize.translate('TabSecurity')
|
||||
}];
|
||||
}
|
||||
|
||||
pageIdOn('pageinit', "serverSecurityPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
$('.btnNewKey', page).on('click', function () {
|
||||
|
||||
showNewKeyPrompt(page);
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
pageIdOn('pagebeforeshow', "serverSecurityPage", function () {
|
||||
|
||||
LibraryMenu.setTabs('adminadvanced', 1, getTabs);
|
||||
var page = this;
|
||||
|
||||
loadData(page);
|
||||
});
|
||||
|
||||
});
|
||||
define(["datetime","jQuery"],function(datetime,$){"use strict";function revoke(page,key){require(["confirm"],function(confirm){confirm(Globalize.translate("MessageConfirmRevokeApiKey"),Globalize.translate("HeaderConfirmRevokeApiKey")).then(function(){Dashboard.showLoadingMsg(),ApiClient.ajax({type:"DELETE",url:ApiClient.getUrl("Auth/Keys/"+key)}).then(function(){loadData(page)})})})}function renderKeys(page,keys,users){var rows=keys.map(function(item){var html="";html+="<tr>",html+="<td>",html+='<button data-token="'+item.AccessToken+'" class="btnRevoke" data-mini="true" title="'+Globalize.translate("ButtonRevoke")+'" style="margin:0;">'+Globalize.translate("ButtonRevoke")+"</button>",html+="</td>",html+='<td style="vertical-align:middle;">',html+=item.AccessToken,html+="</td>",html+='<td style="vertical-align:middle;">',html+=item.AppName||"",html+="</td>",html+='<td style="vertical-align:middle;">',html+=item.DeviceName||"",html+="</td>",html+='<td style="vertical-align:middle;">';var user=users.filter(function(u){return u.Id==item.UserId})[0];user&&(html+=user.Name),html+="</td>",html+='<td style="vertical-align:middle;">';var date=datetime.parseISO8601Date(item.DateCreated,!0);return html+=datetime.toLocaleDateString(date)+" "+datetime.getDisplayTime(date),html+="</td>",html+="</tr>"}).join(""),elem=$(".resultBody",page).html(rows).parents(".tblApiKeys").table("refresh").trigger("create");$(".btnRevoke",elem).on("click",function(){revoke(page,this.getAttribute("data-token"))}),Dashboard.hideLoadingMsg()}function loadData(page){Dashboard.showLoadingMsg(),ApiClient.getUsers().then(function(users){ApiClient.getJSON(ApiClient.getUrl("Auth/Keys")).then(function(result){renderKeys(page,result.Items,users)})})}function showNewKeyPrompt(page){require(["prompt"],function(prompt){prompt({title:Globalize.translate("HeaderNewApiKey"),label:Globalize.translate("LabelAppName"),description:Globalize.translate("LabelAppNameExample")}).then(function(value){ApiClient.ajax({type:"POST",url:ApiClient.getUrl("Auth/Keys",{App:value})}).then(function(){loadData(page)})})})}function getTabs(){return[{href:"dashboardhosting.html",name:Globalize.translate("TabHosting")},{href:"serversecurity.html",name:Globalize.translate("TabSecurity")}]}pageIdOn("pageinit","serverSecurityPage",function(){var page=this;$(".btnNewKey",page).on("click",function(){showNewKeyPrompt(page)})}),pageIdOn("pagebeforeshow","serverSecurityPage",function(){LibraryMenu.setTabs("adminadvanced",1,getTabs);var page=this;loadData(page)})});
|
|
@ -1,91 +1 @@
|
|||
define(['jQuery', 'libraryBrowser', 'imageLoader', 'indicators'], function ($, libraryBrowser, imageLoader, indicators) {
|
||||
'use strict';
|
||||
|
||||
var currentItem;
|
||||
|
||||
function reload(page) {
|
||||
|
||||
var id = getParameterByName('id');
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
ApiClient.getJSON(ApiClient.getUrl('Social/Shares/Public/' + id + '/Item')).then(function (item) {
|
||||
|
||||
reloadFromItem(page, item);
|
||||
});
|
||||
}
|
||||
|
||||
function reloadFromItem(page, item) {
|
||||
|
||||
currentItem = item;
|
||||
|
||||
libraryBrowser.renderName(item, $('.itemName', page)[0], false);
|
||||
libraryBrowser.renderParentName(item, $('.parentName', page)[0]);
|
||||
libraryBrowser.renderDetailPageBackdrop(page, item, imageLoader);
|
||||
|
||||
renderImage(page, item);
|
||||
|
||||
setInitialCollapsibleState(page, item);
|
||||
ItemDetailPage.renderDetails(page, item, null, true);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
}
|
||||
|
||||
function setInitialCollapsibleState(page, item) {
|
||||
|
||||
$('.collectionItems', page).empty();
|
||||
|
||||
if (item.MediaSources && item.MediaSources.length) {
|
||||
ItemDetailPage.renderMediaSources(page, null, item);
|
||||
}
|
||||
|
||||
var chapters = item.Chapters || [];
|
||||
|
||||
if (!chapters.length) {
|
||||
$('#scenesCollapsible', page).hide();
|
||||
} else {
|
||||
$('#scenesCollapsible', page).show();
|
||||
ItemDetailPage.renderScenes(page, item, null, 3, true);
|
||||
}
|
||||
|
||||
if (!item.People || !item.People.length) {
|
||||
$('#castCollapsible', page).hide();
|
||||
} else {
|
||||
$('#castCollapsible', page).show();
|
||||
ItemDetailPage.renderCast(page, item, null, 6, true);
|
||||
}
|
||||
|
||||
ItemDetailPage.renderCriticReviews(page, item, 1);
|
||||
}
|
||||
|
||||
function renderImage(page, item) {
|
||||
libraryBrowser.renderDetailImage(page.querySelector('.detailImageContainer'), item, false, null, imageLoader, indicators);
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#publicSharedItemPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
$(page).on("click", ".moreScenes", function () {
|
||||
|
||||
ItemDetailPage.renderScenes(page, currentItem, null, null, true);
|
||||
|
||||
}).on("click", ".morePeople", function () {
|
||||
|
||||
ItemDetailPage.renderCast(page, currentItem, null, null, true);
|
||||
|
||||
}).on("click", ".moreCriticReviews", function () {
|
||||
|
||||
ItemDetailPage.renderCriticReviews(page, currentItem);
|
||||
|
||||
});
|
||||
|
||||
}).on('pageshow', "#publicSharedItemPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
reload(page);
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
define(["jQuery","libraryBrowser","imageLoader","indicators"],function($,libraryBrowser,imageLoader,indicators){"use strict";function reload(page){var id=getParameterByName("id");Dashboard.showLoadingMsg(),ApiClient.getJSON(ApiClient.getUrl("Social/Shares/Public/"+id+"/Item")).then(function(item){reloadFromItem(page,item)})}function reloadFromItem(page,item){currentItem=item,libraryBrowser.renderName(item,$(".itemName",page)[0],!1),libraryBrowser.renderParentName(item,$(".parentName",page)[0]),libraryBrowser.renderDetailPageBackdrop(page,item,imageLoader),renderImage(page,item),setInitialCollapsibleState(page,item),ItemDetailPage.renderDetails(page,item,null,!0),Dashboard.hideLoadingMsg()}function setInitialCollapsibleState(page,item){$(".collectionItems",page).empty(),item.MediaSources&&item.MediaSources.length&&ItemDetailPage.renderMediaSources(page,null,item);var chapters=item.Chapters||[];chapters.length?($("#scenesCollapsible",page).show(),ItemDetailPage.renderScenes(page,item,null,3,!0)):$("#scenesCollapsible",page).hide(),item.People&&item.People.length?($("#castCollapsible",page).show(),ItemDetailPage.renderCast(page,item,null,6,!0)):$("#castCollapsible",page).hide(),ItemDetailPage.renderCriticReviews(page,item,1)}function renderImage(page,item){libraryBrowser.renderDetailImage(page.querySelector(".detailImageContainer"),item,!1,null,imageLoader,indicators)}var currentItem;$(document).on("pageinit","#publicSharedItemPage",function(){var page=this;$(page).on("click",".moreScenes",function(){ItemDetailPage.renderScenes(page,currentItem,null,null,!0)}).on("click",".morePeople",function(){ItemDetailPage.renderCast(page,currentItem,null,null,!0)}).on("click",".moreCriticReviews",function(){ItemDetailPage.renderCriticReviews(page,currentItem)})}).on("pageshow","#publicSharedItemPage",function(){var page=this;reload(page)})});
|
File diff suppressed because one or more lines are too long
|
@ -1,207 +1 @@
|
|||
define(['events', 'libraryBrowser', 'imageLoader', 'listView', 'emby-itemscontainer'], function (events, libraryBrowser, imageLoader, listView) {
|
||||
'use strict';
|
||||
|
||||
return function (view, params, tabContent) {
|
||||
|
||||
var self = this;
|
||||
|
||||
var data = {};
|
||||
|
||||
function getPageData(context) {
|
||||
var key = getSavedQueryKey(context);
|
||||
var pageData = data[key];
|
||||
|
||||
if (!pageData) {
|
||||
pageData = data[key] = {
|
||||
query: {
|
||||
SortBy: "Album,SortName",
|
||||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "Audio",
|
||||
Recursive: true,
|
||||
Fields: "AudioInfo,ParentId",
|
||||
Limit: 100,
|
||||
StartIndex: 0,
|
||||
ImageTypeLimit: 1,
|
||||
EnableImageTypes: "Primary"
|
||||
}
|
||||
};
|
||||
|
||||
pageData.query.ParentId = params.topParentId;
|
||||
libraryBrowser.loadSavedQueryValues(key, pageData.query);
|
||||
}
|
||||
return pageData;
|
||||
}
|
||||
|
||||
function getQuery(context) {
|
||||
|
||||
return getPageData(context).query;
|
||||
}
|
||||
|
||||
function getSavedQueryKey(context) {
|
||||
|
||||
if (!context.savedQueryKey) {
|
||||
context.savedQueryKey = libraryBrowser.getSavedQueryKey('songs');
|
||||
}
|
||||
return context.savedQueryKey;
|
||||
}
|
||||
|
||||
function reloadItems(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var query = getQuery(page);
|
||||
|
||||
ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function (result) {
|
||||
|
||||
// Scroll back up so they can see the results from the beginning
|
||||
window.scrollTo(0, 0);
|
||||
|
||||
updateFilterControls(page);
|
||||
|
||||
var pagingHtml = LibraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
totalRecordCount: result.TotalRecordCount,
|
||||
showLimit: false,
|
||||
updatePageSizeSetting: false,
|
||||
addLayoutButton: false,
|
||||
sortButton: false,
|
||||
filterButton: false
|
||||
});
|
||||
|
||||
var html = listView.getListViewHtml({
|
||||
items: result.Items,
|
||||
action: 'playallfromhere',
|
||||
smallIcon: true,
|
||||
artist: true,
|
||||
addToListButton: true
|
||||
});
|
||||
|
||||
var i, length;
|
||||
var elems = tabContent.querySelectorAll('.paging');
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].innerHTML = pagingHtml;
|
||||
}
|
||||
|
||||
function onNextPageClick() {
|
||||
query.StartIndex += query.Limit;
|
||||
reloadItems(tabContent);
|
||||
}
|
||||
|
||||
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;
|
||||
imageLoader.lazyChildren(itemsContainer);
|
||||
|
||||
libraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
self.showFilterMenu = function () {
|
||||
|
||||
require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
|
||||
|
||||
var filterDialog = new filterDialogFactory({
|
||||
query: getQuery(tabContent),
|
||||
mode: 'songs'
|
||||
});
|
||||
|
||||
Events.on(filterDialog, 'filterchange', function () {
|
||||
getQuery(tabContent).StartIndex = 0;
|
||||
reloadItems(tabContent);
|
||||
});
|
||||
|
||||
filterDialog.show();
|
||||
});
|
||||
}
|
||||
|
||||
function updateFilterControls(tabContent) {
|
||||
|
||||
}
|
||||
|
||||
function initPage(tabContent) {
|
||||
|
||||
tabContent.querySelector('.btnFilter').addEventListener('click', function () {
|
||||
self.showFilterMenu();
|
||||
});
|
||||
|
||||
tabContent.querySelector('.btnSort').addEventListener('click', function (e) {
|
||||
libraryBrowser.showSortMenu({
|
||||
items: [{
|
||||
name: Globalize.translate('OptionTrackName'),
|
||||
id: 'Name'
|
||||
},
|
||||
{
|
||||
name: Globalize.translate('OptionAlbum'),
|
||||
id: 'Album,SortName'
|
||||
},
|
||||
{
|
||||
name: Globalize.translate('OptionAlbumArtist'),
|
||||
id: 'AlbumArtist,Album,SortName'
|
||||
},
|
||||
{
|
||||
name: Globalize.translate('OptionArtist'),
|
||||
id: 'Artist,Album,SortName'
|
||||
},
|
||||
{
|
||||
name: Globalize.translate('OptionDateAdded'),
|
||||
id: 'DateCreated,SortName'
|
||||
},
|
||||
{
|
||||
name: Globalize.translate('OptionDatePlayed'),
|
||||
id: 'DatePlayed,SortName'
|
||||
},
|
||||
{
|
||||
name: Globalize.translate('OptionPlayCount'),
|
||||
id: 'PlayCount,SortName'
|
||||
},
|
||||
{
|
||||
name: Globalize.translate('OptionReleaseDate'),
|
||||
id: 'PremiereDate,AlbumArtist,Album,SortName'
|
||||
},
|
||||
{
|
||||
name: Globalize.translate('OptionRuntime'),
|
||||
id: 'Runtime,AlbumArtist,Album,SortName'
|
||||
}],
|
||||
callback: function () {
|
||||
getQuery(tabContent).StartIndex = 0;
|
||||
reloadItems(tabContent);
|
||||
},
|
||||
query: getQuery(tabContent),
|
||||
button: e.target
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
self.getCurrentViewStyle = function () {
|
||||
return getPageData(tabContent).view;
|
||||
};
|
||||
|
||||
initPage(tabContent);
|
||||
|
||||
self.renderTab = function () {
|
||||
|
||||
reloadItems(tabContent);
|
||||
updateFilterControls(tabContent);
|
||||
};
|
||||
|
||||
self.destroy = function () {
|
||||
};
|
||||
};
|
||||
});
|
||||
define(["events","libraryBrowser","imageLoader","listView","emby-itemscontainer"],function(events,libraryBrowser,imageLoader,listView){"use strict";return function(view,params,tabContent){function getPageData(context){var key=getSavedQueryKey(context),pageData=data[key];return pageData||(pageData=data[key]={query:{SortBy:"Album,SortName",SortOrder:"Ascending",IncludeItemTypes:"Audio",Recursive:!0,Fields:"AudioInfo,ParentId",Limit:100,StartIndex:0,ImageTypeLimit:1,EnableImageTypes:"Primary"}},pageData.query.ParentId=params.topParentId,libraryBrowser.loadSavedQueryValues(key,pageData.query)),pageData}function getQuery(context){return getPageData(context).query}function getSavedQueryKey(context){return context.savedQueryKey||(context.savedQueryKey=libraryBrowser.getSavedQueryKey("songs")),context.savedQueryKey}function reloadItems(page){Dashboard.showLoadingMsg();var query=getQuery(page);ApiClient.getItems(Dashboard.getCurrentUserId(),query).then(function(result){function onNextPageClick(){query.StartIndex+=query.Limit,reloadItems(tabContent)}function onPreviousPageClick(){query.StartIndex-=query.Limit,reloadItems(tabContent)}window.scrollTo(0,0),updateFilterControls(page);var i,length,pagingHtml=LibraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1,updatePageSizeSetting:!1,addLayoutButton:!1,sortButton:!1,filterButton:!1}),html=listView.getListViewHtml({items:result.Items,action:"playallfromhere",smallIcon:!0,artist:!0,addToListButton:!0}),elems=tabContent.querySelectorAll(".paging");for(i=0,length=elems.length;i<length;i++)elems[i].innerHTML=pagingHtml;for(elems=tabContent.querySelectorAll(".btnNextPage"),i=0,length=elems.length;i<length;i++)elems[i].addEventListener("click",onNextPageClick);for(elems=tabContent.querySelectorAll(".btnPreviousPage"),i=0,length=elems.length;i<length;i++)elems[i].addEventListener("click",onPreviousPageClick);var itemsContainer=tabContent.querySelector(".itemsContainer");itemsContainer.innerHTML=html,imageLoader.lazyChildren(itemsContainer),libraryBrowser.saveQueryValues(getSavedQueryKey(page),query),Dashboard.hideLoadingMsg()})}function updateFilterControls(tabContent){}function initPage(tabContent){tabContent.querySelector(".btnFilter").addEventListener("click",function(){self.showFilterMenu()}),tabContent.querySelector(".btnSort").addEventListener("click",function(e){libraryBrowser.showSortMenu({items:[{name:Globalize.translate("OptionTrackName"),id:"Name"},{name:Globalize.translate("OptionAlbum"),id:"Album,SortName"},{name:Globalize.translate("OptionAlbumArtist"),id:"AlbumArtist,Album,SortName"},{name:Globalize.translate("OptionArtist"),id:"Artist,Album,SortName"},{name:Globalize.translate("OptionDateAdded"),id:"DateCreated,SortName"},{name:Globalize.translate("OptionDatePlayed"),id:"DatePlayed,SortName"},{name:Globalize.translate("OptionPlayCount"),id:"PlayCount,SortName"},{name:Globalize.translate("OptionReleaseDate"),id:"PremiereDate,AlbumArtist,Album,SortName"},{name:Globalize.translate("OptionRuntime"),id:"Runtime,AlbumArtist,Album,SortName"}],callback:function(){getQuery(tabContent).StartIndex=0,reloadItems(tabContent)},query:getQuery(tabContent),button:e.target})})}var self=this,data={};self.showFilterMenu=function(){require(["components/filterdialog/filterdialog"],function(filterDialogFactory){var filterDialog=new filterDialogFactory({query:getQuery(tabContent),mode:"songs"});Events.on(filterDialog,"filterchange",function(){getQuery(tabContent).StartIndex=0,reloadItems(tabContent)}),filterDialog.show()})},self.getCurrentViewStyle=function(){return getPageData(tabContent).view},initPage(tabContent),self.renderTab=function(){reloadItems(tabContent),updateFilterControls(tabContent)},self.destroy=function(){}}});
|
|
@ -1,100 +1 @@
|
|||
define(['jQuery'], function ($) {
|
||||
'use strict';
|
||||
|
||||
function loadPage(page, config) {
|
||||
|
||||
$('#txtRemoteClientBitrateLimit', page).val((config.RemoteClientBitrateLimit / 1000000) || '');
|
||||
|
||||
ApiClient.getNamedConfiguration("channels").then(function (channelConfig) {
|
||||
|
||||
$('#selectChannelResolution', page).val(channelConfig.PreferredStreamingWidth || '');
|
||||
|
||||
});
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
}
|
||||
|
||||
function onSubmit() {
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var form = this;
|
||||
|
||||
ApiClient.getServerConfiguration().then(function (config) {
|
||||
|
||||
config.RemoteClientBitrateLimit = parseInt(parseFloat(($('#txtRemoteClientBitrateLimit', form).val() || '0')) * 1000000);
|
||||
|
||||
ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult);
|
||||
});
|
||||
|
||||
ApiClient.getNamedConfiguration("channels").then(function (config) {
|
||||
|
||||
// This should be null if empty
|
||||
config.PreferredStreamingWidth = $('#selectChannelResolution', form).val() || null;
|
||||
|
||||
ApiClient.updateNamedConfiguration("channels", config).then(Dashboard.processServerConfigurationUpdateResult);
|
||||
});
|
||||
|
||||
// Disable default form submission
|
||||
return false;
|
||||
}
|
||||
|
||||
function getTabs() {
|
||||
return [
|
||||
{
|
||||
href: 'cinemamodeconfiguration.html',
|
||||
name: Globalize.translate('TabCinemaMode')
|
||||
},
|
||||
{
|
||||
href: 'playbackconfiguration.html',
|
||||
name: Globalize.translate('TabResumeSettings')
|
||||
},
|
||||
{
|
||||
href: 'streamingsettings.html',
|
||||
name: Globalize.translate('TabStreaming')
|
||||
}];
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#streamingSettingsPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
$('#btnSelectTranscodingTempPath', page).on("click.selectDirectory", function () {
|
||||
|
||||
require(['directorybrowser'], function (directoryBrowser) {
|
||||
|
||||
var picker = new directoryBrowser();
|
||||
|
||||
picker.show({
|
||||
|
||||
callback: function (path) {
|
||||
|
||||
if (path) {
|
||||
$('#txtTranscodingTempPath', page).val(path);
|
||||
}
|
||||
picker.close();
|
||||
},
|
||||
|
||||
header: Globalize.translate('HeaderSelectTranscodingPath'),
|
||||
|
||||
instruction: Globalize.translate('HeaderSelectTranscodingPathHelp')
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
$('.streamingSettingsForm').off('submit', onSubmit).on('submit', onSubmit);
|
||||
|
||||
}).on('pageshow', "#streamingSettingsPage", function () {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
LibraryMenu.setTabs('playback', 2, getTabs);
|
||||
var page = this;
|
||||
|
||||
ApiClient.getServerConfiguration().then(function (config) {
|
||||
|
||||
loadPage(page, config);
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
define(["jQuery"],function($){"use strict";function loadPage(page,config){$("#txtRemoteClientBitrateLimit",page).val(config.RemoteClientBitrateLimit/1e6||""),ApiClient.getNamedConfiguration("channels").then(function(channelConfig){$("#selectChannelResolution",page).val(channelConfig.PreferredStreamingWidth||"")}),Dashboard.hideLoadingMsg()}function onSubmit(){Dashboard.showLoadingMsg();var form=this;return ApiClient.getServerConfiguration().then(function(config){config.RemoteClientBitrateLimit=parseInt(1e6*parseFloat($("#txtRemoteClientBitrateLimit",form).val()||"0")),ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult)}),ApiClient.getNamedConfiguration("channels").then(function(config){config.PreferredStreamingWidth=$("#selectChannelResolution",form).val()||null,ApiClient.updateNamedConfiguration("channels",config).then(Dashboard.processServerConfigurationUpdateResult)}),!1}function getTabs(){return[{href:"cinemamodeconfiguration.html",name:Globalize.translate("TabCinemaMode")},{href:"playbackconfiguration.html",name:Globalize.translate("TabResumeSettings")},{href:"streamingsettings.html",name:Globalize.translate("TabStreaming")}]}$(document).on("pageinit","#streamingSettingsPage",function(){var page=this;$("#btnSelectTranscodingTempPath",page).on("click.selectDirectory",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({callback:function(path){path&&$("#txtTranscodingTempPath",page).val(path),picker.close()},header:Globalize.translate("HeaderSelectTranscodingPath"),instruction:Globalize.translate("HeaderSelectTranscodingPathHelp")})})}),$(".streamingSettingsForm").off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#streamingSettingsPage",function(){Dashboard.showLoadingMsg(),LibraryMenu.setTabs("playback",2,getTabs);var page=this;ApiClient.getServerConfiguration().then(function(config){loadPage(page,config)})})});
|
|
@ -1,175 +1 @@
|
|||
define(['fetchHelper', 'jQuery', 'registrationServices'], function (fetchHelper, $, registrationServices) {
|
||||
'use strict';
|
||||
|
||||
function load(page) {
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
ApiClient.getPluginSecurityInfo().then(function (info) {
|
||||
|
||||
$('#txtSupporterKey', page).val(info.SupporterKey);
|
||||
|
||||
if (info.SupporterKey && !info.IsMBSupporter) {
|
||||
page.querySelector('#txtSupporterKey').classList.add('invalidEntry');
|
||||
$('.notSupporter', page).show();
|
||||
} else {
|
||||
page.querySelector('#txtSupporterKey').classList.remove('invalidEntry');
|
||||
$('.notSupporter', page).hide();
|
||||
}
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
function loadUserInfo(page) {
|
||||
|
||||
Dashboard.getPluginSecurityInfo().then(function (info) {
|
||||
|
||||
if (info.IsMBSupporter) {
|
||||
$('.supporterContainer', page).addClass('hide');
|
||||
} else {
|
||||
$('.supporterContainer', page).removeClass('hide');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function retrieveSupporterKey() {
|
||||
Dashboard.showLoadingMsg();
|
||||
var form = this;
|
||||
|
||||
var email = $('#txtEmail', form).val();
|
||||
|
||||
var url = "https://mb3admin.com/admin/service/supporter/retrievekey?email=" + email;
|
||||
console.log(url);
|
||||
fetchHelper.ajax({
|
||||
|
||||
url: url,
|
||||
type: 'POST',
|
||||
dataType: 'json'
|
||||
|
||||
}).then(function (result) {
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
if (result.Success) {
|
||||
require(['toast'], function (toast) {
|
||||
toast(Globalize.translate('MessageKeyEmailedTo').replace("{0}", email));
|
||||
});
|
||||
} else {
|
||||
require(['toast'], function (toast) {
|
||||
toast(result.ErrorMessage);
|
||||
});
|
||||
}
|
||||
console.log(result);
|
||||
|
||||
});
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
var SupporterKeyPage = {
|
||||
|
||||
updateSupporterKey: function () {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
var form = this;
|
||||
|
||||
var key = $('#txtSupporterKey', form).val();
|
||||
|
||||
var info = {
|
||||
SupporterKey: key
|
||||
};
|
||||
|
||||
ApiClient.updatePluginSecurityInfo(info).then(function () {
|
||||
|
||||
Dashboard.resetPluginSecurityInfo();
|
||||
Dashboard.hideLoadingMsg();
|
||||
|
||||
if (key) {
|
||||
|
||||
Dashboard.alert({
|
||||
message: Globalize.translate('MessageKeyUpdated'),
|
||||
title: Globalize.translate('HeaderConfirmation')
|
||||
});
|
||||
|
||||
} else {
|
||||
Dashboard.alert({
|
||||
message: Globalize.translate('MessageKeyRemoved'),
|
||||
title: Globalize.translate('HeaderConfirmation')
|
||||
});
|
||||
}
|
||||
|
||||
var page = $(form).parents('.page')[0];
|
||||
|
||||
load(page);
|
||||
});
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
linkSupporterKeys: function () {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
var form = this;
|
||||
|
||||
var email = $('#txtNewEmail', form).val();
|
||||
var newkey = $('#txtNewKey', form).val();
|
||||
var oldkey = $('#txtOldKey', form).val();
|
||||
|
||||
var url = "https://mb3admin.com/admin/service/supporter/linkKeys";
|
||||
console.log(url);
|
||||
fetchHelper.ajax({
|
||||
|
||||
url: url,
|
||||
type: 'POST',
|
||||
dataType: 'json',
|
||||
query: {
|
||||
email: email,
|
||||
newkey: newkey,
|
||||
oldkey: oldkey
|
||||
}
|
||||
|
||||
}).then(function (result) {
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
if (result.Success) {
|
||||
require(['toast'], function (toast) {
|
||||
toast(Globalize.translate('MessageKeysLinked'));
|
||||
});
|
||||
} else {
|
||||
require(['toast'], function (toast) {
|
||||
toast(result.ErrorMessage);
|
||||
});
|
||||
}
|
||||
console.log(result);
|
||||
|
||||
});
|
||||
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
function onSupporterLinkClick(e) {
|
||||
|
||||
registrationServices.showPremiereInfo();
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#supporterKeyPage", function () {
|
||||
|
||||
var page = this;
|
||||
$('#supporterKeyForm', this).on('submit', SupporterKeyPage.updateSupporterKey);
|
||||
$('#lostKeyForm', this).on('submit', retrieveSupporterKey);
|
||||
$('#linkKeysForm', this).on('submit', SupporterKeyPage.linkSupporterKeys);
|
||||
|
||||
page.querySelector('.benefits').innerHTML = Globalize.translate('HeaderSupporterBenefit', '<a class="lnkPremiere" href="http://emby.media/premiere" target="_blank">', '</a>');
|
||||
|
||||
page.querySelector('.lnkPremiere').addEventListener('click', onSupporterLinkClick);
|
||||
|
||||
}).on('pageshow', "#supporterKeyPage", function () {
|
||||
|
||||
var page = this;
|
||||
loadUserInfo(page);
|
||||
load(page);
|
||||
});
|
||||
|
||||
});
|
||||
define(["fetchHelper","jQuery","registrationServices"],function(fetchHelper,$,registrationServices){"use strict";function load(page){Dashboard.showLoadingMsg(),ApiClient.getPluginSecurityInfo().then(function(info){$("#txtSupporterKey",page).val(info.SupporterKey),info.SupporterKey&&!info.IsMBSupporter?(page.querySelector("#txtSupporterKey").classList.add("invalidEntry"),$(".notSupporter",page).show()):(page.querySelector("#txtSupporterKey").classList.remove("invalidEntry"),$(".notSupporter",page).hide()),Dashboard.hideLoadingMsg()})}function loadUserInfo(page){Dashboard.getPluginSecurityInfo().then(function(info){info.IsMBSupporter?$(".supporterContainer",page).addClass("hide"):$(".supporterContainer",page).removeClass("hide")})}function retrieveSupporterKey(){Dashboard.showLoadingMsg();var form=this,email=$("#txtEmail",form).val(),url="https://mb3admin.com/admin/service/supporter/retrievekey?email="+email;return console.log(url),fetchHelper.ajax({url:url,type:"POST",dataType:"json"}).then(function(result){Dashboard.hideLoadingMsg(),result.Success?require(["toast"],function(toast){toast(Globalize.translate("MessageKeyEmailedTo").replace("{0}",email))}):require(["toast"],function(toast){toast(result.ErrorMessage)}),console.log(result)}),!1}function onSupporterLinkClick(e){registrationServices.showPremiereInfo(),e.preventDefault(),e.stopPropagation()}var SupporterKeyPage={updateSupporterKey:function(){Dashboard.showLoadingMsg();var form=this,key=$("#txtSupporterKey",form).val(),info={SupporterKey:key};return ApiClient.updatePluginSecurityInfo(info).then(function(){Dashboard.resetPluginSecurityInfo(),Dashboard.hideLoadingMsg(),key?Dashboard.alert({message:Globalize.translate("MessageKeyUpdated"),title:Globalize.translate("HeaderConfirmation")}):Dashboard.alert({message:Globalize.translate("MessageKeyRemoved"),title:Globalize.translate("HeaderConfirmation")});var page=$(form).parents(".page")[0];load(page)}),!1},linkSupporterKeys:function(){Dashboard.showLoadingMsg();var form=this,email=$("#txtNewEmail",form).val(),newkey=$("#txtNewKey",form).val(),oldkey=$("#txtOldKey",form).val(),url="https://mb3admin.com/admin/service/supporter/linkKeys";return console.log(url),fetchHelper.ajax({url:url,type:"POST",dataType:"json",query:{email:email,newkey:newkey,oldkey:oldkey}}).then(function(result){Dashboard.hideLoadingMsg(),result.Success?require(["toast"],function(toast){toast(Globalize.translate("MessageKeysLinked"))}):require(["toast"],function(toast){toast(result.ErrorMessage)}),console.log(result)}),!1}};$(document).on("pageinit","#supporterKeyPage",function(){var page=this;$("#supporterKeyForm",this).on("submit",SupporterKeyPage.updateSupporterKey),$("#lostKeyForm",this).on("submit",retrieveSupporterKey),$("#linkKeysForm",this).on("submit",SupporterKeyPage.linkSupporterKeys),page.querySelector(".benefits").innerHTML=Globalize.translate("HeaderSupporterBenefit",'<a class="lnkPremiere" href="http://emby.media/premiere" target="_blank">',"</a>"),page.querySelector(".lnkPremiere").addEventListener("click",onSupporterLinkClick)}).on("pageshow","#supporterKeyPage",function(){var page=this;loadUserInfo(page),load(page)})});
|
|
@ -1,61 +1 @@
|
|||
define(['loading', 'apphost', 'globalize', 'syncJobList', 'events', 'scripts/taskbutton', 'localsync', 'emby-button', 'paper-icon-button-light'], function (loading, appHost, globalize, syncJobList, events, taskButton) {
|
||||
'use strict';
|
||||
|
||||
function getTabs() {
|
||||
return [
|
||||
{
|
||||
href: 'syncactivity.html',
|
||||
name: Globalize.translate('TabSyncJobs')
|
||||
},
|
||||
{
|
||||
href: 'devicesupload.html',
|
||||
name: Globalize.translate('TabCameraUpload')
|
||||
},
|
||||
{
|
||||
href: 'appservices.html?context=sync',
|
||||
name: Globalize.translate('TabServices')
|
||||
},
|
||||
{
|
||||
href: 'syncsettings.html',
|
||||
name: Globalize.translate('TabSettings')
|
||||
}];
|
||||
}
|
||||
|
||||
return function (view, params) {
|
||||
|
||||
var mySyncJobList = new syncJobList({
|
||||
isLocalSync: params.mode === 'offline',
|
||||
serverId: ApiClient.serverId(),
|
||||
userId: params.mode === 'offline' ? null : ApiClient.getCurrentUserId(),
|
||||
element: view.querySelector('.syncActivity'),
|
||||
mode: params.mode
|
||||
});
|
||||
|
||||
view.addEventListener('viewshow', function () {
|
||||
|
||||
LibraryMenu.setTabs('syncadmin', 0, getTabs);
|
||||
|
||||
taskButton({
|
||||
mode: 'on',
|
||||
progressElem: view.querySelector('.syncProgress'),
|
||||
taskKey: 'SyncPrepare',
|
||||
button: view.querySelector('.btnSync')
|
||||
});
|
||||
});
|
||||
|
||||
view.addEventListener('viewbeforehide', function () {
|
||||
|
||||
taskButton({
|
||||
mode: 'off',
|
||||
taskKey: 'SyncPrepare',
|
||||
button: view.querySelector('.btnSync')
|
||||
});
|
||||
});
|
||||
|
||||
view.addEventListener('viewdestroy', function () {
|
||||
|
||||
mySyncJobList.destroy();
|
||||
});
|
||||
};
|
||||
|
||||
});
|
||||
define(["loading","apphost","globalize","syncJobList","events","scripts/taskbutton","localsync","emby-button","paper-icon-button-light"],function(loading,appHost,globalize,syncJobList,events,taskButton){"use strict";function getTabs(){return[{href:"syncactivity.html",name:Globalize.translate("TabSyncJobs")},{href:"devicesupload.html",name:Globalize.translate("TabCameraUpload")},{href:"appservices.html?context=sync",name:Globalize.translate("TabServices")},{href:"syncsettings.html",name:Globalize.translate("TabSettings")}]}return function(view,params){var mySyncJobList=new syncJobList({isLocalSync:"offline"===params.mode,serverId:ApiClient.serverId(),userId:"offline"===params.mode?null:ApiClient.getCurrentUserId(),element:view.querySelector(".syncActivity"),mode:params.mode});view.addEventListener("viewshow",function(){LibraryMenu.setTabs("syncadmin",0,getTabs),taskButton({mode:"on",progressElem:view.querySelector(".syncProgress"),taskKey:"SyncPrepare",button:view.querySelector(".btnSync")})}),view.addEventListener("viewbeforehide",function(){taskButton({mode:"off",taskKey:"SyncPrepare",button:view.querySelector(".btnSync")})}),view.addEventListener("viewdestroy",function(){mySyncJobList.destroy()})}});
|
|
@ -1,92 +1 @@
|
|||
define(['jQuery', 'fnchecked'], function ($) {
|
||||
'use strict';
|
||||
|
||||
function loadPage(page, config) {
|
||||
|
||||
$('#txtSyncTempPath', page).val(config.TemporaryPath || '');
|
||||
$('#txtUploadSpeedLimit', page).val((config.UploadSpeedLimitBytes / 1000000) || '');
|
||||
$('#txtCpuCoreLimit', page).val(config.TranscodingCpuCoreLimit);
|
||||
$('#chkEnableFullSpeedConversion', page).checked(config.EnableFullSpeedTranscoding);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
}
|
||||
|
||||
function onSubmit() {
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var form = this;
|
||||
|
||||
ApiClient.getNamedConfiguration("sync").then(function (config) {
|
||||
|
||||
config.TemporaryPath = $('#txtSyncTempPath', form).val();
|
||||
config.UploadSpeedLimitBytes = parseInt(parseFloat(($('#txtUploadSpeedLimit', form).val() || '0')) * 1000000);
|
||||
config.TranscodingCpuCoreLimit = parseInt($('#txtCpuCoreLimit', form).val());
|
||||
config.EnableFullSpeedTranscoding = $('#chkEnableFullSpeedConversion', form).checked();
|
||||
|
||||
ApiClient.updateNamedConfiguration("sync", config).then(Dashboard.processServerConfigurationUpdateResult);
|
||||
});
|
||||
|
||||
// Disable default form submission
|
||||
return false;
|
||||
}
|
||||
|
||||
function getTabs() {
|
||||
return [
|
||||
{
|
||||
href: 'syncactivity.html',
|
||||
name: Globalize.translate('TabSyncJobs')
|
||||
},
|
||||
{
|
||||
href: 'devicesupload.html',
|
||||
name: Globalize.translate('TabCameraUpload')
|
||||
},
|
||||
{
|
||||
href: 'appservices.html?context=sync',
|
||||
name: Globalize.translate('TabServices')
|
||||
},
|
||||
{
|
||||
href: 'syncsettings.html',
|
||||
name: Globalize.translate('TabSettings')
|
||||
}];
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#syncSettingsPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
$('#btnSelectSyncTempPath', page).on("click.selectDirectory", function () {
|
||||
|
||||
require(['directorybrowser'], function (directoryBrowser) {
|
||||
|
||||
var picker = new directoryBrowser();
|
||||
|
||||
picker.show({
|
||||
|
||||
callback: function (path) {
|
||||
if (path) {
|
||||
$('#txtSyncTempPath', page).val(path);
|
||||
}
|
||||
picker.close();
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
$('.syncSettingsForm').off('submit', onSubmit).on('submit', onSubmit);
|
||||
|
||||
|
||||
}).on('pageshow', "#syncSettingsPage", function () {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
LibraryMenu.setTabs('syncadmin', 3, getTabs);
|
||||
var page = this;
|
||||
|
||||
ApiClient.getNamedConfiguration("sync").then(function (config) {
|
||||
|
||||
loadPage(page, config);
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
define(["jQuery","fnchecked"],function($){"use strict";function loadPage(page,config){$("#txtSyncTempPath",page).val(config.TemporaryPath||""),$("#txtUploadSpeedLimit",page).val(config.UploadSpeedLimitBytes/1e6||""),$("#txtCpuCoreLimit",page).val(config.TranscodingCpuCoreLimit),$("#chkEnableFullSpeedConversion",page).checked(config.EnableFullSpeedTranscoding),Dashboard.hideLoadingMsg()}function onSubmit(){Dashboard.showLoadingMsg();var form=this;return ApiClient.getNamedConfiguration("sync").then(function(config){config.TemporaryPath=$("#txtSyncTempPath",form).val(),config.UploadSpeedLimitBytes=parseInt(1e6*parseFloat($("#txtUploadSpeedLimit",form).val()||"0")),config.TranscodingCpuCoreLimit=parseInt($("#txtCpuCoreLimit",form).val()),config.EnableFullSpeedTranscoding=$("#chkEnableFullSpeedConversion",form).checked(),ApiClient.updateNamedConfiguration("sync",config).then(Dashboard.processServerConfigurationUpdateResult)}),!1}function getTabs(){return[{href:"syncactivity.html",name:Globalize.translate("TabSyncJobs")},{href:"devicesupload.html",name:Globalize.translate("TabCameraUpload")},{href:"appservices.html?context=sync",name:Globalize.translate("TabServices")},{href:"syncsettings.html",name:Globalize.translate("TabSettings")}]}$(document).on("pageinit","#syncSettingsPage",function(){var page=this;$("#btnSelectSyncTempPath",page).on("click.selectDirectory",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({callback:function(path){path&&$("#txtSyncTempPath",page).val(path),picker.close()}})})}),$(".syncSettingsForm").off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#syncSettingsPage",function(){Dashboard.showLoadingMsg(),LibraryMenu.setTabs("syncadmin",3,getTabs);var page=this;ApiClient.getNamedConfiguration("sync").then(function(config){loadPage(page,config)})})});
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue