drakosfire commited on
Commit
cf0d79c
1 Parent(s): b1fa4de

fixed bug where descriptionTextarea in unlock textareas wasn't trageting globablly. Function targets entire document now

Browse files
Files changed (1) hide show
  1. scripts.js +31 -21
scripts.js CHANGED
@@ -63,7 +63,8 @@ document.addEventListener("DOMContentLoaded", function() {
63
  const userInput = document.getElementById('user-description').value;
64
  // Clear the block container before inserting new blocks
65
  blockContainerPage.innerHTML = '';
66
-
 
67
 
68
  fetch('http://127.0.0.1:5000/process-description', {
69
  method: 'POST',
@@ -352,42 +353,38 @@ document.addEventListener("DOMContentLoaded", function() {
352
  });
353
  }
354
  function lockTextareas() {
355
- const textareas = blockContainer.querySelectorAll('textarea');
356
 
357
  textareas.forEach(textarea => {
358
  textarea.setAttribute('disabled', true);
359
- console.log(`Textarea with ID "${textarea.id}" is now disabled: ${textarea.disabled}`);
360
  });
361
 
362
- const descriptionTextareas = blockContainer.querySelectorAll('.description-textarea');
363
 
364
  descriptionTextareas.forEach(descriptionTextarea => {
365
  descriptionTextarea.removeAttribute('contenteditable');
366
- console.log(`Description textarea with ID "${descriptionTextarea.id}" is now enabled: ${!descriptionTextarea.contenteditable}`);
367
  });
368
 
369
  console.log('All textareas have been locked.');
370
  }
371
 
372
  function unlockTextareas() {
373
- const textareas = blockContainer.querySelectorAll('textarea');
374
 
375
  textareas.forEach(textarea => {
376
  textarea.removeAttribute('disabled');
377
- console.log(`Textarea with ID "${textarea.id}" is now enabled: ${!textarea.disabled}`);
378
  });
379
 
380
- const descriptionTextareas = blockContainer.querySelectorAll('.description-textarea');
381
 
382
  descriptionTextareas.forEach(descriptionTextarea => {
383
- descriptionTextarea.removeAttribute('contenteditable');
384
- console.log(`Description textarea with ID "${descriptionTextarea.id}" is now enabled: ${!descriptionTextarea.contenteditable}`);
385
  });
386
 
387
  console.log('All textareas have been unlocked.');
388
  }
389
 
390
-
391
  function handleDragStart(e) {
392
  lockTextareas();
393
  const target = e.target.closest('.block-item, .block-content');
@@ -503,6 +500,7 @@ document.addEventListener("DOMContentLoaded", function() {
503
  // Ensure the original block exists before proceeding
504
  if (!originalBlock || !newPage) {
505
  console.error(`Block with ID ${blockId} on page ${originalPageId} not found`);
 
506
  return;
507
  }
508
 
@@ -534,9 +532,11 @@ document.addEventListener("DOMContentLoaded", function() {
534
  if (offset > bounding.height / 2) {
535
  console.log('Inserting after the target');
536
  target.parentNode.insertBefore(newBlockContent, target.nextSibling);
 
537
  } else {
538
  console.log('Inserting before the target');
539
  target.parentNode.insertBefore(newBlockContent, target);
 
540
  }
541
 
542
  // Remove highlight borders
@@ -545,6 +545,7 @@ document.addEventListener("DOMContentLoaded", function() {
545
  } else {
546
  console.log('No valid drop target found, appending to the end');
547
  newPage.querySelector('.block.monster.frame.wide').appendChild(newBlockContent);
 
548
  }
549
 
550
  // Remove the original block from the original container
@@ -562,6 +563,7 @@ document.addEventListener("DOMContentLoaded", function() {
562
  } else {
563
  console.log('No data transferred');
564
  }
 
565
  }
566
 
567
  function getColumnFromOffset(block, offset) {
@@ -581,7 +583,7 @@ document.addEventListener("DOMContentLoaded", function() {
581
  // Ensure the column number is within valid bounds (1 or 2)
582
  const validColumnNumber = Math.min(Math.max(columnNumber, 1), 2);
583
 
584
- unlockTextareas();
585
  return validColumnNumber;
586
  }
587
 
@@ -617,7 +619,7 @@ document.addEventListener("DOMContentLoaded", function() {
617
 
618
  let pageCounter = 1;
619
  // Function to create new page
620
- function createNewPage() {
621
  const newPage = document.createElement('div');
622
  newPage.classList.add('page');
623
  newPage.setAttribute('data-page-id', `page-${pageCounter}`);
@@ -644,6 +646,18 @@ document.addEventListener("DOMContentLoaded", function() {
644
  return newPage;
645
  }
646
 
 
 
 
 
 
 
 
 
 
 
 
 
647
  function handleColumnOverflow(page, targetColumn) {
648
  console.log(`Handling overflow for page ID: ${page.getAttribute('data-page-id')} in column ${targetColumn}`);
649
  const blocks = Array.from(page.querySelectorAll('.block-content'));
@@ -716,7 +730,7 @@ document.addEventListener("DOMContentLoaded", function() {
716
  }
717
 
718
  // Otherwise, create a new page and move the overflowing blocks there
719
- const newPage = createNewPage();
720
  if (!newPage) {
721
  console.error('Failed to create a new page');
722
  return;
@@ -740,12 +754,6 @@ document.addEventListener("DOMContentLoaded", function() {
740
  return document.querySelector(`[data-page-id="page-${nextPageId}"]`);
741
  }
742
 
743
- function moveBlockToPage(block, newPageId) {
744
- block.setAttribute('data-page-id', newPageId);
745
- const newPage = document.querySelector(`[data-page-id="${newPageId}"] .block-container`);
746
- newPage.appendChild(block);
747
- }
748
-
749
  // Handle the drop event on the trash area
750
  function handleTrashDrop(e) {
751
  e.preventDefault();
@@ -853,11 +861,13 @@ document.addEventListener("DOMContentLoaded", function() {
853
  sortBlocksById();
854
  }
855
  });
856
- createNewPage();
857
 
858
  console.log('Reset complete, all blocks moved back to block-container');
859
  initializeTextareaResizing();
860
  }
 
 
861
 
862
  pageContainer.addEventListener('dragover', handleDragOver);
863
  pageContainer.addEventListener('drop', handleDrop);
 
63
  const userInput = document.getElementById('user-description').value;
64
  // Clear the block container before inserting new blocks
65
  blockContainerPage.innerHTML = '';
66
+ document.getElementById('add-page-button').addEventListener('click', addPage);
67
+ document.getElementById('remove-page-button').addEventListener('click', removePage);
68
 
69
  fetch('http://127.0.0.1:5000/process-description', {
70
  method: 'POST',
 
353
  });
354
  }
355
  function lockTextareas() {
356
+ const textareas = document.querySelectorAll('textarea');
357
 
358
  textareas.forEach(textarea => {
359
  textarea.setAttribute('disabled', true);
 
360
  });
361
 
362
+ const descriptionTextareas = document.querySelectorAll('.description-textarea');
363
 
364
  descriptionTextareas.forEach(descriptionTextarea => {
365
  descriptionTextarea.removeAttribute('contenteditable');
 
366
  });
367
 
368
  console.log('All textareas have been locked.');
369
  }
370
 
371
  function unlockTextareas() {
372
+ const textareas = document.querySelectorAll('textarea');
373
 
374
  textareas.forEach(textarea => {
375
  textarea.removeAttribute('disabled');
 
376
  });
377
 
378
+ const descriptionTextareas = document.querySelectorAll('.description-textarea');
379
 
380
  descriptionTextareas.forEach(descriptionTextarea => {
381
+ descriptionTextarea.setAttribute('contenteditable', 'true');
382
+ console.log(`Contenteditable for element with ID "${descriptionTextarea.id}" is now: ${descriptionTextarea.contentEditable}`);
383
  });
384
 
385
  console.log('All textareas have been unlocked.');
386
  }
387
 
 
388
  function handleDragStart(e) {
389
  lockTextareas();
390
  const target = e.target.closest('.block-item, .block-content');
 
500
  // Ensure the original block exists before proceeding
501
  if (!originalBlock || !newPage) {
502
  console.error(`Block with ID ${blockId} on page ${originalPageId} not found`);
503
+ unlockTextareas();
504
  return;
505
  }
506
 
 
532
  if (offset > bounding.height / 2) {
533
  console.log('Inserting after the target');
534
  target.parentNode.insertBefore(newBlockContent, target.nextSibling);
535
+ unlockTextareas();
536
  } else {
537
  console.log('Inserting before the target');
538
  target.parentNode.insertBefore(newBlockContent, target);
539
+ unlockTextareas();
540
  }
541
 
542
  // Remove highlight borders
 
545
  } else {
546
  console.log('No valid drop target found, appending to the end');
547
  newPage.querySelector('.block.monster.frame.wide').appendChild(newBlockContent);
548
+ unlockTextareas();
549
  }
550
 
551
  // Remove the original block from the original container
 
563
  } else {
564
  console.log('No data transferred');
565
  }
566
+
567
  }
568
 
569
  function getColumnFromOffset(block, offset) {
 
583
  // Ensure the column number is within valid bounds (1 or 2)
584
  const validColumnNumber = Math.min(Math.max(columnNumber, 1), 2);
585
 
586
+
587
  return validColumnNumber;
588
  }
589
 
 
619
 
620
  let pageCounter = 1;
621
  // Function to create new page
622
+ function addPage() {
623
  const newPage = document.createElement('div');
624
  newPage.classList.add('page');
625
  newPage.setAttribute('data-page-id', `page-${pageCounter}`);
 
646
  return newPage;
647
  }
648
 
649
+ function removePage() {
650
+ const pages = pageContainer.querySelectorAll('.page');
651
+
652
+ if (pages.length > 1) { // Ensure at least one page remains
653
+ const lastPage = pages[pages.length - 1];
654
+ pageContainer.removeChild(lastPage);
655
+ console.log(`Page removed with ID: ${lastPage.id}`);
656
+ } else {
657
+ console.log('Cannot remove the last page.');
658
+ }
659
+ }
660
+
661
  function handleColumnOverflow(page, targetColumn) {
662
  console.log(`Handling overflow for page ID: ${page.getAttribute('data-page-id')} in column ${targetColumn}`);
663
  const blocks = Array.from(page.querySelectorAll('.block-content'));
 
730
  }
731
 
732
  // Otherwise, create a new page and move the overflowing blocks there
733
+ const newPage = addPage();
734
  if (!newPage) {
735
  console.error('Failed to create a new page');
736
  return;
 
754
  return document.querySelector(`[data-page-id="page-${nextPageId}"]`);
755
  }
756
 
 
 
 
 
 
 
757
  // Handle the drop event on the trash area
758
  function handleTrashDrop(e) {
759
  e.preventDefault();
 
861
  sortBlocksById();
862
  }
863
  });
864
+ addPage();
865
 
866
  console.log('Reset complete, all blocks moved back to block-container');
867
  initializeTextareaResizing();
868
  }
869
+
870
+
871
 
872
  pageContainer.addEventListener('dragover', handleDragOver);
873
  pageContainer.addEventListener('drop', handleDrop);