Merge pull request #893 from Zanz2/step_desc_2small_SCI-1833

Fixed validations lengths and added workarounds for bugs [SCI-1833]
This commit is contained in:
Zanz2 2017-11-24 17:55:20 +01:00 committed by GitHub
commit bb8aef3b73
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 67 additions and 59 deletions

View file

@ -976,7 +976,7 @@ class ProtocolsController < ApplicationController
br +
pio_eval_len(
sanitize_input(iterating_key),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_MEDIUM
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
) +
br
else
@ -996,7 +996,7 @@ class ProtocolsController < ApplicationController
t('protocols.protocols_io_import.comp_append.expected_result') +
pio_eval_len(
sanitize_input(iterating_key),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_MEDIUM
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
) +
'<br>'
return append
@ -1015,12 +1015,12 @@ class ProtocolsController < ApplicationController
append = t('protocols.protocols_io_import.comp_append.soft_packg.title') +
pio_eval_len(
sanitize_input(iterating_key['name']),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_MEDIUM
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
) +
t('protocols.protocols_io_import.comp_append.soft_packg.dev') +
pio_eval_len(
sanitize_input(iterating_key['developer']),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_MEDIUM
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
) +
t('protocols.protocols_io_import.comp_append.soft_packg.vers') +
pio_eval_len(
@ -1030,12 +1030,12 @@ class ProtocolsController < ApplicationController
t('protocols.protocols_io_import.comp_append.general_link') +
pio_eval_len(
sanitize_input(iterating_key['link']),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_BIG
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
) +
t('protocols.protocols_io_import.comp_append.soft_packg.repo') +
pio_eval_len(
sanitize_input(iterating_key['repository']),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_BIG
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
) +
t('protocols.protocols_io_import.comp_append.soft_packg.os') +
pio_eval_len(
@ -1057,12 +1057,12 @@ class ProtocolsController < ApplicationController
append = t('protocols.protocols_io_import.comp_append.dataset.title') +
pio_eval_len(
sanitize_input(iterating_key['name']),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_MEDIUM
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
) +
t('protocols.protocols_io_import.comp_append.general_link') +
pio_eval_len(
sanitize_input(iterating_key['link']),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_BIG
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
)
return append
end
@ -1077,17 +1077,17 @@ class ProtocolsController < ApplicationController
append = t('protocols.protocols_io_import.comp_append.command.title') +
pio_eval_len(
sanitize_input(iterating_key['name']),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_MEDIUM
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
) +
t('protocols.protocols_io_import.comp_append.command.desc') +
pio_eval_len(
sanitize_input(iterating_key['description']),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_MEDIUM
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
) +
t('protocols.protocols_io_import.comp_append.command.os') +
pio_eval_len(
sanitize_input(iterating_key['os_name']),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_MEDIUM
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
) +
' , ' +
pio_eval_len(
@ -1109,19 +1109,19 @@ class ProtocolsController < ApplicationController
) +
pio_eval_len(
sanitize_input(iterating_key['protocol_name']),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_MEDIUM
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
) +
t(
'protocols.protocols_io_import.comp_append.sub_protocol.author'
) +
pio_eval_len(
sanitize_input(iterating_key['full_name']),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_MEDIUM
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
) +
t('protocols.protocols_io_import.comp_append.general_link') +
pio_eval_len(
sanitize_input(iterating_key['link']),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_BIG
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
)
return append
end
@ -1137,12 +1137,12 @@ class ProtocolsController < ApplicationController
) +
pio_eval_len(
sanitize_input(iterating_key['body']),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_MEDIUM
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
) +
t('protocols.protocols_io_import.comp_append.general_link') +
pio_eval_len(
sanitize_input(iterating_key['link']),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_BIG
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
)
return append
end

View file

@ -13,9 +13,7 @@ module ProtocolsIoHelper
TEXT_MAX_LENGTH -
(PIO_ELEMENT_RESERVED_LENGTH_SMALL * 2 +
PIO_ELEMENT_RESERVED_LENGTH_MEDIUM * 8 +
PIO_ELEMENT_RESERVED_LENGTH_BIG * 2 +
400)
# 400 is for en.yml text
PIO_ELEMENT_RESERVED_LENGTH_BIG * 2)
# -- 2 small = created at , publish date PROTOCOL ATTRIBUTES
# -- 8 medium = description,tags,before_start,warning,guidelines,
# manuscript_citation,keywords,vendor_name PROTOCOL ATTRIBUTES
@ -24,24 +22,23 @@ module ProtocolsIoHelper
# PROTOCOLS.IO STEP ATTRIBUTES
PIO_S_AVAILABLE_LENGTH =
TEXT_MAX_LENGTH -
(PIO_ELEMENT_RESERVED_LENGTH_SMALL * 4 +
PIO_ELEMENT_RESERVED_LENGTH_MEDIUM * 11 +
PIO_ELEMENT_RESERVED_LENGTH_BIG * 5 +
550)
# 550 reserved for en.yml translations
# -- 4 small = software_package version, software_package os_name,
# software_package os_version, commands os_version
# -- 11 medium = description,expected_result,software_package name,
# software_package developer,dataset name,commands name,commands description,
# commands os_name, sub protocol name, sub protocol full name (author),
# safety_information,
# -- 5 big = software_package link, software_package repository,
# dataset link, sub protocol link, safety_information link
(PIO_ELEMENT_RESERVED_LENGTH_SMALL * 20)
# -- 20 small = description,expected_result,safety_information
# software_package version, software_package os_name,
# software_package os_version,software_package link,
# software_package repository,software_package developer,software_package name
# commands os_version,commands os_name, commands name,commands description,
# sub protocol full name (author), sub protocol name, sub protocol link,
# dataset link,dataset name, safety_information link,
# -- 0 medium =
# -- 0 big =
PIO_TITLE_TOOLONG_LEN =
I18n.t('protocols.protocols_io_import.title_too_long').length + 5
I18n.t('protocols.protocols_io_import.title_too_long').length + 2
PIO_STEP_TOOLONG_LEN =
I18n.t('protocols.protocols_io_import.too_long').length + 5
I18n.t('protocols.protocols_io_import.too_long').length
# The + 2 above (in title) is there because if the length was at the limit,
# the cutter method had issues, this gives it some space
def protocolsio_string_to_table_element(description_string)
string_without_tables = string_html_table_remove(description_string)
table_regex = %r{<table\b[^>]*>(.*?)<\/table>}m
@ -97,19 +94,30 @@ module ProtocolsIoHelper
end
def pio_eval_title_len(text)
text += ' ' if text.length < Constants::NAME_MIN_LENGTH
if text.length > Constants::NAME_MAX_LENGTH
text =
text[0..(Constants::NAME_MAX_LENGTH - PIO_TITLE_TOOLONG_LEN)] +
t('protocols.protocols_io_import.title_too_long')
@toolong = true
if text
text += ' ' if text.length < Constants::NAME_MIN_LENGTH
if text.length > Constants::NAME_MAX_LENGTH
text =
text[0..(Constants::NAME_MAX_LENGTH - PIO_TITLE_TOOLONG_LEN)] +
t('protocols.protocols_io_import.title_too_long')
@toolong = true
end
text
end
text
end
def pio_eval_len(text, reserved)
if text
text_end = reserved + @remaining - PIO_STEP_TOOLONG_LEN
text_end = 2 if text_end < 2
# Since steps have very low reserved values now (below 100),
# the above sets their index to 1 if its negative
# (length of toolong text is about 90 chars, and if remaining is 0,
# then the negative index just gets set to 1. this is a workaround
# it would also be possible to not count the length of the "too long" text
# or setting the import reserved value to 95,but then available characters
# will be like before (around 7600)
if text.length - reserved > @remaining
text =
close_open_html_tags(
@ -117,8 +125,8 @@ module ProtocolsIoHelper
)
@toolong = true
@remaining = 0
else
@remaining -= (text.length - reserved)
elsif (text.length - reserved) > 0
@remaining -= text.length - reserved
end
text
end

