双低转债轮动评分

按照 转债现价 + 转股溢价率 * 100 计算评分, 并将结果渲染在已有的数据表格上, 并支持按照评分字段进行排序

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         双低转债轮动评分
// @namespace    http://tampermonkey.net/
// @version      0.4
// @description  按照 转债现价 + 转股溢价率 * 100 计算评分, 并将结果渲染在已有的数据表格上, 并支持按照评分字段进行排序
// @author       kirk91
// @match        *://www.jisilu.cn/data/cbnew/
// @match        *://jisilu.cn/data/cbnew/
// @grant        none
// @run-at document-end
// ==/UserScript==

function insertScoreHeader() {
    var header_html = '<th style="width: 70px; white-space: nowrap;" title="转债现价 + 转股溢价率 * 100" class="header">轮动评分</th>';
    $('#flex_cb thead th[title|="纯债价值,税前"]').before(header_html);
}

function insertScoreData() {
    $("#flex_cb tbody tr").each(function(index){
        var bond_id = $(this).find("td[data-name|=bond_id] a").text()
        var bond_name = $(this).find("td[data-name|=bond_nm]").text()
        var price_text = $(this).find("td[data-name|=price]").text();
        var premium_rt_text = $(this).find("td[data-name|=premium_rt]").text();
        var score = (parseFloat(price_text) + parseFloat(premium_rt_text)).toFixed(3);
        var score_html = '<td data-name="score" style="width:40px;white-space: nowrap">' + score + '</td>';
        $(this).find("td[data-name|=_bond_value]").before(score_html);
    });
}

function insertIdHeader() {
    var header_html = '<th style="width: 30px; white-space: nowrap;" title="自增id" class="header" sorter=false>序号</th>';
    $('#flex_cb thead tr:last').prepend(header_html);
}

function insertIdData() {
    $("#flex_cb tbody tr").each(function(index){
        var html = '<td data-name="id" style="width:20px;white-space: nowrap">' + (index+1) + '</td>';
        $(this).prepend(html);
    });
}

(function() {
    'use strict';

    // only match #cb page
    if (location.hash != "#cb") {
        return;
    }

    // TODO: replace it with flex_cb table data ready event.
    setTimeout(function(){
        // id
        insertIdHeader();
        insertIdData();

        // score
        insertScoreHeader();
        insertScoreData();

        // attach sorter to the new header
        // unbind the old click event handlers
        $("#flex_cb thead th").unbind("click");
        // rebuild the table sorter
        $('#flex_cb').tablesorter({widgets: ['zebra']});
        // remove the client event handler of id field
        $('#flex_cb thead th:first').unbind("click");
    }, 1500);

    $('#flex_cb').on('sortEnd', function(){
        // keep the id
        $(this).find('tbody tr').each(function(index){
            $(this).find('td:first').text(index+1);
        });
    });
    $('#flex_cb').on("reload", function(){
        insertIdData();
        insertScoreData();
    });
})();