4040</ script >
4141
4242< script type ="text/x-jsrender " id ="bullseye-template-result-x11 ">
43+ < div id = "bullseye-x11-video" class = "hide" > < video controls > </ div >
44+ < div id = "bullseye-x11-menu" class = "hide" >
45+ Play capture |
46+ < span id = "bullseye-x11-video-close" > close</ span >
47+ </ div >
4348 < div class = "flex" >
44- < div class = "items team" >
45- < div class = "menu" >
46- play capture
47- < a href = "#" > success</ a >
48- < a href = "#" > failed</ a >
49- </ div >
50- </ div >
5149 < div class = "items team" >
5250 < div class = "name" > { { > team_name} } </ div >
5351 </ div >
5452 < div class = "items problem" >
5553 < div class = "name" > { { > problem_name} } </ div >
5654 < div class = "score" >
57- < div class = "count" > { { > count} } </ div >
55+ < div class = "count" > { { : count} } </ div >
5856 < div class = "point" > +{ { > score} } pt</ div >
5957 </ div >
6058 </ div >
@@ -136,6 +134,24 @@ $(() => {
136134 } )
137135 }
138136
137+ let x11play = ( type ) => {
138+ $ . getJSON ( `${ CONFIG . API_BASE } /capture_id/${ ID } /${ type } .json` , ( r ) => {
139+ if ( r . id === null ) {
140+ alert ( 'Not found caputre' )
141+ }
142+ $ ( '#bullseye-x11-video' ) . removeClass ( 'hide' )
143+ $ ( '#bullseye-x11-video video' ) . attr ( 'src' , `<%= url_for :action => 'capture' %> ?id=${ r . id } ` )
144+ } )
145+ }
146+
147+ let formatTime = ( start_at ) => {
148+ let date = new Date ( Date . parse ( start_at ) )
149+ //let day = date.getDate()
150+ let hour = ( '0' + date . getHours ( ) ) . slice ( - 2 )
151+ let min = ( '0' + date . getMinutes ( ) ) . slice ( - 2 )
152+ return `${ hour } :${ min } `
153+ }
154+
139155 let action = ( r ) => {
140156 let rate = Math . floor ( r . problem . succeeded / r . problem . ntrials * 100 )
141157 let exploitCountId = 0
@@ -212,9 +228,10 @@ $(() => {
212228 'count' : ( perfect ? "Bull's Eye<br>" : '' ) + r . problem . succeeded + ' / ' + r . problem . ntrials ,
213229 'score' : r . problem . score ,
214230 }
231+ let element = ( r . problem . x11_required ) ? '#bullseye-template-result-x11' : '#bullseye-template-result'
215232 $ ( '#bullseye-result' )
216233 . addClass ( perfect ? 'perfect' : '' )
217- . append ( $ ( '#bullseye-template-result' ) . render ( param ) )
234+ . append ( $ ( element ) . render ( param ) )
218235 . fadeIn ( 200 )
219236 $ ( '#bullseye-problem-succeeded' ) . text ( r . problem . succeeded )
220237
@@ -228,31 +245,28 @@ $(() => {
228245 }
229246 }
230247
231- //if (r.problem.x11_required) {
232- // $('#bullseye-result').click(finalize)
233- //} else {
234- // $('#bullseye-result').click(finalize)
235- // setTimeout(finalize, 5000)
236- //}
237- $ ( '#bullseye-result' ) . click ( finalize )
238- setTimeout ( finalize , 5000 )
248+ if ( r . problem . x11_required ) {
249+ // video
250+ $ ( '#bullseye-x11-video-close' ) . click ( ( ) => { $ ( '#bullseye-x11-video' ) . addClass ( 'hide' ) } )
251+ $ ( '#bullseye-x11-video video' ) . error ( ( ) => { alert ( 'Broken video X(' ) } )
252+ $ . getJSON ( `${ CONFIG . API_BASE } /capture_type/${ ID } .json` , ( r ) => {
253+ types = r [ 'types' ]
254+ if ( types . length > 0 ) {
255+ $ ( '#bullseye-x11-menu' ) . removeClass ( 'hide' )
256+ }
257+ $ . each ( types , ( index , value ) => {
258+ let menu = $ ( `<span>${ value } </span>` ) . click ( ( ) => { x11play ( value ) } )
259+ $ ( '#bullseye-x11-menu' ) . append ( menu )
260+ } )
261+ } )
262+ } else {
263+ setTimeout ( finalize , 5000 )
264+ }
265+ $ ( '#bullseye-result .flex' ) . click ( finalize )
239266 } )
240267 }
241268
242269 let test = ( r ) => {
243- let perfect = r . problem . succeeded === r . problem . ntrials
244- let param = {
245- 'team_name' : r . team . name ,
246- 'team_id' : r . team . team_id ,
247- 'problem_name' : r . problem . name ,
248- 'round' : r . problem . round_id ,
249- 'count' : ( perfect ? "Bull's Eye<br>" : '' ) + r . problem . succeeded + ' / ' + r . problem . ntrials ,
250- 'score' : r . problem . score ,
251- }
252- $ ( '#bullseye-result' )
253- . addClass ( perfect ? 'perfect' : '' )
254- . append ( $ ( '#bullseye-template-result-x11' ) . render ( param ) )
255- . fadeIn ( 200 )
256270 }
257271
258272 // dispatch
@@ -261,7 +275,7 @@ $(() => {
261275 $ ( '#bullseye-team' ) . append ( $ ( '#bullseye-template-team' ) . render ( r . team ) )
262276 $ ( '#bullseye-problem' ) . append ( $ ( '#bullseye-template-problem' ) . render ( r . problem ) )
263277
264- let round = { 'round' : parseInt ( r . problem . round_id ) , 'time' : viewer_formatRound ( r . problem . problem_id , r . problem . round_id ) }
278+ let round = { 'round' : parseInt ( r . problem . round_id ) , 'time' : formatTime ( r . problem . round_start_at ) }
265279 $ ( '#bullseye-problem-round' ) . append ( $ ( '#bullseye-template-problem-round' ) . render ( round ) )
266280
267281 action ( r )
0 commit comments