// ==UserScript==
// @name IDBI_MINI_WM
// @namespace http://tampermonkey.net/
// @version 2025-04-11
// @description IDBI 短流水需要配合监控使用
// @author WebMonitor
// @match https://inet.idbibank.co.in/ret/Finacle;jsessionid*
// @icon https://www.google.com/s2/favicons?sz=64&domain=idbibank.co.in
// @grant GM_xmlhttpRequest
// @grant GM_addElement
// @grant GM_setValue
// @grant GM_getValue
// @run-at document-idle
// @license MIT
// ==/UserScript==
(function () {
'use strict';
var titleSpan = null;
var goButton = null;
var titleSpanIntervalID = null;
var ccButton = null;
var startFlag = false;
addElement();
setInterval(function () {
let closeIcon = document.getElementById("closeIcon");
var _startFlag = GM_getValue("cc_start_flag");
if (_startFlag) {
let mini = document.getElementById("PageConfigurationMaster_ROAUUIW__1:VIEW_MINI_STATEMENT[0]8");
let blockLength = document.querySelectorAll("div[class='blockUI']").length;
if (null == closeIcon && mini && blockLength == 0) {
mini.click();
setTimeout(function () {
closeIcon = document.getElementById("closeIcon");
if (closeIcon) {
closeIcon.click();
}
}, 3000);
} else {
if (closeIcon) {
closeIcon.click();
}
}
}
}, 8000);
function addElement() {
GM_addElement(document.querySelector("body"), 'div', {
id: 'monkey_wrapper', style: 'position: fixed; top: 10px; left: 10px; z-index: 9999; padding: 10px; background: #fff; border: 1px solid #ccc; border-radius: 5px; box-shadow: 0 0 10px rgba(0,0,0,0.5);'
});
GM_addElement(document.querySelector("#monkey_wrapper"), 'input', {
id: 'mk_webName', type: "text", style: "display: block; width: 200px; height: 30px; margin-bottom: 5px; border-radius: 5px; border: 1px solid #ccc; padding: 5px;", placeholder: "请输入监控名"
});
document.querySelector("#mk_webName").value = GM_getValue("ss_mk_webName", "");
GM_addElement(document.querySelector("#monkey_wrapper"), 'input', {
id: 'mk_userName', type: "text", style: "display: block; width: 200px; height: 30px; margin-bottom: 5px; border-radius: 5px; border: 1px solid #ccc; padding: 5px;", placeholder: "请输入用户名"
});
document.querySelector("#mk_userName").value = GM_getValue("ss_mk_userName", "");
GM_addElement(document.querySelector("#monkey_wrapper"), 'input', {
id: 'cc_ww_code', type: "text", style: "display: none; width: 200px; height: 30px; margin-bottom: 5px; border-radius: 5px; border: 1px solid #ccc; padding: 5px;", placeholder: "请输入渠道名称"
});
GM_addElement(document.querySelector("#monkey_wrapper"), 'input', {
id: 'cc_ww_btn', type: "button", class: "styled", value: "start",
style: "display: block; width: 200px; height: 30px; margin-bottom: 5px; border-radius: 5px; border: 1px solid #ccc; padding: 5px;"
});
GM_addElement(document.querySelector("#monkey_wrapper"), 'input', {
id: 'mk_balance', type: "text", style: "display: block; width: 200px; height: 30px; margin-bottom: 5px; border-radius: 5px; border: 1px solid #ccc; padding: 5px;", placeholder: "", readonly: true
});
var button = document.getElementById('cc_ww_btn');
button.onclick = function () {
var webName = document.getElementById('mk_webName').value;
var userName = document.getElementById('mk_userName').value;
var ccBtn = document.getElementById('cc_ww_btn');
if (!webName || !userName) {
alert('请输入监控名和登录账号名');
} else {
GM_setValue("ss_mk_webName", webName);
GM_setValue("ss_mk_userName", userName);
if ("Close" == ccBtn.value) {
ccBtn.value = "Start";
ccBtn.style.backgroundColor = "white";
startFlag = false;
GM_setValue("cc_start_flag", startFlag);
} else {
ccBtn.value = "Close";
ccBtn.style.backgroundColor = "red";
startFlag = true;
GM_setValue("cc_start_flag", startFlag);
}
}
};
}
const originOpen = XMLHttpRequest.prototype.open;
const parser = new DOMParser();
XMLHttpRequest.prototype.open = function (_, url) {
if (url.startsWith("FinacleRiaRequest;jsessionid")) {
this.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
const doc = parser.parseFromString(this.responseText, "text/html");
var rows = doc.querySelectorAll("table[id*='HWListTable'] tbody.listrowwrapper");
if (rows && rows.length > 0) {
var dataArray = parseData(rows);
console.log('parseData', dataArray);
if (dataArray.length > 0) {
commitData(dataArray);
}
}
var balance = doc.querySelector("span[id='PageConfigurationMaster_ROAUUIW__1:HREF_availableBalOutput']");
if (balance) {
document.querySelector("#mk_balance").value = balance.innerText;
}
}
});
}
originOpen.apply(this, arguments);
};
function parseData(rows) {
var list = [];
rows.forEach(row => {
var tds = row.querySelectorAll("tr td");
var amount = tds[4].innerText.trim().replace(".", "").replace(",", "");
var type = tds[3].innerText.trim();
var typeParse = type.includes("CR") ? 0 : 1;
var remarks = tds[1].innerText.trim();
const match = remarks.match(/\d{12}/);
var transactionCode;
if (match) {
transactionCode = match[0];
}
var messageIdentifyCode;
var split = remarks.split("/");
messageIdentifyCode = split[split.length - 1];
var webName = document.querySelector("#mk_webName").value;
var userName = document.querySelector("#mk_userName").value;
list.push({
key: `${webName}_${userName}_`,
value: {
amount: amount,
balance: 0,
detail: remarks,
transactionCode: transactionCode,
transactionType: typeParse,
messageIdentifyCode: messageIdentifyCode
}
});
});
return list;
}
function commitData(dataList) {
console.log('commitData', dataList);
if (dataList) {
dataList.forEach(data => {
GM_xmlhttpRequest({
method: "POST",
url: "http://localhost:34567",
headers: {
"Content-Type": "application/json",
},
data: JSON.stringify(data),
onload: function (response) {
console.log(response.responseText);
}
});
});
}
}
})();