From b5abd615697146beeca6dba4acd057d049554a30 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Fri, 02 Jan 2026 00:16:00 +0000
Subject: [PATCH] Merge branch 'main' of https://github.com/jakevdwerf/jvb
---
src/feed/view.js | 98 +++++++++++++++++++------------------------------
1 files changed, 38 insertions(+), 60 deletions(-)
diff --git a/src/feed/view.js b/src/feed/view.js
index ca9940f..7110cad 100644
--- a/src/feed/view.js
+++ b/src/feed/view.js
@@ -394,35 +394,32 @@
*/
createItemElement(item) {
let template = window.getTemplate(`feedItem${window.uppercaseFirst(item.content)}`);
- if (Object.hasOwn(template.dataset, 'timeline')) {
- return this.createTimelineElement(item, template);
- }
- //fields
+
+ const isTimeline = Object.hasOwn(template.dataset, 'timeline');
+
+ // Format fields using helpers
for (let [fieldName, value] of Object.entries(item.fields)) {
+ if (isTimeline && ['timeline', 'number'].includes(fieldName)) continue;
let el = template.querySelector(`[data-field="${fieldName}"]`);
- if (!el) {
- continue;
- }
- if (Object.keys(item.images).map((img)=> parseInt(img)).includes(value)) {
- [
- el.src,
- el.srcset,
- el.alt
- ] = [
- item.images[value].tiny,
- `${item.images[value].tiny} 50w, ${item.images[value].small} 300w, ${item.images[value].medium} 1024w`,
- item.images[value]['image-alt-text']
- ];
- } else if (el.tagName === 'TIME') {
- el.setAttribute('datetime', value);
- el.textContent = window.formatTimeAgo(value);
- } else {
- el.textContent = value;
- }
+ if (!el) continue;
+
if (value === '') {
el.remove();
+ continue;
+ }
+
+ if (this.isImageField(item, value)) {
+ this.formatImageFields(el, value, item);
+ } else if (this.isTaxonomyField(item, fieldName)) {
+ this.formatTaxonomyField(el, item, fieldName, value);
+ } else if (this.isTimeField(el)) {
+ this.formatTimeField(el, value);
+ } else {
+ this.formatField(el, value);
}
}
+
+ // Handle link
let link = template.querySelector('a');
if (link && item.url !== '') {
[
@@ -433,6 +430,11 @@
`View ${item.fields['post_title']??'Item'}`
];
}
+
+ if (isTimeline) {
+ this.addTimelineElements(item, template);
+ }
+
return template;
}
splitIDs(value) {
@@ -470,20 +472,17 @@
}
}
formatImageField(element, value, item) {
- console.log('Formatting Image:', element);
- console.log('Value: ', value);
- console.log('ImagData:', item.images[value]);
- let imgData = item.images[value]??false;
- if (!imgData) return;
- [
- element.src,
- element.srset,
- element.alt
- ] = [
- imgData.tiny,
- `${imgData.tiny} 50w, ${imgData.small} 300w, ${imgData.medium} 1024w`,
- imgData['image-alt-text']
- ]
+ let imgData = item.images[value]??false;
+ if (!imgData) return;
+ [
+ element.src,
+ element.srcset,
+ element.alt
+ ] = [
+ imgData.tiny,
+ `${imgData.tiny} 50w, ${imgData.small} 300w, ${imgData.medium} 1024w`,
+ imgData['image-alt-text']
+ ]
}
isTaxonomyField(item, field) {
if (!Object.hasOwn(item, 'taxonomies') || Object.keys(item.taxonomies).length === 0) {
@@ -534,27 +533,7 @@
element.textContent = value;
}
- createTimelineElement(item, template) {
- console.log(item);
- console.log(template);
- for (let [field, value] of Object.entries(item.fields)) {
- if (!['timeline', 'number'].includes(field)) {
- let el = template.querySelector(`[data-field="${field}"]`);
- if (!el) {
- console.log(`Element Not found for ${field}`);
- }
- if (!el || value === '') continue;
- if (this.isImageField(item, value)) {
- this.formatImageFields(el, value, item);
- } else if (this.isTaxonomyField(item, field)) {
- this.formatTaxonomyField(el, item, field, value);
- } else if (this.isTimeField(el)) {
- this.formatTimeField(el, value);
- } else {
- this.formatField(el, value);
- }
- }
- }
+ addTimelineElements(item, template) {
let [
afterEl,
number,
@@ -566,6 +545,7 @@
template.querySelector('[data-field="started"] time'),
template.querySelector('[data-field="updated"] time')
];
+
if (afterEl) {
afterEl.textContent = `After ${item.fields.number} Tx`;
}
@@ -578,8 +558,6 @@
if (last) {
this.formatTimeField(last, item.fields.timeline[item.fields.timeline.length - 1]['post_date']);
}
-
- return template;
}
removePlaceholders() {
--
Gitblit v1.10.0