@@ -106,6 +118,9 @@
+
diff --git a/app/www/static/css/index.css b/app/www/static/css/index.css
index f765575..6fd528b 100644
--- a/app/www/static/css/index.css
+++ b/app/www/static/css/index.css
@@ -217,6 +217,24 @@ button.focus{
#appIcon > div{
background: url(data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTkuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDYwIDYwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA2MCA2MDsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHdpZHRoPSIzMnB4IiBoZWlnaHQ9IjMycHgiPgo8Zz4KCTxwYXRoIGQ9Ik00NS41NjMsMjkuMTc0bC0yMi0xNWMtMC4zMDctMC4yMDgtMC43MDMtMC4yMzEtMS4wMzEtMC4wNThDMjIuMjA1LDE0LjI4OSwyMiwxNC42MjksMjIsMTV2MzAgICBjMCwwLjM3MSwwLjIwNSwwLjcxMSwwLjUzMywwLjg4NEMyMi42NzksNDUuOTYyLDIyLjg0LDQ2LDIzLDQ2YzAuMTk3LDAsMC4zOTQtMC4wNTksMC41NjMtMC4xNzRsMjItMTUgICBDNDUuODM2LDMwLjY0LDQ2LDMwLjMzMSw0NiwzMFM0NS44MzYsMjkuMzYsNDUuNTYzLDI5LjE3NHogTTI0LDQzLjEwN1YxNi44OTNMNDMuMjI1LDMwTDI0LDQzLjEwN3oiIGZpbGw9IiNGRkZGRkYiLz4KCTxwYXRoIGQ9Ik0zMCwwQzEzLjQ1OCwwLDAsMTMuNDU4LDAsMzBzMTMuNDU4LDMwLDMwLDMwczMwLTEzLjQ1OCwzMC0zMFM0Ni41NDIsMCwzMCwweiBNMzAsNThDMTQuNTYxLDU4LDIsNDUuNDM5LDIsMzAgICBTMTQuNTYxLDIsMzAsMnMyOCwxMi41NjEsMjgsMjhTNDUuNDM5LDU4LDMwLDU4eiIgZmlsbD0iI0ZGRkZGRiIvPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+Cjwvc3ZnPgo=) no-repeat;
}
+.cameraIcon{
+ background: url(data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTguMS4xLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDEwMCAxMDA7IiB4bWw6c3BhY2U9InByZXNlcnZlIiB3aWR0aD0iMzJweCIgaGVpZ2h0PSIzMnB4Ij4KPGc+Cgk8Zz4KCQk8cGF0aCBkPSJNNTAsNDBjLTguMjg1LDAtMTUsNi43MTgtMTUsMTVjMCw4LjI4NSw2LjcxNSwxNSwxNSwxNWM4LjI4MywwLDE1LTYuNzE1LDE1LTE1ICAgIEM2NSw0Ni43MTgsNTguMjgzLDQwLDUwLDQweiBNOTAsMjVINzhjLTEuNjUsMC0zLjQyOC0xLjI4LTMuOTQ5LTIuODQ2bC0zLjEwMi05LjMwOUM3MC40MjYsMTEuMjgsNjguNjUsMTAsNjcsMTBIMzMgICAgYy0xLjY1LDAtMy40MjgsMS4yOC0zLjk0OSwyLjg0NmwtMy4xMDIsOS4zMDlDMjUuNDI2LDIzLjcyLDIzLjY1LDI1LDIyLDI1SDEwQzQuNSwyNSwwLDI5LjUsMCwzNXY0NWMwLDUuNSw0LjUsMTAsMTAsMTBoODAgICAgYzUuNSwwLDEwLTQuNSwxMC0xMFYzNUMxMDAsMjkuNSw5NS41LDI1LDkwLDI1eiBNNTAsODBjLTEzLjgwNywwLTI1LTExLjE5My0yNS0yNWMwLTEzLjgwNiwxMS4xOTMtMjUsMjUtMjUgICAgYzEzLjgwNSwwLDI1LDExLjE5NCwyNSwyNUM3NSw2OC44MDcsNjMuODA1LDgwLDUwLDgweiBNODYuNSw0MS45OTNjLTEuOTMyLDAtMy41LTEuNTY2LTMuNS0zLjVjMC0xLjkzMiwxLjU2OC0zLjUsMy41LTMuNSAgICBjMS45MzQsMCwzLjUsMS41NjgsMy41LDMuNUM5MCw0MC40MjcsODguNDMzLDQxLjk5Myw4Ni41LDQxLjk5M3oiIGZpbGw9IiNGRkZGRkYiLz4KCTwvZz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8L3N2Zz4K) no-repeat;
+}
+
+#cameraIcon {
+ display: none;
+}
+
+body.mobile #cameraIcon{
+ display: block;
+}
+
+button i {
+ display: block;
+ width: 33px;
+ height: 33px;
+ margin: 10px auto;
+}
footer{
width: 100%;
@@ -234,6 +252,10 @@ footer .icon {
border-right: 1px solid rgba(255, 255, 255, 0.3);
}
+body.mobile footer .icon{
+ width: 25%;
+}
+
footer .icon:last-child{
border-right: 0;
}
@@ -309,4 +331,14 @@ footer > div.selected{
}
#password.active,#ip.active,#wifi.active{
display: block;
+}
+
+.indicator {
+ color: red;
+ width: 0;
+ height: 0;
+ border-left: 5px solid transparent;
+ border-right: 5px solid transparent;
+
+ border-bottom: 5px solid black;
}
\ No newline at end of file
diff --git a/app/www/static/js/intval.core.js b/app/www/static/js/intval.core.js
index b542bf2..fe3084f 100644
--- a/app/www/static/js/intval.core.js
+++ b/app/www/static/js/intval.core.js
@@ -217,6 +217,11 @@ var mscriptPage = function () {
document.getElementById('mscriptIcon').classList.add('selected');
editor.cm.refresh();
};
+var cameraPage = function () {
+ unsetPages();
+ document.getElementById('camera').classList.add('selected');
+ document.getElementById('cameraIcon').classList.add('selected');
+};
var spinnerInit = function () {
const spinnerOpts = {
lines: 13 // The number of lines to draw
diff --git a/app/www/static/js/intval.mobile.js b/app/www/static/js/intval.mobile.js
index c8d605c..1b99792 100644
--- a/app/www/static/js/intval.mobile.js
+++ b/app/www/static/js/intval.mobile.js
@@ -128,6 +128,7 @@ mobile.init = function () {
}
spinnerInit();
mobile.ble.scan();
+ mobile.cameraValues()
};
@@ -408,6 +409,76 @@ mobile.setWifiSuccess = function () {
setTimeout(mobile.getWifi, 100);
};
+mobile.getCamera = function () {
+ var opts = {
+ quality: 30,
+ sourceType: Camera.PictureSourceType.CAMERA,
+ destinationType: Camera.DestinationType.FILE_URI
+ };
+ navigator.camera.getPicture(mobile.cameraSuccess, mobile.cameraError, opts);
+};
+mobile.cameraSuccess = function (result) {
+ var thisResult = JSON.parse(result);
+ var metadata = JSON.parse(thisResult.json_metadata);
+
+ mobile.cameraExposure(fstop, metadata);
+}
+mobile.cameraError = function (err) {
+ console.error(err);
+ alert(err);
+};
+
+mobile.cameraExposure = function (exif) {
+ var fstop = document.querySelector('.fstop').value || 5.6;
+ var iso = document.querySelector('.iso').value || 100;
+ /*
+ ApertureValue: 1.6959938131099002
+ BrightnessValue: -0.3966568568788107
+ ColorSpace: 65535
+ DateTimeDigitized: "2018:01:08 23:06:13"
+ DateTimeOriginal: "2018:01:08 23:06:13"
+ ExposureBiasValue: 0
+ ExposureMode: 0
+ ExposureProgram: 2
+ ExposureTime: 0.2
+ FNumber: 1.8
+ Flash: 24
+ FocalLenIn35mmFilm: 28
+ FocalLength: 3.99
+ ISOSpeedRatings: [100] (1)
+ LensMake: "Apple"
+ LensModel: "iPhone 8 back camera 3.99mm f/1.8"
+ LensSpecification: [3.99, 3.99, 1.8, 1.8] (4)
+ MeteringMode: 5
+ PixelXDimension: 4032
+ PixelYDimension: 3024
+ SceneType: 1
+ SensingMethod: 2
+ ShutterSpeedValue: 2.38401125849867
+ SubjectArea: [2015, 1511, 2217, 1330] (4)
+ SubsecTimeDigitized: "567"
+ SubsecTimeOriginal: "567"
+ WhiteBalance: 0
+ */
+ exif.AperatureValue || exif.FNumber
+ exif.ExposureTime
+ exif.ISOSpeedRatings
+};
+mobile.cameraValues = function () {
+ document.querySelectorAll('.iso').forEach(input => {
+ input.onchange = function () {
+ var val = this.value;
+ document.querySelectorAll('.iso').forEach(e => {
+ e.value = val;
+ })
+ }
+ })
+}
+
+/**
+ * Mobile helper functions
+ */
+
function bytesToString (buffer) {
return String.fromCharCode.apply(null, new Uint8Array(buffer));
};