65
65
var callback = function(xhr)
67
67
var projectsets = JSON.parse(xhr.responseText);
68
var dl = document.createElement("dl");
70
/* Add details for each project set */
68
71
for (var i=0; i<projectsets.length; i++)
70
73
var projectset = projectsets[i];
71
74
var groups = projectset.groups;
72
var dl = document.createElement("dl");
73
dl.appendChild(dom_make_text_elem("dt", "Project Set "+(i+1)));
76
var dt = dom_make_text_elem("dt", "Project Set "+(i+1)+" ");
77
var input = document.createElement("input");
78
input.value = "New Group";
79
input.type = 'button';
80
input.setAttribute("onclick", "create_new_group("+projectset['projectsetid']+")");
81
dt.appendChild(input);
74
83
var dd = document.createElement("dd");
75
84
var ul = document.createElement("ul");
76
85
dd.appendChild(ul);
78
87
for (var j=0; j<groups.length; j++)
80
89
var group = groups[j];
81
ul.appendChild(dom_make_text_elem("li", group['groupnm']))
90
var namespace = "project_group_" + group.groupid;
91
var li = dom_make_text_elem("li", group['groupnm']+" ");
93
var button = document.createElement("a");
94
button.id = namespace+"_button";
95
button.textContent = '(manage)';
96
button.setAttribute("onclick",
97
"manage_group("+offeringid+","+group.groupid+",'"+namespace+"')");
98
li.appendChild(button);
83
101
dl.appendChild(dd);
87
ajax_call(callback, serviceapp, 'get_project_groups', {'offeringid': offeringid}, 'GET')
104
ajax_call(callback, serviceapp, 'get_project_groups', {'offeringid': offeringid}, 'GET');
107
/* Creates a group */
108
function create_new_group(projectsetid)
110
groupnm = window.prompt('Please enter a name for the group');
111
args = {'projectsetid': projectsetid, 'groupnm':groupnm, 'nick': groupnm};
112
response = ajax_call(null, serviceapp, 'create_group', args, 'POST');
113
if (response.status == 200)
119
alert("Error: Could not add group. Does it already exits?");
121
/* Reload the display */
125
function manage_group(offeringid, groupid, namespace)
127
var elem = document.getElementById(namespace);
128
var button = document.getElementById(namespace+"_button");
129
var manage_div = document.createElement("div")
130
elem.insertBefore(manage_div, button);
132
var callback = function(xhr)
134
var members = JSON.parse(xhr.responseText);
135
var available = members.available;
136
var groupmembers = members.groupmembers;
139
var select = document.createElement("select");
140
for (var i=0; i<available.length; i++)
142
var option = dom_make_text_elem("option", available[i].login);
143
option.value = available[i].login;
144
select.appendChild(option);
146
var button = document.createElement("input");
147
button.value = "Add new group member";
148
button.type = 'button';
149
button.addEventListener("click", function()
151
args = {'login': select.value, 'groupid': groupid};
152
ajax_call(null, serviceapp, 'assign_group', args, 'POST');
154
manage_div.appendChild(select);
155
manage_div.appendChild(button);
157
/* Existing members */
158
manage_div.appendChild(dom_make_text_elem("p", "Group Members:"));
159
var ul = document.createElement("ul");
160
for (var i=0; i<groupmembers.length; i++)
162
var li = dom_make_text_elem("li", groupmembers[i].login);
165
manage_div.appendChild(ul);
167
var args = {'offeringid': offeringid, 'groupid': groupid};
168
ajax_call(callback, serviceapp, 'get_group_membership', args, 'GET');
169
/* Remove the button element */
170
elem.removeChild(button);