onboarding settings done

This commit is contained in:
Seth Call 2018-02-17 10:12:38 -06:00
parent 19a9e9aa8b
commit 314d69e82d
11 changed files with 128 additions and 8 deletions

View File

@ -83,6 +83,9 @@ gem 'sendgrid_toolkit', '>= 1.1.1'
gem 'stripe' gem 'stripe'
gem 'zip-codes' gem 'zip-codes'
gem 'email_validator' gem 'email_validator'
gem 'best_in_place', github: 'bernat/best_in_place'
#group :libv8 do #group :libv8 do
# gem 'libv8', "~> 4.5.95" # gem 'libv8', "~> 4.5.95"

View File

@ -1,3 +1,11 @@
GIT
remote: git://github.com/bernat/best_in_place.git
revision: 1b779e60ea912ab9c39d5c999b00c8ac44a8e535
specs:
best_in_place (3.1.1)
actionpack (>= 3.2)
railties (>= 3.2)
PATH PATH
remote: ../db/target/ruby_package remote: ../db/target/ruby_package
specs: specs:
@ -628,6 +636,7 @@ DEPENDENCIES
amqp (= 0.9.8) amqp (= 0.9.8)
aws-sdk (~> 1) aws-sdk (~> 1)
bcrypt-ruby (= 3.0.1) bcrypt-ruby (= 3.0.1)
best_in_place!
bootstrap-sass (= 2.0.4) bootstrap-sass (= 2.0.4)
bootstrap-will_paginate (= 0.0.6) bootstrap-will_paginate (= 0.0.6)
bugsnag bugsnag

View File

@ -11,7 +11,8 @@ Overtime we can add more administrative functions and views, but initially this
Examples of: Examples of:
Button on Show Page of Item: 'Send Client Update Notice' in jam_ruby_artifact_updates.rb * Button on Show Page of Item: 'Send Client Update Notice' in jam_ruby_artifact_updates.rb
* Batch Updates in View page: onboarding.rb (CurrentlyOnboarding)
Stuff that is probably breaky: Stuff that is probably breaky:

View File

@ -0,0 +1,92 @@
ActiveAdmin.register JamRuby::User, :as => 'Onboarder' do
menu :label => 'Onboarder Settings', :parent => 'JamClass'
config.sort_order = 'created_at'
config.batch_actions = true
config.per_page = 100
config.paginate = true
config.filters = false
config.clear_action_items!
batch_action :destroy, false
scope("All Onboarders", default: true) { |scope| scope.where(is_onboarder: true).order(:created_at) }
controller do
active_admin_config.includes.push :onboarding_users
def update
resource.max_onboardings = params[:jam_ruby_user][:max_onboardings]
resource.save!
success.json {}
end
end
index do
def last_week
@last_week_result ||= calculate_last_week
end
def calculate_last_week
start_day = Date.today.beginning_of_week(:sunday).yesterday.beginning_of_week(:sunday)
end_day = start_day.end_of_week(:sunday)
result = [start_day, end_day]
result
end
def this_week
@this_week_result ||= calculate_this_week
end
def calculate_this_week
start_day = Date.today.beginning_of_week(:sunday)
end_day = start_day.end_of_week(:sunday)
result = [start_day, end_day]
result
end
def week_display(week)
start_day = week[0]
end_day = week[1]
mmyy = start_day.strftime('%b')
"#{mmyy} #{start_day.day}-#{end_day.day}"
end
def onboarding_select
array = []
100.times do |i|
array.push [i.to_s, i.to_s]
end
array
end
column "Name" do |user|
div do
div do
link_to user.name, user.admin_url
end
div do
user.email
end
end
end
column "Max Onboardings" do |user|
best_in_place user, :max_onboardings, as: :select, url: admin_onboarder_path(user),:collection => onboarding_select
end
column "Current Week #{week_display(this_week)}" do |user|
start_date, last_date = this_week
user.onboarding_users.where(onboarder_assigned_at: start_date..last_date).count
end
column "Previous Week #{week_display(last_week)}" do |user|
start_date, last_date = last_week
user.onboarding_users.where(onboarder_assigned_at: start_date..last_date).count
end
column "Current Student WIP" do |user|
user.onboarding_users.where('onboarding_status = ? OR onboarding_status = ?', User::ONBOARDING_STATUS_ASSIGNED, User::ONBOARDING_STATUS_EMAILED).count
end
end
end

