mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-09-20 23:16:15 +08:00
BE: Column display switch (Task data display) [SCI-7442]
This commit is contained in:
parent
7ea57d9ffe
commit
420ec69f20
|
@ -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);
|
||||
});
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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 %>
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue