~mortenoh/+junk/dhis2-detailed-import-export

« back to all changes in this revision

Viewing changes to dhis-2/dhis-web/dhis-web-reporting/src/main/webapp/dhis-web-reporting/javascript/table.js

  • Committer: larshelge at gmail
  • Date: 2009-03-03 16:46:36 UTC
  • Revision ID: larshelge@gmail.com-20090303164636-2sjlrquo7ib1gf7r
Initial check-in

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
// -----------------------------------------------------------------------------
 
3
// Recreate ReportTable
 
4
// -----------------------------------------------------------------------------
 
5
 
 
6
function reCreateTable( tableId )
 
7
{
 
8
    var url = "reCreateTable.action?id=" + tableId + "&mode=table";
 
9
    
 
10
    if ( document.getElementById( "reportingPeriod" ) != null )
 
11
    {
 
12
        url += "&reportingPeriod=" + getListValue( "reportingPeriod" );
 
13
    }
 
14
    
 
15
    if ( document.getElementById( "parentOrganisationUnitId" ) != null )
 
16
    {
 
17
        url += "&parentOrganisationUnitId=" + getListValue( "parentOrganisationUnitId" );
 
18
    }
 
19
    
 
20
    if ( document.getElementById( "organisationUnitId" ) != null )
 
21
    {
 
22
        url += "&organisationUnitId=" + getListValue( "organisationUnitId" );
 
23
    }
 
24
    
 
25
    var request = new Request();
 
26
    request.setCallbackSuccess( reCreateTableReceived );    
 
27
    request.send( url );
 
28
}
 
29
 
 
30
function reCreateTableReceived( messageElement )
 
31
{
 
32
    getTableStatus();
 
33
}
 
34
 
 
35
function getTableStatus()
 
36
{
 
37
    var url = "getStatus.action";
 
38
    
 
39
    var request = new Request();
 
40
    request.setResponseTypeXML( 'status' );
 
41
    request.setCallbackSuccess( tableStatusReceived );    
 
42
    request.send( url );
 
43
}
 
44
 
 
45
function tableStatusReceived( xmlObject )
 
46
{
 
47
    var statusMessage = getElementValue( xmlObject, 'statusMessage' );
 
48
    var finished = getElementValue( xmlObject, 'finished' );
 
49
    
 
50
    if ( finished == "true" )
 
51
    {
 
52
        setMessage( i18n_process_completed );
 
53
    }
 
54
    else if ( statusMessage == null )
 
55
    {
 
56
        setMessage( i18n_please_wait );
 
57
    }
 
58
    else
 
59
    {
 
60
        setMessage( i18n_please_wait + ". " + statusMessage + "..."  );
 
61
    }
 
62
    
 
63
    waitAndGetTableStatus( 2000 );
 
64
}
 
65
 
 
66
function waitAndGetTableStatus( millis )
 
67
{
 
68
    setTimeout( "getTableStatus();", millis );
 
69
}
 
70
 
 
71
// -----------------------------------------------------------------------------
 
72
// Create and save ReportTable
 
73
// -----------------------------------------------------------------------------
 
74
 
 
75
function createAndSaveTable()
 
76
{
 
77
    if ( validateCollections() )
 
78
    {
 
79
        var tableId = document.getElementById( "tableId" ).value;
 
80
        var tableName = document.getElementById( "tableName" ).value;
 
81
        
 
82
        var url = "validateTable.action?id=" + tableId + "&name=" + tableName;
 
83
        
 
84
        var request = new Request();
 
85
        request.setResponseTypeXML( 'message' );
 
86
        request.setCallbackSuccess( createAndSaveTableReceived );
 
87
        request.send( url );
 
88
    }
 
89
}
 
90
 
 
91
function createAndSaveTableReceived( messageElement )
 
92
{
 
93
    var type = messageElement.getAttribute( 'type' );
 
94
    var message = messageElement.firstChild.nodeValue;
 
95
    
 
96
    if ( type == "input" )
 
97
    {
 
98
        setMessage( message );
 
99
        
 
100
        return false;
 
101
    }
 
102
    else if ( type == "success" )
 
103
    {        
 
104
        selectTableForm();
 
105
        
 
106
        var form = document.getElementById( "tableForm" );
 
107
        
 
108
        form.action = "createTable.action";
 
109
        
 
110
        form.submit();
 
111
    }
 
112
}
 
