/
view.js
131 lines (97 loc) · 3.27 KB
/
view.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
//=====================================================================================
//===
//=== Ownership View
//===
//=====================================================================================
function View(xmlLoader)
{
var rowTransf = new XSLTransformer('ownership/client-group-row.xsl', xmlLoader);
var loader = xmlLoader;
var cache = null;
this.addSourceUser = addSourceUser;
this.clearGroupList= clearGroupList;
this.addGroupRows = addGroupRows;
//=====================================================================================
//===
//=== API methods
//===
//=====================================================================================
function addSourceUser(id, name)
{
gui.addToSelect('source.user', id, name);
}
//=====================================================================================
function clearGroupList()
{
gui.removeAllButFirst('group.list');
Element.hide('groups');
}
//=====================================================================================
function addGroupRows(groupList)
{
cache = groupList;
var list = xml.children(groupList, 'group');
//--- add group rows
for (var i=0; i<list.length; i++)
{
var id = xml.evalXPath(list[i], 'id');
var xslRes = rowTransf.transform(list[i]);
//--- add the new search in list
gui.appendTableRow('group.list', xslRes)
var tr = $(id);
var targetGrp = xml.getElementById(tr, 'target.group');
var targetUsr = xml.getElementById(tr, 'target.user');
Event.observe(targetGrp, 'change', ker.wrap(this, targetChange));
addTargetGroups(id, targetGrp);
setTargetUsers (id, targetUsr);
targetGrp.targetUsr = targetUsr;
}
Element.show('groups');
}
//=====================================================================================
function addTargetGroups(groupId, ctrl)
{
var list = xml.children(cache, 'targetGroup');
for (var i=0; i<list.length; i++)
{
var tarId = xml.evalXPath(list[i], 'id');
var tarName = xml.evalXPath(list[i], 'label/'+Env.lang);
gui.addToSelect(ctrl, tarId, tarName, groupId == tarId);
}
}
//=====================================================================================
function setTargetUsers(groupId, ctrl)
{
var srcId = $F('source.user');
//--- remove all users
$(ctrl).options.length = 0;
var list = xml.children(cache, 'targetGroup');
for (var i=0; i<list.length; i++)
{
var tarId = xml.evalXPath(list[i], 'id');
if (tarId == groupId)
{
var editors = xml.children(list[i], 'editor');
for (var j=0; j<editors.length; j++)
{
var edId = xml.evalXPath(editors[j], 'id');
var name = xml.evalXPath(editors[j], 'name');
var surn = xml.evalXPath(editors[j], 'surname');
var username = xml.evalXPath(editors[j], 'username');
if (edId != srcId)
gui.addToSelect(ctrl, edId, surn +' '+ name +' ('+ username +') ');
}
}
}
}
//=====================================================================================
//=== Listener
//=====================================================================================
function targetChange(e)
{
var ctrl = Event.element(e);
var id = $F(ctrl);
setTargetUsers(id, ctrl.targetUsr);
}
//=====================================================================================
}