BE: Column display switch (Task data display) [SCI-7442]

This commit is contained in:
Giga Chubinidze 2022-12-06 17:51:11 +04:00
parent 7ea57d9ffe
commit 420ec69f20
6 changed files with 17 additions and 8 deletions

View file

@ -245,6 +245,7 @@ var ExperimnetTable = {
let visibleColumns = $('.table-display-modal .fa-eye').map((_i, col) => col.dataset.column).toArray();
// Update columns on backend - $.post('', { columns: visibleColumns }, () => {});
$.post($('.table-display-modal').data('column-state-url'), { columns: visibleColumns }, () => {});
$('.experiment-table')[0].style.setProperty('--columns-count', $('.table-display-modal .fa-eye').length + 1);
});

View file

@ -92,6 +92,7 @@ class ExperimentsController < ApplicationController
redirect_to module_archive_experiment_path(@experiment) if @experiment.archived_branch?
@project = @experiment.project
@active_modules = @experiment.my_modules.active.order(:name)
@my_module_visible_table_columns = current_user.settings["visible_my_module_table_columns"].present? ? current_user.settings["visible_my_module_table_columns"] : []
end
def load_table

View file

@ -6,13 +6,13 @@ class MyModulesController < ApplicationController
include ActionView::Helpers::UrlHelper
include ApplicationHelper
before_action :load_vars, except: %i(restore_group)
before_action :load_vars, except: %i(restore_group save_table_state)
before_action :check_create_permissions, only: %i(new create)
before_action :check_archive_permissions, only: %i(update)
before_action :check_manage_permissions, only: %i(
create description due_date update_description update_protocol_description update_protocol
)
before_action :check_read_permissions, except: %i(update update_description update_protocol_description restore_group)
before_action :check_read_permissions, except: %i(update update_description update_protocol_description restore_group save_table_state)
before_action :check_update_state_permissions, only: :update_state
before_action :set_inline_name_editing, only: %i(protocols results activities archive)
before_action :load_experiment_my_modules, only: %i(protocols results activities archive)
@ -30,8 +30,8 @@ class MyModulesController < ApplicationController
def create
max_xy = @experiment.my_modules.select('MAX("my_modules"."x") AS x, MAX("my_modules"."y") AS y').take
x = max_xy ? (max_xy.x + 10) : 1
y = max_xy ? (max_xy.y + 10) : 1
x = max_xy.x ? (max_xy.x + 10) : 1
y = max_xy.y ? (max_xy.y + 10) : 1
@my_module = @experiment.my_modules.new(my_module_params)
@my_module.assign_attributes(created_by: current_user, last_modified_by: current_user, x: x, y: y)
@my_module.transaction do
@ -77,6 +77,11 @@ class MyModulesController < ApplicationController
end
end
def save_table_state
current_user.settings.update(visible_my_module_table_columns: params[:columns])
current_user.save!
end
def status_state
respond_to do |format|
format.json do

View file

@ -1,4 +1,4 @@
<div class="modal table-display-modal" id="tableDisplayModal" tabindex="-1" role="dialog">
<div class="modal table-display-modal" id="tableDisplayModal" tabindex="-1" role="dialog" data-column-state-url="<%= save_table_state_my_modules_path %>">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
@ -12,7 +12,7 @@
<% Experiments::TableViewService::COLUMNS.each do |col| %>
<div class="column-container <%= col %> visible">
<% unless col == :task_name %>
<i class="fas fa-eye" data-column="<%= col %>"></i>
<i class="fas fa-<%= col.to_s.in?(@my_module_visible_table_columns) ? 'eye' : 'eye-slash' %>" data-column="<%= col %>"></i>
<% end %>
<%= t("experiments.table.column_display_modal.#{col}") %>
</div>

View file

@ -13,7 +13,7 @@
<div class="experiment-table-container">
<div class="experiment-table"
style="--columns-count: <%= Experiments::TableViewService::COLUMNS.length%>"
data-my-modules-url= <%= load_table_experiment_path(@experiment, view_mode: params[:view_mode]) %>
data-my-modules-url="<%= load_table_experiment_path(@experiment, view_mode: params[:view_mode]) %>"
>
<div class="table-header">
<div class="table-header-cell select-all-checkboxes">
@ -23,7 +23,7 @@
</div>
</div>
<% Experiments::TableViewService::COLUMNS.each do |col| %>
<div class="table-header-cell <%= col %>-column">
<div class="table-header-cell <%= col %>-column <%= 'hidden' unless col.to_s.in?(@my_module_visible_table_columns) || col == :task_name %>">
<%= t("experiments.table.column.#{col}_html") %>
</div>
<% end %>

View file

@ -385,6 +385,8 @@ Rails.application.routes.draw do
# Show action is a popup (JSON) for individual module in full-zoom canvas,
# as well as 'module info' page for single module (HTML)
resources :my_modules, path: '/modules', only: [:show, :update] do
post 'save_table_state', on: :collection, defaults: { format: 'json' }
member do
get :permissions
get :actions_dropdown