Flashscore Better Score

目前為 2016-02-21 提交的版本,檢視 最新版本

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

You will need to install an extension such as Tampermonkey to install this script.

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name     Flashscore Better Score
// @namespace  Flashscore
// @version    0.3
// @include http://www.flashscore.com/*
// @description:en Adds score evaluation, view TotalScore, AH1 at matchdetails.
// @copyright  2016+, [email protected]
// @grant       none
// ==/UserScript==
function MyCompareScore(SRef, SCOMP, SOP, T1, T2) {
    var A;
    var B;
    var R;

    T1 = parseInt(T1);
    T2 = parseInt(T2);

    if (SRef == 'TotalScore') {
        A = T1 + T2;
    } else if (SRef == 'AH1') {
        A = T2 - T1;
    } else if (SRef == 'AH2') {
        A = T1 - T2;
    } else if (SRef == 'Team1Score') {
        A = T1;
    } else if (SRef == 'Team2Score') {
        A = T2;
    }

    B = parseFloat(SCOMP);

    if (SOP == 'GT') {
        return A > B;
    } else if (SOP == 'LT') {
        return A < B;
    } else if (SOP == 'GE') {
        return A >= B;
    } else if (SOP == 'LE') {
        return A <= B;
    } else if (SOP == 'EQ') {
        return A == B;
    } else if (SOP == 'NE') {
        return A != B;
    }

    return false;
}

function MyOperationText(SOP) {
    if (SOP == 'GT') {
        return '>';
    } else if (SOP == 'LT') {
        return '<';
    } else if (SOP == 'GE') {
        return '>=';
    } else if (SOP == 'LE') {
        return '<=';
    } else if (SOP == 'EQ') {
        return '==';
    } else if (SOP == 'NE') {
        return '!=';
    }

    return null;
}

