diff --git a/public/js/organization.js b/public/js/organization.js index 30a2025..925ca3e 100644 --- a/public/js/organization.js +++ b/public/js/organization.js @@ -21,14 +21,6 @@ var responsiveDisplay = function() { var isSelectionMode = function() { return document.querySelectorAll('.canvas-container .input-select:checked').length > 0; } -var getPagesSelected = function() { - let pages = []; - document.querySelectorAll('.canvas-container .input-select:checked').forEach(function(item) { - pages[item.parentNode.id.replace('canvas-container-', '')] = item.parentNode; - }); - - return pages; -} var nbPagePerLine = 5; if(is_mobile()) { @@ -199,9 +191,71 @@ var pageRender = async function(pageIndex) { }); } -var toggleSelectPage = function(page) { - page.querySelector('input[type=checkbox].input-select').checked = !isPageSelected(page); +var getFileIndex = function(page) { + + return page.id.replace('canvas-container-', '').replace(/_.*$/, ''); +} + +var getFilesStats = function() { + let files = []; + document.querySelectorAll('.canvas-container').forEach(function(page) { + let fileIndex = getFileIndex(page); + if(!files[fileIndex]) { + files[fileIndex] = { nbPage: 0, nbPageSelected: 0, nbPageDeleted: 0}; + } + + if(isPageDeleted(page)) { + files[fileIndex].nbPageDeleted++; + } else { + files[fileIndex].nbPage++; + } + + if(isPageSelected(page)) { + files[fileIndex].nbPageSelected++; + } + }); + + console.log(files); + + return files; +} + +var updateListePDF = function() { + document.querySelector('#list_pdf').innerHTML = ""; + for (var i = 0; i < document.querySelector('#input_pdf').files.length; i++) { + let pdfLetter = String.fromCharCode(96 + i+1).toUpperCase(); + const pdfFile = document.querySelector('#input_pdf').files.item(i); + document.querySelector('#list_pdf').insertAdjacentHTML('beforeend', '
  • '+decodeURI(pdfFile.name)+'
  • '); + let fileItem = document.querySelector('#file_' + pdfLetter); + fileItem.querySelector('input[type=checkbox]').addEventListener('change', function(e) { + document.querySelectorAll('.canvas-container').forEach(function(page) { + if(getFileIndex(page) == pdfLetter && !isPageDeleted(page)) { + selectPage(page, e.target.checked); + } + }); + updateGlobalState(); + }); + + } + updateGlobalState(); +} + +var getPagesSelected = function() { + let pages = []; + document.querySelectorAll('.canvas-container .input-select:checked').forEach(function(item) { + pages[item.parentNode.id.replace('canvas-container-', '')] = item.parentNode; + }); + + return pages; +} + +var selectPage = function(page, state) { + page.querySelector('input[type=checkbox].input-select').checked = state; updatePageState(page); +} + +var toggleSelectPage = function(page) { + selectPage(page, !isPageSelected(page)); updateGlobalState(); } @@ -211,10 +265,14 @@ var isPageSelected = function(page) { } var toggleDeletePage = function(page) { - page.querySelector('input[type=checkbox].checkbox-page').checked = isPageDeleted(page); + deletePage(page, isPageDeleted(page)) + updateGlobalState(); +} + +var deletePage = function(page, state) { + page.querySelector('input[type=checkbox].checkbox-page').checked = state; page.querySelector('input[type=checkbox].input-select').checked = false; updatePageState(page); - updateGlobalState(); } var isPageDeleted = function(page) { @@ -267,7 +325,22 @@ var updatePageState = function(page) { } } +var updateFilesState = function() { + let filesStats = getFilesStats(); + for(fileIndex in filesStats) { + let checkbox = document.querySelector('#file_'+fileIndex+' input[type=checkbox]'); + let fileStat = filesStats[fileIndex]; + checkbox.checked = (fileStat.nbPageSelected > 0 && fileStat.nbPageSelected == fileStat.nbPage); + checkbox.indeterminate = (fileStat.nbPageSelected > 0 && fileStat.nbPageSelected < fileStat.nbPage); + document.querySelector('#file_'+fileIndex+' span').classList.remove('text-primary'); + if(fileStat.nbPageSelected > 0) { + document.querySelector('#file_'+fileIndex+' span').classList.add('text-primary'); + } + } +} + var updateGlobalState = function() { + updateFilesState(); document.querySelector('#container_btn_select').classList.add('opacity-50'); document.querySelector('#container_btn_select').classList.remove('border-primary'); document.querySelector('#container_btn_select .card-header').classList.remove('bg-primary', 'text-white'); @@ -292,14 +365,6 @@ var updateGlobalState = function() { } } -var updateListePDF = function() { - document.querySelector('#list_pdf').innerHTML = ""; - for (var i = 0; i < document.querySelector('#input_pdf').files.length; i++) { - const pdfFile = document.querySelector('#input_pdf').files.item(i); - document.querySelector('#list_pdf').insertAdjacentHTML('beforeend', '
  • '+decodeURI(pdfFile.name)+'
  • '); - } -} - var degreesToOrientation = function(degrees) { if(degrees == 90) { return "east"; } if(degrees == 180) { return "south"; } @@ -370,9 +435,9 @@ var createEventsListener = function() { document.getElementById('btn_delete_select').addEventListener('click', function(event) { let pages = getPagesSelected(); for(index in pages) { - toggleDeletePage(pages[index]); + deletePage(pages[index]); } - document.querySelector('#btn_cancel_select').click(); + updateGlobalState(); }); document.getElementById('btn_rotate_select').addEventListener('click', function(event) { let pages = getPagesSelected(); diff --git a/templates/organization.html.php b/templates/organization.html.php index e55256b..671c1c0 100644 --- a/templates/organization.html.php +++ b/templates/organization.html.php @@ -94,6 +94,6 @@ - + \ No newline at end of file