mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-09-20 23:16:15 +08:00
Implement details and notes sections of shareable links [SCI-8750] (#5710)
Co-authored-by: Sboursen <dev.sboursen@gmail.com>
This commit is contained in:
parent
6049c7d8b9
commit
33bb79d17a
|
@ -5,7 +5,7 @@ class MyModuleShareableLinksController < ApplicationController
|
|||
before_action :load_shareable_link, only: %i(update destroy)
|
||||
before_action :check_view_permissions, only: :show
|
||||
before_action :check_manage_permissions, except: %i(show my_module_protocol_show)
|
||||
skip_before_action :authenticate_user!, only: %(my_module_protocol_show)
|
||||
skip_before_action :authenticate_user!, only: %i(my_module_protocol_show)
|
||||
|
||||
def show
|
||||
render json: @my_module.shareable_link
|
||||
|
|
|
@ -37,7 +37,7 @@ module SecondaryNavigationHelper
|
|||
end
|
||||
|
||||
def is_module_protocols?
|
||||
action_name == 'protocols'
|
||||
%w(protocols my_module_protocol_show).include?(action_name)
|
||||
end
|
||||
|
||||
def is_module_results?
|
||||
|
|
|
@ -21,14 +21,14 @@
|
|||
|
||||
<%= csrf_meta_tags %>
|
||||
</head>
|
||||
<body class="">
|
||||
<div class="sci--sl-layout">
|
||||
<body id="sci-shareable-links">
|
||||
<div class="flex flex-row">
|
||||
<div class="w-80 h-screen px-4 py-6 flex flex-col
|
||||
border-0 border-r border-solid border-sn-sleepy-grey">
|
||||
<%= render "shareable_links/left_navigation" %>
|
||||
</div>
|
||||
<div class="sci--sl-layout-content">
|
||||
<%= yield :content %>
|
||||
<div class="flex flex-col flex-1 min-h-screen p-4 bg-sn-super-light-grey">
|
||||
<%= yield %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
<span class="date-text" data-editable="<%= due_date_editable %>">
|
||||
<span id="dueDateLabelContainer" class="view-block">
|
||||
<%= render partial: "due_date_label.html.erb" , locals: { my_module: my_module, due_date_editable: due_date_editable } %>
|
||||
<%= render partial: "my_modules/due_date_label.html.erb" , locals: { my_module: my_module, due_date_editable: due_date_editable } %>
|
||||
</span>
|
||||
<% if due_date_editable %>
|
||||
<div class="datetime-picker-container" id="due-date">
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
<span class="date-text" data-editable="<%= start_date_editable %>">
|
||||
<span id="startDateLabelContainer" class="view-block">
|
||||
<%= render partial: "start_date_label.html.erb" , locals: { my_module: my_module, start_date_editable: start_date_editable } %>
|
||||
<%= render partial: "my_modules/start_date_label.html.erb" , locals: { my_module: my_module } %>
|
||||
</span>
|
||||
<% if start_date_editable %>
|
||||
<div class="datetime-picker-container" id="start-date">
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<div class="task-notes">
|
||||
<div class="task-notes-content">
|
||||
<% if can_update_my_module_description?(@my_module) %>
|
||||
<%= render partial: "description_form" %>
|
||||
<%= render partial: "my_modules/description_form" %>
|
||||
<% elsif @my_module.description.present? %>
|
||||
<%= custom_auto_link(@my_module.tinymce_render(:description),
|
||||
simple_format: false,
|
||||
|
|
18
app/views/shareable_links/_header_actions.html.erb
Normal file
18
app/views/shareable_links/_header_actions.html.erb
Normal file
|
@ -0,0 +1,18 @@
|
|||
<div class="flex items-center uppercase text-bold">
|
||||
<a class="p-4 border-b-4 border-transparent hover:no-underline capitalize <%= is_module_protocols? ? "text-sn-blue" : "text-sn-grey" %>"
|
||||
href="<%= shared_protocol_path(@my_module.signed_id) %>"
|
||||
title="<%= t("nav2.modules.steps") %>"
|
||||
>
|
||||
<%= t("nav2.modules.steps") %>
|
||||
</a>
|
||||
<a class="p-4 border-b-4 border-transparent hover:no-underline capitalize <%= is_module_results? ? "text-sn-blue" : "text-sn-grey" %>"
|
||||
href="#"
|
||||
title="<%= t("nav2.modules.results") %>"
|
||||
>
|
||||
<%= t("nav2.modules.results") %>
|
||||
<% @active_results_size = @my_module.results.where(archived:false).size %>
|
||||
<% if @active_results_size.positive? %>
|
||||
<sup class="navigation-results-counter"><%= @my_module.archived_branch? ? @my_module.results.size : @active_results_size %></sup>
|
||||
<% end %>
|
||||
</a>
|
||||
</div>
|
58
app/views/shareable_links/_my_module_details.html.erb
Normal file
58
app/views/shareable_links/_my_module_details.html.erb
Normal file
|
@ -0,0 +1,58 @@
|
|||
<% my_module_editable = false %>
|
||||
|
||||
<div class="flex-block date-block">
|
||||
<div class="flex-block-label">
|
||||
<span class="sn-icon block-icon sn-icon-calendar mr-2.5"></span>
|
||||
<span class="hidden-xs hidden-sm hidden-md"><%= t('my_modules.details.start_date') %></span>
|
||||
</div>
|
||||
<div id="startDateContainer" class="datetime-container">
|
||||
<span class="date-text">
|
||||
<span id="startDateLabelContainer" class="view-block">
|
||||
<%= render partial: "my_modules/start_date_label.html.erb" , locals: { my_module: @my_module } %>
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex-block date-block" >
|
||||
<div class="flex-block-label">
|
||||
<span class="sn-icon block-icon sn-icon-calendar mr-2.5"></span>
|
||||
<span class="hidden-xs hidden-sm hidden-md"><%= t('my_modules.details.due_date') %></span>
|
||||
</div>
|
||||
<div id="dueDateContainer" class="datetime-container">
|
||||
<span class="date-text">
|
||||
<span id="dueDateLabelContainer" class="view-block">
|
||||
<%= render partial: "my_modules/due_date_label.html.erb" , locals: { my_module: @my_module, due_date_editable: false } %>
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<% if @my_module.completed? %>
|
||||
<div class="flex-block date-block" >
|
||||
<div class="flex-block-label">
|
||||
<span class="fas block-icon fa-calendar-day"></span>
|
||||
<span class="hidden-xs hidden-sm hidden-md"><%= t('my_modules.details.completed_date') %></span>
|
||||
</div>
|
||||
<div class="datetime-container">
|
||||
<span class="date-text">
|
||||
<%= l(@my_module.completed_on, format: :full) %>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
|
||||
<div class="flex items-center w-full justify-start h-8">
|
||||
<span class="sn-icon block-icon sn-icon-users mr-2.5"></span>
|
||||
<span class="hidden-xs hidden-sm"><%= t('my_modules.details.assigned_users') %></span>
|
||||
<%= render partial: "shareable_links/user_my_modules", locals: { my_module: @my_module } %>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="flex items-center w-full justify-start h-8">
|
||||
<span class="sn-icon block-icon sn-icon-tag mr-2.5"></span>
|
||||
<span class="hidden-xs hidden-sm tags-title"><%=t "my_modules.details.tags" %></span>
|
||||
<%= render partial: "shareable_links/tags", locals: { my_module: @my_module } %>
|
||||
</div>
|
10
app/views/shareable_links/_tags.html.erb
Normal file
10
app/views/shareable_links/_tags.html.erb
Normal file
|
@ -0,0 +1,10 @@
|
|||
<div class="inline-flex flex-row flex-nowrap ml-3 gap-2">
|
||||
<% my_module.tags.order(:id).each do |tag| %>
|
||||
<% color = escape_input(tag[:color]) %>
|
||||
<div class="inline-flex flex-nowrap h-6 px-2 py-1 items-center text-sn-white rounded-md select-none"
|
||||
title="<%= escape_input(tag[:name]) %>"
|
||||
style="background-color: <%= color %>;">
|
||||
<%= escape_input(tag[:name]) %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
15
app/views/shareable_links/_task_flow_button.html.erb
Normal file
15
app/views/shareable_links/_task_flow_button.html.erb
Normal file
|
@ -0,0 +1,15 @@
|
|||
<% status = my_module.my_module_status %>
|
||||
<%= t('my_module_statuses.dropdown.status_label') %>
|
||||
|
||||
<button class="btn btn-secondary disabled"
|
||||
type="button">
|
||||
<span>
|
||||
<% if my_module.status_changing %>
|
||||
<i class="fas fa-spinner fa-spin"></i>
|
||||
<span><%= t('my_module_statuses.dropdown.status_transitioning_label') %></span>
|
||||
<% end %>
|
||||
<%= status.name %>
|
||||
</span>
|
||||
<span class="sn-icon sn-icon-down"></span>
|
||||
</button>
|
||||
|
9
app/views/shareable_links/_user_my_modules.html.erb
Normal file
9
app/views/shareable_links/_user_my_modules.html.erb
Normal file
|
@ -0,0 +1,9 @@
|
|||
<div class="inline-flex flex-row flex-nowrap">
|
||||
<% my_module.user_my_modules.each do |um| %>
|
||||
<% user = um.user %>
|
||||
<div class="inline-flex gap-2 flex-nowrap h-6 px-2 py-1 items-center select-none" title="<%= user.full_name %>">
|
||||
<img class="block rounded-full h-5" src="<%= avatar_path(user, :icon_small)%>" alt="<%= user.full_name %>">
|
||||
<span style="block"><%= user.full_name %></span>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
|
@ -0,0 +1,57 @@
|
|||
<div class="text-3xl font-bold"><%= @my_module.name %></div>
|
||||
|
||||
<div class="my-5 max-w-4xl flex-1 bg-sn-white">
|
||||
<div class="my-module-position-container">
|
||||
<!-- Header Actions -->
|
||||
<%= render partial: 'shareable_links/header_actions' %>
|
||||
<!-- Details -->
|
||||
<div class="task-section task-information">
|
||||
<div id="task-details" class="task-section-header">
|
||||
<div class="flex items-center gap-3">
|
||||
<%= render partial: 'shareable_links/task_flow_button', locals: { my_module: @my_module } if @my_module.my_module_status_flow %>
|
||||
</div>
|
||||
<div class="task-details-container flex items-center gap-2">
|
||||
<a class="task-section-caret" role="button" data-toggle="collapse" href="#details-container" aria-expanded="false" aria-controls="details-container">
|
||||
<i class="sn-icon sn-icon-right"></i>
|
||||
<span id="taskDetailsLabel" class="task-section-title">
|
||||
<h2>
|
||||
<%= t('my_modules.details.title') %>
|
||||
</h2>
|
||||
</span>
|
||||
</a>
|
||||
<span class="task-details-code">
|
||||
<%= @my_module.code %>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div id="details-container" class="task-details">
|
||||
<%= render partial: 'shareable_links/my_module_details' %>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Notes -->
|
||||
<div class="task-section">
|
||||
<div class="task-section-header">
|
||||
<a class="task-section-caret" role="button" data-toggle="collapse" href="#notes-container" aria-expanded="true" aria-controls="notes-container">
|
||||
<i class="sn-icon sn-icon-right"></i>
|
||||
<span class="task-section-title">
|
||||
<h2><%= t('my_modules.notes.title') %></h2>
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="collapse in" id="notes-container" aria-expanded="true">
|
||||
<div class="task-notes">
|
||||
<div class="task-notes-content">
|
||||
<% if @my_module.description.present? %>
|
||||
<%= custom_auto_link(@my_module.tinymce_render(:description),
|
||||
simple_format: false,
|
||||
tags: %w(img),
|
||||
team: current_team) %>
|
||||
<% else %>
|
||||
<span class="no-description"><%= t('my_modules.notes.no_description') %></span>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -961,7 +961,7 @@ Rails.application.routes.draw do
|
|||
end
|
||||
end
|
||||
|
||||
get '/shared_tasks/:uuid/protocol', to: 'my_module_shareable_links#my_module_protocol_show'
|
||||
get '/shared/:uuid/protocol', to: 'my_module_shareable_links#my_module_protocol_show', as: :shared_protocol
|
||||
|
||||
resources :marvin_js_assets, only: %i(create update destroy show) do
|
||||
collection do
|
||||
|
|
Loading…
Reference in a new issue