mirror of
				https://github.com/scinote-eln/scinote-web.git
				synced 2025-10-26 22:16:28 +08:00 
			
		
		
		
	Broken modal for sharing inventories [SCI-8548] (#5506)
* Fix share_modal js loading [SCI-8548] Co-authored-by: Sboursen <dev.sboursen@gmail.com> * Fix hound [SCI-8548] Co-authored-by: Sboursen <dev.sboursen@gmail.com> * Fix hound [SCI-8548] Co-authored-by: Sboursen <dev.sboursen@gmail.com> --------- Co-authored-by: Sboursen <dev.sboursen@gmail.com>
This commit is contained in:
		
							parent
							
								
									420b78d217
								
							
						
					
					
						commit
						46fc3d17e6
					
				
					 5 changed files with 76 additions and 66 deletions
				
			
		
							
								
								
									
										68
									
								
								app/assets/javascripts/repositories/share_modal.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								app/assets/javascripts/repositories/share_modal.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,68 @@ | ||||||
|  | /* global HelperModule PerfectScrollbar */ | ||||||
|  | 
 | ||||||
|  | // eslint-disable-next-line no-unused-vars
 | ||||||
|  | var ShareModal = (function() { | ||||||
|  |   function init() { | ||||||
|  |     var form = $('.share-repo-modal').find('form'); | ||||||
|  |     var sharedCBs = form.find("input[name='share_team_ids[]']"); | ||||||
|  |     var permissionCBs = form.find("input[name='write_permissions[]']"); | ||||||
|  |     var permissionChanges = form.find("input[name='permission_changes']"); | ||||||
|  |     var submitBtn = form.find('input[type="submit"]'); | ||||||
|  |     var selectAllCheckbox = form.find('.all-teams .sci-checkbox'); | ||||||
|  | 
 | ||||||
|  |     form.find('.teams-list').find('input.sci-checkbox, .permission-selector') | ||||||
|  |       .toggleClass('hidden', selectAllCheckbox.is(':checked')); | ||||||
|  |     form.find('.all-teams .sci-toggle-checkbox') | ||||||
|  |       .toggleClass('hidden', !selectAllCheckbox.is(':checked')) | ||||||
|  |       .attr('disabled', !selectAllCheckbox.is(':checked')); | ||||||
|  | 
 | ||||||
|  |     selectAllCheckbox.change(function() { | ||||||
|  |       form.find('.teams-list').find('input.sci-checkbox, .permission-selector') | ||||||
|  |         .toggleClass('hidden', this.checked); | ||||||
|  |       form.find('.all-teams .sci-toggle-checkbox').toggleClass('hidden', !this.checked) | ||||||
|  |         .attr('disabled', !this.checked); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     sharedCBs.change(function() { | ||||||
|  |       var selectedTeams = form.find('.teams-list .sci-checkbox:checked').length; | ||||||
|  |       form.find('#select_all_teams').prop('indeterminate', selectedTeams > 0); | ||||||
|  |       $('#editable_' + this.value).toggleClass('hidden', !this.checked) | ||||||
|  |         .attr('disabled', !this.checked); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     if (form.find('.teams-list').length) new PerfectScrollbar(form.find('.teams-list')[0]); | ||||||
|  | 
 | ||||||
|  |     permissionCBs.change(function() { | ||||||
|  |       var changes = JSON.parse(permissionChanges.val()); | ||||||
|  |       changes[this.value] = 'true'; | ||||||
|  |       permissionChanges.val(JSON.stringify(changes)); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     submitBtn.on('click', function(event) { | ||||||
|  |       event.preventDefault(); | ||||||
|  |       $.ajax({ | ||||||
|  |         type: 'POST', | ||||||
|  |         url: form.attr('action'), | ||||||
|  |         data: form.serialize(), | ||||||
|  |         success: function(data) { | ||||||
|  |           if (data.warnings) { | ||||||
|  |             alert(data.warnings); | ||||||
|  |           } | ||||||
|  |           $(`#slide-panel li.active .repository-share-status,
 | ||||||
|  |              #repository-toolbar .repository-share-status | ||||||
|  |           `).toggleClass('hidden', !data.status);
 | ||||||
|  |           HelperModule.flashAlertMsg(form.data('success-message'), 'success'); | ||||||
|  |           $('.share-repo-modal').modal('hide'); | ||||||
|  |         }, | ||||||
|  |         error: function(data) { | ||||||
|  |           alert(data.responseJSON.errors); | ||||||
|  |           $('.share-repo-modal').modal('hide'); | ||||||
|  |         } | ||||||
|  |       }); | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   return { | ||||||
|  |     init: init | ||||||
|  |   }; | ||||||
|  | }()); | ||||||
|  | @ -94,66 +94,6 @@ | ||||||
|     closeBtn.on('click', pageReload); |     closeBtn.on('click', pageReload); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   function initShareModal() { |  | ||||||
|     var form = $('.share-repo-modal').find('form'); |  | ||||||
|     var sharedCBs = form.find("input[name='share_team_ids[]']"); |  | ||||||
|     var permissionCBs = form.find("input[name='write_permissions[]']"); |  | ||||||
|     var permissionChanges = form.find("input[name='permission_changes']"); |  | ||||||
|     var submitBtn = form.find('input[type="submit"]'); |  | ||||||
|     var selectAllCheckbox = form.find('.all-teams .sci-checkbox'); |  | ||||||
| 
 |  | ||||||
|     form.find('.teams-list').find('input.sci-checkbox, .permission-selector') |  | ||||||
|       .toggleClass('hidden', selectAllCheckbox.is(':checked')); |  | ||||||
|     form.find('.all-teams .sci-toggle-checkbox') |  | ||||||
|       .toggleClass('hidden', !selectAllCheckbox.is(':checked')) |  | ||||||
|       .attr('disabled', !selectAllCheckbox.is(':checked')); |  | ||||||
| 
 |  | ||||||
|     selectAllCheckbox.change(function() { |  | ||||||
|       form.find('.teams-list').find('input.sci-checkbox, .permission-selector') |  | ||||||
|         .toggleClass('hidden', this.checked); |  | ||||||
|       form.find('.all-teams .sci-toggle-checkbox').toggleClass('hidden', !this.checked) |  | ||||||
|         .attr('disabled', !this.checked); |  | ||||||
|     }); |  | ||||||
| 
 |  | ||||||
|     sharedCBs.change(function() { |  | ||||||
|       var selectedTeams = form.find('.teams-list .sci-checkbox:checked').length; |  | ||||||
|       form.find('#select_all_teams').prop('indeterminate', selectedTeams > 0); |  | ||||||
|       $('#editable_' + this.value).toggleClass('hidden', !this.checked) |  | ||||||
|         .attr('disabled', !this.checked); |  | ||||||
|     }); |  | ||||||
| 
 |  | ||||||
|     if (form.find('.teams-list').length) new PerfectScrollbar(form.find('.teams-list')[0]); |  | ||||||
| 
 |  | ||||||
|     permissionCBs.change(function() { |  | ||||||
|       var changes = JSON.parse(permissionChanges.val()); |  | ||||||
|       changes[this.value] = 'true'; |  | ||||||
|       permissionChanges.val(JSON.stringify(changes)); |  | ||||||
|     }); |  | ||||||
| 
 |  | ||||||
|     submitBtn.on('click', function(event) { |  | ||||||
|       event.preventDefault(); |  | ||||||
|       $.ajax({ |  | ||||||
|         type: 'POST', |  | ||||||
|         url: form.attr('action'), |  | ||||||
|         data: form.serialize(), |  | ||||||
|         success: function(data) { |  | ||||||
|           if (data.warnings) { |  | ||||||
|             alert(data.warnings); |  | ||||||
|           } |  | ||||||
|           $(`#slide-panel li.active .repository-share-status,
 |  | ||||||
|              #repository-toolbar .repository-share-status |  | ||||||
|           `).toggleClass('hidden', !data.status);
 |  | ||||||
|           HelperModule.flashAlertMsg(form.data('success-message'), 'success'); |  | ||||||
|           $('.share-repo-modal').modal('hide'); |  | ||||||
|         }, |  | ||||||
|         error: function(data) { |  | ||||||
|           alert(data.responseJSON.errors); |  | ||||||
|           $('.share-repo-modal').modal('hide'); |  | ||||||
|         } |  | ||||||
|       }); |  | ||||||
|     }); |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   $('.repository-title-name .inline-editing-container').on('inlineEditing::updated', function(e, value, viewValue) { |   $('.repository-title-name .inline-editing-container').on('inlineEditing::updated', function(e, value, viewValue) { | ||||||
|     $('.repository-archived-title-name') |     $('.repository-archived-title-name') | ||||||
|       .text(I18n.t('repositories.show.archived_inventory_items', { repository_name: viewValue })); |       .text(I18n.t('repositories.show.archived_inventory_items', { repository_name: viewValue })); | ||||||
|  | @ -161,10 +101,6 @@ | ||||||
|       .text(I18n.t('repositories.show.archived_view_label.active', { repository_name: viewValue })); |       .text(I18n.t('repositories.show.archived_view_label.active', { repository_name: viewValue })); | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
|   $('#shareRepoBtn').on('ajax:success', function() { |  | ||||||
|     initShareModal(); |  | ||||||
|   }); |  | ||||||
| 
 |  | ||||||
|   $('.create-new-repository').initSubmitModal('#create-repo-modal', 'repository'); |   $('.create-new-repository').initSubmitModal('#create-repo-modal', 'repository'); | ||||||
| 
 | 
 | ||||||
|   function initArchivingActionsInDropdown() { |   function initArchivingActionsInDropdown() { | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| /* global animateSpinner ProtocolsIndex ProjectsIndex */ | /* global animateSpinner ProtocolsIndex ProjectsIndex ShareModal */ | ||||||
| (function() { | (function() { | ||||||
|   'use strict'; |   'use strict'; | ||||||
| 
 | 
 | ||||||
|  | @ -22,6 +22,10 @@ | ||||||
|                 ProtocolsIndex.reloadTable(); |                 ProtocolsIndex.reloadTable(); | ||||||
|               }); |               }); | ||||||
|             } |             } | ||||||
|  |             if ($(this).hasClass('share-repo-modal')) { | ||||||
|  |               animateSpinner(null, false); | ||||||
|  |               ShareModal.init(); | ||||||
|  |             } | ||||||
|             $(this).find('.selectpicker').selectpicker(); |             $(this).find('.selectpicker').selectpicker(); | ||||||
|           }) |           }) | ||||||
|           .on('hidden.bs.modal', function() { |           .on('hidden.bs.modal', function() { | ||||||
|  |  | ||||||
|  | @ -62,5 +62,6 @@ | ||||||
| </div> | </div> | ||||||
| 
 | 
 | ||||||
| <%= javascript_include_tag "repositories/index" %> | <%= javascript_include_tag "repositories/index" %> | ||||||
|  | <%= javascript_include_tag "repositories/share_modal" %> | ||||||
| <%= stylesheet_link_tag 'datatables' %> | <%= stylesheet_link_tag 'datatables' %> | ||||||
| <%= javascript_include_tag "vue_components_action_toolbar" %> | <%= javascript_include_tag "vue_components_action_toolbar" %> | ||||||
|  | @ -83,6 +83,7 @@ Rails.application.config.assets.precompile += %w(search.js) | ||||||
| Rails.application.config.assets.precompile += %w(label_printers/index.js) | Rails.application.config.assets.precompile += %w(label_printers/index.js) | ||||||
| Rails.application.config.assets.precompile += %w(label_printers/zebra_settings.js) | Rails.application.config.assets.precompile += %w(label_printers/zebra_settings.js) | ||||||
| Rails.application.config.assets.precompile += %w(repositories/index.js) | Rails.application.config.assets.precompile += %w(repositories/index.js) | ||||||
|  | Rails.application.config.assets.precompile += %w(repositories/share_modal.js) | ||||||
| Rails.application.config.assets.precompile += %w(repositories/edit.js) | Rails.application.config.assets.precompile += %w(repositories/edit.js) | ||||||
| Rails.application.config.assets.precompile += %w(repositories/stock.js) | Rails.application.config.assets.precompile += %w(repositories/stock.js) | ||||||
| Rails.application.config.assets.precompile += %w(repositories/repository_datatable.js) | Rails.application.config.assets.precompile += %w(repositories/repository_datatable.js) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue