@@ -36,9 +36,44 @@ export class AppJobComponent implements OnInit, OnDestroy {
3636 this . loading = true ;
3737 this . status = 'queued' ;
3838 this . terminalOptions = { size : 'large' } ;
39+ this . id = null ;
3940 }
4041
4142 ngOnInit ( ) {
43+ this . termSub = this . socketService . outputEvents
44+ . subscribe ( event => {
45+ if ( event . type === 'data' ) {
46+ this . ngZone . run ( ( ) => this . terminalInput = event . data ) ;
47+ } else if ( event . type === 'jobStopped' && event . data === this . id ) {
48+ this . processing = false ;
49+ } else if ( event . type === 'jobRestarted' && event . data === this . id ) {
50+ this . processing = false ;
51+ } else if ( event . type === 'exposedPort' ) {
52+ this . sshd = `${ document . location . hostname } :${ event . data } ` ;
53+ }
54+ } ) ;
55+
56+ this . sub = this . socketService . outputEvents
57+ . filter ( event => event . type === 'process' )
58+ . filter ( event => event . job_id === parseInt ( < any > this . id , 10 ) )
59+ . subscribe ( event => {
60+ if ( ! this . job ) {
61+ return ;
62+ }
63+
64+ if ( event . data === 'jobStarted' ) {
65+ this . job . status = 'running' ;
66+ this . job . end_time = null ;
67+ this . job . start_time = new Date ( ) . getTime ( ) ;
68+ } else if ( event . data === 'jobSucceded' ) {
69+ this . job . status = 'success' ;
70+ this . job . end_time = new Date ( ) . getTime ( ) ;
71+ } else if ( event . data == 'jobFailed' ) {
72+ this . job . status = 'failed' ;
73+ this . job . end_time = new Date ( ) . getTime ( ) ;
74+ }
75+ } ) ;
76+
4277 this . route . params . subscribe ( params => {
4378 this . id = params . id ;
4479
@@ -48,42 +83,12 @@ export class AppJobComponent implements OnInit, OnDestroy {
4883 this . timeWords = distanceInWordsToNow ( job . build . start_time ) ;
4984 this . loading = false ;
5085
51- this . termSub = this . socketService . outputEvents
52- . subscribe ( event => {
53- if ( event . type === 'data' ) {
54- this . ngZone . run ( ( ) => this . terminalInput = event . data ) ;
55- } else if ( event . type === 'jobStopped' && event . data === this . id ) {
56- this . processing = false ;
57- } else if ( event . type === 'jobRestarted' && event . data === this . id ) {
58- this . processing = false ;
59- } else if ( event . type === 'exposedPort' ) {
60- this . sshd = `${ document . location . hostname } :${ event . data } ` ;
61- }
62- } ) ;
63-
6486 this . socketService . emit ( { type : 'subscribeToJobOutput' , data : { jobId : this . id } } ) ;
6587
6688 this . updateJobTime ( ) ;
6789 setInterval ( ( ) => this . updateJobTime ( ) , 1000 ) ;
68-
69- this . sub = this . socketService . outputEvents
70- . filter ( event => event . type === 'process' )
71- . filter ( event => event . job_id === parseInt ( < any > this . id , 10 ) )
72- . subscribe ( event => {
73- if ( event . data === 'jobStarted' ) {
74- job . status = 'running' ;
75- job . end_time = null ;
76- job . start_time = new Date ( ) . getTime ( ) ;
77- } else if ( event . data === 'jobSucceded' ) {
78- job . status = 'success' ;
79- job . end_time = new Date ( ) . getTime ( ) ;
80- } else if ( event . data == 'jobFailed' ) {
81- job . status = 'failed' ;
82- job . end_time = new Date ( ) . getTime ( ) ;
83- }
84- } ) ;
85- } ) ;
8690 } ) ;
91+ } ) ;
8792 }
8893
8994 ngOnDestroy ( ) {
@@ -105,6 +110,7 @@ export class AppJobComponent implements OnInit, OnDestroy {
105110 e . stopPropagation ( ) ;
106111 this . terminalInput = { clear : true } ;
107112 this . processing = true ;
113+ this . sshd = null ;
108114 this . socketService . emit ( { type : 'restartJob' , data : { jobId : this . id } } ) ;
109115 }
110116
@@ -113,13 +119,15 @@ export class AppJobComponent implements OnInit, OnDestroy {
113119 e . stopPropagation ( ) ;
114120 this . terminalInput = { clear : true } ;
115121 this . processing = true ;
122+ this . sshd = null ;
116123 this . socketService . emit ( { type : 'restartJobWithSSH' , data : { jobId : this . id } } ) ;
117124 }
118125
119126 stopJob ( e : MouseEvent ) : void {
120127 e . preventDefault ( ) ;
121128 e . stopPropagation ( ) ;
122129 this . processing = true ;
130+ this . sshd = null ;
123131 this . socketService . emit ( { type : 'stopJob' , data : { jobId : this . id } } ) ;
124132 }
125133
0 commit comments