root/trunk/grails-app/controllers/generic/AjaxController.groovy @ 2170

Revision 2170, 3.2 KB (checked in by work@…, 2 years ago)

- updated study compare look and feel and inline comments

Line 
1/**
2 * AjaxController Controller
3 *
4 * A collection of application wide Ajax resources
5 *
6 * @author  Jeroen Wesbeek work@osx.eu
7 * @since       20120123
8 *
9 * Revision information:
10 * $Rev$
11 * $Author$
12 * $Date$
13 */
14package generic
15
16import dbnp.studycapturing.*
17import grails.converters.JSON
18
19class AjaxController {
20        def authenticationService
21        def ajaxService
22
23        /**
24         * Get all unique species in the system
25         */
26        def uniqueSpecies = {
27                def result = Subject.executeQuery("SELECT DISTINCT a.species FROM Subject a")
28
29                // set output header to json
30                response.contentType = 'application/json'
31
32                // render result
33                if (params.callback) {
34                        render "${params.callback}(${result as JSON})"
35                } else {
36                        render result as JSON
37                }
38        }
39
40        /**
41         * Get all unique event template names for the studies the user can read
42         */
43        def uniqueEventTemplateNames = {
44                def user        = authenticationService.getLoggedInUser()
45                def studies     = Study.giveReadableStudies(user)
46                def uniqueEventTemplates = []
47
48                // iterate through studies
49                studies.each { study ->
50                        study.events.each { event ->
51                                if (!uniqueEventTemplates.contains(event.template)) {
52                                        uniqueEventTemplates.add(event.template)
53                                }
54                        }
55                }
56
57                def result      = uniqueEventTemplates
58
59                // set output header to json
60                response.contentType = 'application/json'
61
62                // render result
63                if (params.callback) {
64                        render "${params.callback}(${result as JSON})"
65                } else {
66                        render result as JSON
67                }
68        }
69
70        /**
71         * Get all unique sampling event template names for the studies the user can read
72         */
73        def uniqueSamplingEventTemplateNames = {
74                def user        = authenticationService.getLoggedInUser()
75                def studies     = Study.giveReadableStudies(user)
76                def uniqueSamplingEventTemplates = []
77
78                // iterate through studies
79                studies.each { study ->
80                        study.samplingEvents.each { event ->
81                                if (!uniqueSamplingEventTemplates.contains(event.template)) {
82                                        uniqueSamplingEventTemplates.add(event.template)
83                                }
84                        }
85                }
86
87                def result      = uniqueSamplingEventTemplates
88
89                // set output header to json
90                response.contentType = 'application/json'
91
92                // render result
93                if (params.callback) {
94                        render "${params.callback}(${result as JSON})"
95                } else {
96                        render result as JSON
97                }
98        }
99
100        /**
101         * return the number of studies the user can read based on criteria
102         */
103        def studyCount = {
104                def user        = authenticationService.getLoggedInUser()
105                def total       = Study.giveReadableStudies(user).size()
106                def studies = ajaxService.getStudiesByCriteriaForCurrentUser(params)
107
108                // define json result
109                def result = ['total':total,'matched':studies.size()]
110
111                // set output header to json
112                response.contentType = 'application/json'
113
114                // render result
115                if (params.callback) {
116                        render "${params.callback}(${result as JSON})"
117                } else {
118                        render result as JSON
119                }
120        }
121
122        /**
123         * return the studies the user can read based on criteria
124         */
125        def studies = {
126                def studies = ajaxService.getStudiesByCriteriaForCurrentUser(params)
127
128                // define json result
129                def result = ['studies':studies.collect{ it.title }]
130
131                // set output header to json
132                response.contentType = 'application/json'
133
134                // render result
135                if (params.callback) {
136                        render "${params.callback}(${result as JSON})"
137                } else {
138                        render result as JSON
139                }
140        }
141}
Note: See TracBrowser for help on using the browser.