1
0
mirror of https://github.com/node-red/node-red.git synced 2023-10-10 13:36:53 +02:00

improve catalog visibility/ux

This commit is contained in:
Steve-Mcl 2023-07-14 12:57:27 +01:00
parent 0d73a4b013
commit 15973768e2

View File

@ -17,6 +17,7 @@ RED.palette.editor = (function() {
var disabled = false; var disabled = false;
let catalogues = [] let catalogues = []
const loadedCatalogs = []
var editorTabs; var editorTabs;
let filterInput; let filterInput;
let searchInput; let searchInput;
@ -163,19 +164,6 @@ RED.palette.editor = (function() {
} }
} }
function filterByCatalog(selectedCatalog) {
const catalogCount = $('#red-catalogue-filter-select option').length
if (catalogCount <= 1 || selectedCatalog === "all") {
loadedList = fullList.slice();
} else {
loadedList = fullList.filter(function(m) {
return (m.catalog.name === selectedCatalog);
})
}
refreshFilteredItems();
searchInput.searchBox('count',filteredList.length+" / "+loadedList.length);
}
function getContrastingBorder(rgbColor){ function getContrastingBorder(rgbColor){
var parts = /^rgba?\(\s*(\d+),\s*(\d+),\s*(\d+)[,)]/.exec(rgbColor); var parts = /^rgba?\(\s*(\d+),\s*(\d+),\s*(\d+)[,)]/.exec(rgbColor);
if (parts) { if (parts) {
@ -446,11 +434,11 @@ RED.palette.editor = (function() {
$("#red-ui-palette-module-install-shade").show(); $("#red-ui-palette-module-install-shade").show();
catalogueLoadStart = Date.now(); catalogueLoadStart = Date.now();
var handled = 0; var handled = 0;
const catalogEntries = [] loadedCatalogs.length = 0; // clear the loadedCatalogs array
for (let index = 0; index < catalogues.length; index++) { for (let index = 0; index < catalogues.length; index++) {
const url = catalogues[index]; const url = catalogues[index];
$.getJSON(url, {_: new Date().getTime()},function(v) { $.getJSON(url, {_: new Date().getTime()},function(v) {
catalogEntries.push({ url: url, name: v.name, updated_at: v.updated_at, modules_count: (v.modules || []).length }) loadedCatalogs.push({ index: index, url: url, name: v.name, updated_at: v.updated_at, modules_count: (v.modules || []).length })
handleCatalogResponse(null,{ url: url, name: v.name},index,v); handleCatalogResponse(null,{ url: url, name: v.name},index,v);
refreshNodeModuleList(); refreshNodeModuleList();
}).fail(function(jqxhr, textStatus, error) { }).fail(function(jqxhr, textStatus, error) {
@ -459,7 +447,9 @@ RED.palette.editor = (function() {
}).always(function() { }).always(function() {
handled++; handled++;
if (handled === catalogueCount) { if (handled === catalogueCount) {
updateCatalogFilter(catalogEntries) //sort loadedCatalogs by e.index ascending
loadedCatalogs.sort((a, b) => a.index - b.index)
updateCatalogFilter(loadedCatalogs)
} }
}) })
} }
@ -492,9 +482,7 @@ RED.palette.editor = (function() {
fullList = loadedList.slice() fullList = loadedList.slice()
catalogSelection.empty() // clear the select list catalogSelection.empty() // clear the select list
// if there are more than 1 catalog, add an option to select all
if (catalogEntries.length > 1) {
}
// loop through catalogTypes, and an option entry per catalog // loop through catalogTypes, and an option entry per catalog
for (let index = 0; index < catalogEntries.length; index++) { for (let index = 0; index < catalogEntries.length; index++) {
const catalog = catalogEntries[index]; const catalog = catalogEntries[index];
@ -506,7 +494,6 @@ RED.palette.editor = (function() {
// if there is only 1 catalog, hide the select // if there is only 1 catalog, hide the select
if (catalogEntries.length > 1) { if (catalogEntries.length > 1) {
catalogSelection.prepend(`<option value="all">${RED._('palette.editor.allCatalogs')}</option>`) catalogSelection.prepend(`<option value="all">${RED._('palette.editor.allCatalogs')}</option>`)
catalogSelection.show()
catalogSelection.removeAttr('disabled') // permit the user to select a catalog catalogSelection.removeAttr('disabled') // permit the user to select a catalog
} }
// refresh the searchInput counter and trigger a change // refresh the searchInput counter and trigger a change
@ -521,6 +508,18 @@ RED.palette.editor = (function() {
}) })
} }
function filterByCatalog(selectedCatalog) {
if (loadedCatalogs.length <= 1 || selectedCatalog === "all") {
loadedList = fullList.slice();
} else {
loadedList = fullList.filter(function(m) {
return (m.catalog.name === selectedCatalog);
})
}
refreshFilteredItems();
searchInput.searchBox('count',filteredList.length+" / "+loadedList.length);
}
function refreshFilteredItems() { function refreshFilteredItems() {
packageList.editableList('empty'); packageList.editableList('empty');
var currentFilter = searchInput.searchBox('value').trim(); var currentFilter = searchInput.searchBox('value').trim();
@ -910,7 +909,6 @@ RED.palette.editor = (function() {
const catalogSelection = $('<select id="red-catalogue-filter-select">').appendTo(toolBar); const catalogSelection = $('<select id="red-catalogue-filter-select">').appendTo(toolBar);
catalogSelection.addClass('red-ui-palette-editor-catalogue-filter'); catalogSelection.addClass('red-ui-palette-editor-catalogue-filter');
catalogSelection.hide() // hide the select until the catalogues have been loaded
const toolBarActions = $('<div>',{class:"red-ui-palette-editor-toolbar-actions"}).appendTo(toolBar); const toolBarActions = $('<div>',{class:"red-ui-palette-editor-toolbar-actions"}).appendTo(toolBar);
@ -987,7 +985,7 @@ RED.palette.editor = (function() {
var metaRow = $('<div class="red-ui-palette-module-meta"></div>').appendTo(headerRow); var metaRow = $('<div class="red-ui-palette-module-meta"></div>').appendTo(headerRow);
$('<span class="red-ui-palette-module-version"><i class="fa fa-tag"></i> '+entry.version+'</span>').appendTo(metaRow); $('<span class="red-ui-palette-module-version"><i class="fa fa-tag"></i> '+entry.version+'</span>').appendTo(metaRow);
$('<span class="red-ui-palette-module-updated"><i class="fa fa-calendar"></i> '+formatUpdatedAt(entry.updated_at)+'</span>').appendTo(metaRow); $('<span class="red-ui-palette-module-updated"><i class="fa fa-calendar"></i> '+formatUpdatedAt(entry.updated_at)+'</span>').appendTo(metaRow);
if (catalogSelection.val() === 'all') { if (loadedCatalogs.length > 1) {
$('<span class="red-ui-palette-module-updated"><i class="fa fa-cubes"></i>' + (entry.catalog.name || entry.catalog.url) + '</span>').appendTo(metaRow); $('<span class="red-ui-palette-module-updated"><i class="fa fa-cubes"></i>' + (entry.catalog.name || entry.catalog.url) + '</span>').appendTo(metaRow);
} }