113
 
 
114
// -----------------------------------------------------------------------------
 
115
// Save ReportTable
 
116
// -----------------------------------------------------------------------------
 
117
 
 
118
function saveTable()
 
119
{
 
120
    if ( validateCollections() )
 
121
    {
 
122
        var tableId = document.getElementById( "tableId" ).value;
 
123
        var tableName = document.getElementById( "tableName" ).value;
 
124
        
 
125
        var url = "validateTable.action?id=" + tableId + "&name=" + tableName;
 
126
        
 
127
        var request = new Request();
 
128
        request.setResponseTypeXML( 'message' );
 
129
        request.setCallbackSuccess( saveTableReceived );
 
130
        request.send( url );
 
131
    }
 
132
}
 
133
 
 
134
function saveTableReceived( messageElement )
 
135
{
 
136
        var type = messageElement.getAttribute( 'type' );
 
137
    var message = messageElement.firstChild.nodeValue;
 
138
    
 
139
    if ( type == "input" )
 
140
    {
 
141
        setMessage( message );
 
142
        
 
143
        return false;
 
144
    }
 
145
    else if ( type == "success" )
 
146
    {        
 
147
        selectTableForm();
 
148
        
 
149
        var form = document.getElementById( "tableForm" );
 
150
        
 
151
        form.action = "createTable!save.action";
 
152
        
 
153
        form.submit();
 
154
    }
 
155
}
 
156
 
 
157
function removeTable( tableId, tableName )
 
158
{
 
159
    var result = window.confirm( i18n_confirm_delete + '\n\n' + tableName );
 
160
    
 
161
    if ( result )
 
162
    {
 
163
        window.location.href = "removeTable.action?id=" + tableId;
 
164
    }
 
165
}
 
166
 
 
167
function selectTableForm()
 
168
{
 
169
    if ( isNotNull( "selectedDataElements" ) )
 
170
    {
 
171
        selectAllById( "selectedDataElements" );
 
172
    }
 
173
    
 
174
    if ( isNotNull( "selectedIndicators" ) )
 
175
    {
 
176
       selectAllById( "selectedIndicators" );
 
177
    }
 
178
        
 
179
    if ( isNotNull( "selectedDataSets" ) )
 
180
    {
 
181
        selectAllById( "selectedDataSets" );
 
182
    }
 
183
    
 
184
    selectAllById( "selectedPeriods" );
 
185
    selectAllById( "selectedOrganisationUnits" );   
 
186
}
 
187
 
 
188
// -----------------------------------------------------------------------------
 
189
// Validation
 
190
// -----------------------------------------------------------------------------
 
191
 
 
192
function validateCollections()
 
193
{
 
194
    if ( isChecked( "regression" ) && document.getElementById( "selectedOrganisationUnits" ).options.length > 1 )
 
195
    {
 
196
        setMessage( i18n_cannot_include_more_organisation_unit_regression );
 
197
        
 
198
        return false;
 
199
    }
 
200
    
 
201
    if ( isChecked( "doIndicators" ) && isChecked( "doPeriods" ) && isChecked( "doOrganisationUnits" ) )
 
202
    {
 
203
        setMessage( i18n_cannot_crosstab_all_dimensions );
 
204
        
 
205
        return false;
 
206
    }
 
207
        
 
208
    if ( !isChecked( "doIndicators" ) && !isChecked( "doPeriods" ) && !isChecked( "doOrganisationUnits" ) && !isChecked( "doCategoryOptionCombos" ) )
 
209
    {
 
210
        setMessage( i18n_cannot_crosstab_no_dimensions );
 
211
        
 
212
        return false;
 
213
    }
 
214
    
 
215
    if ( isNotNull( "selectedDataElements" ) && !hasElements( "selectedDataElements" ) )
 
216
    {
 
217
        setMessage( i18n_must_select_at_least_one_dataelement );
 
218
        
 
219
        return false;
 
220
    }
 
221
    
 
222
    if ( isNotNull( "selectedIndicators" ) && !hasElements( "selectedIndicators" ) )
 
223
    {
 
224
        setMessage( i18n_must_select_at_least_one_indicator );
 
225
        
 
226
        return false;
 
227
    }
 
228
    
 
229
    if ( !hasElements( "selectedOrganisationUnits" ) && !organisationUnitReportParamsChecked() )
 
230
    {
 
231
        setMessage( i18n_must_select_at_least_one_unit );
 
232
        
 
233
        return false;
 
234
    }
 
235
    
 
236
    if ( !hasElements( "selectedPeriods" ) && !relativePeriodsChecked() )
 
237
    {
 
238
        setMessage( i18n_must_select_at_least_one_period );
 
239
        
 
240
        return false;
 
241
    }
 
242
    
 
243
    return true;
 
244
}
 
