335 lines
9.3 KiB
JavaScript
335 lines
9.3 KiB
JavaScript
//var url = "http://172.16.198.221:3000/api/";
|
|
var url = "https://salix.verdnatura.es/api/";
|
|
var urlweb = "https://verdnatura.es/";
|
|
var idArticulo = "";
|
|
var minCroppedWidth = 320;
|
|
var minCroppedHeight = 160;
|
|
var maxCroppedWidth = 4032;
|
|
var maxCroppedHeight = 2688;
|
|
var ratio = 1;
|
|
var maxAspectRatio = 1.5;
|
|
var image;
|
|
|
|
var cropper;
|
|
|
|
|
|
|
|
$(document).ready(function () {
|
|
|
|
|
|
FastClick.attach(document.body);
|
|
//setTimeout(scanBarcode, 1000);
|
|
image = document.querySelector('#photo');
|
|
maxCroppedWidth = image.naturalWidth;
|
|
maxCroppedHeight = (maxCroppedWidth / 3) * 2;
|
|
minCroppedWidth = maxCroppedWidth / 3;
|
|
minCroppedHeight = maxCroppedHeight / 3;
|
|
|
|
$("#btn1").on("click", function () {
|
|
ratio = 1;
|
|
$(".menubtn").children().removeClass("selected");
|
|
$(this).addClass("selected");
|
|
maxCroppedWidth = image.naturalWidth;
|
|
maxCroppedHeight = (maxCroppedWidth / 3) * 2;
|
|
|
|
});
|
|
$("#btn2").on("click", function () {
|
|
ratio = 2;
|
|
$(".menubtn").children().removeClass("selected");
|
|
$(this).addClass("selected");
|
|
maxCroppedWidth = image.naturalWidth;
|
|
maxCroppedHeight = (maxCroppedWidth / 16) * 9;
|
|
|
|
|
|
});
|
|
$("#btn3").on("click", function () {
|
|
ratio = 3;
|
|
$(".menubtn").children().removeClass("selected");
|
|
$(this).addClass("selected");
|
|
maxCroppedWidth = image.naturalWidth;
|
|
maxCroppedHeight = (maxCroppedWidth / 1) * 1;
|
|
|
|
});
|
|
|
|
$(".btnback").on("click", function () {
|
|
window.location = "main.html";
|
|
});
|
|
|
|
$(".btnsave").on("click", savePhoto);
|
|
|
|
|
|
$(".btnbarcode").on("click", function () {
|
|
$(".loading").fadeIn(200);
|
|
scanBarcode();
|
|
});
|
|
$("#btntakepicture").on("click", setManualMode);
|
|
|
|
$(".btnlogout").on("click", function () {
|
|
localStorage.removeItem("user");
|
|
localStorage.removeItem("password");
|
|
window.location = "index.html";
|
|
});
|
|
|
|
$(".btnsalix").on("click", function () {
|
|
var target = "_system";
|
|
var options = "location=no";
|
|
var url = "https://salix.verdnatura.es";
|
|
var ref = cordova.InAppBrowser.open(url, target, options);
|
|
});
|
|
|
|
$("#txtarticle").on("keypress", function(event){
|
|
if (event.keyCode === 13) {
|
|
setManualMode();
|
|
event.preventDefault();
|
|
}
|
|
});
|
|
|
|
});
|
|
|
|
function setManualMode() {
|
|
idArticulo = $("#txtarticle").val();
|
|
|
|
if (idArticulo.trim().length > 0) {
|
|
navigator.notification.confirm(
|
|
'Article: ' + idArticulo, // message
|
|
onConfirm, // callback to invoke with index of button pressed
|
|
'Verdnatura says:', // title
|
|
['Hacer foto', 'Biblioteca', 'Cerrar'] // buttonLabels
|
|
);
|
|
} else {
|
|
navigator.notification.alert("Insert manual id or scan article", null, "Verdnatura says:", "¡ups!");
|
|
}
|
|
|
|
}
|
|
function savePhoto() {
|
|
|
|
navigator.notification.confirm(
|
|
'Estas seguro de actualizar la foto de: ' + idArticulo, // message
|
|
confirmSave, // callback to invoke with index of button pressed
|
|
'Verdnatura says:', // title
|
|
['Guardar', 'Cancelar'] // buttonLabels
|
|
);
|
|
|
|
// confirmSave(1);
|
|
|
|
}
|
|
function confirmSave(buttonIndex) {
|
|
if (buttonIndex == 1) {
|
|
$(".loading").fadeIn(200);
|
|
var img = dataURItoBlob(cropper.getCroppedCanvas().toDataURL('image/png'));
|
|
|
|
|
|
var data = new FormData();
|
|
|
|
data.append("srv", "json:image/upload");
|
|
|
|
data.append("schema", "catalog");
|
|
|
|
data.append("name", "" + idArticulo + "");
|
|
|
|
data.append("token", localStorage.getItem("token"));
|
|
|
|
data.append("user", localStorage.getItem("user"));
|
|
|
|
data.append("password", localStorage.getItem("password"));
|
|
|
|
data.append("updateMatching", true);
|
|
|
|
data.append("image", img);
|
|
|
|
|
|
const xhr = new XMLHttpRequest();
|
|
xhr.open("POST", urlweb, true);
|
|
xhr.send(data);
|
|
xhr.onload = function () {
|
|
var response = JSON.parse(xhr.response);
|
|
if (response.data == true) {
|
|
navigator.notification.alert("Carga completa!", function () {
|
|
window.location = "main.html";
|
|
}, "Verdnatura dice:", "¡Buen trabajo!");
|
|
} else {
|
|
navigator.notification.alert("Error al cargar la foto", null, "Verdnatura dice:", "¡ooohh!");
|
|
$(".loading").fadeOut(500);
|
|
}
|
|
|
|
|
|
};
|
|
|
|
xhr.onerror = function () {
|
|
navigator.notification.alert("Error al cargar la foto", null, "Verdnatura dice:", "¡ooohh!");
|
|
$(".loading").fadeOut(500);
|
|
};
|
|
|
|
}
|
|
}
|
|
function dataURItoBlob(dataURI) {
|
|
var binary = atob(dataURI.split(',')[1]);
|
|
var array = [];
|
|
for (var i = 0; i < binary.length; i++) {
|
|
array.push(binary.charCodeAt(i));
|
|
}
|
|
return new Blob([new Uint8Array(array)], {type: 'image/png'});
|
|
}
|
|
function scanBarcode() {
|
|
|
|
cordova.plugins.barcodeScanner.scan(
|
|
function (result) {
|
|
idArticulo = result.text;
|
|
|
|
navigator.notification.confirm(
|
|
'Article: ' + result.text, // message
|
|
onConfirm, // callback to invoke with index of button pressed
|
|
'Verdnatura says:', // title
|
|
['Hacer foto', 'Bibloteca', 'Cerrar'] // buttonLabels
|
|
);
|
|
|
|
},
|
|
function (error) {
|
|
navigator.notification.alert(
|
|
"Could not scan: " + error, // message
|
|
onError, // callback
|
|
'Game Over', // title
|
|
'Ok' // buttonName
|
|
);
|
|
|
|
|
|
}
|
|
);
|
|
}
|
|
function onConfirm(buttonIndex) {
|
|
$(".menu").fadeOut(200);
|
|
switch (buttonIndex) {
|
|
case 1:
|
|
showCamera();
|
|
break;
|
|
case 2:
|
|
showLibrary();
|
|
break;
|
|
case 3:
|
|
window.location = "main.html";
|
|
break;
|
|
default:
|
|
window.location = "main.html";
|
|
}
|
|
}
|
|
function onError() {
|
|
window.location = "main.html";
|
|
}
|
|
function showCamera() {
|
|
var srcType = Camera.PictureSourceType.CAMERA;
|
|
|
|
var options = {
|
|
saveToPhotoAlbum: true,
|
|
quality: 100,
|
|
destinationType: Camera.DestinationType.FILE_URI,
|
|
sourceType: srcType,
|
|
encodingType: Camera.EncodingType.JPEG,
|
|
mediaType: Camera.MediaType.PICTURE,
|
|
allowEdit: false,
|
|
correctOrientation: true
|
|
};
|
|
|
|
|
|
|
|
navigator.camera.getPicture(cameraSuccess, cameraError, options);
|
|
|
|
}
|
|
function showLibrary() {
|
|
var srcType = Camera.PictureSourceType.PHOTOLIBRARY;
|
|
|
|
var options = {
|
|
saveToPhotoAlbum: false,
|
|
quality: 100,
|
|
destinationType: Camera.DestinationType.FILE_URI,
|
|
sourceType: srcType,
|
|
encodingType: Camera.EncodingType.JPEG,
|
|
mediaType: Camera.MediaType.PICTURE,
|
|
allowEdit: false,
|
|
correctOrientation: true
|
|
};
|
|
navigator.camera.getPicture(cameraSuccess, cameraError, options);
|
|
|
|
}
|
|
function cameraSuccess(imageData) {
|
|
$(".loading").fadeOut(200);
|
|
console.log("Camera success.");
|
|
$("#photo").attr("src", imageData);
|
|
|
|
|
|
setCrop();
|
|
}
|
|
function setCrop() {
|
|
|
|
cropper = new Cropper(image, {
|
|
viewMode: 1,
|
|
|
|
data: {
|
|
width: (minCroppedWidth + maxCroppedWidth) / 2,
|
|
height: (minCroppedHeight + maxCroppedHeight) / 2
|
|
},
|
|
|
|
crop: function (event) {
|
|
var width = event.detail.width;
|
|
var height = event.detail.height;
|
|
|
|
if (
|
|
width < minCroppedWidth
|
|
|| height < minCroppedHeight
|
|
|| width > maxCroppedWidth
|
|
|| height > maxCroppedHeight
|
|
) {
|
|
cropper.setData({
|
|
width: Math.max(minCroppedWidth, Math.min(maxCroppedWidth, width)),
|
|
height: Math.max(minCroppedHeight, Math.min(maxCroppedHeight, height))
|
|
});
|
|
}
|
|
|
|
|
|
},
|
|
cropmove: function () {
|
|
var cropper = this.cropper;
|
|
var cropBoxData = cropper.getCropBoxData();
|
|
var h = 0;
|
|
switch (ratio) {
|
|
case 1:
|
|
h = (cropBoxData.width / 3) * 2;
|
|
break;
|
|
case 2:
|
|
h = (cropBoxData.width / 16) * 9;
|
|
break;
|
|
case 3:
|
|
h = (cropBoxData.width / 1) * 1;
|
|
break;
|
|
default:
|
|
}
|
|
cropper.setCropBoxData({
|
|
height: h
|
|
});
|
|
|
|
|
|
|
|
}
|
|
});
|
|
}
|
|
function cameraError(message) {
|
|
navigator.notification.alert(
|
|
"Could not take a picture: " + message, // message
|
|
onError, // callback
|
|
'Game Over', // title
|
|
'Ok' // buttonName
|
|
);
|
|
}
|
|
function setOptions(srcType) {
|
|
|
|
var options = {
|
|
quality: 80,
|
|
destinationType: Camera.DestinationType.FILE_URI,
|
|
sourceType: srcType,
|
|
encodingType: Camera.EncodingType.JPEG,
|
|
mediaType: Camera.MediaType.PICTURE,
|
|
allowEdit: false,
|
|
correctOrientation: true,
|
|
saveToPhotoAlbum: true
|
|
};
|
|
return options;
|
|
} |