mobile bunch of updayes
Former-commit-id: 28552c1940bdc0b97545123038a424d11e7d9c68
This commit is contained in:
@@ -3,7 +3,8 @@
|
||||
var tempID = "_fm_internal_temporary_id",
|
||||
buttons = {},
|
||||
templates = {},
|
||||
selectedItems = [];
|
||||
selectedItems = [],
|
||||
overlay, clickOverlay;
|
||||
|
||||
// Removes an element, if exists, from an array
|
||||
Array.prototype.removeElement = function(element) {
|
||||
@@ -36,7 +37,8 @@ Element.prototype.changeToLoading = function() {
|
||||
element.style.opacity = 0;
|
||||
|
||||
setTimeout(function() {
|
||||
element.innerHTML = '<i class="material-icons spin">autorenew</i>';
|
||||
element.classList.add('spin');
|
||||
element.innerHTML = 'autorenew';
|
||||
element.style.opacity = 1;
|
||||
}, 200);
|
||||
|
||||
@@ -60,13 +62,9 @@ Element.prototype.changeToDone = function(error, html) {
|
||||
}
|
||||
|
||||
let firstStep = () => {
|
||||
this.innerHTML = '<i class="material-icons">done</i>';
|
||||
if (error) {
|
||||
this.innerHTML = '<i class="material-icons">close</i>';
|
||||
}
|
||||
|
||||
this.classList.remove('spin');
|
||||
this.innerHTML = error ? 'close' : 'done';
|
||||
this.style.opacity = 1;
|
||||
|
||||
setTimeout(secondStep, 1000);
|
||||
}
|
||||
|
||||
@@ -109,7 +107,7 @@ var removeLastDirectoryPartOf = function(url) {
|
||||
* * * * * * * * * * * * * * * */
|
||||
function closePrompt(event) {
|
||||
let prompt = document.querySelector('.prompt');
|
||||
|
||||
|
||||
if (!prompt) return;
|
||||
|
||||
event.preventDefault();
|
||||
@@ -123,6 +121,7 @@ function closePrompt(event) {
|
||||
|
||||
function notImplemented(event) {
|
||||
event.preventDefault();
|
||||
clickOverlay.click();
|
||||
|
||||
let clone = document.importNode(templates.info.content, true);
|
||||
clone.querySelector('h3').innerHTML = 'Not implemented';
|
||||
@@ -172,7 +171,7 @@ function deleteSelected(single) {
|
||||
|
||||
Array.from(selectedItems).forEach(id => {
|
||||
let request = new XMLHttpRequest(),
|
||||
html = buttons.delete.changeToLoading(),
|
||||
html = buttons.delete.querySelector('i').changeToLoading(),
|
||||
el, url;
|
||||
|
||||
if (single) {
|
||||
@@ -194,7 +193,7 @@ function deleteSelected(single) {
|
||||
}
|
||||
}
|
||||
|
||||
buttons.delete.changeToDone(request.status != 204, html);
|
||||
buttons.delete.querySelector('i').changeToDone(request.status != 204, html);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -216,13 +215,13 @@ function deleteEvent(event) {
|
||||
|
||||
let clone = document.importNode(templates.question.content, true);
|
||||
clone.querySelector('h3').innerHTML = 'Delete files';
|
||||
|
||||
|
||||
if (single) {
|
||||
clone.querySelector('p').innerHTML = `Are you sure you want to delete this file/folder?`;
|
||||
clone.querySelector('p').innerHTML = `Are you sure you want to delete this file/folder?`;
|
||||
} else {
|
||||
clone.querySelector('p').innerHTML = `Are you sure you want to delete ${selectedItems.length} file(s)?`;
|
||||
clone.querySelector('p').innerHTML = `Are you sure you want to delete ${selectedItems.length} file(s)?`;
|
||||
}
|
||||
|
||||
|
||||
clone.querySelector('input').remove();
|
||||
clone.querySelector('.ok').innerHTML = 'Delete';
|
||||
clone.querySelector('form').addEventListener('submit', deleteSelected(single));
|
||||
@@ -360,29 +359,29 @@ function setupSearch() {
|
||||
|
||||
function closeHelp(event) {
|
||||
event.preventDefault();
|
||||
|
||||
|
||||
document.querySelector('.help').classList.remove('active');
|
||||
document.querySelector('.overlay').classList.remove('active');
|
||||
}
|
||||
|
||||
function openHelp(event) {
|
||||
closePrompt(event);
|
||||
|
||||
|
||||
document.querySelector('.help').classList.add('active');
|
||||
document.querySelector('.overlay').classList.add('active');
|
||||
}
|
||||
|
||||
window.addEventListener('keydown', (event) => {
|
||||
if (event.keyCode == 27) {
|
||||
if (event.keyCode == 27) {
|
||||
if (document.querySelector('.help.active')) {
|
||||
closeHelp(event);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (event.keyCode == 46) {
|
||||
deleteEvent(event);
|
||||
}
|
||||
|
||||
|
||||
if (event.keyCode == 112) {
|
||||
event.preventDefault();
|
||||
openHelp(event);
|
||||
@@ -396,10 +395,13 @@ window.addEventListener('keydown', (event) => {
|
||||
* * * * * * * * * * * * * * * */
|
||||
|
||||
document.addEventListener("DOMContentLoaded", function(event) {
|
||||
overlay = document.querySelector('.overlay');
|
||||
clickOverlay = document.querySelector('#click-overlay');
|
||||
|
||||
buttons.logout = document.getElementById("logout");
|
||||
buttons.open = document.getElementById("open");
|
||||
buttons.delete = document.getElementById("delete");
|
||||
buttons.breadcrumbs = document.getElementById("breadcrumbs-button");
|
||||
buttons.previous = document.getElementById("previous");
|
||||
|
||||
// Attach event listeners
|
||||
buttons.logout.addEventListener("click", logoutEvent);
|
||||
@@ -412,21 +414,42 @@ document.addEventListener("DOMContentLoaded", function(event) {
|
||||
buttons.delete.addEventListener("click", deleteEvent);
|
||||
}
|
||||
|
||||
if (buttons.breadcrumbs) {
|
||||
buttons.breadcrumbs.addEventListener("click", event => {
|
||||
event.currentTarget.classList.toggle("active");
|
||||
if (buttons.previous) {
|
||||
buttons.previous.addEventListener("click", event => {
|
||||
document.getElementById("breadcrumbs").classList.toggle("active");
|
||||
|
||||
clickOverlay.classList.add('active');
|
||||
|
||||
clickOverlay.addEventListener('click', event => {
|
||||
document.getElementById("breadcrumbs").classList.remove("active");
|
||||
clickOverlay.classList.remove('active');
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
document.querySelector('.overlay').addEventListener('click', event => {
|
||||
overlay.addEventListener('click', event => {
|
||||
if (document.querySelector('.help.active')) {
|
||||
closeHelp(event);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
closePrompt(event);
|
||||
})
|
||||
|
||||
let mainActions = document.getElementById('main-actions');
|
||||
|
||||
document.getElementById('more').addEventListener('click', event => {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
|
||||
clickOverlay.classList.add('active');
|
||||
mainActions.classList.add('active');
|
||||
|
||||
clickOverlay.addEventListener('click', event => {
|
||||
mainActions.classList.remove('active');
|
||||
clickOverlay.classList.remove('active');
|
||||
})
|
||||
})
|
||||
|
||||
setupSearch();
|
||||
return false;
|
||||
|
||||
@@ -209,7 +209,7 @@ document.addEventListener("DOMContentLoaded", (event) => {
|
||||
data.content = data.content.toString();
|
||||
}
|
||||
|
||||
let html = button.changeToLoading(),
|
||||
let html = button.querySelector('i').changeToLoading(),
|
||||
request = new XMLHttpRequest();
|
||||
|
||||
request.open("PUT", toWebDavURL(window.location.pathname));
|
||||
@@ -217,7 +217,7 @@ document.addEventListener("DOMContentLoaded", (event) => {
|
||||
request.send(JSON.stringify(data));
|
||||
request.onreadystatechange = function() {
|
||||
if (request.readyState == 4) {
|
||||
button.changeToDone((request.status != 201), html);
|
||||
button.querySelector('i').changeToDone((request.status != 201), html);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
'use strict';
|
||||
|
||||
var listing = {};
|
||||
var listing = {
|
||||
selectMultiple: false
|
||||
};
|
||||
|
||||
listing.reload = function(callback) {
|
||||
let request = new XMLHttpRequest();
|
||||
@@ -126,7 +128,7 @@ listing.rename = function(event) {
|
||||
|
||||
let newName = event.currentTarget.querySelector('input').value,
|
||||
newLink = removeLastDirectoryPartOf(toWebDavURL(link)) + "/" + newName,
|
||||
html = buttons.rename.changeToLoading(),
|
||||
html = buttons.rename.querySelector('i').changeToLoading(),
|
||||
request = new XMLHttpRequest();
|
||||
|
||||
request.open('MOVE', toWebDavURL(link));
|
||||
@@ -147,7 +149,7 @@ listing.rename = function(event) {
|
||||
});
|
||||
}
|
||||
|
||||
buttons.rename.changeToDone((request.status != 201 && request.status != 204), html);
|
||||
buttons.rename.querySelector('i').changeToDone((request.status != 201 && request.status != 204), html);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -169,7 +171,7 @@ listing.rename = function(event) {
|
||||
|
||||
listing.handleFiles = function(files, base) {
|
||||
let button = document.getElementById("upload"),
|
||||
html = button.changeToLoading();
|
||||
html = button.querySelector('i').changeToLoading();
|
||||
|
||||
for (let i = 0; i < files.length; i++) {
|
||||
let request = new XMLHttpRequest();
|
||||
@@ -182,7 +184,7 @@ listing.handleFiles = function(files, base) {
|
||||
listing.reload();
|
||||
}
|
||||
|
||||
button.changeToDone((request.status != 201), html);
|
||||
button.querySelector('i').changeToDone((request.status != 201), html);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -222,7 +224,7 @@ listing.handleSelectionChange = function(event) {
|
||||
} else {
|
||||
buttons.open.classList.remove("disabled");
|
||||
}
|
||||
|
||||
|
||||
buttons.rename.classList.remove("disabled");
|
||||
}
|
||||
|
||||
@@ -259,7 +261,7 @@ listing.selectItem = function(event) {
|
||||
|
||||
if (selectedItems.length != 0) event.preventDefault();
|
||||
if (selectedItems.indexOf(el.id) == -1) {
|
||||
if (!event.ctrlKey) listing.unselectAll();
|
||||
if (!event.ctrlKey && !listing.selectMultiple) listing.unselectAll();
|
||||
|
||||
el.setAttribute("aria-selected", true);
|
||||
selectedItems.push(el.id);
|
||||
@@ -290,7 +292,7 @@ listing.newFilePrompt = function(event) {
|
||||
event.preventDefault();
|
||||
|
||||
let button = document.getElementById('new'),
|
||||
html = button.changeToLoading(),
|
||||
html = button.querySelector('i').changeToLoading(),
|
||||
request = new XMLHttpRequest(),
|
||||
name = event.currentTarget.querySelector('input').value;
|
||||
|
||||
@@ -298,7 +300,7 @@ listing.newFilePrompt = function(event) {
|
||||
request.send();
|
||||
request.onreadystatechange = function() {
|
||||
if (request.readyState == 4) {
|
||||
button.changeToDone((request.status != 201), html);
|
||||
button.querySelector('i').changeToDone((request.status != 201), html);
|
||||
listing.reload();
|
||||
}
|
||||
}
|
||||
@@ -322,13 +324,12 @@ window.addEventListener('keydown', (event) => {
|
||||
if (document.querySelectorAll('.prompt').length) {
|
||||
closePrompt(event);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (event.keyCode == 113) {
|
||||
listing.rename();
|
||||
}
|
||||
|
||||
|
||||
if (event.ctrlKey || event.metaKey) {
|
||||
console.log("hey")
|
||||
switch (String.fromCharCode(event.which).toLowerCase()) {
|
||||
@@ -351,9 +352,26 @@ document.addEventListener('DOMContentLoaded', event => {
|
||||
buttons.new = document.getElementById('new');
|
||||
buttons.download = document.getElementById('download');
|
||||
|
||||
document.getElementById('multiple-selection-activate').addEventListener('click', event => {
|
||||
listing.selectMultiple = true;
|
||||
clickOverlay.click();
|
||||
|
||||
document.getElementById('multiple-selection').classList.add('active');
|
||||
document.querySelector('body').style.paddingBottom = "4em";
|
||||
})
|
||||
|
||||
document.getElementById('multiple-selection-cancel').addEventListener('click', event => {
|
||||
listing.selectMultiple = false;
|
||||
|
||||
document.querySelector('body').style.paddingBottom = "0";
|
||||
document.getElementById('multiple-selection').classList.remove('active');
|
||||
})
|
||||
|
||||
if (user.AllowEdit) {
|
||||
buttons.rename.addEventListener("click", listing.rename);
|
||||
}
|
||||
|
||||
let items = document.getElementsByClassName('item');
|
||||
|
||||
if (user.AllowNew) {
|
||||
buttons.upload.addEventListener("click", (event) => {
|
||||
@@ -363,7 +381,6 @@ document.addEventListener('DOMContentLoaded', event => {
|
||||
buttons.new.addEventListener('click', listing.newFileButton);
|
||||
|
||||
// Drag and Drop
|
||||
let items = document.getElementsByClassName('item');
|
||||
document.addEventListener("dragover", function(event) {
|
||||
event.preventDefault();
|
||||
}, false);
|
||||
@@ -382,4 +399,26 @@ document.addEventListener('DOMContentLoaded', event => {
|
||||
|
||||
document.addEventListener("drop", listing.documentDrop, false);
|
||||
}
|
||||
|
||||
let touches = {
|
||||
id: '',
|
||||
count: 0
|
||||
};
|
||||
|
||||
Array.from(items).forEach(file => {
|
||||
file.addEventListener('touchstart', event => {
|
||||
if (touches.id != file.id) {
|
||||
touches.id = file.id;
|
||||
touches.count = 1;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
touches.count++;
|
||||
|
||||
if (touches.count > 1) {
|
||||
window.location = file.dataset.url;
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user