diff --git a/dashboard-ui/css/images/items/searchhints/film.png b/dashboard-ui/css/images/items/searchhints/film.png new file mode 100644 index 0000000000..9c343a8fa2 Binary files /dev/null and b/dashboard-ui/css/images/items/searchhints/film.png differ diff --git a/dashboard-ui/css/images/items/searchhints/game.png b/dashboard-ui/css/images/items/searchhints/game.png new file mode 100644 index 0000000000..9fa39e569a Binary files /dev/null and b/dashboard-ui/css/images/items/searchhints/game.png differ diff --git a/dashboard-ui/css/images/items/searchhints/music.png b/dashboard-ui/css/images/items/searchhints/music.png new file mode 100644 index 0000000000..2d666ab7da Binary files /dev/null and b/dashboard-ui/css/images/items/searchhints/music.png differ diff --git a/dashboard-ui/css/images/items/searchhints/person.png b/dashboard-ui/css/images/items/searchhints/person.png new file mode 100644 index 0000000000..f5660b7a71 Binary files /dev/null and b/dashboard-ui/css/images/items/searchhints/person.png differ diff --git a/dashboard-ui/css/images/items/searchhints/tv.png b/dashboard-ui/css/images/items/searchhints/tv.png new file mode 100644 index 0000000000..2e43d98368 Binary files /dev/null and b/dashboard-ui/css/images/items/searchhints/tv.png differ diff --git a/dashboard-ui/css/search.css b/dashboard-ui/css/search.css index 6728acc4c5..e1a49b3bfd 100644 --- a/dashboard-ui/css/search.css +++ b/dashboard-ui/css/search.css @@ -1,6 +1,7 @@ .headerSearch { display: none; margin-right: 3em; + position: relative; } .txtSearch { @@ -11,12 +12,6 @@ width: 150px; } -.searchHints { - width: 148px; - color: #000; - font-family: Arial; -} - .btnSearch { vertical-align: middle; background-color: #4d90fe; @@ -50,16 +45,62 @@ } .searchHints { + width: 148px; + color: #000; background-color: #fff; - border: 1px solid #ccc; + border: 1px solid #999; position: absolute; z-index: 999; + margin-top: 1px; + font-size: 14px; } .searchHintsContent { padding: 10px; } +.searchHint { + display: block; + text-decoration: none; + color: #000; + border-bottom: 1px solid #eee; +} + + .searchHint:hover { + background-color: #eee; + } + +.searchHintImage { + display: inline-block; + width: 15%; + vertical-align: middle; +} + +.searchHintContent { + vertical-align: top; + display: inline-block; + width: 85%; +} + +.searchHintName { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} + +.searchHintSecondaryText { + font-size: 11px; + color: #999; + margin-top: 3px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} + +.searchHintContentInner { + padding: 2px 5px; +} + @media all and (min-width: 650px) { .headerSearch { @@ -87,3 +128,31 @@ width: 248px; } } + +@media all and (min-width: 1200px) { + .txtSearch { + width: 350px; + } + + .searchHints { + width: 348px; + } +} + +@media all and (min-width: 1440px) { + .txtSearch { + width: 450px; + } + + .searchHints { + width: 448px; + } + + .searchHintImage { + width: 12%; + } + + .searchHintContent { + width: 88%; + } +} diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js index 087e8ace69..f5f45a7d66 100644 --- a/dashboard-ui/scripts/librarybrowser.js +++ b/dashboard-ui/scripts/librarybrowser.js @@ -282,17 +282,22 @@ return item.url; } + itemByNameContext = itemByNameContext || ""; + + // Handle search hints + var id = item.Id || item.ItemId; + if (item.Type == "Series") { - return "itemdetails.html?id=" + item.Id; + return "itemdetails.html?id=" + id; } if (item.Type == "Season") { - return "itemdetails.html?id=" + item.Id; + return "itemdetails.html?id=" + id; } if (item.Type == "BoxSet") { - return "itemdetails.html?id=" + item.Id; + return "itemdetails.html?id=" + id; } if (item.Type == "MusicAlbum") { - return "itemdetails.html?id=" + item.Id; + return "itemdetails.html?id=" + id; } if (item.Type == "Genre") { return "itembynamedetails.html?genre=" + encodeName(item.Name) + "&context=" + itemByNameContext; @@ -304,10 +309,10 @@ return "itembynamedetails.html?person=" + encodeName(item.Name) + "&context=" + itemByNameContext; } if (item.Type == "Artist") { - return "itembynamedetails.html?artist=" + encodeName(item.Name) + "&context=" + itemByNameContext; + return "itembynamedetails.html?artist=" + encodeName(item.Name) + "&context=" + (itemByNameContext || "music"); } - return item.IsFolder ? (item.Id ? "itemList.html?parentId=" + item.Id : "#") : "itemdetails.html?id=" + item.Id; + return item.IsFolder ? (id ? "itemList.html?parentId=" + id : "#") : "itemdetails.html?id=" + id; }, @@ -340,7 +345,8 @@ return ApiClient.getArtistImageUrl(item.Name, options); } - return ApiClient.getImageUrl(item.Id, options); + // For search hints + return ApiClient.getImageUrl(item.Id || item.ItemId, options); }, diff --git a/dashboard-ui/scripts/search.js b/dashboard-ui/scripts/search.js index 4466db0bf9..28efdeb2bd 100644 --- a/dashboard-ui/scripts/search.js +++ b/dashboard-ui/scripts/search.js @@ -1,41 +1,205 @@ -(function ($, document, window) { +(function ($, document, window, clearTimeout, setTimeout) { + var searchHintTimeout; - function createSearchHintsElement() { + function clearSearchHintTimeout() { - $(document.body).append('