mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-10-05 03:14:43 +08:00
Add logic for private inventory items for forms [SCI-12082][SCI-12085]
This commit is contained in:
parent
5512f27fb4
commit
634aa37637
8 changed files with 50 additions and 3 deletions
|
@ -8,6 +8,7 @@ class ProtocolsController < ApplicationController
|
||||||
include TeamsHelper
|
include TeamsHelper
|
||||||
include ProtocolsExporterV2
|
include ProtocolsExporterV2
|
||||||
include UserRolesHelper
|
include UserRolesHelper
|
||||||
|
include FormFieldValuesHelper
|
||||||
|
|
||||||
before_action :check_create_permissions, only: %i(
|
before_action :check_create_permissions, only: %i(
|
||||||
create
|
create
|
||||||
|
|
18
app/helpers/form_field_values_helper.rb
Normal file
18
app/helpers/form_field_values_helper.rb
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module FormFieldValuesHelper
|
||||||
|
include Canaid::Helpers::PermissionsHelper
|
||||||
|
|
||||||
|
def form_repository_rows_field_value_formatter(field_values, user = current_user)
|
||||||
|
field_values&.value&.map do |value|
|
||||||
|
row_code = "#{RepositoryRow::ID_PREFIX}#{value['id']}"
|
||||||
|
repository = Repository.find_by(id: value['repository_id'])
|
||||||
|
|
||||||
|
if repository.nil? || can_read_repository?(user, repository)
|
||||||
|
"#{value['name']} (#{row_code})"
|
||||||
|
else
|
||||||
|
I18n.t('my_modules.assigned_items.repository.private_repository_row_name', repository_row_code: row_code)
|
||||||
|
end
|
||||||
|
end&.join(' | ')
|
||||||
|
end
|
||||||
|
end
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
module ReportsHelper
|
module ReportsHelper
|
||||||
include StringUtility
|
include StringUtility
|
||||||
|
include FormFieldValuesHelper
|
||||||
include Canaid::Helpers::PermissionsHelper
|
include Canaid::Helpers::PermissionsHelper
|
||||||
|
|
||||||
def render_report_element(element, provided_locals = nil)
|
def render_report_element(element, provided_locals = nil)
|
||||||
|
@ -139,6 +140,8 @@ module ReportsHelper
|
||||||
)
|
)
|
||||||
elsif form_field_value.is_a?(FormDatetimeFieldValue)
|
elsif form_field_value.is_a?(FormDatetimeFieldValue)
|
||||||
form_field_value&.formatted_localize
|
form_field_value&.formatted_localize
|
||||||
|
elsif form_field_value.is_a?(FormRepositoryRowsFieldValue)
|
||||||
|
form_repository_rows_field_value_formatter(form_field_value)
|
||||||
else
|
else
|
||||||
form_field_value&.formatted
|
form_field_value&.formatted
|
||||||
end
|
end
|
||||||
|
|
|
@ -15,10 +15,11 @@
|
||||||
<template v-for="(row, index) in field.field_value.value" :key="row.id">
|
<template v-for="(row, index) in field.field_value.value" :key="row.id">
|
||||||
<div class="flex items-center gap-2">
|
<div class="flex items-center gap-2">
|
||||||
<span v-if="index > 0">|</span>
|
<span v-if="index > 0">|</span>
|
||||||
<a
|
<a v-if="row.has_access"
|
||||||
class="cursor-pointer text-sn-blue record-info-link"
|
class="cursor-pointer text-sn-blue record-info-link"
|
||||||
:href="itemCardUrl(row)"
|
:href="itemCardUrl(row)"
|
||||||
>{{ row.name }} (ID{{ row.id }})</a>
|
>{{ row.name }}</a>
|
||||||
|
<span v-else class="cursor-pointer"> {{ row.name }}</span>
|
||||||
<i v-if="!disabled" @click="removeValue(row.id)" class="sn-icon sn-icon-unlink-italic-s cursor-pointer"></i>
|
<i v-if="!disabled" @click="removeValue(row.id)" class="sn-icon sn-icon-unlink-italic-s cursor-pointer"></i>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -6,6 +6,7 @@ class FormResponsesZipExportJob < ZipExportJob
|
||||||
include StringUtility
|
include StringUtility
|
||||||
include BreadcrumbsHelper
|
include BreadcrumbsHelper
|
||||||
include Rails.application.routes.url_helpers
|
include Rails.application.routes.url_helpers
|
||||||
|
include FormFieldValuesHelper
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
@ -44,6 +45,8 @@ class FormResponsesZipExportJob < ZipExportJob
|
||||||
if form_field_value.present?
|
if form_field_value.present?
|
||||||
if form_field_value.not_applicable
|
if form_field_value.not_applicable
|
||||||
row.add_cell I18n.t('forms.export.values.not_applicable')
|
row.add_cell I18n.t('forms.export.values.not_applicable')
|
||||||
|
elsif form_field_value.is_a?(FormRepositoryRowsFieldValue)
|
||||||
|
row.add_cell form_repository_rows_field_value_formatter(form_field_value, @user)
|
||||||
elsif form_field_value.value_in_range?
|
elsif form_field_value.value_in_range?
|
||||||
row.add_cell form_field_value.formatted
|
row.add_cell form_field_value.formatted
|
||||||
else
|
else
|
||||||
|
|
|
@ -13,4 +13,23 @@ class FormFieldValueSerializer < ActiveModel::Serializer
|
||||||
def submitted_at
|
def submitted_at
|
||||||
I18n.l(object.submitted_at, format: :full) if object.submitted_at
|
I18n.l(object.submitted_at, format: :full) if object.submitted_at
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def value
|
||||||
|
if object.type == 'FormRepositoryRowsFieldValue'
|
||||||
|
object.value.map do |value|
|
||||||
|
row_code = "#{RepositoryRow::ID_PREFIX}#{value['id']}"
|
||||||
|
repository = Repository.find_by(id: value['repository_id'])
|
||||||
|
|
||||||
|
value[:has_access] = repository.nil? || can_read_repository?(scope[:user], repository)
|
||||||
|
value[:name] = if value[:has_access]
|
||||||
|
"#{value['name']} (#{row_code})"
|
||||||
|
else
|
||||||
|
I18n.t('my_modules.assigned_items.repository.private_repository_row_name', repository_row_code: "#{RepositoryRow::ID_PREFIX}#{value['id']}")
|
||||||
|
end
|
||||||
|
value
|
||||||
|
end
|
||||||
|
else
|
||||||
|
object.value
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -28,6 +28,8 @@ module Reports
|
||||||
SmartAnnotations::TagToText.new(user, team, form_field_value&.formatted).text
|
SmartAnnotations::TagToText.new(user, team, form_field_value&.formatted).text
|
||||||
elsif form_field_value.is_a?(FormDatetimeFieldValue)
|
elsif form_field_value.is_a?(FormDatetimeFieldValue)
|
||||||
form_field_value&.formatted_localize
|
form_field_value&.formatted_localize
|
||||||
|
elsif form_field_value.is_a?(FormRepositoryRowsFieldValue)
|
||||||
|
form_repository_rows_field_value_formatter(form_field_value, @user)
|
||||||
else
|
else
|
||||||
form_field_value&.formatted
|
form_field_value&.formatted
|
||||||
end
|
end
|
||||||
|
|
|
@ -76,7 +76,7 @@
|
||||||
<% when 'ActionField' %>
|
<% when 'ActionField' %>
|
||||||
<%= render partial: 'protocols/print/element/checkbox_button', locals: { value: field_value&.flag, description: I18n.t('forms.fields.mark_as_completed') } %>
|
<%= render partial: 'protocols/print/element/checkbox_button', locals: { value: field_value&.flag, description: I18n.t('forms.fields.mark_as_completed') } %>
|
||||||
<% when 'RepositoryRowsField'%>
|
<% when 'RepositoryRowsField'%>
|
||||||
<%= field_value&.formatted %>
|
<%= form_repository_rows_field_value_formatter(field_value)%>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<div class="flex items-center justify-end mt-4 gap-4">
|
<div class="flex items-center justify-end mt-4 gap-4">
|
||||||
|
|
Loading…
Add table
Reference in a new issue