View file

@ -44,7 +44,7 @@
<br><strong><%= t('protocols.protocols_io_import.preview.strng_s_desc') %></strong>
<% s_desc = pio_eval_len(
sanitize_input(string_html_table_remove(key['data'])),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_MEDIUM
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
)%>
<%= s_desc.html_safe %><br>
<% when '17' %>
@ -52,7 +52,7 @@
<br><strong><%= t('protocols.protocols_io_import.preview.s_exp_res') %></strong>
<% s_exp_res = pio_eval_len(
sanitize_input(string_html_table_remove(key['data'])),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_MEDIUM
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
)%>
<%= s_exp_res.html_safe %>
<br>
@ -65,12 +65,12 @@
<strong><%= not_null(key['name'])+': ' %></strong>
<%= pio_eval_len(
sanitize_input(string_html_table_remove(not_null(key['source_data']['name'])).html_safe),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_MEDIUM
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
).html_safe %>
<br><%= t('protocols.protocols_io_import.preview.dev') %>
<%= pio_eval_len(
sanitize_input(not_null(key['source_data']['developer']).html_safe),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_MEDIUM
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
).html_safe %>
<br><%= t('protocols.protocols_io_import.preview.vers') %>
<%= pio_eval_len(
@ -80,12 +80,12 @@
<br><%= t('protocols.protocols_io_import.preview.s_link') %>
<%= pio_eval_len(
sanitize_input(not_null(key['source_data']['link']).html_safe),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_BIG
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
).html_safe %>
<br><%= t('protocols.protocols_io_import.preview.repo') %>
<%= pio_eval_len(
sanitize_input(not_null(key['source_data']['repository']).html_safe),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_BIG
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
).html_safe %>
<br><%= t('protocols.protocols_io_import.preview.os') %>
<%= pio_eval_len(
@ -103,12 +103,12 @@
<strong><%= not_null(key['name'])+': ' %></strong>
<%= pio_eval_len(
sanitize_input(string_html_table_remove(not_null(key['source_data']['name'])).html_safe),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_MEDIUM
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
).html_safe %>
<br><%= t('protocols.protocols_io_import.preview.s_link') %>
<%= pio_eval_len(
sanitize_input(not_null(key['source_data']['link']).html_safe),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_BIG
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
).html_safe %>
<% when '15'%>
<% step_info_string += not_null(key['source_data']['description']) %>
@ -116,19 +116,19 @@
<strong><%= key['name']+': ' %></strong>
<% s_cmd = pio_eval_len(
sanitize_input(not_null(key['source_data']['name'])),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_MEDIUM
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
) %>
<%= s_cmd.html_safe %>
<br><%= t('protocols.protocols_io_import.preview.s_desc') %>
<% s_cmd_desc = pio_eval_len(
sanitize_input(string_html_table_remove(not_null(key['source_data']['description']))),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_MEDIUM
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
) %>
<% s_cmd_desc.html_safe %>
<br><%= t('protocols.protocols_io_import.preview.os') %>
<%= pio_eval_len(
sanitize_input(not_null(key['source_data']['os_name']).html_safe),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_MEDIUM
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
).html_safe +
' , '+
pio_eval_len(
@ -139,19 +139,19 @@
<br><strong><%= t('protocols.protocols_io_import.preview.sub_prot') %></strong>
<%= pio_eval_len(
sanitize_input(not_null(key['source_data']['protocol_name']).html_safe),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_MEDIUM
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
).html_safe %>
<br><%= t('protocols.protocols_io_import.preview.auth') %>
<%= pio_eval_len(
sanitize_input(not_null(key['source_data']['full_name']).html_safe),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_MEDIUM
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
).html_safe %>
<br>
<% if key['source_data']['link'].present? %>
<%= t('protocols.protocols_io_import.preview.s_nobr_link') %>
<%= pio_eval_len(
sanitize_input(key['source_data']['link'].html_safe),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_BIG
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
).html_safe %>
<% end %>
<% when '19'%>
@ -160,13 +160,13 @@
<strong><%= key['name']+': ' %></strong>
<% s_safety = pio_eval_len(
sanitize_input(string_html_table_remove(not_null(key['source_data']['body']))),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_MEDIUM
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
) %>
<%= s_safety.html_safe %>
<br><%= t('protocols.protocols_io_import.preview.s_link') %>
<%= pio_eval_len(
sanitize_input(not_null(key['source_data']['link']).html_safe),
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_BIG
ProtocolsIoHelper::PIO_ELEMENT_RESERVED_LENGTH_SMALL
).html_safe %>
<% when '20'%>
<% else %>