define(['loading', 'libraryMenu', 'globalize', 'cardStyle', 'emby-button', 'emby-checkbox', 'emby-select'], function (loading, libraryMenu, globalize) { 'use strict'; function reloadList(page) { loading.show(); var promise1 = ApiClient.getAvailablePlugins(); var promise2 = ApiClient.getInstalledPlugins(); Promise.all([promise1, promise2]).then(function (responses) { populateList({ catalogElement: page.querySelector('#pluginTiles'), noItemsElement: page.querySelector('#noPlugins'), availablePlugins: responses[0], installedPlugins: responses[1] }); }); } function getHeaderText(category) { category = category.replace(' ', ''); if ('Channel' === category) { category = 'Channels'; } else if ('Theme' === category) { category = 'Themes'; } else if ('LiveTV' === category) { category = 'HeaderLiveTV'; } else if ('ScreenSaver' === category) { category = 'HeaderScreenSavers'; } return globalize.translate(category); } function populateList(options) { var availablePlugins = options.availablePlugins; var installedPlugins = options.installedPlugins; var categories = []; availablePlugins.forEach(function (plugin, index, array) { plugin.category = plugin.category || 'General'; plugin.categoryDisplayName = getHeaderText(plugin.category); array[index] = plugin; }); availablePlugins.sort(function (a, b) { if (a.category > b.category) { return 1; } else if (b.category > a.category) { return -1; } if (a.name > b.name) { return 1; } else if (b.name > a.name) { return -1; } return 0; }); var currentCategory = null; var html = ''; for (var i = 0; i < availablePlugins.length; i++) { var plugin = availablePlugins[i]; var category = plugin.categoryDisplayName; if (category != currentCategory) { if (currentCategory) { html += ''; html += ''; } html += '