@@ -59,6 +59,27 @@ css.innerHTML = `
5959.speedrun-minimum #speedrun-restore, .speedrun-maximum #speedrun-restore { display: block; }` ;
6060document . body . append ( css ) ;
6161
62+ document . addEventListener ( 'dragstart' , ( event ) => {
63+ let pane = event . target . closest ( 'div[id^=speedrun-' ) ;
64+ if ( pane . draggable ) {
65+ srDrag = pane ;
66+ srX = event . clientX - srDrag . offsetLeft ;
67+ srY = event . clientY - srDrag . offsetTop ;
68+ }
69+ } ) ;
70+
71+ document . addEventListener ( 'dragover' , ( event ) => {
72+ event . preventDefault ( ) ;
73+ } ) ;
74+
75+ document . addEventListener ( 'drop' , ( event ) => {
76+ event . preventDefault ( ) ;
77+ let left = event . clientX - srX ;
78+ let top = event . clientY - srY ;
79+ srDrag . offset = srDrag . style . cssText = `left: ${ left } px; top: ${ top } px;` ;
80+ srDrag = null ;
81+ } ) ;
82+
6283document . querySelector ( 'main' ) . addEventListener ( 'contextmenu' , async ( event ) => {
6384 if ( event . ctrlKey || event . altKey || event . shiftKey ) {
6485 return ;
@@ -95,50 +116,35 @@ document.querySelector('main').addEventListener('contextmenu', async (event) =>
95116 }
96117 event . preventDefault ( ) ;
97118 let { url, rank, player, time } = result ;
98- let id = url . slice ( url . lastIndexOf ( '/' ) + 1 ) ;
119+ let id = url . substring ( url . lastIndexOf ( '/' ) + 1 ) ;
99120 if ( worker [ id ] ) {
100121 return ;
101122 }
102123 worker [ id ] = true ;
103124 let title = `<div>Rank: ${ rank . innerHTML } </div><div>Player: ${ player . innerHTML } </div><div>Time: ${ time . textContent } </div>` ;
104- if ( speedrun [ id ] ) {
125+ let pane = speedrun [ id ] ;
126+ if ( pane ) {
105127 worker [ id ] = false ;
106- speedrun [ id ] . style . cssText = style [ id ] = fixedPanePosition ( speedrun [ id ] . offset ) ;
107- return document . body . appendChild ( speedrun [ id ] ) ;
128+ pane . style . cssText = pane . offset ;
129+ pane . classList . remove ( 'speedrun-maximum' , 'speedrun-minimum' ) ;
130+ document . body . appendChild ( speedrun [ id ] ) ;
131+ return ;
108132 }
109133 let response = await fetch ( url ) ;
110134 let html = await response . text ( ) ;
111135 let start = html . indexOf ( '<iframe' ) ;
112136 let end = html . indexOf ( '</iframe>' , start ) + 9 ;
113137 let iframe = html . substring ( start , end ) ;
114- console . log ( iframe ) ;
115- createRecordWindow ( id , title , top , iframe ) ;
116- } ) ;
117-
118- document . addEventListener ( 'dragstart' , ( event ) => {
119- let pane = event . target . closest ( 'div[id^=speedrun-' ) ;
120- if ( pane . draggable ) {
121- srDrag = pane ;
122- srX = event . clientX - srDrag . offsetLeft ;
123- srY = event . clientY - srDrag . offsetTop ;
138+ let offset = ++ srPane * 30 ;
139+ let top = 130 + offset ;
140+ let left = ( innerWidth - fixedX ) / 2 + offset ;
141+ if ( left < 0 ) {
142+ left = 0 ;
124143 }
125- } ) ;
126-
127- document . addEventListener ( 'dragover' , ( event ) => {
128- event . preventDefault ( ) ;
129- } ) ;
130-
131- document . addEventListener ( 'drop' , ( event ) => {
132- event . preventDefault ( ) ;
133- srDrag . style . left = event . clientX - srX + 'px' ;
134- srDrag . style . top = event . clientY - srY + 'px' ;
135- srDrag = null ;
136- } ) ;
137-
138- function createRecordWindow ( id , title , top , player ) {
139- let pane = document . createElement ( 'div' ) ;
144+ let style = `top: ${ top } px; left: ${ left } px;` ;
145+ console . log ( iframe , style ) ;
146+ pane = document . createElement ( 'div' ) ;
140147 pane . id = 'speedrun-' + id ;
141- pane . offset = ++ srPane * 30 ;
142148 pane . className = 'speedrun-window' ;
143149 pane . draggable = true ;
144150 pane . innerHTML = `
@@ -149,8 +155,8 @@ function createRecordWindow(id, title, top, player) {
149155 <div id="speedrun-maximum">🔲</div>
150156 <div id="speedrun-remove">❌</div>
151157</div>
152- ${ player } `;
153- pane . style . cssText = style [ id ] = fixedPanePosition ( pane . offset ) ;
158+ ${ iframe } `;
159+ pane . style . cssText = pane . offset = style ;
154160 pane . addEventListener ( 'click' , ( event ) => {
155161 let { id } = event . target ;
156162 if ( id === 'speedrun-minimum' ) {
@@ -162,8 +168,8 @@ ${player}`;
162168 pane . classList . remove ( 'speedrun-minimum' ) ;
163169 pane . style . cssText = '' ;
164170 } else if ( id === 'speedrun-restore' ) {
171+ pane . style . cssText = pane . offset ;
165172 pane . classList . remove ( 'speedrun-maximum' , 'speedrun-minimum' ) ;
166- pane . style . cssText = style [ id ] ;
167173 } else if ( id === 'speedrun-remove' ) {
168174 pane . remove ( ) ;
169175 -- srPane ;
@@ -172,13 +178,4 @@ ${player}`;
172178 document . body . appendChild ( pane ) ;
173179 speedrun [ id ] = pane ;
174180 worker [ id ] = false ;
175- }
176-
177- function fixedPanePosition ( offset ) {
178- let top = 130 + offset ;
179- let left = ( innerWidth - fixedX ) / 2 + offset ;
180- if ( left < 0 ) {
181- left = 0 ;
182- }
183- return `top: ${ top } px; left: ${ left } px;` ;
184- }
181+ } ) ;
0 commit comments