diff --git a/app/assets/javascripts/cooperative/laboratory_users/index.js b/app/assets/javascripts/cooperative/laboratory_users/index.js
index 19385f003..66475b88c 100644
--- a/app/assets/javascripts/cooperative/laboratory_users/index.js
+++ b/app/assets/javascripts/cooperative/laboratory_users/index.js
@@ -16,7 +16,7 @@ $(document).on('turbolinks:load', function() {
minimumInputLength: 1,
ajax: {
delay: 500,
- url: '/cooperative/users',
+ url: '/cooperative/users/for_select',
dataType: 'json',
data: function(params){
return { name: params.term };
diff --git a/app/controllers/cooperative/users_controller.rb b/app/controllers/cooperative/users_controller.rb
index 4c6539147..c97a73b49 100644
--- a/app/controllers/cooperative/users_controller.rb
+++ b/app/controllers/cooperative/users_controller.rb
@@ -1,7 +1,13 @@
class Cooperative::UsersController < Cooperative::BaseController
def index
- params[:sort_by] = params[:sort_by].presence || 'created_on'
- params[:sort_direction] = params[:sort_direction].presence || 'desc'
+ default_sort('created_on', 'desc')
+
+ users = Admins::UserQuery.call(search_params.merge(laboratory_id: current_laboratory.id))
+ @users = paginate users.includes(user_extension: :school)
+ end
+
+ def for_select
+ default_sort('created_on', 'desc')
users = Admins::UserQuery.call(search_params)
@users = paginate users.includes(user_extension: :school)
@@ -10,6 +16,6 @@ class Cooperative::UsersController < Cooperative::BaseController
private
def search_params
- params.permit(:name, :sort_by, :sort_direction)
+ params.permit(:identity, :name, :keyword, :school_name, :sort_by, :sort_direction)
end
end
\ No newline at end of file
diff --git a/app/controllers/libraries_controller.rb b/app/controllers/libraries_controller.rb
index a2e70d95a..883f8a3aa 100644
--- a/app/controllers/libraries_controller.rb
+++ b/app/controllers/libraries_controller.rb
@@ -7,7 +7,7 @@ class LibrariesController < ApplicationController
helper_method :current_library, :library_manageable?
def index
- libraries = Library.all
+ libraries = current_laboratory.libraries
libraries =
if User.current&.logged? && params[:type] == 'mine'
diff --git a/app/models/course_activity.rb b/app/models/course_activity.rb
index b2ea0b146..6c0aaaf48 100644
--- a/app/models/course_activity.rb
+++ b/app/models/course_activity.rb
@@ -5,7 +5,7 @@ class CourseActivity < ApplicationRecord
belongs_to :exercise
belongs_to :poll
- after_create :add_course_lead
+ # after_create :add_course_lead
# 发布新课导语
# 导语要放置在课程创建信息之后
diff --git a/app/models/laboratory.rb b/app/models/laboratory.rb
index 45ef0c76e..466e6d4d8 100644
--- a/app/models/laboratory.rb
+++ b/app/models/laboratory.rb
@@ -16,6 +16,7 @@ class Laboratory < ApplicationRecord
has_many :courses, dependent: :destroy
has_many :competitions, dependent: :destroy
+ has_many :libraries, dependent: :destroy
validates :identifier, uniqueness: { case_sensitive: false }, allow_nil: true
diff --git a/app/models/library.rb b/app/models/library.rb
index e2bc20989..743959d30 100644
--- a/app/models/library.rb
+++ b/app/models/library.rb
@@ -3,6 +3,7 @@ class Library < ApplicationRecord
belongs_to :user
belongs_to :cover, class_name: 'Attachment', foreign_key: :cover_id, optional: true
+ belongs_to :laboratory, optional: true
has_many :library_applies, dependent: :delete_all
has_many :library_library_tags, dependent: :delete_all
@@ -34,6 +35,13 @@ class Library < ApplicationRecord
end
end
+ before_save :set_laboratory
+ private def set_laboratory
+ return unless new_record?
+
+ self.laboratory = Laboratory.current if laboratory_id.blank?
+ end
+
def increment_visited_count!(num = 1)
increment_column!(:visited_count, num)
end
diff --git a/app/models/searchable/course.rb b/app/models/searchable/course.rb
index a82496ad8..c11ab2220 100644
--- a/app/models/searchable/course.rb
+++ b/app/models/searchable/course.rb
@@ -13,6 +13,7 @@ module Searchable::Course
def search_data
{
+ laboratory_id: laboratory_id,
name: name,
author_name: teacher&.real_name
}
diff --git a/app/models/user.rb b/app/models/user.rb
index ab8d8ee7b..c2a7317e7 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -30,6 +30,8 @@ class User < ApplicationRecord
LOGIN_CHARS = %W(2 3 4 5 6 7 8 9 a b c f e f g h i j k l m n o p q r s t u v w x y z).freeze
+ belongs_to :laboratory, optional: true
+
has_one :user_extension, dependent: :destroy
has_many :open_users, dependent: :destroy
has_one :wechat_open_user, class_name: 'OpenUsers::Wechat'
@@ -155,7 +157,7 @@ class User < ApplicationRecord
delegate :gender, :department_id, :school_id, :location, :location_city, :technical_title, to: :user_extension, allow_nil: true
- before_save :update_hashed_password
+ before_save :update_hashed_password, :set_laboratory
after_create do
SyncTrustieJob.perform_later("user", 1) if allow_sync_to_trustie?
end
@@ -704,6 +706,12 @@ class User < ApplicationRecord
raise('密码长度不能超过16位')
end
end
+
+ def set_laboratory
+ return unless new_record?
+
+ self.laboratory = Laboratory.current if laboratory_id.blank?
+ end
end
diff --git a/app/models/user_extension.rb b/app/models/user_extension.rb
index 0a2249308..916404c88 100644
--- a/app/models/user_extension.rb
+++ b/app/models/user_extension.rb
@@ -6,7 +6,17 @@ class UserExtension < ApplicationRecord
belongs_to :school, optional: true
belongs_to :department, optional: true
+ before_save :set_laboratory_school
+
def identity_text
I18n.t("user.identity.#{identity}")
end
+
+ private
+
+ def set_laboratory_school
+ return unless new_record?
+
+ self.school_id = Laboratory.current.school_id if school_id.blank? && !Laboratory.current.main_site?
+ end
end
diff --git a/app/queries/admins/user_query.rb b/app/queries/admins/user_query.rb
index 749ba2110..cdf158c67 100644
--- a/app/queries/admins/user_query.rb
+++ b/app/queries/admins/user_query.rb
@@ -12,6 +12,9 @@ class Admins::UserQuery < ApplicationQuery
def call
users = User.where(type: 'User')
+ # 云上实验室
+ users = users.where(laboratory_id: params[:laboratory_id]) if params[:laboratory_id].present?
+
# 状态
status = params[:status]
users = users.where(status: status) if status.present?
diff --git a/app/services/search_service.rb b/app/services/search_service.rb
index 418021cc0..df90495f5 100644
--- a/app/services/search_service.rb
+++ b/app/services/search_service.rb
@@ -8,34 +8,47 @@ class SearchService < ApplicationService
end
def call
- Searchkick.search(keyword, search_options)
+ # return [] if keyword.blank?
+
+ modal_name.search(keyword, search_options)
end
private
+ def modal_name
+ @_modal_name ||=
+ case params[:type].to_s.strip
+ when 'shixun' then Shixun
+ when 'course' then Course
+ when 'subject' then Subject
+ when 'memo' then Memo
+ else Shixun
+ end
+ end
+
def search_options
model_options = {
- index_name: index_names,
- model_includes: model_includes
+ includes: modal_name.searchable_includes
}
- model_options.merge(where: { status: 2 }) if index_names == [Shixun]
- model_options.merge(default_options)
- end
+ model_options.deep_merge!(where: { status: 2 }) if modal_name == Shixun
+ model_options.deep_merge!(extra_options)
- def index_names
- @_index_names ||=
- case params[:type].to_s.strip
- when 'shixun' then [Shixun]
- when 'course' then [Course]
- when 'subject' then [Subject]
- when 'memo' then [Memo]
- else [Shixun, Course, Subject, Memo]
- end
+ model_options.deep_merge!(default_options)
+ model_options
end
- def model_includes
- index_names.each_with_object({}) do |klass, obj|
- obj[klass] = klass.searchable_includes
+ def extra_options
+ case params[:type].to_s.strip
+ when 'shixun' then
+ shixun_ids = Laboratory.current.shixuns.pluck(:id)
+ Laboratory.current.main_site? ? {} : { where: { id: shixun_ids } }
+ when 'subject' then
+ subject_ids = Laboratory.current.subjects.pluck(:id)
+ Laboratory.current.main_site? ? {} : { where: { id: subject_ids } }
+ when 'course' then
+ { where: { laboratory_id: Laboratory.current.id } }
+ else
+ {}
end
end
end
\ No newline at end of file
diff --git a/app/views/cooperative/shared/_sidebar.html.erb b/app/views/cooperative/shared/_sidebar.html.erb
index 81ff12b0a..5898922fe 100644
--- a/app/views/cooperative/shared/_sidebar.html.erb
+++ b/app/views/cooperative/shared/_sidebar.html.erb
@@ -17,6 +17,7 @@
<%= sidebar_item(edit_cooperative_laboratory_setting_path, '网站设置', icon: 'cogs', controller: 'cooperative-laboratory_settings') %>
<%= sidebar_item(cooperative_carousels_path, '轮播图设置', icon: 'image', controller: 'cooperative-carousels') %>
<%= sidebar_item(cooperative_laboratory_users_path, '管理员列表', icon: 'user', controller: 'cooperative-laboratory_users') %>
+ <%= sidebar_item(cooperative_users_path, '用户列表', icon: 'users', controller: 'cooperative-users') %>
<%= sidebar_item(cooperative_laboratory_shixuns_path, '实训项目', icon: 'window-restore', controller: 'cooperative-laboratory_shixuns') %>
<%= sidebar_item(cooperative_laboratory_subjects_path, '实践课程', icon: 'th-list', controller: 'cooperative-laboratory_subjects') %>
<%= sidebar_item('/', '返回主页', icon: 'sign-out', controller: 'root') %>
diff --git a/app/views/cooperative/users/for_select.json.jbuilder b/app/views/cooperative/users/for_select.json.jbuilder
new file mode 100644
index 000000000..5b1860928
--- /dev/null
+++ b/app/views/cooperative/users/for_select.json.jbuilder
@@ -0,0 +1,6 @@
+json.count @users.total_count
+json.users do
+ json.array! @users.each do |user|
+ json.extract! user, :id, :login, :real_name, :identity, :school_name, :hidden_phone
+ end
+end
\ No newline at end of file
diff --git a/app/views/cooperative/users/index.html.erb b/app/views/cooperative/users/index.html.erb
new file mode 100644
index 000000000..c2e703ded
--- /dev/null
+++ b/app/views/cooperative/users/index.html.erb
@@ -0,0 +1,21 @@
+<% define_breadcrumbs do %>
+ <% add_breadcrumb('用户列表') %>
+<% end %>
+
+
+
+
+ <%= render partial: 'cooperative/users/shared/list', locals: { users: @users } %>
+
\ No newline at end of file
diff --git a/app/views/cooperative/users/index.js.erb b/app/views/cooperative/users/index.js.erb
new file mode 100644
index 000000000..414f62348
--- /dev/null
+++ b/app/views/cooperative/users/index.js.erb
@@ -0,0 +1 @@
+$('.user-list-container').html("<%= j(render partial: 'cooperative/users/shared/list', locals: { users: @users }) %>");
\ No newline at end of file
diff --git a/app/views/cooperative/users/shared/_list.html.erb b/app/views/cooperative/users/shared/_list.html.erb
new file mode 100644
index 000000000..29c26f350
--- /dev/null
+++ b/app/views/cooperative/users/shared/_list.html.erb
@@ -0,0 +1,40 @@
+
+
+
+ 真实姓名 |
+ 邮件地址 |
+ 手机号码 |
+ 单位 |
+ 角色 |
+ <%= sort_tag('创建于', name: 'created_on', path: cooperative_users_path) %> |
+ <%= sort_tag('最后登录', name: 'last_login_on', path: cooperative_users_path) %> |
+ <%= sort_tag('经验值', name: 'experience', path: cooperative_users_path) %> |
+ <%= sort_tag('金币', name: 'grade', path: cooperative_users_path) %> |
+
+
+
+ <% if users.present? %>
+ <% users.each do |user| %>
+
+
+ <%= link_to "/users/#{user.login}", target: '_blank' do %>
+ <%= overflow_hidden_span user.real_name, width: 100 %>
+ <% end %>
+ |
+ <%= overflow_hidden_span display_text(user.mail), width: 150 %> |
+ <%= overflow_hidden_span display_text(user.phone), width: 100 %> |
+ <%= overflow_hidden_span display_text(user.school_name), width: 150 %> |
+ <%= user.identity %> |
+ <%= display_text(user.created_on&.strftime('%Y-%m-%d %H:%M')) %> |
+ <%= display_text(user.last_login_on&.strftime('%Y-%m-%d %H:%M')) %> |
+ <%= user.experience.to_i %> |
+ <%= user.grade.to_i %> |
+
+ <% end %>
+ <% else %>
+ <%= render 'admins/shared/no_data_for_table' %>
+ <% end %>
+
+
+
+<%= render partial: 'cooperative/shared/paginate', locals: { objects: users } %>
\ No newline at end of file
diff --git a/config/routes.rb b/config/routes.rb
index 245e984c6..518e933b4 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1135,7 +1135,9 @@ Rails.application.routes.draw do
# get '/', to: 'dashboards#show'
get '/', to: 'laboratory_settings#edit'
resources :files, only: [:create]
- resources :users, only: [:index]
+ resources :users, only: [:index] do
+ get :for_select, on: :collection
+ end
resources :laboratory_users, only: [:index, :create, :destroy]
resource :laboratory_setting, only: [:edit, :update]
resources :carousels, only: [:index, :create, :update, :destroy] do
diff --git a/db/migrate/20191115053209_add_laboratory_id_to_users.rb b/db/migrate/20191115053209_add_laboratory_id_to_users.rb
new file mode 100644
index 000000000..3e02a8e17
--- /dev/null
+++ b/db/migrate/20191115053209_add_laboratory_id_to_users.rb
@@ -0,0 +1,5 @@
+class AddLaboratoryIdToUsers < ActiveRecord::Migration[5.2]
+ def change
+ add_reference :users, :laboratory
+ end
+end
diff --git a/db/migrate/20191115070508_add_laboratory_id_to_libraries.rb b/db/migrate/20191115070508_add_laboratory_id_to_libraries.rb
new file mode 100644
index 000000000..f067908fc
--- /dev/null
+++ b/db/migrate/20191115070508_add_laboratory_id_to_libraries.rb
@@ -0,0 +1,5 @@
+class AddLaboratoryIdToLibraries < ActiveRecord::Migration[5.2]
+ def change
+ add_reference :libraries, :laboratory
+ end
+end
diff --git a/db/migrate/20191115070841_transfer_laboratory_data.rb b/db/migrate/20191115070841_transfer_laboratory_data.rb
new file mode 100644
index 000000000..4812ade30
--- /dev/null
+++ b/db/migrate/20191115070841_transfer_laboratory_data.rb
@@ -0,0 +1,7 @@
+class TransferLaboratoryData < ActiveRecord::Migration[5.2]
+ def change
+ Course.where(laboratory_id: nil).update_all(laboratory_id: 1)
+ Competition.where(laboratory_id: nil).update_all(laboratory_id: 1)
+ Library.where(laboratory_id: nil).update_all(laboratory_id: 1)
+ end
+end
diff --git a/public/assets/.sprockets-manifest-e66c89b356203f186251174af86ecc50.json b/public/assets/.sprockets-manifest-e66c89b356203f186251174af86ecc50.json
index b9b37604d..0fbeaeb64 100644
--- a/public/assets/.sprockets-manifest-e66c89b356203f186251174af86ecc50.json
+++ b/public/assets/.sprockets-manifest-e66c89b356203f186251174af86ecc50.json
@@ -1 +1 @@
-{"files":{"admin-f6741f524789841eadd10719936c7d0693ccad4b9e46868a7683c08d982b0293.js":{"logical_path":"admin.js","mtime":"2019-11-15T10:58:10+08:00","size":4578599,"digest":"f6741f524789841eadd10719936c7d0693ccad4b9e46868a7683c08d982b0293","integrity":"sha256-9nQfUkeJhB6t0QcZk2x9BpPMrUueRoaKdoPAjZgrApM="},"admin-700994f369aa2db01f4c4c4642f2e08be411f8e3b35ad1fa297fac1839a29fb8.css":{"logical_path":"admin.css","mtime":"2019-11-15T10:49:55+08:00","size":876486,"digest":"700994f369aa2db01f4c4c4642f2e08be411f8e3b35ad1fa297fac1839a29fb8","integrity":"sha256-cAmU82mqLbAfTExGQvLgi+QR+OOzWtH6KX+sGDmin7g="},"font-awesome/fontawesome-webfont-7bfcab6db99d5cfbf1705ca0536ddc78585432cc5fa41bbd7ad0f009033b2979.eot":{"logical_path":"font-awesome/fontawesome-webfont.eot","mtime":"2019-08-14T17:22:43+08:00","size":165742,"digest":"7bfcab6db99d5cfbf1705ca0536ddc78585432cc5fa41bbd7ad0f009033b2979","integrity":"sha256-e/yrbbmdXPvxcFygU23ceFhUMsxfpBu9etDwCQM7KXk="},"font-awesome/fontawesome-webfont-2adefcbc041e7d18fcf2d417879dc5a09997aa64d675b7a3c4b6ce33da13f3fe.woff2":{"logical_path":"font-awesome/fontawesome-webfont.woff2","mtime":"2019-08-14T17:22:43+08:00","size":77160,"digest":"2adefcbc041e7d18fcf2d417879dc5a09997aa64d675b7a3c4b6ce33da13f3fe","integrity":"sha256-Kt78vAQefRj88tQXh53FoJmXqmTWdbejxLbOM9oT8/4="},"font-awesome/fontawesome-webfont-ba0c59deb5450f5cb41b3f93609ee2d0d995415877ddfa223e8a8a7533474f07.woff":{"logical_path":"font-awesome/fontawesome-webfont.woff","mtime":"2019-08-14T17:22:43+08:00","size":98024,"digest":"ba0c59deb5450f5cb41b3f93609ee2d0d995415877ddfa223e8a8a7533474f07","integrity":"sha256-ugxZ3rVFD1y0Gz+TYJ7i0NmVQVh33foiPoqKdTNHTwc="},"font-awesome/fontawesome-webfont-aa58f33f239a0fb02f5c7a6c45c043d7a9ac9a093335806694ecd6d4edc0d6a8.ttf":{"logical_path":"font-awesome/fontawesome-webfont.ttf","mtime":"2019-08-14T17:22:43+08:00","size":165548,"digest":"aa58f33f239a0fb02f5c7a6c45c043d7a9ac9a093335806694ecd6d4edc0d6a8","integrity":"sha256-qljzPyOaD7AvXHpsRcBD16msmgkzNYBmlOzW1O3A1qg="},"font-awesome/fontawesome-webfont-ad6157926c1622ba4e1d03d478f1541368524bfc46f51e42fe0d945f7ef323e4.svg":{"logical_path":"font-awesome/fontawesome-webfont.svg","mtime":"2019-08-14T17:22:43+08:00","size":444379,"digest":"ad6157926c1622ba4e1d03d478f1541368524bfc46f51e42fe0d945f7ef323e4","integrity":"sha256-rWFXkmwWIrpOHQPUePFUE2hSS/xG9R5C/g2UX37zI+Q="},"college-1e70702e2d864fb4d5f57841bfa5937e31c7c059e6cd672a07f0b4b20740f607.js":{"logical_path":"college.js","mtime":"2019-11-11T17:06:59+08:00","size":3569292,"digest":"1e70702e2d864fb4d5f57841bfa5937e31c7c059e6cd672a07f0b4b20740f607","integrity":"sha256-HnBwLi2GT7TV9XhBv6WTfjHHwFnmzWcqB/C0sgdA9gc="},"college-c2f61098e538cb20e0ebc026209bb909fe520eadf8facb31ac4a0b325c057089.css":{"logical_path":"college.css","mtime":"2019-11-11T16:49:02+08:00","size":618419,"digest":"c2f61098e538cb20e0ebc026209bb909fe520eadf8facb31ac4a0b325c057089","integrity":"sha256-wvYQmOU4yyDg68AmIJu5Cf5SDq34+ssxrEoLMlwFcIk="},"cooperative-bce1bc86895385e409bd27f17780becd0d7b38b6a93f728bcf5070d611b86e53.js":{"logical_path":"cooperative.js","mtime":"2019-11-15T10:58:10+08:00","size":4415477,"digest":"bce1bc86895385e409bd27f17780becd0d7b38b6a93f728bcf5070d611b86e53","integrity":"sha256-vOG8holTheQJvSfxd4C+zQ17OLapP3KLz1Bw1hG4blM="},"cooperative-8dfed4a2d7658bbc8ef848db336eeb70d413cfc89185f0ebbb312ba8a2d785b2.css":{"logical_path":"cooperative.css","mtime":"2019-11-15T10:58:10+08:00","size":837897,"digest":"8dfed4a2d7658bbc8ef848db336eeb70d413cfc89185f0ebbb312ba8a2d785b2","integrity":"sha256-jf7Uotdli7yO+EjbM27rcNQTz8iRhfDruzErqKLXhbI="},"logo-7ff112568709bf97f9898fe87249b7a8f200ff1f48d537d85af87215f1870423.png":{"logical_path":"logo.png","mtime":"2019-09-03T08:55:53+08:00","size":2816,"digest":"7ff112568709bf97f9898fe87249b7a8f200ff1f48d537d85af87215f1870423","integrity":"sha256-f/ESVocJv5f5iY/ockm3qPIA/x9I1TfYWvhyFfGHBCM="},"application-9cfbc3d792599a1d0de5c7b84209e1c2b2e60336f0f01e19f0581663918708fb.js":{"logical_path":"application.js","mtime":"2019-11-06T11:34:24+08:00","size":600706,"digest":"9cfbc3d792599a1d0de5c7b84209e1c2b2e60336f0f01e19f0581663918708fb","integrity":"sha256-nPvD15JZmh0N5ce4QgnhwrLmAzbw8B4Z8FgWY5GHCPs="},"application-0e417478d56f42467e857cd186b29cbbc0d6c7c6e85c8a6f42f39ac618943de8.css":{"logical_path":"application.css","mtime":"2019-09-03T08:55:53+08:00","size":442932,"digest":"0e417478d56f42467e857cd186b29cbbc0d6c7c6e85c8a6f42f39ac618943de8","integrity":"sha256-DkF0eNVvQkZ+hXzRhrKcu8DWx8boXIpvQvOaxhiUPeg="}},"assets":{"admin.js":"admin-f6741f524789841eadd10719936c7d0693ccad4b9e46868a7683c08d982b0293.js","admin.css":"admin-700994f369aa2db01f4c4c4642f2e08be411f8e3b35ad1fa297fac1839a29fb8.css","font-awesome/fontawesome-webfont.eot":"font-awesome/fontawesome-webfont-7bfcab6db99d5cfbf1705ca0536ddc78585432cc5fa41bbd7ad0f009033b2979.eot","font-awesome/fontawesome-webfont.woff2":"font-awesome/fontawesome-webfont-2adefcbc041e7d18fcf2d417879dc5a09997aa64d675b7a3c4b6ce33da13f3fe.woff2","font-awesome/fontawesome-webfont.woff":"font-awesome/fontawesome-webfont-ba0c59deb5450f5cb41b3f93609ee2d0d995415877ddfa223e8a8a7533474f07.woff","font-awesome/fontawesome-webfont.ttf":"font-awesome/fontawesome-webfont-aa58f33f239a0fb02f5c7a6c45c043d7a9ac9a093335806694ecd6d4edc0d6a8.ttf","font-awesome/fontawesome-webfont.svg":"font-awesome/fontawesome-webfont-ad6157926c1622ba4e1d03d478f1541368524bfc46f51e42fe0d945f7ef323e4.svg","college.js":"college-1e70702e2d864fb4d5f57841bfa5937e31c7c059e6cd672a07f0b4b20740f607.js","college.css":"college-c2f61098e538cb20e0ebc026209bb909fe520eadf8facb31ac4a0b325c057089.css","cooperative.js":"cooperative-bce1bc86895385e409bd27f17780becd0d7b38b6a93f728bcf5070d611b86e53.js","cooperative.css":"cooperative-8dfed4a2d7658bbc8ef848db336eeb70d413cfc89185f0ebbb312ba8a2d785b2.css","logo.png":"logo-7ff112568709bf97f9898fe87249b7a8f200ff1f48d537d85af87215f1870423.png","application.js":"application-9cfbc3d792599a1d0de5c7b84209e1c2b2e60336f0f01e19f0581663918708fb.js","application.css":"application-0e417478d56f42467e857cd186b29cbbc0d6c7c6e85c8a6f42f39ac618943de8.css"}}
\ No newline at end of file
+{"files":{"admin-f6741f524789841eadd10719936c7d0693ccad4b9e46868a7683c08d982b0293.js":{"logical_path":"admin.js","mtime":"2019-11-15T10:58:10+08:00","size":4578599,"digest":"f6741f524789841eadd10719936c7d0693ccad4b9e46868a7683c08d982b0293","integrity":"sha256-9nQfUkeJhB6t0QcZk2x9BpPMrUueRoaKdoPAjZgrApM="},"admin-700994f369aa2db01f4c4c4642f2e08be411f8e3b35ad1fa297fac1839a29fb8.css":{"logical_path":"admin.css","mtime":"2019-11-15T10:49:55+08:00","size":876486,"digest":"700994f369aa2db01f4c4c4642f2e08be411f8e3b35ad1fa297fac1839a29fb8","integrity":"sha256-cAmU82mqLbAfTExGQvLgi+QR+OOzWtH6KX+sGDmin7g="},"font-awesome/fontawesome-webfont-7bfcab6db99d5cfbf1705ca0536ddc78585432cc5fa41bbd7ad0f009033b2979.eot":{"logical_path":"font-awesome/fontawesome-webfont.eot","mtime":"2019-08-14T17:22:43+08:00","size":165742,"digest":"7bfcab6db99d5cfbf1705ca0536ddc78585432cc5fa41bbd7ad0f009033b2979","integrity":"sha256-e/yrbbmdXPvxcFygU23ceFhUMsxfpBu9etDwCQM7KXk="},"font-awesome/fontawesome-webfont-2adefcbc041e7d18fcf2d417879dc5a09997aa64d675b7a3c4b6ce33da13f3fe.woff2":{"logical_path":"font-awesome/fontawesome-webfont.woff2","mtime":"2019-08-14T17:22:43+08:00","size":77160,"digest":"2adefcbc041e7d18fcf2d417879dc5a09997aa64d675b7a3c4b6ce33da13f3fe","integrity":"sha256-Kt78vAQefRj88tQXh53FoJmXqmTWdbejxLbOM9oT8/4="},"font-awesome/fontawesome-webfont-ba0c59deb5450f5cb41b3f93609ee2d0d995415877ddfa223e8a8a7533474f07.woff":{"logical_path":"font-awesome/fontawesome-webfont.woff","mtime":"2019-08-14T17:22:43+08:00","size":98024,"digest":"ba0c59deb5450f5cb41b3f93609ee2d0d995415877ddfa223e8a8a7533474f07","integrity":"sha256-ugxZ3rVFD1y0Gz+TYJ7i0NmVQVh33foiPoqKdTNHTwc="},"font-awesome/fontawesome-webfont-aa58f33f239a0fb02f5c7a6c45c043d7a9ac9a093335806694ecd6d4edc0d6a8.ttf":{"logical_path":"font-awesome/fontawesome-webfont.ttf","mtime":"2019-08-14T17:22:43+08:00","size":165548,"digest":"aa58f33f239a0fb02f5c7a6c45c043d7a9ac9a093335806694ecd6d4edc0d6a8","integrity":"sha256-qljzPyOaD7AvXHpsRcBD16msmgkzNYBmlOzW1O3A1qg="},"font-awesome/fontawesome-webfont-ad6157926c1622ba4e1d03d478f1541368524bfc46f51e42fe0d945f7ef323e4.svg":{"logical_path":"font-awesome/fontawesome-webfont.svg","mtime":"2019-08-14T17:22:43+08:00","size":444379,"digest":"ad6157926c1622ba4e1d03d478f1541368524bfc46f51e42fe0d945f7ef323e4","integrity":"sha256-rWFXkmwWIrpOHQPUePFUE2hSS/xG9R5C/g2UX37zI+Q="},"college-1e70702e2d864fb4d5f57841bfa5937e31c7c059e6cd672a07f0b4b20740f607.js":{"logical_path":"college.js","mtime":"2019-11-11T17:06:59+08:00","size":3569292,"digest":"1e70702e2d864fb4d5f57841bfa5937e31c7c059e6cd672a07f0b4b20740f607","integrity":"sha256-HnBwLi2GT7TV9XhBv6WTfjHHwFnmzWcqB/C0sgdA9gc="},"college-c2f61098e538cb20e0ebc026209bb909fe520eadf8facb31ac4a0b325c057089.css":{"logical_path":"college.css","mtime":"2019-11-11T16:49:02+08:00","size":618419,"digest":"c2f61098e538cb20e0ebc026209bb909fe520eadf8facb31ac4a0b325c057089","integrity":"sha256-wvYQmOU4yyDg68AmIJu5Cf5SDq34+ssxrEoLMlwFcIk="},"cooperative-bce1bc86895385e409bd27f17780becd0d7b38b6a93f728bcf5070d611b86e53.js":{"logical_path":"cooperative.js","mtime":"2019-11-15T10:58:10+08:00","size":4415477,"digest":"bce1bc86895385e409bd27f17780becd0d7b38b6a93f728bcf5070d611b86e53","integrity":"sha256-vOG8holTheQJvSfxd4C+zQ17OLapP3KLz1Bw1hG4blM="},"cooperative-8dfed4a2d7658bbc8ef848db336eeb70d413cfc89185f0ebbb312ba8a2d785b2.css":{"logical_path":"cooperative.css","mtime":"2019-11-15T10:58:10+08:00","size":837897,"digest":"8dfed4a2d7658bbc8ef848db336eeb70d413cfc89185f0ebbb312ba8a2d785b2","integrity":"sha256-jf7Uotdli7yO+EjbM27rcNQTz8iRhfDruzErqKLXhbI="},"logo-7ff112568709bf97f9898fe87249b7a8f200ff1f48d537d85af87215f1870423.png":{"logical_path":"logo.png","mtime":"2019-09-03T08:55:53+08:00","size":2816,"digest":"7ff112568709bf97f9898fe87249b7a8f200ff1f48d537d85af87215f1870423","integrity":"sha256-f/ESVocJv5f5iY/ockm3qPIA/x9I1TfYWvhyFfGHBCM="},"application-9cfbc3d792599a1d0de5c7b84209e1c2b2e60336f0f01e19f0581663918708fb.js":{"logical_path":"application.js","mtime":"2019-11-06T11:34:24+08:00","size":600706,"digest":"9cfbc3d792599a1d0de5c7b84209e1c2b2e60336f0f01e19f0581663918708fb","integrity":"sha256-nPvD15JZmh0N5ce4QgnhwrLmAzbw8B4Z8FgWY5GHCPs="},"application-0e417478d56f42467e857cd186b29cbbc0d6c7c6e85c8a6f42f39ac618943de8.css":{"logical_path":"application.css","mtime":"2019-09-03T08:55:53+08:00","size":442932,"digest":"0e417478d56f42467e857cd186b29cbbc0d6c7c6e85c8a6f42f39ac618943de8","integrity":"sha256-DkF0eNVvQkZ+hXzRhrKcu8DWx8boXIpvQvOaxhiUPeg="},"cooperative-1f1978c54acc447dc1a6bff614bbf934ada5029f08b7d93cdfc0b41758940664.js":{"logical_path":"cooperative.js","mtime":"2019-11-15T14:44:25+08:00","size":4415488,"digest":"1f1978c54acc447dc1a6bff614bbf934ada5029f08b7d93cdfc0b41758940664","integrity":"sha256-Hxl4xUrMRH3Bpr/2FLv5NK2lAp8It9k838C0F1iUBmQ="}},"assets":{"admin.js":"admin-f6741f524789841eadd10719936c7d0693ccad4b9e46868a7683c08d982b0293.js","admin.css":"admin-700994f369aa2db01f4c4c4642f2e08be411f8e3b35ad1fa297fac1839a29fb8.css","font-awesome/fontawesome-webfont.eot":"font-awesome/fontawesome-webfont-7bfcab6db99d5cfbf1705ca0536ddc78585432cc5fa41bbd7ad0f009033b2979.eot","font-awesome/fontawesome-webfont.woff2":"font-awesome/fontawesome-webfont-2adefcbc041e7d18fcf2d417879dc5a09997aa64d675b7a3c4b6ce33da13f3fe.woff2","font-awesome/fontawesome-webfont.woff":"font-awesome/fontawesome-webfont-ba0c59deb5450f5cb41b3f93609ee2d0d995415877ddfa223e8a8a7533474f07.woff","font-awesome/fontawesome-webfont.ttf":"font-awesome/fontawesome-webfont-aa58f33f239a0fb02f5c7a6c45c043d7a9ac9a093335806694ecd6d4edc0d6a8.ttf","font-awesome/fontawesome-webfont.svg":"font-awesome/fontawesome-webfont-ad6157926c1622ba4e1d03d478f1541368524bfc46f51e42fe0d945f7ef323e4.svg","college.js":"college-1e70702e2d864fb4d5f57841bfa5937e31c7c059e6cd672a07f0b4b20740f607.js","college.css":"college-c2f61098e538cb20e0ebc026209bb909fe520eadf8facb31ac4a0b325c057089.css","cooperative.js":"cooperative-1f1978c54acc447dc1a6bff614bbf934ada5029f08b7d93cdfc0b41758940664.js","cooperative.css":"cooperative-8dfed4a2d7658bbc8ef848db336eeb70d413cfc89185f0ebbb312ba8a2d785b2.css","logo.png":"logo-7ff112568709bf97f9898fe87249b7a8f200ff1f48d537d85af87215f1870423.png","application.js":"application-9cfbc3d792599a1d0de5c7b84209e1c2b2e60336f0f01e19f0581663918708fb.js","application.css":"application-0e417478d56f42467e857cd186b29cbbc0d6c7c6e85c8a6f42f39ac618943de8.css"}}
\ No newline at end of file
diff --git a/public/assets/cooperative-bce1bc86895385e409bd27f17780becd0d7b38b6a93f728bcf5070d611b86e53.js b/public/assets/cooperative-1f1978c54acc447dc1a6bff614bbf934ada5029f08b7d93cdfc0b41758940664.js
similarity index 99%
rename from public/assets/cooperative-bce1bc86895385e409bd27f17780becd0d7b38b6a93f728bcf5070d611b86e53.js
rename to public/assets/cooperative-1f1978c54acc447dc1a6bff614bbf934ada5029f08b7d93cdfc0b41758940664.js
index 3a32e2e08..5297d488d 100644
--- a/public/assets/cooperative-bce1bc86895385e409bd27f17780becd0d7b38b6a93f728bcf5070d611b86e53.js
+++ b/public/assets/cooperative-1f1978c54acc447dc1a6bff614bbf934ada5029f08b7d93cdfc0b41758940664.js
@@ -136218,7 +136218,7 @@ $(document).on('turbolinks:load', function() {
minimumInputLength: 1,
ajax: {
delay: 500,
- url: '/cooperative/users',
+ url: '/cooperative/users/for_select',
dataType: 'json',
data: function(params){
return { name: params.term };
diff --git a/public/assets/cooperative-bce1bc86895385e409bd27f17780becd0d7b38b6a93f728bcf5070d611b86e53.js.gz b/public/assets/cooperative-1f1978c54acc447dc1a6bff614bbf934ada5029f08b7d93cdfc0b41758940664.js.gz
similarity index 98%
rename from public/assets/cooperative-bce1bc86895385e409bd27f17780becd0d7b38b6a93f728bcf5070d611b86e53.js.gz
rename to public/assets/cooperative-1f1978c54acc447dc1a6bff614bbf934ada5029f08b7d93cdfc0b41758940664.js.gz
index 54d832b08..564440dc5 100644
Binary files a/public/assets/cooperative-bce1bc86895385e409bd27f17780becd0d7b38b6a93f728bcf5070d611b86e53.js.gz and b/public/assets/cooperative-1f1978c54acc447dc1a6bff614bbf934ada5029f08b7d93cdfc0b41758940664.js.gz differ