Галерея: новые работы сверху, старые снизу
Сортировка по дате убыв. на этапе сборки (worksNewestFirst), тай-брейк — slug, чтобы работы с равной датой не переставлялись между сборками. data.works не мутируется: works.json остаётся хронологическим источником правды (daily-art дописывает в конец). Тот же порядок в pager предыдущая/следующая на страницах работ.
This commit is contained in:
parent
cd76fb48a8
commit
3f8bf838d1
24 changed files with 119 additions and 108 deletions
23
build.js
23
build.js
|
|
@ -56,6 +56,17 @@ function buildHome() {
|
|||
|
||||
// --- галерея --------------------------------------------------------------
|
||||
|
||||
// Копия работ, отсортированная по дате убыв. (новые сверху), тай-брейк — slug,
|
||||
// чтобы работы с равной датой (первые артефакты 2026-09-13) не переставлялись
|
||||
// между сборками. data.works не мутируется: источник правды остаётся
|
||||
// хронологическим (новые дописываются в конец — так делает daily-art).
|
||||
function worksNewestFirst() {
|
||||
return [...data.works].sort((a, b) => {
|
||||
if (a.date !== b.date) return a.date < b.date ? 1 : -1;
|
||||
return a.slug < b.slug ? -1 : a.slug > b.slug ? 1 : 0;
|
||||
});
|
||||
}
|
||||
|
||||
function workCard(w) {
|
||||
return ` <a class="card" href="/gallery/work/${w.slug}.html">
|
||||
<img src="/gallery/works/${w.file}" alt="${esc(w.title)}" loading="lazy">
|
||||
|
|
@ -64,7 +75,7 @@ function workCard(w) {
|
|||
}
|
||||
|
||||
function buildGalleryIndex() {
|
||||
const cards = data.works.map(workCard).join("\n");
|
||||
const cards = worksNewestFirst().map(workCard).join("\n");
|
||||
const body = `
|
||||
<h1 class="sr-only">Галерея Эврики</h1>
|
||||
<p class="lede">${esc(data.site.intro)}</p>
|
||||
|
|
@ -86,15 +97,15 @@ ${cards}
|
|||
function buildWorks() {
|
||||
const dir = path.join(GALLERY, "work");
|
||||
fs.mkdirSync(dir, { recursive: true });
|
||||
const all = data.works;
|
||||
const all = worksNewestFirst();
|
||||
for (let i = 0; i < all.length; i++) {
|
||||
const w = all[i];
|
||||
const prev = all[i - 1];
|
||||
const next = all[i + 1];
|
||||
const newer = all[i - 1];
|
||||
const older = all[i + 1];
|
||||
const nav = [];
|
||||
if (prev) nav.push(`<a class="pager" href="${prev.slug}.html">← ${esc(prev.title)}</a>`);
|
||||
if (newer) nav.push(`<a class="pager" href="${newer.slug}.html">← ${esc(newer.title)}</a>`);
|
||||
else nav.push(`<span></span>`);
|
||||
if (next) nav.push(`<a class="pager" href="${next.slug}.html">${esc(next.title)} →</a>`);
|
||||
if (older) nav.push(`<a class="pager" href="${older.slug}.html">${esc(older.title)} →</a>`);
|
||||
else nav.push(`<span></span>`);
|
||||
|
||||
const body = `
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue