-
Notifications
You must be signed in to change notification settings - Fork 24
/
Copy pathpage.js
132 lines (121 loc) · 3.84 KB
/
page.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
var image;
function fileSelected(e) {
const file = e.files[0];
if (!file) {
return;
}
if (!file.type.startsWith('image/')) {
alert('Please select a image.');
return;
}
const img = document.createElement('img-tag');
img.file = file
image = img;
const reader = new FileReader();
reader.onload = function(e) {
var elem = document.getElementById("upload-pic");
elem.src = e.target.result;
elem.hidden = false;
var origin_img = document.getElementById("origin-pic");
origin_img.src = elem.src;
var button = document.getElementById("run");
button.removeAttribute("disabled");
setRes("");
}
reader.readAsDataURL(file);
}
function setButton() {
var button = document.getElementById("run");
button.innerText = "Submit";
button.disabled = false;
}
function setLoading(loading) {
var button = document.getElementById("run");
if (loading) {
button.disabled = true;
button.innerText = "Sending ...";
} else {
setButton();
}
}
function setRes(res) {
var elem = document.getElementById("result");
elem.innerHTML = res;
elem.hidden = false;
var row = document.getElementById("grayscale-rows");
row.hidden = true;
var elem = document.getElementById("infer-rows");
elem.hidden = false;
}
function setImageRes(data) {
if (data == "ImageTooLarge") {
alert("Image Too Large");
} else {
var row = document.getElementById("grayscale-rows");
row.hidden = false;
var elem = document.getElementById("infer-rows");
elem.hidden = true;
var img = document.getElementById("processed-pic");
img.src = "data:image/png;base64, " + data;
img.hidden = false;
var origin_img = document.getElementById("origin-pic");
origin_img.src = document.getElementById("upload-pic").src;
origin_img.hidden = false;
}
}
function getApi() {
var select = document.getElementById('run-api');
return select.options[select.selectedIndex].value;
}
function updateStat(api) {
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://23.100.38.125:9000/api/invokecount?api=' + api, true);
xhr.responseType = 'json';
xhr.onload = function() {
var status = xhr.status;
if (status === 200) {
var res = xhr.response;
document.getElementById('stat').hidden = false;
console.log(res);
let html = "";
for (const elem of res) {
items = elem.split("##");
key = items[0];
value = items[1];
html += "<tr><td>" + key + " </td><td>" + value + "</td></tr><br>";
}
document.getElementById('stat-text').innerHTML = html;
}
};
xhr.send();
}
function runWasm(e) {
const reader = new FileReader();
reader.onload = function(e) {
setLoading(true);
var req = new XMLHttpRequest();
req.open("POST", 'http://23.100.38.125:9000/api/' + getApi(), true);
req.setRequestHeader('api', getApi());
req.onload = function() {
setLoading(false);
if (req.status == 200) {
var header = req.getResponseHeader("Content-Type");
console.log(header);
if (header == "image/png") {
setImageRes(req.response);
} else {
setRes(req.response);
}
//updateStat(getApi());
} else {
setRes("API error with status: " + req.status);
}
};
const blob = new Blob([e.target.result], {
type: 'application/octet-stream'
});
req.send(blob);
};
console.log(image.file)
reader.readAsArrayBuffer(image.file);
}