Greasy Fork

Greasy Fork is available in English.

EDM Helper

EDM 电子记录系统辅助插件

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

function isEditable() {
     // 判断是否处于可编辑状态
    if (document.getElementsByClassName("edm-record-page").length>0) {
        return false
    }
    else {
        return true
    }
}

function searchDeviceConnection(searchString) {
    // 根据选择的文本搜索“仪器连接”表格,并以字典列表的格式返回
    if (!isEditable()) {
        // 定位仪器连接表格
        var deviceConnection = document.evaluate("//div[@class='mbfrom' and contains(., '仪器连接')]//table", document, null, XPathResult.ANY_TYPE).iterateNext();
        
        //解析表头
        var th = deviceConnection.tHead.rows[0].cells
        var columns = {}
        for (let i = 0; i < th.length; i++) {
            columns[th[i].innerHTML] = i
        }

        //按内容搜索
        var tr = deviceConnection.rows
        
        // 字典储存一行查找到的结果,多个字典存于列表
        var searchedRows = []
        for (var s=0; s<searchString.length; s++) {
            for (i = 0; i < tr.length; i++) {
                if (tr[i]) {
                    if (tr[i].innerHTML.indexOf(searchString[s]) > -1) {
                        row = {"名称": tr[i].cells[columns["名称"]].innerText,
                            "实际值":tr[i].cells[columns["实际值"]].innerText,
                            "设备编号":tr[i].cells[columns["设备编号"]].innerText,
                            "测试时间": tr[i].cells[columns["测试时间"]].innerText
                        }
                        searchedRows.push(row)
                    }
                } 
            }
        }
    }
    // else {
    // }

    return searchedRows
}

function displayResults(x, y, content){
    // 在鼠标位置显示查找到的内容

    let hint = document.createElement("div")
    hint.innerHTML = content
    hint.style = `
        position: fixed;
        left: ${x-10}px;
        top: ${y-10}px;
        position: fixed;
        background-color: AliceBlue;
        border: solid;
        font-size: 16px;
        padding: 5px;

        `
    document.body.append(hint)
    // 鼠标移出后删除悬浮框
    hint.onmouseleave=function(){
        document.body.removeChild(hint)
    }
}

function getMousePos(event) {
    // 获取鼠标坐标
    var x, y; 
    var e = event || window.event; 
    x = e.clientX; 
    y = e.clientY; 
    return { x: x, y: y } 
}

function main() {
    // 根据选中的文本,查找“仪器连接”表格中的数据,并悬浮显示结果,使记录自查或审核更方便
    window.addEventListener("mouseup", textSelected)
}

function textSelected(event) {
    //文本选中事件触发时,根据选中内容查找“仪器连接”表格
    var text = window.getSelection().toString();

    let mouse = getMousePos(event)

    var re = /\d+.\d+\s?g/g; //提取选中文本中的称量数据
    // var extracted = re.exec(text)
    var extracted = text.match(re)
    // if (extracted) {
    //     extracted = extracted.toString();
    // }

    for (var i=0; i < extracted.length; i++) {
        extracted[i] = extracted[i].replace(/\s+/g, "")  //去掉空格
    }

    if (extracted!=null) {
        results = searchDeviceConnection(extracted)
        // 将字典格式的搜索结果转换为可读的文本
        content = ""
        for (let i = 0; i < results.length; i++ ) {
            for (key in results[i]){
                content = content + key + ": " + "<b>" + results[i][key] + "</b>" + "&emsp;&emsp;"
            }
            content = content + "<br>"
        }

        displayResults(mouse["x"], mouse["y"], content)
    }
}

// ==UserScript==
// @name         EDM Helper
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  EDM 电子记录系统辅助插件
// @author       You
// @match        http://edm.ilab.huiyuseacross.com/*
// @grant        none
// @require      https://code.jquery.com/jquery-1.11.3.min.js
// ==/UserScript==

(function () {
    'use strict';
    main();
})();