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 %> + +
    + <%= form_tag(cooperative_users_path, method: :get, class: 'form-inline search-form flex-1', remote: true) do %> +
    + + <% identity_options = [['全部', ''], ['教师', 0], ['学生', 1], ['专业人士', 2]] %> + <%= select_tag(:identity, options_for_select(identity_options), class: 'form-control') %> +
    + + <%= text_field_tag(:keyword, params[:keyword], class: 'form-control col-sm-2 ml-3', placeholder: 'ID/姓名/邮箱/手机号检索') %> + <%= text_field_tag(:school_name, params[:school_name], class: 'form-control col-sm-2', placeholder: '学校/单位检索') %> + <%= submit_tag('搜索', class: 'btn btn-primary ml-3', 'data-disable-with': '搜索中...') %> + <% 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 @@ + + + + + + + + + + + + + + + + <% if users.present? %> + <% users.each do |user| %> + + + + + + + + + + + + <% end %> + <% else %> + <%= render 'admins/shared/no_data_for_table' %> + <% end %> + +
    真实姓名邮件地址手机号码单位角色<%= 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) %>
    + <%= 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 %>
    + +<%= 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