|
@@ -400,14 +400,14 @@
|
|
|
}else{
|
|
|
assignedIp = `<div class="ui list">`
|
|
|
member.ipAssignments.forEach(function(thisIp){
|
|
|
- assignedIp += `<div class="item" style="width: 100%;">${thisIp} <a style="cursor:pointer; float: right;" onclick="deleteIpFromMemeber('${member.address}','${thisIp}');"><i class="red remove icon"></i></a></div>`;
|
|
|
+ assignedIp += `<div class="item" style="width: 100%;">${thisIp} <a style="cursor:pointer; float: right;" title="Remove IP" onclick="deleteIpFromMemeber('${member.address}','${thisIp}');"><i class="red remove icon"></i></a></div>`;
|
|
|
})
|
|
|
assignedIp += `</div>`
|
|
|
}
|
|
|
const row = $(`<tr class="GANetMemberEntity ${rowClass}" style="${unauthorizedStyle}">`);
|
|
|
row.append($(`<td class="GANetMember ${rowClass}" style="text-align: center;">`).html(authorizedCheckbox));
|
|
|
row.append($('<td>').text(member.address));
|
|
|
- row.append($('<td>').text(""));
|
|
|
+ row.append($('<td>').html(`<span class="memberName" addr="${member.address}"></span> <a style="cursor:pointer; float: right;" title="Edit Memeber Name" onclick="renameMember('${member.address}');"><i class="grey edit icon"></i></a>`));
|
|
|
row.append($('<td>').html(`${assignedIp}
|
|
|
<div class="ui action mini fluid input" style="min-width: 200px;">
|
|
|
<input type="text" placeholder="IPv4" onchange="$(this).val($(this).val().trim());">
|
|
@@ -417,10 +417,12 @@
|
|
|
</div>`));
|
|
|
row.append($('<td>').text(lastAuthTime));
|
|
|
row.append($('<td>').text(version));
|
|
|
- row.append($(`<td style="text-align: center;" onclick="handleMemberDelete('${member.address}');">`).html(`<button class="ui basic mini icon button"><i class="red remove icon"></i></button>`));
|
|
|
+ row.append($(`<td title="Deauthorize & Delete Memeber" style="text-align: center;" onclick="handleMemberDelete('${member.address}');">`).html(`<button class="ui basic mini icon button"><i class="red remove icon"></i></button>`));
|
|
|
|
|
|
tableBody.append(row);
|
|
|
});
|
|
|
+
|
|
|
+ initNameForMembers();
|
|
|
},
|
|
|
error: function(xhr, status, error) {
|
|
|
console.log('Error:', error);
|
|
@@ -428,6 +430,57 @@
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ function initNameForMembers(){
|
|
|
+ $(".memberName").each(function(){
|
|
|
+ let addr = $(this).attr("addr");
|
|
|
+ let targetDOM = $(this);
|
|
|
+ $.ajax({
|
|
|
+ url: "/api/gan/members/name",
|
|
|
+ method: "POST",
|
|
|
+ data: {
|
|
|
+ netid: currentGANetID,
|
|
|
+ memid: addr,
|
|
|
+ },
|
|
|
+ success: function(data){
|
|
|
+ if (data.error != undefined){
|
|
|
+ $(targetDOM).text("N/A");
|
|
|
+ }else{
|
|
|
+ $(targetDOM).text(data.Name);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ function renameMember(targetMemberAddr){
|
|
|
+ if (targetMemberAddr == ""){
|
|
|
+ msgbox("Member address cannot be empty", false, 5000)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ let newname = prompt("Enter a easy manageable name for " + targetMemberAddr, "");
|
|
|
+ if (newname != null && newname.trim() != "") {
|
|
|
+ $.ajax({
|
|
|
+ url: "/api/gan/members/name",
|
|
|
+ method: "POST",
|
|
|
+ data: {
|
|
|
+ netid: currentGANetID,
|
|
|
+ memid: targetMemberAddr,
|
|
|
+ name: newname
|
|
|
+ },
|
|
|
+ success: function(data){
|
|
|
+ if (data.error != undefined){
|
|
|
+ msgbox(data.error, false, 6000);
|
|
|
+ }else{
|
|
|
+ msgbox("Member Name Updated");
|
|
|
+ }
|
|
|
+ renderMemeberTable(true);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //Helper function to check if two objects are equal recursively
|
|
|
function objectEqual(obj1, obj2) {
|
|
|
// compare types
|
|
|
if (typeof obj1 !== typeof obj2) {
|