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

« back to all changes in this revision

Viewing changes to dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/webapp/dhis-web-maintenance-datadictionary/javascript/dataElementGroup.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
// View details
 
4
// -----------------------------------------------------------------------------
 
5
 
 
6
function showDataElementGroupDetails( dataElementGroupId )
 
7
{
 
8
    var request = new Request();
 
9
    request.setResponseTypeXML( 'dataElementGroup' );
 
10
    request.setCallbackSuccess( dataElementGroupReceived );
 
11
    request.send( 'getDataElementGroup.action?id=' + dataElementGroupId );
 
12
}
 
13
 
 
14
function dataElementGroupReceived( dataElementGroupElement )
 
15
{
 
16
    setFieldValue( 'nameField', getElementValue( dataElementGroupElement, 'name' ) );
 
17
    setFieldValue( 'memberCountField', getElementValue( dataElementGroupElement, 'memberCount' ) );
 
18
 
 
19
    showDetails();
 
20
}
 
21
 
 
22
// -----------------------------------------------------------------------------
 
23
// Remove data element group
 
24
// -----------------------------------------------------------------------------
 
25
 
 
26
function removeDataElementGroup( dataElementGroupId, dataElementGroupName )
 
27
{
 
28
    var result = window.confirm( i18n_confirm_delete + '\n\n' + dataElementGroupName );
 
29
    
 
30
    if ( result )
 
31
    {
 
32
        window.location.href = 'removeDataElementGroup.action?id=' + dataElementGroupId;
 
33
    }
 
34
}
 
35
 
 
36
// -----------------------------------------------------------------------------
 
37
// Add data element group
 
38
// -----------------------------------------------------------------------------
 
39
 
 
40
function validateAddDataElementGroup()
 
41
{
 
42
    var request = new Request();
 
43
    request.setResponseTypeXML( 'message' );
 
44
    request.setCallbackSuccess( addValidationCompleted );
 
45
    request.send( 'validateDataElementGroup.action?name=' + getFieldValue( 'name' ) );
 
46
 
 
47
    return false;
 
48
}
 
49
 
 
50
function addValidationCompleted( messageElement )
 
51
{
 
52
    var type = messageElement.getAttribute( 'type' );
 
53
    var message = messageElement.firstChild.nodeValue;
 
54
    
 
55
    if ( type == 'success' )
 
56
    {
 
57
        var availableDataElements = document.getElementById( 'availableDataElements' );
 
58
        availableDataElements.selectedIndex = -1;
 
59
        
 
60
        var groupMembers = document.getElementById( 'groupMembers' );
 
61
        for ( var i = 0; i < groupMembers.options.length; ++i )
 
62
        {
 
63
            groupMembers.options[i].selected = true;
 
64
        }
 
65
        
 
66
        var form = document.getElementById( 'addDataElementGroupForm' );
 
67
        form.submit();
 
68
    }
 
69
    else if ( type == 'error' )
 
70
    {
 
71
        window.alert( i18n_adding_data_element_group_failed + ':' + '\n' + message );
 
72
    }
 
73
    else if ( type == 'input' )
 
74
    {
 
75
        document.getElementById( 'message' ).innerHTML = message;
 
76
        document.getElementById( 'message' ).style.display = 'block';
 
77
    }
 
78
}
 
79
 
 
80
// -----------------------------------------------------------------------------
 
81
// Update data element group
 
82
// -----------------------------------------------------------------------------
 
83
 
 
84
function validateUpdateDataElementGroup()
 
85
{
 
86
    var request = new Request();
 
87
    request.setResponseTypeXML( 'message' );
 
88
    request.setCallbackSuccess( updateValidationCompleted );
 
89
    request.send( 'validateDataElementGroup.action?id=' + getFieldValue( 'id' ) +
 
90
        '&name=' + getFieldValue( 'name' ) );
 
91
 
 
92
    return false;
 
93
}
 
94
 
 
95
function updateValidationCompleted( messageElement )
 
