From e9967fa22781d922ba4eb8fb44fe72d200ac4b14 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Mon, 10 Nov 2025 21:04:10 +0000
Subject: [PATCH] =IconsManager.php update

---
 assets/js/concise/View.js |  102 ++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 68 insertions(+), 34 deletions(-)

diff --git a/assets/js/concise/View.js b/assets/js/concise/View.js
index b31b782..e1e5488 100644
--- a/assets/js/concise/View.js
+++ b/assets/js/concise/View.js
@@ -3,14 +3,15 @@
  */
 class ViewController {
 	constructor(container, store) {
-		console.log(container);
 		this.a11y = window.jvbA11y;
 		this.error = window.jvbError;
 
 		this.container = container;
 		this.initElements();
+		this.settings = window.jvbUserSettings;
 
 		this.store = store;
+
 		this.items = {
 			list: new Map(),
 			grid: new Map(),
@@ -40,19 +41,23 @@
 		}
 
 		this.ui = window.uiFromSelectors(this.selectors, this.container);
-		console.log(this.ui);
 	}
 
 	init() {
 		// Subscribe to store updates
 		this.store.subscribe((event, data) => {
 			switch(event) {
-				case 'data-fetched':
-				case 'data-cached':
-					this.handleDataUpdate(data);
+				case 'items-saved':
+					// this.handleDataUpdate(data);
 					break;
-				case 'items-updated':
-					this.handleItemsUpdate(data.items);
+				case 'data-loaded':
+					this.handleItemsUpdate();
+					break;
+				case 'item-saved':
+					// this.updateItem(data.item);
+					break;
+				case 'item-deleted':
+					// this.deleteItem(data.item);
 					break;
 			}
 		});
@@ -128,14 +133,15 @@
 
 	toggleColumns(column, show) {
 		let theColumn = this.ui.table.columns.filter(col => col.className === column);
-		console.log(theColumn);
-		console.log('Toggle Columns');
-		console.log(column, show);
-		console.log(this.ui.table.columns);
+		// console.log(theColumn);
+		// console.log('Toggle Columns');
+		// console.log(column, show);
+		// console.log(this.ui.table.columns);
 	}
 
 	setupViewSwitcher() {
 		document.querySelectorAll('[data-view]').forEach(btn => {
+			this.settings.addSetting(btn);
 			btn.addEventListener('click', () => {
 				this.currentView = btn.dataset.view;
 				this.render();
@@ -147,33 +153,32 @@
 	 * Handle data updates from store
 	 */
 	handleDataUpdate(data) {
-		if (data.data && data.data.items) {
-			this.render(data.data.items);
-		}
+		console.log(data);
+		const items = data.data?.items || data.items || [];
+		this.render(items);
 	}
 
 	/**
 	 * Handle items update
 	 */
-	handleItemsUpdate(items) {
-		this.render(items);
+	handleItemsUpdate() {
+		console.log(this.store.data);
+		this.render(this.store.data);
 	}
 
-	render(items = null) {
+	render(items = []) {
 		if (!this.store) {
 			console.error('No store connected to renderer');
 			return;
 		}
+		console.log(items);
 
-		// Get items from store if not provided
-		if (!items) {
-			const currentRequest = this.store.getCurrentRequest();
-			if (currentRequest && currentRequest.data && currentRequest.data.items) {
-				items = currentRequest.data.items;
-			} else {
-				return;
-			}
+		// Handle empty state
+		if (items.length === 0) {
+			this.renderEmpty();
+			return;
 		}
+
 		switch(this.currentView) {
 			case 'grid':
 				this.renderGrid(items);
@@ -189,6 +194,17 @@
 		this.updateSelectionUI();
 	}
 
+	renderEmpty() {
+		this.toggleTable(false);
+		window.removeChildren(this.ui.grid);
+
+		const empty = window.getTemplate('emptyState');
+		if (empty) {
+			this.ui.grid.appendChild(empty);
+			this.a11y?.announce('No items found');
+		}
+	}
+
 	renderGrid(items) {
 		this.toggleGrid();
 		this.toggleTable(false);
@@ -201,11 +217,16 @@
 
 		items.forEach(item => {
 			let card;
-			if (this.items.grid.has(item.id)) {
-				card = this.items.grid.get(item.id);
-			} else {
+			if (this.store.renderOrRetrieve) {
 				card = this.store.renderOrRetrieve(item, 'grid', this.renderGridItem.bind(this));
-				this.items.grid.set(item.id, card);
+			} else {
+				// Fallback to local cache
+				if (this.items.grid.has(item.id)) {
+					card = this.items.grid.get(item.id);
+				} else {
+					card = this.renderGridItem(item);
+					this.items.grid.set(item.id, card);
+				}
 			}
 
 			fragment.appendChild(card);
@@ -237,8 +258,6 @@
 			checkbox.id,
 			checkbox.checked,
 			label.htmlFor,
-			img.src,
-			img.alt,
 			edit.dataset.id,
 			trash.dataset.id
 		] = [
@@ -246,11 +265,26 @@
 			`select-${item.id}`,
 			this.selectedItems.has(`${item.id}`),
 			`select-${item.id}`,
-			item.images[item.fields.post_thumbnail]?.medium??'',
-			item.images[item.fields.post_thumbnail]?.alt??'',
 			item.id,
 			item.id
 		];
+		// if (this.store.config.storeName === 'progress') {
+		// 	[
+		// 		img.src,
+		// 		img.alt,
+		// 	] = [
+		// 		item.images[item.fields['timeline'][0].post_thumbnail]?.medium??'',
+		// 		item.images[item.fields['timeline'][0].post_thumbnail]?.alt??'',
+		// 	];
+		// } else {
+			[
+				img.src,
+				img.alt,
+			] = [
+				item.images[item.fields.post_thumbnail]?.medium??'',
+				item.images[item.fields.post_thumbnail]?.alt??'',
+			];
+		// }
 		return card;
 	}
 
@@ -368,7 +402,7 @@
 					if (!isEmpty) {
 						field.querySelector('input').checked = parseInt(value) === 1;
 					}
-					field.querySelector('.toggle-label').hidden = true;
+					field.querySelector('.toggle-label')?.remove();
 					break;
 				case 'select':
 					label.remove();

--
Gitblit v1.10.0