Commit 3053a1a0 authored by Gabriel Monnerat's avatar Gabriel Monnerat

erp5_document_scanner: Improve user experience on prototype

parent a296e9b7
...@@ -62,9 +62,13 @@ ...@@ -62,9 +62,13 @@
cropper.destroy(); cropper.destroy();
} }
return RSVP.Queue() return RSVP.Queue()
.push(function (data) { .push(function () {
cropper = new Cropper( cropper = new Cropper(
gadget.querySelector('.photo'), {data: preferredCroppedCanvasData}); gadget.querySelector('.photo'),
{
data: preferredCroppedCanvasData
}
);
}); });
} }
...@@ -85,7 +89,7 @@ ...@@ -85,7 +89,7 @@
outputContext.putImageData(imageData, 0, 0); outputContext.putImageData(imageData, 0, 0);
} }
function grayscale(gadget, input, output) { function grayscale(input, output) {
var i, var i,
gray, gray,
outputContext, outputContext,
...@@ -113,14 +117,17 @@ ...@@ -113,14 +117,17 @@
cropper.destroy(); cropper.destroy();
} }
return RSVP.Queue() return RSVP.Queue()
.push(function (data) { .push(function () {
cropper = new Cropper( cropper = new Cropper(
output, {data: preferredCroppedCanvasData}); output,
{
data: preferredCroppedCanvasData
}
);
}); });
} }
function handleUserMedia(device_id, callback) { function handleUserMedia(root, device_id, callback) {
var stream; var stream;
function canceller() { function canceller() {
...@@ -132,14 +139,14 @@ ...@@ -132,14 +139,14 @@
} }
} }
function waitForStream(resolve, reject) { function waitForStream() {
new RSVP.Queue() new RSVP.Queue()
.push(function () { .push(function () {
return navigator.mediaDevices.getUserMedia({video: {deviceId: {exact: device_id}}}); return navigator.mediaDevices.getUserMedia({video: {deviceId: {exact: device_id}}});
}) })
.push(function (result) { .push(function (result) {
stream = result; stream = result;
return callback(stream); return callback(root, stream);
}) })
.push(undefined, function (error) { .push(undefined, function (error) {
if (!(error instanceof RSVP.CancellationError)) { if (!(error instanceof RSVP.CancellationError)) {
...@@ -151,7 +158,7 @@ ...@@ -151,7 +158,7 @@
return new RSVP.Promise(waitForStream, canceller); return new RSVP.Promise(waitForStream, canceller);
} }
function gotStream(mediaStream) { function gotStream(root, mediaStream) {
return RSVP.Queue() return RSVP.Queue()
.push(function () { .push(function () {
imageCapture = new window.ImageCapture(mediaStream.getVideoTracks()[0]); imageCapture = new window.ImageCapture(mediaStream.getVideoTracks()[0]);
...@@ -161,16 +168,19 @@ ...@@ -161,16 +168,19 @@
.push(function (photoCapabilities) { .push(function (photoCapabilities) {
imageWidth = photoCapabilities.imageWidth.max; imageWidth = photoCapabilities.imageWidth.max;
imageHeight = photoCapabilities.imageHeight.max; imageHeight = photoCapabilities.imageHeight.max;
video.play(); return video.play();
})
.push(function () {
root.querySelector(".camera-input").style.display = "";
}); });
} }
function startup(gadget, device_id) { function startup(root, device_id) {
video = gadget.querySelector(".video"); video = root.querySelector(".video");
canvas = gadget.querySelector(".canvas"); canvas = root.querySelector(".canvas");
photo = gadget.querySelector(".photo"); photo = root.querySelector(".photo");
photoInput = gadget.querySelector(".photoInput"); photoInput = root.querySelector(".photoInput");
return handleUserMedia(device_id, gotStream); return handleUserMedia(root, device_id, gotStream);
} }
function clearphoto() { function clearphoto() {
...@@ -191,7 +201,8 @@ ...@@ -191,7 +201,8 @@
root = element; root = element;
selector = element.querySelector("select"); selector = element.querySelector("select");
preferredCroppedCanvasData = preferredCroppedCanvasData || JSON.parse( preferredCroppedCanvasData = preferredCroppedCanvasData || JSON.parse(
options.preferred_cropped_canvas_data); options.preferred_cropped_canvas_data
);
// Clear photo input // Clear photo input
element.querySelector('.photoInput').value = ""; element.querySelector('.photoInput').value = "";
if (!selector.value && video) { if (!selector.value && video) {
...@@ -223,12 +234,8 @@ ...@@ -223,12 +234,8 @@
selector.appendChild(el); selector.appendChild(el);
} }
} }
if (len === 1 && selector.options.length === 2) { if (selector.options.length === 2) {
selector.options[1].selected = true; selector.options[selector.options.length - 1].selected = true;
}
})
.push(function () {
if (selector.value) {
return startup(root, selector.value); return startup(root, selector.value);
} }
}); });
...@@ -261,8 +268,8 @@ ...@@ -261,8 +268,8 @@
var gadget, canvasData; var gadget, canvasData;
if (evt.target.name === "grayscale") { if (evt.target.name === "grayscale") {
return this.getElement() return this.getElement()
.push(function (el) { .push(function () {
return grayscale(el, canvas, photo); return grayscale(canvas, photo);
}); });
} }
if (evt.target.className === "startbutton") { if (evt.target.className === "startbutton") {
...@@ -279,6 +286,7 @@ ...@@ -279,6 +286,7 @@
.push(function (el) { .push(function (el) {
el.querySelector(".camera-input").style.display = ""; el.querySelector(".camera-input").style.display = "";
el.querySelector(".camera-output").style.display = "none"; el.querySelector(".camera-output").style.display = "none";
cropper.destroy();
return startup(el, el.querySelector("select")); return startup(el, el.querySelector("select"));
}); });
} }
...@@ -310,6 +318,8 @@ ...@@ -310,6 +318,8 @@
photo.style.height = canvasData.height + "px"; photo.style.height = canvasData.height + "px";
photo.src = base64data; photo.src = base64data;
photoInput.value = realData; photoInput.value = realData;
gadget.querySelector(".camera-input").style.display = "none";
gadget.querySelector(".camera-output").style.display = "";
gadget.querySelector(".capture-button").style.display = "none"; gadget.querySelector(".capture-button").style.display = "none";
cropper.destroy(); cropper.destroy();
}); });
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment