Trying to improve some of my slow vue code by pre-computing some things.

git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@3718 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
2021-12-29 16:01:34 +00:00
parent 0bf216bb1a
commit 62e9dfea90
5 changed files with 40 additions and 39 deletions

View File

@@ -19,9 +19,32 @@ var g_data_initial = JSON.parse(JSON.stringify(g_data));
window.addEventListener('message', function(event) {
var key = Object.keys(event.data)[0];
if (key == 'message') {
g_data.messages.push(event.data[key]);
g_data.messages.sort((x, y) => y.timestamp - x.timestamp);
g_data.messages.splice(100);
event.data[key].children = [];
var found = false;
var root = JSON.parse(event.data[key].content).root;
if (root) {
for (let message of g_data.messages) {
if (root == message.id) {
message.children.push(event.data[key]);
message.children.sort((x, y) => y.timestamp - x.timestamp);
found = true;
}
}
}
if (!found) {
for (let message of g_data.messages) {
if (JSON.parse(message.content).root == event.data[key].id) {
event.data[key].children.push(message);
event.data[key].children.sort((x, y) => y.timestamp - x.timestamp);
g_data.messages.splice(g_data.messages.indexOf(message), 1);
break;
}
}
}
if (!found) {
g_data.messages.push(event.data[key]);
g_data.messages.sort((x, y) => y.timestamp - x.timestamp);
}
} else if (key + 's' in g_data && Array.isArray(g_data[key + 's'])) {
g_data[key + 's'].push(event.data[key]);
} else if (key == 'user') {
@@ -44,11 +67,15 @@ window.addEventListener('message', function(event) {
g_data.apps = event.data.apps;
} else if (key == 'votes') {
event.data.votes.forEach(function(vote) {
var link = JSON.parse(vote.content).vote.link;
var content = JSON.parse(vote.content);
var link = content.vote.link;
if (!g_data.votes[link]) {
Vue.set(g_data.votes, link, []);
Vue.set(g_data.votes, link, {});
}
g_data.votes[link].push(vote);
if (!g_data.votes[link][content.vote.expression]) {
Vue.set(g_data.votes[link], content.vote.expression, []);
}
g_data.votes[link][content.vote.expression].push({author: vote.author, value: content.vote.value});
});
} else if (key == 'clear') {
Object.keys(g_data_initial).forEach(function(key) {