1
0
mirror of https://github.com/peeringdb/peeringdb.git synced 2024-05-11 05:55:09 +00:00
Files
peeringdb-peeringdb/peeringdb_server/static/peeringdb.admin.js
2018-11-08 19:45:21 +00:00

147 lines
4.1 KiB
JavaScript

(function($) {
/**
* peeringdb admin tools
*/
PeeringDBAdmin = {
init : function() {
if($('#org-merge-tool').length > 0)
this.OrgMergeTool.init();
},
OrgMergeTool : {
tool : function() {
return $('#org-merge-tool')
},
init : function() {
this.tool().find("#org-autocomplete-search-src").yourlabsAutocomplete({
url : "/autocomplete/org",
minimumCharacters : 2,
choiceSelector : "span",
inputClick : function(e,a,b) { console.log(e, a, b); }
}).input.bind("selectChoice", function(a,b) {
console.log("Selected Source Org", b.data("value"));
PeeringDBAdmin.OrgMergeTool.addToSelected(b.data("value"), b.text());
$(this).val("")
});
this.tool().find("#org-autocomplete-search-trg").yourlabsAutocomplete({
url : "/autocomplete/org",
minimumCharacters : 2,
choiceSelector : "span",
inputClick : function(e,a,b) { console.log(e, a, b); }
}).input.bind("selectChoice", function(a,b) {
console.log("Selected Target Org", b.data("value"));
PeeringDBAdmin.OrgMergeTool.setTargetOrg(b.data("value"), b.text());
$(this).val("")
});
this.tool().find('#btn-submit').click(function() {
PeeringDBAdmin.OrgMergeTool.submit();
});
},
// crude server error notification
error : function(response) {
alert("Server responded with error, please check console for further details");
console.error(response);
},
// reset all selections
reset : function() {
this.tool().find('#listing-selected').empty().siblings(".loading-shim").show();
this.setTargetOrg();
},
// submit merge request
submit : function() {
var orgs = [];
this.tool().children(".loading-shim").show();
this.tool().find('#listing-selected').find('.row').each(function(){
orgs.push(parseInt($(this).data("id")));
});
$.ajax({
url : "merge",
method : "GET",
data : {
"ids" : orgs.join(","),
"id" : this.targetOrgId
},
success : function(data) {
PeeringDBAdmin.OrgMergeTool.stats(data);
PeeringDBAdmin.OrgMergeTool.reset();
this.tool().children(".loading-shim").hide();
}.bind(this)
}).fail(function(response) {
PeeringDBAdmin.OrgMergeTool.error(response);
this.tool().children(".loading-shim").hide();
}.bind(this));
},
// render the stats returned by the merge request
stats : function(data) {
var sn = this.tool().find('#stats').empty()
var i;
for(i in data) {
sn.append($('<div>').text(i+': '+data[i]))
}
},
// remove org from selected org list
removeFromSelected : function(id, name) {
this.tool().find('#listing-selected').find('[data-id="'+id+'"]').detach();
},
// add org to selected org list
addToSelected : function(id, name) {
var tool = this.tool();
if(this.targetOrgId == id) {
return alert("Merge Target cannot be in selected list")
}
var row = $('<div>')
.addClass('row')
.attr('data-id', id)
.text(name)
row.click(function() { PeeringDBAdmin.OrgMergeTool.removeFromSelected(id, name) });
tool.find('#listing-selected').append(row);
tool.find('#listing').find('[data-id="'+id+'"]').detach();
},
// set target org
setTargetOrg : function(id, name) {
var tool = this.tool()
if(!id) {
tool.find('#target-org-help').show();
tool.find('#target-org').empty();
tool.find('.finalize').hide();
} else {
tool.find('#target-org-help').hide();
tool.find('#target-org').text(name);
tool.find('.finalize').show();
this.targetOrgId = parseInt(id);
this.removeFromSelected(this.targetOrgId);
}
}
}
}
twentyc.editable.target.register(
"merge-organization",
{
execute : function(a,b,c) {
console.log(a,b,c);
console.log(this);
}
},
"base"
);
$(window).ready(function() {
PeeringDBAdmin.init();
});
})(jQuery);