1
1
'use strict' ;
2
2
3
- /**
4
- * Grunt project setting
5
- */
3
+ // Chrome extension
4
+ var manifest = chrome . runtime . getManifest ( ) ,
5
+ extVersion = manifest . version ;
6
+
7
+ // Grunt project setting
6
8
var socket ,
7
9
projects = [ ] ,
8
10
currentProject ;
9
11
10
- /**
11
- * Port settings
12
- */
12
+ // Port settings
13
13
var startPort = 61749 ,
14
14
currentPort = startPort ,
15
15
maxPort = currentPort + 5 ;
16
16
17
- /**
18
- * Templates
19
- */
17
+ // Templates
20
18
var projectListTpl = _ . template ( $ ( "#projectList" ) . html ( ) ) ,
21
19
taskListTpl = _ . template ( $ ( "#taskList" ) . html ( ) ) ,
22
20
bgTasksTpl = _ . template ( $ ( "#bgTaskList" ) . html ( ) ) ;
23
21
24
- /**
25
- * UI Selectors
26
- */
22
+ // UI Selectors
27
23
var $output = $ ( "#placeOutput" ) ,
28
24
$outputWrap = $ ( '#output' ) ,
29
25
$body = $ ( 'body' ) ,
@@ -32,7 +28,8 @@ var $output = $("#placeOutput"),
32
28
$bgTasks = $ ( '#placeBackgroundTasks' ) ,
33
29
$regularTasks = $ ( '#placeTasks' ) ,
34
30
$aliasTasks = $ ( '#placeAliasTasks' ) ,
35
- $projects = $ ( '#placeProjects' ) ;
31
+ $projects = $ ( '#placeProjects' ) ,
32
+ $warning = $ ( '#updateWarning' ) ;
36
33
37
34
/**
38
35
* Connect to a devtools socket
@@ -82,13 +79,14 @@ function handleSocketMessage(event) {
82
79
// connecting a new project
83
80
// add this new project
84
81
projects . push ( {
85
- name :data . project ,
86
- port :parseInt ( data . port ) ,
87
- socket :socket ,
88
- taskListAlias :data . alias ,
89
- taskListGeneric :data . tasks ,
90
- tasks :[ ] ,
91
- running :false
82
+ name : data . project ,
83
+ port : parseInt ( data . port ) ,
84
+ socket : socket ,
85
+ taskListAlias : data . alias ,
86
+ taskListGeneric : data . tasks ,
87
+ tasks : [ ] ,
88
+ running : false ,
89
+ devtoolsVersion : data . devtoolsVersion
92
90
} ) ;
93
91
94
92
// add new project button
@@ -107,7 +105,7 @@ function handleSocketMessage(event) {
107
105
}
108
106
// process started
109
107
else if ( data && data . action === 'start' ) {
110
- currentProject . currentTask = { name :data . name , pid :data . pid , output :[ ] } ;
108
+ currentProject . currentTask = { name : data . name , pid : data . pid , output : [ ] } ;
111
109
currentProject . tasks . push ( currentProject . currentTask ) ;
112
110
updateTaskList ( ) ;
113
111
}
@@ -117,21 +115,25 @@ function handleSocketMessage(event) {
117
115
$output . html ( '' ) ;
118
116
} else if ( data . length > 1 ) {
119
117
if ( currentProject . tasks . length > 0 ) {
120
- var msg = data . split ( "|" ) ;
121
- var pid = msg [ 0 ] ;
122
- var timestamp = new Date ( ) . toString ( ) . split ( ' ' ) [ 4 ] ;
123
- var output = '<pre>' + timestamp + ' - ' + msg [ 1 ] + '</pre>' ;
118
+ var msg = data . split ( "|" ) ,
119
+ pid = msg [ 0 ] ,
120
+ timestamp = new Date ( ) . toString ( ) . split ( ' ' ) [ 4 ] ,
121
+ output = '<pre>' + timestamp + ' - ' + _ . escape ( msg [ 1 ] ) + '</pre>' ;
122
+
123
+ // find a task with a process id of the message
124
124
var pidTask = _ . find ( currentProject . tasks , function ( task ) {
125
125
return task . pid === parseInt ( pid ) ;
126
126
} ) ;
127
+
128
+ // if we found a task with a pid
127
129
if ( pidTask ) {
128
130
pidTask . output . push ( output ) ;
129
131
}
130
- // append output
132
+
133
+ // append output to the current view if the process id matches
131
134
if ( currentProject . currentTask && parseInt ( pid ) === currentProject . currentTask . pid ) {
132
135
$output . append ( output ) ;
133
- // TODO: fix this
134
- $outputWrap . scrollTop ( 99999 ) ;
136
+ $outputWrap . scrollTop ( $output . height ( ) ) ;
135
137
}
136
138
}
137
139
}
@@ -175,7 +177,7 @@ function handleSocketClose(e) {
175
177
*/
176
178
function handleSocketError ( ) {
177
179
// TODO: update this
178
- alert ( 'Something went really wrong, please report this...' ) ;
180
+ console . log ( 'Something went really wrong, please report this...' ) ;
179
181
}
180
182
181
183
function updateProjectList ( ) {
@@ -185,8 +187,8 @@ function updateProjectList() {
185
187
186
188
function updateTaskList ( ) {
187
189
// set the tasks
188
- $regularTasks . html ( taskListTpl ( { buttons :currentProject . taskListGeneric } ) ) ;
189
- $aliasTasks . html ( taskListTpl ( { buttons :currentProject . taskListAlias } ) ) ;
190
+ $regularTasks . html ( taskListTpl ( { buttons : currentProject . taskListGeneric } ) ) ;
191
+ $aliasTasks . html ( taskListTpl ( { buttons : currentProject . taskListAlias } ) ) ;
190
192
191
193
if ( currentProject . currentTask ) {
192
194
$ ( '.task[value="' + currentProject . currentTask . name + '"]' )
@@ -203,7 +205,7 @@ function updateTaskList() {
203
205
204
206
if ( bgTasks . length > 0 ) {
205
207
$bgSection . addClass ( 'show' ) ;
206
- $bgTasks . html ( bgTasksTpl ( { tasks :bgTasks } ) ) ;
208
+ $bgTasks . html ( bgTasksTpl ( { tasks : bgTasks } ) ) ;
207
209
} else {
208
210
$bgSection . removeClass ( 'show' ) ;
209
211
}
@@ -223,6 +225,14 @@ function setProject(idx) {
223
225
var buttons = $projects . find ( 'button' ) ;
224
226
buttons . removeClass ( 'active' ) ;
225
227
$ ( buttons . get ( idx ) ) . addClass ( 'active' ) ;
228
+ console . log ( currentProject . devtoolsVersion ) ;
229
+ // check version
230
+ if ( currentProject . devtoolsVersion == null || currentProject . devtoolsVersion . replace ( / - / g, '.' ) !== extVersion ) {
231
+ $warning . addClass ( 'show' ) ;
232
+ } else {
233
+ $warning . removeClass ( 'show' ) ;
234
+ }
235
+
226
236
// clear output
227
237
if ( currentProject && currentProject . currentTask ) {
228
238
$output . html ( currentProject . currentTask . output ) ;
@@ -304,16 +314,16 @@ $tasks.on('click', '.b-kill', function () {
304
314
305
315
// if there's a pid, use it instead
306
316
if ( btn . data ( 'pid' ) ) {
307
- taskInfo = { name :btn . val ( ) , pid :btn . data ( 'pid' ) } ;
317
+ taskInfo = { name : btn . val ( ) , pid : btn . data ( 'pid' ) } ;
308
318
// TODO: validate this?
309
319
currentProject . tasks = _ . reject ( currentProject . tasks , function ( task ) {
310
320
return task . pid === btn . data ( 'pid' ) ;
311
321
} ) ;
312
322
updateTaskList ( ) ;
313
323
}
314
324
currentProject . socket . send ( JSON . stringify ( {
315
- action :'killTask' ,
316
- task :taskInfo
325
+ action : 'killTask' ,
326
+ task : taskInfo
317
327
} ) ) ;
318
328
} ) ;
319
329
0 commit comments