@@ -19,8 +19,8 @@ package de.iteratec.osm.csi
19
19
20
20
import de.iteratec.osm.csi.weighting.WeightFactor
21
21
import de.iteratec.osm.d3Data.BarChartData
22
- import de.iteratec.osm.d3Data.TreemapData
23
22
import de.iteratec.osm.d3Data.ChartEntry
23
+ import de.iteratec.osm.d3Data.TreemapData
24
24
import de.iteratec.osm.measurement.environment.Browser
25
25
import de.iteratec.osm.measurement.environment.Location
26
26
import de.iteratec.osm.measurement.environment.dao.BrowserDaoService
@@ -30,8 +30,7 @@ import de.iteratec.osm.measurement.schedule.JobGroup
30
30
import de.iteratec.osm.measurement.schedule.dao.JobGroupDaoService
31
31
import de.iteratec.osm.measurement.schedule.dao.PageDaoService
32
32
import de.iteratec.osm.p13n.CookieBasedSettingsService
33
- import de.iteratec.osm.report.UserspecificDashboard
34
- import de.iteratec.osm.report.UserspecificDashboardDiagramType
33
+ import de.iteratec.osm.report.UserspecificCsiDashboard
35
34
import de.iteratec.osm.report.chart.*
36
35
import de.iteratec.osm.report.chart.dao.AggregatorTypeDaoService
37
36
import de.iteratec.osm.result.EventResultService
@@ -201,15 +200,15 @@ class CsiDashboardController {
201
200
*/
202
201
Map<String , Object > delete () {
203
202
204
- def userspecificDashboardInstance = UserspecificDashboard . get(params. id)
205
- if (! userspecificDashboardInstance ) {
203
+ def userspecificCSIDashboardInstance = UserspecificCsiDashboard . get(params. id)
204
+ if (! userspecificCSIDashboardInstance ) {
206
205
flash. message = message(code : ' default.not.found.message' , args : [message(code : ' custom.dashboard.label' , default : ' Custom dashboard' ), params. id])
207
206
redirect(action : " list" )
208
207
return
209
208
}
210
209
211
210
try {
212
- userspecificDashboardInstance . delete(flush : true )
211
+ userspecificCSIDashboardInstance . delete(flush : true )
213
212
flash. message = message(code : ' default.deleted.message' , args : [message(code : ' custom.dashboard.label' , default : ' Custom dashboard' ), params. id])
214
213
redirect(action : " list" )
215
214
} catch (DataIntegrityViolationException e) {
@@ -718,27 +717,6 @@ class CsiDashboardController {
718
717
return null
719
718
}
720
719
721
- /**
722
- * <p >
723
- * Ajax service to confirm that dashboard name entered for saving custom dashboard was unique.
724
- * </p>
725
- *
726
- * @param proposedDashboardName
727
- * The proposed Dashboard Name;
728
- * not <code >null</code>.
729
- * @return nothing, immediately sends HTTP response codes to client.
730
- */
731
- def validateDashboardName (String proposedDashboardName ) {
732
- UserspecificDashboard newCustomDashboard = new UserspecificDashboard (dashboardName : proposedDashboardName)
733
- if (! newCustomDashboard. validate()) {
734
- response. sendError(302 , ' dashboard by that name exists already' )
735
- return null
736
- } else {
737
- response. sendError(200 , ' OK' )
738
- return null
739
- }
740
- }
741
-
742
720
/**
743
721
* <p >
744
722
* Ajax service to validate and store custom dashboard settings.
@@ -756,6 +734,14 @@ class CsiDashboardController {
756
734
* @return nothing, immediately sends HTTP response codes to client.
757
735
*/
758
736
def validateAndSaveDashboardValues (String values , String dashboardName , String publiclyVisible , String wideScreenDiagramMontage ) {
737
+
738
+ // Check if dashboardName is unique
739
+ def dashboards = UserspecificCsiDashboard . findAllByDashboardName(dashboardName)
740
+ if (dashboards) {
741
+ response. sendError(302 , ' dashboard by that name exists already' )
742
+ return null
743
+ }
744
+
759
745
JSONObject dashboardValues = JSON . parse(values)
760
746
Date fromDate = SIMPLE_DATE_FORMAT . parse(dashboardValues. from)
761
747
Date toDate = SIMPLE_DATE_FORMAT . parse(dashboardValues. to)
@@ -769,6 +755,7 @@ class CsiDashboardController {
769
755
String selectedMeasuredEventIdsString = " "
770
756
String selectedBrowsersString = " "
771
757
String selectedLocationsString = " "
758
+
772
759
dashboardValues. each { id , data ->
773
760
def dataToAssign
774
761
if (data instanceof org.codehaus.groovy.grails.web.json.JSONArray ) {
@@ -810,11 +797,14 @@ class CsiDashboardController {
810
797
break
811
798
}
812
799
}
800
+
801
+ int timeFrameInterval = Integer . parseInt(dashboardValues. selectedTimeFrameInterval)
802
+
813
803
def cmd = new CsiDashboardShowAllCommand (from : fromDate, to : toDate, fromHour : dashboardValues. fromHour, fromMinute : dashboardValues. fromMinute,
814
804
toHour : dashboardValues. toHour, toMinute : dashboardValues. toMinute, aggrGroup : dashboardValues. aggrGroup, selectedFolder : selectedFolder,
815
805
selectedPages : selectedPages, selectedMeasuredEventIds : selectedMeasuredEventIds, selectedAllMeasuredEvents : dashboardValues. selectedAllMeasuredEvents,
816
806
selectedBrowsers : selectedBrowsers, selectedAllBrowsers : dashboardValues. selectedAllBrowsers, selectedLocations : selectedLocations,
817
- selectedAllLocations : dashboardValues. selectedAllLocations, debug : dashboardValues. debug, selectedTimeFrameInterval : dashboardValues . selectedTimeFrameInterval ,
807
+ selectedAllLocations : dashboardValues. selectedAllLocations, debug : dashboardValues. debug, selectedTimeFrameInterval : timeFrameInterval ,
818
808
includeInterval : dashboardValues. includeInterval, setFromHour : dashboardValues. setFromHour, setToHour : dashboardValues. setToHour)
819
809
820
810
if (! cmd. validate()) {
@@ -824,12 +814,7 @@ class CsiDashboardController {
824
814
return null
825
815
} else {
826
816
def username = springSecurityService. authentication. principal. getUsername()
827
- UserspecificDashboard newCustomDashboard = new UserspecificDashboard (diagramType : UserspecificDashboardDiagramType . CSI , fromDate : fromDate, toDate : toDate, fromHour : cmd. fromHour,
828
- fromMinute : cmd. fromMinute, toHour : cmd. toHour, toMinute : cmd. toMinute, aggrGroup : cmd. aggrGroup, selectedFolder : selectedFolderString, selectedPages : selectedPagesString,
829
- selectedMeasuredEventIds : selectedMeasuredEventIdsString, selectedAllMeasuredEvents : cmd. selectedAllMeasuredEvents, selectedBrowsers : selectedBrowsersString,
830
- selectedAllBrowsers : cmd. selectedAllBrowsers, selectedLocations : selectedLocationsString, selectedAllLocations : cmd. selectedAllLocations, debug : cmd. debug,
831
- selectedTimeFrameInterval : cmd. selectedTimeFrameInterval, includeInterval : cmd. includeInterval, publiclyVisible : publiclyVisible, wideScreenDiagramMontage : wideScreenDiagramMontage, dashboardName : dashboardName, username : username,
832
- setFromHour : cmd. setFromHour, setToHour : cmd. setToHour)
817
+ UserspecificCsiDashboard newCustomDashboard = new UserspecificCsiDashboard (cmd, selectedFolderString, selectedPagesString, selectedMeasuredEventIdsString, selectedBrowsersString, selectedLocationsString, publiclyVisible, wideScreenDiagramMontage, dashboardName, username)
833
818
if (! newCustomDashboard. save(failOnError : true , flush : true )) {
834
819
response. sendError(500 , ' save error' )
835
820
return null
0 commit comments