Jake Vanderwerf
2025-11-10 e9967fa22781d922ba4eb8fb44fe72d200ac4b14
assets/js/concise/PopulateForm.js
@@ -3,10 +3,6 @@
**********************************************/
class PopulateForm {
   constructor(form, fieldData = {}, imageData = {}, options = {}) {
      console.log('Populating field... ', form);
      console.log('fieldData: ', fieldData);
      console.log('imageData: ', imageData);
      console.log('options: ', options);
      for (let [fieldName, fieldValue] of Object.entries(fieldData)) {
         let wrapper = form.querySelector(`[data-field="${fieldName}"]`);
         if (wrapper) {
@@ -480,17 +476,78 @@
    * Populate gallery fields
    */
   populateGalleryField(fieldWrapper, fieldName, fieldValue, imagesData = {}) {
      this.populateImageField(fieldWrapper, fieldName, fieldValue, imagesData);
      if (fieldName === 'timeline') {
         this.populateTimelineGallery(fieldWrapper, fieldName, fieldValue, imagesData);
      } else {
         this.populateImageField(fieldWrapper, fieldName, fieldValue, imagesData);
      }
   }
   populateTimelineGallery(fieldWrapper, fieldName, fieldValue, imagesData)
   {
      if (!fieldValue) {
         return;
      }
      const imageIds = Object.keys(fieldValue);
      if (imageIds.length === 0) {
         return;
      }
      // Update image display
      const grid = fieldWrapper.querySelector('.item-grid');
      const uploadContainer = fieldWrapper.querySelector('.file-upload-container');
      fieldWrapper.querySelector('.progress')?.remove();
      if (grid) {
         window.removeChildren(grid);
         imageIds.forEach(imageId => {
            let image = window.getTemplate('timelineItem');
            let img = image.querySelector('img');
            image.querySelector('video')?.remove();
            image.querySelector('.select-item span')?.remove();
            let data = fieldValue[imageId];
            let imgData = imagesData[imageId];
            img.src = imgData.medium;
            data = { ... data, ... imgData};
            let fields = image.querySelectorAll('.field');
            fields.forEach(field => {
               if (field.classList.contains('group')){
                  return;
               }
               let input = field.querySelector('input, textarea');
               let label = field.querySelector('label');
               let name = input.name.replace('upload_data::','');
               let value = data[name];
               this.populateField(field, name, value, imagesData);
               let id = data.id;
               let newName = `[${id}]${name}`;
               [
                  input.name,
                  input.id,
                  label.htmlFor
               ] = [
                  newName,
                  newName,
                  newName,
               ]
            });
            grid.append(image);
         });
      }
   }
   /**
    * Populate repeater fields
    */
   populateRepeaterField(fieldWrapper, fieldName, fieldValue, options = {}) {
      console.log('fieldWrapper', fieldWrapper);
      console.log('fieldName', fieldName);
      console.log('fieldValue', fieldValue);
      console.log('options', options);
      if (!fieldValue || !Array.isArray(fieldValue)) {
         return;
      }