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:
parent
0d73a4b013
commit
15973768e2
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user