From 37110d436c8933f8a66aef65883dd87105db5238 Mon Sep 17 00:00:00 2001 From: Andrea Spacca Date: Mon, 20 May 2019 08:31:32 +0200 Subject: [PATCH] new file --- src/scripts/base.js | 184 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 184 insertions(+) create mode 100644 src/scripts/base.js diff --git a/src/scripts/base.js b/src/scripts/base.js new file mode 100644 index 0000000..6ea6a91 --- /dev/null +++ b/src/scripts/base.js @@ -0,0 +1,184 @@ +'use strict'; + +$(document).ready(function() { + + // Smooth scrolling + $('a[href*="#"]:not([href="#"])').click(function() { + if (location.pathname.replace(/^\//, '') === this.pathname.replace(/^\//, '') && location.hostname === this.hostname) { + var target = $(this.hash); + target = target.length ? target : $('[name=' + this.hash.slice(1) + ']'); + if (target.length) { + $('html,body').animate({ + scrollTop: target.offset().top + }, 1000); + return false; + } + } + }); + +}); + +(function() { + var files = Array(); + var queue = Array(); + + $(window).bind('beforeunload', function(){ + if (queue.length===0) { + return; + } + + return 'There are still ' + queue.length + ' files being uploaded.'; + }); + + function upload(file) { + $('.browse').addClass('uploading'); + + var li = $('
  • '); + + li.append($('
    ####################################################

    Uploading... ' + file.name + '

    ')); + $(li).appendTo($('.queue')); + + var xhr = new XMLHttpRequest(); + + xhr.upload.addEventListener('progress', function(e) { + var pc = parseInt((e.loaded / e.total * 100)); + $('.upload-progress', $(li)).show(); + $('.upload-progress .bar', $(li)).css('width', pc + '%'); + $('.upload-progress span ', $(li)).empty().append(pc + '%'); + + }, false); + + xhr.onreadystatechange = function() { + if (xhr.readyState === 4) { + /* $('.upload-progress', $(li)).hide();*/ + $('#web').addClass('uploading'); + // progress.className = (xhr.status == 200 ? "success" : "failure"); + if (xhr.status === 200) { + $(li).html('' + xhr.responseText + ''); + } else { + $(li).html('Error (' + xhr.status + ') during upload of file ' + file.name + ''); + } + + // file uploaded successfully, remove from queue + var index = queue.indexOf(xhr); + if (index > -1) { + queue.splice(index, 1); + } + + files.push(URI(xhr.responseText.replace('\n', '')).path()); + + $('.download-zip').attr('href', URI('(' + files.join(',') + ').zip').absoluteTo(location.href).toString()); + $('.download-tar').attr('href', URI('(' + files.join(',') + ').tar.gz').absoluteTo(location.href).toString()); + + $('.all-files').addClass('show'); + } + }; + + // should queue all uploads. + queue.push(xhr); + + // start upload + xhr.open('PUT', './' + file.name, true); + xhr.send(file); + } + + $(document).bind('dragenter', function(event) { + event.preventDefault(); + }).bind('dragover', function(event) { + event.preventDefault(); + // show drop indicator + $('#terminal').addClass('dragged'); + $('#web').addClass('dragged'); + }).bind('dragleave', function() { + $('#terminal').removeClass('dragged'); + $('#web').removeClass('dragged'); + + }).bind('drop dragdrop', function(event) { + var files = event.originalEvent.target.files || event.originalEvent.dataTransfer.files; + + $.each(files, function(index, file) { + upload(file); + }); + + event.stopPropagation(); + event.preventDefault(); + }); + + $('a.browse').on('click', function() { + $('input[type=file]').click(); + return (false); + }); + + + $('input[type=file]').on('change', function() { + $.each(this.files, function(index, file) { + if (file instanceof Blob) { + upload(file); + } + }); + }); + + // clipboard + if (window.location.href.indexOf('download') > -1 ) { + + + (function() { + var copylinkbtn = document.getElementById('copy-link-btn'), + copylink = document.getElementById('copy-link-wrapper'), + overlay = document.getElementById('overlay'); + + var url = 'http://url'; + copylinkbtn.addEventListener('click', function() { + + var error = document.getElementsByClassName('error'); + + while (error[0]) { + error[0].parentNode.removeChild(error[0]); + } + + document.body.className += ' active'; + + copylink.children[1].value = url; + copylink.children[1].focus(); + copylink.children[1].select(); + }, false); + + overlay.addEventListener('click', function() { + document.body.className = ''; + }, false); + + copylink.children[1].addEventListener('keydown', function(e) { + + var error = document.getElementsByClassName('error'); + + while (error[0]) { + error[0].parentNode.removeChild(error[0]); + } + + setTimeout(function() { + + if ((e.metaKey || e.ctrlKey) && e.keyCode === 67 && isTextSelected(copylink.children[2])) { + document.body.className = ''; + } else if ((e.metaKey || e.ctrlKey) && e.keyCode === 67 && isTextSelected(copylink.children[2]) === false) { + var error = document.createElement('span'); + error.className = 'error'; + var errortext = document.createTextNode('The link was not copied, make sure the entire text is selected.'); + + error.appendChild(errortext); + copylink.appendChild(error); + } + }, 100); + + function isTextSelected(input) { + if (typeof input.selectionStart === 'number') { + return input.selectionStart === 0 && input.selectionEnd === input.value.length; + } else if (typeof document.selection !== 'undefined') { + input.focus(); + return document.selection.createRange().text === input.value; + } + } + }, false); + })(); + } + +})();