@@ -14,8 +14,8 @@ import Slider from '@material-ui/core/Slider';
14
14
import styles from './index.less' ;
15
15
import * as PIXI from 'pixi.js'
16
16
17
- const canvasWidth_Middle = 800
18
- const canvasHeight_Middle = 470
17
+ // const canvasWidth_Middle = 800
18
+ // const canvasHeight_Middle = 470
19
19
20
20
const useStyles = makeStyles ( {
21
21
root : {
@@ -37,6 +37,8 @@ class PageFour extends React.Component {
37
37
this . stepItem [ i ] = React . createRef ( ) ;
38
38
} )
39
39
40
+ // this.saveRef = ref => {this.refDom = ref};
41
+
40
42
this . state = {
41
43
// data that will be used/changed in render function
42
44
blockIndex : 0 ,
@@ -47,14 +49,27 @@ class PageFour extends React.Component {
47
49
drawBlocks : allStages [ 0 ] ,
48
50
playSpeed : 3 ,
49
51
playButtonColor : 'primary' ,
50
- pauseButtonColor : 'default'
52
+ pauseButtonColor : 'default' ,
53
+ canvasWidth_Middle : 800 ,
54
+ canvasHeight_Middle : 470 ,
51
55
}
52
56
53
57
// Every function that interfaces with UI and data used
54
58
// in this class needs to bind like this:
55
59
this . handleOnClick = this . handleOnClick . bind ( this ) ;
60
+ this . updateWindowDimensions = this . updateWindowDimensions . bind ( this ) ;
56
61
}
57
62
63
+ updateWindowDimensions ( ) {
64
+ if ( this . refDom ) {
65
+ const { clientWidth, clientHeight} = this . refDom ;
66
+ const tmp_width = Math . max ( clientWidth - 550 , 720 )
67
+ this . setState ( { canvasWidth_Middle : tmp_width , canvasHeight_Middle : Math . min ( tmp_width / 2 , clientHeight - 120 ) } , ( val ) => {
68
+ console . log ( 'client.inner' , clientWidth , clientHeight ) ;
69
+ } ) ;
70
+ }
71
+ }
72
+
58
73
handleOnClick ( ) {
59
74
this . props . history . push ( '/' )
60
75
}
@@ -74,6 +89,8 @@ class PageFour extends React.Component {
74
89
}
75
90
76
91
componentDidMount ( ) {
92
+ this . updateWindowDimensions ( ) ;
93
+ window . addEventListener ( 'resize' , this . updateWindowDimensions ) ;
77
94
}
78
95
79
96
highlight ( index ) {
@@ -381,17 +398,18 @@ class PageFour extends React.Component {
381
398
if ( this . handlerPlay ) {
382
399
clearInterval ( this . handlerPlay ) ;
383
400
}
401
+ this . refDom . removeEventListener ( 'resize' , this . updateWindowDimensions ) ;
384
402
}
385
403
386
404
render ( ) {
387
405
// Get all sprites
388
406
// var sprites = vfg.visualStages[this.state.stepInfoIndex].visualSprites;
389
407
var sprites = this . state . drawBlocks ;
390
408
// Sort sprites by their depth
391
- sprites . sort ( ( itemA , itemB ) => itemA . depth - itemB . depth )
409
+ sprites && sprites . sort ( ( itemA , itemB ) => itemA . depth - itemB . depth )
392
410
393
411
return (
394
- < div className = { styles . container } >
412
+ < div className = { styles . container } ref = { ( ref ) => this . refDom = ref } >
395
413
< div className = { styles . left } >
396
414
< div className = { styles . sub_title } > Steps </ div >
397
415
< div className = { styles . left_upper } >
@@ -407,21 +425,27 @@ class PageFour extends React.Component {
407
425
} )
408
426
}
409
427
</ div >
410
- < div >
428
+ < div className = { styles . sub_title } > Step Info </ div >
429
+ < div className = { styles . step_info } >
430
+ {
431
+ stepInfo [ this . state . stepInfoIndex ]
432
+ }
433
+ </ div >
434
+ { /* <div>
411
435
<div className={styles.sub_title}> Step Info </div>
412
436
<div className={styles.step_info}>
413
437
{
414
438
stepInfo[this.state.stepInfoIndex]
415
439
}
416
440
</div>
417
- </ div >
441
+ </div> */ }
418
442
</ div >
419
443
< div className = { styles . middle } >
420
- < Stage width = { canvasWidth_Middle } height = { canvasHeight_Middle }
444
+ < Stage width = { this . state . canvasWidth_Middle } height = { this . state . canvasHeight_Middle }
421
445
options = { { backgroundColor : 0xffffff } } key = { 'main-graph' } >
422
446
{
423
447
424
- sprites . map ( ( sprite , i ) => {
448
+ sprites && sprites . map ( ( sprite , i ) => {
425
449
// Get the texture name
426
450
var textureName = sprite . prefabimage
427
451
// Get the color of the sprite
@@ -432,17 +456,17 @@ class PageFour extends React.Component {
432
456
// Initialize the rotation of the sprite
433
457
var rotation = 0
434
458
// Initialize the x-axis coordinate position of the sprite
435
- var x = sprite . minX * canvasHeight_Middle
459
+ var x = sprite . minX * this . state . canvasHeight_Middle
436
460
// Initialize the y-axis coordinate position of the sprite
437
- var y = canvasHeight_Middle - sprite . maxY * canvasHeight_Middle
461
+ var y = this . state . canvasHeight_Middle - sprite . maxY * this . state . canvasHeight_Middle
438
462
// Initialize the anchor (i.e. the origin point) of the sprite
439
463
var anchor = ( 0 , 0 )
440
464
// Update the anchor, rotation, (x,y) location if the sprite need to be rotated
441
465
if ( 'rotate' in sprite ) {
442
466
anchor = ( 0.5 , 0.5 )
443
467
rotation = sprite . rotate * Math . PI / 180 ;
444
- x = sprite . minX * canvasHeight_Middle + ( sprite . maxX - sprite . minX ) * canvasHeight_Middle / 2
445
- y = canvasHeight_Middle - sprite . minY * canvasHeight_Middle
468
+ x = sprite . minX * this . state . canvasHeight_Middle + ( sprite . maxX - sprite . minX ) * this . state . canvasHeight_Middle / 2
469
+ y = this . state . canvasHeight_Middle - sprite . minY * this . state . canvasHeight_Middle
446
470
}
447
471
// Draw the sprite with a text
448
472
if ( sprite . showname ) {
@@ -456,17 +480,17 @@ class PageFour extends React.Component {
456
480
rotation = { rotation }
457
481
x = { x }
458
482
y = { y }
459
- width = { ( sprite . maxX - sprite . minX ) * canvasHeight_Middle }
460
- height = { ( sprite . maxY - sprite . minY ) * canvasHeight_Middle }
483
+ width = { ( sprite . maxX - sprite . minX ) * this . state . canvasHeight_Middle }
484
+ height = { ( sprite . maxY - sprite . minY ) * this . state . canvasHeight_Middle }
461
485
tint = { color }
462
486
/>
463
487
< Text
464
488
// text on the sprite
465
489
text = { sprite . name }
466
490
style = { { fontFamily : 'Arial' , fontSize : 16 , fill : 0x000000 } }
467
491
anchor = { ( 0.5 , 0.5 ) }
468
- x = { x + ( sprite . maxX - sprite . minX ) * canvasHeight_Middle / 2 }
469
- y = { y + ( sprite . maxY - sprite . minY ) * canvasHeight_Middle / 2 }
492
+ x = { x + ( sprite . maxX - sprite . minX ) * this . state . canvasHeight_Middle / 2 }
493
+ y = { y + ( sprite . maxY - sprite . minY ) * this . state . canvasHeight_Middle / 2 }
470
494
/>
471
495
</ >
472
496
)
@@ -482,8 +506,8 @@ class PageFour extends React.Component {
482
506
rotation = { rotation }
483
507
x = { x }
484
508
y = { y }
485
- width = { ( sprite . maxX - sprite . minX ) * canvasHeight_Middle }
486
- height = { ( sprite . maxY - sprite . minY ) * canvasHeight_Middle }
509
+ width = { ( sprite . maxX - sprite . minX ) * this . state . canvasHeight_Middle }
510
+ height = { ( sprite . maxY - sprite . minY ) * this . state . canvasHeight_Middle }
487
511
tint = { color }
488
512
/>
489
513
</ >
@@ -492,7 +516,8 @@ class PageFour extends React.Component {
492
516
} )
493
517
}
494
518
</ Stage >
495
- < div style = { { height :'50px' } } >
519
+ < div className = { styles . btn_box } >
520
+ < div >
496
521
< IconButton color = "primary" style = { { float :'left' , marginLeft :'6%' , marginRight :'5%' } } onClick = { ( ) => { this . handlePreviousClick ( this . state . stepInfoIndex ) ; } } >
497
522
< SkipPreviousIcon fontSize = "large" />
498
523
</ IconButton >
@@ -522,10 +547,11 @@ class PageFour extends React.Component {
522
547
// onChangeCommitted={this.handleSpeedScroll()}
523
548
/>
524
549
</ div >
550
+ </ div >
525
551
</ div >
526
552
527
553
< div className = { styles . right } >
528
- < div style = { { marginTop :'5px' , marginBottom :'5px' } } >
554
+ < div style = { { marginTop :'5px' , marginBottom :'5px' , width : 220 } } >
529
555
< Button variant = "contained" color = "primary" size = "small" onClick = { ( ) => { this . handleShowGoalClick ( ) } } >
530
556
Show the Goal
531
557
</ Button >
@@ -534,12 +560,12 @@ class PageFour extends React.Component {
534
560
Export
535
561
</ Button >
536
562
</ div >
537
- < div className = { styles . sub_title } >
538
- < div className = { styles . sub_title_key } > Subgoal</ div >
539
- < div className = { styles . sub_title_selected } > { Object . keys ( this . state . selectedSubGoals || { } ) . length } /{ subGoal . size } </ div >
563
+ < div className = { styles . sub_title } style = { { position : 'relative' } } >
564
+ < span className = { styles . sub_title_key } > Subgoal</ span >
565
+ < span className = { styles . sub_title_selected } > { Object . keys ( this . state . selectedSubGoals || { } ) . length } /{ subGoal . size } </ span >
540
566
</ div >
541
567
< div className = { styles . sub_list } >
542
- {
568
+ { sprites &&
543
569
[ ...subGoal . keys ( ) ] . map ( key => {
544
570
return < div className = { styles . sub_item + ' ' + ( this . state . selectedSubGoals [ key ] ? styles . highlight_item : ' ' ) }
545
571
key = { key } onClick = { ( ) => { this . handleSubItemClick ( key ) } } >
0 commit comments