Browse Source

Enhance `selectize` for `doctrines#suggested_contents`

pull/133/head
alexdbondoc17 4 years ago
parent
commit
7c9b443dfc
  1. 13
      app/controllers/api/doctrines_controller.rb
  2. 2
      app/javascript/controllers/selectize_controller.js
  3. 3
      app/views/api/doctrines/suggested_contents.json.jbuilder
  4. 1
      config/routes.rb

13
app/controllers/api/doctrines_controller.rb

@ -59,6 +59,19 @@ module Api
respond_with @doctrine respond_with @doctrine
end end
def suggested_contents
@doctrines = []
search = doctrine_search(search_params.to_unsafe_h.merge({ is_grouped_by_content: true, per_page: 100000 }))
search.group(:content).groups.each do |group_by_content|
group_by_content.results.each do |result|
@doctrines << result
end
end
respond_with @doctrines
end
private private
def resource_params def resource_params

2
app/javascript/controllers/selectize_controller.js

@ -54,7 +54,7 @@ export default class extends ApplicationController {
if (value.length === 0) { if (value.length === 0) {
if ($selectize.length) $selectize[0].selectize.clearOptions(); if ($selectize.length) $selectize[0].selectize.clearOptions();
} else { } else {
$.get("/api/doctrines.json", { subject_ids: value }, function(data, status) { $.get("/api/doctrines/suggested_contents.json", { subject_ids: value }, function(data, status) {
if (status === "success") { if (status === "success") {
$.each(data, function (i, doctrine) { $.each(data, function (i, doctrine) {
selectize_options.push({ id: doctrine.id, value: doctrine.content, text: doctrine.plain_content }); selectize_options.push({ id: doctrine.id, value: doctrine.content, text: doctrine.plain_content });

3
app/views/api/doctrines/suggested_contents.json.jbuilder

@ -0,0 +1,3 @@
json.array!(@doctrines) do |doctrine|
json.extract! doctrine, *%i[id subject_ids headnote content plain_content created_at updated_at]
end

1
config/routes.rb

@ -33,6 +33,7 @@ Rails.application.routes.draw do
namespace :api, defaults: { format: :json } do namespace :api, defaults: { format: :json } do
resources :doctrines do resources :doctrines do
get :suggested_contents, on: :collection
scope module: :doctrine do scope module: :doctrine do
resources :annotations do resources :annotations do
get :search, on: :collection get :search, on: :collection

Loading…
Cancel
Save