← back to Stars of Design
lib/sort.js
44 lines
// Sort + density helpers for the designer grid.
// Select <option> values must match SORTS keys exactly.
const SORTS = {
newest: 'newest',
era: 'era',
city: 'city',
name_az: 'name_az',
style: 'style',
};
function sortDesigners(designers, key) {
const k = SORTS[key] ? key : 'newest';
const out = designers.slice();
switch (k) {
case 'name_az':
out.sort((a, b) => (a.name || '').localeCompare(b.name || ''));
break;
case 'city':
out.sort((a, b) =>
(a.city || '').localeCompare(b.city || '') ||
(a.name || '').localeCompare(b.name || '')
);
break;
case 'era':
// Mid-century → contemporary → current. Sort by era_sort numeric.
out.sort((a, b) => (a.era_sort || 9999) - (b.era_sort || 9999));
break;
case 'style':
out.sort((a, b) => {
const av = (a.styles && a.styles[0]) || 'zzz';
const bv = (b.styles && b.styles[0]) || 'zzz';
return av.localeCompare(bv) || (a.name || '').localeCompare(b.name || '');
});
break;
case 'newest':
default:
out.sort((a, b) => (b.id || 0) - (a.id || 0));
}
return out;
}
module.exports = { SORTS, sortDesigners };