blob: ae017a7624b04d7d92d5e382db194a1aee8a7a69 [file] [log] [blame]
var USBLoaded = '<span class="goofy-label-en">LOADED</span>' +
'<span class="goofy-label-zh">已载入</span>';
var USBUnloaded = '<span class="goofy-label-en">UNLOADED</span>' +
'<span class="goofy-label-zh">未载入</span>';
var fxtAvailable = '<span class="goofy-label-en">OK</span>' +
'<span class="goofy-label-zh">已连接</span>';
var fxtUnavailable = '<span class="goofy-label-en">UNAVAILABLE</span>' +
'<span class="goofy-label-zh">未连接</span>';
var fxtDetecting = '<span class="goofy-label-en">DETECTING</span>' +
'<span class="goofy-label-zh">侦测中</span>';
var statIdle = '<span class="color_idle goofy-label-en">IDLE</span>' +
'<span class="color_idle goofy-label-zh">閒置中</span>';
var useFixture = true;
var useUSBDisk = true;
var useShopfloor = false;
var disableEnterKey = false;
var delayTimer;
window.onkeydown = function(event) {
if ((!disableEnterKey && event.keyCode == 13) || event.keyCode == 32) {
var testButton = document.getElementById("btn_run_test");
if (!testButton.disabled)
ButtonRunTestClick();
}
}
function StartShopfloorDownloadParams() {
clearInterval(delayTimer);
test.sendTestEvent('download_param_from_shopfloor', {});
}
function InitLayout(talkToFixture, talkToShopfloor,
inputSerialNumber, ignoreEnterKey) {
if (inputSerialNumber) {
var snInputBox = document.getElementById("serial_number");
snInputBox.disabled = false;
snInputBox.autofocus = true;
} else {
document.getElementById("test_sn_label").hidden = true;
document.getElementById("test_sn").hidden = true;
document.getElementById("menu_placeholder").style.height = "30%";
}
useFixture = talkToFixture;
if (!talkToFixture) {
document.getElementById("fixture_label").hidden = true;
document.getElementById("test_fixture").hidden = true;
document.getElementById("fixture_status").hidden = true;
}
if (talkToShopfloor) {
useShopfloor = true;
useUSBDisk = false;
document.getElementById("prompt_usb").hidden = true;
document.getElementById("usb_status_panel").hidden = true;
document.getElementById("prompt_ethernet").hidden = false;
// Wait 1 second for main thread to have time to update UI display.
delayTimer = setInterval(StartShopfloorDownloadParams, 1000);
} else {
useShopfloor = false;
useUSBDisk = true;
document.getElementById("prompt_usb").hidden = false;
document.getElementById("usb_status_panel").hidden = false;
document.getElementById("prompt_ethernet").hidden = true;
}
disableEnterKey = ignoreEnterKey;
}
function UpdateTestBottonStatus() {
var testButton = document.getElementById("btn_run_test");
var isSnReady = (document.getElementById("test_sn").hidden ||
document.getElementById("serial_number").value !== "");
var isUSBReady = (!useUSBDisk ||
document.getElementById('usb_status').innerHTML == USBLoaded)
var isFixtureReady = (!useFixture ||
document.getElementById('fixture_status').innerHTML == fxtAvailable);
testButton.disabled =
!(isSnReady &&
document.getElementById('serial_number').validity.valid &&
isUSBReady &&
isFixtureReady);
}
function RestartSnInputBox() {
var snInputBox = document.getElementById("serial_number");
snInputBox.focus();
snInputBox.value="";
UpdateTestBottonStatus();
}
function OnSnInputBoxClick() {
var snInputBox = document.getElementById("serial_number");
snInputBox.value="";
UpdateTestBottonStatus();
}
function OnShopfloorInit(pattern) {
document.getElementById("prompt_ethernet").hidden = true;
document.getElementById("container").hidden = false;
ConfigureSNInputbox(pattern);
if (useFixture)
test.sendTestEvent('sync_fixture', {});
else
UpdateTestBottonStatus();
}
function OnUSBInsertion() {
document.getElementById("usb_status").innerHTML = USBLoaded;
document.getElementById("test_param").className = "panel_good";
UpdateTestBottonStatus();
}
function OnUSBInit(pattern) {
document.getElementById("prompt_usb").hidden = true;
document.getElementById("container").hidden = false;
document.getElementById("usb_status").innerHTML = USBLoaded;
document.getElementById("test_param").className = "panel_good";
ConfigureSNInputbox(pattern);
if (useFixture)
test.sendTestEvent('sync_fixture', {});
else
UpdateTestBottonStatus();
}
function OnUSBRemoval() {
document.getElementById("usb_status").innerHTML = USBUnloaded;
document.getElementById("test_param").className = "panel_bad";
UpdateTestBottonStatus();
}
function ConfigureSNInputbox(pattern) {
var snInputBox = document.getElementById("serial_number");
if (!snInputBox.disabled) {
snInputBox.pattern = pattern;
snInputBox.focus();
}
}
function OnAddFixtureConnection() {
document.getElementById("fixture_status").innerHTML = fxtAvailable;
document.getElementById("test_fixture").className = "panel_good";
UpdateTestBottonStatus();
}
function OnRemoveFixtureConnection() {
document.getElementById("fixture_status").innerHTML = fxtUnavailable;
document.getElementById("test_fixture").className = "panel_bad";
UpdateTestBottonStatus();
}
function OnDetectFixtureConnection() {
document.getElementById("fixture_status").innerHTML = fxtDetecting;
document.getElementById("test_fixture").className = "panel_bad";
UpdateTestBottonStatus();
}
function ButtonRunTestClick() {
var testButton = document.getElementById("btn_run_test");
testButton.disabled = true;
test.sendTestEvent("run_test",
{"sn": document.getElementById("serial_number").value});
testButton.disabled = false;
UpdateTestBottonStatus();
}
function ButtonExitTestClick() {
test.sendTestEvent("exit_test", {});
}
function ResetUiData() {
document.getElementById("camera_image").hidden = true;
document.getElementById("camera_image").src = "";
document.getElementById("analyzed_image").hidden = true;
document.getElementById("analyzed_image").src = "";
UpdateTestStatus(statIdle);
UpdatePrograssBar("0%");
}
function ClearBuffer() {
buf = ""
}
function AddBuffer(value) {
buf += value
}
function UpdateImage(container_id) {
var img = document.getElementById(container_id);
img.src = "data:image/jpeg;base64," + buf;
img.hidden = false;
}
function UpdateTestStatus(msg) {
var statusText = document.getElementById("test_status");
statusText.innerHTML = msg;
}
function UpdatePrograssBar(progress) {
var pBar = document.getElementById("progress_bar");
pBar.style.width = progress;
}