@@ -8,8 +8,9 @@ import parameterService = require('services/parameterService');
8
8
import setDataService = require( 'services/setDataService' ) ;
9
9
import parameterDataService = require( 'services/parameterDataService' ) ;
10
10
import modelService = require( 'services/modelService' ) ;
11
+ import scenarioService = require( 'services/scenarioService' ) ;
11
12
12
- var forceLoad = [ setService , parameterService , setDataService , parameterDataService , modelService ] ;
13
+ var forceLoad = [ setService , parameterService , setDataService , parameterDataService , modelService , scenarioService ] ;
13
14
14
15
export interface IParameterDataScope extends ng . IScope {
15
16
data : parameterDataModel . ParameterData ;
@@ -21,13 +22,6 @@ export interface IParameterDataScope extends ng.IScope {
21
22
switchParameter : ( ) => void ;
22
23
}
23
24
24
- export interface ICsvParameterDataScope extends ng . IScope {
25
- data : parameterDataModelCsv . ParameterDataCsv ;
26
- save : ( ) => void ;
27
- loading : boolean ;
28
- returnUrlSuffix : string ;
29
- }
30
-
31
25
export class ParameterDataController {
32
26
constructor ( $scope : IParameterDataScope , $routeParams : angular . route . IRouteParamsService , $window : angular . IWindowService , $q : angular . IQService ,
33
27
ParameterService : ng . resource . IResourceClass < IParameterResource > , SetService : ng . resource . IResourceClass < ISetResource > ,
@@ -98,8 +92,79 @@ export class ParameterDataController {
98
92
}
99
93
}
100
94
95
+ export interface ICsvParameterDataScope extends ng . IScope {
96
+ model : IModel ;
97
+ scenario : IScenario ;
98
+ data : parameterDataModelCsv . ParameterDataCsv ;
99
+ save : ( ) => void ;
100
+ loading : boolean ;
101
+ }
102
+
101
103
export class CsvParameterDataController {
102
104
constructor ( $scope : ICsvParameterDataScope , $routeParams : angular . route . IRouteParamsService , $window : angular . IWindowService , $q : angular . IQService ,
105
+ ParameterService : ng . resource . IResourceClass < IParameterResource > , SetService : ng . resource . IResourceClass < ISetResource > ,
106
+ ParameterDataService : angular . resource . IResourceClass < IParameterDataResource > , SetDataService : angular . resource . IResourceClass < ISetDataResource > ,
107
+ ModelService : angular . resource . IResourceClass < IModelResource > , ScenarioService : angular . resource . IResourceClass < IScenarioResource >
108
+ ) {
109
+ $scope . loading = true ;
110
+ var modelId = $routeParams [ 'modelId' ] ;
111
+ var scenarioId = $routeParams [ 'scenarioId' ] ;
112
+
113
+ var setReq = SetService . query ( ) . $promise ;
114
+ var parameterReq = ParameterService . query ( ) . $promise ;
115
+ var modelReq = ModelService . get ( { id : modelId } ) . $promise ;
116
+ var scenarioReq = ScenarioService . get ( { modelId : modelId , id : scenarioId } ) . $promise ;
117
+
118
+ $q . all ( [ setReq , parameterReq , modelReq , scenarioReq ] ) . then ( res => {
119
+ var allSets = < ISet [ ] > res [ 0 ] ;
120
+ var allParameters = < IParameter [ ] > res [ 1 ] ;
121
+ $scope . model = < IModel > res [ 2 ] ;
122
+ $scope . scenario = < IScenario > res [ 3 ] ;
123
+ var parameters = _ . filter ( allParameters , p => _ . includes ( $scope . model . parameters , p . id ) ) ;
124
+ if ( parameters . length == 0 ) {
125
+ $scope . loading = false ;
126
+ return ; //TODO: no data needs to be entered, indicate this somehow
127
+ }
128
+ var actualSetIds = _ . uniq ( _ . flatten ( _ . map ( parameters , p => p . sets ) ) ) ;
129
+ var sets = _ . map ( actualSetIds , sId => _ . find ( allSets , s => s . id == sId ) ) ;
130
+ var setDataReqs = _ . map ( actualSetIds , sId => {
131
+ return SetDataService . get ( { setId : sId , modelId : modelId } ) . $promise ;
132
+ } ) ;
133
+
134
+ var parameterDataReqs = _ . map ( parameters , p => ParameterDataService . get ( { parameterId : p . id , scenarioId : scenarioId } ) . $promise ) ;
135
+
136
+ $q . all ( [ $q . all ( setDataReqs ) , $q . all ( parameterDataReqs ) ] ) . then ( ( dataRes ) => {
137
+ var setDatas = < ISetData [ ] > dataRes [ 0 ] ;
138
+ var parameterDatas = < IParameterData [ ] > dataRes [ 1 ] ;
139
+
140
+ $scope . data = new parameterDataModelCsv . ParameterDataCsv ( modelId , scenarioId , parameters , sets , parameterDatas , setDatas ) ;
141
+ $scope . loading = false ;
142
+ } ) ;
143
+ } ) ;
144
+
145
+ $scope . save = ( ) => {
146
+ $scope . loading = true ;
147
+ var parameterDatas = $scope . data . serialize ( ) ;
148
+ var saveReqs = _ . map ( parameterDatas , parameterData => ParameterDataService . save ( parameterData ) . $promise ) ;
149
+ $q . all ( saveReqs ) . then ( ( ) => {
150
+ $window . location . href = `#/models/${ $scope . model . id } /${ $scope . scenario . id } /data` ;
151
+ } , ( ) => {
152
+ alert ( 'An error has occured during saving' ) ;
153
+ $scope . loading = false ;
154
+ } ) ;
155
+ }
156
+ }
157
+ }
158
+
159
+ export interface ICsvParameterDataForParameterScope extends ng . IScope {
160
+ data : parameterDataModelCsv . LegacyParameterDataCsv ;
161
+ save : ( ) => void ;
162
+ loading : boolean ;
163
+ returnUrlSuffix : string ;
164
+ }
165
+
166
+ export class CsvParameterDataForParameterController {
167
+ constructor ( $scope : ICsvParameterDataForParameterScope , $routeParams : angular . route . IRouteParamsService , $window : angular . IWindowService , $q : angular . IQService ,
103
168
ParameterService : ng . resource . IResourceClass < IParameterResource > , SetService : ng . resource . IResourceClass < ISetResource > ,
104
169
ParameterDataService : angular . resource . IResourceClass < IParameterDataResource > , SetDataService : angular . resource . IResourceClass < ISetDataResource >
105
170
) {
@@ -126,7 +191,7 @@ export class CsvParameterDataController {
126
191
var setDatas = < ISetData [ ] > setDataRes ;
127
192
var numericSets = _ . filter ( sets , s => s . numeric ) ;
128
193
var axisSetData = numericSets . length ? _ ( setDatas ) . filter ( sd => _ . some ( numericSets , ns => ns . id == sd . setId ) ) . maxBy ( sd => sd . items . length ) : _ . maxBy ( setDatas , sd => sd . items . length ) ;
129
- $scope . data = new parameterDataModelCsv . ParameterDataCsv ( modelId , scenarioId , [ parameter ] , sets , [ parameterData ] , setDatas , axisSetData . setId ) ;
194
+ $scope . data = new parameterDataModelCsv . LegacyParameterDataCsv ( modelId , scenarioId , [ parameter ] , sets , [ parameterData ] , setDatas , axisSetData . setId ) ;
130
195
$scope . loading = false ;
131
196
} ) ;
132
197
} ) ;
@@ -144,7 +209,7 @@ export class CsvParameterDataController {
144
209
}
145
210
146
211
export interface ICsvParameterDataForSetScope extends ng . IScope {
147
- data : parameterDataModelCsv . ParameterDataCsv ;
212
+ data : parameterDataModelCsv . LegacyParameterDataCsv ;
148
213
set : ISet ;
149
214
modelId : string ;
150
215
scenarioId : string ;
@@ -196,7 +261,7 @@ export class CsvParameterDataForSetController {
196
261
var axisSet = this . determineCommonSet ( commonSets , setDatas ) ;
197
262
var axisSetId = axisSet ? axisSet . id : null ;
198
263
199
- $scope . data = new parameterDataModelCsv . ParameterDataCsv ( $scope . modelId , $scope . scenarioId , parameters , allSets , parameterDatas , setDatas , axisSetId , setId , $scope . setValue ) ;
264
+ $scope . data = new parameterDataModelCsv . LegacyParameterDataCsv ( $scope . modelId , $scope . scenarioId , parameters , allSets , parameterDatas , setDatas , axisSetId , setId , $scope . setValue ) ;
200
265
$scope . loading = false ;
201
266
} ) ;
202
267
} ) ;
0 commit comments