245
 
 
246
function relativePeriodsChecked()
 
247
{
 
248
    if ( isChecked( "reportingMonth" ) == true ||
 
249
         isChecked( "last3Months" ) == true ||
 
250
         isChecked( "last6Months" ) == true ||
 
251
         isChecked( "last9Months" ) == true ||
 
252
         isChecked( "last12Months" ) == true ||
 
253
         isChecked( "last3To6Months" ) == true ||
 
254
         isChecked( "last6To9Months" ) == true ||
 
255
         isChecked( "last9To12Months" ) == true ||
 
256
         isChecked( "last12IndividualMonths" ) == true ||
 
257
         isChecked( "soFarThisYear" ) == true ||
 
258
         isChecked( "soFarThisFinancialYear" ) == true ||
 
259
         isChecked( "individualMonthsThisYear" ) == true ||
 
260
         isChecked( "individualQuartersThisYear" ) == true )
 
261
    {
 
262
        return true;
 
263
    }
 
264
    
 
265
    return false;
 
266
}
 
267
 
 
268
function organisationUnitReportParamsChecked()
 
269
{
 
270
    if ( isChecked( "paramParentOrganisationUnit" ) == true ||
 
271
         isChecked( "paramOrganisationUnit" ) == true )
 
272
    {
 
273
        return true;
 
274
    }
 
275
    
 
276
    return false;
 
277
}
 
278
 
 
279
// -----------------------------------------------------------------------------
 
280
// Details
 
281
// -----------------------------------------------------------------------------
 
282
 
 
283
function showTableDetails( tableId )
 
284
{
 
285
        var request = new Request();
 
286
    request.setResponseTypeXML( 'reportTable' );
 
287
    request.setCallbackSuccess( tableReceived );
 
288
    request.send( 'getTable.action?id=' + tableId );    
 
289
}
 
290
 
 
291
function tableReceived( xmlObject )
 
292
{
 
293
        setFieldValue( 'nameField', getElementValue( xmlObject, 'name' ) );
 
294
        setFieldValue( 'tableNameField', getElementValue( xmlObject, 'tableName' ) );
 
295
        setFieldValue( 'indicatorsField', getElementValue( xmlObject, 'indicators' ) );
 
296
        setFieldValue( 'periodsField', getElementValue( xmlObject, 'periods' ) );
 
297
        setFieldValue( 'unitsField', getElementValue( xmlObject, 'units' ) );
 
298
        setFieldValue( 'doIndicatorsField', parseBool( getElementValue( xmlObject, 'doIndicators' ) ) );
 
299
        setFieldValue( 'doPeriodsField', parseBool( getElementValue( xmlObject, 'doPeriods' ) ) );
 
300
        setFieldValue( 'doUnitsField', parseBool( getElementValue( xmlObject, 'doUnits' ) ) );
 
301
        
 
302
        showDetails();
 
303
}
 
304
 
 
305
function parseBool( bool )
 
306
{
 
307
        return ( bool == "true" ) ? i18n_yes : i18n_no;
 
308
}
 
309
 
 
310
// -----------------------------------------------------------------------------
 
311
// Regression
 
312
// -----------------------------------------------------------------------------
 
313
 
 
314
function toggleRegression()
 
315
{
 
316
    if ( document.getElementById( "regression" ).checked )
 
317
    {
 
318
        check( "doIndicators" );
 
319
        uncheck( "doOrganisationUnits" );
 
320
        uncheck( "doPeriods" );
 
321
        uncheck( "doCategoryOptionCombos" );
 
322
        
 
323
        disable( "doOrganisationUnits" );
 
324
        disable( "doPeriods" );        
 
325
        disable( "doCategoryOptionCombos" );
 
326
    }
 
327
    else
 
328
    {
 
329
        enable( "doOrganisationUnits" );
 
330
        enable( "doPeriods" );        
 
331
        enable( "doCategoryOptionCombos" );
 
332
    }
 
333
}