Jake Vanderwerf
2026-01-04 afdc1b396e3e88146006cd707a15b9da4843e1c2
assets/js/concise/View.js
@@ -19,7 +19,7 @@
         grid: new Map(),
         table: new Map(),
      }
      this.currentView = 'grid';
      this.currentView = this.container.dataset.view ?? 'grid';
      this.selectedItems = new Set();
      this.subscribers = new Set();
@@ -161,15 +161,6 @@
   }
   /**
    * Handle data updates from store
    */
   handleDataUpdate(data) {
      console.log(data);
      const items = data.data?.items || data.items || [];
      this.render(items);
   }
   /**
    * Handle items update
    */
   handleItemsUpdate() {
@@ -185,6 +176,7 @@
      // Handle empty state
      if (items.length === 0) {
         console.log('Nothing to show');
         this.renderEmpty();
         return;
      }
@@ -293,7 +285,10 @@
   }
   toggleTable(on) {
      this.ui.table.selectedColumns.hidden = !on;
      if (this.ui.table.selectedColumns) {
         this.ui.table.selectedColumns.hidden = !on;
      }
      if (on && !this.ui.table.table) {
         let table = window.getTemplate('contentTable');
         this.container.append(table);
@@ -317,7 +312,10 @@
            window.removeChildren(this.ui.table.body);
         }
      }
      this.ui.table.selectedColumns.hidden = !on;
      if (this.ui.table.selectedColumns) {
         this.ui.table.selectedColumns.hidden = !on;
      }
   }
   toggleGrid() {
@@ -360,17 +358,32 @@
         row.querySelector('.select-item').value,
         row.querySelector('.select-item').checked,
         row.querySelector('.select-item + label').htmlFor,
         row.querySelector(`input[name="post_status"][value="${item.status}"]`).checked
      ] = [
         item.id,
         item.id,
         this.selectedItems.has(`${item.id}`),
         item.id,
         item.status
      ];
      let status = row.querySelector(`input[name="post_status"][value="${item.status}"]`);
      if (status) {
         status.checked = true;
      }
      // Let jvbPopulate do its thing - NO prefixing needed!
      new window.jvbPopulate(row, item.fields, item.images);
      if (Object.hasOwn(this.ui.table.table.dataset, 'edit')) {
         new window.jvbPopulate(row, item.fields, item.images);
      } else {
         for (let [key, value] of Object.entries(item)) {
            let col = row.querySelector(`[data-field="${key}"]`);
            if (col) {
               let p = col.querySelector('p');
               if (col.dataset.fieldType === 'date') {
                  value = window.formatTimeAgo(value);
               }
               p.textContent = value;
            }
         }
      }
      // Clean up after population
      this.cleanupTableRow(row);