View File

@ -1,6 +1,6 @@
ActiveAdmin.register JamRuby::User, :as => 'CurrentlyOnboarding' do ActiveAdmin.register JamRuby::User, :as => 'OnboarderManagement' do
menu :label => 'Currently Onboarding', :parent => 'JamClass' menu :label => 'Onboarder Management', :parent => 'JamClass'
config.sort_order = 'created_at desc' config.sort_order = 'created_at desc'
config.batch_actions = true config.batch_actions = true
@ -11,7 +11,7 @@ ActiveAdmin.register JamRuby::User, :as => 'CurrentlyOnboarding' do
batch_action :destroy, false batch_action :destroy, false
batch_action :onboarder, form: -> { { batch_action :onboarder, form: -> { {
support_consultant: (User.where(is_onboarder: true).includes(:onboarding_users).map {|user| ["#{user.name} (#{user.onboarding_users.length})", user.id]}).to_a.unshift(['Unassign', '']) support_consultant: (User.where(is_onboarder: true).includes(:onboarding_users).map {|user| ["#{user.name} (#{user.onboarding_users.where('onboarding_status = ? OR onboarding_status = ?', User::ONBOARDING_STATUS_ASSIGNED, User::ONBOARDING_STATUS_EMAILED).count})", user.id]}).to_a.unshift(['Unassign', ''])
} } do |ids, inputs| } } do |ids, inputs|
onboarder = inputs[:support_consultant] onboarder = inputs[:support_consultant]
if onboarder.blank? if onboarder.blank?
@ -59,7 +59,7 @@ ActiveAdmin.register JamRuby::User, :as => 'CurrentlyOnboarding' do
column "Escalated Reason", :onboarding_escalation_reason column "Escalated Reason", :onboarding_escalation_reason
column "Support Consultant" do |user| column "Support Consultant" do |user|
if user.onboarder if user.onboarder
link_to "#{user.onboarder.name} (#{user.onboarder.onboarding_users.count})", user.onboarder.admin_url link_to "#{user.onboarder.name} (#{user.onboarder.onboarding_users.where('onboarding_status = ? OR onboarding_status = ?', User::ONBOARDING_STATUS_ASSIGNED, User::ONBOARDING_STATUS_EMAILED).count})", user.onboarder.admin_url
else else
end end
end end

View File

@ -12,3 +12,8 @@
// //= require autocomplete-rails // //= require autocomplete-rails
//= require base //= require base
//= require_tree . //= require_tree .
$(document).ready(function() {
jQuery(".best_in_place").best_in_place()
})

View File

@ -1,2 +1,10 @@
#= require active_admin/base #= require active_admin/base
#= require jquery3 #= require jquery3
#= require best_in_place
#= require jquery.purr
#= require best_in_place.purr
$(document).ready ->
# IS NOT HAPPENING: USE ACTIVE_ADMIN.JS
console.log("DAT COFFEE INIT")
jQuery(".best_in_place").best_in_place()

View File

@ -1,5 +1,4 @@
module ApplicationHelper module ApplicationHelper
end end

View File

@ -1,2 +1,3 @@
module JamSessionsHelper module JamSessionsHelper
end end

View File

@ -385,3 +385,4 @@ onboarding.sql
better_lesson_notices.sql better_lesson_notices.sql
teacher_search_control.sql teacher_search_control.sql
user_timezone.sql user_timezone.sql
onboarder_limit.sql

View File

@ -0,0 +1 @@
ALTER TABLE users ADD COLUMN max_onboardings INTEGER NOT NULL DEFAULT 0;