CatAndNew

try to take over the world!

// ==UserScript==
// @name         CatAndNew
// @namespace    https://trade.rapnet.*/
// @version      1.1
// @description  try to take over the world!
// @author       HeyLop
// @match        https://trade.rapnet.cn/*
// @match        https://trade.rapnet.com/*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @license      AGPL-3.0
// @run-at       context-menu
// @grant        none
// ==/UserScript==


/**时间获取函数 */
function HM_Time() {
    let date = new Date();
    let year = date.getFullYear(); //获取完整的年份(4位)
    let mon = (date.getMonth() + 1); //获取当前月份(0-11,0代表1月)
    let day = date.getDate(); //获取当前日(1-31)
    let h = date.getHours(); //获取当前小时数(0-23)
    let m = date.getMinutes(); //获取当前分钟数(0-59)
    let s = date.getSeconds(); //获取当前秒数(0-59)
    return year + '/' + mon + '/' + day + '-' + h + ':' + m + ':' + s;
}


(function () {


    'use strict';

    //公共数组,存储当前页面刷新后列表
    var current_page = []
    var click_id_list = []
    var readied_id_list = []

    //从浏览器本地存储获取已读列表
    var storage = window.localStorage;
    //初始化浏览器本地存储数据
    if (!storage.hasOwnProperty("fly-read-label")) {
        storage.setItem("fly-read-label", "");//存储
        storage.setItem("fly-read-time", "");//存储
    }


    //判断已使用本地存储大小
    var size = 0;
    for (var item in storage) {
        if (storage.hasOwnProperty(item)) {
            size += storage.getItem(item).length;
        }
    }
    //'当前localStorage已使用容量为' + (size / 1024).toFixed(2) + 'KB'
    //如果大于当前容量的80% ,就删掉……的数据
    var localStorageUsed = (size / 1024).toFixed(2);
    console.log("MSG==========>date:" + HM_Time() + ",当前已用存储:" + localStorageUsed + "KB,浏览器本地存储使用量:" + (localStorageUsed / (1024 * 5)))
    if ((localStorageUsed / (1024 * 5)) > 0.8) {
        alert("存储使用超过80%,请重置✈️📅数据!!!!!!")
    }
    else if ((localStorageUsed / (1024 * 5)) > 0.9) {
        storage.setItem("fly-read-time", "");
        storage.setItem("fly-read-label", "");
        alert("存储使用超过90%,已重置✈️📅数据!!!!!!")
    }

    //将表格title添加空按钮,调整样式与表格结果一致
    var TableButton = document.createElement('button')
    TableButton.id = "tabelebut"
    TableButton.innerText = "✈️"
    TableButton.style.fontSize = '14px';
    TableButton.style.cursor = "pointer";
    if (document.getElementById("tabelebut") == null) {
        document.querySelector('.checkbox-header-col__HeaderCheckbox-sc-17l94kc-0.kLQRPN').before(TableButton)

    }


    //页面顶部增加查看浏览器缓存日期与浏览器缓存日期按钮
    var CatDateID = document.createElement('button')
    CatDateID.id = "CatDateID"
    CatDateID.innerText = "查看✈️📅"
    CatDateID.className = 'button__StyledButton-sc-ceuy7i-0 kUAZbV filter-open-button__FilterButton-sc-1l3yltp-0 cdoVHc'
    var RestDateButton = document.createElement('button')
    RestDateButton.id = "RestDateButton"
    RestDateButton.innerText = "重置✈️📅"
    RestDateButton.className = 'button__StyledButton-sc-ceuy7i-0 kUAZbV filter-open-button__FilterButton-sc-1l3yltp-0 cdoVHc'
    var page_end = document.querySelector('.button__StyledButton-sc-ceuy7i-0.kUAZbV.filter-open-button__FilterButton-sc-1l3yltp-0.cdoVHc')
    if (document.getElementById("CatDateID") == null) {
        page_end.after(CatDateID)
    }
    if (document.getElementById("RestDateButton") == null) {
        page_end.after(RestDateButton)
    }



    //监听查看日期按钮并添加功能
    CatDateID.addEventListener('click', (e) => {
        if (storage.getItem("fly-read-time").length < 4) {
            alert("最后保存数据日期✈️📅为空,暂无数据!!! \n==========>MSG浏览器存储使用情况<===========\n当前时间:" + HM_Time() + "\n当前已用存储:" + localStorageUsed + "KB\n存储使用百分比:" + (localStorageUsed / (1024 * 5) * 100 + "%") + "\n⚠️警告:存储使用百分比超过80%告警提示!!!\n⚠️警告:存储使用百分比超过90%将自动清除数据!!!")
        } else {
            alert("最后保存数据日期✈️📅---->" + storage.getItem("fly-read-time") + "\n==========>MSG浏览器存储使用情况<===========\n当前时间:" + HM_Time() + "\n当前已用存储:" + localStorageUsed + "KB\n存储使用百分比:" + (localStorageUsed / (1024 * 5) * 100 + "%") + "\n⚠️警告:存储使用百分比超过80%告警提示!!!\n⚠️警告:存储使用百分比超过90%将自动清除数据!!!")
        }
    })
    //监听重置日期按钮并添加功能
    RestDateButton.addEventListener('click', (e) => {
        storage.setItem("fly-read-time", "");
        storage.setItem("fly-read-label", "");
        if (storage.getItem("fly-read-time").length < 4) {
            alert("重置✈️📅成功!!!请刷新页面后重新运行查看数据!!!")
        } else {
            alert("重置✈️📅失败!!!")
        }
    })

    var reade_id_list_tmp = storage.getItem("fly-read-label")
    readied_id_list = reade_id_list_tmp.split(',')

    //底部增加按钮处理设置过期时间与清除浏览器缓存



    document.querySelectorAll('#searchResultTable-tableBody .tableRowWrapper').forEach(element => {

        //生成按钮CatButton 可能是js的bug 必须将按钮放置到函数内才可生效,否则只能最后一次循环生效
        var CatButton = document.createElement('button')
        CatButton.id = "NewButton"
        CatButton.innerText = "看"
        CatButton.style.fontSize = '14px';
        CatButton.style.cursor = "pointer";
        CatButton.style.backgroundColor = '#70DB93' //绿色



        //公共参数声明
        var CurrentId = element.firstElementChild.firstElementChild.firstElementChild.firstChild.firstElementChild.firstChild.id
        var DefaultId = "DefaultButton" + CurrentId
        var target = document.getElementById(CurrentId)
        // console.log("==========>" + DefaultId)
        //处理已读,并在页面中进行标记
        //判断当前页面到每条数据是否倍点击过
        if (readied_id_list.includes(CurrentId)) {
            target.before(CatButton)
        } else {
            //生成按钮DefaultButton(字体,背景均为透明色) 用于填补没被点击到列前,统一页面格式
            var DefaultButton = document.createElement('button')
            DefaultButton.id = DefaultId
            DefaultButton.innerText = "空"
            DefaultButton.style.fontSize = '14px';
            DefaultButton.style.cursor = "pointer";
            DefaultButton.style.color = "Transparent"
            DefaultButton.backgroundColor = "Transparent"

            target.before(DefaultButton)
        }

        //点击后将id发送到浏览器本地存储,并删除default占位按钮添加已读按钮
        element.addEventListener('click', (e) => {
            e.preventDefault()
            // console.log("点击了!!!")
            click_id_list = readied_id_list
            if (document.getElementById(DefaultId) != null) {
                document.getElementById(DefaultId).remove()
            }
            target.before(CatButton)
            click_id_list.push(CurrentId)
            storage.setItem("fly-read-label", click_id_list);//存储
            if (storage.getItem("fly-read-time").length < 4) {
                storage.setItem("fly-read-time", HM_Time());//存储
            }


        })
    });
})();