admin page for getting latencies between users
This commit is contained in:
parent
690219e60e
commit
5cc9868f4d
|
|
@ -637,10 +637,10 @@ ActiveAdmin.register JamRuby::User, :as => 'Users' do
|
|||
controller do
|
||||
|
||||
# this actually searches on first name, last name, and email, because of get_autocomplete_items defined below
|
||||
autocomplete :user, :email, :full => true, :display_value => :autocomplete_display_name
|
||||
autocomplete :user, :email, :full => true, :display_value => :autocomplete_display_name, extra_data: [:last_jam_addr]
|
||||
|
||||
def get_autocomplete_items(parameters)
|
||||
User.select("email, first_name, last_name, id").where(["email ILIKE ? OR first_name ILIKE ? OR last_name ILIKE ?", "%#{parameters[:term]}%", "%#{parameters[:term]}%", "%#{parameters[:term]}%"])
|
||||
User.select("email, first_name, last_name, id, last_jam_addr").where(["email ILIKE ? OR first_name ILIKE ? OR last_name ILIKE ?", "%#{parameters[:term]}%", "%#{parameters[:term]}%", "%#{parameters[:term]}%"])
|
||||
end
|
||||
|
||||
|
||||
|
|
@ -698,6 +698,39 @@ ActiveAdmin.register JamRuby::User, :as => 'Users' do
|
|||
redirect_to edit_admin_user_path(@user)
|
||||
|
||||
end
|
||||
|
||||
def user_latencies
|
||||
latency_params = params[:latencies]
|
||||
latency_url = "#{Rails.application.config.latency_data_host}/user_latencies"
|
||||
uri = URI(latency_url)
|
||||
if not ([latency_params[:my_user_id], latency_params[:my_public_ip], latency_params[:user_1_id]]).any?{|param| param.blank? }
|
||||
user_ids = [latency_params[:user_1_id]]
|
||||
user_ids.push(latency_params[:user_2_id]) unless latency_params[:user_2_id].blank?
|
||||
user_ids.push(latency_params[:user_3_id]) unless latency_params[:user_3_id].blank?
|
||||
user_ids.push(latency_params[:user_4_id]) unless latency_params[:user_4_id].blank?
|
||||
user_ids.push(latency_params[:user_5_id]) unless latency_params[:user_5_id].blank?
|
||||
begin
|
||||
http = Net::HTTP.new(uri.host, uri.port)
|
||||
http.read_timeout = 5
|
||||
http.use_ssl = true if Rails.application.config.latency_data_host.start_with?("https://")
|
||||
request = Net::HTTP::Post.new(uri.path, 'Content-Type' => 'application/json')
|
||||
request.body = {
|
||||
my_user_id: latency_params[:my_user_id],
|
||||
my_public_ip: latency_params[:my_public_ip],
|
||||
users: user_ids
|
||||
}.to_json
|
||||
request["Authorization"] = "Basic #{Rails.application.config.latency_data_host_auth_code}"
|
||||
response = http.request(request)
|
||||
@user_latencies = response.body
|
||||
#render text: JSON.pretty_generate(@user_latencies)
|
||||
rescue => e
|
||||
render text: e.message
|
||||
end
|
||||
else
|
||||
flash[:error] = 'Please provide all required fields'
|
||||
redirect_to admin_latency_between_users_path
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
ActiveAdmin.register_page "Latency Between Users" do
|
||||
menu parent: 'Users'
|
||||
|
||||
content :title => "Latency Between Users" do
|
||||
render 'admin/users/users_latency_form'
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
function intToIP(int) {
|
||||
var part1 = int & 255;
|
||||
var part2 = ((int >> 8) & 255);
|
||||
var part3 = ((int >> 16) & 255);
|
||||
var part4 = ((int >> 24) & 255);
|
||||
|
||||
return part4 + "." + part3 + "." + part2 + "." + part1;
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
$('form#user_latencies_form #latencies_my_user').on('focus', function(){
|
||||
$('#latencies_my_user_id').val('')
|
||||
});
|
||||
|
||||
$('form#user_latencies_form #latencies_my_user').bind('railsAutocomplete.select', function(event, data){
|
||||
$('#latencies_my_user_id').val('');
|
||||
$('#latencies_my_public_ip').val('');
|
||||
if(data.item.last_jam_addr){
|
||||
var ipAddr = intToIP(data.item.last_jam_addr);
|
||||
$('#latencies_my_public_ip').val(ipAddr);
|
||||
}
|
||||
$('#latencies_my_user_id').val(data.item.id);
|
||||
|
||||
});
|
||||
|
||||
$('form#user_latencies_form #latencies_user_1').bind('railsAutocomplete.select', function(event, data){
|
||||
$('#latencies_user_1_id').val(data.item.id);
|
||||
})
|
||||
|
||||
$('form#user_latencies_form #latencies_user_2').bind('railsAutocomplete.select', function(event, data){
|
||||
$('#latencies_user_2_id').val(data.item.id);
|
||||
})
|
||||
|
||||
$('form#user_latencies_form #latencies_user_3').bind('railsAutocomplete.select', function(event, data){
|
||||
$('#latencies_user_3_id').val(data.item.id);
|
||||
})
|
||||
|
||||
$('form#user_latencies_form #latencies_user_4').bind('railsAutocomplete.select', function(event, data){
|
||||
$('#latencies_user_4_id').val(data.item.id);
|
||||
})
|
||||
|
||||
$('form#user_latencies_form #latencies_user_5').bind('railsAutocomplete.select', function(event, data){
|
||||
$('#latencies_user_5_id').val(data.item.id);
|
||||
})
|
||||
});
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
<%= semantic_form_for 'latencies', url: user_latencies_admin_users_path, html: {id: 'user_latencies_form'} do |f| %>
|
||||
<%= f.inputs :name => 'Select user', :class => 'inputs' do %>
|
||||
<%= f.input :my_user, :as => :autocomplete, url: autocomplete_user_email_admin_users_path, label: 'My user name/email' %>
|
||||
<%= f.input :my_user_id, as: :hidden %>
|
||||
<%= f.input :my_public_ip, label: 'My user public IP' %>
|
||||
<% end %>
|
||||
<%= f.inputs :name => 'Select other users', :class => 'inputs' do %>
|
||||
<%= f.input :user_1, :as => :autocomplete, url: autocomplete_user_email_admin_users_path, label: 'Other user 1' %>
|
||||
<%= f.input :user_1_id, as: :hidden %>
|
||||
<%= f.input :user_2, :as => :autocomplete, url: autocomplete_user_email_admin_users_path, label: 'Other user 2', required: false %>
|
||||
<%= f.input :user_2_id, as: :hidden %>
|
||||
<%= f.input :user_3, :as => :autocomplete, url: autocomplete_user_email_admin_users_path, label: 'Other user 3', required: false %>
|
||||
<%= f.input :user_3_id, as: :hidden %>
|
||||
<%= f.input :user_4, :as => :autocomplete, url: autocomplete_user_email_admin_users_path, label: 'Other user 4', required: false %>
|
||||
<%= f.input :user_4_id, as: :hidden %>
|
||||
<%= f.input :user_5, :as => :autocomplete, url: autocomplete_user_email_admin_users_path, label: 'Other user 5', required: false %>
|
||||
<%= f.input :user_5_id, as: :hidden %>
|
||||
<% end %>
|
||||
<%= f.actions do %>
|
||||
<%= f.action :submit, :as => :button, label: 'Submit' %>
|
||||
<%= f.action :cancel, :as => :link, label: 'Cancel' %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
|
@ -0,0 +1 @@
|
|||
<pre><%= JSON.pretty_generate(JSON.parse(@user_latencies)) -%></pre>
|
||||
|
|
@ -46,4 +46,7 @@ JamAdmin::Application.configure do
|
|||
config.email_generic_from = 'nobody-dev@jamkazam.com'
|
||||
config.email_alerts_alias = 'alerts-dev@jamkazam.com'
|
||||
config.email_social_alias = 'social-dev@jamkazam.com'
|
||||
|
||||
config.latency_data_host = "http://localhost:4001/local"
|
||||
config.latency_data_host_auth_code = "c2VydmVyOnBhc3N3b3Jk"
|
||||
end
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ JamAdmin::Application.routes.draw do
|
|||
get :add_school_user, on: :collection
|
||||
post :add_school_user, on: :collection
|
||||
patch :add_school_user, on: :member
|
||||
post :user_latencies, on: :collection
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -23,3 +23,4 @@ vendor
|
|||
*.swp
|
||||
*.iml
|
||||
.byebug_history
|
||||
.ruby-version
|
||||
|
|
|
|||
Loading…
Reference in New Issue