2018-09-07 21:19:20 +08:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
module Api
|
|
|
|
module V1
|
|
|
|
class ProtocolSerializer < ActiveModel::Serializer
|
2020-08-07 22:51:57 +08:00
|
|
|
include ApplicationHelper
|
|
|
|
include ActionView::Helpers::TextHelper
|
|
|
|
include InputSanitizeHelper
|
|
|
|
|
2018-09-07 21:19:20 +08:00
|
|
|
type :protocols
|
2018-10-07 17:29:56 +08:00
|
|
|
attributes :id, :name, :authors, :description, :protocol_type
|
|
|
|
has_many :protocol_keywords,
|
2018-10-07 19:28:29 +08:00
|
|
|
key: :keywords,
|
|
|
|
serializer: ProtocolKeywordSerializer,
|
|
|
|
class_name: 'ProtocolKeyword',
|
2021-07-23 17:56:28 +08:00
|
|
|
unless: -> { object.protocol_keywords.blank? }
|
2019-09-17 19:02:38 +08:00
|
|
|
has_many :steps, serializer: StepSerializer, if: -> { object.steps.any? }
|
|
|
|
belongs_to :parent, serializer: ProtocolSerializer, if: -> { object.parent.present? }
|
2023-05-19 17:34:31 +08:00
|
|
|
has_many :linked_my_modules,
|
|
|
|
key: :linked_tasks,
|
|
|
|
serializer: TaskSerializer,
|
|
|
|
class_name: 'MyModule',
|
|
|
|
if: -> { object.in_repository_published? }
|
2020-08-07 22:51:57 +08:00
|
|
|
|
2021-08-18 16:00:01 +08:00
|
|
|
include TimestampableModel
|
|
|
|
|
2020-08-07 22:51:57 +08:00
|
|
|
def description
|
|
|
|
if instance_options[:rte_rendering]
|
|
|
|
custom_auto_link(object.tinymce_render(:description),
|
|
|
|
simple_format: false,
|
|
|
|
tags: %w(img),
|
|
|
|
team: instance_options[:team])
|
|
|
|
else
|
|
|
|
object.description
|
|
|
|
end
|
|
|
|
end
|
2018-09-07 21:19:20 +08:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|