diff --git a/app/assets/javascripts/assets/asset_inline.js b/app/assets/javascripts/assets/asset_inline.js new file mode 100644 index 000000000..a3479b8ca --- /dev/null +++ b/app/assets/javascripts/assets/asset_inline.js @@ -0,0 +1,7 @@ +/* global ActiveStoragePreviews */ + +(function() { + $('.attachment-preview .asset-inline-image') + .on('load', (event) => ActiveStoragePreviews.showPreview(event)) + .on('error', (event) => ActiveStoragePreviews.reCheckPreview(event)); +}()); diff --git a/app/assets/javascripts/assets/asset_thumbnail.js b/app/assets/javascripts/assets/asset_thumbnail.js new file mode 100644 index 000000000..6aa90fd53 --- /dev/null +++ b/app/assets/javascripts/assets/asset_thumbnail.js @@ -0,0 +1,7 @@ +/* global ActiveStoragePreviews */ + +(function() { + $('.attachment-preview .asset-thumbnail-image') + .on('load', (event) => ActiveStoragePreviews.showPreview(event)) + .on('error', (event) => ActiveStoragePreviews.reCheckPreview(event)); +}()); diff --git a/app/assets/javascripts/my_modules/results.js b/app/assets/javascripts/my_modules/results.js index 50137f35c..162b30be2 100644 --- a/app/assets/javascripts/my_modules/results.js +++ b/app/assets/javascripts/my_modules/results.js @@ -181,6 +181,12 @@ } } + function initArchive() { + $('#results').on('click', '.form-submit-link', function(event) { + archive(event, this); + }); + } + function init() { initHandsOnTables($(document)); expandAllResults(); @@ -200,6 +206,8 @@ let target = '#' + getParam('ctarget'); $(target).find('a.comment-tab-link').click(); } + + initArchive(); } let publicAPI = Object.freeze({ diff --git a/app/assets/javascripts/repositories/repository_datatable.js b/app/assets/javascripts/repositories/repository_datatable.js index 164d43906..addc514bd 100644 --- a/app/assets/javascripts/repositories/repository_datatable.js +++ b/app/assets/javascripts/repositories/repository_datatable.js @@ -741,7 +741,7 @@ var RepositoryDatatable = (function(global) { return TABLE; } - global.onClickDeleteRecord = function() { + function onClickDeleteRecord() { animateSpinner(); $.ajax({ url: $('table' + TABLE_ID).data('delete-record'), @@ -880,6 +880,8 @@ var RepositoryDatatable = (function(global) { }); }); + $('#deleteRepositoryRecord').on('click', '.delete-record-modal-button', onClickDeleteRecord); + // Handle enter key $(document).off('keypress').keypress(function(event) { var keycode = (event.keyCode ? event.keyCode : event.which); diff --git a/app/assets/javascripts/repositories/show.js b/app/assets/javascripts/repositories/show.js index 25625912d..6f99be591 100644 --- a/app/assets/javascripts/repositories/show.js +++ b/app/assets/javascripts/repositories/show.js @@ -1,17 +1,17 @@ //= require repositories/import/records_importer.js /* - global pageReload animateSpinner repositoryRecordsImporter I18n + global animateSpinner repositoryRecordsImporter I18n RepositoryDatatable PerfectScrollbar HelperModule repositoryFilterObject */ (function(global) { 'use strict'; - global.pageReload = function() { + function pageReload() { animateSpinner(); location.reload(); - }; + } function handleErrorSubmit(XHR) { var formGroup = $('#form-records-file').find('.form-group'); @@ -42,8 +42,10 @@ } function initParseRecordsModal() { + var modal = $('#parse-records-modal'); var form = $('#form-records-file'); var submitBtn = form.find('input[type="submit"]'); + var closeBtn = modal.find('.close-button'); form.on('ajax:success', function(ev, data) { $('#modal-import-records').modal('hide'); $(data.html).appendTo('body').promise().done(function() { @@ -78,6 +80,8 @@ contentType: false }); }); + + closeBtn.on('click', pageReload); } function initImportRecordsModal() { @@ -85,6 +89,9 @@ $('#modal-import-records').modal('show'); initParseRecordsModal(); }); + + const closeBtn = $('#modal-import-records').find('.close-button'); + closeBtn.on('click', pageReload); } function initShareModal() { diff --git a/app/assets/javascripts/repository_columns/manage_column_partials/number.js b/app/assets/javascripts/repository_columns/manage_column_partials/number.js new file mode 100644 index 000000000..22bc088cf --- /dev/null +++ b/app/assets/javascripts/repository_columns/manage_column_partials/number.js @@ -0,0 +1,12 @@ +/* global numberMinMaxValidator */ + +(function() { + const field = $('#decimals.number-column'); + + const minValue = Number(field.data('min')); + const maxValue = Number(field.data('max')); + + field.on('input', () => { + field.val(numberMinMaxValidator(field.val(), minValue, maxValue)); + }); +}()); diff --git a/app/assets/javascripts/repository_columns/manage_column_partials/stock.js b/app/assets/javascripts/repository_columns/manage_column_partials/stock.js new file mode 100644 index 000000000..7bb3bb9ee --- /dev/null +++ b/app/assets/javascripts/repository_columns/manage_column_partials/stock.js @@ -0,0 +1,12 @@ +/* global numberMinMaxValidator */ + +(function() { + const field = $('#decimals.stock-column'); + + const minValue = Number(field.data('min')); + const maxValue = Number(field.data('max')); + + field.on('input', () => { + field.val(numberMinMaxValidator(field.val(), minValue, maxValue)); + }); +}()); diff --git a/app/assets/javascripts/results/result_assets/edit.js b/app/assets/javascripts/results/result_assets/edit.js new file mode 100644 index 000000000..81d85d51e --- /dev/null +++ b/app/assets/javascripts/results/result_assets/edit.js @@ -0,0 +1,7 @@ +/* global Results */ + +(function() { + $('.edit-result-assets-buttons').on('click', '.save-result', (event) => { + Results.processResult(event, Results.ResultTypeEnum.FILE); + }); +}()); diff --git a/app/assets/javascripts/results/result_assets/new.js b/app/assets/javascripts/results/result_assets/new.js new file mode 100644 index 000000000..7a1141703 --- /dev/null +++ b/app/assets/javascripts/results/result_assets/new.js @@ -0,0 +1,15 @@ +/* global DragNDropResults */ + +(function() { + $('.new-result-assets-buttons') + .on('click', '.save-result', (event) => { + DragNDropResults.processResult(event); + }) + .on('click', '.cancel-new', () => { + DragNDropResults.destroyAll(); + }); + + $('#new-result-assets-select').on('change', '#drag-n-drop-assets', function() { + DragNDropResults.init(this.files); + }); +}()); diff --git a/app/assets/javascripts/results/result_tables/edit.js b/app/assets/javascripts/results/result_tables/edit.js new file mode 100644 index 000000000..bc992e5eb --- /dev/null +++ b/app/assets/javascripts/results/result_tables/edit.js @@ -0,0 +1,7 @@ +/* global Results */ + +(function() { + $('.edit-result-tables-buttons').on('click', '.save-result', (event) => { + Results.processResult(event, Results.ResultTypeEnum.TABLE); + }); +}()); diff --git a/app/assets/javascripts/results/result_tables/new.js b/app/assets/javascripts/results/result_tables/new.js new file mode 100644 index 000000000..01f57e0ac --- /dev/null +++ b/app/assets/javascripts/results/result_tables/new.js @@ -0,0 +1,7 @@ +/* global Results */ + +(function() { + $('.new-result-tables-buttons').on('click', '.save-result', (event) => { + Results.processResult(event, Results.ResultTypeEnum.TABLE); + }); +}()); diff --git a/app/assets/javascripts/results/result_texts/edit.js b/app/assets/javascripts/results/result_texts/edit.js new file mode 100644 index 000000000..3892324f3 --- /dev/null +++ b/app/assets/javascripts/results/result_texts/edit.js @@ -0,0 +1,7 @@ +/* global Results */ + +(function() { + $('.edit-result-texts-buttons').on('click', '.save-result', (event) => { + Results.processResult(event, Results.ResultTypeEnum.TEXT); + }); +}()); diff --git a/app/assets/javascripts/results/result_texts/new.js b/app/assets/javascripts/results/result_texts/new.js new file mode 100644 index 000000000..d0d82376c --- /dev/null +++ b/app/assets/javascripts/results/result_texts/new.js @@ -0,0 +1,7 @@ +/* global Results */ + +(function() { + $('.new-result-texts-buttons').on('click', '.save-result', (event) => { + Results.processResult(event, Results.ResultTypeEnum.TEXT); + }); +}()); diff --git a/app/assets/javascripts/shared/file_preview.js b/app/assets/javascripts/shared/file_preview.js new file mode 100644 index 000000000..5adc652f8 --- /dev/null +++ b/app/assets/javascripts/shared/file_preview.js @@ -0,0 +1,7 @@ +/* global ActiveStoragePreviews */ + +(function() { + $('.asset-image') + .on('load', (event) => ActiveStoragePreviews.showPreview(event)) + .on('error', (event) => ActiveStoragePreviews.reCheckPreview(event)); +}()); diff --git a/app/assets/javascripts/sitewide/drag_n_drop.js b/app/assets/javascripts/sitewide/drag_n_drop.js index ab1105d2d..35c14adca 100644 --- a/app/assets/javascripts/sitewide/drag_n_drop.js +++ b/app/assets/javascripts/sitewide/drag_n_drop.js @@ -328,7 +328,7 @@
-
@@ -385,6 +385,9 @@ .promise() .done(function() { removeItemHandler(droppedFiles[i].uuid); + $('.panel-result-attachment-new').on('change', 'input[rel="results[name]"]', function() { + DragNDropResults.validateTextSize(this); + }); }); } validateTotalSize(); diff --git a/app/assets/javascripts/users/shared/linkedin_sign_in_links.js b/app/assets/javascripts/users/shared/linkedin_sign_in_links.js new file mode 100644 index 000000000..2da76e5f5 --- /dev/null +++ b/app/assets/javascripts/users/shared/linkedin_sign_in_links.js @@ -0,0 +1,17 @@ +(function() { + const linkedinSignInButton = $('.linkedin-signin-button'); + const hoverSrc = linkedinSignInButton.data('hover-src'); + const defaultSrc = linkedinSignInButton.data('default-src'); + const clickSrc = linkedinSignInButton.data('click-src'); + + linkedinSignInButton + .on('mouseover', () => { + linkedinSignInButton.attr('src', hoverSrc); + }) + .on('mouseout', () => { + linkedinSignInButton.attr('src', defaultSrc); + }) + .on('click', () => { + linkedinSignInButton.attr('src', clickSrc); + }); +}()); diff --git a/app/views/assets/_asset_inline.html.erb b/app/views/assets/_asset_inline.html.erb index e9c08510c..a69ed3f42 100644 --- a/app/views/assets/_asset_inline.html.erb +++ b/app/views/assets/_asset_inline.html.erb @@ -43,10 +43,10 @@ <% elsif asset.previewable? %>
<%= image_tag asset.large_preview, - onerror: 'ActiveStoragePreviews.reCheckPreview(event)', - onload: 'ActiveStoragePreviews.showPreview(event)', + class: 'asset-inline-image', style: 'opacity: 0' %>
+ <%= javascript_include_tag 'assets/asset_inline', nonce: true %> <% else %>
diff --git a/app/views/assets/_asset_thumbnail.html.erb b/app/views/assets/_asset_thumbnail.html.erb index f358c79a0..b2fa79585 100644 --- a/app/views/assets/_asset_thumbnail.html.erb +++ b/app/views/assets/_asset_thumbnail.html.erb @@ -16,9 +16,9 @@
<% if asset.previewable? %> <%= image_tag asset.medium_preview, - onerror: 'ActiveStoragePreviews.reCheckPreview(event)', - onload: 'ActiveStoragePreviews.showPreview(event)', + class: 'asset-thumbnail-image', style: 'opacity: 0' %> + <%= javascript_include_tag 'assets/asset_thumbnail', nonce: true %> <% else %> <% end %> diff --git a/app/views/my_modules/_result.html.erb b/app/views/my_modules/_result.html.erb index 251db8e7f..7c4676c85 100644 --- a/app/views/my_modules/_result.html.erb +++ b/app/views/my_modules/_result.html.erb @@ -21,8 +21,7 @@ class="btn btn-light icon-btn form-submit-link" data-form-id="result-archive-form-<%= result.id %>" data-confirm-text="<%= t('my_modules.results.archive_confirm') %>" - title="<%= t'my_modules.results.options.archive_title' %>" - onclick="Results.archive(event, this);"> + title="<%= t'my_modules.results.options.archive_title' %>"> <%= form_for :result, url: result_path_of_type(result), method: :patch, html: {id: 'result-archive-form-' + result.id.to_s } do |f| %> diff --git a/app/views/my_modules/results.html.erb b/app/views/my_modules/results.html.erb index 84a96055b..f0e5d18b5 100644 --- a/app/views/my_modules/results.html.erb +++ b/app/views/my_modules/results.html.erb @@ -87,12 +87,12 @@ <%= render partial: "shared/formulas_libraries.html.erb" %> -<%= javascript_include_tag "assets/wopi/create_wopi_file" %> -<%= javascript_include_tag "my_modules/results" %> -<%= javascript_include_tag "results/result_texts" %> -<%= javascript_include_tag "results/result_tables" %> -<%= javascript_include_tag "results/result_assets" %> -<%= javascript_include_tag 'pdf_js' %> +<%= javascript_include_tag "assets/wopi/create_wopi_file", nonce: true %> +<%= javascript_include_tag "my_modules/results", nonce: true %> +<%= javascript_include_tag "results/result_texts", nonce: true %> +<%= javascript_include_tag "results/result_tables", nonce: true %> +<%= javascript_include_tag "results/result_assets", nonce: true %> +<%= javascript_include_tag 'pdf_js', nonce: true %> <%= stylesheet_link_tag 'pdf_js_styles' %> <%= render 'shared/tiny_mce_packs' %> diff --git a/app/views/repositories/_delete_record_modal.html.erb b/app/views/repositories/_delete_record_modal.html.erb index 2cce4b099..610047078 100644 --- a/app/views/repositories/_delete_record_modal.html.erb +++ b/app/views/repositories/_delete_record_modal.html.erb @@ -10,7 +10,7 @@
diff --git a/app/views/repositories/_import_repository_records_modal.html.erb b/app/views/repositories/_import_repository_records_modal.html.erb index 8430e73bc..ea2e2feb4 100644 --- a/app/views/repositories/_import_repository_records_modal.html.erb +++ b/app/views/repositories/_import_repository_records_modal.html.erb @@ -2,7 +2,7 @@ diff --git a/app/views/repository_columns/manage_column_partials/_stock.html.erb b/app/views/repository_columns/manage_column_partials/_stock.html.erb index 270dfabb1..244c93ad4 100644 --- a/app/views/repository_columns/manage_column_partials/_stock.html.erb +++ b/app/views/repository_columns/manage_column_partials/_stock.html.erb @@ -7,9 +7,13 @@ <%= t('libraries.manange_modal_column.number_type.decimals_label') %>
- <%= number_field_tag('decimals', selected_decimals, between: 0...Constants::REPOSITORY_NUMBER_TYPE_MAX_DECIMALS, - class: 'form-control', - oninput: "this.value = numberMinMaxValidator(this.value, 0, #{Constants::REPOSITORY_NUMBER_TYPE_MAX_DECIMALS})" ) %> + <%= number_field_tag('decimals', + selected_decimals, + between: 0...Constants::REPOSITORY_NUMBER_TYPE_MAX_DECIMALS, + class: 'form-control stock-column', + data: { min: 0, max: Constants::REPOSITORY_NUMBER_TYPE_MAX_DECIMALS }) %> + + <%= javascript_include_tag 'repository_columns/manage_column_partials/stock', nonce: true %>
diff --git a/app/views/result_assets/_edit.html.erb b/app/views/result_assets/_edit.html.erb index 1d3c7154a..b15e4b5f0 100644 --- a/app/views/result_assets/_edit.html.erb +++ b/app/views/result_assets/_edit.html.erb @@ -10,13 +10,13 @@ <%= ff.file_field :file, direct_upload: true %> <% end %>
-
+
<%= f.button t("general.save"), - class: 'btn btn-primary save-result', - onclick: "Results.processResult(event, Results.ResultTypeEnum.FILE);" %> + class: 'btn btn-primary save-result' %>
<% end %> + <%= javascript_include_tag 'results/result_assets/edit', nonce: true %>
diff --git a/app/views/result_assets/_new.html.erb b/app/views/result_assets/_new.html.erb index 5b72d70f3..0a9e7d895 100644 --- a/app/views/result_assets/_new.html.erb +++ b/app/views/result_assets/_new.html.erb @@ -12,22 +12,20 @@ id: 'drag-n-drop-assets', class: 'drag-n-drop-file-input', direct_upload: true, - multiple: true, - onchange: "DragNDropResults.init(this.files);" %> + multiple: true %>

-
+
<%= f.button t('result_assets.new.create'), class: 'btn btn-primary save-result', - onclick: 'DragNDropResults.processResult(event);', data: { href: my_module_result_assets_path(page: params[:page], order: params[:order], format: :json) } %> <%= f.button t('general.cancel'), class: 'btn btn-secondary cancel-new', - onclick: 'DragNDropResults.destroyAll();', type: 'button '%>
<% end %> + <%= javascript_include_tag 'results/result_assets/new', nonce: true %>
diff --git a/app/views/result_tables/_edit.html.erb b/app/views/result_tables/_edit.html.erb index afc076dfa..369c5c1ee 100644 --- a/app/views/result_tables/_edit.html.erb +++ b/app/views/result_tables/_edit.html.erb @@ -12,13 +12,13 @@ <% end %>

-
+
<%= f.button t("general.save"), - class: 'btn btn-primary save-result', - onclick: "Results.processResult(event, Results.ResultTypeEnum.TABLE);" %> + class: 'btn btn-primary save-result' %> + <%= javascript_include_tag 'results/result_tables/edit', nonce: true %>
<% end %>
diff --git a/app/views/result_tables/_new.html.erb b/app/views/result_tables/_new.html.erb index b9b1ea41d..10ecdaae6 100644 --- a/app/views/result_tables/_new.html.erb +++ b/app/views/result_tables/_new.html.erb @@ -11,13 +11,13 @@
<% end %> -
+
<%= f.button t("result_tables.new.create"), - class: 'btn btn-primary save-result', - onclick: "Results.processResult(event, Results.ResultTypeEnum.TABLE);" %> + class: 'btn btn-primary save-result' %> + <%= javascript_include_tag 'results/result_tables/new', nonce: true %>
<% end %>
diff --git a/app/views/result_texts/_edit.html.erb b/app/views/result_texts/_edit.html.erb index 8d2fd5f5a..267c51161 100644 --- a/app/views/result_texts/_edit.html.erb +++ b/app/views/result_texts/_edit.html.erb @@ -12,13 +12,13 @@ object_id: @result.result_text.id, last_updated: @result.updated_at.to_i * 1000 }) %> <% end %>
-
+
<%= f.button t("general.save"), - class: 'btn btn-primary save-result', - onclick: "Results.processResult(event, Results.ResultTypeEnum.TEXT);" %> + class: 'btn btn-primary save-result' %> + <%= javascript_include_tag 'results/result_texts/edit', nonce: true %>
<% end %>
diff --git a/app/views/result_texts/_new.html.erb b/app/views/result_texts/_new.html.erb index 497c616f7..c0931f6c1 100644 --- a/app/views/result_texts/_new.html.erb +++ b/app/views/result_texts/_new.html.erb @@ -11,13 +11,13 @@ object_id: @result.result_text.id, last_updated: @result.updated_at.to_i * 1000 }) %> <% end %>
-
+
<%= f.button t("result_texts.new.create"), - class: 'btn btn-primary save-result', - onclick: "Results.processResult(event, Results.ResultTypeEnum.TEXT);" %> + class: 'btn btn-primary save-result' %> + <%= javascript_include_tag 'results/result_texts/new', nonce: true %>
<% end %>
diff --git a/app/views/shared/file_preview/_content.html.erb b/app/views/shared/file_preview/_content.html.erb index d3ed1dfff..6216888c0 100644 --- a/app/views/shared/file_preview/_content.html.erb +++ b/app/views/shared/file_preview/_content.html.erb @@ -71,8 +71,7 @@ <%= render partial: 'shared/pdf_viewer.html.erb', locals: { asset: asset, report_document: false } %> <% else %> <%= image_tag asset.large_preview, - onerror: 'ActiveStoragePreviews.reCheckPreview(event)', - onload: 'ActiveStoragePreviews.showPreview(event)', + class: 'asset-image', style: 'opacity: 0' %> <% end %> <% else %> @@ -91,8 +90,7 @@ data: {id: previous_asset.id, gallery_elements: gallery} do %> <% if previous_asset.previewable? %> <%= image_tag previous_asset.medium_preview, - onerror: 'ActiveStoragePreviews.reCheckPreview(event)', - onload: 'ActiveStoragePreviews.showPreview(event)', + class: 'asset-image', style: 'opacity: 0' %> <% else %> @@ -112,8 +110,7 @@ <% if next_asset.previewable? %> <%= image_tag next_asset.medium_preview, - onerror: 'ActiveStoragePreviews.reCheckPreview(event)', - onload: 'ActiveStoragePreviews.showPreview(event)', + class: 'asset-image', style: 'opacity: 0' %> <% else %> @@ -123,3 +120,5 @@ <% end %> + +<%= javascript_include_tag 'shared/file_preview', nonce: true %> diff --git a/app/views/users/shared/_linkedin_sign_in_links.html.erb b/app/views/users/shared/_linkedin_sign_in_links.html.erb index 127db89aa..47ac8a065 100644 --- a/app/views/users/shared/_linkedin_sign_in_links.html.erb +++ b/app/views/users/shared/_linkedin_sign_in_links.html.erb @@ -3,8 +3,11 @@ <%= image_tag('linkedin/Sign-in-Large---Default.png', class: 'linkedin-signin-button', alt: "Sign in with LinkedIn", - onmouseover: "src='#{image_path('linkedin/Sign-in-Large---Hover.png')}'", - onmouseout: "src='#{image_path('linkedin/Sign-in-Large---Default.png')}'", - onclick: "src='#{image_path('linkedin/Sign-in-Large---Active.png')}'") %> + data: { + 'hover-src': image_path('linkedin/Sign-in-Large---Hover.png'), + 'default-src': image_path('linkedin/Sign-in-Large---Default.png'), + 'click-src': image_path('linkedin/Sign-in-Large---Active.png') + }) %> + <%= javascript_include_tag 'users/shared/linkedin_sign_in_links', nonce: true %> <% end -%> -<% end -%> \ No newline at end of file +<% end -%> diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb index 8b6778a3f..1a528c9c6 100644 --- a/config/initializers/assets.rb +++ b/config/initializers/assets.rb @@ -111,6 +111,18 @@ Rails.application.config.assets.precompile += %w(users/registrations/team_errors Rails.application.config.assets.precompile += %w(users/registrations/resource_errors.js) Rails.application.config.assets.precompile += %w(users/registrations/new_with_provider.js) Rails.application.config.assets.precompile += %w(team_zip_exports/load_handson.js) +Rails.application.config.assets.precompile += %w(repository_columns/manage_column_partials/number.js) +Rails.application.config.assets.precompile += %w(repository_columns/manage_column_partials/stock.js) +Rails.application.config.assets.precompile += %w(assets/asset_inline.js) +Rails.application.config.assets.precompile += %w(assets/asset_thumbnail.js) +Rails.application.config.assets.precompile += %w(results/result_assets/new.js) +Rails.application.config.assets.precompile += %w(results/result_assets/edit.js) +Rails.application.config.assets.precompile += %w(results/result_tables/new.js) +Rails.application.config.assets.precompile += %w(results/result_tables/edit.js) +Rails.application.config.assets.precompile += %w(results/result_texts/new.js) +Rails.application.config.assets.precompile += %w(results/result_texts/edit.js) +Rails.application.config.assets.precompile += %w(shared/file_preview.js) +Rails.application.config.assets.precompile += %w(users/shared/linkedin_sign_in_links.js) # Libraries needed for Handsontable formulas Rails.application.config.assets.precompile += %w(jquery.js)