diff --git a/public/css/app.css b/public/css/app.css
index 7d38114..a6d5e91 100644
--- a/public/css/app.css
+++ b/public/css/app.css
@@ -34,12 +34,17 @@
max-height: 200px;
}
-.canvas-container .btn-drag, .canvas-container .btn-rotate, .canvas-container .btn-delete, .canvas-container .btn-select, .canvas-container .btn-download, .canvas-container .btn-restore {
+.canvas-container .btn-drag, .canvas-container .btn-rotate, .canvas-container .btn-delete, .canvas-container .btn-select, .canvas-container .btn-download, .canvas-container .btn-restore, .canvas-container .btn-drag-here, .canvas-container .btn-cancel {
font-size: 30px;
cursor: move;
background: rgb(255,255,255,0.6);
}
+.canvas-container .btn-drag-here, .canvas-container .btn-cancel {
+ cursor: pointer;
+ z-index: 9999;
+}
+
.canvas-container .btn-rotate, .canvas-container .btn-delete, .canvas-container .btn-select, .canvas-container .btn-download, .canvas-container .btn-restore {
cursor: pointer;
font-size: 25px;
@@ -48,3 +53,9 @@
.border-transparent {
border-color: transparent !important;
}
+
+#backdrop_drag_mode {
+ top: 0;
+ left: 0;
+ z-index: 1000;
+}
\ No newline at end of file
diff --git a/public/js/organization.js b/public/js/organization.js
index b4dbc3c..edefb16 100644
--- a/public/js/organization.js
+++ b/public/js/organization.js
@@ -25,6 +25,9 @@ var responsiveDisplay = function() {
var isSelectionMode = function() {
return document.querySelectorAll('.canvas-container .input-select:checked').length > 0;
}
+var isDraggedMode = function() {
+ return document.querySelectorAll('.canvas-container .input-drag:checked').length > 0;
+}
var nbPagePerLine = 5;
if(is_mobile()) {
@@ -65,6 +68,8 @@ var loadPDF = async function(pdfBlob, filename, pdfIndex) {
pageHTML += '
';
pageHTML += '
';
pageHTML += '
';
+ pageHTML += '
';
+ pageHTML += '
';
pageHTML += '
';
pageHTML += '
';
pageHTML += 'Page '+page.pageNumber+' - '+filename+'
';
@@ -72,6 +77,7 @@ var loadPDF = async function(pdfBlob, filename, pdfIndex) {
pageHTML += '';
pageHTML += '';
pageHTML += '';
+ pageHTML += '';
pageHTML += '';
document.getElementById('container-pages').insertAdjacentHTML('beforeend', pageHTML);
@@ -106,7 +112,7 @@ var loadPDF = async function(pdfBlob, filename, pdfIndex) {
canvasContainer.addEventListener('dragend', function(e) {
this.querySelector('.container-resize').classList.remove('d-none');
this.querySelector('.canvas-pdf').classList.remove('shadow-lg');
- this.querySelector('.canvas-pdf').style.border = '2px solid transparent';
+ this.querySelector('.canvas-pdf').style.removeProperty('border');
this.style.opacity = 1;
updatePageState(this);
});
@@ -131,6 +137,38 @@ var loadPDF = async function(pdfBlob, filename, pdfIndex) {
canvasContainer.querySelector('.btn-select').addEventListener('click', function(e) {
toggleSelectPage(this.parentNode);
});
+ canvasContainer.querySelector('.btn-drag').addEventListener('click', function(e) {
+ toggleDragPage(this.parentNode);
+ });
+ canvasContainer.querySelector('.btn-drag-here').addEventListener('click', function(e) {
+ let pageHere = this.parentNode;
+ let after = false;
+ let pageHereFound = false;
+ document.querySelectorAll('.canvas-container').forEach(function(page) {
+ if(page.id == pageHere.id) {
+ pageHereFound = true;
+ }
+ if(!after && isPageDragged(page) && !pageHereFound) {
+ after = true;
+ }
+ });
+ document.querySelectorAll('.canvas-container .input-drag:checked').forEach(function(item) {
+ let page = item.parentNode;
+ if(after) {
+ pageHere.insertAdjacentElement('afterend', page);
+ } else {
+ pageHere.insertAdjacentElement('beforebegin', page);
+ }
+ page.querySelector('input[type=checkbox].input-drag').checked = false;
+ });
+ updateGlobalState();
+ document.querySelectorAll('.canvas-container').forEach(function(page) {
+ updatePageState(page);
+ });
+ });
+ canvasContainer.querySelector('.btn-cancel').addEventListener('click', function(e) {
+ toggleDragPage(this.parentNode);
+ });
canvasContainer.querySelector('.btn-download').addEventListener('click', function(e) {
let container = this.parentNode;
let pageValue = container.querySelector('.checkbox-page').value;
@@ -274,6 +312,24 @@ var isPageSelected = function(page) {
return page.querySelector('input[type=checkbox].input-select').checked;
}
+var dragPage = function(page, state) {
+ page.querySelector('input[type=checkbox].input-drag').checked = state;
+ updatePageState(page);
+}
+
+var toggleDragPage = function(page) {
+ dragPage(page, !isPageDragged(page));
+ updateGlobalState();
+ document.querySelectorAll('.canvas-container').forEach(function(page) {
+ updatePageState(page);
+ });
+}
+
+var isPageDragged = function(page) {
+
+ return page.querySelector('input[type=checkbox].input-drag').checked;
+}
+
var toggleDeletePage = function(page) {
deletePage(page, isPageDeleted(page))
updateGlobalState();
@@ -298,13 +354,18 @@ var isPageHover = function(page) {
var updatePageState = function(page) {
page.classList.remove('border-primary', 'shadow-sm', 'bg-primary', 'border-secondary', 'bg-secondary');
page.classList.add('border-transparent', 'bg-transparent');
- page.querySelector('.canvas-pdf').style.opacity = '1'
+ page.querySelector('.canvas-pdf').style.opacity = '1';
+ page.querySelector('.canvas-pdf').style.zIndex = 'inherit';
+ page.querySelector('.canvas-pdf').classList.add('shadow-sm');
+ page.querySelector('.canvas-pdf').classList.remove('shadow');
page.querySelector('.btn-rotate').classList.add('d-none');
page.querySelector('.btn-download').classList.add('d-none');
page.querySelector('.btn-delete').classList.add('d-none');
page.querySelector('.btn-select').classList.add('d-none');
page.querySelector('.btn-select').classList.remove('text-primary');
page.querySelector('.btn-drag').classList.add('d-none');
+ page.querySelector('.btn-cancel').classList.add('d-none');
+ page.querySelector('.btn-drag-here').classList.add('d-none');
page.querySelector('.btn-restore').classList.add('d-none');
page.querySelector('.page-title').classList.add('d-none');
@@ -312,7 +373,7 @@ var updatePageState = function(page) {
page.querySelector('.canvas-pdf').style.opacity = '0.15';
}
- if(isPageHover(page) && !isPageDeleted(page)) {
+ if(isPageHover(page) && !isPageDeleted(page) && !isPageDragged(page) && !isDraggedMode()) {
page.querySelector('.page-title').classList.remove('d-none');
page.classList.add('border-secondary', 'bg-secondary');
page.classList.remove('border-transparent', 'bg-transparent');
@@ -333,6 +394,17 @@ var updatePageState = function(page) {
page.querySelector('.btn-select').classList.add('text-primary');
page.querySelector('.btn-select').classList.remove('d-none')
}
+
+ if(isPageDragged(page)) {
+ page.querySelector('.btn-cancel').classList.remove('d-none');
+ page.querySelector('.canvas-pdf').classList.remove('shadow-sm');
+ page.querySelector('.canvas-pdf').classList.add('shadow');
+ page.querySelector('.canvas-pdf').style.zIndex = 9999;
+ }
+
+ if(!isPageDragged(page) && isDraggedMode()) {
+ page.querySelector('.btn-drag-here').classList.remove('d-none');
+ }
}
var updateFilesState = function() {
@@ -361,6 +433,7 @@ var updateGlobalState = function() {
button.setAttribute('disabled', 'disabled');
});
document.querySelector('#container_btn_select .card-header span').innerText = "Aucune";
+ document.querySelector('#backdrop_drag_mode').classList.add('d-none');
if(isSelectionMode()) {
document.querySelector('#container_btn_select .card-header span').innerText = document.querySelectorAll('.canvas-container .input-select:checked').length;
document.querySelector('#container_btn_select').classList.remove('opacity-50');
@@ -372,6 +445,15 @@ var updateGlobalState = function() {
button.classList.remove('btn-outline-secondary');
button.removeAttribute('disabled');
});
+ document.querySelectorAll('.canvas-container .btn-add').forEach(function(button) {
+ button.classList.remove('d-none');
+ });
+ }
+ if(isDraggedMode()) {
+ document.querySelector('#backdrop_drag_mode').style.width = document.querySelector('#container-pages').scrollWidth+'px';
+ console.log(document.querySelector('#container-pages'));
+ document.querySelector('#backdrop_drag_mode').style.height = document.querySelector('#container-pages').scrollHeight+'px';
+ document.querySelector('#backdrop_drag_mode').classList.remove('d-none');
}
}
diff --git a/templates/organization.html.php b/templates/organization.html.php
index 9f8eaf1..17ad148 100644
--- a/templates/organization.html.php
+++ b/templates/organization.html.php
@@ -44,7 +44,8 @@
-
+
@@ -102,6 +103,6 @@
-
+