PageMailList

Paging the mail list

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name PageMailList
// @namespace InGame
// @author Ladoria
// @date 21/03/2014
// @version 1.6
// @description Paging the mail list
// @license WTF Public License; http://en.wikipedia.org/wiki/WTF_Public_License
// @include http://www.dreadcast.net/Main
// @compat Chrome
// ==/UserScript==

var actualPage = 0;
var messageCount = $('#liste_messages .message').size();

// Params [FR]
var messagePerPage = 10; // [Nombre de messages à afficher par page]
var refreshTime = 2000; // [En millisecondes, le temps à vérifier l'arrivée de nouveau message après demande utilisateur]
var reloadAttemptInterval = 100; //[En millisecondes, l'interval entre les vérifications]

var nbReloadAttempt = Math.ceil(refreshTime / reloadAttemptInterval);

$('#liste_messages .content').css('height',((messagePerPage * 40 + 7)) +'px'); // maths are sweet
$('#liste_messages .content').css('overflow-y', 'hidden');
$('<div id="pageDisplayChat"><div class="firstPage btnTxt"><span>1</span></div><div class="previousPage btnTxt"><span><</span></div><div class="actualPage btnTxt"><span>1</span></div><div class="nextPage btnTxt"><span>></span></div><div class="lastPage btnTxt"><span></span></div><div class="btnTxt btnPageNumber"><input class="pageNumber" type="text" value="1"></div><div class="nextMessages btnTxt">+ ( <span class="messageCount"></span> )</div></div>').insertAfter($('#liste_messages .content')); // damn ugly

// Styles
$('#pageDisplayChat .btnTxt').css('margin', '2px 2px 2px 2px');
$('#pageDisplayChat .btnTxt').css('padding', '4px 5px 0px 5px');
$('#pageDisplayChat span').css('font-weight', 'bold');
$('#pageDisplayChat .actualPage').css('min-width', '17px');
$('#pageDisplayChat .lastPage').css('min-width', '17px');
$('#pageDisplayChat .btnPageNumber').css('padding', '0px 5px 4px 5px');
$('#pageDisplayChat .pageNumber').css('width', '15px');
$('#pageDisplayChat .pageNumber').css('margin-bottom', '4px');
$('#pageDisplayChat .nextMessages').css('min-width', '38px');
$('#pageDisplayChat .nextMessages').css('float', 'right');

// Build the paging system
function loadPage() {
	messageCount = $('#liste_messages .message').size();
	$('#pageDisplayChat .messageCount').html(messageCount);
	
	inferiorLimit = messagePerPage * actualPage;
	superiorLimit = inferiorLimit + messagePerPage;
	
	// show messages in the actual page, hide others
	$('#liste_messages .message').each( function() {
		if ($(this).attr('data-numero') >= inferiorLimit && $(this).attr('data-numero') < superiorLimit) {
			$(this).show();
		}
		else {
			$(this).hide();
		}
	});
	
	refreshPageAccessors();
}

// Refresh page accessors...
function refreshPageAccessors() {
	$('#pageDisplayChat .actualPage span').html(actualPage + 1);
		
	$('#pageDisplayChat .lastPage span').html((Math.ceil($('#liste_messages .message').size() / messagePerPage)));
}

// Event handler
// refresh
$('#pageDisplayChat .actualPage').click( function() {
	loadPage();
});

$('#pageDisplayChat .previousPage').click( function() {
	if(actualPage > 0) {
		actualPage--;
		loadPage();
	}
});

$('#pageDisplayChat .nextPage').click( function() {
	if(actualPage < ($('#liste_messages .message').size() / messagePerPage) - 1) 
	{
		actualPage++;
		loadPage();
	}
});

$('#pageDisplayChat .firstPage').click( function() {
	actualPage = 0;
	loadPage();
});

$('#pageDisplayChat .lastPage').click( function() {
	actualPage = Math.ceil($('#liste_messages .message').size() / messagePerPage) - 1;
	loadPage();
});

$('#pageDisplayChat .nextMessages').click( function() {
	nav.getMessagerie().loadFolderContent();
	
	delayedLoad(0);
});

$('.folder').click(function () {
	actualPage = 0;
	
	// to execute normaly after the folder loading :/
	setTimeout(function() { loadPage(); },300);
});

$("#pageDisplayChat .pageNumber").keyup( function(e) {
	if(e.keyCode == 13) {
		actualPage = ($("#pageDisplayChat .pageNumber").val() >= 0) ? ($("#pageDisplayChat .pageNumber").val() - 1) : 0;
		loadPage();
	}
});

function delayedLoad(attemptLeft) {
	if (attemptLeft < nbReloadAttempt)
		if (messageCount == $('#liste_messages .message').size())
			setTimeout( function() { delayedLoad(attemptLeft + 1); }, reloadAttemptInterval);
		else
			loadPage();
}

loadPage();