From dc5904aed92f6786bf0a067e0a67c87dc3d7b508 Mon Sep 17 00:00:00 2001 From: Zanz2 Date: Fri, 24 Nov 2017 01:45:40 +0100 Subject: [PATCH 1/3] Fixed this jira issue and added workarounds for bugs --- app/controllers/protocols_controller.rb | 32 +++++----- app/helpers/protocols_io_helper.rb | 60 +++++++++++-------- .../_import_json_protocol_s_desc.html.erb | 32 +++++----- 3 files changed, 68 insertions(+), 56 deletions(-) diff --git a/app/controllers/protocols_controller.rb b/app/controllers/protocols_controller.rb index 473d8af59..bc12ab491 100644 --- a/app/controllers/protocols_controller.rb +++ b/app/controllers/protocols_controller.rb @@ -962,7 +962,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 @@ -982,7 +982,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 ) + '
' return append @@ -1001,12 +1001,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( @@ -1016,12 +1016,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( @@ -1043,12 +1043,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 @@ -1063,17 +1063,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( @@ -1095,19 +1095,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 @@ -1123,12 +1123,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 diff --git a/app/helpers/protocols_io_helper.rb b/app/helpers/protocols_io_helper.rb index 6cbd36f6c..f6ea6d86c 100644 --- a/app/helpers/protocols_io_helper.rb +++ b/app/helpers/protocols_io_helper.rb @@ -24,24 +24,25 @@ 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 + + 400) + # 400 reserved for en.yml translations + # -- 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 + 2 + # The + 2 above is there because if the length was excactly 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>}m @@ -97,19 +98,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 = 1 if text_end < 1 + # 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 +129,8 @@ module ProtocolsIoHelper ) @toolong = true @remaining = 0 - else - @remaining -= (text.length - reserved) + elsif (text.length - reserved) > 0 + @remaining -= text.length - reserved end text end diff --git a/app/views/protocols/import_export/_import_json_protocol_s_desc.html.erb b/app/views/protocols/import_export/_import_json_protocol_s_desc.html.erb index 453ee8bd5..12f43a41f 100644 --- a/app/views/protocols/import_export/_import_json_protocol_s_desc.html.erb +++ b/app/views/protocols/import_export/_import_json_protocol_s_desc.html.erb @@ -44,7 +44,7 @@
<%= t('protocols.protocols_io_import.preview.strng_s_desc') %> <% 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 %>
<% when '17' %> @@ -52,7 +52,7 @@
<%= t('protocols.protocols_io_import.preview.s_exp_res') %> <% 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 %>
@@ -65,12 +65,12 @@ <%= not_null(key['name'])+': ' %> <%= 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 %>
<%= 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 %>
<%= t('protocols.protocols_io_import.preview.vers') %> <%= pio_eval_len( @@ -80,12 +80,12 @@
<%= 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 %>
<%= 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 %>
<%= t('protocols.protocols_io_import.preview.os') %> <%= pio_eval_len( @@ -103,12 +103,12 @@ <%= not_null(key['name'])+': ' %> <%= 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 %>
<%= 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 @@ <%= key['name']+': ' %> <% 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 %>
<%= 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 %>
<%= 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 @@
<%= t('protocols.protocols_io_import.preview.sub_prot') %> <%= 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 %>
<%= 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 %>
<% 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 @@ <%= key['name']+': ' %> <% 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 %>
<%= 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 %> From e7e37939a999df6d9ae0eb0533b2e4a17e32bfee Mon Sep 17 00:00:00 2001 From: Zanz2 Date: Fri, 24 Nov 2017 11:18:12 +0100 Subject: [PATCH 2/3] quick fix to expected result losing html --- app/helpers/protocols_io_helper.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/helpers/protocols_io_helper.rb b/app/helpers/protocols_io_helper.rb index f6ea6d86c..f003a602d 100644 --- a/app/helpers/protocols_io_helper.rb +++ b/app/helpers/protocols_io_helper.rb @@ -40,8 +40,8 @@ module ProtocolsIoHelper PIO_TITLE_TOOLONG_LEN = I18n.t('protocols.protocols_io_import.title_too_long').length + 2 PIO_STEP_TOOLONG_LEN = - I18n.t('protocols.protocols_io_import.too_long').length + 2 - # The + 2 above is there because if the length was excactly the limit, + 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) @@ -113,7 +113,7 @@ module ProtocolsIoHelper def pio_eval_len(text, reserved) if text text_end = reserved + @remaining - PIO_STEP_TOOLONG_LEN - text_end = 1 if text_end < 1 + 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, From 0e574b2f15053f3570a5ee399529be85d16e1bc3 Mon Sep 17 00:00:00 2001 From: Zanz2 Date: Fri, 24 Nov 2017 11:49:57 +0100 Subject: [PATCH 3/3] removed un needed limits --- app/helpers/protocols_io_helper.rb | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/app/helpers/protocols_io_helper.rb b/app/helpers/protocols_io_helper.rb index f003a602d..be72de36d 100644 --- a/app/helpers/protocols_io_helper.rb +++ b/app/helpers/protocols_io_helper.rb @@ -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,9 +22,7 @@ module ProtocolsIoHelper # PROTOCOLS.IO STEP ATTRIBUTES PIO_S_AVAILABLE_LENGTH = TEXT_MAX_LENGTH - - (PIO_ELEMENT_RESERVED_LENGTH_SMALL * 20 + - 400) - # 400 reserved for en.yml translations + (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,