@@ -4,24 +4,24 @@ var _ = require('lodash');
4
4
var common = require ( './common' ) ;
5
5
6
6
// runs on all routes and checks password if one is setup
7
- router . all ( '/api/*' , common . checkLogin , function ( req , res , next ) {
7
+ router . all ( '/api/*' , common . checkLogin , function ( req , res , next ) {
8
8
next ( ) ;
9
9
} ) ;
10
10
11
11
// pagination API
12
- router . post ( '/api/:conn/:db/:coll/:page' , function ( req , res , next ) {
12
+ router . post ( '/api/:conn/:db/:coll/:page' , function ( req , res , next ) {
13
13
var connection_list = req . app . locals . dbConnections ;
14
14
var ejson = require ( 'mongodb-extended-json' ) ;
15
15
var docs_per_page = parseInt ( req . body . docsPerPage ) !== undefined ? parseInt ( req . body . docsPerPage ) : 5 ;
16
16
17
17
// Check for existance of connection
18
- if ( connection_list [ req . params . conn ] === undefined ) {
19
- res . status ( 400 ) . json ( { 'msg' : req . i18n . __ ( 'Invalid connection name' ) } ) ;
18
+ if ( connection_list [ req . params . conn ] === undefined ) {
19
+ res . status ( 400 ) . json ( { 'msg' : req . i18n . __ ( 'Invalid connection name' ) } ) ;
20
20
}
21
21
22
22
// Validate database name
23
- if ( req . params . db . indexOf ( ' ' ) > - 1 ) {
24
- res . status ( 400 ) . json ( { 'msg' : req . i18n . __ ( 'Invalid database name' ) } ) ;
23
+ if ( req . params . db . indexOf ( ' ' ) > - 1 ) {
24
+ res . status ( 400 ) . json ( { 'msg' : req . i18n . __ ( 'Invalid database name' ) } ) ;
25
25
}
26
26
27
27
// Get DB's form pool
@@ -30,12 +30,12 @@ router.post('/api/:conn/:db/:coll/:page', function (req, res, next) {
30
30
var page_size = docs_per_page ;
31
31
var page = 1 ;
32
32
33
- if ( req . params . page !== undefined ) {
33
+ if ( req . params . page !== undefined ) {
34
34
page = parseInt ( req . params . page ) ;
35
35
}
36
36
37
37
var skip = 0 ;
38
- if ( page > 1 ) {
38
+ if ( page > 1 ) {
39
39
skip = ( page - 1 ) * page_size ;
40
40
}
41
41
@@ -44,10 +44,10 @@ router.post('/api/:conn/:db/:coll/:page', function (req, res, next) {
44
44
var query_obj = { } ;
45
45
var validQuery = true ;
46
46
var queryMessage = '' ;
47
- if ( req . body . query ) {
48
- try {
47
+ if ( req . body . query ) {
48
+ try {
49
49
query_obj = ejson . parse ( req . body . query ) ;
50
- } catch ( e ) {
50
+ } catch ( e ) {
51
51
validQuery = false ;
52
52
queryMessage = e . toString ( ) ;
53
53
query_obj = { } ;
@@ -56,29 +56,29 @@ router.post('/api/:conn/:db/:coll/:page', function (req, res, next) {
56
56
57
57
console . log ( skip , limit ) ;
58
58
59
- mongo_db . collection ( req . params . coll ) . find ( query_obj , { skip : skip , limit : limit } ) . toArray ( function ( err , result ) {
60
- if ( err ) {
59
+ mongo_db . collection ( req . params . coll ) . find ( query_obj , { skip : skip , limit : limit } ) . toArray ( function ( err , result ) {
60
+ if ( err ) {
61
61
console . error ( err ) ;
62
62
res . status ( 500 ) . json ( err ) ;
63
- } else {
64
- mongo_db . collection ( req . params . coll ) . find ( { } , { skip : skip , limit : limit } ) . toArray ( function ( err , simpleSearchFields ) {
63
+ } else {
64
+ mongo_db . collection ( req . params . coll ) . find ( { } , { skip : skip , limit : limit } ) . toArray ( function ( err , simpleSearchFields ) {
65
65
// get field names/keys of the Documents in collection
66
66
var fields = [ ] ;
67
- for ( var i = 0 ; i < simpleSearchFields . length ; i ++ ) {
67
+ for ( var i = 0 ; i < simpleSearchFields . length ; i ++ ) {
68
68
var doc = simpleSearchFields [ i ] ;
69
69
70
- for ( var key in doc ) {
71
- if ( key === '__v' ) continue ;
70
+ for ( var key in doc ) {
71
+ if ( key === '__v' ) continue ;
72
72
fields . push ( key ) ;
73
73
}
74
74
} ;
75
75
76
- fields = fields . filter ( function ( item , pos ) {
76
+ fields = fields . filter ( function ( item , pos ) {
77
77
return fields . indexOf ( item ) === pos ;
78
78
} ) ;
79
79
80
80
// get total num docs in query
81
- mongo_db . collection ( req . params . coll ) . count ( query_obj , function ( err , doc_count ) {
81
+ mongo_db . collection ( req . params . coll ) . count ( query_obj , function ( err , doc_count ) {
82
82
var return_data = {
83
83
data : result ,
84
84
fields : fields ,
@@ -97,11 +97,11 @@ router.post('/api/:conn/:db/:coll/:page', function (req, res, next) {
97
97
} ) ;
98
98
99
99
// Gets monitoring data
100
- router . get ( '/api/monitoring/:conn' , function ( req , res , next ) {
100
+ router . get ( '/api/monitoring/:conn' , function ( req , res , next ) {
101
101
var dayBack = new Date ( ) ;
102
102
dayBack . setDate ( dayBack . getDate ( ) - 1 ) ;
103
103
104
- req . db . find ( { connectionName : req . params . conn , eventDate : { $gte : dayBack } } ) . sort ( { eventDate : 1 } ) . exec ( function ( err , serverEvents ) {
104
+ req . db . find ( { connectionName : req . params . conn , eventDate : { $gte : dayBack } } ) . sort ( { eventDate : 1 } ) . exec ( function ( err , serverEvents ) {
105
105
var connectionsCurrent = [ ] ;
106
106
var connectionsAvailable = [ ] ;
107
107
var connectionsTotalCreated = [ ] ;
@@ -119,85 +119,39 @@ router.get('/api/monitoring/:conn', function (req, res, next) {
119
119
var docsDeleted = [ ] ;
120
120
var docsUpdated = [ ] ;
121
121
122
- if ( serverEvents . length > 0 ) {
123
- if ( serverEvents [ 0 ] . dataRetrieved === true ) {
124
- if ( serverEvents ) {
125
- _ . each ( serverEvents , function ( value , key ) {
122
+ if ( serverEvents . length > 0 ) {
123
+ if ( serverEvents [ 0 ] . dataRetrieved === true ) {
124
+ if ( serverEvents ) {
125
+ _ . each ( serverEvents , function ( value , key ) {
126
126
// connections
127
- if ( value . connections ) {
128
- connectionsCurrent . push ( { x : value . eventDate , y : value . connections . current } ) ;
129
- connectionsAvailable . push ( { x : value . eventDate , y : value . connections . available } ) ;
130
- connectionsTotalCreated . push ( { x : value . eventDate , y : value . connections . totalCreated } ) ;
127
+ if ( value . connections ) {
128
+ connectionsCurrent . push ( { x : value . eventDate , y : value . connections . current } ) ;
129
+ connectionsAvailable . push ( { x : value . eventDate , y : value . connections . available } ) ;
130
+ connectionsTotalCreated . push ( { x : value . eventDate , y : value . connections . totalCreated } ) ;
131
131
}
132
132
// clients
133
- if ( value . activeClients ) {
134
- clientsTotal . push ( { x : value . eventDate , y : value . activeClients . total } ) ;
135
- clientsReaders . push ( { x : value . eventDate , y : value . activeClients . readers } ) ;
136
- clientsWriters . push ( { x : value . eventDate , y : value . activeClients . writers } ) ;
133
+ if ( value . activeClients ) {
134
+ clientsTotal . push ( { x : value . eventDate , y : value . activeClients . total } ) ;
135
+ clientsReaders . push ( { x : value . eventDate , y : value . activeClients . readers } ) ;
136
+ clientsWriters . push ( { x : value . eventDate , y : value . activeClients . writers } ) ;
137
137
}
138
138
// memory
139
- if ( value . memory ) {
140
- memoryVirtual . push ( { x : value . eventDate , y : value . memory . virtual } ) ;
141
- memoryMapped . push ( { x : value . eventDate , y : value . memory . mapped } ) ;
142
- memoryCurrent . push ( { x : value . eventDate , y : value . memory . resident } ) ;
139
+ if ( value . memory ) {
140
+ memoryVirtual . push ( { x : value . eventDate , y : value . memory . virtual } ) ;
141
+ memoryMapped . push ( { x : value . eventDate , y : value . memory . mapped } ) ;
142
+ memoryCurrent . push ( { x : value . eventDate , y : value . memory . resident } ) ;
143
143
}
144
144
145
- if ( value . docCounts ) {
146
- docsQueried . push ( { x : value . eventDate , y : value . docCounts . queried } ) ;
147
- docsInserted . push ( { x : value . eventDate , y : value . docCounts . inserted } ) ;
148
- docsDeleted . push ( { x : value . eventDate , y : value . docCounts . deleted } ) ;
149
- docsUpdated . push ( { x : value . eventDate , y : value . docCounts . updated } ) ;
145
+ if ( value . docCounts ) {
146
+ docsQueried . push ( { x : value . eventDate , y : value . docCounts . queried } ) ;
147
+ docsInserted . push ( { x : value . eventDate , y : value . docCounts . inserted } ) ;
148
+ docsDeleted . push ( { x : value . eventDate , y : value . docCounts . deleted } ) ;
149
+ docsUpdated . push ( { x : value . eventDate , y : value . docCounts . updated } ) ;
150
150
}
151
151
} ) ;
152
152
}
153
153
}
154
154
155
- function averageDatapoints ( datapoints , limit ) {
156
- if ( limit >= datapoints . length )
157
- return datapoints ;
158
-
159
- var min = datapoints [ 0 ] . x . getTime ( ) ;
160
- var max = datapoints [ datapoints . length - 1 ] . x . getTime ( ) ;
161
-
162
- if ( limit < 1 ) {
163
- return [ {
164
- x : new Date ( ( min + max ) / 2 ) ,
165
- y : datapoints . reduce ( ( a , b ) => a . y + b . y , 0 ) / datapoints . length
166
- } ] ;
167
- } else {
168
- var step = ( max - min ) / limit ;
169
- var result = [ ] ;
170
- var l = min + step ;
171
- var n = 0 ;
172
- var sumx = 0 ;
173
- var sumy = 0 ;
174
- for ( var i = 0 ; i < datapoints . length ; i ++ ) {
175
- if ( datapoints [ i ] . x . getTime ( ) > l ) {
176
- if ( n > 0 )
177
- result . push ( {
178
- x : sumy ? new Date ( sumx / sumy ) : new Date ( l - step / 2 ) ,
179
- y : sumy / n
180
- } ) ;
181
- while ( datapoints [ i ] . x . getTime ( ) > l ) {
182
- l += step ;
183
- }
184
- n = 0 ;
185
- var sumx = 0 ;
186
- var sumy = 0 ;
187
- }
188
- n ++ ;
189
- sumx += datapoints [ i ] . x . getTime ( ) * datapoints [ i ] . y ;
190
- sumy += datapoints [ i ] . y ;
191
- }
192
- if ( n > 0 )
193
- result . push ( {
194
- x : sumy ? new Date ( sumx / sumy ) : new Date ( l - step / 2 ) ,
195
- y : sumy / n
196
- } ) ;
197
- return result ;
198
- }
199
- }
200
-
201
155
var dataPointsLimit = 1000 ;
202
156
203
157
var returnedData = {
@@ -218,19 +172,67 @@ router.get('/api/monitoring/:conn', function (req, res, next) {
218
172
219
173
// get hours or mins
220
174
var uptime = ( serverEvents [ 0 ] . uptime / 60 ) . toFixed ( 2 ) ;
221
- if ( uptime > 61 ) {
175
+ if ( uptime > 61 ) {
222
176
uptime = ( uptime / 60 ) . toFixed ( 2 ) + ' hours' ;
223
- } else {
177
+ } else {
224
178
uptime = uptime + ' minutes' ;
225
179
}
226
180
227
- if ( err ) {
228
- res . status ( 400 ) . json ( { 'msg' : req . i18n . __ ( 'Could not get server monitoring' ) } ) ;
229
- } else {
230
- res . status ( 200 ) . json ( { data : returnedData , dataRetrieved : serverEvents [ 0 ] . dataRetrieved , pid : serverEvents [ 0 ] . pid , version : serverEvents [ 0 ] . version , uptime : uptime } ) ;
181
+ if ( err ) {
182
+ res . status ( 400 ) . json ( { 'msg' : req . i18n . __ ( 'Could not get server monitoring' ) } ) ;
183
+ } else {
184
+ res . status ( 200 ) . json ( { data : returnedData , dataRetrieved : serverEvents [ 0 ] . dataRetrieved , pid : serverEvents [ 0 ] . pid , version : serverEvents [ 0 ] . version , uptime : uptime } ) ;
231
185
}
232
186
}
233
187
} ) ;
234
188
} ) ;
235
189
190
+ function averageDatapoints ( datapoints , limit ) {
191
+ if ( limit >= datapoints . length ) {
192
+ return datapoints ;
193
+ }
194
+
195
+ var min = datapoints [ 0 ] . x . getTime ( ) ;
196
+ var max = datapoints [ datapoints . length - 1 ] . x . getTime ( ) ;
197
+
198
+ if ( limit < 1 ) {
199
+ return [ {
200
+ x : new Date ( ( min + max ) / 2 ) ,
201
+ y : datapoints . reduce ( ( a , b ) => a . y + b . y , 0 ) / datapoints . length
202
+ } ] ;
203
+ }
204
+ var step = ( max - min ) / limit ;
205
+ var result = [ ] ;
206
+ var l = min + step ;
207
+ var n = 0 ;
208
+ var sumx = 0 ;
209
+ var sumy = 0 ;
210
+ for ( var i = 0 ; i < datapoints . length ; i ++ ) {
211
+ if ( datapoints [ i ] . x . getTime ( ) > l ) {
212
+ if ( n > 0 ) {
213
+ result . push ( {
214
+ x : sumy ? new Date ( sumx / sumy ) : new Date ( l - step / 2 ) ,
215
+ y : sumy / n
216
+ } ) ;
217
+ }
218
+ while ( datapoints [ i ] . x . getTime ( ) > l ) {
219
+ l += step ;
220
+ }
221
+ n = 0 ;
222
+ sumx = 0 ;
223
+ sumy = 0 ;
224
+ }
225
+ n ++ ;
226
+ sumx += datapoints [ i ] . x . getTime ( ) * datapoints [ i ] . y ;
227
+ sumy += datapoints [ i ] . y ;
228
+ }
229
+ if ( n > 0 ) {
230
+ result . push ( {
231
+ x : sumy ? new Date ( sumx / sumy ) : new Date ( l - step / 2 ) ,
232
+ y : sumy / n
233
+ } ) ;
234
+ }
235
+ return result ;
236
+ }
237
+
236
238
module . exports = router ;
0 commit comments