218 lines
6.8 KiB
JavaScript
218 lines
6.8 KiB
JavaScript
const storage = chrome.storage.local;
|
|
var settings = null;
|
|
$("footer").remove();
|
|
|
|
function ibon_assign_ticket_number(ticket_number) {
|
|
let $main_table = $("div > table.table[id] > tbody");
|
|
if ($main_table.length > 0) {
|
|
//console.log("found main table");
|
|
let $ticket_tr = $main_table.find("tr");
|
|
if ($ticket_tr.length) {
|
|
let $ticket_options = $main_table.find("select:first option");
|
|
if ($ticket_options.length) {
|
|
let is_ticket_number_assign = false;
|
|
if (ticket_number > 0) {
|
|
console.log("target ticket_number:" + ticket_number);
|
|
$ticket_options.each(function() {
|
|
if ($(this).val() == ticket_number) {
|
|
$(this).prop('selected', true);
|
|
$(this).trigger("change");
|
|
is_ticket_number_assign = true;
|
|
return false;
|
|
}
|
|
});
|
|
}
|
|
//console.log("is_ticket_number_assign:"+is_ticket_number_assign);
|
|
if (!is_ticket_number_assign) {
|
|
$ticket_options.last().prop('selected', true);
|
|
$ticket_options.trigger("change");
|
|
is_ticket_number_assign = true;
|
|
}
|
|
if (is_ticket_number_assign) {
|
|
let select_tag = document.querySelector("div > table.table[id] > tbody select");
|
|
if(select_tag) {
|
|
//console.log("trigger select click");
|
|
select_tag.dispatchEvent(new Event('change'));
|
|
}
|
|
|
|
start_ibon_ocr();
|
|
}
|
|
} else {
|
|
//console.log("target option empty");
|
|
}
|
|
} else {
|
|
setTimeout(function() {
|
|
ibon_assign_ticket_number(ticket_number)
|
|
}, 200);
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
function ibon_assign_adjacent_seat(flag) {
|
|
//console.log("disable_adjacent_seat flag:"+flag);
|
|
if (flag) {
|
|
$('input[type=checkbox]').each(function() {
|
|
$(this).prop('checked', true);
|
|
});
|
|
}
|
|
}
|
|
|
|
function ibon_focus_on_captcha() {
|
|
$("div.editor-box > div > input[type='text']").focus();
|
|
}
|
|
|
|
var myInterval = null;
|
|
|
|
function ibon_get_ocr_image() {
|
|
//console.log("get_ocr_image");
|
|
let image_data = "";
|
|
|
|
// PS: tixcraft have different domain to use the same content script.
|
|
const currentUrl = window.location.href;
|
|
const domain = currentUrl.split('/')[2];
|
|
|
|
let canvas = document.querySelector("div.editor-box > div > canvas");
|
|
if (canvas != null) {
|
|
let img_data = canvas.toDataURL();
|
|
if (img_data) {
|
|
image_data = img_data.split(",")[1];
|
|
//console.log(image_data);
|
|
}
|
|
}
|
|
return image_data;
|
|
}
|
|
|
|
chrome.runtime.onMessage.addListener((message) => {
|
|
//console.log('sent from background', message);
|
|
if(message.answer) {
|
|
ibon_set_ocr_answer(message.answer);
|
|
}
|
|
});
|
|
|
|
function ibon_set_ocr_answer(answer) {
|
|
console.log("answer:" + answer);
|
|
if (answer.length > 0) {
|
|
//$("div.editor-box > div > input[type='text']").val(answer);
|
|
|
|
let input_tag = document.querySelector("div.editor-box > div > input[type='text']");
|
|
if(input_tag) {
|
|
//console.log("click on captcha input.")
|
|
//input_tag.click();
|
|
//input_tag.value=answer;
|
|
//input_tag.dispatchEvent(new Event('change'));
|
|
if(input_tag.value != answer) {
|
|
console.log("set new answer as:" + answer);
|
|
ibon_set_ocr_answer_api(answer);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
async function ibon_set_ocr_answer_api(answer) {
|
|
let api_url = get_remote_url(settings);
|
|
if(api_url.indexOf("127.0.0.")>-1) {
|
|
let body = {
|
|
token: settings.token,
|
|
command: [
|
|
{type: 'sendkey', selector: "div.editor-box > div > input[type='text']", text: answer},
|
|
{type: 'click', selector: 'div#ticket-wrap a.btn.btn-primary[href]'}
|
|
]};
|
|
body = JSON.stringify(body);
|
|
|
|
let bundle = {
|
|
action: 'post',
|
|
data: {
|
|
'url': api_url + 'sendkey',
|
|
'post_data': body,
|
|
}
|
|
};
|
|
|
|
let bundle_string = JSON.stringify(bundle);
|
|
const return_answer = await chrome.runtime.sendMessage(bundle);
|
|
//console.log(return_answer);
|
|
}
|
|
}
|
|
|
|
async function ibon_get_ocr_answer(api_url, image_data) {
|
|
let bundle = {
|
|
action: 'ocr',
|
|
data: {
|
|
'url': api_url + 'ocr',
|
|
'image_data': image_data,
|
|
}
|
|
};
|
|
|
|
let bundle_string = JSON.stringify(bundle);
|
|
const return_answer = await chrome.runtime.sendMessage(bundle);
|
|
//console.log(return_answer);
|
|
}
|
|
|
|
function ibon_orc_image_ready(api_url) {
|
|
let ret = false;
|
|
let image_data = ibon_get_ocr_image();
|
|
if (image_data.length > 0) {
|
|
ret = true;
|
|
if (myInterval) clearInterval(myInterval);
|
|
ibon_get_ocr_answer(api_url, image_data);
|
|
}
|
|
console.log("ibon_orc_image_ready:" + ret);
|
|
return ret;
|
|
}
|
|
|
|
storage.get('settings', function(items) {
|
|
if (items.settings) {
|
|
settings = items.settings;
|
|
} else {
|
|
console.log('no settings found');
|
|
}
|
|
});
|
|
|
|
|
|
storage.get('settings', function(items) {
|
|
if (items.settings) {
|
|
settings = items.settings;
|
|
}
|
|
});
|
|
|
|
function get_remote_url(settings) {
|
|
let remote_url_string = "";
|
|
if (settings) {
|
|
let remote_url_array = [];
|
|
if (settings.advanced.remote_url.length > 0) {
|
|
remote_url_array = JSON.parse('[' + settings.advanced.remote_url + ']');
|
|
}
|
|
if (remote_url_array.length) {
|
|
remote_url_string = remote_url_array[0];
|
|
}
|
|
}
|
|
return remote_url_string;
|
|
}
|
|
|
|
function start_ibon_ocr() {
|
|
// ocr
|
|
if (settings.ocr_captcha.enable) {
|
|
let remote_url_string = get_remote_url(settings);
|
|
if (!ibon_orc_image_ready(remote_url_string)) {
|
|
myInterval = setInterval(() => {
|
|
ibon_orc_image_ready(remote_url_string);
|
|
}, 100);
|
|
}
|
|
} else {
|
|
// no orc, just focus;
|
|
ibon_focus_on_captcha();
|
|
}
|
|
}
|
|
|
|
storage.get('status', function(items) {
|
|
if (items.status && items.status == 'ON') {
|
|
//console.log("ticket_number:"+ settings.ticket_number);
|
|
// ajax.
|
|
setTimeout(function() {
|
|
ibon_assign_ticket_number(settings.ticket_number);
|
|
ibon_assign_adjacent_seat(settings.advanced.disable_adjacent_seat);
|
|
}, 100);
|
|
} else {
|
|
console.log('no status found');
|
|
}
|
|
}); |