PluginCatalogPage.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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. if (plugin.price > 0) {
  31. html += "<div class='premiumBanner'><img src='css/images/premiumflag.png' /></div>";
  32. } else {
  33. html += "<div class='premiumBanner'><img src='css/images/supporterflag.png' /></div>";
  34. }
  35. }
  36. var color = plugin.tileColor || Dashboard.getRandomMetroColor();
  37. html += "<div class='posterViewItemText' style='background:" + color + "'>";
  38. var installedPlugin = installedPlugins.filter(function (ip) {
  39. return ip.Name == plugin.name;
  40. })[0];
  41. html += "<div>";
  42. if (installedPlugin) {
  43. html += plugin.name + " (Installed)";
  44. } else {
  45. html += plugin.name;
  46. }
  47. html += "</div>";
  48. html += "</div>";
  49. html += "</a></div>";
  50. }
  51. $('#pluginTiles', page).html(html);
  52. Dashboard.hideLoadingMsg();
  53. }
  54. };
  55. $(document).on('pageshow', "#pluginCatalogPage", PluginCatalogPage.onPageShow);