function MyFlashscore() {
    var SRef = '<select id="SRef"><option value="AH1">AH1</option><option value="AH2">AH2</option><option value="TotalScore">TotalScore</option><option value="Team1Score">Team1Score</option><option value="Team1Score">Team2Score</option></select> OP:<select ID="SOP"><option value="LT">&#60</option><option value="GT">&#62</option><option value="LE">&#8804</option><option value="GE">&#8805</option><option value="EQ">&#8801</option><option value="NE">&#8800</option></select> COMP:<input type="number" id="SCOMP" value="0" step="0.5">';

    //Get Saved
    if (localStorage.getItem('BetterScoreSel') === null) {
        LSSel = [];
    } else {
        LSSel = JSON.parse(localStorage['BetterScoreSel']);
    }

    //--------------------------------------------------------------------------------------------------------------
    // match-summary
    //--------------------------------------------------------------------------------------------------------------
    var uri;
	var re = /.*\/match\/(.*)\/#match-summary/;
    if ((uri = re.exec(window.location.href)) !== null) {

        //More Score Top
        if ($('.current-result > .r > .sum').length) {
            T1 = parseInt($('.current-result > .r > span:eq(0)').text());
            T2 = parseInt($('.current-result > .r > span:eq(2)').text());
            sum = T1 + T2;
            diff = T2 - T1;
            if (!isNaN(sum)) {
                $('.current-result > .r > .sum').text(sum + ' | AH1 ' + diff);
            }
        } else {
            if ($('.current-result > .r').length) {
                $('.current-result > .r').append('<div class="sum"></div>');
                MyFlashscore();
            } else {
                if ($('.current-result > .sum').length) {
                    T1 = parseInt($('.current-result > span:eq(0)').text());
                    T2 = parseInt($('.current-result > span:eq(2)').text());
                    sum = T1 + T2;
                    diff = T2 - T1;
                    if (!isNaN(sum)) {
                        $('.current-result > .sum').text(sum + ' | AH1 ' + diff);
                    }
                } else {
                    $('.current-result').append('<div class="sum"></div>');
                    MyFlashscore();
                }
            }
        }

        //Basketball Quarters sum
        if ($('#parts> tbody > tr.odd:first > td').length == 7 && $('#parts> tbody > tr').length <= 3) {
            $('#parts> tbody').append('<tr class="odd"><td></td><td class="Sum"></td><td class="score 1Q"></td><td class="score 2Q"></td><td class="score 3Q"></td><td class="score 4Q"></td></tr>');

            $sum = parseInt($('#parts> tbody > tr:eq(1) >td:eq(1)').text()) + parseInt($('#parts> tbody > tr:eq(2) >td:eq(1)').text());
            $sum1Q = parseInt($('#parts> tbody > tr:eq(1) >td:eq(2)').text()) + parseInt($('#parts> tbody > tr:eq(2) >td:eq(2)').text());
            $sum2Q = parseInt($('#parts> tbody > tr:eq(1) >td:eq(3)').text()) + parseInt($('#parts> tbody > tr:eq(2) >td:eq(3)').text());
            $sum3Q = parseInt($('#parts> tbody > tr:eq(1) >td:eq(4)').text()) + parseInt($('#parts> tbody > tr:eq(2) >td:eq(4)').text());
            $sum4Q = parseInt($('#parts> tbody > tr:eq(1) >td:eq(5)').text()) + parseInt($('#parts> tbody > tr:eq(2) >td:eq(5)').text());

            if (!isNaN($sum)) {
                $('#parts> tbody > tr >td.Sum').text($sum);
            }
            if (!isNaN($sum1Q)) {
                $('#parts> tbody > tr >td.1Q').text($sum1Q);
            }
            if (!isNaN($sum2Q)) {
                $('#parts> tbody > tr >td.2Q').text($sum2Q);
            }
            if (!isNaN($sum3Q)) {
                $('#parts> tbody > tr >td.3Q').text($sum3Q);
            }
            if (!isNaN($sum4Q)) {
                $('#parts> tbody > tr >td.4Q').text($sum4Q);
            }
        }

        // Add comparison options
        if ($('th.header > div').length == 1) {
            $('th.header').append('<div> - Ref:' + SRef + '</div>');
        }

        //Check have saved data		
		var i;
		var m;
		
		for (i = 0; i < LSSel.length; i++) {						
			if (LSSel[i]['ID'] == uri[1]) {
				$("#SRef").val( LSSel[i]['SRef'] );
				$("#SCOMP").val( LSSel[i]['SCOMP'] );
				$("#SOP").val( LSSel[i]['SOP'] );
				break;
			}			
		}		
		
		// Check comparison options
        if ($("#SCOMP").val() && !isNaN(sum)) {
            var R = MyCompareScore($("#SRef option:selected").val(), $("#SCOMP").val(), $("#SOP option:selected").val(), T1, T2);

            if (R) {
                $('#flashscore_column').css("background-color", "#9f9");
            } else {
                $('#flashscore_column').css("background-color", "#f99");
            }

            // add title icons
            var link = document.createElement('link');
            link.rel = 'shortcut icon';
            if (R) {
                link.href = 'http://files.softicons.com/download/application-icons/32x32-free-design-icons-by-aha-soft/ico/Ok.ico';
            } else {
                link.href = 'http://files.softicons.com/download/toolbar-icons/max-mini-icons-by-ashung/ico/error.ico ';
            }
            document.getElementsByTagName('head')[0].appendChild(link);
        }
    }

    //--------------------------------------------------------------------------------------------------------------
    // My-Games
    //--------------------------------------------------------------------------------------------------------------
    if ($('li.ifmenu-custom.selected').length === 1) {
        //console.log('My-Games');

        if ($('div.MySRef').length === 0) {
            $('.table-line-bottom:first').after('<div class="MySRef"><label>Ref:</label>' + SRef + '</div>');
        }
        if ($('td.MyRefer').length === 0) {
            $skipnext = false;

            $('.table-main > table > tbody >tr:not([class="blank-line"]) ').each(function() {
                if ($skipnext) {
                    $skipnext = false;
                    return true;
                }


                var FO = null;
				var i;
                for (i = 0; i < LSSel.length; i++) {
                    if ( $(this).attr('id').endsWith( LSSel[i]['ID'] ) ) {
                        FO = LSSel[i];
                        break;
                    }
                }
                //console.log(FO);

                if ($(this).parents('table').attr('class') == 'basketball') {
                    if (!!FO) {
                        $(this).append('<td rowspan="2" class="MyRefer" style="nowrap;width: 100px;" sref="' + FO['SRef'] + '" sop="' + FO['SOP'] + '" scomp="' + FO['SCOMP'] + '">' + FO['SRef'] + ' ' + MyOperationText(FO['SOP']) + ' ' + FO['SCOMP'] + '</td>');
                    } else {
                        $(this).append('<td rowspan="2" class="MyRefer" style="nowrap;width: 100px;" >Choose your bet below the table and click here</td>');
                    }
                    $skipnext = true;
                } else {
                    if (!!FO) {
                        $(this).append('<td class="MyRefer" style="nowrap;width: 100px;" sref="' + FO['SRef'] + '" sop="' + FO['SOP'] + '" scomp="' + FO['SCOMP'] + '">' + FO['SRef'] + ' ' + MyOperationText(FO['SOP']) + ' ' + FO['SCOMP'] + '</td>');
                    } else {
                        $(this).append('<td class="MyRefer" style="nowrap;width: 100px;">Choose your bet below the table and click here</td>');
                    }
                }


            });


            $('.table-main > table > thead >tr >td').each(function() {
                if (parseInt($(this).attr('colspan')) == 8) {
                    $(this).attr('colspan', 9);
                } else if (parseInt($(this).attr('colspan')) == 11) {
                    $(this).attr('colspan', 12);
                }
            });

            //Kosmetik
            $('.table-main > table > tbody >tr.blank-line > td ').each(function() {
                $(this).attr('colspan', $(this).attr('colspan') + 1);
            });


            $('.MyRefer').on('click', function(e) {
                e.stopPropagation();
                //console.log($(this));                

                var SRef = $("#SRef option:selected").val();
                var SOP = $("#SOP option:selected").val();
                var SCOMP = $("#SCOMP").val();
				var reb = /.+_.+_(.*)/;
				var m = reb.exec( $(this).parent().attr('id') );
				var ID = m[1];
	            MakeSave( ID );   

                //Set Attr ad Displaytext
                $(this).attr('SRef', SRef);
                $(this).attr('SOP', SOP);
                $(this).attr('SCOMP', parseFloat(SCOMP));
                $(this).text(SRef + ' ' + MyOperationText(SOP) + ' ' + SCOMP);
            });
            $('.MyRefer').on('mouseover', function(e) {
                e.stopPropagation();
            });
        }




        $('td.MyRefer').each(function() {
            if ($(this).is('[SRef]')) {
                var T1, T2;
                var re = /(\d+).-.(\d+)/;

                if ((m = re.exec($($(this).parent()).find('.score').text())) !== null) {
                    T1 = m[1];
                    T2 = m[2];
                } else if ($($(this).parent()).find('.score-home').text() !== '') {
                    T1 = $($(this).parent()).find('.score-home').text();
                    T2 = $($(this).parent()).next().find('.score-away').text();

                }

                if (!isNaN(parseInt(T1))) {
                    var R = MyCompareScore($(this).attr('SRef'), parseFloat($(this).attr('SCOMP')), $(this).attr('SOP'), T1, T2);
                    //console.log($(this).attr('SRef'), $(this).attr('SCOMP'), $(this).attr('SOP'),R,T1,T2);

                    if (R) {
                        $(this).css("background-color", "#9f9");
                    } else {
                        $(this).css("background-color", "#f99");
                    }
                }
            }
        });
    }
}