96
{
 
97
    var type = messageElement.getAttribute( 'type' );
 
98
    var message = messageElement.firstChild.nodeValue;
 
99
    
 
100
    if ( type == 'success' )
 
101
    {
 
102
        var availableDataElements = document.getElementById( 'availableDataElements' );
 
103
        availableDataElements.selectedIndex = -1;
 
104
        
 
105
        var groupMembers = document.getElementById( 'groupMembers' );
 
106
        for ( var i = 0; i < groupMembers.options.length; ++i )
 
107
        {
 
108
            groupMembers.options[i].selected = true;
 
109
        }
 
110
 
 
111
        var form = document.getElementById( 'updateDataElementGroupForm' );
 
112
        form.submit();
 
113
    }
 
114
    else if ( type == 'error' )
 
115
    {
 
116
        window.alert( i18n_saving_data_element_group_failed + ':' + '\n' + message );
 
117
    }
 
118
    else if ( type == 'input' )
 
119
    {
 
120
        document.getElementById( 'message' ).innerHTML = message;
 
121
        document.getElementById( 'message' ).style.display = 'block';
 
122
    }
 
123
}
 
124
 
 
125
// -----------------------------------------------------------------------------
 
126
// Select lists
 
127
// -----------------------------------------------------------------------------
 
128
 
 
129
function initLists()
 
130
{
 
131
    var list = document.getElementById( 'groupMembers' );
 
132
    var id;
 
133
 
 
134
    for ( id in groupMembers )
 
135
    {
 
136
        list.add( new Option( groupMembers[id], id ), null );
 
137
    }
 
138
 
 
139
    list = document.getElementById( 'availableDataElements' );
 
140
 
 
141
    for ( id in availableDataElements )
 
142
    {
 
143
        list.add( new Option( availableDataElements[id], id ), null );
 
144
    }
 
145
}
 
146
 
 
147
function filterGroupMembers()
 
148
{
 
149
    var filter = document.getElementById( 'groupMembersFilter' ).value;
 
150
    var list = document.getElementById( 'groupMembers' );
 
151
    
 
152
    list.options.length = 0;
 
153
    
 
154
    for ( var id in groupMembers )
 
155
    {
 
156
        var value = groupMembers[id];
 
157
        
 
158
        if ( value.toLowerCase().indexOf( filter.toLowerCase() ) != -1 )
 
159
        {
 
160
            list.add( new Option( value, id ), null );
 
161
        }
 
162
    }
 
163
}
 
164
 
 
165
function filterAvailableDataElements()
 
166
{
 
167
    var filter = document.getElementById( 'availableDataElementsFilter' ).value;
 
168
    var list = document.getElementById( 'availableDataElements' );
 
169
    
 
170
    list.options.length = 0;
 
171
    
 
172
    for ( var id in availableDataElements )
 
173
    {
 
174
        var value = availableDataElements[id];
 
175
        
 
176
        if ( value.toLowerCase().indexOf( filter.toLowerCase() ) != -1 )
 
177
        {
 
178
            list.add( new Option( value, id ), null );
 
179
        }
 
180
    }
 
181
}
 
182
 
 
183
function addGroupMembers()
 
184
{
 
185
    var list = document.getElementById( 'availableDataElements' );
 
186
 
 
187
    while ( list.selectedIndex != -1 )
 
188
    {
 
189
        var id = list.options[list.selectedIndex].value;
 
190
 
 
191
        list.options[list.selectedIndex].selected = false;
 
192
 
 
193
        groupMembers[id] = availableDataElements[id];
 
194
        
 
195
        delete availableDataElements[id];        
 
196
    }
 
197
    
 
198
    filterGroupMembers();
 
199
    filterAvailableDataElements();
 
200
}
 
201
 
 
202
function removeGroupMembers()
 
203
{
 
204
    var list = document.getElementById( 'groupMembers' );
 
205
 
 
206
    while ( list.selectedIndex != -1 )
 
207
    {
 
208
        var id = list.options[list.selectedIndex].value;
 
209
 
 
210
        list.options[list.selectedIndex].selected = false;
 
211
 
 
212
        //availableDataElements[id] = groupMembers[id];
 
213
        
 
214
        delete groupMembers[id];        
 
215
    }
 
216
    
 
217
    filterGroupMembers();
 
218
    filterAvailableDataElements();
 
219
}
 
220
 
 
221
// -----------------------------------------------------------------------------
 
222
// New data element group
 
223
// -----------------------------------------------------------------------------
 
224
 
 
225
function initAllList()
 
226
{
 
227
        var list = document.getElementById( 'dataElementGroups' );
 
228
    var id;
 
229
 
 
230
    for ( id in dataElementGroups )
 
231
    {
 
232
        list.add( new Option( dataElementGroups[id], id ), null );
 
233
    }
 
234
 
 
235
    list = document.getElementById( 'availableDataElements' );
 
236
 
 
237
    for ( id in availableDataElements )
 
238
    {
 
239
        list.add( new Option( availableDataElements[id], id ), null );
 
240
    }
 
241
        
 
242
        if(list.selectedIndex==-1){
 
243
                list.disabled = true;
 
244
        }
 
245
}
 
246
 
 
247
function addSelectDataElements()
 
248
{
 
249
        var list = document.getElementById( 'availableDataElements' );
 
250
 
 
251
    while ( list.selectedIndex != -1 )
 
252
    {
 
253
        var id = list.options[list.selectedIndex].value;
 
254
 
 
255
        list.options[list.selectedIndex].selected = false;
 
256
 
 
257
        selectedDataElements[id] = availableDataElements[id];       
 
258
    
 
259
    }
 
260
        filterSelectedDataElements();
 
261
        filterAvailableDataElements();
 
262
}
 
263
 
 
264
function removeSelectedDataElements()
 
265
{
 
266
    var list = document.getElementById( 'selectedDataElements' );       
 
267
 
 
268
    while ( list.selectedIndex != -1 )
 
269
    {
 
270
        var id = list.options[list.selectedIndex].value;
 
271
 
 
272
        list.options[list.selectedIndex].selected = false;
 
273
                
 
274
        //availableDataElements[id] = selectedDataElements[id];
 
275
        
 
276
        delete selectedDataElements[id];        
 
277
    }
 
278
    
 
279
    filterSelectedDataElements();
 
280
    filterAvailableDataElements();
 
281
}
 
282
 
 
283
function filterDataElementGroups()
 
284
{
 
285
        var filter = document.getElementById( 'dataElementGroupsFilter' ).value;
 
286
    var list = document.getElementById( 'dataElementGroups' );
 
287
    
 
288
    list.options.length = 0;
 
289
    
 
290
    for ( var id in dataElementGroups )
 
291
    {
 
292
        var value = dataElementGroups[id];
 
293
        
 
294
        if ( value.toLowerCase().indexOf( filter.toLowerCase() ) != -1 )
 
295
        {
 
296
            list.add( new Option( value, id ), null );
 
297
        }
 
298
    }
 
299
}
 
300
 
 
301
function filterSelectedDataElements()
 
302
{
 
303
        var filter = document.getElementById( 'selecteDataElementsFilter' ).value;
 
304
    var list = document.getElementById( 'selectedDataElements' );
 
305
    
 
306
    list.options.length = 0;
 
307
    
 
308
    for ( var id in selectedDataElements )
 
309
    {
 
310
        var value = selectedDataElements[id];
 
311
        
 
312
        if ( value.toLowerCase().indexOf( filter.toLowerCase() ) != -1 )
 
313
        {
 
314
            list.add( new Option( value, id ), null );
 
315
        }
 
316
    }
 
317
}
 
318
 
 
319
 
 
320
function getDataElementGroup( dataElementGroupList )
 
321
{                       
 
322
        selectedDataElements = new Object();
 
323
        var id = dataElementGroupList.options[ dataElementGroupList.selectedIndex ].value;      
 
324
        var request = new Request();
 
325
    request.setResponseTypeXML( 'xmlObject' );
 
326
    request.setCallbackSuccess( getDataElementGroupCompleted );
 
327
    request.send( 'getDataElementGroupEditor.action?id=' + id );        
 
328
}
 
329
 
 
330
function getDataElementGroupCompleted( xmlObject )
 
331
{       
 
332
        var selectedList = document.getElementById( 'selectedDataElements' );   
 
333
        selectedList.length = 0;
 
334
        name = xmlObject.getElementsByTagName('name')[0].firstChild.nodeValue;
 
335
        var dataElementList = xmlObject.getElementsByTagName('dataElement');
 
336
        for ( var i = 0; i < dataElementList.length; i++ )
 
337
        {
 
338
                dataElement = dataElementList.item(i);  
 
339
                var id = dataElement.getAttribute('id');
 
340
                var value = dataElement.firstChild.nodeValue;           
 
341
                selectedDataElements[id] = value;
 
342
        }
 
343
        filterSelectedDataElements();   
 
344
        document.getElementById( 'groupNameView').innerHTML = i18n_member_of + " <b>" + name + "</b>";
 
345
        document.getElementById('availableDataElements').disabled=false;
 
346
        
 
347
}
 
348
 
 
349
function updateDataElementGroupMembers(){
 
350
        var dataElementGroupsSelect = document.getElementById( 'dataElementGroups' );
 
351
        var id = dataElementGroupsSelect.options[ dataElementGroupsSelect.selectedIndex ].value;
 
352
        
 
353
        var request = new Request();
 
354
 
 
355
        var requestString = 'updateDataElementGroupEditor.action';
 
356
 
 
357
        var params = "id=" + id;
 
358
 
 
359
        var selectedDataElementMembers = document.getElementById( 'selectedDataElements' );
 
360
 
 
361
        for ( var i = 0; i < selectedDataElementMembers.options.length; ++i)
 
362
        {
 
363
                params += '&selectedDataElements=' + selectedDataElementMembers.options[i].value;
 
364
        }       
 
365
        request.sendAsPost( params );
 
366
        request.setResponseTypeXML( 'xmlObject' );      
 
367
        request.setCallbackSuccess( updateDataElementGroupMembersReceived );
 
368
        request.send( requestString );  
 
369
}
 
370
 
 
371
function updateDataElementGroupMembersReceived( xmlObject )
 
372
{               
 
373
        dataElementGroupsSelect = document.getElementById( 'dataElementGroups' );       
 
374
        document.getElementById('message').style.display='block';
 
375
        document.getElementById('message').innerHTML = i18n_update_success + " : " + dataElementGroupsSelect.options[ dataElementGroupsSelect.selectedIndex ].text;     
 
376
        
 
377
}
 
378
 
 
379
function deleteDataElementGroup()
 
380
{
 
381
        var dataElementGroupsSelect = document.getElementById( 'dataElementGroups' );           
 
382
        try
 
383
        {
 
384
                var id = dataElementGroupsSelect.options[ dataElementGroupsSelect.selectedIndex ].value;
 
385
                var name =  dataElementGroupsSelect.options[ dataElementGroupsSelect.selectedIndex ].text;
 
386
                if( window.confirm( i18n_confirm_delete + '\n\n' + name ) )
 
387
                {
 
388
                        var request = new Request();
 
389
                        request.setResponseTypeXML( 'xmlObject' );      
 
390
                        request.setCallbackSuccess( deleteDataElementGroupReceived );
 
391
                        request.send( 'deleteDataElemenGroupEditor.action?id=' + id );  
 
392
                }                       
 
393
        }
 
394
        catch(e)
 
395
        {
 
396
                alert( i18n_select_dataelement_group );
 
397
        }
 
398
}
 
399
 
 
400
function deleteDataElementGroupReceived( xmlObject )
 
401
{
 
402
        var type = xmlObject.getAttribute( 'type' );
 
403
        if(type=='success')
 
404
        {
 
405
                var dataElementGroupsSelect = document.getElementById( 'dataElementGroups' );                   
 
406
                dataElementGroupsSelect.remove( dataElementGroupsSelect.selectedIndex );
 
407
                document.getElementById( 'groupNameView' ).innerHTML = "";
 
408
                selectedDataElements = new Object();
 
409
                filterSelectedDataElements();
 
410
        }
 
411
}
 
412
 
 
413
function showRenameDataElementGroupForm()
 
414
{               
 
415
        var dataElementGroupsSelect = document.getElementById( 'dataElementGroups' );
 
416
                
 
417
        try
 
418
        {
 
419
                var name = dataElementGroupsSelect.options[ dataElementGroupsSelect.selectedIndex ].text;
 
420
                document.getElementById( 'addRenameGroupButton' ).onclick=validateRenameDataElementGroup;
 
421
                showDivCenter( 'addDataElementGroupForm' );
 
422
                showDivEffect();
 
423
                document.getElementById( 'groupName' ).value = name;
 
424
        }
 
425
        catch(e)
 
426
        {
 
427
                alert(i18n_select_dataelement_group);
 
428
        }
 
429
        
 
430
}
 
431
 
 
432
function validateRenameDataElementGroup()
 
433
{
 
434
        var dataElementGroupsSelect = document.getElementById( 'dataElementGroups' );
 
435
        var id = dataElementGroupsSelect.options[ dataElementGroupsSelect.selectedIndex ].value;        
 
436
        var name = document.getElementById( 'groupName' ).value;        
 
437
        var request = new Request();
 
438
        request.setResponseTypeXML( 'xmlObject' );
 
439
        request.setCallbackSuccess( validateRenameDataElementGroupReceived );
 
440
        request.send( 'validateDataElementGroup.action?id=' + id + '&name=' + name );   
 
441
}
 
442
 
 
443
function validateRenameDataElementGroupReceived( xmlObject )
 
444
{
 
445
        var type = xmlObject.getAttribute( 'type' );
 
446
        if(type=='input')
 
447
        {
 
448
                alert(xmlObject.firstChild.nodeValue);
 
449
        }
 
450
        if(type=='success')
 
451
        {
 
452
                renameDataElementGroup();
 
453
        }
 
454
}
 
455
 
 
456
function renameDataElementGroup()
 
457
{
 
458
        var dataElementGroupsSelect = document.getElementById( 'dataElementGroups' );
 
459
        var id = dataElementGroupsSelect.options[ dataElementGroupsSelect.selectedIndex ].value;        
 
460
        var name = document.getElementById( 'groupName' ).value;                
 
461
        var request = new Request();
 
462
        request.setResponseTypeXML( 'xmlObject' );
 
463
        request.setCallbackSuccess( renameDataElementGroupReceived );
 
464
        request.send( 'renameDataElementGroupEditor.action?id=' + id + '&name=' + name );
 
465
        
 
466
}
 
467
 
 
468
function renameDataElementGroupReceived( xmlObject ){   
 
469
        var name = xmlObject.getElementsByTagName( "name" )[0].firstChild.nodeValue;
 
470
        var list = document.getElementById( 'dataElementGroups' );
 
471
        list.options[ list.selectedIndex ].text = name; 
 
472
        document.getElementById( 'groupNameView' ).innerHTML = name;            
 
473
        showHideDiv( 'addDataElementGroupForm' );
 
474
        deleteDivEffect();              
 
475
}
 
476
 
 
477
function showAddDataElementGroupForm()
 
478
{
 
479
        document.getElementById( 'groupName' ).value='';        
 
480
        document.getElementById( 'addRenameGroupButton' ).onclick=validateAddDataElementGroup;
 
481
        showDivCenter( 'addDataElementGroupForm' );
 
482
        showDivEffect();
 
483
}
 
484
 
 
485
function validateAddDataElementGroup()
 
486
{
 
487
        var name = document.getElementById( 'groupName' ).value;        
 
488
        var request = new Request();
 
489
        request.setResponseTypeXML( 'xmlObject' );
 
490
        request.setCallbackSuccess( validateAddDataElementGroupReceived );
 
491
        request.send( 'validateDataElementGroup.action?name=' + name ); 
 
492
}
 
493
 
 
494
function validateAddDataElementGroupReceived( xmlObject )
 
495
{
 
496
        var type = xmlObject.getAttribute( 'type' );
 
497
        if(type=='input')
 
498
        {
 
499
                alert(xmlObject.firstChild.nodeValue);
 
500
        }
 
501
        if(type=='success')
 
502
        {
 
503
                createNewGroup();
 
504
        }
 
505
}
 
506
 
 
507
function createNewGroup()
 
508
{
 
509
        var name = document.getElementById( 'groupName' ).value;        
 
510
        var request = new Request();
 
511
        request.setResponseTypeXML( 'xmlObject' );
 
512
        request.setCallbackSuccess( createNewGroupReceived );
 
513
        request.send( 'addDataElementGroupEditor.action?name=' + name );        
 
514
}
 
515
 
 
516
function createNewGroupReceived( xmlObject ){           
 
517
        var id = xmlObject.getElementsByTagName( "id" )[0].firstChild.nodeValue;
 
518
        var name = xmlObject.getElementsByTagName( "name" )[0].firstChild.nodeValue;
 
519
        var list = document.getElementById( 'dataElementGroups' );
 
520
        var option = new Option( name, id );
 
521
        option.selected = true;
 
522
        list.add(option , null );       
 
523
        document.getElementById( 'groupNameView' ).innerHTML = name;            
 
524
        selectedDataElements = new Object();
 
525
        filterSelectedDataElements();           
 
526
        showHideDiv( 'addDataElementGroupForm' );
 
527
        deleteDivEffect();      
 
528
}