diff --git a/dashboard-ui/css/tileitem.css b/dashboard-ui/css/tileitem.css index 9b8ad2d579..12e161aada 100644 --- a/dashboard-ui/css/tileitem.css +++ b/dashboard-ui/css/tileitem.css @@ -241,7 +241,7 @@ height: 150px; } - .backdropTileItem, .squareTileItem { + .backdropTileItem, .squareTileItem, .backdropTileItem.posterTileItem { width: 31.5%; } @@ -264,7 +264,7 @@ height: 170px; } - .backdropTileItem { + .backdropTileItem, .backdropTileItem.posterTileItem { width: 32%; } @@ -283,7 +283,7 @@ @media all and (min-width: 1920px) { - .backdropTileItem { + .backdropTileItem, .backdropTileItem.posterTileItem { width: 31.5%; } @@ -309,7 +309,7 @@ } @media all and (min-width: 2000px) { - .backdropTileItem { + .backdropTileItem, .backdropTileItem.posterTileItem { width: 23.5%; } @@ -335,7 +335,7 @@ } @media all and (min-width: 2200px) { - .backdropTileItem { + .backdropTileItem, .backdropTileItem.posterTileItem { width: 24%; } @@ -361,7 +361,7 @@ } @media all and (min-width: 2540px) { - .backdropTileItem { + .backdropTileItem, .backdropTileItem.posterTileItem { width: 18.75%; } diff --git a/dashboard-ui/edititemimages.html b/dashboard-ui/edititemimages.html index 856b2a64ed..0cb91e04bc 100644 --- a/dashboard-ui/edititemimages.html +++ b/dashboard-ui/edititemimages.html @@ -14,6 +14,7 @@
Metadata + People Images
diff --git a/dashboard-ui/edititemmetadata.html b/dashboard-ui/edititemmetadata.html index 42db10e445..59e3e765b2 100644 --- a/dashboard-ui/edititemmetadata.html +++ b/dashboard-ui/edititemmetadata.html @@ -13,6 +13,7 @@
Metadata + People Images
@@ -133,7 +134,7 @@
- Add + Add
@@ -143,7 +144,7 @@
- Add + Add
@@ -153,7 +154,7 @@
- Add + Add
diff --git a/dashboard-ui/edititempeople.html b/dashboard-ui/edititempeople.html new file mode 100644 index 0000000000..8763543f36 --- /dev/null +++ b/dashboard-ui/edititempeople.html @@ -0,0 +1,25 @@ + + + + Media Browser + + +
+ +
+
+

+
+ + +
+
+
+
+ + diff --git a/dashboard-ui/scripts/edititemmetadata.js b/dashboard-ui/scripts/edititemmetadata.js index 8d4c0a433b..bd3ac598f2 100644 --- a/dashboard-ui/scripts/edititemmetadata.js +++ b/dashboard-ui/scripts/edititemmetadata.js @@ -30,23 +30,6 @@ Dashboard.hideLoadingMsg(); }); - - $(page).on('click', 'ul[data-role="listview"] li a.removeBtn', function () { - var list = $(this).parents('ul[data-role="listview"]'); - $(this).parent().remove(); - list.listview('refresh'); - }); - - $('[data-role="editableListviewContainer"] a[data-action="add"]', page).click(function () { - var input = $(this).parent().find('input[type="text"]'); - var text = input.val(); - input.val(''); - if (text == '') return; - var list = $(this).parents('[data-role="editableListviewContainer"]').find('ul[data-role="listview"]'); - var items = editableListViewValues(list); - items.push(text); - populateListView(list, items); - }); } function setFieldVisibilities(page, item) { @@ -202,7 +185,7 @@ populateAirDays(selectAirDays); selectAirDays.val(item.AirDays || "").selectmenu('refresh'); populateListView($('#listGenres', page), item.Genres); - populateListView($('#listStudios', page), item.Studios.map(function (element) { return element.Name; })); + populateListView($('#listStudios', page), item.Studios.map(function (element) { return element.Name || ''; })); populateListView($('#listTags', page), item.Tags); $('#txtName', page).val(item.Name || ""); @@ -374,7 +357,7 @@ items.sort(function(a, b) { return a.toLowerCase().localeCompare(b.toLowerCase()); }); var html = ''; for (var i = 0; i < items.length; i++) { - html += '
  • ' + items[i] + '
  • '; + html += '
  • ' + items[i] + '
  • '; } list.html(html).listview('refresh'); } @@ -425,6 +408,7 @@ Language: $('#selectLanguage', form).val(), OfficialRating: $('#selectOfficialRating', form).val(), CustomRating: $('#selectCustomRating', form).val(), + People: currentItem.People, ProviderIds: { @@ -447,6 +431,22 @@ return false; }; + self.AddElementToEditableListview = function(source) { + var input = $(source).parent().find('input[type="text"]'); + var text = input.val(); + input.val(''); + if (text == '') return; + var list = $(source).parents('[data-role="editableListviewContainer"]').find('ul[data-role="listview"]'); + var items = editableListViewValues(list); + items.push(text); + populateListView(list, items); + }; + + self.RemoveElementFromListview = function(source) { + var list = $(source).parents('ul[data-role="listview"]'); + $(source).parent().remove(); + list.listview('refresh'); + }; } window.EditItemMetadataPage = new editItemMetadataPage(); diff --git a/dashboard-ui/scripts/edititempeople.js b/dashboard-ui/scripts/edititempeople.js new file mode 100644 index 0000000000..ad12879400 --- /dev/null +++ b/dashboard-ui/scripts/edititempeople.js @@ -0,0 +1,253 @@ +(function ($, document, window) { + + var currentItem; + + function reload(page) { + + var id = getParameterByName('id'); + + Dashboard.showLoadingMsg(); + + ApiClient.getItem(Dashboard.getCurrentUserId(), id).done(function (item) { + + if (item.IsFolder) { + $('#fldRecursive', page).show(); + } else { + $('#fldRecursive', page).hide(); + } + + $('#btnRefresh', page).button('enable'); + + $('#refreshLoading', page).hide(); + + currentItem = item; + LibraryBrowser.renderName(item, $('.itemName', page), true); + LibraryBrowser.renderParentName(item, $('.parentName', page)); + fillPeopleContainer(item.People,$('#peopleContainer',page)); + Dashboard.hideLoadingMsg(); + }); + } + + function fillPeopleContainer(people, container) { + people = people || new Array(); + var html = ''; + for (var i = 0; i < people.length; i++) { + html += constructPerson(people[i]); + } + + container.html(html).trigger('create'); + } + + function constructPerson(person) { + var html = '
    '; + var imgUrl; + var name = person.Name || ""; + var role = person.Role || ""; + var type = person.Type || ""; + + if (person.PrimaryImageTag) { + + imgUrl = ApiClient.getPersonImageUrl(person.Name, { + width: 130, + tag: person.PrimaryImageTag, + type: "primary" + }); + + } else { + + imgUrl = "css/images/items/list/person.png"; + } + html += '
    '; + html += '
    '; + html += '
    '; + html += ''; + html += ''; + html += ''; + html += ''; + html += ' ' + (name) + ''; + html += '
    '; + html += '
    '; + html += ''; + html += ' ' + (role) + ''; + html += '
    '; + html += '
    '; + html += ''; + html += ' ' + (type) + ''; + html += '
    '; + html += '

    '; + html += ''; + html += ''; + html += ''; + html += '

    '; + html += '
    '; + html += '
    '; + return html; + } + + function generateTypes(type) { + var types = new Array("", "Actor", "Director", "Composer", "Writer", "GuestStar", "Producer"); + var html = ""; + + for (var i = 0; i < types.length; i++) { + html += ''; + } + + return html; + } + function editItemPeoplePage() { + + var self = this; + self.displayEdit = function (source) { + $(source).parents('.tileItem').find('span.edit').show(); + $(source).parents('.tileItem').find('span.read').hide(); + }; + self.hideEdit = function (source) { + var item = $(source).parents('.tileItem'); + item.find('span.edit').hide(); + item.find('span.read').show(); + item.find('input[name="txtName"]').val(item.find('input[name="originalName"]').val()); + item.find('input[name="txtRole"]').val(item.find('input[name="originalRole"]').val()); + item.find('select[name="selectType"]').val(item.find('input[name="originalType"]').val()).selectmenu('refresh'); + }; + + self.removePerson = function (source) { + + var page = $.mobile.activePage; + + Dashboard.confirm("Are you sure you wish to delete this person?", "Delete Person", function (result) { + if (result) { + var item = $(source).parents('.tileItem'); + var originalName = item.find('input[name="originalName"]').val(); + var originalRole = item.find('input[name="originalRole"]').val(); + var originalType = item.find('input[name="originalType"]').val(); + for (var i = 0; i < currentItem.People.length; i++) { + var name = currentItem.People[i].Name || ""; + var role = currentItem.People[i].Role || ""; + var type = currentItem.People[i].Type || ""; + if ((name + role + type) == (originalName + originalRole + originalType)) { + currentItem.People.splice(i, 1); + ApiClient.updateItem(currentItem).done(function () { + reload(page); + }); + } + } + + } + }); + }; + self.savePerson = function(source) { + + var page = $.mobile.activePage; + + var item = $(source).parents('.tileItem'); + var originalName = item.find('input[name="originalName"]').val(); + var originalRole = item.find('input[name="originalRole"]').val(); + var originalType = item.find('input[name="originalType"]').val(); + for (var i = 0; i < currentItem.People.length; i++) { + var name = currentItem.People[i].Name || ""; + var role = currentItem.People[i].Role || ""; + var type = currentItem.People[i].Type || ""; + if ((name + role + type) == (originalName + originalRole + originalType)) { + currentItem.People[i].Name = item.find('input[name="txtName"]').val(); + currentItem.People[i].Role = item.find('input[name="txtRole"]').val(); + currentItem.People[i].Type = item.find('select[name="selectType"]').val(); + ApiClient.updateItem(currentItem).done(function() { + reload(page); + }); + break; + } + } + }; + + self.addPerson = function() { + var page = $.mobile.activePage; + + var html = ''; + + $(page).append(html); + + var popup = $('#popupCreatePerson').popup().trigger('create').on("popupafteropen", function() { + $('#popupCreatePerson input:first', this).focus(); + }).popup("open").on("popupafterclose", function() { + + $('form', this).off("submit"); + $(this).off("click").off("popupafterclose").remove(); + + }); + + $('form', popup).on('submit', function () { + + var form = $(this); + + var name = $('#txtPersonName',form).val(); + if (name != '') { + var role = $('#txtPersonRole', form).val(); + var type = $('#selectPersonType', form).val(); + currentItem.People.push({ Name: name, Role: role, Type: type }); + ApiClient.updateItem(currentItem).done(function () { + reload(page); + }); + popup.popup("close"); + } + return false; + }); + }; + } + + window.EditItemPeoplePage = new editItemPeoplePage(); + + $(document).on('pageinit', "#editItemPeoplePage", function () { + + var page = this; + + }).on('pageshow', "#editItemPeoplePage", function () { + + var page = this; + + reload(page); + + }).on('pagehide', "#editItemPeoplePage", function () { + + var page = this; + + currentItem = null; + }); + +})(jQuery, document, window); \ No newline at end of file