|
1 | | -<nav class="navbar navbar-default"> |
2 | | -<div class=""> |
3 | | -<form class="navbar-form"> |
4 | | -<div class="form-group"> |
5 | | - <label for="selected_date">Date </label> |
6 | | - <input class="form-control" type="date" id="date1" name="selected_date" onchange="dateChange()"> |
7 | | -</div> |
8 | | - <div class="form-group"> |
9 | | - <div class="form-check"> |
10 | | - <label class="form-check-label"> |
11 | | - <input class="form-check-input" type="checkbox" id="checkPollId" onchange="checkPoll()" value=""> |
12 | | - Poll server |
13 | | - </label> |
14 | | - </div> |
15 | | - </div> |
16 | | - <div class="form-group"> |
17 | | - <div class="btn btn-default" onclick="addChartBlock()">Add chart</div> |
18 | | - </div> |
19 | | -</form> |
20 | | -</div> |
21 | | -</nav> |
22 | | - |
23 | | -<div id="chartsContainer"> |
| 1 | +<!--<nav class="navbar navbar-default">--> |
| 2 | +<div class="pane"> |
| 3 | + <form class="navbar-form"> |
| 4 | + <div class="form-group"> |
| 5 | + <label for="selected_date">Date </label> |
| 6 | + <input class="form-control date-inp" type="date" id="date1" name="selected_date" onchange="dateChange()"> |
| 7 | + </div> |
| 8 | + <div class="form-group"> |
| 9 | + <div class="form-check"> |
| 10 | + <label class="form-check-label"> |
| 11 | + <input class="form-check-input" type="checkbox" id="checkPollId" onchange="checkPoll()" value=""> |
| 12 | + Poll server |
| 13 | + </label> |
| 14 | + </div> |
| 15 | + </div> |
| 16 | + <div class="form-group"> |
| 17 | + <div class="btn btn-default" onclick="addChartBlock()">Add chart</div> |
| 18 | + </div> |
| 19 | + </form> |
| 20 | + <div id="chartsContainer"> |
24 | 21 |
|
25 | 22 | </div> |
| 23 | +</div> |
| 24 | +<!--</nav>--> |
| 25 | + |
| 26 | + |
26 | 27 |
|
27 | 28 | <style> |
28 | 29 | .graph-block |
29 | 30 | { |
30 | | - border:1px solid lightgray; |
| 31 | + border:1px solid #8f9aab; |
31 | 32 | padding:5px; |
32 | 33 | } |
33 | | - select.form-control:not([size]):not([multiple]) |
34 | | - { |
35 | | - padding-top: 2px; |
36 | | - } |
37 | 34 | @media (min-width: 1600px){ |
38 | 35 | .col-lg-xl-3 |
39 | 36 | { |
40 | 37 | width:25%; |
41 | 38 | } |
42 | 39 | } |
| 40 | + select.input-sm { |
| 41 | + height: 21px; |
| 42 | + padding: 0px; |
| 43 | + background-color: #A0AEC1; |
| 44 | + } |
| 45 | + .date-inp |
| 46 | + { |
| 47 | + background-color: #A0AEC1; |
| 48 | + } |
| 49 | + body,.pane |
| 50 | + { |
| 51 | + background-color: #A0AEC1; |
| 52 | + } |
| 53 | + .labelsDiv |
| 54 | + { |
| 55 | + font-size:14px; |
| 56 | + } |
| 57 | + |
43 | 58 | </style> |
44 | 59 | <script type="text/javascript"> |
45 | 60 |
|
46 | | - var uri = 'perfcounters'; |
| 61 | + var uri = 'api/perfcounters'; |
| 62 | + if(window !== undefined) |
| 63 | + { |
| 64 | + uri = window.location.origin+ '/'+uri; |
| 65 | + } |
47 | 66 | var globalChartBlockId = 0; |
48 | 67 |
|
49 | 68 | var graphBlocks = []; |
|
54 | 73 |
|
55 | 74 | $("#date1").val(new Date().toISOString().split('T')[0]); |
56 | 75 |
|
57 | | - var num = 6; |
| 76 | + var num = 8; |
58 | 77 | for(let i=0;i<num;i++) |
59 | 78 | { |
60 | 79 | addChartBlock(); |
61 | 80 | } |
| 81 | + graphBlocks[0].selectCounter('RequestsCount, num/sec'); |
| 82 | + graphBlocks[1].selectCounter('RequestProcessTime, ms'); |
| 83 | + graphBlocks[2].selectCounter('RequestMaxProcessTime, ms'); |
| 84 | + graphBlocks[3].selectCounter('CPU, %'); |
| 85 | + graphBlocks[4].selectCounter('KBytes req. transmitted, kb/sec'); |
| 86 | + graphBlocks[5].selectCounter('KBytes resp. transmitted, kb/sec'); |
| 87 | + graphBlocks[6].selectCounter('GC 0-gen collections, num'); |
| 88 | + graphBlocks[7].selectCounter('GC 1-gen collections, num'); |
| 89 | + //graphBlocks[8].selectCounter('BadStatusResponsesCount, num/sec'); |
62 | 90 | }); |
63 | 91 |
|
64 | 92 | function addChartBlock() |
|
116 | 144 | this.graphDyg = undefined; |
117 | 145 | this.graphBlockDOM = undefined; |
118 | 146 | this.idx = idx; |
| 147 | + this.counterNames = []; |
| 148 | + this.selectedName = undefined; |
119 | 149 |
|
120 | 150 | this.resetGraph = function(){ |
121 | 151 | this.dataArray = [[0,0]]; |
|
133 | 163 | showRangeSelector: true, |
134 | 164 | drawPoints: true, |
135 | 165 | labelsDiv: lbl, |
136 | | - fillGraph : true |
| 166 | + fillGraph : true, |
| 167 | + colors:["#336699"], |
| 168 | + fillAlpha : 0.3, |
| 169 | + rangeSelectorAlpha: 0.4 |
137 | 170 | //showRoller: true |
138 | 171 | } |
139 | 172 | ); |
|
144 | 177 |
|
145 | 178 | getPerfCountersList().then(function(data) |
146 | 179 | { |
| 180 | + self.counterNames.length=0; |
147 | 181 | var ctrl = $(self.graphBlockDOM).find(".perfcounter-name").first(); |
148 | 182 | ctrl.find('option').remove(); |
149 | 183 | ctrl.append('<option value=""></option>'); |
150 | 184 | for(let i=0;i<data.length;i++) |
151 | 185 | { |
152 | 186 | ctrl.append('<option value="'+data[i]+'">'+data[i]+'</option>'); |
| 187 | + self.counterNames.push(data[i]); |
153 | 188 | } |
| 189 | + self.selectCounter(self.selectedName); |
154 | 190 | }); |
155 | 191 | }; |
156 | 192 | this.resetData = function(){ |
|
165 | 201 | { |
166 | 202 | return; |
167 | 203 | } |
| 204 | + self.selectedName = name; |
168 | 205 | getPerfCounterTrack(name, date).then(function(data) |
169 | 206 | { |
170 | | - if(self.dataArray === undefined) |
171 | | - { |
172 | | - self.dataArray = []; |
173 | | - } |
174 | | - self.dataArray.length = 0; |
175 | | - var lastTime = new Date(); |
176 | | - for(let i=self.dataArray.length;i<data.length;i++) |
| 207 | + if(data !== undefined && data instanceof Array && data.length > 0) |
177 | 208 | { |
178 | | - lastTime = new Date(data[i].Timestamp); |
179 | | - self.dataArray.push([lastTime, data[i].Value]); |
180 | | - } |
| 209 | + if(self.dataArray === undefined) |
| 210 | + { |
| 211 | + self.dataArray = []; |
| 212 | + } |
| 213 | + self.dataArray.length = 0; |
| 214 | + var lastTime = new Date(); |
| 215 | + for(let i=self.dataArray.length;i<data.length;i++) |
| 216 | + { |
| 217 | + lastTime = new Date(data[i].Timestamp); |
| 218 | + self.dataArray.push([lastTime, data[i].Value]); |
| 219 | + } |
181 | 220 |
|
182 | | - graph.updateOptions({ |
183 | | - //title: name, |
184 | | - dateWindow:[lastTime-1000*60*15, lastTime], |
185 | | - 'file': self.dataArray |
186 | | - }); |
| 221 | + graph.updateOptions({ |
| 222 | + //title: name, |
| 223 | + dateWindow:[lastTime-1000*60*15, lastTime], |
| 224 | + 'file': self.dataArray |
| 225 | + }); |
| 226 | + } |
187 | 227 | }); |
188 | 228 | } |
189 | 229 |
|
|
196 | 236 | $('<form class="form-inline"></form>').appendTo(block); |
197 | 237 | $('<div class="form-group" style="width: 100%;"></div>').appendTo($(block).find('.form-inline')); |
198 | 238 | //$('<div>Select perf counter</div>').appendTo($(block).find('.form-group')); |
199 | | - $('<select class="form-control perfcounter-name" style="width: auto"></select>').appendTo(block.find('.form-group')); |
| 239 | + $('<select class="form-control perfcounter-name input-sm"></select>').appendTo(block.find('.form-group')); |
200 | 240 | $('<span class="glyphicon glyphicon-trash pull-right" aria-hidden="true" data-toggle="tooltip" title="Delete chart block"></span>').appendTo(block.find('.form-group')); |
201 | 241 | $('<div class="labelsDiv pull-right"></div>').appendTo(block); |
202 | 242 | $('<div class="chart" style="width: 100%; height: 250px;"></div>').appendTo(block); |
|
208 | 248 |
|
209 | 249 | return block; |
210 | 250 | }; |
| 251 | + |
| 252 | + this.selectCounter = function(name) |
| 253 | + { |
| 254 | + if(this.counterNames.indexOf(name) >=0) |
| 255 | + { |
| 256 | + $(self.graphBlockDOM).find(".perfcounter-name").first().val(name).change(); |
| 257 | + } |
| 258 | + this.selectedName = name; |
| 259 | + } |
211 | 260 | } |
212 | 261 |
|
213 | 262 | function pollServer() |
|
0 commit comments