| | |
| | | **********************************************/ |
| | | 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) { |
| | |
| | | * 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; |
| | | } |