PluginCatalogPage.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. var PluginCatalogPage = {
  2. onPageShow: function () {
  3. PluginCatalogPage.reloadList();
  4. },
  5. reloadList: function () {
  6. Dashboard.showLoadingMsg();
  7. var promise1 = ApiClient.getAvailablePlugins();
  8. var promise2 = ApiClient.getInstalledPlugins();
  9. $.when(promise1, promise2).done(function (response1, response2) {
  10. PluginCatalogPage.populateList(response1[0], response2[0]);
  11. });
  12. },
  13. populateList: function (availablePlugins, installedPlugins) {
  14. var page = $($.mobile.activePage);
  15. availablePlugins = availablePlugins.filter(function (p) {
  16. return p.type == "UserInstalled";
  17. }).sort(function (a, b) {
  18. return a.name > b.name ? 1 : -1;
  19. });
  20. var html = "";
  21. for (var i = 0, length = availablePlugins.length; i < length; i++) {
  22. var plugin = availablePlugins[i];
  23. html += "<div class='posterViewItem'><a href='addPlugin.html?name=" + encodeURIComponent(plugin.name) + "'>";
  24. if (plugin.thumbImage) {
  25. html += "<img src='" + plugin.thumbImage + "' />";
  26. } else {
  27. html += "<img style='background:#444444;' src='css/images/defaultCollectionImage.png' />";
  28. }
  29. if (plugin.isPremium) {
  30. html += "<div class='premiumBanner'><img src='css/images/premiumflag.png' /></div>";
  31. }
  32. var color = plugin.tileColor || Dashboard.getRandomMetroColor();
  33. html += "<div class='posterViewItemText' style='background:" + color + "'>";
  34. var installedPlugin = installedPlugins.filter(function (ip) {
  35. return ip.Name == plugin.name;
  36. })[0];
  37. html += "<div>";
  38. if (installedPlugin) {
  39. html += plugin.name + " (Installed)";
  40. } else {
  41. html += plugin.name;
  42. }
  43. html += "</div>";
  44. html += "</div>";
  45. html += "</a></div>";
  46. }
  47. $('#pluginTiles', page).html(html);
  48. Dashboard.hideLoadingMsg();
  49. }
  50. };
  51. $(document).on('pageshow', "#pluginCatalogPage", PluginCatalogPage.onPageShow);