diff --git a/dashboard-ui/notificationsetting.html b/dashboard-ui/notificationsetting.html new file mode 100644 index 0000000000..84f1cde6fb --- /dev/null +++ b/dashboard-ui/notificationsetting.html @@ -0,0 +1,87 @@ + + + + ${TitleAdvanced} + + +
+ +
+
+ + + +

+ +
+ +
    +
  • + + +
  • +
+ + + +
+ +
+
+
+
+
+ +
+ +
+
+
${AdditionalNotificationServices}
+
+
+ +
+
    +
  • + + +
    +
    ${LabelAvailableTokens}
    +
    +
    +
  • +
  • +
    + + +
  • + +
+
+ +
+
+ + +
+ + diff --git a/dashboard-ui/notificationsettings.html b/dashboard-ui/notificationsettings.html index 0eed54bc4a..244fb3b33b 100644 --- a/dashboard-ui/notificationsettings.html +++ b/dashboard-ui/notificationsettings.html @@ -16,61 +16,17 @@ ${TabServer} ${TabTranscoding} -
- -
- -
+ - - diff --git a/dashboard-ui/scripts/edititemimages.js b/dashboard-ui/scripts/edititemimages.js index 1ba1c1cb7e..0fb0db53d7 100644 --- a/dashboard-ui/scripts/edititemimages.js +++ b/dashboard-ui/scripts/edititemimages.js @@ -289,7 +289,7 @@ $('.lnkBrowseAllImages', page).addClass('hide'); } - ApiClient.getItemImageInfos(currentItem.Id, currentItem.Type, currentItem.Name).done(function (imageInfos) { + ApiClient.getItemImageInfos(currentItem.Id).done(function (imageInfos) { renderStandardImages(page, item, imageInfos, providers); renderBackdrops(page, item, imageInfos, providers); @@ -486,7 +486,7 @@ var imageType = $('#selectImageType', page).val(); - ApiClient.uploadItemImage(currentItem.Id, currentItem.Type, currentItem.Name, imageType, file).done(function () { + ApiClient.uploadItemImage(currentItem.Id, imageType, file).done(function () { $('#uploadImage', page).val('').trigger('change'); $('#popupUpload', page).popup("close"); @@ -504,7 +504,7 @@ Dashboard.confirm("Are you sure you wish to delete this image?", "Delete " + type + " Image", function (result) { if (result) { - ApiClient.deleteItemImage(currentItem.Id, currentItem.Type, currentItem.Name, type, index).done(function () { + ApiClient.deleteItemImage(currentItem.Id, type, index).done(function () { processImageChangeResult(page); @@ -520,7 +520,7 @@ var page = $.mobile.activePage; - ApiClient.updateItemImageIndex(currentItem.Id, currentItem.Type, currentItem.Name, type, index, newIndex).done(function () { + ApiClient.updateItemImageIndex(currentItem.Id, type, index, newIndex).done(function () { processImageChangeResult(page); diff --git a/dashboard-ui/scripts/edititemmetadata.js b/dashboard-ui/scripts/edititemmetadata.js index 0d8f0a6116..71cc2cd2d9 100644 --- a/dashboard-ui/scripts/edititemmetadata.js +++ b/dashboard-ui/scripts/edititemmetadata.js @@ -807,31 +807,7 @@ item.RunTimeTicks = seriesRuntime ? (seriesRuntime * 600000000) : null; } - var updatePromise; - - if (currentItem.Type == "MusicArtist") { - updatePromise = ApiClient.updateArtist(item); - } - else if (currentItem.Type == "Genre") { - updatePromise = ApiClient.updateGenre(item); - } - else if (currentItem.Type == "MusicGenre") { - updatePromise = ApiClient.updateMusicGenre(item); - } - else if (currentItem.Type == "GameGenre") { - updatePromise = ApiClient.updateGameGenre(item); - } - else if (currentItem.Type == "Person") { - updatePromise = ApiClient.updatePerson(item); - } - else if (currentItem.Type == "Studio") { - updatePromise = ApiClient.updateStudio(item); - } - else { - updatePromise = ApiClient.updateItem(item); - } - - updatePromise.done(function () { + ApiClient.updateItem(item).done(function () { Dashboard.alert('Item saved.'); @@ -1104,33 +1080,9 @@ $('#refreshLoading', page).show(); - var refreshPromise; - var force = $('#selectRefreshMode', page).val() == 'all'; - if (currentItem.Type == "MusicArtist") { - refreshPromise = ApiClient.refreshArtist(currentItem.Name, force); - } - else if (currentItem.Type == "Genre") { - refreshPromise = ApiClient.refreshGenre(currentItem.Name, force); - } - else if (currentItem.Type == "MusicGenre") { - refreshPromise = ApiClient.refreshMusicGenre(currentItem.Name, force); - } - else if (currentItem.Type == "GameGenre") { - refreshPromise = ApiClient.refreshGameGenre(currentItem.Name, force); - } - else if (currentItem.Type == "Person") { - refreshPromise = ApiClient.refreshPerson(currentItem.Name, force); - } - else if (currentItem.Type == "Studio") { - refreshPromise = ApiClient.refreshStudio(currentItem.Name, force); - } - else { - refreshPromise = ApiClient.refreshItem(currentItem.Id, force, true); - } - - refreshPromise.done(function () { + ApiClient.refreshItem(currentItem.Id, force, true).done(function () { reload(page); diff --git a/dashboard-ui/scripts/movieslatest.js b/dashboard-ui/scripts/movieslatest.js index 4de0f6f88d..806ccec9a6 100644 --- a/dashboard-ui/scripts/movieslatest.js +++ b/dashboard-ui/scripts/movieslatest.js @@ -14,7 +14,8 @@ Limit: screenWidth >= 1920 ? 32 : (screenWidth >= 1440 ? 24 : (screenWidth >= 800 ? 18 : 12)), Recursive: true, Fields: "PrimaryImageAspectRatio", - Filters: "IsUnplayed" + Filters: "IsUnplayed", + CollapseBoxSetItems: false }; ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) { @@ -34,7 +35,8 @@ Limit: screenWidth >= 1920 ? 8 : (screenWidth >= 1440 ? 8 : 6), Recursive: true, Fields: "PrimaryImageAspectRatio", - Filters: "IsUnplayed" + Filters: "IsUnplayed", + CollapseBoxSetItems: false }; ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) { diff --git a/dashboard-ui/scripts/moviesrecommended.js b/dashboard-ui/scripts/moviesrecommended.js index ae7d9038db..d306545fd3 100644 --- a/dashboard-ui/scripts/moviesrecommended.js +++ b/dashboard-ui/scripts/moviesrecommended.js @@ -49,7 +49,8 @@ Filters: "IsResumable", Limit: screenWidth >= 1920 ? 4 : (screenWidth >= 1440 ? 4 : 3), Recursive: true, - Fields: "PrimaryImageAspectRatio" + Fields: "PrimaryImageAspectRatio", + CollapseBoxSetItems: false }; ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) { diff --git a/dashboard-ui/scripts/notificationsetting.js b/dashboard-ui/scripts/notificationsetting.js new file mode 100644 index 0000000000..a935f360a2 --- /dev/null +++ b/dashboard-ui/scripts/notificationsetting.js @@ -0,0 +1,169 @@ +(function () { + + function fillItems(elem, items, cssClass, idPrefix, disabledList) { + + var html = '
'; + + html += items.map(function (u) { + + var id = idPrefix + u.Id; + + var checkedHtml = disabledList.indexOf(u.Id) != -1 ? '' : ' checked="checked"'; + + return ''; + + }).join(''); + + html += '
'; + + elem.html(html).trigger('create'); + } + + function reload(page) { + + var type = getParameterByName('type'); + + var promise1 = ApiClient.getUsers(); + var promise2 = ApiClient.getServerConfiguration(); + var promise3 = $.getJSON(ApiClient.getUrl("Notifications/Types")); + var promise4 = $.getJSON(ApiClient.getUrl("Notifications/Services")); + + $.when(promise1, promise2, promise3, promise4).done(function (response1, response2, response3, response4) { + + var users = response1[0]; + var config = response2[0]; + var types = response3[0]; + var services = response4[0]; + + var notificationConfig = config.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: [], + DisabledSendToUsers: [], + DisabledServices: [] + }; + } + + fillItems($('.monitorUsersList', page), users, 'chkMonitor', 'chkMonitor', notificationConfig.DisabledMonitorUsers); + fillItems($('.sendToUsersList', page), users, 'chkSendTo', 'chkSendTo', notificationConfig.DisabledSendToUsers); + fillItems($('.servicesList', page), services, 'chkService', 'chkService', notificationConfig.DisabledServices); + + $('#chkEnabled', page).checked(notificationConfig.Enabled || false).checkboxradio('refresh'); + + $('#txtTitle', page).val(notificationConfig.Title || typeInfo.DefaultTitle); + + }); + } + + function save(page) { + + var type = getParameterByName('type'); + + var promise1 = ApiClient.getServerConfiguration(); + var promise2 = $.getJSON(ApiClient.getUrl("Notifications/Types")); + + $.when(promise1, promise2).done(function (response1, response2) { + + var config = response1[0]; + var types = response2[0]; + + var notificationOptions = config.NotificationOptions; + + var notificationConfig = config.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(); + + // Don't persist if it's just the default + if (notificationConfig.Title == typeInfo.DefaultTitle) { + notificationConfig.Title = null; + } + + notificationConfig.DisabledMonitorUsers = $('.chkMonitor:not(:checked)', page).get().map(function (c) { + return c.getAttribute('data-itemid'); + }); + + notificationConfig.DisabledSendToUsers = $('.chkSendTo:not(:checked)', page).get().map(function (c) { + return c.getAttribute('data-itemid'); + }); + + notificationConfig.DisabledServices = $('.chkService:not(:checked)', page).get().map(function (c) { + return c.getAttribute('data-itemid'); + }); + + ApiClient.updateServerConfiguration(config).done(function(r) { + + Dashboard.navigate('notificationsettings.html'); + }); + + }); + } + + $(document).on('pageshow', "#notificationSettingPage", function () { + + var page = this; + + reload(page); + }); + + window.NotificationSettingPage = { + + onSubmit: function () { + + var page = $(this).parents('.page'); + save(page); + return false; + } + }; + +})(jQuery, window); \ No newline at end of file diff --git a/dashboard-ui/scripts/notificationsettings.js b/dashboard-ui/scripts/notificationsettings.js index 8a6139292e..d8743bced7 100644 --- a/dashboard-ui/scripts/notificationsettings.js +++ b/dashboard-ui/scripts/notificationsettings.js @@ -2,44 +2,50 @@ function reload(page) { - ApiClient.getServerConfiguration().done(function (config) { + Dashboard.showLoadingMsg(); - var notificationOptions = config.NotificationOptions; - - $('#chkNewLibraryContent', page).checked(notificationOptions.SendOnNewLibraryContent).checkboxradio('refresh'); - $('#chkFailedTasks', page).checked(notificationOptions.SendOnFailedTasks).checkboxradio('refresh'); - $('#chkUpdates', page).checked(notificationOptions.SendOnUpdates).checkboxradio('refresh'); - - $('#chkServerRestartRequired', page).checked(notificationOptions.SendOnServerRestartRequired).checkboxradio('refresh'); + $.getJSON(ApiClient.getUrl("Notifications/Types")).done(function (list) { - $('#chkVideoPlayback', page).checked(notificationOptions.SendOnVideoPlayback).checkboxradio('refresh'); - $('#chkAudioPlayback', page).checked(notificationOptions.SendOnAudioPlayback).checkboxradio('refresh'); - $('#chkGamePlayback', page).checked(notificationOptions.SendOnGamePlayback).checkboxradio('refresh'); + var html = ''; + + $('.notificationList', page).html(html).trigger('create'); + + Dashboard.hideLoadingMsg(); }); } - function save(page) { - - ApiClient.getServerConfiguration().done(function (config) { - - var notificationOptions = config.NotificationOptions; - - notificationOptions.SendOnNewLibraryContent = $('#chkNewLibraryContent', page).checked(); - notificationOptions.SendOnFailedTasks = $('#chkFailedTasks', page).checked(); - notificationOptions.SendOnUpdates = $('#chkUpdates', page).checked(); - - notificationOptions.SendOnServerRestartRequired = $('#chkServerRestartRequired', page).checked(); - - notificationOptions.SendOnVideoPlayback = $('#chkVideoPlayback', page).checked(); - notificationOptions.SendOnAudioPlayback = $('#chkAudioPlayback', page).checked(); - notificationOptions.SendOnGamePlayback = $('#chkGamePlayback', page).checked(); - - ApiClient.updateServerConfiguration(config).done(Dashboard.processServerConfigurationUpdateResult); - }); - - } - $(document).on('pageshow', "#notificationSettingsPage", function () { var page = this; @@ -47,14 +53,4 @@ reload(page); }); - window.NotificationSettingsPage = { - - onSubmit: function () { - - var page = $(this).parents('.page'); - save(page); - return false; - } - }; - })(jQuery, window); \ No newline at end of file diff --git a/dashboard-ui/thirdparty/mediabrowser.apiclient.js b/dashboard-ui/thirdparty/mediabrowser.apiclient.js index 6e0ba6c829..7bb7877b9f 100644 --- a/dashboard-ui/thirdparty/mediabrowser.apiclient.js +++ b/dashboard-ui/thirdparty/mediabrowser.apiclient.js @@ -1104,102 +1104,6 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout, wi }); }; - self.refreshArtist = function (name, force) { - - if (!name) { - throw new Error("null name"); - } - - var url = self.getUrl("Artists/" + self.encodeName(name) + "/Refresh", { - forced: force || false - }); - - return self.ajax({ - type: "POST", - url: url - }); - }; - - self.refreshGenre = function (name, force) { - - if (!name) { - throw new Error("null name"); - } - - var url = self.getUrl("Genres/" + self.encodeName(name) + "/Refresh", { - forced: force || false - }); - - return self.ajax({ - type: "POST", - url: url - }); - }; - - self.refreshMusicGenre = function (name, force) { - - if (!name) { - throw new Error("null name"); - } - - var url = self.getUrl("MusicGenres/" + self.encodeName(name) + "/Refresh", { - forced: force || false - }); - - return self.ajax({ - type: "POST", - url: url - }); - }; - - self.refreshGameGenre = function (name, force) { - - if (!name) { - throw new Error("null name"); - } - - var url = self.getUrl("GameGenres/" + self.encodeName(name) + "/Refresh", { - forced: force || false - }); - - return self.ajax({ - type: "POST", - url: url - }); - }; - - self.refreshPerson = function (name, force) { - - if (!name) { - throw new Error("null name"); - } - - var url = self.getUrl("Persons/" + self.encodeName(name) + "/Refresh", { - forced: force || false - }); - - return self.ajax({ - type: "POST", - url: url - }); - }; - - self.refreshStudio = function (name, force) { - - if (!name) { - throw new Error("null name"); - } - - var url = self.getUrl("Studios/" + self.encodeName(name) + "/Refresh", { - forced: force || false - }); - - return self.ajax({ - type: "POST", - url: url - }); - }; - /** * Installs or updates a new plugin */ @@ -1660,34 +1564,13 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout, wi }); }; - self.deleteItemImage = function (itemId, itemType, itemName, imageType, imageIndex) { + self.deleteItemImage = function (itemId, imageType, imageIndex) { if (!imageType) { throw new Error("null imageType"); } - if (!itemType) { - throw new Error("null itemType"); - } - - var url; - - if (itemType == "Artist") { - url = self.getUrl("Artists/" + self.encodeName(itemName) + "/Images"); - } - else if (itemType == "Genre") { - url = self.getUrl("Genres/" + self.encodeName(itemName) + "/Images"); - } else if (itemType == "GameGenre") { - url = self.getUrl("GameGenres/" + self.encodeName(itemName) + "/Images"); - } else if (itemType == "MusicGenre") { - url = self.getUrl("MusicGenres/" + self.encodeName(itemName) + "/Images"); - } else if (itemType == "Person") { - url = self.getUrl("Persons/" + self.encodeName(itemName) + "/Images"); - } else if (itemType == "Studio") { - url = self.getUrl("Studios/" + self.encodeName(itemName) + "/Images"); - } else { - url = self.getUrl("Items/" + itemId + "/Images"); - } + var url = self.getUrl("Items/" + itemId + "/Images"); url += "/" + imageType; @@ -1738,36 +1621,15 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout, wi }); }; - self.updateItemImageIndex = function (itemId, itemType, itemName, imageType, imageIndex, newIndex) { + self.updateItemImageIndex = function (itemId, imageType, imageIndex, newIndex) { if (!imageType) { throw new Error("null imageType"); } - if (!itemType) { - throw new Error("null itemType"); - } - - var url; - var options = { newIndex: newIndex }; - if (itemType == "Artist") { - url = self.getUrl("Artists/" + self.encodeName(itemName) + "/Images/" + imageType + "/" + imageIndex + "/Index", options); - } - else if (itemType == "Genre") { - url = self.getUrl("Genres/" + self.encodeName(itemName) + "/Images/" + imageType + "/" + imageIndex + "/Index", options); - } else if (itemType == "GameGenre") { - url = self.getUrl("GameGenres/" + self.encodeName(itemName) + "/Images/" + imageType + "/" + imageIndex + "/Index", options); - } else if (itemType == "MusicGenre") { - url = self.getUrl("MusicGenres/" + self.encodeName(itemName) + "/Images/" + imageType + "/" + imageIndex + "/Index", options); - } else if (itemType == "Person") { - url = self.getUrl("Persons/" + self.encodeName(itemName) + "/Images/" + imageType + "/" + imageIndex + "/Index", options); - } else if (itemType == "Studio") { - url = self.getUrl("Studios/" + self.encodeName(itemName) + "/Images/" + imageType + "/" + imageIndex + "/Index", options); - } else { - url = self.getUrl("Items/" + itemId + "/Images/" + imageType + "/" + imageIndex + "/Index", options); - } + var url = self.getUrl("Items/" + itemId + "/Images/" + imageType + "/" + imageIndex + "/Index", options); return self.ajax({ type: "POST", @@ -1775,30 +1637,9 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout, wi }); }; - self.getItemImageInfos = function (itemId, itemType, itemName) { + self.getItemImageInfos = function (itemId) { - if (!itemType) { - throw new Error("null itemType"); - } - - var url; - - if (itemType == "Artist") { - url = self.getUrl("Artists/" + self.encodeName(itemName) + "/Images"); - } - else if (itemType == "Genre") { - url = self.getUrl("Genres/" + self.encodeName(itemName) + "/Images"); - } else if (itemType == "GameGenre") { - url = self.getUrl("GameGenres/" + self.encodeName(itemName) + "/Images"); - } else if (itemType == "MusicGenre") { - url = self.getUrl("MusicGenres/" + self.encodeName(itemName) + "/Images"); - } else if (itemType == "Person") { - url = self.getUrl("Persons/" + self.encodeName(itemName) + "/Images"); - } else if (itemType == "Studio") { - url = self.getUrl("Studios/" + self.encodeName(itemName) + "/Images"); - } else { - url = self.getUrl("Items/" + itemId + "/Images"); - } + var url = self.getUrl("Items/" + itemId + "/Images"); return self.ajax({ type: "GET", @@ -1897,7 +1738,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout, wi return deferred.promise(); }; - self.uploadItemImage = function (itemId, itemType, itemName, imageType, file) { + self.uploadItemImage = function (itemId, imageType, file) { if (!itemId) { throw new Error("null itemId"); @@ -1915,24 +1756,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout, wi throw new Error("File must be an image."); } - var url; - - if (itemType == "Artist") { - url = self.getUrl("Artists/" + self.encodeName(itemName) + "/Images"); - } - else if (itemType == "Genre") { - url = self.getUrl("Genres/" + self.encodeName(itemName) + "/Images"); - } else if (itemType == "GameGenre") { - url = self.getUrl("GameGenres/" + self.encodeName(itemName) + "/Images"); - } else if (itemType == "MusicGenre") { - url = self.getUrl("MusicGenres/" + self.encodeName(itemName) + "/Images"); - } else if (itemType == "Person") { - url = self.getUrl("Persons/" + self.encodeName(itemName) + "/Images"); - } else if (itemType == "Studio") { - url = self.getUrl("Studios/" + self.encodeName(itemName) + "/Images"); - } else { - url = self.getUrl("Items/" + itemId + "/Images"); - } + var url = self.getUrl("Items/" + itemId + "/Images"); url += "/" + imageType; @@ -2583,102 +2407,6 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout, wi }); }; - self.updateArtist = function (item) { - - if (!item) { - throw new Error("null item"); - } - - var url = self.getUrl("Artists/" + self.encodeName(item.Name)); - - return self.ajax({ - type: "POST", - url: url, - data: JSON.stringify(item), - contentType: "application/json" - }); - }; - - self.updatePerson = function (item) { - - if (!item) { - throw new Error("null item"); - } - - var url = self.getUrl("Persons/" + self.encodeName(item.Name)); - - return self.ajax({ - type: "POST", - url: url, - data: JSON.stringify(item), - contentType: "application/json" - }); - }; - - self.updateStudio = function (item) { - - if (!item) { - throw new Error("null item"); - } - - var url = self.getUrl("Studios/" + self.encodeName(item.Name)); - - return self.ajax({ - type: "POST", - url: url, - data: JSON.stringify(item), - contentType: "application/json" - }); - }; - - self.updateGenre = function (item) { - - if (!item) { - throw new Error("null item"); - } - - var url = self.getUrl("Genres/" + self.encodeName(item.Name)); - - return self.ajax({ - type: "POST", - url: url, - data: JSON.stringify(item), - contentType: "application/json" - }); - }; - - self.updateMusicGenre = function (item) { - - if (!item) { - throw new Error("null item"); - } - - var url = self.getUrl("MusicGenres/" + self.encodeName(item.Name)); - - return self.ajax({ - type: "POST", - url: url, - data: JSON.stringify(item), - contentType: "application/json" - }); - }; - - self.updateGameGenre = function (item) { - - if (!item) { - throw new Error("null item"); - } - - var url = self.getUrl("GameGenres/" + self.encodeName(item.Name)); - - return self.ajax({ - type: "POST", - url: url, - data: JSON.stringify(item), - contentType: "application/json" - }); - }; - /** * Updates plugin security info */ @@ -3171,389 +2899,6 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout, wi }); }; - /** - * Updates a user's favorite status for an item by name. - * @param {String} userId - * @param {String} name - * @param {Boolean} isFavorite - */ - self.updateFavoriteArtistStatus = function (userId, name, isFavorite) { - - if (!userId) { - throw new Error("null userId"); - } - - if (!name) { - throw new Error("null name"); - } - - var url = self.getUrl("Users/" + userId + "/Favorites/Artists/" + self.encodeName(name)); - - var method = isFavorite ? "POST" : "DELETE"; - - return self.ajax({ - type: method, - url: url, - dataType: "json" - }); - }; - - self.updateFavoritePersonStatus = function (userId, name, isFavorite) { - - if (!userId) { - throw new Error("null userId"); - } - - if (!name) { - throw new Error("null name"); - } - - var url = self.getUrl("Users/" + userId + "/Favorites/Persons/" + self.encodeName(name)); - - var method = isFavorite ? "POST" : "DELETE"; - - return self.ajax({ - type: method, - url: url, - dataType: "json" - }); - }; - - self.updateFavoriteStudioStatus = function (userId, name, isFavorite) { - - if (!userId) { - throw new Error("null userId"); - } - - if (!name) { - throw new Error("null name"); - } - - var url = self.getUrl("Users/" + userId + "/Favorites/Studios/" + self.encodeName(name)); - - var method = isFavorite ? "POST" : "DELETE"; - - return self.ajax({ - type: method, - url: url, - dataType: "json" - }); - }; - - self.updateFavoriteGenreStatus = function (userId, name, isFavorite) { - - if (!userId) { - throw new Error("null userId"); - } - - if (!name) { - throw new Error("null name"); - } - - var url = self.getUrl("Users/" + userId + "/Favorites/Genres/" + self.encodeName(name)); - - var method = isFavorite ? "POST" : "DELETE"; - - return self.ajax({ - type: method, - url: url, - dataType: "json" - }); - }; - - self.updateFavoriteMusicGenreStatus = function (userId, name, isFavorite) { - - if (!userId) { - throw new Error("null userId"); - } - - if (!name) { - throw new Error("null name"); - } - - var url = self.getUrl("Users/" + userId + "/Favorites/MusicGenres/" + self.encodeName(name)); - - var method = isFavorite ? "POST" : "DELETE"; - - return self.ajax({ - type: method, - url: url, - dataType: "json" - }); - }; - - self.updateFavoriteGameGenreStatus = function (userId, name, isFavorite) { - - if (!userId) { - throw new Error("null userId"); - } - - if (!name) { - throw new Error("null name"); - } - - var url = self.getUrl("Users/" + userId + "/Favorites/GameGenres/" + self.encodeName(name)); - - var method = isFavorite ? "POST" : "DELETE"; - - return self.ajax({ - type: method, - url: url, - dataType: "json" - }); - }; - - /** - * Updates a user's rating for an item by name. - * @param {String} userId - * @param {String} name - * @param {Boolean} likes - */ - self.updateArtistRating = function (userId, name, likes) { - - if (!userId) { - throw new Error("null userId"); - } - - if (!name) { - throw new Error("null name"); - } - - var url = self.getUrl("Users/" + userId + "/Ratings/Artists/" + self.encodeName(name), { - likes: likes - }); - - return self.ajax({ - type: "POST", - url: url, - dataType: "json" - }); - }; - - self.updatePersonRating = function (userId, name, likes) { - - if (!userId) { - throw new Error("null userId"); - } - - if (!name) { - throw new Error("null name"); - } - - var url = self.getUrl("Users/" + userId + "/Ratings/Persons/" + self.encodeName(name), { - likes: likes - }); - - return self.ajax({ - type: "POST", - url: url, - dataType: "json" - }); - }; - - self.updateStudioRating = function (userId, name, likes) { - - if (!userId) { - throw new Error("null userId"); - } - - if (!name) { - throw new Error("null name"); - } - - var url = self.getUrl("Users/" + userId + "/Ratings/Studios/" + self.encodeName(name), { - likes: likes - }); - - return self.ajax({ - type: "POST", - url: url, - dataType: "json" - }); - }; - - self.updateGenreRating = function (userId, name, likes) { - - if (!userId) { - throw new Error("null userId"); - } - - if (!name) { - throw new Error("null name"); - } - - var url = self.getUrl("Users/" + userId + "/Ratings/Genres/" + self.encodeName(name), { - likes: likes - }); - - return self.ajax({ - type: "POST", - url: url, - dataType: "json" - }); - }; - - self.updateMusicGenreRating = function (userId, name, likes) { - - if (!userId) { - throw new Error("null userId"); - } - - if (!name) { - throw new Error("null name"); - } - - var url = self.getUrl("Users/" + userId + "/Ratings/MusicGenres/" + self.encodeName(name), { - likes: likes - }); - - return self.ajax({ - type: "POST", - url: url, - dataType: "json" - }); - }; - - self.updateGameGenreRating = function (userId, name, likes) { - - if (!userId) { - throw new Error("null userId"); - } - - if (!name) { - throw new Error("null name"); - } - - var url = self.getUrl("Users/" + userId + "/Ratings/GameGenres/" + self.encodeName(name), { - likes: likes - }); - - return self.ajax({ - type: "POST", - url: url, - dataType: "json" - }); - }; - - /** - * Clears a user's rating for an item by name. - * @param {String} userId - * @param {String} name - */ - self.clearArtistRating = function (userId, name) { - - if (!userId) { - throw new Error("null userId"); - } - - if (!name) { - throw new Error("null name"); - } - - var url = self.getUrl("Users/" + userId + "/Ratings/Artists/" + self.encodeName(name)); - - return self.ajax({ - type: "DELETE", - url: url, - dataType: "json" - }); - }; - - self.clearPersonRating = function (userId, name) { - - if (!userId) { - throw new Error("null userId"); - } - - if (!name) { - throw new Error("null name"); - } - - var url = self.getUrl("Users/" + userId + "/Ratings/Persons/" + self.encodeName(name)); - - return self.ajax({ - type: "DELETE", - url: url, - dataType: "json" - }); - }; - - self.clearStudioRating = function (userId, name) { - - if (!userId) { - throw new Error("null userId"); - } - - if (!name) { - throw new Error("null name"); - } - - var url = self.getUrl("Users/" + userId + "/Ratings/Studios/" + self.encodeName(name)); - - return self.ajax({ - type: "DELETE", - url: url, - dataType: "json" - }); - }; - - self.clearGenreRating = function (userId, name) { - - if (!userId) { - throw new Error("null userId"); - } - - if (!name) { - throw new Error("null name"); - } - - var url = self.getUrl("Users/" + userId + "/Ratings/Genres/" + self.encodeName(name)); - - return self.ajax({ - type: "DELETE", - url: url, - dataType: "json" - }); - }; - - self.clearMusicGenreRating = function (userId, name) { - - if (!userId) { - throw new Error("null userId"); - } - - if (!name) { - throw new Error("null name"); - } - - var url = self.getUrl("Users/" + userId + "/Ratings/MusicGenres/" + self.encodeName(name)); - - return self.ajax({ - type: "DELETE", - url: url, - dataType: "json" - }); - }; - - self.clearGameGenreRating = function (userId, name) { - - if (!userId) { - throw new Error("null userId"); - } - - if (!name) { - throw new Error("null name"); - } - - var url = self.getUrl("Users/" + userId + "/Ratings/GameGenres/" + self.encodeName(name)); - - return self.ajax({ - type: "DELETE", - url: url, - dataType: "json" - }); - }; - self.getItemCounts = function (userId) { var options = {};