Merge pull request #1447 from okriuchykhin/ok_SCI_2875_v2

Fix task tags update on canvas cards [SCI-2875]
This commit is contained in:
Miha Mencin 2019-01-16 12:44:50 +01:00 committed by GitHub
commit 0766ee96a7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 33 additions and 15 deletions

View file

@ -873,18 +873,21 @@ function bindEditTagsAjax(elements) {
manageTagsModalBody = manageTagsModal.find(".modal-body"); manageTagsModalBody = manageTagsModal.find(".modal-body");
// Reload tags HTML element when modal is closed // Reload tags HTML element when modal is closed
manageTagsModal.on("hide.bs.modal", function(){ manageTagsModal.off().on("hide.bs.modal", function(){
var task = $("div.panel[data-module-id='" + var task = $("div.panel[data-module-id='" +
manageTagsModal.data('module-id') + "']"); manageTagsModal.data('module-id') + "']");
// Load HTML // Load HTML
$.ajax({ $.ajax({
url: task.attr("data-module-tags-url"), url: $('#canvas-container').attr('data-module-tags-url'),
type: "GET", type: "GET",
dataType: "json", dataType: "json",
success: function(data){ success: function(data) {
task.find(".edit-tags-link") $.each(data.my_modules, function(index, my_module){
.html(data.html_canvas); $('div.panel[data-module-id=' + my_module.id + ']')
.find(".edit-tags-link")
.html(my_module.tags_html);
});
// initialize tooltips again // initialize tooltips again
$.initTooltips(); $.initTooltips();
}, },

View file

@ -1,5 +1,5 @@
class MyModuleTagsController < ApplicationController class MyModuleTagsController < ApplicationController
before_action :load_vars before_action :load_vars, except: :canvas_index
before_action :check_view_permissions, only: :index before_action :check_view_permissions, only: :index
before_action :check_manage_permissions, only: %i(create index_edit destroy) before_action :check_manage_permissions, only: %i(create index_edit destroy)
@ -25,10 +25,6 @@ class MyModuleTagsController < ApplicationController
respond_to do |format| respond_to do |format|
format.json do format.json do
render json: { render json: {
html_canvas: render_to_string(
partial: 'canvas/tags.html.erb',
locals: { my_module: @my_module }
),
html_module_header: render_to_string( html_module_header: render_to_string(
partial: 'my_modules/tags.html.erb', partial: 'my_modules/tags.html.erb',
locals: { my_module: @my_module } locals: { my_module: @my_module }
@ -38,6 +34,26 @@ class MyModuleTagsController < ApplicationController
end end
end end
def canvas_index
experiment = Experiment.find(params[:id])
render_403 unless can_read_experiment?(experiment)
res = []
experiment.active_my_modules.each do |my_module|
res << {
id: my_module.id,
tags_html: render_to_string(
partial: 'canvas/tags.html.erb',
locals: { my_module: my_module }
)
}
end
respond_to do |format|
format.json do
render json: { my_modules: res }
end
end
end
def create def create
@mt = MyModuleTag.new(mt_params.merge(my_module: @my_module)) @mt = MyModuleTag.new(mt_params.merge(my_module: @my_module))
@mt.created_by = current_user @mt.created_by = current_user

View file

@ -9,8 +9,7 @@
data-module-x="<%= my_module.x %>" data-module-x="<%= my_module.x %>"
data-module-y="<%= my_module.y %>" data-module-y="<%= my_module.y %>"
data-module-conns="<%= construct_module_connections(my_module) %>" data-module-conns="<%= construct_module_connections(my_module) %>"
data-module-tags-url="<%= my_module_my_module_tags_url(my_module, format: :json) %>" data-module-tags-url="<%= my_module_tags_experiment_path(my_module.experiment, format: :json) %>">
data-module-users-tab-url="<%= my_module_user_my_modules_url(my_module_id: my_module.id, format: :json) %>">
<% if can_manage_module?(my_module) %> <% if can_manage_module?(my_module) %>
<a class="edit-tags-link pull-right" data-remote="true" href="<%= my_module_tags_edit_url(my_module, format: :json) %>"> <a class="edit-tags-link pull-right" data-remote="true" href="<%= my_module_tags_edit_url(my_module, format: :json) %>">

View file

@ -8,8 +8,7 @@
<% end %> <% end %>
data-module-x="<%= my_module.x %>" data-module-x="<%= my_module.x %>"
data-module-y="<%= my_module.y %>" data-module-y="<%= my_module.y %>"
data-module-conns="<%= construct_module_connections(my_module) %>" data-module-conns="<%= construct_module_connections(my_module) %>">
data-module-tags-url="<%= my_module_my_module_tags_url(my_module, format: :json) %>">
<% if can_manage_module?(my_module) %> <% if can_manage_module?(my_module) %>
<a class="edit-tags-link pull-right" data-remote="true" href="<%= my_module_tags_edit_url(my_module, format: :json) %>"> <a class="edit-tags-link pull-right" data-remote="true" href="<%= my_module_tags_edit_url(my_module, format: :json) %>">

View file

@ -45,7 +45,7 @@
</div> </div>
</div> </div>
<div id="canvas-container" data-project-id="<%= @project.id %>"> <div id="canvas-container" data-project-id="<%= @project.id %>" data-module-tags-url="<%= my_module_tags_experiment_path(@experiment, format: :json) %>">
<%= render partial: 'canvas/full_zoom', locals: { experiment: @experiment, my_modules: @active_modules } %> <%= render partial: 'canvas/full_zoom', locals: { experiment: @experiment, my_modules: @active_modules } %>
</div> </div>
</div> </div>

View file

@ -311,6 +311,7 @@ Rails.application.routes.draw do
get 'canvas/small_zoom', to: 'canvas#small_zoom' # AJAX-loaded canvas zoom get 'canvas/small_zoom', to: 'canvas#small_zoom' # AJAX-loaded canvas zoom
post 'canvas', to: 'canvas#update' # Save updated canvas action post 'canvas', to: 'canvas#update' # Save updated canvas action
get 'module_archive' # Module archive for single experiment get 'module_archive' # Module archive for single experiment
get 'my_module_tags', to: 'my_module_tags#canvas_index'
get 'archive' # archive experiment get 'archive' # archive experiment
get 'clone_modal' # return modal with clone options get 'clone_modal' # return modal with clone options
post 'clone' # clone experiment post 'clone' # clone experiment