mirror of
https://github.com/smogon/pokemon-showdown-client.git
synced 2026-06-02 22:09:20 -05:00
Refactor timestamps and prefs
- battle logs no longer have timestamps - getTimestamp is moved to a property of the Lobby function - the prefs global variable is replaced by a prefs API
This commit is contained in:
parent
e4c3c621fa
commit
f36d8db188
|
|
@ -156,7 +156,7 @@ function Pokemon(species) {
|
|||
opacity: .6
|
||||
}, BattleEffects.energyball));
|
||||
elem = elem.add(curelem);
|
||||
|
||||
|
||||
selfP.side.battle.spriteElemsFront[selfP.side.n].append('<img src="/fx/energyball.png" style="display:none;position:absolute" />');
|
||||
curelem = selfP.side.battle.spriteElemsFront[selfP.side.n].children().last();
|
||||
curelem.css(self.pos({
|
||||
|
|
@ -4225,9 +4225,9 @@ function Battle(frame, logFrame, noPreload) {
|
|||
args.shift();
|
||||
var message = args.join('|');
|
||||
if (message.substr(0,2) === '//') {
|
||||
self.log('<div class="chat">' + getTimestamp() + '<strong style="' + hashColor(toUserid(self.getSide(name).name)) + '">' + self.sanitize(name) + ':</strong> <em>' + messageSanitize(message.substr(1)) + '</em></div>', preempt);
|
||||
self.log('<div class="chat"><strong style="' + hashColor(toUserid(self.getSide(name).name)) + '">' + self.sanitize(name) + ':</strong> <em>' + messageSanitize(message.substr(1)) + '</em></div>', preempt);
|
||||
} else if (message.substr(0,4).toLowerCase() === '/me ') {
|
||||
self.log('<div class="chat">' + getTimestamp() + '<strong style="' + hashColor(toUserid(self.getSide(name).name)) + '">•</strong> <em>' + self.sanitize(name) + ' <i>' + messageSanitize(message.substr(4)) + '</i></em></div>', preempt);
|
||||
self.log('<div class="chat"><strong style="' + hashColor(toUserid(self.getSide(name).name)) + '">•</strong> <em>' + self.sanitize(name) + ' <i>' + messageSanitize(message.substr(4)) + '</i></em></div>', preempt);
|
||||
} else if (message.substr(0,14).toLowerCase() === '/data-pokemon ') {
|
||||
self.log('<div class="chat"><ul class=\"utilichart\">'+Chart.pokemonRow(Tools.getTemplate(message.substr(14)),'',{})+'<li style=\"clear:both\"></li></ul></div>', preempt);
|
||||
} else if (message.substr(0,11).toLowerCase() === '/data-item ') {
|
||||
|
|
@ -4237,7 +4237,7 @@ function Battle(frame, logFrame, noPreload) {
|
|||
} else if (message.substr(0,11).toLowerCase() === '/data-move ') {
|
||||
self.log('<div class="chat"><ul class=\"utilichart\">'+Chart.moveRow(Tools.getMove(message.substr(11)),'',{})+'<li style=\"clear:both\"></li></ul></div>', preempt);
|
||||
} else {
|
||||
self.log('<div class="chat">' + getTimestamp() + '<strong style="' + hashColor(toUserid(self.getSide(name).name)) + '">' + self.sanitize(name) + ':</strong> <em>' + messageSanitize(message) + '</em></div>', preempt);
|
||||
self.log('<div class="chat"><strong style="' + hashColor(toUserid(self.getSide(name).name)) + '">' + self.sanitize(name) + ':</strong> <em>' + messageSanitize(message) + '</em></div>', preempt);
|
||||
}
|
||||
break;
|
||||
case 'chatmsg':
|
||||
|
|
|
|||
|
|
@ -298,6 +298,29 @@ var basespecieschart = {
|
|||
|
||||
var Tools = {
|
||||
|
||||
prefs: (function() {
|
||||
var localStorageEntry = 'showdown_prefs';
|
||||
var data = (window.localStorage &&
|
||||
$.parseJSON(localStorage.getItem(localStorageEntry))) || {};
|
||||
return {
|
||||
get: function(prop) {
|
||||
return data[prop];
|
||||
},
|
||||
/**
|
||||
* Set a preference value.
|
||||
* If save is true-ish, then also save to localStorage immediately.
|
||||
*/
|
||||
set: function(prop, value, save) {
|
||||
data[prop] = value;
|
||||
if (save) this.save();
|
||||
},
|
||||
save: function() {
|
||||
if (!window.localStorage) return;
|
||||
localStorage.setItem(localStorageEntry, $.toJSON(data));
|
||||
}
|
||||
};
|
||||
})(),
|
||||
|
||||
getEffect: function(effect) {
|
||||
if (!effect || typeof effect === 'string') {
|
||||
var name = $.trim(effect||'');
|
||||
|
|
@ -611,19 +634,3 @@ var Tools = {
|
|||
}
|
||||
};
|
||||
|
||||
var prefs = (window.localStorage && $.parseJSON(localStorage.getItem('showdown_prefs'))) || {};
|
||||
function savePrefs() {
|
||||
if (!window.localStorage) return;
|
||||
localStorage.setItem('showdown_prefs', $.toJSON(prefs));
|
||||
}
|
||||
function getTimestamp() {
|
||||
if (prefs.timestamps === 'off' || prefs.timestamps === undefined) return '';
|
||||
var date = new Date();
|
||||
var components = [ date.getHours(), date.getMinutes() ];
|
||||
if (prefs.timestamps === 'seconds') {
|
||||
components.push(date.getSeconds());
|
||||
}
|
||||
return '[' + components.map(function(x) {
|
||||
return (x < 10) ? '0' + x : x;
|
||||
}).join(':') + '] ';
|
||||
}
|
||||
|
|
|
|||
76
js/sim.js
76
js/sim.js
|
|
@ -30,7 +30,6 @@ var me = {
|
|||
curPopup: '',
|
||||
popups: []
|
||||
};
|
||||
var prefs = (window.localStorage && $.parseJSON(localStorage.getItem('showdown_prefs'))) || {};
|
||||
var rooms = {};
|
||||
var curRoom = null;
|
||||
var curTitle = 'Showdown!';
|
||||
|
|
@ -40,23 +39,6 @@ var teams = [];
|
|||
|
||||
var isAndroid = navigator.userAgent.toLowerCase().indexOf("android") > -1 && navigator.userAgent.toLowerCase().indexOf("firefox") <= -1;
|
||||
|
||||
function savePrefs() {
|
||||
if (!window.localStorage) return;
|
||||
localStorage.setItem('showdown_prefs', $.toJSON(prefs));
|
||||
}
|
||||
|
||||
function getTimestamp() {
|
||||
if ((prefs.timestamps === 'off') || (prefs.timestamps === undefined)) return '';
|
||||
var date = new Date();
|
||||
var components = [ date.getHours(), date.getMinutes() ];
|
||||
if (prefs.timestamps === 'seconds') {
|
||||
components.push(date.getSeconds());
|
||||
}
|
||||
return '[' + components.map(
|
||||
function(x) { return (x < 10) ? '0' + x : x; }
|
||||
).join(':') + '] ';
|
||||
}
|
||||
|
||||
//
|
||||
function selectTab(tab, e) {
|
||||
if (e && e.preventDefault) e.preventDefault();
|
||||
|
|
@ -261,14 +243,9 @@ function BattleRoom(id, elem) {
|
|||
}
|
||||
selfR.battle.play();
|
||||
if (data.battlelog) {
|
||||
// Disable timestamps for the past log because the server does
|
||||
// not tell us what time the messages were sent at.
|
||||
var timestamps = prefs.timestamps;
|
||||
prefs.timestamps = 'off';
|
||||
for (var i = 0; i < data.battlelog.length; i++) {
|
||||
selfR.battle.add(data.battlelog[i]);
|
||||
}
|
||||
prefs.timestamps = timestamps;
|
||||
selfR.battle.fastForwardTo(-1);
|
||||
}
|
||||
selfR.updateMe();
|
||||
|
|
@ -283,7 +260,7 @@ function BattleRoom(id, elem) {
|
|||
if (message.pm) {
|
||||
var pmuserid = (toUserid(message.name) === me.userid ? toUserid(message.pm) : toUserid(message.name))
|
||||
if (me.ignore[toUserid(message.name)] && message.name.substr(0, 1) === ' ') return;
|
||||
selfR.add('|chatmsg-raw|' + '<div class="chat">' + getTimestamp() + '<strong>' + sanitize(message.name.substr(1)) + ':</strong> <em style="color:#007100"><i style="cursor:pointer" onclick="selectTab(\'lobby\');rooms.lobby.popupOpen(\'' + pmuserid + '\')">(Private to ' + sanitize(message.pm) + ')</i> ' + messageSanitize(message.message) + '</em>');
|
||||
selfR.add('|chatmsg-raw|' + '<div class="chat"><strong>' + sanitize(message.name.substr(1)) + ':</strong> <em style="color:#007100"><i style="cursor:pointer" onclick="selectTab(\'lobby\');rooms.lobby.popupOpen(\'' + pmuserid + '\')">(Private to ' + sanitize(message.pm) + ')</i> ' + messageSanitize(message.message) + '</em>');
|
||||
} else if (message.rawMessage) {
|
||||
selfR.add('|chatmsg-raw|' + message.rawMessage);
|
||||
} else if (message.evalRawMessage) {
|
||||
|
|
@ -1109,24 +1086,20 @@ function Lobby(id, elem) {
|
|||
|
||||
case 'showjoins':
|
||||
rooms.lobby.add('Join/leave messages: ON');
|
||||
prefs.showjoins = true;
|
||||
savePrefs();
|
||||
Tools.prefs.set('showjoins', true, true);
|
||||
return false;
|
||||
case 'hidejoins':
|
||||
rooms.lobby.add('Join/leave messages: HIDDEN');
|
||||
prefs.showjoins = false;
|
||||
savePrefs();
|
||||
Tools.prefs.set('showjoins', false, true);
|
||||
return false;
|
||||
|
||||
case 'showbattles':
|
||||
rooms.lobby.add('Battle messages: ON');
|
||||
prefs.showbattles = true;
|
||||
savePrefs();
|
||||
Tools.prefs.set('showbattles', true, true);
|
||||
return false;
|
||||
case 'hidebattles':
|
||||
rooms.lobby.add('Battle messages: HIDDEN');
|
||||
prefs.showbattles = false;
|
||||
savePrefs();
|
||||
Tools.prefs.set('showbattles', false, true);
|
||||
return false;
|
||||
|
||||
case 'timestamps':
|
||||
|
|
@ -1135,8 +1108,7 @@ function Lobby(id, elem) {
|
|||
if (['off', 'minutes', 'seconds'].indexOf(target) === -1) {
|
||||
rooms.lobby.add("Error: Valid options are /timestamps off, /timestamps minutes, and /timestamps seconds");
|
||||
} else {
|
||||
prefs.timestamps = target;
|
||||
savePrefs();
|
||||
Tools.prefs.set('timestamps', target, true);
|
||||
}
|
||||
return false;
|
||||
|
||||
|
|
@ -1275,6 +1247,18 @@ function Lobby(id, elem) {
|
|||
selfR.userActivity.splice(0, 20);
|
||||
}
|
||||
};
|
||||
this.getTimestamp = function () {
|
||||
var pref = Tools.prefs.get('timestamps');
|
||||
if ((pref === 'off') || (pref === undefined)) return '';
|
||||
var date = new Date();
|
||||
var components = [ date.getHours(), date.getMinutes() ];
|
||||
if (pref === 'seconds') {
|
||||
components.push(date.getSeconds());
|
||||
}
|
||||
return '[' + components.map(
|
||||
function(x) { return (x < 10) ? '0' + x : x; }
|
||||
).join(':') + '] ';
|
||||
};
|
||||
this.add = function (log) {
|
||||
if (typeof log === 'string') log = log.split('\n');
|
||||
var autoscroll = false;
|
||||
|
|
@ -1406,7 +1390,7 @@ function Lobby(id, elem) {
|
|||
if (log[i].pm) {
|
||||
var pmuserid = (userid === me.userid ? toUserid(log[i].pm) : userid);
|
||||
if (!me.pm[pmuserid]) me.pm[pmuserid] = '';
|
||||
var pmcode = '<div class="chat">' + getTimestamp() + '<strong style="' + color + '">' + clickableName + ':</strong> <em> ' + messageSanitize(message) + '</em></div>';
|
||||
var pmcode = '<div class="chat">' + selfR.getTimestamp() + '<strong style="' + color + '">' + clickableName + ':</strong> <em> ' + messageSanitize(message) + '</em></div>';
|
||||
for (var j = 0; j < me.popups.length; j++) {
|
||||
if (pmuserid === me.popups[j]) break;
|
||||
}
|
||||
|
|
@ -1417,17 +1401,17 @@ function Lobby(id, elem) {
|
|||
} else {
|
||||
selfR.updatePopup();
|
||||
}
|
||||
selfR.chatElem.append('<div class="chat">' + getTimestamp() + '<strong style="' + color + '">' + clickableName + ':</strong> <em style="color:#007100"><i style="cursor:pointer" onclick="selectTab(\'lobby\');rooms.lobby.popupOpen(\'' + pmuserid + '\')">(Private to ' + sanitize(log[i].pm) + ')</i> ' + messageSanitize(message) + '</em></div>');
|
||||
selfR.chatElem.append('<div class="chat">' + selfR.getTimestamp() + '<strong style="' + color + '">' + clickableName + ':</strong> <em style="color:#007100"><i style="cursor:pointer" onclick="selectTab(\'lobby\');rooms.lobby.popupOpen(\'' + pmuserid + '\')">(Private to ' + sanitize(log[i].pm) + ')</i> ' + messageSanitize(message) + '</em></div>');
|
||||
//} else if (log[i].act) {
|
||||
// selfR.chatElem.append('<div class="chat"><strong style="' + color + '">•</strong> <em' + (log[i].name.substr(1) === me.name ? ' class="mine"' : '') + '>' + clickableName + ' <i>' + message + '</i></em></div>');
|
||||
} else if (message.substr(0,2) === '//') {
|
||||
selfR.chatElem.append('<div class="chat">' + getTimestamp() + '<strong style="' + color + '">' + clickableName + ':</strong> <em' + (log[i].name.substr(1) === me.name ? ' class="mine"' : '') + '>' + messageSanitize(message.substr(1)) + '</em></div>');
|
||||
selfR.chatElem.append('<div class="chat">' + selfR.getTimestamp() + '<strong style="' + color + '">' + clickableName + ':</strong> <em' + (log[i].name.substr(1) === me.name ? ' class="mine"' : '') + '>' + messageSanitize(message.substr(1)) + '</em></div>');
|
||||
} else if (message.substr(0,4).toLowerCase() === '/me ') {
|
||||
selfR.chatElem.append('<div class="chat">' + getTimestamp() + '<strong style="' + color + '">•</strong> <em' + (log[i].name.substr(1) === me.name ? ' class="mine"' : '') + '>' + clickableName + ' <i>' + messageSanitize(message.substr(4)) + '</i></em></div>');
|
||||
selfR.chatElem.append('<div class="chat">' + selfR.getTimestamp() + '<strong style="' + color + '">•</strong> <em' + (log[i].name.substr(1) === me.name ? ' class="mine"' : '') + '>' + clickableName + ' <i>' + messageSanitize(message.substr(4)) + '</i></em></div>');
|
||||
} else if (message.substr(0,5).toLowerCase() === '/mee ') {
|
||||
selfR.chatElem.append('<div class="chat">' + getTimestamp() + '<strong style="' + color + '">•</strong> <em' + (log[i].name.substr(1) === me.name ? ' class="mine"' : '') + '>' + clickableName + '<i>' + messageSanitize(message.substr(5)) + '</i></em></div>');
|
||||
selfR.chatElem.append('<div class="chat">' + selfR.getTimestamp() + '<strong style="' + color + '">•</strong> <em' + (log[i].name.substr(1) === me.name ? ' class="mine"' : '') + '>' + clickableName + '<i>' + messageSanitize(message.substr(5)) + '</i></em></div>');
|
||||
} else if (message.substr(0,10).toLowerCase() === '/announce ') {
|
||||
selfR.chatElem.append('<div class="chat">' + getTimestamp() + '<strong style="' + color + '">' + clickableName + ':</strong> <em style="padding:1px 4px 2px;color:white;background:#6688AA">' + messageSanitize(message.substr(10)) + '</em></div>');
|
||||
selfR.chatElem.append('<div class="chat">' + selfR.getTimestamp() + '<strong style="' + color + '">' + clickableName + ':</strong> <em style="padding:1px 4px 2px;color:white;background:#6688AA">' + messageSanitize(message.substr(10)) + '</em></div>');
|
||||
} else if (message.substr(0,14).toLowerCase() === '/data-pokemon ') {
|
||||
selfR.chatElem.append('<div class="message"><ul class=\"utilichart\">'+Chart.pokemonRow(Tools.getTemplate(message.substr(14)),'',{})+'<li style=\"clear:both\"></li></ul></div>');
|
||||
} else if (message.substr(0,11).toLowerCase() === '/data-item ') {
|
||||
|
|
@ -1438,7 +1422,7 @@ function Lobby(id, elem) {
|
|||
selfR.chatElem.append('<div class="message"><ul class=\"utilichart\">'+Chart.moveRow(Tools.getMove(message.substr(11)),'',{})+'<li style=\"clear:both\"></li></ul></div>');
|
||||
} else {
|
||||
// Normal chat message.
|
||||
selfR.chatElem.append('<div class="chat">' + getTimestamp() + '<strong style="' + color + '">' + clickableName + ':</strong> <em' + (log[i].name.substr(1) === me.name ? ' class="mine"' : '') + '>' + messageSanitize(message) + '</em></div>');
|
||||
selfR.chatElem.append('<div class="chat">' + selfR.getTimestamp() + '<strong style="' + color + '">' + clickableName + ':</strong> <em' + (log[i].name.substr(1) === me.name ? ' class="mine"' : '') + '>' + messageSanitize(message) + '</em></div>');
|
||||
}
|
||||
} else if (log[i].name && log[i].action === 'battle') {
|
||||
var id = log[i].room;
|
||||
|
|
@ -1452,7 +1436,7 @@ function Lobby(id, elem) {
|
|||
});
|
||||
if (selfR.rooms.length > 8) selfR.rooms.shift();
|
||||
|
||||
if (log[i].silent && !prefs.showbattles) continue;
|
||||
if (log[i].silent && !Tools.prefs.get('showbattles')) continue;
|
||||
|
||||
selfR.joinLeaveElem = null;
|
||||
selfR.joinLeave = {
|
||||
|
|
@ -1486,7 +1470,7 @@ function Lobby(id, elem) {
|
|||
me.users[toUserid(log[i].name)] = log[i].name;
|
||||
continue;
|
||||
}
|
||||
if (log[i].silent && !prefs.showjoins) continue;
|
||||
if (log[i].silent && !Tools.prefs.get('showjoins')) continue;
|
||||
if (!selfR.joinLeaveElem) {
|
||||
selfR.chatElem.append('<div class="message"><small>Loading...</small></div>');
|
||||
selfR.joinLeaveElem = selfR.chatElem.children().last();
|
||||
|
|
@ -1569,10 +1553,10 @@ function Lobby(id, elem) {
|
|||
}
|
||||
// Disable timestamps for the past log because the server doesn't
|
||||
// tell us what time the messages were sent at.
|
||||
var timestamps = prefs.timestamps;
|
||||
prefs.timestamps = 'off';
|
||||
var timestamps = Tools.prefs.get('timestamps');
|
||||
Tools.prefs.set('timestamps', 'off');
|
||||
selfR.add(data.log); // Add past log.
|
||||
prefs.timestamps = timestamps;
|
||||
Tools.prefs.set('timestamps', timestamps);
|
||||
}
|
||||
selfR.update(data);
|
||||
selfR.chatFrameElem.scrollTop(selfR.chatElem.height());
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user