From 6b6b76f54e45fa2aee84b95abd66b3d924ca5afe Mon Sep 17 00:00:00 2001 From: Priyanka Date: Mon, 20 Sep 2021 10:16:37 +0000 Subject: [PATCH] Fixing an issue with transition overlap. Transitions that are not overlapping no longer stay in the same row. This should fix the problem. Bug: b/200516237 Test: run a trace with pip enter, then rotation. Tags should display in the same row on timeline. Change-Id: I39b50f7636ec7c02de5e15e117542dface0154fc --- tools/winscope/src/mixins/Timeline.js | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/tools/winscope/src/mixins/Timeline.js b/tools/winscope/src/mixins/Timeline.js index d938bcbb0..444d52568 100644 --- a/tools/winscope/src/mixins/Timeline.js +++ b/tools/winscope/src/mixins/Timeline.js @@ -173,21 +173,26 @@ export default { //compare each transition to the ones that came before for (let curr=0; curr0 - && transitions[curr].overlap === Math.max(overlapStore) - ) transitions[curr].overlap++; + let overlapStore = processedTransitions.map(transition => transition.overlap); + + if (transitions[curr].overlap === Math.max(...overlapStore)) { + let previousTransition = processedTransitions.find(transition => { + return transition.overlap===transitions[curr].overlap; + }); + if (this.isSimultaneousTransition(transitions[curr], previousTransition)) { + transitions[curr].overlap++; + } + } } return Object.freeze(transitions); @@ -247,6 +252,12 @@ export default { return this.position(endTs) - this.position(startTs) + this.pointWidth; }, + isSimultaneousTransition(currTransition, prevTransition) { + return prevTransition.startPos <= currTransition.startPos + && currTransition.startPos <= prevTransition.startPos+prevTransition.width + && currTransition.overlap === prevTransition.overlap; + }, + /** * Converts a position as a percentage of the timeline width to a timestamp. * @param {number} position - target position as a percentage of the