Revision 42 hci/trunk/eneraptor-web-app/grails-app/controllers/com/eneraptor/hci/StatisticsController.groovy

View differences:

StatisticsController.groovy
1

  
1 2
package com.eneraptor.hci
2 3

  
4
import groovy.sql.Sql
5

  
3 6
class StatisticsController {
4

  
7

  
8
	def dataSource
9
	
5 10
    def main = { }
11
	
12
	def graphs = {
13
	
14
		List savedGraphs = new ArrayList()
15
		
16
		savedGraphs = EneGraph.list()
17
			
18
		[savedGraphs: savedGraphs]
19
			
20
	}
21
	
22
	def reports = { }
23
	
24
	def newGraph = {
25
		
26
		List graphTypes = ["min","max","avg","sum"]
27
		List graphTypesFriendly = ["Minimum value","Maximum value","Average value","Cumulative"]
28
		
29
		List devices = new ArrayList()
30
		List devicesFriendly = new ArrayList()
31
		
32
		DeviceInfo.list().each {
33
			devices << it.deviceId
34
			devicesFriendly << it.friendlyName
35
		}
36
		
37
		[graphTypes:graphTypes,graphTypesFriendly:graphTypesFriendly, devices:devices, devicesFriendly:devicesFriendly]
38
		
39
	}
40
	
41
	def newGraphDo = {
42
		
43
		String errors = ""
44
		Date chosenTimeFrameStart = null
45
		Date chosenTimeFrameEnd = null
46
		
47
		if(params['timeFrameType'] == "day") {
48
			chosenTimeFrameStart = params['dayMainTimeFrameStart']
49
			chosenTimeFrameEnd = params['dayMainTimeFrameEnd']
50
		} else if(params['timeFrameType'] == "month") {
51
			chosenTimeFrameStart = params['monthMainTimeFrameStart']
52
			chosenTimeFrameEnd = params['monthMainTimeFrameEnd']
53
		} else if(params['timeFrameType'] == "year") {
54
			chosenTimeFrameStart = params['yearMainTimeFrameStart']
55
			chosenTimeFrameEnd = params['yearMainTimeFrameEnd']
56
		} else if(params['timeFrameType'] == "custom") {
57
			chosenTimeFrameStart = params['customMainTimeFrameStart']
58
			chosenTimeFrameEnd = params['customMainTimeFrameEnd']
59
		} else {
60
			errors += "<p>Time frame type invalid!</p>"
61
		}
62
		
63
		def newEneGraph = new EneGraph(
64
			name: params['graphName'],
65
			type: params['graphType'],
66
			timeFrameType: params['timeFrameType'],
67
			timeFrameStart: chosenTimeFrameStart,
68
			timeFrameEnd: chosenTimeFrameEnd,
69
			innerSections: params['customMainTimeFrameInnerSections'],
70
			advHoursTimeFrameStart: params['advHoursStart'],
71
			advHoursTimeFrameEnd: params['advHoursEnd'],
72
			advDayTimeFrameStart: params['advDayStart'],
73
			advDayTimeFrameEnd: params['advDayEnd'],
74
			advMonthTimeFrameStart: params['advMonthStart'],
75
			advMonthTimeFrameEnd: params['advMonthEnd'],
76
			deviceId: params['deviceId']
77
		)
78
		
79
		if(!newEneGraph.validate()) {
80
			errors += "<p>Graph could not be created - there were some input errors. Please check if all input values are valid.</p>"
81
			flash['errors'] = errors
82
			redirect(action:'newGraph')
83
		} else {
84
			if(newEneGraph.save()){
85
				flash['confirms'] = "<p>Graph created succesfully!</p>"
86
				redirect(action:'newGraph')
87
			} else {
88
				flash['errors'] = "<p>There was an error while saving graph.</p>"
89
				redirect(action:'newGraph')
90
			}
91
		}
92
		
93
		return true
94
		
95
	}
96
	
97
	def showGraph = {
98
		
99
		def graphToShow = EneGraph.get(params['graphId'])
100
		
101
		List data = new ArrayList()
102
		def results
103
		def db_sql = new Sql(dataSource)
104
		
105
		if(graphToShow.timeFrameType == "day") {
106
			db_sql.eachRow "select date_trunc('day',ld.date_recieved) dt, " + graphToShow['type'] + "(to_number(ld.reported_data,'9999999999D99999')) vl from logged_data as ld where (date_trunc('day',ld.date_recieved) >= '" + graphToShow.timeFrameStart + "' and date_trunc('day',ld.date_recieved) <= '" + graphToShow.timeFrameEnd + "') group by date_trunc('day',ld.date_recieved) order by date_trunc('day',ld.date_recieved) asc", {
107
				data << [it.dt.getTime(), it.vl]
108
			}
109
		} else if (graphToShow.timeFrameType == "month") {
110
			db_sql.eachRow "select date_trunc('month',ld.date_recieved) dt, " + graphToShow['type'] + "(to_number(ld.reported_data,'9999999999D99999')) vl from logged_data as ld where (date_trunc('month',ld.date_recieved) >= '" + graphToShow.timeFrameStart + "' and date_trunc('month',ld.date_recieved) <= '" + graphToShow.timeFrameEnd + "') group by date_trunc('month',ld.date_recieved) order by date_trunc('month',ld.date_recieved) asc", {
111
				data << [it.dt.getTime(), it.vl]
112
			}
113
		} else if (graphToShow.timeFrameType == "year") {
114
			db_sql.eachRow "select date_trunc('year',ld.date_recieved) dt, " + graphToShow['type'] + "(to_number(ld.reported_data,'9999999999D99999')) vl from logged_data as ld where (date_trunc('year',ld.date_recieved) >= '" + graphToShow.timeFrameStart + "' and date_trunc('year',ld.date_recieved) <= '" + graphToShow.timeFrameEnd + "') group by date_trunc('year',ld.date_recieved) order by date_trunc('year',ld.date_recieved) asc", {
115
				data << [it.dt.getTime(), it.vl]
116
			}
117
		}
118
		
119
		[data:data]
120
		
121
	}
6 122
	
7 123
}

Also available in: Unified diff