mirror of
https://github.com/peeringdb/peeringdb.git
synced 2024-05-11 05:55:09 +00:00
147 lines
4.1 KiB
JavaScript
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);
|