(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($('