function MakeSave(ID){
    //Get Saved
    if (localStorage.getItem('BetterScoreSel') === null) {
        LSSel = [];
    } else {
        LSSel = JSON.parse(localStorage['BetterScoreSel']);
    }
	
	var SRef = $("#SRef option:selected").val();
    var SOP = $("#SOP option:selected").val();
    var SCOMP = $("#SCOMP").val();
    var TS = new Date().getTime();
    
	//Remove old timestamps (5 Days)
	for (var i = 0; i < LSSel.length; i++) {
		if ((LSSel[i]['TS'] + 432000000) <= TS) {
			LSSel.splice(i, 1);
		}
	}
	//Remove old values
	for (i = 0; i < LSSel.length; i++) {
		if (LSSel[i]['ID'] == ID) {
			LSSel.splice(i, 1);
			break;
		}
	}

	//Add new values and saved
	LSSel.push({
		SRef: SRef,
		SOP: SOP,
		SCOMP: SCOMP,
		TS: TS,
		ID: ID
	});
	localStorage.setItem('BetterScoreSel', JSON.stringify(LSSel));
}



var sum = 0;
var diff = 0;
var T1 = 0;
var T2 = 0;

$('th.header').change(function() {
    var uri;
	var re = /.*\/match\/(.*)\/#match-summary/;
    if ((uri = re.exec(window.location.href)) !== null) {			
		MakeSave(uri[1]);
	}	
	MyFlashscore();
});

$(document).ready(function() {
    setInterval(function() {
        MyFlashscore();
    }, 1000);
});