fix ui: fix for sorting (#2077)
This commit is contained in:
parent
64cde1fb7c
commit
a316c90472
1 changed files with 19 additions and 13 deletions
|
|
@ -98,6 +98,7 @@ export default class MessageLoader {
|
||||||
}
|
}
|
||||||
|
|
||||||
let brokenMessages = 0;
|
let brokenMessages = 0;
|
||||||
|
let originalCopy = [...msgs];
|
||||||
msgs.forEach((msg) => {
|
msgs.forEach((msg) => {
|
||||||
if (!msg.time) {
|
if (!msg.time) {
|
||||||
msg.time = artificialStartTime;
|
msg.time = artificialStartTime;
|
||||||
|
|
@ -106,11 +107,12 @@ export default class MessageLoader {
|
||||||
});
|
});
|
||||||
|
|
||||||
const sortedMsgs = msgs
|
const sortedMsgs = msgs
|
||||||
.sort((m1, m2) => m1.time - m2.time);
|
// .sort((m1, m2) => m1.time - m2.time);
|
||||||
// .sort(brokenDomSorter);
|
.sort(brokenDomSorter)
|
||||||
|
.sort(sortIframes);
|
||||||
|
|
||||||
if (brokenMessages > 0) {
|
if (brokenMessages > 0) {
|
||||||
console.warn('Broken timestamp messages', brokenMessages);
|
console.warn('Broken timestamp messages', brokenMessages, originalCopy);
|
||||||
}
|
}
|
||||||
|
|
||||||
onMessagesDone(sortedMsgs, `${file} ${fileNum}`);
|
onMessagesDone(sortedMsgs, `${file} ${fileNum}`);
|
||||||
|
|
@ -277,6 +279,7 @@ const DOMMessages = [
|
||||||
MType.CreateTextNode,
|
MType.CreateTextNode,
|
||||||
MType.MoveNode,
|
MType.MoveNode,
|
||||||
MType.RemoveNode,
|
MType.RemoveNode,
|
||||||
|
MType.CreateIFrameDocument
|
||||||
];
|
];
|
||||||
|
|
||||||
function brokenDomSorter(m1: PlayerMsg, m2: PlayerMsg) {
|
function brokenDomSorter(m1: PlayerMsg, m2: PlayerMsg) {
|
||||||
|
|
@ -287,20 +290,11 @@ function brokenDomSorter(m1: PlayerMsg, m2: PlayerMsg) {
|
||||||
if (m1.tp !== MType.CreateDocument && m2.tp === MType.CreateDocument)
|
if (m1.tp !== MType.CreateDocument && m2.tp === MType.CreateDocument)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
if (m1.tp === MType.CreateIFrameDocument && m2.tp === MType.CreateElementNode) {
|
|
||||||
if (m2.id === m1.frameID) return 1;
|
|
||||||
if (m2.parentID === m1.id) return -1
|
|
||||||
}
|
|
||||||
if (m1.tp === MType.CreateElementNode && m2.tp === MType.CreateIFrameDocument) {
|
|
||||||
if (m1.id === m2.frameID) return -1;
|
|
||||||
if (m1.parentID === m2.id) return 1
|
|
||||||
}
|
|
||||||
const m1IsDOM = DOMMessages.includes(m1.tp);
|
const m1IsDOM = DOMMessages.includes(m1.tp);
|
||||||
const m2IsDOM = DOMMessages.includes(m2.tp);
|
const m2IsDOM = DOMMessages.includes(m2.tp);
|
||||||
if (m1IsDOM && m2IsDOM) {
|
if (m1IsDOM && m2IsDOM) {
|
||||||
// @ts-ignore DOM msg has id but checking for 'id' in m is expensive
|
// @ts-ignore DOM msg has id but checking for 'id' in m is expensive
|
||||||
if (m1.id !== m2.id) return m1.id - m2.id;
|
return m1.id - m2.id;
|
||||||
return m1.tp - m2.tp;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m1IsDOM && !m2IsDOM) return -1;
|
if (m1IsDOM && !m2IsDOM) return -1;
|
||||||
|
|
@ -309,6 +303,17 @@ function brokenDomSorter(m1: PlayerMsg, m2: PlayerMsg) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function sortIframes(m1, m2) {
|
||||||
|
if (m1.time === m2.time
|
||||||
|
&& [MType.CreateIFrameDocument, MType.CreateElementNode].includes(m1.tp)
|
||||||
|
&& [MType.CreateIFrameDocument, MType.CreateElementNode].includes(m2.tp)
|
||||||
|
) {
|
||||||
|
if (m1.frameID === m2.id) return 1;
|
||||||
|
if (m1.id === m2.frameID) return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Search for orphan nodes in session
|
* Search for orphan nodes in session
|
||||||
*/
|
*/
|
||||||
|
|
@ -356,4 +361,5 @@ function findBrokenNodes(nodes: any[]) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @ts-ignore
|
||||||
window.searchOrphans = (msgs) => findBrokenNodes(msgs.filter(m => [8,9,10,70].includes(m.tp)));
|
window.searchOrphans = (msgs) => findBrokenNodes(msgs.filter(m => [8,9,10,70].includes(m.tp)));
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue