Skip to content

Commit 857aa52

Browse files
author
cactus
committed
refactoring
1 parent f2a7a15 commit 857aa52

8 files changed

Lines changed: 367 additions & 117 deletions

File tree

Lines changed: 192 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,192 @@
1+
//var chart;
2+
var charts=[];
3+
4+
var _period;
5+
var _aggregate;
6+
var _dateField;//="openedAt";
7+
8+
function _getYear(period){
9+
//console.log("**** getYear() called: period: "+period);
10+
var _split = period.split("-");
11+
var _year;
12+
if (_split.length==2){
13+
_year = parseInt(_split[1]);
14+
}
15+
else if (_split.length==1){
16+
_year = parseInt(_split[0]);
17+
}
18+
if (_year>=2014 && _year <=moment().year()) return _year;
19+
}
20+
21+
function _alterPeriodByYear(period,yearDelta){
22+
var _year = _getYear(period)+yearDelta;
23+
var _split = period.split("-");
24+
if (_split.length==1){
25+
return _year.toString();
26+
}
27+
else if (_split.length==2){
28+
return _split[0]+"-"+_year;
29+
}
30+
return false;
31+
}
32+
33+
34+
35+
function init(prio,dateField,chartId){
36+
_dateField = dateField;
37+
nv.addGraph(function() {
38+
var incidents;
39+
var chart;
40+
var _chartId = chartId;//"chartP1";
41+
var _prio = prio;//chartId.split("chart")[1];
42+
_period =getUrlVars().period;
43+
if (!_period) _period=moment().year().toString();
44+
_aggregate =getUrlVars().aggregate;
45+
if (_aggregate){
46+
_url+="?aggregate="+_aggregate;
47+
}
48+
if (!_aggregate) _aggregate="monthly";
49+
var _colors={};
50+
// #ED1C24 #EF333A #F14A50 #F36166 #F5787C #F78F92 #F9A6A8 #FBBDBE #FDD4D4 #FFEBEA #FFFFFF
51+
_colors["P01"]=["#ED1C24","#FDD4D4"];
52+
// #F7931D #F89E34 #F9A94B #FAB462 #FBBF79 #FCCA90 #FDD5A7 #FEE0BE #FFEBD5 #FFF6EC #FFFFFF
53+
_colors["P08"]=["#F7931D","#FFEBD5"];
54+
// #38A4DC #4CADE0 #60B6E4 #74BFE8 #88C8EC #9CD1F0 #B0DAF4 #C4E3F8 #D8ECFC #ECF5FF #FFFFFF
55+
_colors["P16"]=["#38A4DC","#D8ECFC"];
56+
_colors["P120"]=["#aaaaaa","#efefef"];
57+
console.log("prio: "+_prio+" colors: "+_colors[_prio]);
58+
console.log("period: "+_period);
59+
chart = nv.models.cumulativeLineChart()
60+
.useInteractiveGuideline(true)
61+
.x(function(d) { return d.date })
62+
.y(function(d) { return d.y })
63+
.color(d3.scale.category10().range())
64+
//.average(function(d) { return d.mean/100; })
65+
.tooltips(true)
66+
.showLegend(true)
67+
.color(_colors[_prio])
68+
69+
70+
.showControls(false)
71+
;
72+
if (_period=="") _period ="All";
73+
$("#period_"+_chartId).text(_period);
74+
$("#aggregate_"+_chartId).text(_aggregate);
75+
var _reduceXTicks = false;
76+
//if (_aggregate=="daily" || _aggregate=="weekly") _reduceXTicks = true;
77+
chart.yAxis
78+
.tickFormat(d3.format(',d'));
79+
redraw(_chartId,_period,_aggregate,_prio,dateField);
80+
81+
//function pointer
82+
charts[chartId]=chart;
83+
return chart;
84+
});
85+
86+
87+
88+
// clickhandler for
89+
$('a.dropdown.incidentstrend').click( function(event) {
90+
91+
var _prio =event.target.id.split("_")[0].split("chart")[1].split("-")[0];
92+
93+
94+
var _chart=event.target.id.split("_")[0];
95+
var _dateField = _chart.split("-")[1];
96+
97+
if (_.startsWith(event.target.id.split("_")[1],"aggregate")){
98+
_aggregate =event.target.id.split("_")[1].split("-")[1];
99+
}
100+
else
101+
{
102+
_period = event.target.id.split("_")[1];
103+
}
104+
console.log("######################### ____id: "+event.target.id);
105+
console.log("######################### chart: "+_chart);
106+
console.log("######################### _dateField: "+_dateField);
107+
108+
$("#period_"+_chart).text(_period);
109+
$("#aggregate_"+_chart).text(_aggregate);
110+
redraw(_chart,_period,_aggregate,_prio,_dateField);
111+
});
112+
113+
114+
}
115+
116+
/**
117+
* prepares data to be consumable by NVd3
118+
*/
119+
function _prepareData(incidents,incidentsPrev,prio,period,dateField){
120+
/*
121+
console.log("----------------- _prepareData: prio= "+prio);
122+
console.log("----------------- _prepareData: period= "+period);
123+
console.log("----------------- _prepareData: dateField= "+dateField);
124+
console.log("----------------- _prepareData: incidents[0]="+JSON.stringify(incidents[0]));
125+
*/
126+
var _P=[];
127+
var _PBase=[];
128+
var _PSum=0;
129+
var _PBaseSum=0;
130+
131+
var _PPrev=[];
132+
var _PBasePrev=[];
133+
var _PSumPrev=0;
134+
var _PBaseSumPrev=0;
135+
136+
var _year = _getYear(period);
137+
var _yearPrev = _getYear(_alterPeriodByYear(period,-1));
138+
139+
for (var day in incidents){
140+
/*
141+
console.log(JSON.stringify(incidents[day]));
142+
console.log("++ dateField: "+dateField);
143+
console.log("++ prio: "+prio);
144+
console.log("date: "+incidents[day].date+" "+prio+": "+incidents[day][dateField][prio].total);
145+
*/
146+
_P.push({"date":incidents[day].date,"y":parseInt(incidents[day][dateField][prio].total)});
147+
_PSum+=parseInt(incidents[day][dateField][prio].total);
148+
}
149+
//console.log(prio+"Sum = "+_PSum+" "+prio+"BaseSum = "+_PBaseSum);
150+
151+
for (var day in incidentsPrev){
152+
//console.log("date: "+incidentsPrev[day].date+" "+prio+": "+incidentsPrev[day][dateField][prio].total);
153+
//date of previous year must be "normalized" to this year ....
154+
_PPrev.push({"date":_alterPeriodByYear(incidentsPrev[day].date,1),"y":parseInt(incidentsPrev[day][dateField][prio].total)});
155+
_PSumPrev+=parseInt(incidentsPrev[day][dateField][prio]);
156+
157+
}
158+
//console.log(prio+"Sum = "+_PSumPrev+" "+prio+"BaseSum = "+_PBaseSumPrev);
159+
160+
var incData = [{key:_year,values:_P},{key:_yearPrev,values:_PPrev}]
161+
162+
return incData
163+
}
164+
165+
function redraw(chartId,period,aggregate,prio,dateField) {
166+
var _url = "/api/space/rest/incidenttracker/"+period;
167+
var _urlPrev = "/api/space/rest/incidenttracker/"+_alterPeriodByYear(period,-1);
168+
169+
170+
if (aggregate){
171+
_url+="?aggregate="+aggregate;
172+
_urlPrev+="?aggregate="+aggregate;
173+
}
174+
console.log("_url: "+_url);
175+
176+
177+
d3.json(_url, function(data) {
178+
d3.json(_urlPrev, function(dataPrev) {
179+
d3.select('#'+chartId+' svg')
180+
.datum(_prepareData(data.tracker,dataPrev.tracker,prio,period,dateField))
181+
.transition().duration(500)
182+
.call(charts[chartId]);
183+
184+
185+
$("#"+chartId+"_sum").text(data.statistics.sum[prio][dateField]);
186+
$("#"+chartId+"_sumPrev").text(dataPrev.statistics.sum[prio][dateField]);
187+
188+
189+
nv.utils.windowResize(charts[chartId].update);
190+
});
191+
});
192+
}

public/javascripts/dashboards/nvd3_incidents_multi.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,7 @@ function redraw(chartId,period,aggregate,prio,dateField) {
173173
}
174174
console.log("_url: "+_url);
175175

176+
176177
d3.json(_url, function(data) {
177178
d3.json(_urlPrev, function(dataPrev) {
178179
d3.select('#'+chartId+' svg')
@@ -181,9 +182,11 @@ function redraw(chartId,period,aggregate,prio,dateField) {
181182
.call(charts[chartId]);
182183

183184

184-
nv.utils.windowResize(charts[chartId].update);
185+
$("#"+chartId+"_sum").text(data.statistics.sum[prio][dateField]);
186+
$("#"+chartId+"_sumPrev").text(dataPrev.statistics.sum[prio][dateField]);
185187

186188

189+
nv.utils.windowResize(charts[chartId].update);
187190
});
188191
});
189192
}

routes/api.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -378,8 +378,10 @@ function findIncidenttrackerByDate(req, res , next){
378378
logger.warn("[error] incidentTrackerService.findTrackerByDate says: "+err.message);
379379
}
380380
else {
381-
res.send(data);
382-
return;
381+
incidentTrackerService.buildStatistics(data.tracker,function(err,result){
382+
res.send(result);
383+
return;
384+
})
383385
}
384386
});
385387
}

routes/dashboard.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,20 @@ router.get('/availability', function(req, res) {
5555

5656
router.get('/incidents', function(req, res) {
5757
var _period = req.query.period;
58-
//"openedAt", "resolvedAt", "closedAt"
59-
60-
6158
res.locals.period = _period;
62-
6359
res.locals.moment = moment;
6460
res.render('dashboard/incidents', { title: 's p a c e - incidents dashboard' });
6561
});
6662

63+
router.get('/incidents_line', function(req, res) {
64+
var _period = req.query.period;
65+
res.locals.period = _period;
66+
res.locals.moment = moment;
67+
res.render('dashboard/incidents_line', { title: 's p a c e - incidents linedashboard' });
68+
});
69+
70+
71+
6772
router.get('/qos', function(req, res) {
6873
res.render('dashboard/qos', { title: 's p a c e - QoS dashboard' });
6974
});

0 commit comments

Comments
 (0)