Skip to content
Snippets Groups Projects
Verified Commit ba48b485 authored by Frank Sauerburger's avatar Frank Sauerburger
Browse files

Improve user interface

parent 04559be8
Branches 1-improve-user-interface
No related tags found
No related merge requests found
This diff is collapsed.
This diff is collapsed.
#dropzone {
border: 1px dotted #aaa;
margin: 3em 10em;
padding: 2em;
text-align: center;
font-style: italic;
color: #999;
}
#dropzone:hover {
border-color: #000;
}
#dropzone.drop-active {
background-color: #eee;
color: #000;
border-color: #000;
}
#dropzone.drop-uploading {
background-color: #efe;
}
This diff is collapsed.
$(function() {
$("#dropzone").on("dragenter", highlight);
$("#dropzone").on("dragover", highlight);
$("#dropzone").on("dragleave", unhighlight);
$("#dropzone").on("drop", handleDrop);
/*
;['dragenter', 'dragover'].forEach(eventName => {
dropArea.addEventListener(eventName, highlight, false)
})
;['dragleave', 'drop'].forEach(eventName => {
dropArea.addEventListener(eventName, unhighlight, false)
})
function highlight(e) {
dropArea.classList.add('highlight')
}
function unhighlight(e) {
dropArea.classList.remove('highlight')
}
*/
});
function highlight(e) {
e.preventDefault();
e.stopPropagation();
$("#dropzone").addClass("drop-active");
}
function unhighlight(e) {
e.preventDefault();
e.stopPropagation();
$("#dropzone").removeClass("drop-active");
}
function handleDrop(e) {
e.preventDefault();
e.stopPropagation();
([...e.originalEvent.dataTransfer.files]).forEach(uploadFile);
}
function uploadFile(file) {
$("#dropzone").addClass("drop-uploading");
let formData = new FormData();
formData.append('document', file)
fetch("/", {
method: 'POST',
body: formData
})
.then(function() { info("File " + file.name + " sent to printer."); })
.catch(function() { error("An error occured while sending " + file.name + " to printer.") })
}
function info(text) {
$("#dropzone").removeClass("drop-uploading");
$("#dropzone").removeClass("drop-active");
$("#messages").append('<div class="alert alert-success">' + text + "</div>");
setTimeout(clear, 3000);
}
function error(text) {
$("#dropzone").removeClass("drop-uploading");
$("#dropzone").removeClass("drop-active");
$("#messages").append('<div class="alert alert-danger">' + text + "</div>");
setTimeout(clear, 3000);
}
function clear() {
$("#messages").empty();
}
<!doctype html>
<html>
Hello
<ul>
{% for printer in printers %}
<li>{{ printer }}</li>
{% endfor %}
</ul>
<form action="/" method="post" enctype="multipart/form-data">
<input type="file" name="document" />
<input type="submit" value="print" />
</form>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="Frank Sauerburger">
<title>Web2Print</title>
<link rel="stylesheet" href="/assets/bootstrap.min.css" />
<link rel="stylesheet" href="/assets/custom.css" />
<script src="/assets/jquery-3.4.1.min.js"></script>
<script src="/assets/upload.js"></script>
</head>
<body>
<header class="navbar navbar-expand navbar-dark bg-dark">
<nav class="container">
<div class="navbar-brand">Web2Print</div>
<nav>
</header>
<main class="container pt-3">
{% if not printers %}
<div class="alert alert-danger">
Cannot find any printer!
</div>
{% else %}
<div class="form-group row">
<label class="col-form-label col-md-2" htmlFor="printer">Printer</label>
<select id="printer" class="form-control col-md-10">
{% for printer in printers %}
<option value="{{ printer }}">{{ printer }}</option>
{% endfor %}
</select>
</div>
<div id="dropzone">
Drop PDF files here.
<input type="file" id="document" class="d-none" />
</div>
{% endif %}
<div id="messages"></div>
</main>
</body>
</html>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment